1 #include "EnumParser.h" 2 3 #include "../universe/Enums.h" 4 #include "../universe/ShipPart.h" 5 #include "../universe/UnlockableItem.h" 6 7 #include <boost/phoenix/object/dynamic_cast.hpp> 8 #include <boost/phoenix/operator/self.hpp> 9 10 namespace qi = boost::spirit::qi; 11 12 #define DEBUG_PARSERS 0 13 14 namespace { 15 qi::_val_type _val; 16 } 17 18 namespace parse { empire_affiliation_enum_grammar(const parse::lexer & tok)19 empire_affiliation_enum_grammar::empire_affiliation_enum_grammar(const parse::lexer& tok) : 20 empire_affiliation_enum_grammar::base_type(rule, "empire_affiliation_enum_grammar") 21 { 22 rule 23 = tok.TheEmpire_ [ _val = AFFIL_SELF ] 24 | tok.EnemyOf_ [ _val = AFFIL_ENEMY ] 25 | tok.PeaceWith_ [ _val = AFFIL_PEACE ] 26 | tok.AllyOf_ [ _val = AFFIL_ALLY ] 27 | tok.AnyEmpire_ [ _val = AFFIL_ANY ] 28 | tok.None_ [ _val = AFFIL_NONE ] 29 | tok.CanSee_ [ _val = AFFIL_CAN_SEE ] 30 | tok.Human_ [ _val = AFFIL_HUMAN ] 31 ; 32 } 33 unlockable_item_enum_grammar(const parse::lexer & tok)34 unlockable_item_enum_grammar::unlockable_item_enum_grammar(const parse::lexer& tok) : 35 unlockable_item_enum_grammar::base_type(rule, "unlockable_item_enum_grammar") 36 { 37 rule 38 = tok.Building_ [ _val = UIT_BUILDING ] 39 | tok.ShipPart_ [ _val = UIT_SHIP_PART ] 40 | tok.ShipHull_ [ _val = UIT_SHIP_HULL ] 41 | tok.ShipDesign_ [ _val = UIT_SHIP_DESIGN ] 42 | tok.Tech_ [ _val = UIT_TECH ] 43 ; 44 } 45 ship_slot_enum_grammar(const parse::lexer & tok)46 ship_slot_enum_grammar::ship_slot_enum_grammar(const parse::lexer& tok) : 47 ship_slot_enum_grammar::base_type(rule, "ship_slot_enum_grammar") 48 { 49 rule 50 = tok.External_ [ _val = SL_EXTERNAL ] 51 | tok.Internal_ [ _val = SL_INTERNAL ] 52 | tok.Core_ [ _val = SL_CORE ] 53 ; 54 } 55 ship_part_class_enum_grammar(const parse::lexer & tok)56 ship_part_class_enum_grammar::ship_part_class_enum_grammar(const parse::lexer& tok) : 57 ship_part_class_enum_grammar::base_type(rule, "ship_part_class_enum_grammar") 58 { 59 rule 60 = tok.ShortRange_ [ _val = PC_DIRECT_WEAPON ] 61 | tok.FighterBay_ [ _val = PC_FIGHTER_BAY ] 62 | tok.FighterHangar_ [ _val = PC_FIGHTER_HANGAR ] 63 | tok.Shield_ [ _val = PC_SHIELD ] 64 | tok.Armour_ [ _val = PC_ARMOUR ] 65 | tok.Troops_ [ _val = PC_TROOPS ] 66 | tok.Detection_ [ _val = PC_DETECTION ] 67 | tok.Stealth_ [ _val = PC_STEALTH ] 68 | tok.Fuel_ [ _val = PC_FUEL ] 69 | tok.Colony_ [ _val = PC_COLONY ] 70 | tok.Speed_ [ _val = PC_SPEED ] 71 | tok.General_ [ _val = PC_GENERAL ] 72 | tok.Bombard_ [ _val = PC_BOMBARD ] 73 | tok.Research_ [ _val = PC_RESEARCH ] 74 | tok.Industry_ [ _val = PC_INDUSTRY ] 75 | tok.Trade_ [ _val = PC_TRADE ] 76 | tok.ProductionLocation_ [ _val = PC_PRODUCTION_LOCATION ] 77 ; 78 } 79 capture_result_enum_grammar(const parse::lexer & tok)80 capture_result_enum_grammar::capture_result_enum_grammar(const parse::lexer& tok) : 81 capture_result_enum_grammar::base_type(rule, "capture_result_enum_grammar") 82 { 83 rule 84 = tok.Capture_ [ _val = CR_CAPTURE ] 85 | tok.Retain_ [ _val = CR_RETAIN ] 86 | tok.Destroy_ [ _val = CR_DESTROY ] 87 ; 88 } 89 statistic_enum_grammar(const parse::lexer & tok)90 statistic_enum_grammar::statistic_enum_grammar(const parse::lexer& tok) : 91 statistic_enum_grammar::base_type(rule, "statistic_enum_grammar") 92 { 93 rule 94 = tok.CountUnique_ [ _val = ValueRef::UNIQUE_COUNT ] 95 | tok.Count_ [ _val = ValueRef::COUNT ] 96 | tok.If_ [ _val = ValueRef::IF ] 97 | tok.Sum_ [ _val = ValueRef::SUM ] 98 | tok.Mean_ [ _val = ValueRef::MEAN ] 99 | tok.RMS_ [ _val = ValueRef::RMS ] 100 | tok.Mode_ [ _val = ValueRef::MODE ] 101 | tok.Max_ [ _val = ValueRef::MAX ] 102 | tok.Min_ [ _val = ValueRef::MIN ] 103 | tok.Spread_ [ _val = ValueRef::SPREAD ] 104 | tok.StDev_ [ _val = ValueRef::STDEV ] 105 | tok.Product_ [ _val = ValueRef::PRODUCT ] 106 ; 107 } 108 non_ship_part_meter_enum_grammar(const parse::lexer & tok)109 non_ship_part_meter_enum_grammar::non_ship_part_meter_enum_grammar(const parse::lexer& tok) : 110 non_ship_part_meter_enum_grammar::base_type(rule, "non_ship_part_meter_enum_grammar") 111 { 112 rule 113 = tok.TargetConstruction_ [ _val = METER_TARGET_CONSTRUCTION ] 114 | tok.TargetIndustry_ [ _val = METER_TARGET_INDUSTRY ] 115 | tok.TargetPopulation_ [ _val = METER_TARGET_POPULATION ] 116 | tok.TargetResearch_ [ _val = METER_TARGET_RESEARCH ] 117 | tok.TargetTrade_ [ _val = METER_TARGET_TRADE ] 118 | tok.TargetHappiness_ [ _val = METER_TARGET_HAPPINESS ] 119 | tok.MaxDefense_ [ _val = METER_MAX_DEFENSE ] 120 | tok.MaxFuel_ [ _val = METER_MAX_FUEL ] 121 | tok.MaxShield_ [ _val = METER_MAX_SHIELD ] 122 | tok.MaxStructure_ [ _val = METER_MAX_STRUCTURE ] 123 | tok.MaxTroops_ [ _val = METER_MAX_TROOPS ] 124 | tok.MaxSupply_ [ _val = METER_MAX_SUPPLY ] 125 | tok.MaxStockpile_ [ _val = METER_MAX_STOCKPILE ] 126 127 | tok.Construction_ [ _val = METER_CONSTRUCTION ] 128 | tok.Industry_ [ _val = METER_INDUSTRY ] 129 | tok.Population_ [ _val = METER_POPULATION ] 130 | tok.Research_ [ _val = METER_RESEARCH ] 131 | tok.Trade_ [ _val = METER_TRADE ] 132 | tok.Happiness_ [ _val = METER_HAPPINESS ] 133 134 | tok.Defense_ [ _val = METER_DEFENSE ] 135 | tok.Fuel_ [ _val = METER_FUEL ] 136 | tok.Shield_ [ _val = METER_SHIELD ] 137 | tok.Structure_ [ _val = METER_STRUCTURE ] 138 | tok.Troops_ [ _val = METER_TROOPS ] 139 | tok.Supply_ [ _val = METER_SUPPLY ] 140 | tok.Stockpile_ [ _val = METER_STOCKPILE ] 141 142 | tok.RebelTroops_ [ _val = METER_REBEL_TROOPS ] 143 | tok.Stealth_ [ _val = METER_STEALTH ] 144 | tok.Detection_ [ _val = METER_DETECTION ] 145 | tok.Speed_ [ _val = METER_SPEED ] 146 147 | tok.Size_ [ _val = METER_SIZE ] 148 ; 149 } 150 ship_part_meter_enum_grammar(const parse::lexer & tok)151 ship_part_meter_enum_grammar::ship_part_meter_enum_grammar(const parse::lexer& tok) : 152 ship_part_meter_enum_grammar::base_type(rule, "ship_part_meter_enum_grammar") 153 { 154 rule 155 = tok.MaxCapacity_ [ _val = METER_MAX_CAPACITY ] 156 | tok.MaxDamage_ [ _val = METER_MAX_CAPACITY ] 157 | tok.Capacity_ [ _val = METER_CAPACITY ] 158 | tok.Damage_ [ _val = METER_CAPACITY ] 159 | tok.SecondaryStat_ [ _val = METER_SECONDARY_STAT ] 160 | tok.MaxSecondaryStat_ [ _val = METER_MAX_SECONDARY_STAT ] 161 ; 162 } 163 set_non_ship_part_meter_enum_grammar(const parse::lexer & tok)164 set_non_ship_part_meter_enum_grammar::set_non_ship_part_meter_enum_grammar(const parse::lexer& tok) : 165 set_non_ship_part_meter_enum_grammar::base_type(rule, "set_non_ship_part_meter_enum_grammar") 166 { 167 rule 168 = tok.SetTargetConstruction_ [ _val = METER_TARGET_CONSTRUCTION ] 169 | tok.SetTargetIndustry_ [ _val = METER_TARGET_INDUSTRY ] 170 | tok.SetTargetPopulation_ [ _val = METER_TARGET_POPULATION ] 171 | tok.SetTargetResearch_ [ _val = METER_TARGET_RESEARCH ] 172 | tok.SetTargetTrade_ [ _val = METER_TARGET_TRADE ] 173 | tok.SetTargetHappiness_ [ _val = METER_TARGET_HAPPINESS ] 174 175 | tok.SetMaxDefense_ [ _val = METER_MAX_DEFENSE ] 176 | tok.SetMaxFuel_ [ _val = METER_MAX_FUEL ] 177 | tok.SetMaxShield_ [ _val = METER_MAX_SHIELD ] 178 | tok.SetMaxStructure_ [ _val = METER_MAX_STRUCTURE ] 179 | tok.SetMaxTroops_ [ _val = METER_MAX_TROOPS ] 180 | tok.SetMaxSupply_ [ _val = METER_MAX_SUPPLY ] 181 | tok.SetMaxStockpile_ [ _val = METER_MAX_STOCKPILE ] 182 183 | tok.SetConstruction_ [ _val = METER_CONSTRUCTION ] 184 | tok.SetIndustry_ [ _val = METER_INDUSTRY ] 185 | tok.SetPopulation_ [ _val = METER_POPULATION ] 186 | tok.SetResearch_ [ _val = METER_RESEARCH ] 187 | tok.SetTrade_ [ _val = METER_TRADE ] 188 | tok.SetHappiness_ [ _val = METER_HAPPINESS ] 189 190 | tok.SetDefense_ [ _val = METER_DEFENSE ] 191 | tok.SetFuel_ [ _val = METER_FUEL ] 192 | tok.SetShield_ [ _val = METER_SHIELD ] 193 | tok.SetStructure_ [ _val = METER_STRUCTURE ] 194 | tok.SetTroops_ [ _val = METER_TROOPS ] 195 | tok.SetSupply_ [ _val = METER_SUPPLY ] 196 | tok.SetStockpile_ [ _val = METER_STOCKPILE ] 197 198 | tok.SetRebelTroops_ [ _val = METER_REBEL_TROOPS ] 199 | tok.SetStealth_ [ _val = METER_STEALTH ] 200 | tok.SetDetection_ [ _val = METER_DETECTION ] 201 | tok.SetSpeed_ [ _val = METER_SPEED ] 202 203 | tok.SetSize_ [ _val = METER_SIZE ] 204 ; 205 } 206 set_ship_part_meter_enum_grammar(const parse::lexer & tok)207 set_ship_part_meter_enum_grammar::set_ship_part_meter_enum_grammar(const parse::lexer& tok) : 208 set_ship_part_meter_enum_grammar::base_type(rule, "set_ship_part_meter_enum_grammar") 209 { 210 rule 211 = tok.SetMaxCapacity_ [ _val = METER_MAX_CAPACITY ] 212 | tok.SetMaxDamage_ [ _val = METER_MAX_CAPACITY ] 213 | tok.SetMaxSecondaryStat_ [ _val = METER_MAX_SECONDARY_STAT ] 214 | tok.SetCapacity_ [ _val = METER_CAPACITY ] 215 | tok.SetDamage_ [ _val = METER_CAPACITY ] 216 | tok.SetSecondaryStat_ [ _val = METER_SECONDARY_STAT ] 217 ; 218 } 219 } 220