#include <GaudiKernel/StreamBuffer.h>
Public Types | |
typedef std::vector< ContainedLink > | ContainedLinks |
typedef std::vector< IdentifiedLink > | IdentifiedLinks |
Definition of the identifiable link set. | |
typedef void(*) | AnalyzeFunction (const void *data, int siz, const std::type_info &type) |
Definition of the buffer analyzer. | |
UNINITIALIZED | |
READING | |
WRITING | |
SINGLE_BYTE | |
SWAP | |
NOSWAP | |
INVALID = -1 | |
VALID | |
enum | Mode { UNINITIALIZED, READING, WRITING } |
Streamer mode. More... | |
enum | SwapAction { SINGLE_BYTE, SWAP, NOSWAP } |
Data Sawp actions. More... | |
enum | State { INVALID = -1, VALID } |
Link state defintions. More... | |
Public Member Functions | |
StreamBuffer (bool do_swap=true) | |
Standard constructor. | |
virtual | ~StreamBuffer () |
Standard destructor. | |
const char * | data () const |
Read access to data buffer. | |
char * | data () |
write access to data buffer | |
void | erase () |
Reset the buffer. | |
void | reserve (long len) |
Reserve buffer space; Default: 16 k buffer size. | |
void | extend (long len) |
Extend the buffer. | |
long | size () const |
Total buffer size. | |
ContainedLinks & | containedLinks () |
Access to contained links. | |
const ContainedLinks & | containedLinks () const |
CONST Access to contained links. | |
IdentifiedLinks & | identifiedLinks () |
Access to identified links. | |
const IdentifiedLinks & | identifiedLinks () const |
CONST Access to identified links. | |
void | setMode (Mode m) |
Set mode of the stream and allocate buffer. | |
bool | isReading () const |
Get stream buffer state. | |
bool | isWriting () const |
Get stream buffer state. | |
long | buffPointer () const |
Retrieve current buffer pointer. | |
void | setBuffPointer (long ptr) |
Retrieve current buffer pointer. | |
void | setAnalyzer (AnalyzeFunction fun=0) |
Enable user analysis function. | |
void | swapToBuffer (const void *source, int siz) |
Swap buffers: int, long, short, float and double. | |
void | swapFromBuffer (void *target, int siz) |
Swap buffers: int, long, short, float and double. | |
StreamBuffer & | writeBytes (const char *str, long len) |
Write string to output stream. | |
void | getIdentifiedLink (DataObject *&pObject, long &hint) |
void | addIdentifiedLink (const DataObject *pObject, long hint) |
void | getContainedLink (ContainedObject *&pObject, long &hint, long &link) |
void | addContainedLink (const ContainedObject *pObject, long hint, long link) |
StreamBuffer & | operator<< (longlong data) |
Output Streamer. | |
StreamBuffer & | operator>> (longlong &data) |
Input Streamer. | |
StreamBuffer & | operator<< (int data) |
Output Streamer. | |
StreamBuffer & | operator>> (int &data) |
Input Streamer. | |
StreamBuffer & | operator<< (unsigned int data) |
Output Streamer. | |
StreamBuffer & | operator>> (unsigned int &data) |
Input Streamer. | |
StreamBuffer & | operator<< (long data) |
Output Streamer. | |
StreamBuffer & | operator>> (long &data) |
Input Streamer. | |
StreamBuffer & | operator<< (unsigned long data) |
Output Streamer. | |
StreamBuffer & | operator>> (unsigned long &data) |
Input Streamer. | |
StreamBuffer & | operator<< (short data) |
Output Streamer. | |
StreamBuffer & | operator>> (short &data) |
Input Streamer. | |
StreamBuffer & | operator<< (unsigned short data) |
Output Streamer. | |
StreamBuffer & | operator>> (unsigned short &data) |
Input Streamer. | |
StreamBuffer & | operator<< (char data) |
Output Streamer. | |
StreamBuffer & | operator>> (char &data) |
Input Streamer. | |
StreamBuffer & | operator<< (unsigned char data) |
Output Streamer. | |
StreamBuffer & | operator>> (unsigned char &data) |
Input Streamer. | |
StreamBuffer & | operator<< (float data) |
Output Streamer. | |
StreamBuffer & | operator>> (float &data) |
Input Streamer. | |
StreamBuffer & | operator<< (double data) |
Output Streamer. | |
StreamBuffer & | operator>> (double &data) |
Input Streamer. | |
StreamBuffer & | operator>> (char *data) |
Streamer to read strings in (char*) format. | |
StreamBuffer & | operator<< (const char *data) |
Streamer to write strings in (char*) format. | |
StreamBuffer & | operator>> (std::string &data) |
Streamer to read strings in (std::string) format. | |
StreamBuffer & | operator<< (const std::string &data) |
Streamer to write strings in (std::string) format. | |
template<class TYPE> | |
StreamBuffer & | operator>> (TYPE *&refpObject) |
Streamer to read links to contained or identified objects. | |
StreamBuffer & | operator<< (const ContainedObject *pObject) |
Streamer to write links to contained objects. | |
StreamBuffer & | operator<< (const DataObject *pObject) |
Streamer to write links to identified objects. | |
void | serialize (DataIO &ioObject) |
Serialize the buffer using an IO object. | |
Protected Member Functions | |
SwapAction | swapBuffer (int siz) const |
Check for byte swapping. | |
template<class TYPE> | |
StreamBuffer & | getObjectPointer (const DataObject *pObject, TYPE *&refpObject) |
Helper to distinguis between identified pointers and contained pointers. | |
template<class TYPE> | |
StreamBuffer & | getObjectPointer (const ContainedObject *pObject, TYPE *&refpObject) |
Helper to distinguis between identified pointers and contained pointers. | |
Protected Attributes | |
Mode | m_mode |
Boolean indicating wether the stream is in read or write mode. | |
long | m_pointer |
Current buffer pointer. | |
long | m_length |
Total buffer length. | |
char * | m_buffer |
Pointer to heap buffer. | |
bool | m_swapEnabled |
Flag indicating swapping. | |
ContainedLinks | m_containedLinks |
Container with links to contained objects. | |
IdentifiedLinks | m_identifiedLinks |
Container with links to contained objects. | |
AnalyzeFunction | m_analyzer |
Hook function for analysis of data to the stream. | |
Friends | |
class | DataObject |
DataObject is friend. | |
Classes | |
class | ContainedLink |
Definition of the contained link set. More... | |
class | DataIO |
A small base class to handle generic data streaming. More... | |
class | IdentifiedLink |
Definition of the contained link set. More... | |
class | Istream |
Reader for standard input streams. More... | |
class | Ostream |
Writer for standard output streams. More... |
The basic idea behind the StreamBuffer is generic object conversion. The StreamBuffer acts as a byte stream (hence inheriting from a std::string) and stores any information streamed to the buffer. Since the information must be represented in a generic way on the fly byte swapping is performed. However, not only primitive data can be stored in the buffer, but also pointers to DataObjects (symbolic links) and pointers to contained objects. Automatically during serialization the persistent references to the corresponding objects and containers must be stored. These objects are accessible from the StreamBuffer object.
"On the fly" data conversion to non persistent
Definition at line 39 of file StreamBuffer.h.
typedef std::vector<ContainedLink> StreamBuffer::ContainedLinks |
Definition at line 148 of file StreamBuffer.h.
typedef std::vector<IdentifiedLink> StreamBuffer::IdentifiedLinks |
typedef void(*) StreamBuffer::AnalyzeFunction(const void *data, int siz, const std::type_info &type) |
enum StreamBuffer::Mode |
Streamer mode.
Definition at line 113 of file StreamBuffer.h.
00113 {UNINITIALIZED, READING, WRITING};
enum StreamBuffer::State |
StreamBuffer::StreamBuffer | ( | bool | do_swap = true |
) | [inline] |
Standard constructor.
Definition at line 206 of file StreamBuffer.h.
00206 : 00207 m_mode(UNINITIALIZED), 00208 m_pointer(0), 00209 m_length(0), 00210 m_buffer(0), 00211 m_swapEnabled(do_swap) 00212 { 00213 m_analyzer = 0; 00214 }
virtual StreamBuffer::~StreamBuffer | ( | ) | [inline, virtual] |
Standard destructor.
Definition at line 216 of file StreamBuffer.h.
00216 { 00217 ::free( m_buffer ); 00218 }
StreamBuffer::SwapAction StreamBuffer::swapBuffer | ( | int | siz | ) | const [inline, protected] |
Check for byte swapping.
Definition at line 569 of file StreamBuffer.h.
00569 { 00570 switch(siz) { 00571 case 1: 00572 return SINGLE_BYTE; 00573 default: 00574 #if defined(__alpha) && !defined(__VMS) 00575 // return m_swapEnabled ? SWAP : NOSWAP; 00576 return NOSWAP; 00577 #elif defined(__sun) && defined(__SVR4) && defined(__i386) 00578 // return m_swapEnabled ? SWAP : NOSWAP; 00579 return NOSWAP; 00580 #elif defined(__APPLE__) 00581 // return m_swapEnabled ? SWAP : NOSWAP; 00582 return SWAP; 00583 #elif defined(__linux) && !defined(__powerpc) 00584 // return m_swapEnabled ? SWAP : NOSWAP; 00585 return NOSWAP; 00586 #elif defined(BORLAND) || defined(_WIN32) || defined(WIN32) 00587 // return m_swapEnabled ? SWAP : NOSWAP; 00588 return NOSWAP; 00589 #else 00590 return m_swapEnabled ? SWAP : NOSWAP; 00591 // return NOSWAP; 00592 #endif 00593 } 00594 }
StreamBuffer& StreamBuffer::getObjectPointer | ( | const DataObject * | pObject, | |
TYPE *& | refpObject | |||
) | [inline, protected] |
Helper to distinguis between identified pointers and contained pointers.
This entry resolves identified pointers (= Pointers to DataObject instances.)
Definition at line 187 of file StreamBuffer.h.
00187 { 00188 IdentifiedLink& link = m_identifiedLinks.back(); 00189 DataObject* pObj = link.first; 00190 m_identifiedLinks.pop_back(); 00191 refpObject = dynamic_cast<TYPE*>(pObj); 00192 return *this; 00193 }
StreamBuffer& StreamBuffer::getObjectPointer | ( | const ContainedObject * | pObject, | |
TYPE *& | refpObject | |||
) | [inline, protected] |
Helper to distinguis between identified pointers and contained pointers.
This entry resolves contained pointers (= Pointers to ContainedObject instances.)
Definition at line 197 of file StreamBuffer.h.
00197 { 00198 ContainedLink& link = m_containedLinks.back(); 00199 ContainedObject* pObj = link.first; 00200 m_containedLinks.pop_back(); 00201 refpObject = dynamic_cast<TYPE*>(pObj); 00202 return *this; 00203 }
const char* StreamBuffer::data | ( | ) | const [inline] |
Read access to data buffer.
Definition at line 220 of file StreamBuffer.h.
00220 { 00221 return m_buffer; 00222 }
char* StreamBuffer::data | ( | ) | [inline] |
write access to data buffer
Definition at line 224 of file StreamBuffer.h.
00224 { 00225 return m_buffer; 00226 }
void StreamBuffer::erase | ( | ) | [inline] |
Reset the buffer.
Definition at line 228 of file StreamBuffer.h.
00228 { 00229 m_pointer = 0; 00230 }
void StreamBuffer::reserve | ( | long | len | ) | [inline] |
void StreamBuffer::extend | ( | long | len | ) | [inline] |
Extend the buffer.
Definition at line 239 of file StreamBuffer.h.
00239 { 00240 if ( len + m_pointer > m_length ) { 00241 // We have to be a bit generous here in order not to run too often 00242 // into ::realloc(). 00243 long new_len = (m_length < 16384) ? 16384 : 2*m_length; 00244 if ( m_length < len ) new_len += len; 00245 reserve(new_len); 00246 } 00247 }
long StreamBuffer::size | ( | ) | const [inline] |
Total buffer size.
Definition at line 249 of file StreamBuffer.h.
00249 { 00250 return m_length; 00251 }
ContainedLinks& StreamBuffer::containedLinks | ( | ) | [inline] |
Access to contained links.
Definition at line 253 of file StreamBuffer.h.
00253 { 00254 return m_containedLinks; 00255 }
const ContainedLinks& StreamBuffer::containedLinks | ( | ) | const [inline] |
CONST Access to contained links.
Definition at line 257 of file StreamBuffer.h.
00257 { 00258 return m_containedLinks; 00259 }
IdentifiedLinks& StreamBuffer::identifiedLinks | ( | ) | [inline] |
Access to identified links.
Definition at line 262 of file StreamBuffer.h.
00262 { 00263 return m_identifiedLinks; 00264 }
const IdentifiedLinks& StreamBuffer::identifiedLinks | ( | ) | const [inline] |
CONST Access to identified links.
Definition at line 266 of file StreamBuffer.h.
00266 { 00267 return m_identifiedLinks; 00268 }
void StreamBuffer::setMode | ( | Mode | m | ) | [inline] |
Set mode of the stream and allocate buffer.
Definition at line 271 of file StreamBuffer.h.
00271 { 00272 m_mode = m; 00273 m_pointer = 0; 00274 m_containedLinks.erase (m_containedLinks.begin(), m_containedLinks.end()); 00275 m_identifiedLinks.erase(m_identifiedLinks.begin(),m_identifiedLinks.end()); 00276 }
bool StreamBuffer::isReading | ( | ) | const [inline] |
bool StreamBuffer::isWriting | ( | ) | const [inline] |
long StreamBuffer::buffPointer | ( | ) | const [inline] |
Retrieve current buffer pointer.
Definition at line 288 of file StreamBuffer.h.
00288 { 00289 return m_pointer; 00290 }
void StreamBuffer::setBuffPointer | ( | long | ptr | ) | [inline] |
Retrieve current buffer pointer.
Definition at line 292 of file StreamBuffer.h.
00292 { 00293 m_pointer = ptr; 00294 }
void StreamBuffer::setAnalyzer | ( | AnalyzeFunction | fun = 0 |
) | [inline] |
Enable user analysis function.
Definition at line 296 of file StreamBuffer.h.
00296 { 00297 m_analyzer = fun; 00298 }
void StreamBuffer::swapToBuffer | ( | const void * | source, | |
int | siz | |||
) | [inline] |
Swap buffers: int, long, short, float and double.
Definition at line 597 of file StreamBuffer.h.
00597 { 00598 char buff[8], *tar, *src = (char*)source; 00599 extend (m_pointer+siz); 00600 tar = (char*)m_buffer+m_pointer; 00601 switch ( swapBuffer(siz) ) { 00602 case SINGLE_BYTE: 00603 *tar = *src; 00604 break; 00605 case SWAP: 00606 #ifdef __APPLE__ 00607 for(int i = 0,j = siz-1;i<siz;i++,j--) tar[j] = src[i]; 00608 #else 00609 ::_swab (src, buff, siz); 00610 #endif 00611 src = buff; 00612 case NOSWAP: 00613 memcpy(tar, src, siz); 00614 break; 00615 } 00616 m_pointer += siz; 00617 }
void StreamBuffer::swapFromBuffer | ( | void * | target, | |
int | siz | |||
) | [inline] |
Swap buffers: int, long, short, float and double.
Definition at line 620 of file StreamBuffer.h.
00620 { 00621 char* tar = (char*)target; 00622 char* src = (char*)m_buffer+m_pointer; 00623 switch ( swapBuffer(siz) ) { 00624 case SINGLE_BYTE: 00625 *tar = *src; 00626 break; 00627 case SWAP: 00628 #ifdef __APPLE__ 00629 for(int i = 0,j = siz-1;i<siz;i++,j--) tar[j] = src[i]; 00630 #else 00631 ::_swab (src, tar, siz); 00632 #endif 00633 break; 00634 case NOSWAP: 00635 ::memcpy(tar, src, siz); 00636 break; 00637 } 00638 m_pointer += siz; 00639 }
StreamBuffer& StreamBuffer::writeBytes | ( | const char * | str, | |
long | len | |||
) | [inline] |
Write string to output stream.
Definition at line 306 of file StreamBuffer.h.
00306 { 00307 extend( m_pointer+len+4 ); 00308 *this << len; 00309 memcpy(data()+buffPointer(), str, len); 00310 m_pointer += len; 00311 return *this; 00312 }
void StreamBuffer::getIdentifiedLink | ( | DataObject *& | pObject, | |
long & | hint | |||
) | [inline] |
Definition at line 314 of file StreamBuffer.h.
00314 { 00315 IdentifiedLink& l = m_identifiedLinks.back(); 00316 pObject = l.first; 00317 hint = l.second; 00318 m_identifiedLinks.pop_back(); 00319 }
void StreamBuffer::addIdentifiedLink | ( | const DataObject * | pObject, | |
long | hint | |||
) | [inline] |
Definition at line 320 of file StreamBuffer.h.
00320 { 00321 m_identifiedLinks.push_back( IdentifiedLink((DataObject*)pObject, hint) ); 00322 }
void StreamBuffer::getContainedLink | ( | ContainedObject *& | pObject, | |
long & | hint, | |||
long & | link | |||
) | [inline] |
Definition at line 324 of file StreamBuffer.h.
00324 { 00325 ContainedLink& l = m_containedLinks.back(); 00326 pObject = l.first; 00327 hint = l.second; 00328 link = l.third; 00329 m_containedLinks.pop_back(); 00330 }
void StreamBuffer::addContainedLink | ( | const ContainedObject * | pObject, | |
long | hint, | |||
long | link | |||
) | [inline] |
Definition at line 331 of file StreamBuffer.h.
00331 { 00332 m_containedLinks.push_back( ContainedLink((ContainedObject*)pObject, hint, link) ); 00333 }
StreamBuffer& StreamBuffer::operator<< | ( | longlong | data | ) | [inline] |
Output Streamer.
Definition at line 359 of file StreamBuffer.h.
00359 { 00360 swapToBuffer(&data, sizeof(data)); 00361 STREAM_ANALYSE(data, sizeof(data)); 00362 return *this; 00363 }
StreamBuffer& StreamBuffer::operator>> | ( | longlong & | data | ) | [inline] |
Input Streamer.
Definition at line 365 of file StreamBuffer.h.
00365 { 00366 swapFromBuffer(&data, sizeof(data)); 00367 return *this; 00368 }
StreamBuffer& StreamBuffer::operator<< | ( | int | data | ) | [inline] |
Output Streamer.
Definition at line 370 of file StreamBuffer.h.
00370 { 00371 swapToBuffer(&data, sizeof(data)); 00372 STREAM_ANALYSE(data, sizeof(data)); 00373 return *this; 00374 }
StreamBuffer& StreamBuffer::operator>> | ( | int & | data | ) | [inline] |
Input Streamer.
Definition at line 376 of file StreamBuffer.h.
00376 { 00377 swapFromBuffer(&data, sizeof(data)); 00378 return *this; 00379 }
StreamBuffer& StreamBuffer::operator<< | ( | unsigned int | data | ) | [inline] |
Output Streamer.
Definition at line 381 of file StreamBuffer.h.
00381 { 00382 swapToBuffer(&data, sizeof(data)); 00383 STREAM_ANALYSE(data, sizeof(data)); 00384 return *this; 00385 }
StreamBuffer& StreamBuffer::operator>> | ( | unsigned int & | data | ) | [inline] |
Input Streamer.
Definition at line 387 of file StreamBuffer.h.
00387 { 00388 swapFromBuffer(&data, sizeof(data)); 00389 return *this; 00390 }
StreamBuffer& StreamBuffer::operator<< | ( | long | data | ) | [inline] |
Output Streamer.
Definition at line 392 of file StreamBuffer.h.
00392 { 00393 swapToBuffer(&data, sizeof(data)); 00394 STREAM_ANALYSE(data, sizeof(data)); 00395 return *this; 00396 }
StreamBuffer& StreamBuffer::operator>> | ( | long & | data | ) | [inline] |
Input Streamer.
Definition at line 398 of file StreamBuffer.h.
00398 { 00399 swapFromBuffer(&data, sizeof(data)); 00400 return *this; 00401 }
StreamBuffer& StreamBuffer::operator<< | ( | unsigned long | data | ) | [inline] |
Output Streamer.
Definition at line 403 of file StreamBuffer.h.
00403 { 00404 swapToBuffer(&data, sizeof(data)); 00405 STREAM_ANALYSE(data, sizeof(data)); 00406 return *this; 00407 }
StreamBuffer& StreamBuffer::operator>> | ( | unsigned long & | data | ) | [inline] |
Input Streamer.
Definition at line 409 of file StreamBuffer.h.
00409 { 00410 swapFromBuffer(&data, sizeof(data)); 00411 return *this; 00412 }
StreamBuffer& StreamBuffer::operator<< | ( | short | data | ) | [inline] |
Output Streamer.
Definition at line 414 of file StreamBuffer.h.
00414 { 00415 swapToBuffer(&data, sizeof(data)); 00416 STREAM_ANALYSE(data, sizeof(data)); 00417 return *this; 00418 }
StreamBuffer& StreamBuffer::operator>> | ( | short & | data | ) | [inline] |
Input Streamer.
Definition at line 420 of file StreamBuffer.h.
00420 { 00421 swapFromBuffer(&data, sizeof(data)); 00422 return *this; 00423 }
StreamBuffer& StreamBuffer::operator<< | ( | unsigned short | data | ) | [inline] |
Output Streamer.
Definition at line 425 of file StreamBuffer.h.
00425 { 00426 swapToBuffer(&data, sizeof(data)); 00427 STREAM_ANALYSE(data, sizeof(data)); 00428 return *this; 00429 }
StreamBuffer& StreamBuffer::operator>> | ( | unsigned short & | data | ) | [inline] |
Input Streamer.
Definition at line 431 of file StreamBuffer.h.
00431 { 00432 swapFromBuffer(&data, sizeof(data)); 00433 return *this; 00434 }
StreamBuffer& StreamBuffer::operator<< | ( | char | data | ) | [inline] |
Output Streamer.
Definition at line 436 of file StreamBuffer.h.
00436 { 00437 swapToBuffer(&data, sizeof(data)); 00438 STREAM_ANALYSE(data, sizeof(data)); 00439 return *this; 00440 }
StreamBuffer& StreamBuffer::operator>> | ( | char & | data | ) | [inline] |
Input Streamer.
Definition at line 442 of file StreamBuffer.h.
00442 { 00443 swapFromBuffer(&data, sizeof(data)); 00444 return *this; 00445 }
StreamBuffer& StreamBuffer::operator<< | ( | unsigned char | data | ) | [inline] |
Output Streamer.
Definition at line 447 of file StreamBuffer.h.
00447 { 00448 swapToBuffer(&data, sizeof(data)); 00449 STREAM_ANALYSE(data, sizeof(data)); 00450 return *this; 00451 }
StreamBuffer& StreamBuffer::operator>> | ( | unsigned char & | data | ) | [inline] |
Input Streamer.
Definition at line 453 of file StreamBuffer.h.
00453 { 00454 swapFromBuffer(&data, sizeof(data)); 00455 return *this; 00456 }
StreamBuffer& StreamBuffer::operator<< | ( | float | data | ) | [inline] |
Output Streamer.
Definition at line 458 of file StreamBuffer.h.
00458 { 00459 swapToBuffer(&data, sizeof(data)); 00460 STREAM_ANALYSE(data, sizeof(data)); 00461 return *this; 00462 }
StreamBuffer& StreamBuffer::operator>> | ( | float & | data | ) | [inline] |
Input Streamer.
Definition at line 464 of file StreamBuffer.h.
00464 { 00465 swapFromBuffer(&data, sizeof(data)); 00466 return *this; 00467 }
StreamBuffer& StreamBuffer::operator<< | ( | double | data | ) | [inline] |
Output Streamer.
Definition at line 469 of file StreamBuffer.h.
00469 { 00470 swapToBuffer(&data, sizeof(data)); 00471 STREAM_ANALYSE(data, sizeof(data)); 00472 return *this; 00473 }
StreamBuffer& StreamBuffer::operator>> | ( | double & | data | ) | [inline] |
Input Streamer.
Definition at line 475 of file StreamBuffer.h.
00475 { 00476 swapFromBuffer(&data, sizeof(data)); 00477 return *this; 00478 }
StreamBuffer& StreamBuffer::operator>> | ( | char * | data | ) | [inline] |
StreamBuffer& StreamBuffer::operator<< | ( | const char * | data | ) | [inline] |
Streamer to write strings in (char*) format.
Definition at line 489 of file StreamBuffer.h.
00489 { 00490 const char* ptr = 0 == data ? "" : data; 00491 int len = strlen(ptr)+1; 00492 if ( 0 == m_analyzer ) 00493 writeBytes(ptr, len); 00494 else { 00495 STREAM_ANALYSE(data, len); 00496 } 00497 return *this; 00498 }
StreamBuffer& StreamBuffer::operator>> | ( | std::string & | data | ) | [inline] |
StreamBuffer& StreamBuffer::operator<< | ( | const std::string & | data | ) | [inline] |
Streamer to write strings in (std::string) format.
Definition at line 509 of file StreamBuffer.h.
00509 { 00510 if ( 0 == m_analyzer) { 00511 const char* ptr = data.c_str(); 00512 long len = data.length(); 00513 writeBytes(ptr, len); 00514 } 00515 else { 00516 STREAM_ANALYSE(data, sizeof(data)); 00517 } 00518 return *this; 00519 }
StreamBuffer& StreamBuffer::operator>> | ( | TYPE *& | refpObject | ) | [inline] |
Streamer to read links to contained or identified objects.
The specified internal function call distinguishes between contained and identified objects.
refpObject | Reference to pointer to object to be loaded. |
Definition at line 526 of file StreamBuffer.h.
00526 { 00527 return getObjectPointer(refpObject, refpObject); 00528 }
StreamBuffer& StreamBuffer::operator<< | ( | const ContainedObject * | pObject | ) | [inline] |
Streamer to write links to contained objects.
Links to contained objects are not stored immediately, but collected instead and analyzed later.
pObject | Pointer to object to be loaded. |
Definition at line 536 of file StreamBuffer.h.
00536 { 00537 STREAM_ANALYSE(pObject, sizeof(pObject)); 00538 addContainedLink(pObject, INVALID, INVALID); 00539 return *this; 00540 }
StreamBuffer& StreamBuffer::operator<< | ( | const DataObject * | pObject | ) | [inline] |
Streamer to write links to identified objects.
Links to identified objects are not stored immediately, but collected instead and analyzed later.
pObject | Pointer to object to be loaded. |
Definition at line 548 of file StreamBuffer.h.
00548 { 00549 STREAM_ANALYSE(pObject, sizeof(pObject)); 00550 addIdentifiedLink(pObject, INVALID); 00551 return *this; 00552 }
void StreamBuffer::serialize | ( | DataIO & | ioObject | ) | [inline] |
Serialize the buffer using an IO object.
The streambuffer object will make use of a DataIO object, which can be specialized for streaming to any representation like e.g. disk files, Root files, Objectivity etc.
ioObject | Reference to data IO object. |
Definition at line 560 of file StreamBuffer.h.
00560 { 00561 ioObject.serialize ( *this ); 00562 m_pointer = 0; 00563 }
friend class DataObject [friend] |
Mode StreamBuffer::m_mode [protected] |
Boolean indicating wether the stream is in read or write mode.
Definition at line 158 of file StreamBuffer.h.
long StreamBuffer::m_pointer [protected] |
long StreamBuffer::m_length [protected] |
char* StreamBuffer::m_buffer [protected] |
bool StreamBuffer::m_swapEnabled [protected] |
ContainedLinks StreamBuffer::m_containedLinks [protected] |
IdentifiedLinks StreamBuffer::m_identifiedLinks [protected] |
AnalyzeFunction StreamBuffer::m_analyzer [protected] |