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"))
273 WRITE_ERROR(
"Additional lane information could not be set - the edge with id '" +
myCurrentID +
"' is not known.");
288 std::string allowed, disallowed, preferred;
320 WRITE_WARNING(
"Ignoring 'split' because it cannot be assigned to an edge");
339 WRITE_ERROR(
"Additional lane information could not be set - the edge with id '" +
myCurrentID +
"' is not known.");
346 std::vector<std::string> lanes;
348 for (std::vector<std::string>::iterator i = lanes.begin(); i != lanes.end(); ++i) {
351 e.
lanes.push_back(lane);
358 if (e.
lanes.empty()) {
360 e.
lanes.push_back((
int) l);
375 std::string oldBegID = begNodeID;
376 std::string oldEndID = endNodeID;
433 std::string lsfS =
toString(result);
478 std::vector<Split>::iterator i;
485 sort((*i).lanes.begin(), (*i).lanes.end());
486 noLanesMax =
MAX2(noLanesMax, (
unsigned int)(*i).lanes.size());
494 std::vector<int> currLanes;
495 for (
unsigned int l = 0; l < e->
getNumLanes(); ++l) {
496 currLanes.push_back(l);
498 std::string edgeid = e->
getID();
501 const Split& exp = *i;
502 assert(exp.
lanes.size() != 0);
509 std::string pid = e->
getID();
513 std::vector<int> newLanes = exp.
lanes;
519 unsigned int rightMostP = currLanes[0];
520 unsigned int rightMostN = newLanes[0];
521 for (
int l = 0; l < (
int) rightMostP - (
int) rightMostN; ++l) {
525 unsigned int leftMostP = currLanes.back();
526 unsigned int leftMostN = newLanes.back();
527 for (
int l = 0; l < (
int) leftMostN - (
int) leftMostP; ++l) {
531 for (
unsigned int l = 0; l < noLanesMax; ++l) {
532 if (find(currLanes.begin(), currLanes.end(), l) == currLanes.end()) {
535 if (find(newLanes.begin(), newLanes.end(), l) == newLanes.end()) {
542 currLanes = newLanes;
546 }
else if (exp.
pos == 0) {
552 currLanes = exp.
lanes;
567 unsigned int maxLeft = (*i).lanes.back();
569 if (maxLeft < noLanesMax) {
576 unsigned int maxRight = (*i).lanes.front();