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