VGServer::TpAttributeBlob< AllocPolicy > Class Template Reference

TpAttributeBlob is the growing byte oriented memory buffer used in the graph server to store attribute values packed in a large array. More...

#include <AttributeBlob.h>

List of all members.

Public Member Functions

void _alloc (unsigned int n)
 make sure that at least n bytes are allocated: uses realloc
void alloc (unsigned int n)
 make sure that at least n bytes are allocated
void clear ()
 clears the memory contents. does not deallocate the memory
void copy (unsigned int i, const void *indata, unsigned int inlen)
 copys over a block of bytes into the given index position
const char * data (unsigned int i) const
 return a pointer to the currently kept memory with the given byte offset.
char * data ()
 return a pointer to the currently kept memory
const char * data () const
 return a pointer to the currently kept memory
void dealloc ()
 deallocates the kept memory space (we use dealloc() instead of free() as a name, because sometimes "free" is replaced by the preprocessor)
const char * detach ()
 detach the memory from the object. returns the memory pointer
std::pair< const char *, unsigned
int > 
detach_pair ()
 detach the memory from the object, returning a std::pair containing memory pointer and size.
bool empty () const
 returns true if the TpAttributeBlob is empty
template<typename T>
get (unsigned int i) const
 function template used to retrieve the value any simple type at a given index.
void getAnyType (unsigned int i, AnyType &v) const
 reads a defined AnyType at the position i
unsigned int getAttrChainLength (unsigned int chidx, const AttributePropertiesList &attrlist) const
 Calculates the length of a valid attribute value chain at position i.
AnyType getAttrChainValue (unsigned int chidx, unsigned int attrid, const AttributePropertiesList &attrlist) const
 retrieves the attribute value attrid from an attribute chain at position i
bool getBool (unsigned int i, unsigned int bitnum) const
 returns a bit index based at the given position
std::string getLongstring (unsigned int i) const
 returns a long string at the given position
std::string getRange (unsigned int i, unsigned int len) const
 copys a range into a std::string and return it, used by the tests to check the contents.
std::string getString (unsigned int i) const
 returns a (short) string at the given position
void move (unsigned int src, unsigned int dst, unsigned int len)
 move a block of bytes within the blob.
thistypeoperator= (const thistype &other)
 assignment operator: copies data of the other into buffer.
char operator[] (unsigned int i) const
 return the character at the given position
template<typename ValTp>
void put (unsigned int i, ValTp v)
 puts the value of the given template type at the given position
void putAnyType (unsigned int i, const AnyType &v)
 saves a defined AnyType at the position i
bool putAttrChainValue (const AttributePropertiesList &attrlist, unsigned int attrid, const AnyType &value)
 write (change) an attribute value within the attribute chain starting at position 0
void putBool (unsigned int i, unsigned int bitnum, bool v)
 puts a bit at the given index
void putLongstring (unsigned int i, const std::string &s)
 writes a long string at the given positon
void putString (unsigned int i, const std::string &s)
 writes a string at the given position
unsigned int size () const
 return the currently allocated buffer size in bytes.
void swap (thistype &other)
 exchange the data array with another TpAttributeBlob
 TpAttributeBlob (const thistype &other)
 copy constructor: allocates a new buffer of the same size.
 TpAttributeBlob (const void *data, unsigned int len)
 create an object and copy the specified memory range into it
 TpAttributeBlob (unsigned int n)
 create an object with n bytes preallocated
 TpAttributeBlob ()
 create a new empty object
void zero (unsigned int i, unsigned int len)
 zeros a block of bytes at the given index
virtual ~TpAttributeBlob ()
 destroys the memory buffer


Detailed Description

template<typename AllocPolicy>
class VGServer::TpAttributeBlob< AllocPolicy >

TpAttributeBlob is the growing byte oriented memory buffer used in the graph server to store attribute values packed in a large array.

It provides sequential write-function and random access functions to extract attribute positions. It has one pure virtual function which should be a function defining the grow policy.

Definition at line 25 of file AttributeBlob.h.


Constructor & Destructor Documentation

template<typename AllocPolicy>
VGServer::TpAttributeBlob< AllocPolicy >::TpAttributeBlob (  )  [inline]

create a new empty object

Definition at line 44 of file AttributeBlob.h.

template<typename AllocPolicy>
VGServer::TpAttributeBlob< AllocPolicy >::TpAttributeBlob ( unsigned int  n  )  [inline, explicit]

create an object with n bytes preallocated

Definition at line 50 of file AttributeBlob.h.

References VGServer::TpAttributeBlob< AllocPolicy >::alloc().

template<typename AllocPolicy>
VGServer::TpAttributeBlob< AllocPolicy >::TpAttributeBlob ( const void *  data,
unsigned int  len 
) [inline, explicit]

create an object and copy the specified memory range into it

Definition at line 57 of file AttributeBlob.h.

References VGServer::TpAttributeBlob< AllocPolicy >::copy().

template<typename AllocPolicy>
VGServer::TpAttributeBlob< AllocPolicy >::TpAttributeBlob ( const thistype other  )  [inline]

copy constructor: allocates a new buffer of the same size.

Definition at line 64 of file AttributeBlob.h.

References VGServer::TpAttributeBlob< AllocPolicy >::copy(), VGServer::TpAttributeBlob< AllocPolicy >::data(), and VGServer::TpAttributeBlob< AllocPolicy >::size().

template<typename AllocPolicy>
virtual VGServer::TpAttributeBlob< AllocPolicy >::~TpAttributeBlob (  )  [inline, virtual]

destroys the memory buffer

Definition at line 79 of file AttributeBlob.h.

References VGServer::TpAttributeBlob< AllocPolicy >::dealloc().


Member Function Documentation

template<typename AllocPolicy>
void VGServer::TpAttributeBlob< AllocPolicy >::_alloc ( unsigned int  n  )  [inline]

make sure that at least n bytes are allocated: uses realloc

Definition at line 110 of file AttributeBlob.h.

Referenced by VGServer::TpAttributeBlob< AllocPolicy >::alloc().

template<typename AllocPolicy>
void VGServer::TpAttributeBlob< AllocPolicy >::alloc ( unsigned int  n  )  [inline]

make sure that at least n bytes are allocated

Definition at line 106 of file AttributeBlob.h.

References VGServer::TpAttributeBlob< AllocPolicy >::_alloc().

Referenced by VGServer::TpAttributeBlob< AllocPolicy >::copy(), VGServer::GraphData::loadSnapshot(), VGServer::TpAttributeBlob< AllocPolicy >::move(), VGServer::TpAttributeBlob< AllocPolicy >::put(), VGServer::TpAttributeBlob< AllocPolicy >::putBool(), VGServer::TpAttributeBlob< AllocPolicy >::putLongstring(), VGServer::TpAttributeBlob< AllocPolicy >::putString(), VGServer::GraphLoader::reserve(), VGServer::TpAttributeBlob< AllocPolicy >::TpAttributeBlob(), and VGServer::TpAttributeBlob< AllocPolicy >::zero().

template<typename AllocPolicy>
void VGServer::TpAttributeBlob< AllocPolicy >::clear (  )  [inline]

clears the memory contents. does not deallocate the memory

Definition at line 129 of file AttributeBlob.h.

template<typename AllocPolicy>
void VGServer::TpAttributeBlob< AllocPolicy >::copy ( unsigned int  i,
const void *  indata,
unsigned int  inlen 
) [inline]

copys over a block of bytes into the given index position

Definition at line 224 of file AttributeBlob.h.

References VGServer::TpAttributeBlob< AllocPolicy >::alloc().

Referenced by VGServer::GraphData::applyChangelist(), VGServer::TpAttributeBlob< AllocPolicy >::operator=(), and VGServer::TpAttributeBlob< AllocPolicy >::TpAttributeBlob().

template<typename AllocPolicy>
const char* VGServer::TpAttributeBlob< AllocPolicy >::data ( unsigned int  i  )  const [inline]

return a pointer to the currently kept memory with the given byte offset.

Doesnt check that it is valid.

Definition at line 93 of file AttributeBlob.h.

template<typename AllocPolicy>
char* VGServer::TpAttributeBlob< AllocPolicy >::data (  )  [inline]

return a pointer to the currently kept memory

Definition at line 88 of file AttributeBlob.h.

template<typename AllocPolicy>
const char* VGServer::TpAttributeBlob< AllocPolicy >::data (  )  const [inline]

return a pointer to the currently kept memory

Definition at line 84 of file AttributeBlob.h.

Referenced by VGServer::GraphData::applyChangelist(), VGServer::TpAttributeBlob< AllocPolicy >::detach(), VGServer::GraphContainer::getArea(), VGServer::GraphData::getEdgeAttrBlob(), VGServer::GraphContainer::getNearestNeighbor(), VGServer::TpAttributeBlob< AllocPolicy >::getRange(), VGServer::GraphData::getVertexAttrBlob(), VGServer::GraphData::loadSnapshot(), VGServer::TpAttributeBlob< AllocPolicy >::operator=(), VGServer::GraphData::saveSnapshot(), and VGServer::TpAttributeBlob< AllocPolicy >::TpAttributeBlob().

template<typename AllocPolicy>
void VGServer::TpAttributeBlob< AllocPolicy >::dealloc (  )  [inline]

deallocates the kept memory space (we use dealloc() instead of free() as a name, because sometimes "free" is replaced by the preprocessor)

Definition at line 134 of file AttributeBlob.h.

Referenced by VGServer::TpAttributeBlob< AllocPolicy >::~TpAttributeBlob().

template<typename AllocPolicy>
const char* VGServer::TpAttributeBlob< AllocPolicy >::detach (  )  [inline]

detach the memory from the object. returns the memory pointer

Definition at line 142 of file AttributeBlob.h.

References VGServer::TpAttributeBlob< AllocPolicy >::data().

template<typename AllocPolicy>
std::pair<const char*, unsigned int> VGServer::TpAttributeBlob< AllocPolicy >::detach_pair (  )  [inline]

detach the memory from the object, returning a std::pair containing memory pointer and size.

Definition at line 151 of file AttributeBlob.h.

template<typename AllocPolicy>
bool VGServer::TpAttributeBlob< AllocPolicy >::empty (  )  const [inline]

returns true if the TpAttributeBlob is empty

Definition at line 102 of file AttributeBlob.h.

References VGServer::TpAttributeBlob< AllocPolicy >::size().

Referenced by VGServer::Changelist::addEdge(), VGServer::Changelist::addVertex(), VGServer::Changelist::setEdgeAttr(), and VGServer::Changelist::setVertexAttr().

template<typename AllocPolicy>
template<typename T>
T VGServer::TpAttributeBlob< AllocPolicy >::get ( unsigned int  i  )  const [inline]

function template used to retrieve the value any simple type at a given index.

Definition at line 196 of file AttributeBlob.h.

template<typename AllocPolicy>
void VGServer::TpAttributeBlob< AllocPolicy >::getAnyType ( unsigned int  i,
AnyType v 
) const [inline]

reads a defined AnyType at the position i

Definition at line 17 of file AttributeBlob_impl.h.

References VGServer::ATTRTYPE_BOOL, VGServer::ATTRTYPE_BYTE, VGServer::ATTRTYPE_CHAR, VGServer::ATTRTYPE_DOUBLE, VGServer::ATTRTYPE_DWORD, VGServer::ATTRTYPE_FLOAT, VGServer::ATTRTYPE_INTEGER, VGServer::ATTRTYPE_INVALID, VGServer::ATTRTYPE_LONG, VGServer::ATTRTYPE_LONGSTRING, VGServer::ATTRTYPE_QWORD, VGServer::ATTRTYPE_SHORT, VGServer::ATTRTYPE_STRING, VGServer::ATTRTYPE_WORD, VGServer::TpAttributeBlob< AllocPolicy >::getLongstring(), VGServer::TpAttributeBlob< AllocPolicy >::getString(), VGServer::AnyType::getType(), VGServer::AnyType::setDouble(), VGServer::AnyType::setInteger(), VGServer::AnyType::setLong(), and VGServer::AnyType::setString().

Referenced by VGServer::TpAttributeBlob< AllocPolicy >::getAttrChainValue().

template<typename AllocPolicy>
unsigned int VGServer::TpAttributeBlob< AllocPolicy >::getAttrChainLength ( unsigned int  chidx,
const AttributePropertiesList attrlist 
) const [inline]

Calculates the length of a valid attribute value chain at position i.

Definition at line 150 of file AttributeBlob_impl.h.

References VGServer::ATTRTYPE_LONGSTRING, VGServer::ATTRTYPE_STRING, CASE_FIXED_LENGTH, VGServer::AttributePropertiesList::defbits, VGServer::AttributePropertiesList::defbytes, and VGServer::TpAttributeBlob< AllocPolicy >::getBool().

Referenced by VGServer::GraphData::applyChangelist().

template<typename AllocPolicy>
AnyType VGServer::TpAttributeBlob< AllocPolicy >::getAttrChainValue ( unsigned int  chidx,
unsigned int  attrid,
const AttributePropertiesList attrlist 
) const [inline]

retrieves the attribute value attrid from an attribute chain at position i

Definition at line 199 of file AttributeBlob_impl.h.

References VGServer::ATTRTYPE_BOOL, VGServer::ATTRTYPE_LONGSTRING, VGServer::ATTRTYPE_STRING, CASE_FIXED_LENGTH, VGServer::AttributePropertiesList::defbytes, VGServer::TpAttributeBlob< AllocPolicy >::getAnyType(), VGServer::TpAttributeBlob< AllocPolicy >::getBool(), VGServer::AnyType::getType(), and VGServer::AnyType::setInteger().

Referenced by VGServer::EdgeRef::getAttr(), and VGServer::VertexRef::getAttr().

template<typename AllocPolicy>
bool VGServer::TpAttributeBlob< AllocPolicy >::getBool ( unsigned int  i,
unsigned int  bitnum 
) const [inline]

returns a bit index based at the given position

Parameters:
i index into the buffer
bitnum index of the bit returned, 0 based, can be larger than 8

Definition at line 184 of file AttributeBlob.h.

Referenced by VGServer::TpAttributeBlob< AllocPolicy >::getAttrChainLength(), VGServer::TpAttributeBlob< AllocPolicy >::getAttrChainValue(), and VGServer::TpAttributeBlob< AllocPolicy >::putAttrChainValue().

template<typename AllocPolicy>
std::string VGServer::TpAttributeBlob< AllocPolicy >::getLongstring ( unsigned int  i  )  const [inline]

returns a long string at the given position

Definition at line 211 of file AttributeBlob.h.

Referenced by VGServer::TpAttributeBlob< AllocPolicy >::getAnyType().

template<typename AllocPolicy>
std::string VGServer::TpAttributeBlob< AllocPolicy >::getRange ( unsigned int  i,
unsigned int  len 
) const [inline]

copys a range into a std::string and return it, used by the tests to check the contents.

Definition at line 161 of file AttributeBlob.h.

References VGServer::TpAttributeBlob< AllocPolicy >::data().

template<typename AllocPolicy>
std::string VGServer::TpAttributeBlob< AllocPolicy >::getString ( unsigned int  i  )  const [inline]

returns a (short) string at the given position

Definition at line 203 of file AttributeBlob.h.

Referenced by VGServer::TpAttributeBlob< AllocPolicy >::getAnyType().

template<typename AllocPolicy>
void VGServer::TpAttributeBlob< AllocPolicy >::move ( unsigned int  src,
unsigned int  dst,
unsigned int  len 
) [inline]

move a block of bytes within the blob.

this is used to make room for new attribute values. Parameter order is _not_ the same as for memmove()!

Definition at line 239 of file AttributeBlob.h.

References VGServer::TpAttributeBlob< AllocPolicy >::alloc().

Referenced by VGServer::TpAttributeBlob< AllocPolicy >::putAttrChainValue().

template<typename AllocPolicy>
thistype& VGServer::TpAttributeBlob< AllocPolicy >::operator= ( const thistype other  )  [inline]

assignment operator: copies data of the other into buffer.

Does not zero unused space if our butter happens to be larger.

Definition at line 72 of file AttributeBlob.h.

References VGServer::TpAttributeBlob< AllocPolicy >::copy(), VGServer::TpAttributeBlob< AllocPolicy >::data(), and VGServer::TpAttributeBlob< AllocPolicy >::size().

template<typename AllocPolicy>
char VGServer::TpAttributeBlob< AllocPolicy >::operator[] ( unsigned int  i  )  const [inline]

return the character at the given position

Definition at line 174 of file AttributeBlob.h.

template<typename AllocPolicy>
template<typename ValTp>
void VGServer::TpAttributeBlob< AllocPolicy >::put ( unsigned int  i,
ValTp  v 
) [inline]

puts the value of the given template type at the given position

Definition at line 267 of file AttributeBlob.h.

References VGServer::TpAttributeBlob< AllocPolicy >::alloc().

template<typename AllocPolicy>
void VGServer::TpAttributeBlob< AllocPolicy >::putAnyType ( unsigned int  i,
const AnyType v 
) [inline]

saves a defined AnyType at the position i

Definition at line 84 of file AttributeBlob_impl.h.

References VGServer::ATTRTYPE_BOOL, VGServer::ATTRTYPE_BYTE, VGServer::ATTRTYPE_CHAR, VGServer::ATTRTYPE_DOUBLE, VGServer::ATTRTYPE_DWORD, VGServer::ATTRTYPE_FLOAT, VGServer::ATTRTYPE_INTEGER, VGServer::ATTRTYPE_INVALID, VGServer::ATTRTYPE_LONG, VGServer::ATTRTYPE_LONGSTRING, VGServer::ATTRTYPE_QWORD, VGServer::ATTRTYPE_SHORT, VGServer::ATTRTYPE_STRING, VGServer::ATTRTYPE_WORD, VGServer::AnyType::getDouble(), VGServer::AnyType::getInteger(), VGServer::AnyType::getLong(), VGServer::AnyType::getString(), VGServer::AnyType::getType(), VGServer::AnyType::getUnsignedInteger(), VGServer::AnyType::getUnsignedLong(), VGServer::TpAttributeBlob< AllocPolicy >::putLongstring(), and VGServer::TpAttributeBlob< AllocPolicy >::putString().

Referenced by VGServer::AttributePropertiesList::createBlankAttributeBlob(), VGServer::AttributeSelectorList::processEdgeAttributeBlob(), VGServer::AttributeSelectorList::processVertexAttributeBlob(), VGServer::TpAttributeBlob< AllocPolicy >::putAttrChainValue(), VGServer::GraphLoader::setEdgeAttr(), and VGServer::GraphLoader::setVertexAttr().

template<typename AllocPolicy>
bool VGServer::TpAttributeBlob< AllocPolicy >::putAttrChainValue ( const AttributePropertiesList attrlist,
unsigned int  attrid,
const AnyType value 
) [inline]

write (change) an attribute value within the attribute chain starting at position 0

Definition at line 284 of file AttributeBlob_impl.h.

References VGServer::ATTRTYPE_BOOL, VGServer::ATTRTYPE_LONGSTRING, VGServer::ATTRTYPE_STRING, CASE_FIXED_LENGTH, VGServer::AnyType::convertType(), VGServer::AttributeProperties::defbitnum, VGServer::AttributePropertiesList::defbytes, VGServer::TpAttributeBlob< AllocPolicy >::getBool(), VGServer::AnyType::getInteger(), VGServer::AnyType::getType(), VGServer::AnyType::getTypeLength(), VGServer::AnyType::getValueLength(), VGServer::AnyType::isFixedLength(), VGServer::AttributeProperties::lookup, VGServer::TpAttributeBlob< AllocPolicy >::move(), VGServer::TpAttributeBlob< AllocPolicy >::putAnyType(), VGServer::TpAttributeBlob< AllocPolicy >::putBool(), VGServer::TpAttributeBlob< AllocPolicy >::size(), and VGServer::AttributeProperties::varying.

Referenced by VGServer::Changelist::setEdgeAttr(), and VGServer::Changelist::setVertexAttr().

template<typename AllocPolicy>
void VGServer::TpAttributeBlob< AllocPolicy >::putBool ( unsigned int  i,
unsigned int  bitnum,
bool  v 
) [inline]

puts a bit at the given index

Parameters:
i index into the buffer
bitnum index of the bit, 0 based, can be larger than 8
v value to put

Definition at line 251 of file AttributeBlob.h.

References VGServer::TpAttributeBlob< AllocPolicy >::alloc().

Referenced by VGServer::AttributePropertiesList::createBlankAttributeBlob(), VGServer::AttributeSelectorList::processEdgeAttributeBlob(), VGServer::AttributeSelectorList::processVertexAttributeBlob(), VGServer::TpAttributeBlob< AllocPolicy >::putAttrChainValue(), VGServer::GraphLoader::setEdgeAttr(), and VGServer::GraphLoader::setVertexAttr().

template<typename AllocPolicy>
void VGServer::TpAttributeBlob< AllocPolicy >::putLongstring ( unsigned int  i,
const std::string &  s 
) [inline]

writes a long string at the given positon

Definition at line 282 of file AttributeBlob.h.

References VGServer::TpAttributeBlob< AllocPolicy >::alloc().

Referenced by VGServer::TpAttributeBlob< AllocPolicy >::putAnyType().

template<typename AllocPolicy>
void VGServer::TpAttributeBlob< AllocPolicy >::putString ( unsigned int  i,
const std::string &  s 
) [inline]

writes a string at the given position

Definition at line 274 of file AttributeBlob.h.

References VGServer::TpAttributeBlob< AllocPolicy >::alloc().

Referenced by VGServer::TpAttributeBlob< AllocPolicy >::putAnyType().

template<typename AllocPolicy>
unsigned int VGServer::TpAttributeBlob< AllocPolicy >::size (  )  const [inline]

return the currently allocated buffer size in bytes.

this is _not_ the length of the contained data.

Definition at line 98 of file AttributeBlob.h.

Referenced by VGServer::GraphData::checkReferences(), VGServer::TpAttributeBlob< AllocPolicy >::empty(), VGServer::TpAttributeBlob< AllocPolicy >::operator=(), VGServer::TpAttributeBlob< AllocPolicy >::putAttrChainValue(), and VGServer::TpAttributeBlob< AllocPolicy >::TpAttributeBlob().

template<typename AllocPolicy>
void VGServer::TpAttributeBlob< AllocPolicy >::swap ( thistype other  )  [inline]

exchange the data array with another TpAttributeBlob

Definition at line 165 of file AttributeBlob.h.

References VGServer::TpAttributeBlob< AllocPolicy >::_data, and VGServer::TpAttributeBlob< AllocPolicy >::_size.

Referenced by VGServer::GraphData::applyChangelist(), and VGServer::GraphData::swap().

template<typename AllocPolicy>
void VGServer::TpAttributeBlob< AllocPolicy >::zero ( unsigned int  i,
unsigned int  len 
) [inline]

zeros a block of bytes at the given index

Definition at line 231 of file AttributeBlob.h.

References VGServer::TpAttributeBlob< AllocPolicy >::alloc().

Referenced by VGServer::GraphLoader::addEdge(), VGServer::GraphLoader::addVertex(), VGServer::AttributePropertiesList::createBlankAttributeBlob(), VGServer::AttributeSelectorList::processEdgeAttributeBlob(), and VGServer::AttributeSelectorList::processVertexAttributeBlob().


The documentation for this class was generated from the following files:
Generated on Wed Sep 27 14:34:01 2006 for VGServer by  doxygen 1.4.7