MADARA  3.2.3
madara::knowledge::rcw::PrefixTracker< T, VariableReference, RD, WR, typename std::enable_if< supports_get_value< T >::value &&supports_indexed_get_value< T >::value &&supports_size< T >::value &&supports_is_dirty< T >::value &&supports_is_all_dirty< T >::value &&supports_is_size_dirty< T >::value &&supports_indexed_is_dirty< T >::value >::type > Class Template Reference

Tracker that puts values into a multiple prefixed KnowledgeRecord. More...

#include <PrefixTracker.h>

Inheritance diagram for madara::knowledge::rcw::PrefixTracker< T, VariableReference, RD, WR, typename std::enable_if< supports_get_value< T >::value &&supports_indexed_get_value< T >::value &&supports_size< T >::value &&supports_is_dirty< T >::value &&supports_is_all_dirty< T >::value &&supports_is_size_dirty< T >::value &&supports_indexed_is_dirty< T >::value >::type >:
madara::knowledge::rcw::BaseTracker

Private Types

typedef std::decay< decltype(get_value(std::declval< T >)[0]))>::type V
 

Private Member Functions

 PrefixTracker (T *tracked, const std::string &prefix, KnowledgeBase &kb)
 
virtual void force_push (KnowledgeBase &kb)
 As push, but ignore any modification status tracking. More...
 
virtual const char * get_name () const
 Get name of MADARA variable. More...
 
virtual const void * get_tracked () const
 Get pointer to tracked object. More...
 
virtual void pull ()
 Override to implement pulling logic (from ref_) More...
 
virtual void push (KnowledgeBase &kb)
 Override to implement pushing logic (into ref_) More...
 
void update_elems ()
 Update knowledge base array so it matches dimensions of the tracked object. More...
 

Private Attributes

std::vector< VariableReferenceelems_
 The knowledge base to reference. More...
 
KnowledgeBase kb_
 prefix string to use More...
 
std::string prefix_
 Tracked std::vector. More...
 
T * tracked_
 

Static Private Attributes

static const bool can_read = RD
 
static const bool can_write = WR
 

Friends

class Transaction
 

Detailed Description

template<class T, bool RD, bool WR>
class madara::knowledge::rcw::PrefixTracker< T, VariableReference, RD, WR, typename std::enable_if< supports_get_value< T >::value &&supports_indexed_get_value< T >::value &&supports_size< T >::value &&supports_is_dirty< T >::value &&supports_is_all_dirty< T >::value &&supports_is_size_dirty< T >::value &&supports_indexed_is_dirty< T >::value >::type >

Tracker that puts values into a multiple prefixed KnowledgeRecord.

Used internally by Transaction. Not visible to normal users. Specialization of PrefixTracker for std::vector<Tracked<...>>

Definition at line 53 of file PrefixTracker.h.

Member Typedef Documentation

template<class T , bool RD, bool WR>
typedef std::decay<decltype(get_value(std::declval<T>)[0]))>::type madara::knowledge::rcw::PrefixTracker< T, VariableReference, RD, WR, typename std::enable_if< supports_get_value< T >::value &&supports_indexed_get_value< T >::value &&supports_size< T >::value &&supports_is_dirty< T >::value &&supports_is_all_dirty< T >::value &&supports_is_size_dirty< T >::value &&supports_indexed_is_dirty< T >::value >::type >::V
private

Definition at line 71 of file PrefixTracker.h.

Constructor & Destructor Documentation

template<class T , bool RD, bool WR>
madara::knowledge::rcw::PrefixTracker< T, VariableReference, RD, WR, typename std::enable_if< supports_get_value< T >::value &&supports_indexed_get_value< T >::value &&supports_size< T >::value &&supports_is_dirty< T >::value &&supports_is_all_dirty< T >::value &&supports_is_size_dirty< T >::value &&supports_indexed_is_dirty< T >::value >::type >::PrefixTracker ( T *  tracked,
const std::string &  prefix,
KnowledgeBase kb 
)
inlineprivate

Definition at line 76 of file PrefixTracker.h.

Member Function Documentation

template<class T , bool RD, bool WR>
virtual void madara::knowledge::rcw::PrefixTracker< T, VariableReference, RD, WR, typename std::enable_if< supports_get_value< T >::value &&supports_indexed_get_value< T >::value &&supports_size< T >::value &&supports_is_dirty< T >::value &&supports_is_all_dirty< T >::value &&supports_is_size_dirty< T >::value &&supports_indexed_is_dirty< T >::value >::type >::force_push ( KnowledgeBase kb)
inlineprivatevirtual

As push, but ignore any modification status tracking.

Implements madara::knowledge::rcw::BaseTracker.

Definition at line 145 of file PrefixTracker.h.

template<class T , bool RD, bool WR>
virtual const char* madara::knowledge::rcw::PrefixTracker< T, VariableReference, RD, WR, typename std::enable_if< supports_get_value< T >::value &&supports_indexed_get_value< T >::value &&supports_size< T >::value &&supports_is_dirty< T >::value &&supports_is_all_dirty< T >::value &&supports_is_size_dirty< T >::value &&supports_indexed_is_dirty< T >::value >::type >::get_name ( ) const
inlineprivatevirtual

Get name of MADARA variable.

Implements madara::knowledge::rcw::BaseTracker.

Definition at line 160 of file PrefixTracker.h.

template<class T , bool RD, bool WR>
virtual const void* madara::knowledge::rcw::PrefixTracker< T, VariableReference, RD, WR, typename std::enable_if< supports_get_value< T >::value &&supports_indexed_get_value< T >::value &&supports_size< T >::value &&supports_is_dirty< T >::value &&supports_is_all_dirty< T >::value &&supports_is_size_dirty< T >::value &&supports_indexed_is_dirty< T >::value >::type >::get_tracked ( ) const
inlineprivatevirtual

Get pointer to tracked object.

Implements madara::knowledge::rcw::BaseTracker.

Definition at line 165 of file PrefixTracker.h.

template<class T , bool RD, bool WR>
virtual void madara::knowledge::rcw::PrefixTracker< T, VariableReference, RD, WR, typename std::enable_if< supports_get_value< T >::value &&supports_indexed_get_value< T >::value &&supports_size< T >::value &&supports_is_dirty< T >::value &&supports_is_all_dirty< T >::value &&supports_is_size_dirty< T >::value &&supports_indexed_is_dirty< T >::value >::type >::pull ( )
inlineprivatevirtual

Override to implement pulling logic (from ref_)

Implements madara::knowledge::rcw::BaseTracker.

Definition at line 107 of file PrefixTracker.h.

template<class T , bool RD, bool WR>
virtual void madara::knowledge::rcw::PrefixTracker< T, VariableReference, RD, WR, typename std::enable_if< supports_get_value< T >::value &&supports_indexed_get_value< T >::value &&supports_size< T >::value &&supports_is_dirty< T >::value &&supports_is_all_dirty< T >::value &&supports_is_size_dirty< T >::value &&supports_indexed_is_dirty< T >::value >::type >::push ( KnowledgeBase kb)
inlineprivatevirtual

Override to implement pushing logic (into ref_)

Implements madara::knowledge::rcw::BaseTracker.

Definition at line 123 of file PrefixTracker.h.

template<class T , bool RD, bool WR>
void madara::knowledge::rcw::PrefixTracker< T, VariableReference, RD, WR, typename std::enable_if< supports_get_value< T >::value &&supports_indexed_get_value< T >::value &&supports_size< T >::value &&supports_is_dirty< T >::value &&supports_is_all_dirty< T >::value &&supports_is_size_dirty< T >::value &&supports_indexed_is_dirty< T >::value >::type >::update_elems ( )
inlineprivate

Update knowledge base array so it matches dimensions of the tracked object.

Definition at line 84 of file PrefixTracker.h.

Friends And Related Function Documentation

template<class T , bool RD, bool WR>
friend class Transaction
friend

Definition at line 170 of file PrefixTracker.h.

Member Data Documentation

template<class T , bool RD, bool WR>
const bool madara::knowledge::rcw::PrefixTracker< T, VariableReference, RD, WR, typename std::enable_if< supports_get_value< T >::value &&supports_indexed_get_value< T >::value &&supports_size< T >::value &&supports_is_dirty< T >::value &&supports_is_all_dirty< T >::value &&supports_is_size_dirty< T >::value &&supports_indexed_is_dirty< T >::value >::type >::can_read = RD
staticprivate

Definition at line 73 of file PrefixTracker.h.

template<class T , bool RD, bool WR>
const bool madara::knowledge::rcw::PrefixTracker< T, VariableReference, RD, WR, typename std::enable_if< supports_get_value< T >::value &&supports_indexed_get_value< T >::value &&supports_size< T >::value &&supports_is_dirty< T >::value &&supports_is_all_dirty< T >::value &&supports_is_size_dirty< T >::value &&supports_indexed_is_dirty< T >::value >::type >::can_write = WR
staticprivate

Definition at line 74 of file PrefixTracker.h.

template<class T , bool RD, bool WR>
std::vector<VariableReference> madara::knowledge::rcw::PrefixTracker< T, VariableReference, RD, WR, typename std::enable_if< supports_get_value< T >::value &&supports_indexed_get_value< T >::value &&supports_size< T >::value &&supports_is_dirty< T >::value &&supports_is_all_dirty< T >::value &&supports_is_size_dirty< T >::value &&supports_indexed_is_dirty< T >::value >::type >::elems_
private

The knowledge base to reference.

vector of references to elements of vector in knowledge base

Definition at line 69 of file PrefixTracker.h.

template<class T , bool RD, bool WR>
KnowledgeBase madara::knowledge::rcw::PrefixTracker< T, VariableReference, RD, WR, typename std::enable_if< supports_get_value< T >::value &&supports_indexed_get_value< T >::value &&supports_size< T >::value &&supports_is_dirty< T >::value &&supports_is_all_dirty< T >::value &&supports_is_size_dirty< T >::value &&supports_indexed_is_dirty< T >::value >::type >::kb_
private

prefix string to use

Definition at line 66 of file PrefixTracker.h.

template<class T , bool RD, bool WR>
std::string madara::knowledge::rcw::PrefixTracker< T, VariableReference, RD, WR, typename std::enable_if< supports_get_value< T >::value &&supports_indexed_get_value< T >::value &&supports_size< T >::value &&supports_is_dirty< T >::value &&supports_is_all_dirty< T >::value &&supports_is_size_dirty< T >::value &&supports_indexed_is_dirty< T >::value >::type >::prefix_
private

Tracked std::vector.

Definition at line 65 of file PrefixTracker.h.

template<class T , bool RD, bool WR>
T* madara::knowledge::rcw::PrefixTracker< T, VariableReference, RD, WR, typename std::enable_if< supports_get_value< T >::value &&supports_indexed_get_value< T >::value &&supports_size< T >::value &&supports_is_dirty< T >::value &&supports_is_all_dirty< T >::value &&supports_is_size_dirty< T >::value &&supports_indexed_is_dirty< T >::value >::type >::tracked_
private

Definition at line 64 of file PrefixTracker.h.


The documentation for this class was generated from the following file: