8#ifndef FMTTIMEYIELDHANDLER_Hm_included
9#define FMTTIMEYIELDHANDLER_Hm_included
14#include <boost/serialization/serialization.hpp>
15#include <boost/serialization/nvp.hpp>
40 virtual operator std::string()
const;
77 virtual void setYieldValues(
const std::string& yldname,
const int& startingperiod,
const std::vector<double>& values);
92 virtual bool pushData(
const std::string& yld,
const double& value);
106 virtual std::unique_ptr<FMTYieldHandler>
clone()
const;
145 virtual const FMTData&
at(
const std::string& yldname)
const;
170 virtual std::map<std::string, std::vector<double>>
getAllYieldsData(
const int& maxbase)
const;
178 virtual std::unique_ptr<FMTYieldHandler>
getFromFactor(
const double& factor,
179 std::vector<std::string>yieldnames = std::vector<std::string>())
const;
181 friend class boost::serialization::access;
189 template<
class Archive>
190 void serialize(Archive& ar,
const unsigned int version)
192 ar& boost::serialization::make_nvp(
"FMTyieldhandler", boost::serialization::base_object<FMTYieldHandler>(*
this));
193 ar& BOOST_SERIALIZATION_NVP(m_elements);
195 std::map<std::string, FMTData, cmpYieldString>m_elements;
#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
Core class holding, as a boost dynamic bitset, which theme attributes are part of a mask.
Definition: FMTMask.h:96
Yield handler for time based yields, indexed by period.
Definition: FMTTimeYieldHandler.h:25
virtual double get(const std::string &yld, const FMTYieldRequest &request) const
Get the value of a yield for a request.
virtual std::vector< std::string > getYieldNames() const
Return the yield names of the handler.
~FMTTimeYieldHandler()=default
Default destructor for FMTTimeYieldHandler.
virtual std::unique_ptr< FMTYieldHandler > clone() const
Clone the time yield handler.
virtual bool empty() const
Return true if the handler is empty.
virtual std::unique_ptr< FMTYieldHandler > getFromFactor(const double &factor, std::vector< std::string >yieldnames=std::vector< std::string >()) const
Multiply the handler by a factor and return a new handler.
virtual const FMTData & at(const std::string &yldname) const
Access the data of a yield.
virtual bool containsYield(const std::string &yldname) const
Return true if the handler contains a given yield.
virtual std::map< std::string, std::vector< double > > getAllYieldsData(const int &maxbase) const
Return all the yield data up to a maximum base age.
virtual FMTData & operator[](const std::string &yldname)
Access the data of a yield.
FMTTimeYieldHandler()=default
Default constructor for FMTTimeYieldHandler.
virtual bool pushData(const std::string &yld, const FMTData &data)
Push data for a yield.
virtual double getLastValue(const std::string yld) const
Return the last value of a yield.
virtual FMTyldtype getType() const
Return the type of the yield handler.
FMTTimeYieldHandler(const FMTTimeYieldHandler &rhs)=default
Copy constructor for FMTTimeYieldHandler.
virtual bool pushData(const std::string &yld, const double &value)
Push a value for a yield.
FMTTimeYieldHandler(const FMTMask &p_mask)
Construct a time yield handler from a mask.
virtual void clearCache()
Clear the cache of the handler.
virtual void setYieldValues(const std::string &yldname, const int &startingperiod, const std::vector< double > &values)
Set the values for a given yield name.
virtual size_t size() const
Return the number of yields in the handler.
Base class for yield handlers, holding a mask and the base ages of the yields.
Definition: FMTYieldHandler.h:80
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
FMTyldtype
Enumerator describing the type of a yield (age, time, complex, model).
Definition: FMTutility.h:62