39 #include <xercesc/sax/HandlerBase.hpp>
40 #include <xercesc/sax/AttributeList.hpp>
41 #include <xercesc/sax/SAXParseException.hpp>
42 #include <xercesc/sax/SAXException.hpp>
57 #ifdef CHECK_MEMORY_LEAKS
59 #endif // CHECK_MEMORY_LEAKS
83 myCurrentEdge(0), myHaveReportedAboutOverwriting(false),
84 myHaveWarnedAboutDeprecatedLaneId(false),
85 myKeepEdgeShape(!options.getBool(
"plain.extend-edge-shape"))
269 WRITE_ERROR(
"Additional lane information could not be set - the edge with id '" +
myCurrentID +
"' is not known.");
284 std::string allowed, disallowed, preferred;
316 WRITE_WARNING(
"Ignoring 'split' because it cannot be assigned to an edge");
335 WRITE_ERROR(
"Additional lane information could not be set - the edge with id '" +
myCurrentID +
"' is not known.");
342 std::vector<std::string> lanes;
344 for (std::vector<std::string>::iterator i = lanes.begin(); i != lanes.end(); ++i) {
347 e.
lanes.push_back(lane);
354 if (e.
lanes.empty()) {
356 e.
lanes.push_back((
int) l);
371 std::string oldBegID = begNodeID;
372 std::string oldEndID = endNodeID;
429 std::string lsfS =
toString(result);
474 std::vector<Split>::iterator i;
481 sort((*i).lanes.begin(), (*i).lanes.end());
482 noLanesMax =
MAX2(noLanesMax, (
unsigned int)(*i).lanes.size());
490 std::vector<int> currLanes;
491 for (
unsigned int l = 0; l < e->
getNumLanes(); ++l) {
492 currLanes.push_back(l);
494 std::string edgeid = e->
getID();
497 const Split& exp = *i;
498 assert(exp.
lanes.size() != 0);
505 std::string pid = e->
getID();
509 std::vector<int> newLanes = exp.
lanes;
515 unsigned int rightMostP = currLanes[0];
516 unsigned int rightMostN = newLanes[0];
517 for (
int l = 0; l < (
int) rightMostP - (
int) rightMostN; ++l) {
521 unsigned int leftMostP = currLanes.back();
522 unsigned int leftMostN = newLanes.back();
523 for (
int l = 0; l < (
int) leftMostN - (
int) leftMostP; ++l) {
527 for (
unsigned int l = 0; l < noLanesMax; ++l) {
528 if (find(currLanes.begin(), currLanes.end(), l) == currLanes.end()) {
531 if (find(newLanes.begin(), newLanes.end(), l) == newLanes.end()) {
538 currLanes = newLanes;
542 }
else if (exp.
pos == 0) {
548 currLanes = exp.
lanes;
563 unsigned int maxLeft = (*i).lanes.back();
565 if (maxLeft < noLanesMax) {
572 unsigned int maxRight = (*i).lanes.front();