Abbrev getParserCommandName(const RoomRidableType x) { #define CASE3(UPPER, s, n) \ do { \ case RoomRidableType::UPPER: \ return Abbrev{s, n}; \ } while (false) switch (x) { CASE3(UNDEFINED, "undefined", -1); CASE3(RIDABLE, "ride", -1); CASE3(NOT_RIDABLE, "noride", -1); } return Abbrev{}; #undef CASE3 }
Abbrev getParserCommandName(const RoomLightType x) { #define CASE3(UPPER, s, n) \ do { \ case RoomLightType::UPPER: \ return Abbrev{s, n}; \ } while (false) switch (x) { CASE3(UNDEFINED, "undefined", -1); CASE3(LIT, "lit", -1); CASE3(DARK, "dark", -1); } return Abbrev{}; #undef CASE3 }
Abbrev getParserCommandName(const RoomSundeathType x) { #define CASE3(UPPER, s, n) \ do { \ case RoomSundeathType::UPPER: \ return Abbrev{s, n}; \ } while (false) switch (x) { CASE3(UNDEFINED, "undefined", -1); CASE3(NO_SUNDEATH, "nosundeath", -1); CASE3(SUNDEATH, "sundeath", -1); } return Abbrev{}; #undef CASE3 }
Abbrev getParserCommandName(const RoomAlignType x) { #define CASE3(UPPER, s, n) \ do { \ case RoomAlignType::UPPER: \ return Abbrev{s, n}; \ } while (false) switch (x) { CASE3(UNDEFINED, "undefined", -1); CASE3(GOOD, "good", -1); CASE3(NEUTRAL, "neutral", -1); CASE3(EVIL, "evil", -1); } return Abbrev{}; #undef CASE3 }
int test() { CASE0("abc"); CASE0("a\tc"); CASE0("a\bc"); CASE0("a\b\nc"); CASE0("a\'\"\\c"); CASE0("ac\x0e"); CASE0("ac\x7f"); CASE1("abc"); CASE1("a\\tc"); CASE1("a\\bc"); CASE1("a\\b\\nc"); CASE1("a\\\'\\\"\\\\c"); CASE1("ac\\x0e"); CASE1("ac\\x7f"); CASE2("abc"); CASE2("a\tc"); CASE2("a\bc"); CASE2("a\b\nc"); CASE2("a\'\"\\c"); CASE2("ac\x0e"); CASE2("ac\x7f"); CASE3("abc"); CASE3("a\\tc"); CASE3("a\\bc"); CASE3("a\\b\\nc"); CASE3("a\\\'\\\"\\\\c"); CASE3("ac\\x0e"); CASE3("ac\\x7f"); return 0; }
Abbrev getParserCommandName(const DoorActionType action) { #define CASE3(UPPER, s, n) \ do { \ case DoorActionType::UPPER: \ return Abbrev{s, n}; \ } while (false) switch (action) { CASE3(OPEN, "open", 2); CASE3(CLOSE, "close", 3); CASE3(LOCK, "lock", 3); CASE3(UNLOCK, "unlock", 3); CASE3(PICK, "pick", -1); CASE3(ROCK, "rock", -1); CASE3(BASH, "bash", -1); CASE3(BREAK, "break", -1); CASE3(BLOCK, "block", -1); case DoorActionType::NONE: break; } return Abbrev{}; #undef CASE3 }
Abbrev getParserCommandName(const DoorFlag x) { #define CASE3(UPPER, s, n) \ do { \ case DoorFlag::UPPER: \ return Abbrev{s, n}; \ } while (false) switch (x) { CASE3(HIDDEN, "hidden", 3); CASE3(NEED_KEY, "needkey", -1); CASE3(NO_BLOCK, "noblock", -1); CASE3(NO_BREAK, "nobreak", -1); CASE3(NO_PICK, "nopick", -1); CASE3(DELAYED, "delayed", 5); CASE3(CALLABLE, "callable", 4); CASE3(KNOCKABLE, "knockable", 5); CASE3(MAGIC, "magic", 3); CASE3(ACTION, "action", 3); CASE3(NO_BASH, "nobash", -1); } return Abbrev{}; #undef CASE3 }
Abbrev getParserCommandName(const ExitFlag x) { #define CASE3(UPPER, s, n) \ do { \ case ExitFlag::UPPER: \ return Abbrev{s, n}; \ } while (false) switch (x) { CASE3(DOOR, "door", -1); CASE3(EXIT, "exit", -1); CASE3(ROAD, "road", -1); CASE3(CLIMB, "climb", 3); CASE3(RANDOM, "random", 4); CASE3(SPECIAL, "special", 4); CASE3(NO_MATCH, "nomatch", -1); CASE3(FLOW, "flow", -1); CASE3(NO_FLEE, "noflee", -1); CASE3(DAMAGE, "damage", -1); CASE3(FALL, "fall", -1); CASE3(GUARDED, "guarded", 5); } return Abbrev{}; #undef CASE3 }
// NOTE: This isn't used by the parser (currently only used for filenames). Abbrev getParserCommandName(const RoomTerrainType x) { #define CASE3(UPPER, s, n) \ do { \ case RoomTerrainType::UPPER: \ return Abbrev{s, n}; \ } while (false) switch (x) { CASE3(UNDEFINED, "undefined", -1); CASE3(INDOORS, "indoors", -1); CASE3(CITY, "city", -1); CASE3(FIELD, "field", -1); CASE3(FOREST, "forest", -1); CASE3(HILLS, "hills", -1); CASE3(MOUNTAINS, "mountains", -1); CASE3(SHALLOW, "shallow", -1); CASE3(WATER, "water", -1); CASE3(RAPIDS, "rapids", -1); CASE3(UNDERWATER, "underwater", -1); CASE3(ROAD, "road", -1); CASE3(BRUSH, "brush", -1); CASE3(TUNNEL, "tunnel", -1); CASE3(CAVERN, "cavern", -1); CASE3(DEATHTRAP, "deathtrap", -1); } return Abbrev{}; #undef CASE3 }
Abbrev getParserCommandName(const RoomLoadFlag x) { #define CASE3(UPPER, s, n) \ do { \ case RoomLoadFlag::UPPER: \ return Abbrev{s, n}; \ } while (false) switch (x) { CASE3(TREASURE, "treasure", -1); CASE3(ARMOUR, "armour", -1); CASE3(WEAPON, "weapon", -1); CASE3(WATER, "water", -1); CASE3(FOOD, "food", -1); CASE3(HERB, "herb", -1); CASE3(KEY, "key", -1); CASE3(MULE, "mule", -1); CASE3(HORSE, "horse", -1); CASE3(PACK_HORSE, "pack", -1); CASE3(TRAINED_HORSE, "trained", -1); CASE3(ROHIRRIM, "rohirrim", -1); CASE3(WARG, "warg", -1); CASE3(BOAT, "boat", -1); CASE3(ATTENTION, "attention", -1); CASE3(TOWER, "watch", -1); CASE3(CLOCK, "clock", -1); CASE3(MAIL, "mail", -1); CASE3(STABLE, "stable", -1); CASE3(WHITE_WORD, "whiteword", -1); CASE3(DARK_WORD, "darkword", -1); CASE3(EQUIPMENT, "equipment", -1); } return Abbrev{}; #undef CASE3 }
Abbrev getParserCommandName(const RoomMobFlag x) { #define CASE3(UPPER, s, n) \ do { \ case RoomMobFlag::UPPER: \ return Abbrev{s, n}; \ } while (false) switch (x) { CASE3(RENT, "rent", -1); CASE3(SHOP, "shop", -1); CASE3(WEAPON_SHOP, "weaponshop", -1); // conflict with "weapon" CASE3(ARMOUR_SHOP, "armourshop", -1); // conflict with "armour" CASE3(FOOD_SHOP, "foodshop", -1); // conflict with "food" CASE3(PET_SHOP, "petshop", 3); CASE3(GUILD, "guild", -1); CASE3(SCOUT_GUILD, "scoutguild", 5); CASE3(MAGE_GUILD, "mageguild", 4); CASE3(CLERIC_GUILD, "clericguild", 6); CASE3(WARRIOR_GUILD, "warriorguild", 7); CASE3(RANGER_GUILD, "rangerguild", 6); CASE3(AGGRESSIVE_MOB, "aggmob", -1); CASE3(QUEST_MOB, "questmob", -1); CASE3(PASSIVE_MOB, "passivemob", -1); CASE3(ELITE_MOB, "elitemob", -1); CASE3(SUPER_MOB, "smob", -1); } return Abbrev{}; #undef CASE3 }