ZeroBuf  0.4.0
Zero-copy, zero-serialize, zero-hassle protocol buffers
zerobuf::Vector< T > Class Template Reference

STL-like vector abstraction for dynamic arrays in a zerobuf. More...

#include <Vector.h>

+ Collaboration diagram for zerobuf::Vector< T >:

Public Member Functions

 Vector (Allocator &alloc, size_t index)
 
bool empty () const
 
uint64_t size () const
 
void clear ()
 Empty the vector. More...
 
T * data ()
 
const T * data () const
 
bool operator== (const Vector &rhs) const
 
bool operator!= (const Vector &rhs) const
 
template<class Q = T>
const std::enable_if<!std::is_base_of< Zerobuf, Q >::value, Q >::type & operator[] (const size_t index) const
 
template<class Q = T>
std::enable_if< !std::is_base_of< Zerobuf, Q >::value, Q >::type & operator[] (const size_t index)
 
template<class Q = T>
const std::enable_if< std::is_base_of< Zerobuf, Q >::value, Q >::type & operator[] (const size_t index) const
 
template<class Q = T>
std::enable_if< std::is_base_of< Zerobuf, Q >::value, Q >::type & operator[] (const size_t index)
 
template<class Q = T>
void push_back (const typename std::enable_if< !std::is_base_of< Zerobuf, Q >::value, Q >::type &)
 Insert a builtin element at the end of the vector. More...
 
template<class Q = T>
void push_back (const typename std::enable_if< std::is_base_of< Zerobuf, Q >::value, Q >::type &)
 Insert a Zerobuf-derived element at the end of the vector. More...
 
void reset (Allocator &alloc)
 
void compact (float)
 Remove unused memory from vector and all members. More...
 
template<class Q = T>
void fromJSON (const Json::Value &json, const typename std::enable_if< std::is_base_of< Zerobuf, Q >::value, Q >::type *=nullptr)
 Update this vector of ZeroBufs from its JSON representation. More...
 
template<class Q = T>
void fromJSON (const Json::Value &json, const typename std::enable_if< std::is_enum< Q >::value, Q >::type *=nullptr)
 Update this vector of enums from its JSON representation. More...
 
template<class Q = T>
void fromJSON (const Json::Value &json, const typename std::enable_if< std::is_arithmetic< Q >::value, Q >::type *=nullptr)
 Update this vector of arithmetics from its JSON representation. More...
 
template<class Q = T>
void fromJSON (const Json::Value &json, const typename std::enable_if< std::is_same< Q, servus::uint128_t >::value, Q >::type *=nullptr)
 Update this vector of uint128_t from its JSON representation. More...
 
template<class Q = T>
void toJSON (Json::Value &json, const typename std::enable_if< std::is_base_of< Zerobuf, Q >::value, Q >::type *=nullptr) const
 
template<class Q = T>
void toJSON (Json::Value &json, const typename std::enable_if< std::is_enum< Q >::value, Q >::type *=nullptr) const
 
template<class Q = T>
void toJSON (Json::Value &json, const typename std::enable_if< std::is_arithmetic< Q >::value, Q >::type *=nullptr) const
 
template<class Q = T>
void toJSON (Json::Value &json, const typename std::enable_if< std::is_same< Q, servus::uint128_t >::value, Q >::type *=nullptr) const
 
template<class Q = T>
void fromJSONBinary (const Json::Value &json, const typename std::enable_if< std::is_pod< Q >::value, Q >::type *=nullptr)
 Update this vector from its JSON, base64-encoded representation. More...
 
template<class Q = T>
void toJSONBinary (Json::Value &json, const typename std::enable_if< std::is_pod< Q >::value, Q >::type *=nullptr) const
 
template<class Q >
void push_back (const typename std::enable_if<!std::is_base_of< Zerobuf, Q >::value, Q >::type &value)
 

Detailed Description

template<class T>
class zerobuf::Vector< T >

STL-like vector abstraction for dynamic arrays in a zerobuf.

Parameters
Telement type

Definition at line 28 of file types.h.

Member Function Documentation

template<class T >
void zerobuf::Vector< T >::clear ( )
inline

Empty the vector.

Definition at line 179 of file Vector.h.

References zerobuf::Allocator::updateAllocation().

Referenced by zerobuf::Vector< T >::size().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class T >
void zerobuf::Vector< T >::compact ( float  )
inline
template<class T >
T* zerobuf::Vector< T >::data ( )
inline
Returns
The pointer to the current allocation of the vector

Definition at line 45 of file Vector.h.

Referenced by zerobuf::Vector< T >::compact(), zerobuf::Vector< T >::operator==(), zerobuf::Vector< T >::operator[](), and zerobuf::Vector< T >::toJSONBinary().

+ Here is the caller graph for this function:

template<class T >
const T* zerobuf::Vector< T >::data ( ) const
inline
Returns
The pointer to the current allocation of the vector

Definition at line 48 of file Vector.h.

References zerobuf::Vector< T >::operator!=(), zerobuf::Vector< T >::operator==(), zerobuf::Vector< T >::operator[](), and zerobuf::Vector< T >::push_back().

+ Here is the call graph for this function:

template<class T >
bool zerobuf::Vector< T >::empty ( ) const
inline
Returns
true if the vector contains no elements.

Definition at line 36 of file Vector.h.

template<class T >
template<class Q >
void zerobuf::Vector< T >::fromJSON ( const Json::Value &  json,
const typename std::enable_if< std::is_base_of< Zerobuf, Q >::value, Q >::type *  = nullptr 
)
inline

Update this vector of ZeroBufs from its JSON representation.

Definition at line 280 of file Vector.h.

References zerobuf::Allocator::updateAllocation().

Referenced by zerobuf::Vector< T >::compact().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class T >
template<class Q >
void zerobuf::Vector< T >::fromJSON ( const Json::Value &  json,
const typename std::enable_if< std::is_enum< Q >::value, Q >::type *  = nullptr 
)
inline

Update this vector of enums from its JSON representation.

Definition at line 290 of file Vector.h.

References zerobuf::Allocator::updateAllocation().

+ Here is the call graph for this function:

template<class T >
template<class Q >
void zerobuf::Vector< T >::fromJSON ( const Json::Value &  json,
const typename std::enable_if< std::is_arithmetic< Q >::value, Q >::type *  = nullptr 
)
inline

Update this vector of arithmetics from its JSON representation.

Definition at line 303 of file Vector.h.

References zerobuf::Allocator::updateAllocation().

+ Here is the call graph for this function:

template<class T >
template<class Q >
void zerobuf::Vector< T >::fromJSON ( const Json::Value &  json,
const typename std::enable_if< std::is_same< Q, servus::uint128_t >::value, Q >::type *  = nullptr 
)
inline

Update this vector of uint128_t from its JSON representation.

Definition at line 315 of file Vector.h.

References zerobuf::Allocator::updateAllocation().

+ Here is the call graph for this function:

template<class T >
template<class Q >
void zerobuf::Vector< T >::fromJSONBinary ( const Json::Value &  json,
const typename std::enable_if< std::is_pod< Q >::value, Q >::type *  = nullptr 
)
inline

Update this vector from its JSON, base64-encoded representation.

Definition at line 370 of file Vector.h.

Referenced by zerobuf::Vector< T >::compact().

+ Here is the caller graph for this function:

template<class T >
bool zerobuf::Vector< T >::operator!= ( const Vector< T > &  rhs) const
inline
Returns
false if the two vectors are identical.

Definition at line 203 of file Vector.h.

References zerobuf::Vector< T >::operator==().

Referenced by zerobuf::Vector< T >::data().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class T >
bool zerobuf::Vector< T >::operator== ( const Vector< T > &  rhs) const
inline
Returns
true if the two vectors of builtins are identical.

Definition at line 186 of file Vector.h.

References zerobuf::Vector< T >::data().

Referenced by zerobuf::Vector< T >::data(), and zerobuf::Vector< T >::operator!=().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class T >
template<class Q >
const std::enable_if< std::is_base_of< Zerobuf, Q >::value, Q >::type & zerobuf::Vector< T >::operator[] ( const size_t  index) const
inline
Returns
a builtin const element

Definition at line 210 of file Vector.h.

References zerobuf::Vector< T >::data(), and zerobuf::Vector< T >::size().

Referenced by zerobuf::Vector< T >::data(), and zerobuf::Vector< T >::operator[]().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class T >
template<class Q >
std::enable_if< std::is_base_of< Zerobuf, Q >::value, Q >::type & zerobuf::Vector< T >::operator[] ( const size_t  index)
inline
Returns
a builtin element

Definition at line 220 of file Vector.h.

References zerobuf::Vector< T >::data(), zerobuf::Vector< T >::operator[](), zerobuf::Vector< T >::push_back(), zerobuf::Vector< T >::size(), and zerobuf::Allocator::updateAllocation().

+ Here is the call graph for this function:

template<class T >
template<class Q = T>
const std::enable_if< std::is_base_of<Zerobuf,Q>::value, Q >::type& zerobuf::Vector< T >::operator[] ( const size_t  index) const
Returns
a Zerobuf-derived const element
template<class T >
template<class Q = T>
std::enable_if< std::is_base_of< Zerobuf, Q >::value, Q >::type& zerobuf::Vector< T >::operator[] ( const size_t  index)
Returns
a Zerobuf-derived element
template<class T >
template<class Q = T>
void zerobuf::Vector< T >::push_back ( const typename std::enable_if< !std::is_base_of< Zerobuf, Q >::value, Q >::type &  )

Insert a builtin element at the end of the vector.

Referenced by zerobuf::Vector< T >::data(), and zerobuf::Vector< T >::operator[]().

+ Here is the caller graph for this function:

template<class T >
template<class Q >
void zerobuf::Vector< T >::push_back ( const typename std::enable_if< std::is_base_of< Zerobuf, Q >::value, Q >::type &  value)
inline

Insert a Zerobuf-derived element at the end of the vector.

Definition at line 268 of file Vector.h.

References zerobuf::Allocator::updateAllocation().

+ Here is the call graph for this function:

template<class T >
uint64_t zerobuf::Vector< T >::size ( ) const
inline
Returns
the number of elements in the vector.

Definition at line 39 of file Vector.h.

References zerobuf::Vector< T >::clear().

Referenced by zerobuf::Vector< T >::compact(), zerobuf::Vector< T >::operator[](), and zerobuf::Vector< T >::toJSON().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class T >
template<class Q >
void zerobuf::Vector< T >::toJSON ( Json::Value &  json,
const typename std::enable_if< std::is_base_of< Zerobuf, Q >::value, Q >::type *  = nullptr 
) const
inline
Returns
the JSON representation of this vector of ZeroBufs.

Definition at line 328 of file Vector.h.

References zerobuf::Vector< T >::size().

Referenced by zerobuf::Vector< T >::compact().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class T >
template<class Q >
void zerobuf::Vector< T >::toJSON ( Json::Value &  json,
const typename std::enable_if< std::is_enum< Q >::value, Q >::type *  = nullptr 
) const
inline
Returns
the JSON representation of this vector of enums.

Definition at line 339 of file Vector.h.

References zerobuf::Vector< T >::size().

+ Here is the call graph for this function:

template<class T >
template<class Q >
void zerobuf::Vector< T >::toJSON ( Json::Value &  json,
const typename std::enable_if< std::is_arithmetic< Q >::value, Q >::type *  = nullptr 
) const
inline
Returns
the JSON representation of this vector of arithmetics.

Definition at line 350 of file Vector.h.

References zerobuf::Vector< T >::size().

+ Here is the call graph for this function:

template<class T >
template<class Q >
void zerobuf::Vector< T >::toJSON ( Json::Value &  json,
const typename std::enable_if< std::is_same< Q, servus::uint128_t >::value, Q >::type *  = nullptr 
) const
inline
Returns
the JSON representation of this vector of uint128_t.

Definition at line 360 of file Vector.h.

References zerobuf::Vector< T >::size().

+ Here is the call graph for this function:

template<class T >
template<class Q >
void zerobuf::Vector< T >::toJSONBinary ( Json::Value &  json,
const typename std::enable_if< std::is_pod< Q >::value, Q >::type *  = nullptr 
) const
inline
Returns
the JSON representation of this vector, with base64 encoding.

Definition at line 378 of file Vector.h.

References zerobuf::Vector< T >::data(), and zerobuf::Allocator::updateAllocation().

Referenced by zerobuf::Vector< T >::compact().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:


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