Project
Loading...
Searching...
No Matches
o2::algorithm Namespace Reference

Namespaces

namespace  flatten
 
namespace  pageparser
 

Classes

class  BitstreamReader
 
struct  Composite
 
class  ForwardParser
 
class  PageParser
 
class  ReverseParser
 
struct  StaticSequenceAllocator
 
class  TableView
 
struct  typesize
 
struct  typesize< void >
 

Functions

template<typename PtrType , typename SizeType , typename HeaderType , typename HeaderCallbackType , typename... MoreTypes>
void dispatchHeaderStackCallback (PtrType ptr, SizeType size, HeaderType header, HeaderCallbackType onHeader, MoreTypes &&... types)
 
template<typename PtrType , typename SizeType , typename HeaderType , typename HeaderCallbackType >
void dispatchHeaderStackCallback (PtrType ptr, SizeType size, HeaderType, HeaderCallbackType onHeader)
 
template<typename PtrType , typename SizeType >
void dispatchHeaderStackCallback (PtrType ptr, SizeType size)
 
template<typename PtrType , typename SizeType , typename HeaderType , typename... MoreTypes>
void parseHeaderStack (PtrType ptr, SizeType size, HeaderType &header, MoreTypes &&... types)
 
template<typename PtrType , typename SizeType , typename HeaderType >
void parseHeaderStack (PtrType ptr, SizeType size, HeaderType &header)
 
template<typename PtrType , typename SizeType >
void parseHeaderStack (PtrType ptr, SizeType size)
 
template<typename InputListT , typename GetPointerFctT , typename GetSizeFctT , typename InsertFctT , typename... HeaderStackTypes>
int parseO2Format (const InputListT &list, GetPointerFctT getPointer, GetSizeFctT getSize, InsertFctT insert, HeaderStackTypes &&... stackArgs)
 
template<typename T , typename... TArgs>
constexpr size_t sequenceLength (const T &first, const TArgs... args) noexcept
 
template<typename T >
constexpr size_t sequenceLength (const T &first) noexcept
 
template<typename BufferT , typename T , typename... TArgs>
constexpr size_t sequenceInsert (BufferT *buffer, const T &first, const TArgs... args) noexcept
 recursive insert of variable number of objects
 
template<typename BufferT , typename T >
constexpr size_t sequenceInsert (BufferT *buffer, const T &element) noexcept
 terminating template specialization, i.e. for the last element
 
 BOOST_AUTO_TEST_CASE (test_BitstreamReader_basic)
 
 BOOST_AUTO_TEST_CASE (test_BitstreamReader_operator)
 
 BOOST_AUTO_TEST_CASE (test_BitstreamReader_bitset)
 

Function Documentation

◆ BOOST_AUTO_TEST_CASE() [1/3]

o2::algorithm::BOOST_AUTO_TEST_CASE ( test_BitstreamReader_basic  )

Definition at line 33 of file test_BitstreamReader.cxx.

◆ BOOST_AUTO_TEST_CASE() [2/3]

o2::algorithm::BOOST_AUTO_TEST_CASE ( test_BitstreamReader_bitset  )

Definition at line 89 of file test_BitstreamReader.cxx.

◆ BOOST_AUTO_TEST_CASE() [3/3]

o2::algorithm::BOOST_AUTO_TEST_CASE ( test_BitstreamReader_operator  )

Definition at line 60 of file test_BitstreamReader.cxx.

◆ dispatchHeaderStackCallback() [1/3]

template<typename PtrType , typename SizeType >
void o2::algorithm::dispatchHeaderStackCallback ( PtrType  ptr,
SizeType  size 
)

Definition at line 79 of file HeaderStack.h.

◆ dispatchHeaderStackCallback() [2/3]

template<typename PtrType , typename SizeType , typename HeaderType , typename HeaderCallbackType , typename... MoreTypes>
void o2::algorithm::dispatchHeaderStackCallback ( PtrType  ptr,
SizeType  size,
HeaderType  header,
HeaderCallbackType  onHeader,
MoreTypes &&...  types 
)

Generic utility for the O2 header stack, redirect to header specific callbacks

The O2 header stack consists of one or more headers. The DataHeader is the first one and mandatory. Other optional headers can be recursively extracted from a buffer with one call to this utility function. For each header a pair of type and callback has to be provided. The header type can be provided as a dummy parameter, the callback with a lambda or any callable object.

Usage: dispatchHeaderStackCallback(ptr, size, MyHeader(), [] (const auto & h) { // do something with h }

Definition at line 90 of file HeaderStack.h.

◆ dispatchHeaderStackCallback() [3/3]

template<typename PtrType , typename SizeType , typename HeaderType , typename HeaderCallbackType >
void o2::algorithm::dispatchHeaderStackCallback ( PtrType  ptr,
SizeType  size,
HeaderType  ,
HeaderCallbackType  onHeader 
)

Definition at line 66 of file HeaderStack.h.

◆ parseHeaderStack() [1/3]

template<typename PtrType , typename SizeType >
void o2::algorithm::parseHeaderStack ( PtrType  ptr,
SizeType  size 
)

Definition at line 145 of file HeaderStack.h.

◆ parseHeaderStack() [2/3]

template<typename PtrType , typename SizeType , typename HeaderType >
void o2::algorithm::parseHeaderStack ( PtrType  ptr,
SizeType  size,
HeaderType &  header 
)

Definition at line 133 of file HeaderStack.h.

◆ parseHeaderStack() [3/3]

template<typename PtrType , typename SizeType , typename HeaderType , typename... MoreTypes>
void o2::algorithm::parseHeaderStack ( PtrType  ptr,
SizeType  size,
HeaderType &  header,
MoreTypes &&...  types 
)

Generic utility for the O2 header stack, extract headers

The O2 header stack consists of one or more headers. The DataHeader is the first one and mandatory. Other optional headers can be recursively extracted from a buffer with one call to this utility function. For each header to be extracted, a variable can be passed be reference. If a header of corresponding type is in the stack, its content will be assigned to the variable.

Usage: DataHeader dataheader; TriggerHeader triggerheader parseHeaderStack(ptr, size, dataheader, triggerheader

Definition at line 155 of file HeaderStack.h.

◆ parseO2Format()

template<typename InputListT , typename GetPointerFctT , typename GetSizeFctT , typename InsertFctT , typename... HeaderStackTypes>
int o2::algorithm::parseO2Format ( const InputListT &  list,
GetPointerFctT  getPointer,
GetSizeFctT  getSize,
InsertFctT  insert,
HeaderStackTypes &&...  stackArgs 
)

parse an input list and try to interpret in O2 data format O2 format consist of header-payload message pairs. The header message always starts with the DataHeader, optionally there can be more headers in the header stack.

The following callbacks are mandadory to be provided, e.g. through lambdas

  • insert function with signature (const DataHeader&, ptr, size) auto insertFct = [&] (const auto & dataheader, auto ptr, auto size) { // do something with dataheader and buffer };
  • getter for the message pointer, e.g. provided std::pair is used auto getPointerFct = [] (const auto & arg) {return arg.first;};
  • getter for the message size, e.g. provided std::pair is used auto getSizeFct = [] (const auto & arg) {return arg.second;};

Optionally, also the header stack can be parsed by specifying further arguments. For every header supposed to be parsed, a pair of a dummy object and callback has to be specified, e.g. // handler callback for MyHeaderStruct auto onMyHeaderStruct = [&] (const auto & mystruct) { // do something with mystruct }; // end handler callback

parseO2Format(list, insertFct, MyHeaderStruct(), onMyHeaderStruct);

Definition at line 61 of file O2FormatParser.h.

◆ sequenceInsert() [1/2]

template<typename BufferT , typename T >
constexpr size_t o2::algorithm::sequenceInsert ( BufferT *  buffer,
const T &  element 
)
constexprnoexcept

terminating template specialization, i.e. for the last element

Definition at line 119 of file StaticSequenceAllocator.h.

◆ sequenceInsert() [2/2]

template<typename BufferT , typename T , typename... TArgs>
constexpr size_t o2::algorithm::sequenceInsert ( BufferT *  buffer,
const T &  first,
const TArgs...  args 
)
constexprnoexcept

recursive insert of variable number of objects

Definition at line 109 of file StaticSequenceAllocator.h.

◆ sequenceLength() [1/2]

template<typename T >
constexpr size_t o2::algorithm::sequenceLength ( const T &  first)
constexprnoexcept

template secialization of sequence length calculation for one argument, this is also the terminating instance for the last argument of the recursive invocation of the function template.

Definition at line 102 of file StaticSequenceAllocator.h.

◆ sequenceLength() [2/2]

template<typename T , typename... TArgs>
constexpr size_t o2::algorithm::sequenceLength ( const T &  first,
const TArgs...  args 
)
constexprnoexcept

recursively calculate the length of the sequence object types are fixed at compile time and so is the total length of the sequence. The function is recursively invoked for all arguments of the

Definition at line 93 of file StaticSequenceAllocator.h.