#include <Header.h>
Inheritance diagram for eformat::Header< TPointer >:
Public Member Functions | |
Header & | assign (const TPointer &it, uint32_t match) |
Header & | assign (const TPointer &it, uint32_t match) |
virtual bool | check () const |
virtual bool | check () const |
virtual void | child (TPointer &p, size_t n) const |
virtual void | child (TPointer &p, size_t n) const |
virtual void | child_check (TPointer &p, size_t n) const |
virtual void | child_check (TPointer &p, size_t n) const |
virtual uint32_t | children (TPointer *p, size_t max) const |
virtual uint32_t | children (TPointer *p, size_t max) const |
void | end (TPointer &it) const |
void | end (TPointer &it) const |
uint32_t | fragment_size_word () const |
uint32_t | fragment_size_word () const |
Header (const Header &other) | |
Header () | |
Header (const TPointer &it, uint32_t match) | |
Header (const Header &other) | |
Header () | |
Header (const TPointer &it, uint32_t match) | |
uint32_t | header_size_word () const |
uint32_t | header_size_word () const |
uint32_t | marker () const |
uint32_t | marker () const |
virtual uint32_t | nchildren () const |
virtual uint32_t | nchildren () const |
uint32_t | nspecific () const |
uint32_t | nspecific () const |
uint32_t | nstatus () const |
uint32_t | nstatus () const |
Header & | operator= (const Header &other) |
Header & | operator= (const Header &other) |
void | payload (TPointer &it) const |
void | payload (TPointer &it) const |
uint32_t | payload_size_word (void) const |
uint32_t | payload_size_word (void) const |
uint32_t | source_id () const |
uint32_t | source_id () const |
void | specific_header (TPointer &it) const |
void | specific_header (TPointer &it) const |
void | start (TPointer &it) const |
void | start (TPointer &it) const |
void | status (TPointer &it) const |
void | status (TPointer &it) const |
uint32_t | version () const |
uint32_t | version () const |
virtual | ~Header () |
virtual | ~Header () |
Private Attributes | |
TPointer | m_start |
my start word |
|
To build a header given the containing buffer. I need to know where the header starts in order to do that.
00225 : m_start(it) 00226 { 00227 ERS_DEBUG_3("Building header 0x%x from iterator", match); 00228 if (marker() != match) { 00229 throw EFORMAT_WRONG_MARKER(marker(), match); 00230 } 00231 ERS_DEBUG_1("Initialized header with source identifier = %s", 00232 eformat::helper::SourceIdentifier(match).human().c_str()); 00233 }
|
|
Builds an empty, otherwise useless Header 00056 : m_start() {}
|
|
Copy constructor
|
|
Destructor virtualisation 00068 {}
|
|
To build a header given the containing buffer. I need to know where the header starts in order to do that.
|
|
Builds an empty, otherwise useless Header 00056 : m_start() {}
|
|
Copy constructor
|
|
Destructor virtualisation 00068 {}
|
|
Reassign this header
|
|
Reassign this header
00237 { 00238 ERS_DEBUG_3("Rebuilding header 0x%x from iterator", match); 00239 m_start = it; 00240 if (marker() != match) { 00241 throw EFORMAT_WRONG_MARKER(marker(), match); 00242 } 00243 ERS_DEBUG_1("Re-initialized header with source identifier = %s", 00244 eformat::helper::SourceIdentifier(match).human().c_str()); 00245 return *this; 00246 }
|
|
Says if the generic part of the header is valid. This may throw exceptions. Reimplemented in eformat::FullEventFragment< TPointer >, eformat::ROBFragment< TPointer >, eformat::ROSFragment< TPointer >, eformat::SubDetectorFragment< TPointer >, eformat::FullEventFragment< TPointer >, eformat::ROBFragment< TPointer >, eformat::ROSFragment< TPointer >, and eformat::SubDetectorFragment< TPointer >. |
|
Says if the generic part of the header is valid. This may throw exceptions. Reimplemented in eformat::FullEventFragment< TPointer >, eformat::ROBFragment< TPointer >, eformat::ROSFragment< TPointer >, eformat::SubDetectorFragment< TPointer >, eformat::FullEventFragment< TPointer >, eformat::ROBFragment< TPointer >, eformat::ROSFragment< TPointer >, and eformat::SubDetectorFragment< TPointer >. 00250 { 00251 ERS_DEBUG_2("Checking for consistency of fragment of type %s [%s]", 00252 eformat::marker2string(marker()).c_str(), 00253 eformat::helper::SourceIdentifier(source_id()).human().c_str()); 00254 if ( version() >> 16 != eformat::MAJOR_DEFAULT_VERSION ) 00255 throw EFORMAT_BAD_VERSION(version() >> 16, eformat::MAJOR_DEFAULT_VERSION); 00256 if ( header_size_word() != (7 + nstatus() + nspecific()) ) 00257 throw EFORMAT_SIZE_CHECK(header_size_word(), 00258 (7 + nstatus() + nspecific())); 00259 return true; 00260 }
|
|
Returns the nth child fragment. If the nth fragment doesn't exist, the behaviour is undefined.
|
|
Returns the nth child fragment. If the nth fragment doesn't exist, the behaviour is undefined.
00273 { 00274 ERS_DEBUG_2("User asked for child %ud of fragment type %s [%s]", n, 00275 eformat::marker2string(marker()).c_str(), 00276 eformat::helper::SourceIdentifier(source_id()).human().c_str()); 00277 TPointer next; 00278 payload(next); 00279 for (size_t i=0; i<n; ++i) next += next[1]; 00280 ERS_DEBUG_3("Set user object"); 00281 p = next; 00282 }
|
|
Returns the nth child fragment. If the nth fragment doesn't exist, an exception is thrown.
|
|
Returns the nth child fragment. If the nth fragment doesn't exist, an exception is thrown.
00286 { 00287 uint32_t total = nchildren(); 00288 if (n >= total) throw EFORMAT_NO_SUCH_CHILD(n, total); 00289 child(p, n); 00290 }
|
|
Returns all the children of this fragment. The input to this method is a valid set of iterators to existing, pre-allocated pointers
|
|
Returns all the children of this fragment. The input to this method is a valid set of iterators to existing, pre-allocated pointers
00294 { 00295 ERS_DEBUG_2("Retrieving all children..."); 00296 TPointer payload_start; 00297 payload(payload_start); 00298 try { 00299 return find_fragments(child_marker(static_cast<HeaderMarker>(marker())), 00300 payload_start, payload_size_word(), p, max); 00301 } 00302 catch (WrongMarkerIssue& ex) { 00303 //This normally means the fragment size is wrong... 00304 throw EFORMAT_WRONG_SIZE(fragment_size_word()); 00305 } 00306 return 0; 00307 }
|
|
Sets the pointer to one-past my end position
00144 { it = m_start; it += fragment_size_word(); }
|
|
Sets the pointer to one-past my end position
00144 { it = m_start; it += fragment_size_word(); }
|
|
Returns the size, in words, of the current fragment. 00100 { return m_start[1]; }
|
|
Returns the size, in words, of the current fragment. 00100 { return m_start[1]; }
|
|
Returns the size, in words, of the current header. That does include the specific part of the header. 00106 { return m_start[2]; }
|
|
Returns the size, in words, of the current header. That does include the specific part of the header. 00106 { return m_start[2]; }
|
|
Returns the fragment type. 00095 { return m_start[0]; }
|
|
Returns the fragment type. 00095 { return m_start[0]; }
|
|
Returns the number of children available. |
|
Returns the number of children available. 00264 { 00265 ERS_DEBUG_2("User asked for number of children of fragment type %s [%s]", 00266 eformat::marker2string(marker()).c_str(), 00267 eformat::helper::SourceIdentifier(source_id()).human().c_str()); 00268 return children(0,0); 00269 }
|
|
Returns the number of specific words available in the specific header part
|
|
Returns the number of specific words available in the specific header part
|
|
Returns the number of status words available 00121 { return m_start[5]; }
|
|
Returns the number of status words available 00121 { return m_start[5]; }
|
|
Assigment operator
|
|
Assigment operator
|
|
Sets the pointer to where the payload starts
00136 { it = m_start; it+= header_size_word(); }
|
|
Sets the pointer to where the payload starts
00136 { it = m_start; it+= header_size_word(); }
|
|
Returns the payload size 00150 { return fragment_size_word() - header_size_word(); }
|
|
Returns the payload size 00150 { return fragment_size_word() - header_size_word(); }
|
|
Returns the full source identifier. 00116 { return m_start[4]; }
|
|
Returns the full source identifier. 00116 { return m_start[4]; }
|
|
Returns an iterator to the start of the specific header part (this does not include the number of specific header fragments)
00173 { it = m_start; it += 7 + nstatus(); }
|
|
Returns an iterator to the start of the specific header part (this does not include the number of specific header fragments)
00173 { it = m_start; it += 7 + nstatus(); }
|
|
Sets the pointer to my start
00128 { it = m_start; }
|
|
Sets the pointer to my start
00128 { it = m_start; }
|
|
Returns the status words, as an iterator to the status words available.
00157 { it = m_start; it += 6; }
|
|
Returns the status words, as an iterator to the status words available.
00157 { it = m_start; it += 6; }
|
|
Returns the formatting version. 00111 { return m_start[3]; }
|
|
Returns the formatting version. 00111 { return m_start[3]; }
|
|
my start word
Reimplemented in eformat::FullEventFragment< TPointer >, eformat::ROBFragment< TPointer >, eformat::ROSFragment< TPointer >, and eformat::SubDetectorFragment< TPointer >. |