56 std::ostringstream oss;
57 oss.setf(std::ios::fixed , std::ios::floatfield);
58 oss << std::setprecision(accuracy);
65 inline std::string
toHex(
const T i, std::streamsize numDigits = 0) {
67 std::stringstream stream;
68 stream <<
"0x" << std::setfill(
'0') << std::setw(numDigits == 0 ?
sizeof(T) * 2 : numDigits) << std::hex << i;
73 inline std::string
toString(
const Named* obj, std::streamsize accuracy) {
158 std::ostringstream oss;
159 for (std::vector<std::string>::const_iterator it = strings.begin(); it != strings.end(); ++it) {
174 return dist.toStr(accuracy);
177 template <
typename V>
179 return toString<V>(v.begin(), v.end(), accuracy);
182 template <
typename V>
183 inline std::string
toString(
const typename std::vector<V*>::const_iterator& b,
const typename std::vector<V*>::const_iterator& e, std::streamsize accuracy =
gPrecision) {
185 std::ostringstream oss;
186 for (
typename std::vector<V*>::const_iterator it = b; it != e; ++it) {
195 template <
typename V>
197 return toString<V>(v.begin(), v.end(), accuracy);
200 template <
typename V>
201 inline std::string
toString(
const typename std::list<V*>::const_iterator& b,
const typename std::list<V*>::const_iterator& e, std::streamsize accuracy =
gPrecision) {
203 std::ostringstream oss;
204 for (
typename std::list<V*>::const_iterator it = b; it != e; ++it) {
235 template <
typename T,
typename T_BETWEEN>
236 inline std::string
joinToString(
const std::vector<T>& v,
const T_BETWEEN& between, std::streamsize accuracy =
gPrecision) {
237 std::ostringstream oss;
238 bool connect =
false;
239 for (
typename std::vector<T>::const_iterator it = v.begin(); it != v.end(); ++it) {
251 template <
typename T,
typename T_BETWEEN>
253 std::vector<T> sorted(v);
254 std::sort(sorted.begin(), sorted.end());
259 template <
typename V>
262 std::vector<std::string> ids;
263 for (
typename std::set<V*>::const_iterator it = v.begin(); it != v.end(); ++it) {
264 ids.push_back((*it)->getID());
271 inline std::string
toString(
const std::vector<int>& v, std::streamsize accuracy) {
277 inline std::string
toString(
const std::vector<long long int>& v, std::streamsize accuracy) {
283 inline std::string
toString(
const std::vector<double>& v, std::streamsize accuracy) {
288 template <
typename T,
typename T_BETWEEN>
290 std::ostringstream oss;
291 bool connect =
false;
292 for (
typename std::set<T>::const_iterator it = s.begin(); it != s.end(); ++it) {
305 inline std::string
toString(
const std::vector<std::string>& v, std::streamsize) {
311 inline std::string
toString(
const std::set<std::string>& v, std::streamsize) {
316 template <
typename KEY,
typename VAL,
typename T_BETWEEN,
typename T_BETWEEN_KEYVAL>
317 inline std::string
joinToString(
const std::map<KEY, VAL>& s,
const T_BETWEEN& between,
const T_BETWEEN_KEYVAL& between_keyval, std::streamsize accuracy =
gPrecision) {
318 std::ostringstream oss;
319 bool connect =
false;
320 for (
typename std::map<KEY, VAL>::const_iterator it = s.begin(); it != s.end(); ++it) {
326 oss <<
toString(it->first, accuracy) << between_keyval <<
toString(it->second, accuracy);
333 inline std::string
toString(
const std::map<std::string, std::string>& v, std::streamsize) {
SumoXMLTag
Numbers representing SUMO-XML - element names.
std::string toString< LinkDirection >(const LinkDirection &linkDir, std::streamsize accuracy)
static StringBijection< SumoXMLNodeType > NodeTypes
node types
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types...
static StringBijection< LaneSpreadFunction > LaneSpreadFunctions
lane spread functions
int gPrecision
the precision for floating point outputs
const std::string & getString(const T key) const
std::string toString< LaneChangeAction >(const LaneChangeAction &action, std::streamsize accuracy)
static std::string getIDSecure(const T *obj, const std::string &fallBack="NULL")
get an identifier for Named-like object which may be Null
SumoXMLAttr
Numbers representing SUMO-XML - attributes.
static StringBijection< LinkState > LinkStates
link states
#define UNUSED_PARAMETER(x)
std::vector< std::string > getStrings() const
LateralAlignment
Numbers representing special SUMO-XML-attribute values Information how vehicles align themselves with...
LinkDirection
The different directions a link between two lanes may take (or a stream between two edges)...
std::string toString< Distribution_Parameterized >(const Distribution_Parameterized &dist, std::streamsize accuracy)
static StringBijection< LinkDirection > LinkDirections
link directions
static StringBijection< LaneChangeAction > LaneChangeActions
lane change actions
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
std::string toString< TrafficLightType >(const TrafficLightType &type, std::streamsize accuracy)
static StringBijection< TrafficLightType > TrafficLightTypes
traffic light types
LinkState
The right-of-way state of a link between two lanes used when constructing a NBTrafficLightLogic, in MSLink and GNEInternalLane.
std::string toString< SumoXMLTag >(const SumoXMLTag &tag, std::streamsize accuracy)
StringBijection< SUMOVehicleClass > SumoVehicleClassStrings(sumoVehicleClassStringInitializer, SVC_CUSTOM2, false)
std::string toString< LaneChangeModel >(const LaneChangeModel &model, std::streamsize accuracy)
Base class for objects which have an id.
std::string toString< LateralAlignment >(const LateralAlignment &latA, std::streamsize accuracy)
static StringBijection< LateralAlignment > LateralAlignments
lateral alignments
std::string toString< SumoXMLEdgeFunc >(const SumoXMLEdgeFunc &edgeFunc, std::streamsize accuracy)
LaneChangeAction
The state of a vehicle's lane-change behavior.
std::string toHex(const T i, std::streamsize numDigits=0)
SumoXMLNodeType
Numbers representing special SUMO-XML-attribute values for representing node- (junction-) types used ...
static StringBijection< int > Attrs
The names of SUMO-XML attributes for use in netbuild.
std::string toString< LinkState >(const LinkState &linkState, std::streamsize accuracy)
std::string joinToStringSorting(const std::vector< T > &v, const T_BETWEEN &between, std::streamsize accuracy=gPrecision)
std::string toString< SUMOVehicleClass >(const SUMOVehicleClass &vClass, std::streamsize accuracy)
SumoXMLEdgeFunc
Numbers representing special SUMO-XML-attribute values for representing edge functions used in netbui...
LaneSpreadFunction
Numbers representing special SUMO-XML-attribute values Information how the edge's lateral offset shal...
std::string toString< SumoXMLAttr >(const SumoXMLAttr &attr, std::streamsize accuracy)
static StringBijection< int > Tags
The names of SUMO-XML elements for use in netbuild.
static StringBijection< SumoXMLEdgeFunc > EdgeFunctions
edge functions
static StringBijection< LaneChangeModel > LaneChangeModels
lane change models
std::string joinToString(const std::vector< T > &v, const T_BETWEEN &between, std::streamsize accuracy=gPrecision)
std::string toString< LaneSpreadFunction >(const LaneSpreadFunction &lsf, std::streamsize accuracy)
std::string toString< SumoXMLNodeType >(const SumoXMLNodeType &nodeType, std::streamsize accuracy)