FMT 1.2.0
Forest management tools for forest planning
Loading...
Searching...
No Matches
FMTTimeYieldHandler.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 FMTTIMEYIELDHANDLER_Hm_included
9#define FMTTIMEYIELDHANDLER_Hm_included
10
11#include "FMTYieldHandler.h"
12#include "FMTData.h"
13#include <string>
14#include <boost/serialization/serialization.hpp>
15#include <boost/serialization/nvp.hpp>
16
17namespace Core
18{
19
20 // DocString: FMTTimeYieldHandler
25 {
26 public:
27 // DocString: FMTTimeYieldHandler::get
34 virtual double get(const std::string& yld, const FMTYieldRequest& request) const;
35 // DocString: FMTTimeYieldHandler::operator std::string
40 virtual operator std::string() const;
41 // DocString: ~FMTTimeYieldHandler()
46 // DocString: FMTTimeYieldHandler()
51 // DocString: FMTTimeYieldHandler(const FMTTimeYieldHandler&)
57 // DocString: FMTTimeYieldHandler::operator=
63 FMTTimeYieldHandler& operator = (const FMTTimeYieldHandler& rhs) = default;
64 // DocString: FMTTimeYieldHandler(const FMTMask&)
70 // DocString: FMTTimeYieldHandler::setYieldValues
77 virtual void setYieldValues(const std::string& yldname,const int& startingperiod,const std::vector<double>& values);
78 // DocString: FMTTimeYieldHandler::getLastValue
84 virtual double getLastValue(const std::string yld) const;
85 // DocString: FMTTimeYieldHandler::pushData(const std::string&, const double&)
92 virtual bool pushData(const std::string& yld, const double& value);
93 // DocString: FMTTimeYieldHandler::pushData(const std::string&, const FMTData&)
100 virtual bool pushData(const std::string& yld, const FMTData& data);
101 // DocString: FMTTimeYieldHandler::clone
106 virtual std::unique_ptr<FMTYieldHandler>clone() const;
107 // DocString: FMTTimeYieldHandler::operator==
113 virtual bool operator == (const FMTTimeYieldHandler& rhs) const;
114 // DocString: FMTTimeYieldHandler::empty
119 virtual bool empty() const;
120 // DocString: FMTTimeYieldHandler::size
125 virtual size_t size() const;
126 // DocString: FMTTimeYieldHandler::getType
131 virtual FMTyldtype getType() const;
132 // DocString: FMTTimeYieldHandler::operator[]
138 virtual FMTData& operator[](const std::string& yldname);
139 // DocString: FMTTimeYieldHandler::at
145 virtual const FMTData& at(const std::string& yldname) const;
146 // DocString: FMTTimeYieldHandler::containsYield
152 virtual bool containsYield(const std::string& yldname) const;
153 // DocString: FMTTimeYieldHandler::getYieldNames
158 virtual std::vector<std::string>getYieldNames() const;
159 // DocString: FMTTimeYieldHandler::clearCache
163 virtual void clearCache();
164 // DocString: FMTTimeYieldHandler::getAllYieldsData
170 virtual std::map<std::string, std::vector<double>>getAllYieldsData(const int& maxbase)const;
171 // DocString: FMTTimeYieldHandler::getFromFactor
178 virtual std::unique_ptr<FMTYieldHandler> getFromFactor(const double& factor,
179 std::vector<std::string>yieldnames = std::vector<std::string>()) const;
180 private:
181 friend class boost::serialization::access;
182 // DocString: FMTTimeYieldHandler::serialize
189 template<class Archive>
190 void serialize(Archive& ar, const unsigned int version)
191 {
192 ar& boost::serialization::make_nvp("FMTyieldhandler", boost::serialization::base_object<FMTYieldHandler>(*this));
193 ar& BOOST_SERIALIZATION_NVP(m_elements);
194 }
195 std::map<std::string, FMTData, cmpYieldString>m_elements;
196 };
197
198}
199
200#endif
#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