FMT 0.9.8
Forest management tools for forest planning
|
#include <FMTparser.hpp>
Public Member Functions | |
FMTparser () | |
FMTparser (const FMTparser &rhs) | |
FMTparser & | operator= (const FMTparser &rhs) |
virtual | ~FMTparser ()=default |
std::time_t | getmostrecentfiletime () const |
void | setheader (const std::string &header) |
bool | tryopening (const std::ifstream &stream, const std::string &location) const |
bool | tryopening (std::ofstream &stream, const std::string &location) const |
bool | isvalidfile (const std::string &location) const |
bool | isvalid (const std::string &line) const |
std::vector< std::string > | regexloop (const boost::regex &cutregex, std::string &str) const |
std::vector< std::string > | spliter (std::string strmask, const boost::regex &xspliter) const |
void | clearcomments (std::string &line) |
std::string | upper (const std::string &lowercases) const |
std::string | getcleanline (std::ifstream &stream) |
std::queue< std::string > | tryinclude (const std::string &line, const std::vector< Core::FMTtheme > &themes, const Core::FMTconstants &cons) |
std::string | returninclude (const std::string &line, const std::vector< Core::FMTtheme > &themes, const Core::FMTconstants &cons) |
bool | getforloops (std::string &line, const std::vector< Core::FMTtheme > &themes, const Core::FMTconstants &cons, std::vector< std::string > &allvalues, std::string &target) |
std::string | getcleanlinewfor (std::ifstream &stream, const std::vector< Core::FMTtheme > &themes, const Core::FMTconstants &cons) |
bool | isnum (std::string value) const |
bool | isnum (const std::string &value, const Core::FMTconstants &constant, bool throwerror=true) const |
template<typename T > | |
T | getnum (const std::string &value, const Core::FMTconstants &constant, int period=0) const |
template<typename T > | |
T | getnum (const std::string &value, bool omitnumtest=false) const |
template<typename T > | |
bool | tryfillnumber (T &number, const std::string &value, const Core::FMTconstants &constant, int period=0) const |
template<typename T > | |
Core::FMTbounds< T > | bounds (const Core::FMTconstants &constants, const std::string &value, const std::string &ope, Core::FMTsection section) const |
GDALDataset * | createOGRdataset (std::string location=std::string(), std::string gdaldrivername="CSV") const |
OGRLayer * | createlayer (GDALDataset *dataset, const std::string &name, std::vector< std::string > creationoptions=std::vector< std::string >()) const |
std::vector< std::string > | getGDALvectordrivernames (bool testcreation=true) const |
std::vector< std::string > | getGDALrasterdrivernames (bool testcreation=true) const |
std::vector< std::vector< std::string > > | getGDALvectordriverextensions (bool testcreation=true) const |
std::vector< std::vector< std::string > > | getGDALrasterdriverextensions (bool testcreation=true) const |
Public Member Functions inherited from Core::FMTobject | |
FMTobject () | |
virtual | ~FMTobject () |
FMTobject (const std::shared_ptr< Exception::FMTexceptionhandler > exhandler) | |
FMTobject (const FMTobject &rhs) | |
FMTobject & | operator= (const FMTobject &rhs) |
virtual void | passinlogger (const std::shared_ptr< Logging::FMTlogger > &logger) |
void | passinexceptionhandler (const std::shared_ptr< Exception::FMTexceptionhandler > &exhandler) |
void | redirectlogtofile (const std::string &location) |
virtual void | setdefaultlogger () |
virtual void | setquietlogger () |
virtual void | settasklogger () |
virtual void | setdebuglogger () |
void | setdefaultexceptionhandler () |
void | setquietexceptionhandler () |
void | setdebugexceptionhandler () |
void | setfreeexceptionhandler () |
void | disablenestedexceptions () |
void | enablenestedexceptions () |
void | seterrorstowarnings (const std::vector< Exception::FMTexc > &errors) |
void | setmaxwarningsbeforesilenced (const size_t &maxwarningcount) |
Static Public Attributes | |
static const boost::regex | rxseparator |
A regex for splitting general string. | |
Protected Member Functions | |
void | setsection (const Core::FMTsection §ion) const |
std::vector< GDALDriver * > | getallGDALdrivers (const char *spatialtype, bool testcreation=true) const |
std::vector< std::vector< std::string > > | getGDALextensions (const char *spatialtype, bool testcreation=true) const |
void | setcategories (GDALRasterBand *band, const std::vector< std::string > &categories) const |
OGRCoordinateTransformation * | getprojtransform (OGRLayer *baselayer, bool fittoforel=true) const |
GDALDataset * | gettransformmemlayercopy (OGRLayer *baselayer, const OGRSpatialReference *newreference, const std::string &fieldname) const |
std::unique_ptr< OGRSpatialReference > | getFORELspatialref () const |
template<typename T > | |
GDALDataset * | createdataset (const std::string &location, const Spatial::FMTlayer< T > &layer, const int datatypeid, std::string format="GTiff") const |
GDALDataset * | getdataset (const std::string &location) const |
GDALDataset * | getvectordataset (const std::string &location) const |
OGRLayer * | getlayer (GDALDataset *dataset, int id) const |
GDALRasterBand * | getband (GDALDataset *dataset, int bandid=1) const |
GDALRasterBand * | createband (GDALDataset *dataset, const std::vector< std::string > &categories, int bandid=1) const |
std::vector< std::string > | getcat (GDALDataset *dataset, int bandid=1) const |
GDALRasterBand * | getoverview (GDALRasterBand *band, int view=1) const |
void | getWSfields (OGRLayer *layer, std::map< int, int > &themes, int &age, int &area, int &lock, std::string agefield="", std::string areafield="", std::string lockfield="") const |
GDALDataset * | createvectormemoryds () const |
std::array< std::string, 5 > | getbaseoperators () const |
std::vector< std::string > | sameas (const std::string &allset) const |
std::map< Core::FMTsection, std::string > | getprimary (const std::string &primarylocation) |
bool | isyld (const Core::FMTyields &ylds, const std::string &value, Core::FMTsection section) const |
bool | isact (Core::FMTsection section, const std::vector< Core::FMTaction > &actions, std::string action) const |
std::string | setspecs (Core::FMTsection section, Core::FMTkwor key, const Core::FMTyields &ylds, const Core::FMTconstants &constants, std::vector< Core::FMTspec > &specs, const std::string &line) |
std::string | setspec (Core::FMTsection section, Core::FMTkwor key, const Core::FMTyields &ylds, const Core::FMTconstants &constants, Core::FMTspec &spec, const std::string &line) |
Core::FMTsection | from_extension (const std::string &ext) const |
std::vector< std::vector< std::string > > | readcsv (const std::string &location, const char &separator) |
Protected Member Functions inherited from Core::FMTobject | |
template<class Archive > | |
void | forcesave (Archive &ar, const unsigned int version) const |
template<class Archive > | |
void | forceload (Archive &ar, const unsigned int version) |
void | checksignals () const |
void | setCPLhandler () |
Protected Attributes | |
boost::recursive_mutex | mtx |
Mutex for multi-threading. | |
Core::FMTsection | _section |
The section in which the child class is in. | |
int | _constreplacement |
Number of constant replaced by a numerical number. | |
int | _line |
Line id at which the parser is reading the values. | |
std::string | _comment |
Comment found in the actual line read by the parser. | |
std::string | _location |
File location of the section read by the parser. | |
std::time_t | mostrecentfile |
The most recent file time read by this parser. | |
Static Protected Attributes | |
static const boost::regex | rxayld |
A regex for capturing age/period/yield specification. | |
static const boost::regex | rxaage |
A regex for capturing age specificaiton. | |
static const boost::regex | rxayldage |
A regex for capturing age or yield specification. | |
static const boost::regex | rxbounds |
A regex for capturing bounds for yield or age specification. | |
static const boost::regex | rxoperators |
A regex for capturing simple operators. | |
static const boost::regex | rxprimary |
A regex for capturing the primary file. | |
Static Protected Attributes inherited from Core::FMTobject | |
static std::shared_ptr< Exception::FMTexceptionhandler > | _exhandler |
A shared pointer to the exception handler. | |
static std::shared_ptr< Logging::FMTlogger > | _logger |
A shared pointer to the logger. | |
Additional Inherited Members | |
Static Public Member Functions inherited from Core::FMTobject | |
static std::string | getruntimelocation () |
static unsigned long long | getavailablememory () |
Static Protected Member Functions inherited from Core::FMTobject | |
static std::chrono::time_point< std::chrono::high_resolution_clock > | getclock () |
template<class chrono > | |
static double | getduration (const std::chrono::time_point< std::chrono::high_resolution_clock > &startclock) |
static std::string | getdurationinseconds (const std::chrono::time_point< std::chrono::high_resolution_clock > &startclock) |
The FMTparser is the main parent class of all the other FMTparser available in FMT. It has alot of usefull function common to all parser for validation and error throw when turning a std::string to something usefull in FMT.
Parser::FMTparser::FMTparser | ( | ) |
Default constructor for FMTparser.
|
virtualdefault |
Default destructor for FMTparser.
Core::FMTbounds< T > Parser::FMTparser::bounds | ( | const Core::FMTconstants & | constants, |
const std::string & | value, | ||
const std::string & | ope, | ||
Core::FMTsection | section | ||
) | const |
Templated function to get a FMTbounds from a (value) base on constants and a (section).
void Parser::FMTparser::clearcomments | ( | std::string & | line | ) |
Clear comments from a line and fill up the _comment private value.
|
protected |
Create a GDALrasterband in a GDALdataset where you can add categories.
|
protected |
The function create an empty GDALDataset for a given FMTlayer.
OGRLayer * Parser::FMTparser::createlayer | ( | GDALDataset * | dataset, |
const std::string & | name, | ||
std::vector< std::string > | creationoptions = std::vector< std::string >() |
||
) | const |
Create a layer with from a dataset, it will delete layer with the same name before creation if it exist in the dataset
GDALDataset * Parser::FMTparser::createOGRdataset | ( | std::string | location = std::string() , |
std::string | gdaldrivername = "CSV" |
||
) | const |
Will Create a OGR vector file based on a given drivername and a location.
|
protected |
|
protected |
Return the FMTsection given the extension of the file.
|
protected |
Return a vector of GDAL drivers for a given spatialtype (raster/vector)
|
protected |
Open a GDALrasterband from a given GDALdataset and a (bandid).
|
protected |
Gives a vector of operators normaly found in the different sections.
|
protected |
Get categories of a GDALdataset for a given (bandid).
std::string Parser::FMTparser::getcleanline | ( | std::ifstream & | stream | ) |
Clean a line and make it ready to be read by a parser.
std::string Parser::FMTparser::getcleanlinewfor | ( | std::ifstream & | stream, |
const std::vector< Core::FMTtheme > & | themes, | ||
const Core::FMTconstants & | cons | ||
) |
Get a clean line and consider for loops when reading the file.
|
protected |
Open in readonly a GDALdataset from a given (location), will throw if anything went wrong.
|
protected |
Return and OGRspatialReference corresponding to the one used for FORELs in Quebec.
bool Parser::FMTparser::getforloops | ( | std::string & | line, |
const std::vector< Core::FMTtheme > & | themes, | ||
const Core::FMTconstants & | cons, | ||
std::vector< std::string > & | allvalues, | ||
std::string & | target | ||
) |
Fill up the for loops queue.
|
protected |
Return a vector(organize the extentions by drivers) of vector of GDAL extensions accepted for the given spatialtype.
std::vector< std::vector< std::string > > Parser::FMTparser::getGDALrasterdriverextensions | ( | bool | testcreation = true | ) | const |
Return a vector(organize the extentions by drivers) of vector of GDAL raster driver extensions
std::vector< std::string > Parser::FMTparser::getGDALrasterdrivernames | ( | bool | testcreation = true | ) | const |
Return a vector of GDAL raster driver names
std::vector< std::vector< std::string > > Parser::FMTparser::getGDALvectordriverextensions | ( | bool | testcreation = true | ) | const |
Return a vector(organize the extentions by drivers) of vector of GDAL vector driver extensions
std::vector< std::string > Parser::FMTparser::getGDALvectordrivernames | ( | bool | testcreation = true | ) | const |
Return a vector of GDAL vector driver names
|
protected |
Open a GDALlayer from a vector GDALdataset for a given layer (id) and a actual (dataset), will throw if anything went wrong.
std::time_t Parser::FMTparser::getmostrecentfiletime | ( | ) | const |
Get the most recentfiletime of the files read by ther parser.
T Parser::FMTparser::getnum | ( | const std::string & | value, |
bool | omitnumtest = false |
||
) | const |
Template function to get a numeric value from a string (value).
T Parser::FMTparser::getnum | ( | const std::string & | value, |
const Core::FMTconstants & | constant, | ||
int | period = 0 |
||
) | const |
Template function to get a numeric value from a string (value) based on constant and period.
|
protected |
Get an overview of a GDALraserband.
|
protected |
Using a primaryfile it returns the path to the different sections file locations.
|
protected |
Create a memory layer with a new int field named fieldname based on forel. Based on the baselayer.
|
protected |
Create a memory layer with a new int field named fieldname based on forel. Based on the baselayer. With a new spatial reference or can be the same has baselayer.
|
protected |
Open in readonly a GDALdataset from a given (location) of a vector file, will throw if anything went wrong.
|
protected |
Will fill up all the fields id of the themes,age,area,lock of a given (layer).
|
protected |
Test if a value (action) is actualy an action.
bool Parser::FMTparser::isnum | ( | const std::string & | value, |
const Core::FMTconstants & | constant, | ||
bool | throwerror = true |
||
) | const |
Return true if the value is a number else it will raise (if throwerror = true) being non valid number.
bool Parser::FMTparser::isnum | ( | std::string | value | ) | const |
Return true if the value is a number.
bool Parser::FMTparser::isvalid | ( | const std::string & | line | ) | const |
Check if line is valid and clean it.
bool Parser::FMTparser::isvalidfile | ( | const std::string & | location | ) | const |
Check if a file location is valid.
|
protected |
Test if a value is actualy a yield.
Default copy assignment for FMTparser.
|
protected |
Read a csv file from a (location) using a (separator) and returns a vector of vector of lines.
std::vector< std::string > Parser::FMTparser::regexloop | ( | const boost::regex & | cutregex, |
std::string & | str | ||
) | const |
Capture a forloops from a line and return the variables to loop on.
std::string Parser::FMTparser::returninclude | ( | const std::string & | line, |
const std::vector< Core::FMTtheme > & | themes, | ||
const Core::FMTconstants & | cons | ||
) |
return the next line to be read by the parser considering included files.
|
protected |
Used to deal with the _SAMEAS keyword.
|
protected |
Write the categories in the band information
void Parser::FMTparser::setheader | ( | const std::string & | header | ) |
Taking a string has argument set this string has an header in write mode when the file is opened. It will replace the _comment attribute with the header string.
|
protected |
It sets the section member of the FMTobject.
|
protected |
Set the specifications of a given (spec) and return the rest of line.
|
protected |
Set the specifications of a given or multiple (specs) and return the rest of line.
std::vector< std::string > Parser::FMTparser::spliter | ( | std::string | strmask, |
const boost::regex & | xspliter | ||
) | const |
Split a string into multiple strings.
bool Parser::FMTparser::tryfillnumber | ( | T & | number, |
const std::string & | value, | ||
const Core::FMTconstants & | constant, | ||
int | period = 0 |
||
) | const |
Try to get a number from a string (value) return false if failed.
std::queue< std::string > Parser::FMTparser::tryinclude | ( | const std::string & | line, |
const std::vector< Core::FMTtheme > & | themes, | ||
const Core::FMTconstants & | cons | ||
) |
Read an included file and put the results into a queue.
bool Parser::FMTparser::tryopening | ( | const std::ifstream & | stream, |
const std::string & | location | ||
) | const |
Open a input stream at a given location.
bool Parser::FMTparser::tryopening | ( | std::ofstream & | stream, |
const std::string & | location | ||
) | const |
Open a output stream at a given location.
std::string Parser::FMTparser::upper | ( | const std::string & | lowercases | ) | const |
Convert a string to upper case string.
|
protected |
Comment found in the actual line read by the parser.
|
mutableprotected |
Number of constant replaced by a numerical number.
|
mutableprotected |
Line id at which the parser is reading the values.
|
mutableprotected |
File location of the section read by the parser.
|
mutableprotected |
The section in which the child class is in.
|
mutableprotected |
The most recent file time read by this parser.
|
mutableprotected |
Mutex for multi-threading.
|
staticprotected |
A regex for capturing age specificaiton.
|
staticprotected |
A regex for capturing age/period/yield specification.
|
staticprotected |
A regex for capturing age or yield specification.
|
staticprotected |
A regex for capturing bounds for yield or age specification.
|
staticprotected |
A regex for capturing simple operators.
|
staticprotected |
A regex for capturing the primary file.
|
static |
A regex for splitting general string.