8#ifndef FMTDATA_Hm_included
9#define FMTDATA_Hm_included
16#include <boost/serialization/serialization.hpp>
17#include <boost/serialization/nvp.hpp>
18#include <boost/serialization/map.hpp>
19#include <boost/serialization/vector.hpp>
20#include <boost/serialization/binary_object.hpp>
21#include <boost/serialization/export.hpp>
62 FMTData(
const std::vector<double>& lvalues,
64 const std::vector<std::string>& lsource);
73 FMTData(
const std::vector<double>& lvalues,
75 const std::vector<std::string>& lsource,
76 const std::vector<bool>& varstack);
166 operator std::string()
const;
173 FMTData operator * (
const double& factor)
const;
175 friend class boost::serialization::access;
183 template<
class Archive>
184 void serialize(Archive& ar,
const unsigned int version)
186 ar& BOOST_SERIALIZATION_NVP(ops);
187 ar& BOOST_SERIALIZATION_NVP(source);
188 ar& BOOST_SERIALIZATION_NVP(stacking);
189 ar& BOOST_SERIALIZATION_NVP(data);
192 std::vector<std::string>source;
193 std::vector<bool>stacking;
195 mutable std::unique_ptr<std::map<FMTDevelopment, double>> _cache;
196 mutable bool _agebase;
209 void allocateCache()
const;
214 void deAllocateCache()
const;
#define FMTEXPORT
Definition: FMTutility.h:125
Data of a yield holding the values, sources and operators used to compute complex yields.
Definition: FMTData.h:36
FMTExpression toExpression() const
Convert the data to an FMTExpression.
std::vector< const std::string * > getSources() const
Return pointers to the sources of the data.
std::vector< double > data
Definition: FMTData.h:38
void set(const double &value, const FMTYieldRequest &request, const bool &age_only) const
Cache the value of the data for a yield request.
bool cacheValue(const FMTYieldRequest &request) const
Return true if the value for a yield request is cached.
std::vector< std::string > getSourcesCopy() const
Return a copy of the sources of the data.
double get(const FMTYieldRequest &request) const
Get the value of the data for a yield request.
~FMTData()=default
Default destructor for FMTData.
FMTData(const std::vector< double > &lvalues, const FMTyieldparserop &lops, const std::vector< std::string > &lsource, const std::vector< bool > &varstack)
Construct a FMTData from values, an operator, sources and a stacking.
bool nullData() const
Return true if the data is null.
std::vector< const double * > getValues() const
Return pointers to the values of the data.
FMTyieldparserop getOp() const
Return the yield parser operator of the data.
FMTData()
Default constructor for FMTData.
FMTData(const FMTData &rhs)
Copy constructor for FMTData.
FMTData(const std::vector< double > &lvalues, const FMTyieldparserop &lops, const std::vector< std::string > &lsource)
Construct a FMTData from values, an operator and sources.
void clearCache()
Clear the cached values of the data.
bool constant() const
Return true if the data is constant.
Base class of FMTActualDevelopment and FMTFuturDevelopment representing a forest stand.
Definition: FMTDevelopment.h:44
Mathematical expression evaluated with the shunting yard algorithm, used in yields and outputs.
Definition: FMTExpression.h:23
Request for yield values using a development and optionally a graph vertex.
Definition: FMTYieldRequest.h:37
The Core namespace provides classes for simulating stands/strata growth/harvest through time.
Definition: FMTAction.h:34
FMTyieldparserop
Enumerator describing the operators usable in the yield section.
Definition: FMTutility.h:74