Logo
Reference manual - version orea_version
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
InMemoryCubeBase< T > Class Template Reference

InMemoryCube stores the cube in memory using nested STL vectors. More...

#include <orea/cube/inmemorycube.hpp>

+ Inheritance diagram for InMemoryCubeBase< T >:

Public Member Functions

 InMemoryCubeBase (const Date &asof, const std::set< std::string > &ids, const vector< Date > &dates, Size samples, const T &t=T())
 default ctor
 
 InMemoryCubeBase ()
 default constructor
 
Size numIds () const override
 Return the length of each dimension.
 
Size numDates () const override
 
virtual Size samples () const override
 
const std::map< std::string, Size > & idsAndIndexes () const override
 Return a map of all ids and their position in the cube.
 
const std::vector< QuantLib::Date > & dates () const override
 Get the vector of dates for this cube.
 
QuantLib::Date asof () const override
 Return the asof date (T0 date)
 
- Public Member Functions inherited from NPVCube
 NPVCube ()
 default ctor
 
 NPVCube (NPVCube &)=delete
 Do not allow cube copying.
 
NPVCubeoperator= (NPVCube const &)=delete
 
virtual ~NPVCube ()
 dtor
 
virtual Size depth () const =0
 
const std::set< std::string > ids () const
 Get a set of all ids in the cube.
 
virtual Real getT0 (Size id, Size depth=0) const =0
 Get a T0 value from the cube using index.
 
virtual Real getT0 (const std::string &id, Size depth=0) const
 Get a T0 value from the cube using trade id.
 
virtual void setT0 (Real value, Size id, Size depth=0)=0
 Set a value in the cube using index.
 
virtual void setT0 (Real value, const std::string &id, Size depth=0)
 Set a value in the cube using trade id.
 
virtual Real get (Size id, Size date, Size sample, Size depth=0) const =0
 Get a value from the cube using index.
 
virtual void set (Real value, Size id, Size date, Size sample, Size depth=0)=0
 Set a value in the cube using index.
 
virtual Real get (const std::string &id, const QuantLib::Date &date, Size sample, Size depth=0) const
 Get a value from the cube using trade id and date.
 
virtual void set (Real value, const std::string &id, const QuantLib::Date &date, Size sample, Size depth=0)
 Set a value in the cube using trade id and date.
 
virtual void remove (Size id)
 
virtual void remove (Size id, Size sample)
 
Size getTradeIndex (const std::string &id) const
 

Protected Member Functions

void check (Size i, Size j, Size k, Size d) const
 
- Protected Member Functions inherited from NPVCube
virtual Size index (const std::string &id) const
 
virtual Size index (const QuantLib::Date &date) const
 

Protected Attributes

QuantLib::Date asof_
 
vector< QuantLib::Date > dates_
 
Size samples_
 
vector< T > t0Data_
 
vector< vector< vector< T > > > data_
 
std::map< std::string, Size > idIdx_
 

Detailed Description

template<typename T>
class ore::analytics::InMemoryCubeBase< T >

InMemoryCube stores the cube in memory using nested STL vectors.

InMemoryCube stores the cube in memory using nested STL vectors, this class is a template to allow both single and double precision implementations.

The use of nested STL vectors is adds a small memory overhead (~ 1 to 2%)