QList<double> AttributeManager::doubleListOf( const QString& attribute, const BasicElement* element ) const { QList<double> doubleList; QStringList tmp = findValue( attribute, element ).split( " " ); foreach( QString doubleValue, tmp ) doubleList << parseUnit( doubleValue, element ); return doubleList; }
Expression parseArguments(int argc, char** argv) { if (argc == 1) { help(argv[0]); exit(0); } else if (argc != 4) { printf("ERROR: Should be 3 arguments.\n\n"); help(argv[0]); exit(1); } Expression expression; try { expression.value = static_cast<double>(parseDouble(argv[1])); expression.UnitInput = static_cast<LengthUnit>(parseUnit(argv[2])); expression.UnitOutput = static_cast<LengthUnit>(parseUnit(argv[3])); } catch(...) { printf("Wrong format!"); exit(2); } return expression; }
static bool parseSexp(Game& game, sexp_t* expression) { sexp_t* sub, *subsub; if( !expression ) return false; expression = expression->list; if( !expression ) return false; if(expression->val != NULL && strcmp(expression->val, "status") == 0) { GameState gs; while(expression->next != NULL) { expression = expression->next; sub = expression->list; if ( !sub ) return false; if(string(sub->val) == "game") { sub = sub->next; if ( !sub ) return false; gs.mapWidth = atoi(sub->val); sub = sub->next; if ( !sub ) return false; gs.mapHeight = atoi(sub->val); sub = sub->next; if ( !sub ) return false; gs.waterDamage = atoi(sub->val); sub = sub->next; if ( !sub ) return false; gs.turnNumber = atoi(sub->val); sub = sub->next; if ( !sub ) return false; gs.maxUnits = atoi(sub->val); sub = sub->next; if ( !sub ) return false; gs.playerID = atoi(sub->val); sub = sub->next; if ( !sub ) return false; gs.gameNumber = atoi(sub->val); sub = sub->next; if ( !sub ) return false; gs.maxSiege = atoi(sub->val); sub = sub->next; if ( !sub ) return false; gs.oxygenRate = atof(sub->val); sub = sub->next; if ( !sub ) return false; gs.depositionRate = atoi(sub->val); sub = sub->next; } else if(string(sub->val) == "Player") { sub = sub->next; bool flag = true; while(sub && flag) { Player object; flag = parsePlayer(object, sub); gs.players[object.id] = object; sub = sub->next; } if ( !flag ) return false; } else if(string(sub->val) == "Mappable") { sub = sub->next; bool flag = true; while(sub && flag) { Mappable object; flag = parseMappable(object, sub); gs.mappables[object.id] = object; sub = sub->next; } if ( !flag ) return false; } else if(string(sub->val) == "PumpStation") { sub = sub->next; bool flag = true; while(sub && flag) { PumpStation object; flag = parsePumpStation(object, sub); gs.pumpStations[object.id] = object; sub = sub->next; } if ( !flag ) return false; } else if(string(sub->val) == "Unit") { sub = sub->next; bool flag = true; while(sub && flag) { Unit object; flag = parseUnit(object, sub); gs.units[object.id] = object; sub = sub->next; } if ( !flag ) return false; } else if(string(sub->val) == "Tile") { sub = sub->next; bool flag = true; while(sub && flag) { Tile object; flag = parseTile(object, sub); gs.tiles[object.id] = object; sub = sub->next; } if ( !flag ) return false; } else if(string(sub->val) == "UnitType") { sub = sub->next; bool flag = true; while(sub && flag) { UnitType object; flag = parseUnitType(object, sub); gs.unitTypes[object.id] = object; sub = sub->next; } if ( !flag ) return false; } } game.states.push_back(gs); } else if(string(expression->val) == "animations") { std::map< int, std::vector< SmartPointer< Animation > > > animations; while(expression->next) { expression = expression->next; sub = expression->list; if ( !sub ) return false; if(string(ToLower( sub->val ) ) == "dig") { SmartPointer<dig> animation = new dig; if ( !parseDig(*animation, expression) ) return false; animations[ ((AnimOwner*)&*animation)->owner ].push_back( animation ); } if(string(ToLower( sub->val ) ) == "attack") { SmartPointer<attack> animation = new attack; if ( !parseAttack(*animation, expression) ) return false; animations[ ((AnimOwner*)&*animation)->owner ].push_back( animation ); } if(string(ToLower( sub->val ) ) == "spawn") { SmartPointer<spawn> animation = new spawn; if ( !parseSpawn(*animation, expression) ) return false; animations[ ((AnimOwner*)&*animation)->owner ].push_back( animation ); } if(string(ToLower( sub->val ) ) == "death") { SmartPointer<death> animation = new death; if ( !parseDeath(*animation, expression) ) return false; animations[ ((AnimOwner*)&*animation)->owner ].push_back( animation ); } if(string(ToLower( sub->val ) ) == "move") { SmartPointer<move> animation = new move; if ( !parseMove(*animation, expression) ) return false; animations[ ((AnimOwner*)&*animation)->owner ].push_back( animation ); } if(string(ToLower( sub->val ) ) == "flow") { SmartPointer<flow> animation = new flow; if ( !parseFlow(*animation, expression) ) return false; animations[ ((AnimOwner*)&*animation)->owner ].push_back( animation ); } if(string(ToLower( sub->val ) ) == "fill") { SmartPointer<fill> animation = new fill; if ( !parseFill(*animation, expression) ) return false; animations[ ((AnimOwner*)&*animation)->owner ].push_back( animation ); } } game.states[game.states.size()-1].animations = animations; } else if(string(expression->val) == "ident") { expression = expression->next; if ( !expression ) return false; sub = expression->list; while(sub) { subsub = sub->list; if ( !subsub ) return false; int number = atoi(subsub->val); if(number >= 0) { subsub = subsub->next; if ( !subsub ) return false; subsub = subsub->next; if ( !subsub ) return false; game.players[number] = subsub->val; } sub = sub->next; } } else if(string(expression->val) == "game-winner") { expression = expression->next; if ( !expression ) return false; expression = expression->next; if ( !expression ) return false; expression = expression->next; if ( !expression ) return false; game.winner = atoi(expression->val); expression = expression->next; if( !expression ) return false; game.winReason = expression->val; } return true; }
double AttributeManager::doubleOf( const QString& attribute, const BasicElement* element ) const { return parseUnit( findValue( attribute, element ), element ); }
double AttributeManager::layoutSpacing( const BasicElement* element ) const { // return a thinmathspace which is a good value for layouting return parseUnit( "0.166667em", element ); }
//123px QSharedPointer<LengthValue> CSSParser::parseLength(){ #ifdef CSS_DEBUG qDebug() << Q_FUNC_INFO; #endif /* CSS_DEBUG */ return QSharedPointer<LengthValue>(new LengthValue(parseUnit(), parserFloat())); }