use 4 bits for travel mode
This commit is contained in:
@@ -376,7 +376,11 @@ void ExtractionContainers::PrepareData(const std::string &output_file_name,
|
||||
file_out_stream.write((char *)&edge_iterator->is_roundabout, sizeof(bool));
|
||||
file_out_stream.write((char *)&edge_iterator->is_in_tiny_cc, sizeof(bool));
|
||||
file_out_stream.write((char *)&edge_iterator->is_access_restricted, sizeof(bool));
|
||||
file_out_stream.write((char *)&edge_iterator->travel_mode, sizeof(TravelMode));
|
||||
|
||||
// cannot take adress of bit field, so use local
|
||||
const TravelMode travel_mode = edge_iterator->travel_mode;
|
||||
file_out_stream.write((char *)&travel_mode, sizeof(TravelMode));
|
||||
|
||||
file_out_stream.write((char *)&edge_iterator->is_split, sizeof(bool));
|
||||
++number_of_used_edges;
|
||||
}
|
||||
|
||||
@@ -63,6 +63,7 @@ struct ExtractionWay
|
||||
bidirectional,
|
||||
opposite };
|
||||
|
||||
inline bool HasDuration() { return duration>0; }
|
||||
inline bool IsBidirectional() { return travel_mode!=0 && backward_travel_mode!=0; }
|
||||
inline bool IsOneway() { return travel_mode!=0 && backward_travel_mode==0; }
|
||||
inline bool IsOpposite() { return travel_mode==0 && backward_travel_mode!=0; }
|
||||
@@ -78,6 +79,11 @@ struct ExtractionWay
|
||||
return ExtractionWay::bidirectional;
|
||||
}
|
||||
|
||||
inline void set_mode(const TravelMode m) { travel_mode = m; }
|
||||
inline const TravelMode get_mode() { return travel_mode; }
|
||||
inline void set_backward_mode(const TravelMode m) { backward_travel_mode = m; }
|
||||
inline const TravelMode get_backward_mode() { return backward_travel_mode; }
|
||||
|
||||
unsigned id;
|
||||
unsigned nameID;
|
||||
double speed;
|
||||
@@ -92,8 +98,8 @@ struct ExtractionWay
|
||||
bool ignoreInGrid;
|
||||
std::vector<NodeID> path;
|
||||
HashTable<std::string, std::string> keyVals;
|
||||
TravelMode travel_mode;
|
||||
TravelMode backward_travel_mode;
|
||||
TravelMode travel_mode : 4;
|
||||
TravelMode backward_travel_mode : 4;
|
||||
};
|
||||
|
||||
#endif // EXTRACTION_WAY_H
|
||||
|
||||
@@ -83,7 +83,7 @@ struct InternalExtractorEdge
|
||||
bool is_in_tiny_cc;
|
||||
bool is_duration_set;
|
||||
bool is_access_restricted;
|
||||
TravelMode travel_mode;
|
||||
TravelMode travel_mode : 4;
|
||||
bool is_split;
|
||||
|
||||
FixedPointCoordinate source_coordinate;
|
||||
|
||||
@@ -86,8 +86,8 @@ void ScriptingEnvironment::initLuaState(lua_State* lua_state)
|
||||
.def_readwrite("ignore_in_grid", &ExtractionWay::ignoreInGrid)
|
||||
.def_readwrite("tags", &ExtractionWay::keyVals)
|
||||
.def_readwrite("direction", &ExtractionWay::direction)
|
||||
.def_readwrite("mode", &ExtractionWay::travel_mode)
|
||||
.def_readwrite("backward_mode", &ExtractionWay::backward_travel_mode)
|
||||
.property("mode", &ExtractionWay::get_mode, &ExtractionWay::set_mode)
|
||||
.property("backward_mode", &ExtractionWay::get_backward_mode, &ExtractionWay::set_backward_mode)
|
||||
.enum_("constants")[
|
||||
luabind::value("notSure", 0),
|
||||
luabind::value("oneway", 1),
|
||||
|
||||
Reference in New Issue
Block a user