void StyledWriter::writeValue(const Value& value) {
  switch (value.type()) {
  case nullValue:
    pushValue("null");
    break;
  case intValue:
    pushValue(valueToString(value.asLargestInt()));
    break;
  case uintValue:
    pushValue(valueToString(value.asLargestUInt()));
    break;
  case realValue:
    pushValue(valueToString(value.asDouble()));
    break;
  case stringValue:
    pushValue(valueToQuotedString(value.asCString()));
    break;
  case booleanValue:
    pushValue(valueToString(value.asBool()));
    break;
  case arrayValue:
    writeArrayValue(value);
    break;
  case objectValue: {
    Value::Members members(value.getMemberNames());
    if (members.empty())
      pushValue("{}");
    else {
      writeWithIndent("{");
      indent();
      Value::Members::iterator it = members.begin();
      for (;;) {
        const std::string& name = *it;
        const Value& childValue = value[name];
        writeCommentBeforeValue(childValue);
        writeWithIndent(valueToQuotedString(name.c_str()));
        document_ += " : ";
        writeValue(childValue);
        if (++it == members.end()) {
          writeCommentAfterValueOnSameLine(childValue);
          break;
        }
        document_ += ',';
        writeCommentAfterValueOnSameLine(childValue);
      }
      unindent();
      writeWithIndent("}");
    }
  } break;
  }
}
Example #2
0
void FastWriter::writeValue(const Value &value) {
	switch (value.type()) {
	case nullValue:
		document_ += "null";
		break;
	case intValue:
		document_ += valueToString(value.asInt());
		break;
	case uintValue:
		document_ += valueToString(value.asUInt());
		break;
	case realValue:
		document_ += valueToString(value.asDouble());
		break;
	case stringValue:
		document_ += valueToQuotedString(value.asCString());
		break;
	case booleanValue:
		document_ += valueToString(value.asBool());
		break;
	case arrayValue: {
		document_ += "[";
		int size = value.size();
		for (int index = 0; index < size; ++index) {
			if (index > 0)
				document_ += ",";
			writeValue(value[index]);
		}
		document_ += "]";
	}
		break;
	case objectValue: {
		Value::Members members(value.getMemberNames());
		document_ += "{";
		for (Value::Members::iterator it = members.begin(); it != members.end();
				++it) {
			const std::string &name = *it;
			if (it != members.begin())
				document_ += ",";
			document_ += valueToQuotedString(name.c_str());
			document_ += yamlCompatiblityEnabled_ ? ": " : ":";
			writeValue(value[name]);
		}
		document_ += "}";
	}
		break;
	}
}
void EventCondition::initWithData(Value& conditionData)
{
	std::string conditionType = conditionData.getMemberNames()[0];
	getType(conditionType.c_str());
	switch (m_type)
	{
	case EventConditionItemCount:
		{
			int handler = SceneEventLoader::sharedInstance()->getAttachItemCountTargetHandler();
			int count = conditionData[conditionType].asInt();
			m_value = CCInteger::create(count);
			m_value->retain();
			CCScriptEngineManager::sharedManager()->getScriptEngine()->executeEvent(handler, "", this, "EventCondition");
		}
		break;
	}
}
Example #4
0
  void read()
  {
    using namespace Json;

    std::string filename = get.getPath("ratings.json");

    Value v;

    try { v = readJson(filename); }
    // A missing file is normal, just ignore it.
    catch(...) {}

    // Convert json value into std::map
    Value::Members keys = v.getMemberNames();
    Value::Members::iterator it;
    for(it = keys.begin(); it != keys.end(); it++)
      {
        ratings[*it] = v[*it].asInt();
      }
  }
Example #5
0
void Stats::fromJson(TigLoader &out, const Json::Value &root)
{
  if(root["type"] != "tigstats 1.0")
    fail("Not a valid stats list");

  std::string channel = root["channel"].asString();

  if(channel == "" || out.getChannel(channel) == NULL)
    fail("Invalid channel '" + channel + "'");

  if(channel.find('/') != std::string::npos)
    fail("Channel names may not contain slashes: " + channel);

  channel += "/";

  // Traverse the list
  Value list = root["list"];
  const Value::Members &keys = list.getMemberNames();
  for(int i=0; i<keys.size(); i++)
    {
      const std::string &key = keys[i];
      const std::string &idname = channel + key;
      TigEntry *e = out.editGame(idname);

      // Skip non-matching games
      if(e == NULL) continue;

      const Value &arr = list[key];

      if(!arr.isArray() || arr.size() != 3)
        fail("Invalid stats entry for " + idname);

      e->rating = arr[0u].asDouble();
      e->rateCount = arr[1u].asUInt();
      e->dlCount = arr[2u].asUInt();
      if(e->rating > 5 || e->rating < 0) e->rating = -1;
    }
}
Example #6
0
void
write_value (write_t write, Value const& value)
{
    switch (value.type())
    {
    case nullValue:
        write("null", 4);
        break;

    case intValue:
        write_string(write, valueToString(value.asInt()));
        break;

    case uintValue:
        write_string(write, valueToString(value.asUInt()));
        break;

    case realValue:
        write_string(write, valueToString(value.asDouble()));
        break;

    case stringValue:
        write_string(write, valueToQuotedString(value.asCString()));
        break;

    case booleanValue:
        write_string(write, valueToString(value.asBool()));
        break;

    case arrayValue:
    {
        write("[", 1);
        int const size = value.size();
        for (int index = 0; index < size; ++index)
        {
            if (index > 0)
                write(",", 1);
            write_value(write, value[index]);
        }
        write("]", 1);
        break;
    }

    case objectValue:
    {
        Value::Members const members = value.getMemberNames();
        write("{", 1);
        for (auto it = members.begin(); it != members.end(); ++it)
        {
            std::string const& name = *it;
            if (it != members.begin())
                write(",", 1);

            write_string(write, valueToQuotedString(name.c_str()));
            write(":", 1);
            write_value(write, value[name]);
        }
        write("}", 1);
        break;
    }
    }
}
Example #7
0
void
StyledStreamWriter::writeValue ( const Value& value )
{
    switch ( value.type () )
    {
    case nullValue:
        pushValue ( "null" );
        break;

    case intValue:
        pushValue ( valueToString ( value.asInt () ) );
        break;

    case uintValue:
        pushValue ( valueToString ( value.asUInt () ) );
        break;

    case realValue:
        pushValue ( valueToString ( value.asDouble () ) );
        break;

    case stringValue:
        pushValue ( valueToQuotedString ( value.asCString () ) );
        break;

    case booleanValue:
        pushValue ( valueToString ( value.asBool () ) );
        break;

    case arrayValue:
        writeArrayValue ( value);
        break;

    case objectValue:
    {
        Value::Members members ( value.getMemberNames () );

        if ( members.empty () )
            pushValue ( "{}" );
        else
        {
            writeWithIndent ( "{" );
            indent ();
            Value::Members::iterator it = members.begin ();

            while ( true )
            {
                std::string const& name = *it;
                const Value& childValue = value[name];
                writeWithIndent ( valueToQuotedString ( name.c_str () ) );
                *document_ << " : ";
                writeValue ( childValue );

                if ( ++it == members.end () )
                    break;

                *document_ << ",";
            }

            unindent ();
            writeWithIndent ( "}" );
        }
    }
    break;
    }
}
Example #8
0
	bool Stations::Load() {
		char appDataPath[MAX_PATH];
		SHGetFolderPath(nullptr, CSIDL_COMMON_APPDATA, nullptr,
			SHGFP_TYPE_CURRENT, appDataPath);

		string path = string(appDataPath) + "\\InternetRadio\\stations.json";

		stringstream ssArchive;
		try {
			HTTP::Get(
				"http://internetradio.clemensboos.net/stations/archive.json",
				&ssArchive);
		} catch(...) { }

		Reader jsonReader;
		Value archiveRootValue;

		jsonReader.parse(ssArchive, archiveRootValue);

		map<int, string> staVersions;
		for (size_t i = 0; i < (size_t)archiveRootValue.size(); ++i) {
			string versionStr = archiveRootValue.getMemberNames().at(i);

			Value versionMinVerVal = archiveRootValue.get(versionStr, Value(
				nullValue));
			if (!versionMinVerVal.isString())
				continue;

			staVersions.insert(pair<int, string>(
				atoi(versionStr.c_str()), versionMinVerVal.asString()));
		}

		uint16_t installedVersion[4];
		VersionUtil::GetInstalledVersion(installedVersion);

		for (map<int, string>::reverse_iterator it =
			staVersions.rbegin(); it != staVersions.rend(); ++it) {

			uint16_t staVer[4];
			VersionUtil::VersionStrToArr(it->second, staVer);

			if (VersionUtil::CompareVersions(installedVersion, staVer) !=
				VCR_Older) {

				stringstream ssVer;
				ssVer << it->first;
				stringstream ssNewStaChecksumsF;
				try {
					HTTP::Get("http://internetradio.clemensboos.net/stations/" +
						ssVer.str() + "/checksums", &ssNewStaChecksumsF);
				} catch(...) {
					break;
				}

				while (ssNewStaChecksumsF.good()) {
					string filePathAndChecksum;
					ssNewStaChecksumsF >> filePathAndChecksum;
					if (filePathAndChecksum == "")
						continue;

					vector<string> filePathAndChecksumSplit =
						StringUtil::Explode(filePathAndChecksum, ":");
					if (filePathAndChecksumSplit.size() != 2)
						continue;

					string fileName = filePathAndChecksumSplit[0];
					string locPath = string(appDataPath) + "\\InternetRadio\\"
						+ fileName;
					StringUtil::SearchAndReplace(locPath, "/", "\\");
					string remoteChecksum = filePathAndChecksumSplit[1];

					bool update = false;

					ifstream fileStream(locPath);
					if (fileStream.is_open()) {
						fileStream.close();
						string localChecksum = CryptUtil::FileMD5Hash(locPath);
						if (remoteChecksum != localChecksum)
							update = true;
					} else {
						update = true;
					}

					if (!update)
						continue;

					string fileRemURL =
						"http://internetradio.clemensboos.net/stations/" +
						ssVer.str() + "/" + fileName;
					StringUtil::SearchAndReplace(fileRemURL, "\\", "/");
					stringstream ssRemFile;
					try {
						HTTP::Get(fileRemURL, &ssRemFile);
					} catch(...) {
						continue;
					}

					string locDir = locPath.substr(0,
						locPath.find_last_of("\\"));
					CreateDirectory(locDir.c_str(), nullptr);

					ofstream fOutStream;
					fOutStream.open(locPath, ios::out | ios::binary);
					fOutStream << ssRemFile.rdbuf();
					fOutStream.close();
				}

				break;
			}
		}
Example #9
0
 void HTMLWriter::writeValue(std::string &document, const Value &value)
 {
     switch(value.type()) {
     case nullValue:
         break;
     case intValue:
         document += valueToString(value.asLargestInt());
         break;
     case uintValue:
         document += valueToString(value.asLargestUInt());
         break;
     case realValue:
         document += valueToString(value.asDouble());
         break;
     case stringValue:
         document += valueToQuotedString(value.asString().c_str());
         break;
     case booleanValue:
         document += value.asBool();
         break;
     case arrayValue: {
         document += "<ol>";
         for (uint8_t index = 0; index < value.size(); index++) {
             switch(value[index].type()) {
             case nullValue:
             case intValue:
             case uintValue:
             case realValue:
             case stringValue:
             case booleanValue:
                 writeIndent(document);
                 document += "<li>";
                 writeValue(document, value[index]);
                 document += "</li>";
                 document += "\n";
                 break;
             case arrayValue:
             case objectValue:
                 depth++;
                 document += "<li>";
                 writeValue(document, value[index]);
                 depth--;
                 document += "</li>";
                 break;
             }
         }
         break;
     }
     case objectValue: {
         Value::Members members(value.getMemberNames());
         if (depth == 0) {
             document += "<dl class='la_results'>";
         } else {
             document += "<dl>";
         }
         for (Value::Members::iterator it = members.begin();
              it != members.end(); ++it) {
             const std::string &name = *it;
             writeIndent(document);
             document += "<dt>";
             document += name;
             document += "</dt>\n";
             writeIndent(document);
             document += "<dd>";
             switch(value[name].type()) {
             case nullValue:
             case intValue:
             case uintValue:
             case realValue:
             case stringValue:
             case booleanValue:
                 writeValue(document, value[name]);
                 break;
             case arrayValue:
             case objectValue:
                 depth++;
                 writeValue(document, value[name]);
                 depth--;
             }
             document += "</dd>\n";
         }
         document += "</dl>\n";
         break;
     }
     }
 }
Example #10
0
 void PlainTextWriter::writeValue(std::string &document, const Value &value)
 {
     switch(value.type()) {
     case nullValue:
         break;
     case intValue:
         document += valueToString(value.asLargestInt());
         break;
     case uintValue:
         document += valueToString(value.asLargestUInt());
         break;
     case realValue:
         document += valueToString(value.asDouble());
         break;
     case stringValue:
         document += valueToQuotedString(value.asString().c_str());
         break;
     case booleanValue:
         document += value.asBool();
         break;
     case arrayValue: {
         for (uint8_t index = 0; index < value.size(); index++) {
             switch(value[index].type()) {
             case nullValue:
             case intValue:
             case uintValue:
             case realValue:
             case stringValue:
             case booleanValue:
                 writeIndent(document);
                 writeValue(document, value[index]);
                 document += "\n";
                 break;
             case arrayValue:
             case objectValue:
                 depth++;
                 writeValue(document, value[index]);
                 depth--;
                 break;
             }
         }
         break;
     }
     case objectValue: {
         Value::Members members(value.getMemberNames());
         for (Value::Members::iterator it = members.begin();
              it != members.end(); ++it) {
             const std::string &name = *it;
             writeIndent(document);
             document += name;
             document += ":";
             switch(value[name].type()) {
             case nullValue:
             case intValue:
             case uintValue:
             case realValue:
             case stringValue:
             case booleanValue:
                 document += " ";
                 writeValue(document, value[name]);
                 document += "\n";
                 break;
             case arrayValue:
             case objectValue:
                 document += "\n";
                 depth++;
                 writeValue(document, value[name]);
                 depth--;
             }
         }
         break;
     }
     }
 }