1 #ifndef MHO_VexHelpers_HH__
2 #define MHO_VexHelpers_HH__
24 namespace MHO_VexHelpers
32 const std::string& section)
34 std::map< std::string, std::string > out;
35 if(!vex_root.contains(
"$MODE") || !vex_root[
"$MODE"].contains(mode_name))
39 if(!vex_root[
"$MODE"][mode_name].contains(section))
43 for(
auto& entry : vex_root[
"$MODE"][mode_name][section])
45 std::string keyword = entry[
"keyword"].get< std::string >();
46 for(
auto& qual : entry[
"qualifiers"])
48 std::string station_code = qual.get< std::string >();
49 if(vex_root[
"$STATION"].contains(station_code))
51 out[station_code] = keyword;
63 if(!vex_root.contains(
"$MODE") || !vex_root[
"$MODE"].contains(mode_name))
67 const auto& mode = vex_root[
"$MODE"][mode_name];
68 if(!mode.contains(section) || mode[section].empty())
72 return mode[section][0][
"keyword"].get< std::string >();
79 const std::string& station_code,
80 const std::map< std::string, std::string >* prebuilt_map =
nullptr)
84 auto it = prebuilt_map->find(station_code);
85 if(it != prebuilt_map->end())
91 auto it = m.find(station_code);
101 const std::string& bbc_id)
103 if(bbc_table.empty() || if_table.empty())
107 if(!vex_root.contains(
"$BBC") || !vex_root[
"$BBC"].contains(bbc_table))
111 if(!vex_root.contains(
"$IF") || !vex_root[
"$IF"].contains(if_table))
116 const auto& bbc_assigns = vex_root[
"$BBC"][bbc_table][
"BBC_assign"];
117 for(
const auto& ba : bbc_assigns)
119 if(ba[
"logical_bbc_id"].get< std::string >() != bbc_id)
123 std::string if_id = ba[
"logical_if"].get< std::string >();
124 const auto& if_defs = vex_root[
"$IF"][if_table][
"if_def"];
125 for(
const auto& ifd : if_defs)
127 if(ifd[
"if_id"].get< std::string >() == if_id)
129 return ifd[
"polarization"].get< std::string >();
141 if(!vex_root.contains(
"$STATION") || !vex_root[
"$STATION"].contains(station_code))
145 const auto& site_refs = vex_root[
"$STATION"][station_code][
"$SITE"];
146 if(site_refs.empty())
150 std::string site_key = site_refs[0][
"keyword"].get< std::string >();
151 if(!vex_root.contains(
"$SITE") || !vex_root[
"$SITE"].contains(site_key))
155 if(!vex_root[
"$SITE"][site_key].contains(
"mk4_site_ID"))
159 return vex_root[
"$SITE"][site_key][
"mk4_site_ID"].get< std::string >();
std::string ResolvePolarization(const mho_json &vex_root, const std::string &bbc_table, const std::string &if_table, const std::string &bbc_id)
Definition: MHO_VexHelpers.hh:100
std::string StationMk4SiteId(const mho_json &vex_root, const std::string &station_code)
Definition: MHO_VexHelpers.hh:139
std::string FirstKeywordInModeSection(const mho_json &vex_root, const std::string &mode_name, const std::string §ion)
Definition: MHO_VexHelpers.hh:61
std::string TableForStation(const mho_json &vex_root, const std::string &mode_name, const std::string §ion, const std::string &station_code, const std::map< std::string, std::string > *prebuilt_map=nullptr)
Definition: MHO_VexHelpers.hh:78
std::map< std::string, std::string > StationToKeywordMap(const mho_json &vex_root, const std::string &mode_name, const std::string §ion)
Definition: MHO_VexHelpers.hh:31
Definition: MHO_AdhocFlagging.hh:18