remove depth of nested block
This commit is contained in:
parent
4bc8562cd0
commit
afd3599a9c
@ -93,11 +93,15 @@ bool XMLParser::Parse()
|
|||||||
|
|
||||||
InputRestrictionContainer XMLParser::ReadXMLRestriction()
|
InputRestrictionContainer XMLParser::ReadXMLRestriction()
|
||||||
{
|
{
|
||||||
InputRestrictionContainer restriction;
|
|
||||||
std::string except_tag_string;
|
|
||||||
|
|
||||||
if (xmlTextReaderIsEmptyElement(inputReader) != 1)
|
InputRestrictionContainer restriction;
|
||||||
|
|
||||||
|
if (xmlTextReaderIsEmptyElement(inputReader) == 1)
|
||||||
{
|
{
|
||||||
|
return restriction;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string except_tag_string;
|
||||||
const int depth = xmlTextReaderDepth(inputReader);
|
const int depth = xmlTextReaderDepth(inputReader);
|
||||||
while (xmlTextReaderRead(inputReader) == 1)
|
while (xmlTextReaderRead(inputReader) == 1)
|
||||||
{
|
{
|
||||||
@ -106,25 +110,25 @@ InputRestrictionContainer XMLParser::ReadXMLRestriction()
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const int childDepth = xmlTextReaderDepth(inputReader);
|
const int child_depth = xmlTextReaderDepth(inputReader);
|
||||||
xmlChar *childName = xmlTextReaderName(inputReader);
|
xmlChar *child_name = xmlTextReaderName(inputReader);
|
||||||
if (childName == NULL)
|
if (child_name == NULL)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (depth == childDepth && child_type == 15 &&
|
if (depth == child_depth && child_type == 15 &&
|
||||||
xmlStrEqual(childName, (const xmlChar *)"relation") == 1)
|
xmlStrEqual(child_name, (const xmlChar *)"relation") == 1)
|
||||||
{
|
{
|
||||||
xmlFree(childName);
|
xmlFree(child_name);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (child_type != 1)
|
if (child_type != 1)
|
||||||
{
|
{
|
||||||
xmlFree(childName);
|
xmlFree(child_name);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (xmlStrEqual(childName, (const xmlChar *)"tag") == 1)
|
if (xmlStrEqual(child_name, (const xmlChar *)"tag") == 1)
|
||||||
{
|
{
|
||||||
xmlChar *k = xmlTextReaderGetAttribute(inputReader, (const xmlChar *)"k");
|
xmlChar *k = xmlTextReaderGetAttribute(inputReader, (const xmlChar *)"k");
|
||||||
xmlChar *value = xmlTextReaderGetAttribute(inputReader, (const xmlChar *)"v");
|
xmlChar *value = xmlTextReaderGetAttribute(inputReader, (const xmlChar *)"v");
|
||||||
@ -150,7 +154,7 @@ InputRestrictionContainer XMLParser::ReadXMLRestriction()
|
|||||||
xmlFree(value);
|
xmlFree(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (xmlStrEqual(childName, (const xmlChar *)"member") == 1)
|
else if (xmlStrEqual(child_name, (const xmlChar *)"member") == 1)
|
||||||
{
|
{
|
||||||
xmlChar *ref = xmlTextReaderGetAttribute(inputReader, (const xmlChar *)"ref");
|
xmlChar *ref = xmlTextReaderGetAttribute(inputReader, (const xmlChar *)"ref");
|
||||||
if (ref != NULL)
|
if (ref != NULL)
|
||||||
@ -188,10 +192,10 @@ InputRestrictionContainer XMLParser::ReadXMLRestriction()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
xmlFree(childName);
|
xmlFree(child_name);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (ShouldIgnoreRestriction(except_tag_string))
|
if (ShouldIgnoreRestriction(except_tag_string))
|
||||||
{
|
{
|
||||||
restriction.fromWay = UINT_MAX; // workaround to ignore the restriction
|
restriction.fromWay = UINT_MAX; // workaround to ignore the restriction
|
||||||
@ -214,29 +218,29 @@ ExtractionWay XMLParser::ReadXMLWay()
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const int childDepth = xmlTextReaderDepth(inputReader);
|
const int child_depth = xmlTextReaderDepth(inputReader);
|
||||||
xmlChar *childName = xmlTextReaderName(inputReader);
|
xmlChar *child_name = xmlTextReaderName(inputReader);
|
||||||
if (childName == NULL)
|
if (child_name == NULL)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (depth == childDepth && child_type == 15 &&
|
if (depth == child_depth && child_type == 15 &&
|
||||||
xmlStrEqual(childName, (const xmlChar *)"way") == 1)
|
xmlStrEqual(child_name, (const xmlChar *)"way") == 1)
|
||||||
{
|
{
|
||||||
xmlChar *id = xmlTextReaderGetAttribute(inputReader, (const xmlChar *)"id");
|
xmlChar *id = xmlTextReaderGetAttribute(inputReader, (const xmlChar *)"id");
|
||||||
way.id = stringToUint((char *)id);
|
way.id = stringToUint((char *)id);
|
||||||
xmlFree(id);
|
xmlFree(id);
|
||||||
xmlFree(childName);
|
xmlFree(child_name);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (child_type != 1)
|
if (child_type != 1)
|
||||||
{
|
{
|
||||||
xmlFree(childName);
|
xmlFree(child_name);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (xmlStrEqual(childName, (const xmlChar *)"tag") == 1)
|
if (xmlStrEqual(child_name, (const xmlChar *)"tag") == 1)
|
||||||
{
|
{
|
||||||
xmlChar *k = xmlTextReaderGetAttribute(inputReader, (const xmlChar *)"k");
|
xmlChar *k = xmlTextReaderGetAttribute(inputReader, (const xmlChar *)"k");
|
||||||
xmlChar *value = xmlTextReaderGetAttribute(inputReader, (const xmlChar *)"v");
|
xmlChar *value = xmlTextReaderGetAttribute(inputReader, (const xmlChar *)"v");
|
||||||
@ -254,7 +258,7 @@ ExtractionWay XMLParser::ReadXMLWay()
|
|||||||
xmlFree(value);
|
xmlFree(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (xmlStrEqual(childName, (const xmlChar *)"nd") == 1)
|
else if (xmlStrEqual(child_name, (const xmlChar *)"nd") == 1)
|
||||||
{
|
{
|
||||||
xmlChar *ref = xmlTextReaderGetAttribute(inputReader, (const xmlChar *)"ref");
|
xmlChar *ref = xmlTextReaderGetAttribute(inputReader, (const xmlChar *)"ref");
|
||||||
if (ref != NULL)
|
if (ref != NULL)
|
||||||
@ -263,7 +267,7 @@ ExtractionWay XMLParser::ReadXMLWay()
|
|||||||
xmlFree(ref);
|
xmlFree(ref);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
xmlFree(childName);
|
xmlFree(child_name);
|
||||||
}
|
}
|
||||||
return way;
|
return way;
|
||||||
}
|
}
|
||||||
@ -304,26 +308,26 @@ ImportNode XMLParser::ReadXMLNode()
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const int childDepth = xmlTextReaderDepth(inputReader);
|
const int child_depth = xmlTextReaderDepth(inputReader);
|
||||||
xmlChar *childName = xmlTextReaderName(inputReader);
|
xmlChar *child_name = xmlTextReaderName(inputReader);
|
||||||
if (childName == NULL)
|
if (child_name == NULL)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (depth == childDepth && child_type == 15 &&
|
if (depth == child_depth && child_type == 15 &&
|
||||||
xmlStrEqual(childName, (const xmlChar *)"node") == 1)
|
xmlStrEqual(child_name, (const xmlChar *)"node") == 1)
|
||||||
{
|
{
|
||||||
xmlFree(childName);
|
xmlFree(child_name);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (child_type != 1)
|
if (child_type != 1)
|
||||||
{
|
{
|
||||||
xmlFree(childName);
|
xmlFree(child_name);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (xmlStrEqual(childName, (const xmlChar *)"tag") == 1)
|
if (xmlStrEqual(child_name, (const xmlChar *)"tag") == 1)
|
||||||
{
|
{
|
||||||
xmlChar *k = xmlTextReaderGetAttribute(inputReader, (const xmlChar *)"k");
|
xmlChar *k = xmlTextReaderGetAttribute(inputReader, (const xmlChar *)"k");
|
||||||
xmlChar *value = xmlTextReaderGetAttribute(inputReader, (const xmlChar *)"v");
|
xmlChar *value = xmlTextReaderGetAttribute(inputReader, (const xmlChar *)"v");
|
||||||
@ -341,7 +345,7 @@ ImportNode XMLParser::ReadXMLNode()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
xmlFree(childName);
|
xmlFree(child_name);
|
||||||
}
|
}
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user