#include <DaqTraits.h>
Public Types | |
typedef std::vector< BitsDefinition > | Definitions |
Public Member Functions | |
virtual | ~DaqTraits () |
Destroy this instance of the class. | |
virtual unsigned int | majorVersion () const =0 |
virtual unsigned int | minorVersion () const =0 |
virtual const std::string | versionString () const =0 |
Returns the version of the event format as a string. | |
virtual unsigned int | marker (unsigned int marker) const |
Returns the marker of the type of specified header. | |
virtual unsigned int | illegalMarker () const =0 |
Returns the index value for an illegal header. | |
virtual unsigned int | illegalField () const =0 |
Returns the index value for an illegal field. | |
virtual const char * | boolAsString (bool value) const |
Returns the string for the specified boolean. | |
const DaqTraits::Definitions & | bitsDefinitions (unsigned int component) const |
Returns the set of all definitions of fields within a components. | |
Protected Member Functions | |
DaqTraits () | |
Creates an instance of this class. | |
unsigned int | index (unsigned int field) const |
Returns the index of the field in its block. | |
virtual unsigned int | markersEnd () const =0 |
Returns the maximum number of headers in an event. | |
virtual const unsigned int * | markers () const =0 |
Returns the markers for the records. | |
virtual unsigned int | fieldsEnd () const =0 |
Returns the maximum field value for a particluar format. | |
virtual const unsigned int * | indices () const =0 |
Returns the indices of shifts for fields. | |
virtual const unsigned int * | shifts () const =0 |
Returns the array of shifts for fields. | |
virtual const unsigned int * | masks () const =0 |
Returns the array of marks for fields. | |
virtual const std::string * | descriptions () const |
Returns the array of descriptions for fields. | |
virtual DaqTraits::Definitions * | definitions (unsigned int component) const |
Returns the array of bits definitions for a compement. | |
virtual void | setDefinitions (DaqTraits::Definitions *definitions, unsigned int component) |
Sets the array of bits definitions for a compoment. | |
virtual const unsigned int * | componentFields (unsigned int component) const |
Sets the array of fields for a compoment. | |
virtual const unsigned int | componentFieldsEnd (unsigned int component) const |
Returns the maximum indexthe array of fields for a compoment. | |
Static Protected Member Functions | |
static unsigned int | readUnsignedInt (const char *&buffer, const DaqTraits &traits, unsigned int field) |
Utility method to access buffer to determine correct traits. | |
Private Member Functions | |
DaqTraits (DaqTraits &rhs) | |
Suppress default. | |
DaqTraits & | operator= (DaqTraits &rhs) |
Suppress default. | |
unsigned int | shift (unsigned int field) const |
Returns the shift of the field in its block. | |
unsigned int | mask (unsigned int field) const |
Returns the mask of the field in its block. | |
Friends | |
class | DaqBuffer |
Definition at line 20 of file DaqTraits.h.
typedef std::vector<BitsDefinition> DybDaq::DaqTraits::Definitions |
Definition at line 26 of file DaqTraits.h.
DaqTraits::~DaqTraits | ( | ) | [virtual] |
DaqTraits::DaqTraits | ( | ) | [protected] |
DybDaq::DaqTraits::DaqTraits | ( | DaqTraits & | rhs | ) | [private] |
Suppress default.
virtual unsigned int DybDaq::DaqTraits::majorVersion | ( | ) | const [pure virtual] |
virtual unsigned int DybDaq::DaqTraits::minorVersion | ( | ) | const [pure virtual] |
virtual const std::string DybDaq::DaqTraits::versionString | ( | ) | const [pure virtual] |
Returns the version of the event format as a string.
unsigned int DaqTraits::marker | ( | unsigned int | marker | ) | const [virtual] |
Returns the marker of the type of specified header.
Definition at line 35 of file DaqTraits.cc.
00035 { 00036 if (marker >= markersEnd()) { 00037 return illegalMarker(); 00038 } 00039 return markers()[marker]; 00040 }
virtual unsigned int DybDaq::DaqTraits::illegalMarker | ( | ) | const [pure virtual] |
Returns the index value for an illegal header.
virtual unsigned int DybDaq::DaqTraits::illegalField | ( | ) | const [pure virtual] |
Returns the index value for an illegal field.
const char * DaqTraits::boolAsString | ( | bool | value | ) | const [virtual] |
const DaqTraits::Definitions & DaqTraits::bitsDefinitions | ( | unsigned int | component | ) | const |
Returns the set of all definitions of fields within a components.
Definition at line 90 of file DaqTraits.cc.
00090 { 00091 DaqTraits::Definitions* componentDefinitions = definitions(component); 00092 if (0 == componentDefinitions) { 00093 componentDefinitions = new DaqTraits::Definitions(); 00094 const unsigned int* fieldIndices = componentFields(component); 00095 const unsigned int finished = componentFieldsEnd(component); 00096 for (unsigned int index = 0; 00097 finished != index; 00098 ++index) { 00099 const unsigned int field = fieldIndices[index]; 00100 unsigned int shift = shifts()[field]; 00101 const unsigned int mask = masks()[field]; 00102 unsigned int count = 0; 00103 unsigned int bit = 1; 00104 if (0 != mask) { 00105 if (0 == (bit & mask)) { 00106 // Assumes it is binary 00107 while (32 > count && (0 == (bit & mask)) ) { 00108 bit <<= 1; 00109 ++count; 00110 } 00111 shift = count - 1; 00112 count = 1; 00113 } else { 00114 while (32 > count && (0 != (bit & mask)) ) { 00115 bit <<= 1; 00116 ++count; 00117 } 00118 } 00119 } 00120 componentDefinitions->push_back(BitsDefinition(field, 00121 indices()[field], 00122 shift, 00123 count, 00124 descriptions()[field])); 00125 } 00126 const_cast<DaqTraits*>(this)->setDefinitions(componentDefinitions, 00127 component); 00128 } 00129 return *componentDefinitions; 00130 }
unsigned int DaqTraits::readUnsignedInt | ( | const char *& | buffer, | |
const DaqTraits & | traits, | |||
unsigned int | field | |||
) | [static, protected] |
Utility method to access buffer to determine correct traits.
Definition at line 24 of file DaqTraits.cc.
00026 { 00027 unsigned int index = traits.index(field); 00028 if (index == traits.illegalField()) { 00029 return 0; 00030 } 00031 unsigned int fourBytes = *(((unsigned int*)buffer) + index); 00032 return (fourBytes >> traits.shift(field)) & traits.mask(field); 00033 }
unsigned int DaqTraits::index | ( | unsigned int | field | ) | const [protected] |
Returns the index of the field in its block.
Definition at line 42 of file DaqTraits.cc.
00042 { 00043 if (field >= fieldsEnd()) { 00044 return illegalField(); 00045 } 00046 return indices()[field]; 00047 }
virtual unsigned int DybDaq::DaqTraits::markersEnd | ( | ) | const [protected, pure virtual] |
Returns the maximum number of headers in an event.
virtual const unsigned int* DybDaq::DaqTraits::markers | ( | ) | const [protected, pure virtual] |
Returns the markers for the records.
virtual unsigned int DybDaq::DaqTraits::fieldsEnd | ( | ) | const [protected, pure virtual] |
Returns the maximum field value for a particluar format.
virtual const unsigned int* DybDaq::DaqTraits::indices | ( | ) | const [protected, pure virtual] |
Returns the indices of shifts for fields.
virtual const unsigned int* DybDaq::DaqTraits::shifts | ( | ) | const [protected, pure virtual] |
Returns the array of shifts for fields.
virtual const unsigned int* DybDaq::DaqTraits::masks | ( | ) | const [protected, pure virtual] |
Returns the array of marks for fields.
const string * DaqTraits::descriptions | ( | ) | const [protected, virtual] |
DaqTraits::Definitions * DaqTraits::definitions | ( | unsigned int | component | ) | const [protected, virtual] |
void DaqTraits::setDefinitions | ( | DaqTraits::Definitions * | definitions, | |
unsigned int | component | |||
) | [protected, virtual] |
const unsigned int * DaqTraits::componentFields | ( | unsigned int | component | ) | const [protected, virtual] |
const unsigned int DaqTraits::componentFieldsEnd | ( | unsigned int | component | ) | const [protected, virtual] |
Returns the maximum indexthe array of fields for a compoment.
Definition at line 82 of file DaqTraits.cc.
unsigned int DaqTraits::shift | ( | unsigned int | field | ) | const [private] |
Returns the shift of the field in its block.
Definition at line 49 of file DaqTraits.cc.
00049 { 00050 if (field >= fieldsEnd()) { 00051 return 0; 00052 } 00053 return shifts()[field]; 00054 }
unsigned int DaqTraits::mask | ( | unsigned int | field | ) | const [private] |
Returns the mask of the field in its block.
Definition at line 56 of file DaqTraits.cc.
00056 { 00057 if (field >= fieldsEnd()) { 00058 return 0; 00059 } 00060 return masks()[field]; 00061 }
friend class DaqBuffer [friend] |
Definition at line 24 of file DaqTraits.h.