LCIO
02.17
|
A bit field of 64bits that allows convenient declaration and manipulation of sub fields of various widths. More...
#include <BitField64.h>
Public Types | |
typedef std::map< std::string, unsigned int > | IndexMap |
Public Member Functions | |
~BitField64 () | |
BitField64 (const std::string &initString) | |
The c'tor takes an initialization string of the form: <fieldDesc>[,<fieldDesc>...] fieldDesc = name:[start]:[-]length where: name: The name of the field start: The start bit of the field. More... | |
lcio::long64 | getValue () const |
Returns the current 64bit value. More... | |
void | setValue (lcio::long64 value) |
Set a new 64bit value. More... | |
void | reset () |
Reset - same as setValue(0) - useful if the same encoder is used for many objects. More... | |
BitFieldValue & | operator[] (size_t theIndex) |
Acces to field through index. More... | |
const BitFieldValue & | operator[] (size_t theIndex) const |
Const acces to field through index. More... | |
unsigned | highestBit () const |
Highest bit used in fields [0-63]. More... | |
size_t | size () const |
Number of values. More... | |
size_t | index (const std::string &name) const |
Index for field named 'name'. More... | |
BitFieldValue & | operator[] (const std::string &name) |
Access to field through name . More... | |
const BitFieldValue & | operator[] (const std::string &name) const |
Const Access to field through name . More... | |
unsigned | lowWord () const |
The low word, bits 0-31. More... | |
unsigned | highWord () const |
The high word, bits 32-63. More... | |
std::string | fieldDescription () const |
Return a valid description string of all fields. More... | |
std::string | valueString () const |
Return a string with a comma separated list of the current sub field values. More... | |
Protected Member Functions | |
void | addField (const std::string &name, unsigned offset, int width) |
Add an additional field to the list. More... | |
void | init (const std::string &initString) |
Decode the initialization string as described in the constructor. More... | |
BitField64 () | |
No default c'tor. More... | |
Protected Attributes | |
std::vector< BitFieldValue * > | _fields {} |
lcio::long64 | _value |
IndexMap | _map {} |
lcio::long64 | _joined |
Friends | |
std::ostream & | operator<< (std::ostream &os, const BitField64 &b) |
Operator for dumping BitField64 to streams. More... | |
A bit field of 64bits that allows convenient declaration and manipulation of sub fields of various widths.
Example:
BitField64 b("layer:7,system:-3,barrel:3,theta:32:11,phi:11" ) ;
b[ "layer" ] = 123 ;
b[ "system" ] = -4 ;
b[ "barrel" ] = 7 ;
b[ "theta" ] = 180 ;
b[ "phi" ] = 270 ;
...
int theta = b["theta"] ;
...
unsigned phiIndex = b.index("phi) ;
int phi = b[ phiIndex ] ;
Definition at line 132 of file BitField64.h.
typedef std::map<std::string, unsigned int> UTIL::BitField64::IndexMap |
Definition at line 138 of file BitField64.h.
|
inline |
Definition at line 141 of file BitField64.h.
References _fields.
|
inline |
The c'tor takes an initialization string of the form:
<fieldDesc>[,<fieldDesc>...]
fieldDesc = name:[start]:[-]length
where:
name: The name of the field
start: The start bit of the field.
If omitted assumed to start immediately following previous field, or at the least significant bit if the first field.
length: The number of bits in the field. If preceeded by '-' the field is signed, otherwise unsigned.
Bit numbering is from the least significant bit (bit 0) to the most significant (bit 63).
Example: "layer:7,system:-3,barrel:3,theta:32:11,phi:11"
Definition at line 161 of file BitField64.h.
References init().
|
inlineprotected |
No default c'tor.
Definition at line 244 of file BitField64.h.
|
protected |
Add an additional field to the list.
Definition at line 172 of file BitField64.cc.
References _fields, _joined, _map, _value, std::hex(), UTIL::BitFieldValue::mask(), and std::stringstream::str().
Referenced by init().
std::string UTIL::BitField64::fieldDescription | ( | ) | const |
Return a valid description string of all fields.
Definition at line 136 of file BitField64.cc.
References _fields, and std::stringstream::str().
|
inline |
unsigned UTIL::BitField64::highestBit | ( | ) | const |
Highest bit used in fields [0-63].
Definition at line 109 of file BitField64.cc.
References _fields.
Referenced by UTIL::CellIDEncoder< T >::setCellIDFlag().
|
inline |
The high word, bits 32-63.
Definition at line 221 of file BitField64.h.
References _value.
Referenced by UTIL::CellIDEncoder< T >::setCellID().
size_t UTIL::BitField64::index | ( | const std::string & | name | ) | const |
Index for field named 'name'.
Definition at line 97 of file BitField64.cc.
References _map, std::map< K, T >::end(), and std::map< K, T >::find().
Referenced by operator[]().
|
protected |
Decode the initialization string as described in the constructor.
Definition at line 195 of file BitField64.cc.
References addField(), std::string::begin(), std::string::end(), std::for_each(), std::vector< T >::size(), and std::stringstream::str().
Referenced by BitField64().
|
inline |
The low word, bits 0-31.
Definition at line 217 of file BitField64.h.
References _value.
Referenced by UTIL::CellIDEncoder< T >::setCellID().
|
inline |
|
inline |
Const acces to field through index.
Definition at line 186 of file BitField64.h.
References _fields.
|
inline |
Access to field through name .
Definition at line 203 of file BitField64.h.
|
inline |
Const Access to field through name .
Definition at line 209 of file BitField64.h.
|
inline |
Reset - same as setValue(0) - useful if the same encoder is used for many objects.
Definition at line 176 of file BitField64.h.
References _value.
|
inline |
Set a new 64bit value.
Definition at line 172 of file BitField64.h.
References _value.
Referenced by UTIL::CellIDDecoder< T >::operator()(), and UTIL::LCTrackerCellID::valueString().
|
inline |
std::string UTIL::BitField64::valueString | ( | ) | const |
Return a string with a comma separated list of the current sub field values.
Definition at line 122 of file BitField64.cc.
References _fields, and std::stringstream::str().
Referenced by UTIL::LCTrackerCellID::valueString().
|
friend |
Operator for dumping BitField64 to streams.
|
protected |
Definition at line 249 of file BitField64.h.
Referenced by addField(), fieldDescription(), highestBit(), operator[](), size(), valueString(), and ~BitField64().
|
protected |
Definition at line 252 of file BitField64.h.
Referenced by addField().
|
protected |
Definition at line 251 of file BitField64.h.
Referenced by addField(), index(), and UTIL::operator<<().
|
protected |
Definition at line 250 of file BitField64.h.
Referenced by addField(), getValue(), highWord(), lowWord(), UTIL::operator<<(), reset(), and setValue().