use 4 bits for travel mode

This commit is contained in:
Emil Tin
2014-08-11 14:07:00 +02:00
parent 6d6d299ea4
commit dae9c9a7ed
12 changed files with 25 additions and 19 deletions
+5 -1
View File
@@ -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;
}
+8 -2
View File
@@ -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
+1 -1
View File
@@ -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;
+2 -2
View File
@@ -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),