FMT 1.2.0
Forest management tools for forest planning
Loading...
Searching...
No Matches
FMTYieldParser.h
Go to the documentation of this file.
1/*
2Copyright (c) 2019 Gouvernement du Qu�bec
3
4SPDX-License-Identifier: LiLiQ-R-1.1
5License-Filename: LICENSES/EN/LiLiQ-R11unicode.txt
6*/
7
8#ifndef FMTyieldparser_Hm_included
9#define FMTyieldparser_Hm_included
10
11#include "FMTParser.h"
12#include "FMTutility.h"
13#include <iterator>
14#include <boost/regex.h>
15#include <string>
16#include <vector>
17#include <utility>
18#include <memory>
19
20namespace Core
21{
22 class FMTYields;
23 class FMTConstants;
24 class FMTTheme;
25 class FMTData;
26 class FMTYieldModel;
27 class FMTYieldHandler;
28 class FMTMask;
29}
30
31
32namespace Parser
33{
34// DocString: FMTYieldParser
39 {
40 public:
41 // DocString: FMTYieldParser()
46 // DocString: ~FMTYieldParser()
50 ~FMTYieldParser() = default;
51 // DocString: FMTYieldParser(const FMTYieldParser&)
56 FMTYieldParser(const FMTYieldParser& rhs)=default;
57 // DocString: FMTYieldParser::FMTYieldParser=
63 FMTYieldParser& operator = (const FMTYieldParser& rhs)=default;
64 // DocString: FMTYieldParser::read
72 Core::FMTYields read(const std::vector<Core::FMTTheme>& themes,const Core::FMTConstants& constants,const std::string& location);
73 // DocString: FMTYieldParser::write
79 void write(const Core::FMTYields& yields,const std::string& location) const;
80 private:
81 // DocString: FMTYieldParser::m_rxyieldtype
83 const static boost::regex m_rxyieldtype;
84 // DocString: FMTYieldParser::m_rxcomplex
86 const static boost::regex m_rxcomplex;
87 // DocString: FMTYieldParser::m_rxeqs
89 const static boost::regex m_rxeqs;
90 // DocString: FMTYieldParser::m_rxdiscount
92 const static boost::regex m_rxdiscount;
93 // DocString: FMTYieldParser::m_rxpredictor
95 const static boost::regex m_rxpredictor;
97 const static boost::regex m_rxyieldsolo;
98 // DocString: FMTYieldParser::_getYldType
104 Core::FMTyldtype _getYldType(const std::string& value) const;
105 // DocString: FMTYieldParser::_getHandler
112 std::unique_ptr<Core::FMTYieldHandler> _getHandler(const Core::FMTMask& mask, const Core::FMTyldtype& yldtype) const;
113 // DocString: FMTYieldParser::_getYldCtype
119 Core::FMTyieldparserop _getYldCtype(const std::string& value) const;
120 // DocString: FMTYieldParser::_getYldUse
128 std::vector<std::string> _getYldUse(Core::FMTYields& yielddata,
129 std::vector<std::pair<Core::FMTMask,std::unique_ptr<Core::FMTYieldHandler>>>::iterator actualyield,
130 const std::vector<std::string>& values) const;
131 // DocString: FMTYieldParser::_setOveridedYlds
138 void _setOveridedYlds(Core::FMTYields& yielddata,
139 std::vector<std::pair<Core::FMTMask, std::unique_ptr<Core::FMTYieldHandler>>>::iterator actualyield,
140 const std::string& yld) const;
141 // DocString: FMTYieldParser::_checkPreExisting
146 void _checkPreExisting(const std::vector<std::string>& preexists) const;
147 // DocString: FMTYieldParser::_isFunction
153 bool _isFunction(const std::string& strfunction) const;
154 // DocString: FMTYieldParser::_getNumwithproportion
163 double _getNumwithproportion(const std::string& value,const Core::FMTConstants& constants,
164 const std::vector<double>& proportions, const int& location);
165 // DocString: FMTYieldParser::_getEq
174 Core::FMTData _getEq(const std::string& basestr,
175 const Core::FMTConstants& constants,
176 const Core::FMTYields& ylds,
177 const std::vector<Core::FMTTheme>& themes);
178 // DocString: FMTYieldParser::_cleanUp
185 void _cleanUp(Core::FMTYields& yields, const std::vector<Core::FMTTheme>& themes, const Core::FMTConstants& constants) const;
186 // DocString: FMTYieldParser::_getIndexValues
195 std::map<std::string, double> _getIndexValues(const Core::FMTMask& mask,
196 const std::vector<Core::FMTTheme>& themes,
197 const std::vector<std::string>&indexvalues, const Core::FMTConstants& constants) const;
198 // DocString: FMTYieldParser::_readYieldModel
206 std::unique_ptr<Core::FMTYieldModel> _readYieldModel(const std::string& modelname, std::vector<std::string>& modelYields,const Core::FMTMask& mainmask) const;
207 // DocString: FMTYieldParser::_cleanAll
214 void _cleanAll(Core::FMTYields& ylds, const std::vector<Core::FMTTheme>& themes, const Core::FMTConstants& constants) const;
215 };
216}
217#endif // FMTyieldparser_Hm_included
#define FMTEXPORT
Definition: FMTutility.h:125
Class holding the constants defined in the constants section of a model, used by the parsers.
Definition: FMTConstants.h:28
Data of a yield holding the values, sources and operators used to compute complex yields.
Definition: FMTData.h:36
Core class holding, as a boost dynamic bitset, which theme attributes are part of a mask.
Definition: FMTMask.h:96
FMTList containing multiple yield handlers as seen in the yield section, holding the information rela...
Definition: FMTYields.h:44
Main parent class of all the parsers in FMT.
Definition: FMTParser.h:72
Parser reading and writing yield sections into a FMTYields object.
Definition: FMTYieldParser.h:39
Core::FMTYields read(const std::vector< Core::FMTTheme > &themes, const Core::FMTConstants &constants, const std::string &location)
Read a yield file into a FMTYields object.
FMTYieldParser()
Default constructor for FMTYieldParser.
FMTYieldParser(const FMTYieldParser &rhs)=default
Copy constructor for FMTYieldParser.
~FMTYieldParser()=default
Default destructor for FMTYieldParser.
void write(const Core::FMTYields &yields, const std::string &location) const
Write a FMTYields object to a file.
The Core namespace provides classes for simulating stands/strata growth/harvest through time.
Definition: FMTAction.h:34
FMTyldtype
Enumerator describing the type of a yield (age, time, complex, model).
Definition: FMTutility.h:62
FMTyieldparserop
Enumerator describing the operators usable in the yield section.
Definition: FMTutility.h:74
Namespace handling all FMT's parsers. Everything related to I/O should be located in this namespace.
Definition: FMTActionParser.h:27