29 #ifndef __TERRALIB_GEOMETRY_INTERNAL_WKTPARSER_H
30 #define __TERRALIB_GEOMETRY_INTERNAL_WKTPARSER_H
36 #include <boost/bind/bind.hpp>
37 #include <boost/spirit/include/qi.hpp>
44 namespace qi = boost::spirit::qi;
45 namespace ascii = boost::spirit::ascii;
61 template<
typename Iterator>
62 class WKTParser :
public qi::grammar<Iterator, ascii::space_type>
95 empty = no_case[
"empty"] >> !char_;
188 #if BOOST_VERSION < 106000
566 qi::rule<Iterator, ascii::space_type>
empty;
Geometry is the root class of the geometries hierarchy, it follows OGC and ISO standards.
A class that implements the Grammar Rules for well known text (WKT) format for Geometry.
void createMultiPolygonM()
void createMultiPolygonZM()
void createMultiPointZM()
void createPolyhedralSurfaceM()
void createMultiLineStringZ()
void createPolyhedralSurface()
void createMultiPolygon()
Geometry * getGeometry()
It returns the geometry generated by the parser process.
void createMultiLineString()
void createGeometryCollectionZM()
void createGeometryCollectionZ()
void reset()
This method resets the Action class to original state.
void createGeometryCollection()
void createMultiLineStringZM()
void createMultiLineStringM()
void createPolyhedralSurfaceZM()
void createMultiPolygonZ()
void createGeometryCollectionM()
void createPolyhedralSurfaceZ()
void createLinearRingZM()
qi::rule< Iterator, ascii::space_type > multiLineStringZTxt
qi::rule< Iterator, ascii::space_type > polyhedralSurfaceTxt
void initCoordinates()
Initializes coordinates rules.
qi::rule< Iterator, ascii::space_type > geometryCollectionTxt
qi::rule< Iterator, ascii::space_type > multiPolygonTagged
qi::rule< Iterator, ascii::space_type > polygonMTxt
qi::rule< Iterator, ascii::space_type > triangleZTagged
qi::rule< Iterator, ascii::space_type > multiPolygonZMTagged
qi::rule< Iterator, ascii::space_type > lineStringZMTagged
qi::rule< Iterator, ascii::space_type > tinZTagged
qi::rule< Iterator, ascii::space_type > multiLineStringZMTagged
qi::rule< Iterator, ascii::space_type > tinZMTagged
qi::rule< Iterator, ascii::space_type > triangleZMTagged
void initTriangle()
Initializes triangle rules.
qi::rule< Iterator, ascii::space_type > tinMTagged
void initTIN()
Initializes TIN rules.
void initGeometryCollection()
Initializes geometry collection rules.
qi::rule< Iterator, ascii::space_type > multiPointTagged
void initMultiLine()
Initializes multi line rules.
void initGeometriesZ()
Initializes geometries z tagged rules.
qi::rule< Iterator, ascii::space_type > geometryCollectionMTagged
qi::rule< Iterator, ascii::space_type > linearRingZTxt
qi::rule< Iterator, ascii::space_type > linearRingTxt
qi::rule< Iterator, ascii::space_type > tinMTxt
qi::rule< Iterator, ascii::space_type > multiPointZTagged
qi::rule< Iterator, ascii::space_type > pointZMTxt
qi::rule< Iterator, ascii::space_type > polyhedralSurfaceZMTxt
qi::rule< Iterator, ascii::space_type > geometryCollectionZMTagged
qi::rule< Iterator, ascii::space_type > polyhedralSurfaceMTagged
qi::rule< Iterator, ascii::space_type > pointMTxt
void initMultiPolygon()
Initializes multi polygon rules.
void initPolygon()
Initializes polygon rules.
void initPolyhedralSurface()
Initializes polyhedral surface rules.
qi::rule< Iterator, ascii::space_type > lineStringTagged
qi::rule< Iterator, ascii::space_type > multiPolygonZTagged
qi::rule< Iterator, ascii::space_type > geometryTagged
qi::rule< Iterator, ascii::space_type > triangleZTxt
qi::rule< Iterator, ascii::space_type > pointMTagged
qi::rule< Iterator, ascii::space_type > polygonZTxt
qi::rule< Iterator, ascii::space_type > multiPolygonZMTxt
qi::rule< Iterator, ascii::space_type > polygonZMTagged
qi::rule< Iterator, ascii::space_type > polygonZTagged
qi::rule< Iterator, ascii::space_type > tinTagged
qi::rule< Iterator, ascii::space_type > multiPointTxt
qi::rule< Iterator, ascii::space_type > polyhedralSurfaceTagged
qi::rule< Iterator, ascii::space_type > triangleZMTxt
qi::rule< Iterator, ascii::space_type > polyhedralSurfaceMTxt
qi::rule< Iterator, ascii::space_type > pointZMTagged
qi::rule< Iterator, ascii::space_type > multiPolygonTxt
qi::rule< Iterator, ascii::space_type > multiLineStringZMTxt
qi::rule< Iterator, ascii::space_type > tinTxt
qi::rule< Iterator, ascii::space_type > tinZTxt
qi::rule< Iterator, ascii::space_type > geometry
qi::rule< Iterator, ascii::space_type > lineStringZTagged
qi::rule< Iterator, ascii::space_type > lineStringZTxt
qi::rule< Iterator, ascii::space_type > multiPointZTxt
qi::rule< Iterator, ascii::space_type > geometryCollectionZTagged
qi::rule< Iterator, ascii::space_type > polygonZMTxt
qi::rule< Iterator, ascii::space_type > polygonMTagged
qi::rule< Iterator, ascii::space_type > pointZTagged
WKTParser()
Default constructor.
qi::rule< Iterator, ascii::space_type > geometryZTagged
qi::rule< Iterator, ascii::space_type > linearRingMTxt
qi::rule< Iterator, ascii::space_type > coordinateZM
qi::rule< Iterator, ascii::space_type > multiLineStringZTagged
qi::rule< Iterator, ascii::space_type > lineStringZMTxt
qi::rule< Iterator, ascii::space_type > polyhedralSurfaceZTagged
qi::rule< Iterator, ascii::space_type > polyhedralSurfaceZTxt
qi::rule< Iterator, ascii::space_type > geometryZMTagged
qi::rule< Iterator, ascii::space_type > empty
qi::rule< Iterator, ascii::space_type > coordinateM
qi::rule< Iterator, ascii::space_type > pointTagged
qi::rule< Iterator, ascii::space_type > polygonTxt
qi::rule< Iterator, ascii::space_type > multiPolygonMTagged
qi::rule< Iterator, ascii::space_type > lineStringMTxt
qi::rule< Iterator, ascii::space_type > triangleTagged
qi::rule< Iterator, ascii::space_type > multiPolygonMTxt
qi::rule< Iterator, ascii::space_type > multiPolygonZTxt
qi::rule< Iterator, ascii::space_type > tinZMTxt
qi::rule< Iterator, ascii::space_type > triangleMTxt
qi::rule< Iterator, ascii::space_type > lineStringTxt
qi::rule< Iterator, ascii::space_type > multiLineStringMTagged
qi::rule< Iterator, ascii::space_type > multiPointZMTagged
qi::rule< Iterator, ascii::space_type > linearRingZMTxt
qi::rule< Iterator, ascii::space_type > pointZTxt
void initGeometriesZM()
Initializes geometries zm tagged rules.
void reset()
This method resets the Parser to original state.
qi::rule< Iterator, ascii::space_type > coordinateZ
qi::rule< Iterator, ascii::space_type > geometryMTagged
qi::rule< Iterator, ascii::space_type > geometryCollectionTagged
qi::rule< Iterator, ascii::space_type > triangleTxt
void initPoint()
Initializes point rules.
void initMultiPoint()
Initializes multi point rules.
void initGeometriesM()
Initializes geometries m tagged rules.
qi::rule< Iterator, ascii::space_type > triangleMTagged
qi::rule< Iterator, ascii::space_type > multiLineStringTxt
qi::rule< Iterator, ascii::space_type > geometryCollectionZMTxt
qi::rule< Iterator, ascii::space_type > geometryCollectionZTxt
qi::rule< Iterator, ascii::space_type > multiPointMTxt
qi::rule< Iterator, ascii::space_type > coordinate
qi::rule< Iterator, ascii::space_type > pointTxt
void initGeometries()
Initializes geometry tagged rules.
qi::rule< Iterator, ascii::space_type > multiPointZMTxt
qi::rule< Iterator, ascii::space_type > multiLineStringTagged
qi::rule< Iterator, ascii::space_type > lineStringMTagged
qi::rule< Iterator, ascii::space_type > geometryCollectionMTxt
Geometry * getGeometry()
It returns the geometry generated by the parser process.
qi::rule< Iterator, ascii::space_type > multiPointMTagged
void initLine()
Initializes line rules.
qi::rule< Iterator, ascii::space_type > polyhedralSurfaceZMTagged
qi::rule< Iterator, ascii::space_type > polygonTagged
qi::rule< Iterator, ascii::space_type > multiLineStringMTxt
A class that implements the semanthic actions to grammar rules for well known text (WKT) format for S...