[Cmap-cvs] mp2mp mp_parser.cpp,1.8,1.9 mp_parser.h,1.7,1.8 mpmerge.cpp,1.2,1.3 mpsplit.cpp,1.1,1.2
Status: Beta
Brought to you by:
dyp
From: Denis P. <dy...@us...> - 2005-09-09 09:59:10
|
Update of /cvsroot/cmap/mp2mp In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2016 Modified Files: mp_parser.cpp mp_parser.h mpmerge.cpp mpsplit.cpp Log Message: Support comments in the end of file Do not use EndLevel Index: mp_parser.cpp =================================================================== RCS file: /cvsroot/cmap/mp2mp/mp_parser.cpp,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- mp_parser.cpp 28 Aug 2005 22:23:58 -0000 1.8 +++ mp_parser.cpp 9 Sep 2005 09:58:54 -0000 1.9 @@ -90,38 +90,40 @@ if (op.streetName.length() > 0) fprintf(f, "StreetDesc=%s\n", op.streetName.c_str()); if (op.house.length() > 0) - fprintf(f, "HouseName=%s\n", op.house.c_str()); + fprintf(f, "HouseNumber=%s\n", op.house.c_str()); if (op.direction) fprintf(f, "DirIndicator=1\n"); if (op.city) fprintf(f, "City=Y\n"); if (kind != op.kind && op.kind == kind::Point) { - for (std::list<Element>::iterator it2 = elements.begin(); it2 != elements.end(); it2++) { - point_t pt; - pt.x = 0.0; - pt.y = 0.0; - double count = 0.0; + unsigned int layerMax = op.layerMax > 0 ? op.layerMax : op.layerMin; + for (unsigned int i = op.layerMin; i <= layerMax; i++) { + for (std::list<Element>::iterator it2 = elements.begin(); it2 != elements.end(); it2++) { + point_t pt; + pt.x = 0.0; + pt.y = 0.0; + double count = 0.0; - for (std::list<point_t>::iterator it3 = (*it2).points.begin(); it3 != (*it2).points.end(); it3++) { - pt.x += (*it3).x; - pt.y += (*it3).y; - count += 1.0; - } + for (std::list<point_t>::iterator it3 = (*it2).points.begin(); it3 != (*it2).points.end(); it3++) { + pt.x += (*it3).x; + pt.y += (*it3).y; + count += 1.0; + } - pt.x /= count; - pt.y /= count; + pt.x /= count; + pt.y /= count; - unsigned int layerMax = op.layerMax > 0 ? op.layerMax : op.layerMin; - for (unsigned int i = op.layerMin; i <= layerMax; i++) { fprintf(f, "Data%d=", i); pt.print(f, is6Digit); fprintf(f, "\n"); } } } else { - for (std::list<Element>::iterator it2 = elements.begin(); it2 != elements.end(); it2++) - (*it2).print(f, op, is6Digit); + unsigned int layerMax = op.layerMax > 0 ? op.layerMax : op.layerMin; + for (unsigned int i = op.layerMin; i <= layerMax; i++) + for (std::list<Element>::iterator it2 = elements.begin(); it2 != elements.end(); it2++) + (*it2).print(f, op, is6Digit, i); } fprintf(f, "[END]\n"); fprintf(f, "\n"); @@ -169,17 +171,14 @@ fprintf(f, "\n"); } -void Element::print(FILE *f, const ObjectProp &op, bool is6Digit) { - unsigned int layerMax = op.layerMax > 0 ? op.layerMax : op.layerMin; - for (unsigned int i = op.layerMin; i <= layerMax; i++) { - fprintf(f, "Data%d=", i); - for (std::list<point_t>::iterator it = points.begin(); it != points.end(); it++) { - if (it != points.begin()) - fprintf(f, ","); - (*it).print(f, is6Digit); - } - fprintf(f, "\n"); +void Element::print(FILE *f, const ObjectProp &op, bool is6Digit, unsigned int _level) { + fprintf(f, "Data%d=", _level); + for (std::list<point_t>::iterator it = points.begin(); it != points.end(); it++) { + if (it != points.begin()) + fprintf(f, ","); + (*it).print(f, is6Digit); } + fprintf(f, "\n"); } void point_t::print(FILE *f, bool is6Digits) { @@ -399,6 +398,9 @@ rgn.attrs.push_back(a); } // Process region + if (ttype == TT_EOF) + return false; + if (ttype != '[') throw ParserException("'[' expected", t.lineno()); if (t.nextToken() != TT_WORD || (t.sval != "polyline" && t.sval != "polygon" && t.sval != "poi")) Index: mpmerge.cpp =================================================================== RCS file: /cvsroot/cmap/mp2mp/mpmerge.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- mpmerge.cpp 12 Jun 2005 06:58:32 -0000 1.2 +++ mpmerge.cpp 9 Sep 2005 09:58:54 -0000 1.3 @@ -45,7 +45,7 @@ Tokenizer t(f); - MPParser p(t); + mp::MPParser p(t, filename); try { while (p.parseObject()) @@ -59,8 +59,8 @@ if (copyHeader) p.map.printHeader(fo); - for (std::list<Rgn>::iterator it = p.map.rgns.begin(); it != p.map.rgns.end(); it++) { - Rgn &rgn = *it; + for (mp::Rgns::iterator it = p.map.rgns.begin(); it != p.map.rgns.end(); it++) { + mp::Rgn &rgn = *it; rgn.print(fo, true); } Index: mp_parser.h =================================================================== RCS file: /cvsroot/cmap/mp2mp/mp_parser.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- mp_parser.h 28 Aug 2005 22:23:58 -0000 1.7 +++ mp_parser.h 9 Sep 2005 09:58:54 -0000 1.8 @@ -24,7 +24,7 @@ int level; std::list<point_t> points; void print(FILE *f, bool is6Digit); - void print(FILE *f, const ObjectProp &op, bool is6Digit); + void print(FILE *f, const ObjectProp &op, bool is6Digit, unsigned int level); }; typedef std::list<Element> Elements; Index: mpsplit.cpp =================================================================== RCS file: /cvsroot/cmap/mp2mp/mpsplit.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- mpsplit.cpp 24 Apr 2005 19:59:43 -0000 1.1 +++ mpsplit.cpp 9 Sep 2005 09:58:54 -0000 1.2 @@ -17,7 +17,7 @@ Converter() { } - void process(FILE *f); + void process(FILE *f, const char *filename); void readConfig(const char *filename); }; @@ -99,19 +99,19 @@ copyFile(inFile, outFile); } -void Converter::process(FILE *f) { +void Converter::process(FILE *f, const char *filename) { Tokenizer t(f); - MPParser p(t); + mp::MPParser p(t, filename); while (p.parseObject()) ; mkdir("split_tmp"); - for (std::list<Rgn>::iterator iRgn = p.map.rgns.begin(); iRgn != p.map.rgns.end(); iRgn++) { + for (mp::Rgns::iterator iRgn = p.map.rgns.begin(); iRgn != p.map.rgns.end(); iRgn++) { std::string code; - for (std::list<Attr>::iterator iAttr = iRgn->attrs.begin(); iAttr != iRgn->attrs.end(); iAttr++) + for (mp::Attrs::iterator iAttr = iRgn->attrs.begin(); iAttr != iRgn->attrs.end(); iAttr++) if (iAttr->name == "CODE") code = iAttr->value; if (code.empty()) @@ -238,7 +238,7 @@ } try { - c.process(f); + c.process(f, inFile); } catch (ParserException &x) { fprintf(stderr, "%s:%d: %s\n", inFile, x.lineno(), x.what()); } |