+static string event_type_to_string(EventType type)
+{
+ switch (type) {
+ case EventType::CATCH:
+ return "catch";
+ case EventType::DEFENSE:
+ return "defense";
+ case EventType::DEFENSIVE_SOFT_MINUS:
+ return "defensive_soft_minus";
+ case EventType::DEFENSIVE_SOFT_PLUS:
+ return "defensive_soft_plus";
+ case EventType::FORMATION_DEFENSE:
+ return "formation_defense";
+ case EventType::FORMATION_OFFENSE:
+ return "formation_offense";
+ case EventType::DROP:
+ return "drop";
+ case EventType::GOAL:
+ return "goal";
+ case EventType::IN:
+ return "in";
+ case EventType::INTERCEPTION:
+ return "interception";
+ case EventType::OFFENSIVE_SOFT_MINUS:
+ return "offensive_soft_minus";
+ case EventType::OFFENSIVE_SOFT_PLUS:
+ return "offensive_soft_plus";
+ case EventType::OUT:
+ return "out";
+ case EventType::PULL:
+ return "pull";
+ case EventType::PULL_LANDED:
+ return "pull_landed";
+ case EventType::PULL_OOB:
+ return "pull_oob";
+ case EventType::RESTART:
+ return "restart";
+ case EventType::SET_DEFENSE:
+ return "set_defense";
+ case EventType::SET_OFFENSE:
+ return "set_offense";
+ case EventType::STALLOUT:
+ return "stallout";
+ case EventType::STOPPAGE:
+ return "stoppage";
+ case EventType::THEIR_GOAL:
+ return "their_goal";
+ case EventType::THEIR_PULL:
+ return "their_pull";
+ case EventType::THEIR_THROWAWAY:
+ return "their_throwaway";
+ case EventType::THROWAWAY:
+ return "throwaway";
+ case EventType::UNKNOWN:
+ return "unknown";
+ case EventType::WAS_D:
+ return "was_d";
+ }
+ abort();
+}
+
+static EventType string_to_event_type(const string &type)
+{
+ if (type == "catch") {
+ return EventType::CATCH;
+ } else if (type == "defense") {
+ return EventType::DEFENSE;
+ } else if (type == "defensive_soft_minus") {
+ return EventType::DEFENSIVE_SOFT_MINUS;
+ } else if (type == "defensive_soft_plus") {
+ return EventType::DEFENSIVE_SOFT_PLUS;
+ } else if (type == "formation_defense") {
+ return EventType::FORMATION_DEFENSE;
+ } else if (type == "formation_offense") {
+ return EventType::FORMATION_OFFENSE;
+ } else if (type == "drop") {
+ return EventType::DROP;
+ } else if (type == "goal") {
+ return EventType::GOAL;
+ } else if (type == "in") {
+ return EventType::IN;
+ } else if (type == "interception") {
+ return EventType::INTERCEPTION;
+ } else if (type == "offensive_soft_minus") {
+ return EventType::OFFENSIVE_SOFT_MINUS;
+ } else if (type == "offensive_soft_plus") {
+ return EventType::OFFENSIVE_SOFT_PLUS;
+ } else if (type == "out") {
+ return EventType::OUT;
+ } else if (type == "pull") {
+ return EventType::PULL;
+ } else if (type == "pull_landed") {
+ return EventType::PULL_LANDED;
+ } else if (type == "pull_oob") {
+ return EventType::PULL_OOB;
+ } else if (type == "restart") {
+ return EventType::RESTART;
+ } else if (type == "set_defense") {
+ return EventType::SET_DEFENSE;
+ } else if (type == "set_offense") {
+ return EventType::SET_OFFENSE;
+ } else if (type == "stallout") {
+ return EventType::STALLOUT;
+ } else if (type == "stoppage") {
+ return EventType::STOPPAGE;
+ } else if (type == "their_goal") {
+ return EventType::THEIR_GOAL;
+ } else if (type == "their_pull") {
+ return EventType::THEIR_PULL;
+ } else if (type == "their_throwaway") {
+ return EventType::THEIR_THROWAWAY;
+ } else if (type == "throwaway") {
+ return EventType::THROWAWAY;
+ } else if (type == "unknown") {
+ return EventType::UNKNOWN;
+ } else if (type == "was_d") {
+ return EventType::WAS_D;
+ } else {
+ fprintf(stderr, "Unknown event type ā%sā\n", type.c_str());
+ exit(1);
+ }
+}
+