本文整理汇总了C++中json::ValueIterator::memberName方法的典型用法代码示例。如果您正苦于以下问题:C++ ValueIterator::memberName方法的具体用法?C++ ValueIterator::memberName怎么用?C++ ValueIterator::memberName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类json::ValueIterator
的用法示例。
在下文中一共展示了ValueIterator::memberName方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: updateRegistry
bool updateRegistry(Json::Value &jsonRoot, Json::Value &outputRoot)
{
bool success = true;
for (Json::ValueIterator iter = jsonRoot.begin(); iter != jsonRoot.end(); iter++) {
Json::Value solutionsRoot = jsonRoot.get(iter.memberName(), Json::Value());
Json::Value solutionsOutput;
for(Json::ValueIterator itr = solutionsRoot["settings"].begin() ; itr != solutionsRoot["settings"].end() ; itr++ )
{
bool missingValue = false;
Json::Value currentOption;
const char * path = solutionsRoot["options"]["path"].asCString();
const char * valueName = itr.memberName();
long valueToSet = solutionsRoot["settings"][valueName].asUInt();
wstring updatedPath = toWideChar(path);
wstring updatedValueName = toWideChar(valueName);
long value = -1;
try
{
value = getDwordValue(hKeyFromString(solutionsRoot["options"]["hKey"].asCString()), updatedPath.c_str(), updatedValueName.c_str());
} catch (int exCode)
{
currentOption["statusCode"] = exCode;
currentOption["oldValue"] = Json::Value();
currentOption["newValue"] = Json::Value();
success = false;
missingValue = true;
}
bool valueSet = setDwordValue(hKeyFromString(solutionsRoot["options"]["hKey"].asCString()), updatedPath.c_str(), updatedValueName.c_str(), valueToSet);
if (missingValue)
{
currentOption["oldValue"] = Json::Value();
} else {
currentOption["oldValue"] = value;
}
try
{
currentOption["newValue"] = getDwordValue(hKeyFromString(solutionsRoot["options"]["hKey"].asCString()), updatedPath.c_str(), updatedValueName.c_str());
} catch (int exceptionCode) {
// TODO Handle gracefully.
}
if (!valueSet)
{
success = false;
currentOption["newValue"] = value;
}
solutionsOutput[valueName] = currentOption;
}
outputRoot[iter.memberName()]["results"] = solutionsOutput;
}
return success;
}
示例2: DumpJsonTree
void JsonArchive::DumpJsonTree(Json::Value* root, int depth)
{
if (root == NULL)
{
root = &m_Root;
}
depth += 1;
printf( " {type=[%d], size=%d}", root->type(), root->size() );
if( root->size() > 0 )
{
printf("\n");
for( Json::ValueIterator itr = root->begin() ; itr != root->end() ; itr++ )
{
// Print depth.
for( int tab = 0 ; tab < depth; tab++)
{
printf("-");
}
printf(" subvalue(%s) -", itr.memberName());
DumpJsonTree( &(*itr), depth);
}
}
else
{
printf(" ");
PrintJsonValue(root);
printf( "\n" );
}
}
示例3: generateLevel
void generateLevel(const std::string &level) {
cleanLevel();
Json::Value root; // will contains the root value after parsing.
curLevel = new Level(level, &root);
if(!loadJSONLevel(level, root)) {
printf("Error parsing JSON file for level %s!\n", level.c_str());
generateLevel("worldmap");
return; // TODO: Load from a default?
}
Json::Value tileset = root["tileset"];
Json::Value customEntities = root["entities"];
char line[201] = "";
std::string filename = "levels/"+level+".lvl";
if(DEBUG) printf("Reading file %s\n", filename.c_str());
FILE *fp = fopen(filename.c_str(), "r");
if(!fp) {
printf("ERROR: Level %s not found!\n", filename.c_str());
generateLevel("worldmap");
return;
}
char blockC[] = "-";
int x=0, y=0, biggestX=0, biggestY=0;
Entity *ent;
for(y=0; fgets(line, sizeof(line), fp); y++) {
if(DEBUG) printf("Read line: %s", line);
for(x=0; line[x]; x++) {
if(line[x] <= 32) continue;
blockC[0] = line[x];
if(!!tileset[blockC]) {
if(DEBUG) printf("Spawning block(%d,%d) type(%d,%c)\n", x, y, line[x], line[x]);
ent = constructEntity(tileset[blockC], x, y);
posLookup[x][y] = ent; // TODO: Remove from list, ensure consistency across block movements
setEntityProperties(ent, tileset[blockC]);
if(x > biggestX) biggestX = x;
if(y > biggestY) biggestY = y;
} else {
printf("Unknown Block: '%c' (%d)\n", line[x], line[x]);
}
}
memset(line, '\0', sizeof(line));
}
curLevel->w = max((biggestX+1)*BLOCK_SIZE, WIDTH);
curLevel->h = max((biggestY+1)*BLOCK_SIZE, HEIGHT);
char sPos[20];
for(Json::ValueIterator iter = customEntities.begin(); iter != customEntities.end(); iter++ ) {
strncpy(sPos, iter.memberName(), sizeof(sPos)-1);
x = atoi(strtok(sPos+1, ","));
y = atoi(strtok(NULL, ")"));
if((ent = posLookup[x][y]) == NULL) {
printf("Level setup error: Entity(%d,%d) not found!\n", x, y);
continue;
}
if(DEBUG) printf("Applying Entity(%d,%d) specifics...\n", x, y);
setEntityProperties(ent, *iter);
}
compileBackground(renderer);
}
示例4: socketThread
void Socket::socketThread() {
Json::Reader reader;
bool running = true;
int addrinfo_status, connect_status, socket_status = 0;
while ( running ) {
if ( !socketfd || socket_status ) {
struct addrinfo host_info;
struct addrinfo *host_info_list;
// Close the existing socket, if it has been left open.
if ( socketfd ) {
close( socketfd );
socketfd = NULL;
}
// Establish connection
memset( &host_info, 0, sizeof host_info );
host_info.ai_family = AF_UNSPEC;
host_info.ai_socktype = SOCK_STREAM;
addrinfo_status = getaddrinfo( hostname, port, &host_info, &host_info_list );
if ( addrinfo_status ) {
std::cout << "couldn't get address" << std::endl ;
sleep(1);
continue;
}
socketfd = socket( host_info_list->ai_family, host_info_list->ai_socktype, host_info_list->ai_protocol );
if ( socketfd == -1 ) {
socket_status = -1;
std::cout << "socket error" << std::endl ;
sleep(1);
continue;
}
connect_status = connect( socketfd, host_info_list->ai_addr, host_info_list->ai_addrlen );
if ( connect_status ) {
socket_status = -1;
std::cout << "connect error" << std::endl ;
sleep(1);
continue;
}
socket_status = 0;
}
int max_message_size = 1000000;
ssize_t bytes_recieved;
struct hss_header header;
string buffer;
bytes_recieved = recv( socketfd, &header, sizeof header, 0 );
//std::cout << "received " << bytes_recieved << std::endl;
if ( bytes_recieved == sizeof header ) {
// Parse the header ( what there is of it )
header.string_bytes = ntohl( header.string_bytes );
if ( header.string_bytes > max_message_size ) {
// Bad header, fuck it.
socket_status = -3;
std::cout << "bad header, disconnecting";
continue;
}
buffer.resize( header.string_bytes );
size_t b = recv( socketfd, (void * ) buffer.c_str(), header.string_bytes, MSG_WAITALL );
if ( b != header.string_bytes ) {
}
Json::Value msg;
//std::cout << buffer << std::endl;
reader.parse( buffer, msg );
Json::Value set = msg["set"];
if ( set.isObject() ) {
Json::Value set = msg["set"];
for ( Json::ValueIterator i = set.begin(); i != set.end(); i ++ ) {
string k = (string) i.memberName();
horten->set( set[k], k, flags );
}
}
//.........这里部分代码省略.........