12 #ifndef YAPF_NODE_RAIL_HPP 13 #define YAPF_NODE_RAIL_HPP 29 m_value = src.m_value;
34 m_value = (((int)node_key.m_tile) << 4) | node_key.m_td;
37 inline int32 CalcHash()
const 54 return m_value == other.m_value;
75 EndSegmentReasonBits m_end_segment_reason;
85 , m_end_segment_reason(ESRB_NONE)
89 inline const Key& GetKey()
const 96 return m_key.GetTile();
112 dmp.
WriteTile(
"m_last_tile", m_last_tile);
115 dmp.
WriteTile(
"m_last_signal_tile", m_last_signal_tile);
116 dmp.
WriteEnumT(
"m_last_signal_td", m_last_signal_td);
117 dmp.
WriteEnumT(
"m_end_segment_reason", m_end_segment_reason);
122 template <
class Tkey_>
130 uint16 m_num_signals_passed;
132 uint32 m_inherited_flags;
134 bool m_targed_seen : 1;
135 bool m_choice_seen : 1;
136 bool m_last_signal_was_red : 1;
144 base::Set(parent, tile, td, is_choice);
146 if (parent == NULL) {
147 m_num_signals_passed = 0;
148 flags_u.m_inherited_flags = 0;
162 m_num_signals_passed = parent->m_num_signals_passed;
163 flags_u.m_inherited_flags = parent->flags_u.m_inherited_flags;
164 m_last_red_signal_type = parent->m_last_red_signal_type;
165 m_last_signal_type = parent->m_last_signal_type;
167 flags_u.flags_s.m_choice_seen |= is_choice;
172 assert(m_segment != NULL);
173 return m_segment->m_last_tile;
176 inline Trackdir GetLastTrackdir()
const 178 assert(m_segment != NULL);
179 return m_segment->m_last_td;
184 assert(m_segment != NULL);
185 m_segment->m_last_tile = tile;
186 m_segment->m_last_td = td;
189 template <
class Tbase,
class Tfunc,
class Tpf>
192 typename Tbase::TrackFollower ft(v, yapf.GetCompatibleRailTypes());
194 Trackdir cur_td = base::GetTrackdir();
196 while (cur != GetLastTile() || cur_td != GetLastTrackdir()) {
197 if (!((obj.*func)(cur, cur_td)))
return false;
199 if (!ft.Follow(cur, cur_td))
break;
205 return (obj.*func)(cur, cur_td);
212 dmp.
WriteLine(
"m_num_signals_passed = %d", m_num_signals_passed);
213 dmp.
WriteLine(
"m_targed_seen = %s", flags_u.flags_s.m_targed_seen ?
"Yes" :
"No");
214 dmp.
WriteLine(
"m_choice_seen = %s", flags_u.flags_s.m_choice_seen ?
"Yes" :
"No");
215 dmp.
WriteLine(
"m_last_signal_was_red = %s", flags_u.flags_s.m_last_signal_was_red ?
"Yes" :
"No");
216 dmp.
WriteEnumT(
"m_last_red_signal_type", m_last_red_signal_type);
SignalType
Type of signal, i.e.
void CDECL WriteLine(const char *format,...) WARN_FORMAT(2
Write a line with indent at the beginning and <LF> at the end.
void WriteEnumT(const char *name, E e)
Dump given enum value (as a number and as named value)
void WriteTile(const char *name, TileIndex t)
Write name & TileIndex to the output.
key for cached segment cost for rail YAPF
Trackdir
Enumeration for tracks and directions.
Hash table based node list multi-container class.
'Train' is either a loco or a wagon.
void WriteStructT(const char *name, const S *s)
Dump nested object (or only its name if this instance is already known).
static T KillFirstBit(T value)
Clear the first bit in an integer.
uint32 TileIndex
The index/ID of a Tile.
static const TileIndex INVALID_TILE
The very nice invalid tile marker.
Flag for an invalid trackdir.
cached segment cost for rail YAPF
Class that represents the dump-into-string target.
static Trackdir FindFirstTrackdir(TrackdirBits trackdirs)
Returns first Trackdir from TrackdirBits or INVALID_TRACKDIR.