10 TrigRoads::TrigRoads(
const int pol,
const int top_bot)
20 if (idx < 0 || idx > (
int)m_roads.size())
return 0;
26 auto it = m_idx_map.find(road_id);
27 if (it != m_idx_map.end())
return &m_roads[it->second];
33 auto it = m_idx_map.find(road_id);
34 if (it != m_idx_map.end())
return it->second;
40 if (idx < 0 || idx > (
int)m_roads.size())
return 0;
46 auto it = m_idx_map.find(road_id);
47 if (it != m_idx_map.end())
return &m_roads[it->second];
56 m_file_name = file_name;
57 ifstream ifs(file_name);
63 while (getline(ifs, buffer)) {
64 if (buffer[0] ==
'#' || buffer[0] ==
'r')
continue;
70 >> road.
H1X >> road.
H2X >> road.
H3X >> road.
H4X))
continue;
71 if (road.
road_id * m_top_bot <= 0)
continue;
72 if (road.
charge * m_pol <= 0)
continue;
73 m_roads.push_back(road);
74 m_idx_map[road.
road_id] = idx++;
83 oss << (m_pol > 0 ?
'+' :
'-') << (m_top_bot > 0 ?
'T' :
'B');
84 if (level > 0) oss <<
"[" << m_roads.size() <<
"]";
86 for (
auto it = m_roads.begin(); it != m_roads.end(); it++) oss <<
" " << it->str(level - 2);
int LoadConfig(const std::string file_name)
TrigRoad * FindRoad(const int road_id)
int FindRoadIndex(const int road_id) const
std::string str(const int level=0) const
TrigRoad * GetRoad(const int idx)