Parser::ObjType Parser::ParseObjType(char *msg) { switch( *msg ) { case 'g': case 'G': return ParseGoal(msg); case 'f': case 'F': return ParseMarker(msg); case 'l': return ParseLine(msg); case 'p': case 'P': return ParsePlayer(msg); case 'b': case 'B': return ParseBall(msg); default: PARSE_ERROR("unknown object"); break; } ObjType result; result.type = OBJ_None; return result; }
void LoadConfigFile (const char *fn) { xmlDocPtr doc; xmlNodePtr root, child; doc = xmlParseFile (fn); Player *players = g_players; if (doc == NULL) { std::cerr << "Could not parse config file\n"; return; } root = xmlDocGetRootElement (doc); if (root == NULL) { std::cerr << "Empty config file\n"; xmlFreeDoc (doc); return; } child = root->xmlChildrenNode; while (child != NULL) { if (!xmlStrcmp (child->name, (const xmlChar*)"display")) ParseDisplay (doc, child); else if (!xmlStrcmp (child->name, (const xmlChar*)"keyBindings")) ParseKeyBindings (doc, child); else if (!strncmp ((char*)child->name, "player",6)) { char str[2]; for (int i=0; i<4; i++) { str[0] = '1'+i; str[1] = '\0'; if (!strcmp ((char*)child->name+6, str)) ParsePlayer (players+i, doc, child); } } child = child->next; } xmlFreeDoc (doc); xmlCleanupParser (); xmlMemoryDump (); }
void BoardConfigurationSerializer::LoadBoard(BoardConfiguration* board, const std::string& file) { if (board == nullptr) return; board->Clear(); //TODO: Add some error detection here. If the config file is malformed, random stuff (most probably crash) happens. boost::property_tree::ptree configTree; boost::property_tree::json_parser::read_json(file, configTree); for (auto& value : configTree.get_child("board")) { Player player = ParsePlayer(value.second.get<std::string>("player")); ChessPiece::Type pieceType = ParseType(value.second.get<std::string>("type")); char xPos = value.second.get<char>("x"); unsigned int yPos = value.second.get<unsigned int>("y"); board->m_BitBoards[player][pieceType] |= (uint64_t)1 << ParsePosition(xPos, yPos); } board->m_CurrentPlayer = ParsePlayer(configTree.get<std::string>("currentPlayer")); }