mu2e_artdaq_core
v1_02_01e
Main Page
Classes
Files
File List
All
Classes
Functions
mu2e_artdaq-core
mu2e-artdaq-core
Overlays
DataBlockIterator.hh
1
#ifndef mu2e_artdaq_core_Overlays_DataBlockIterator_hh
2
#define mu2e_artdaq_core_Overlays_DataBlockIterator_hh
3
5
// DataBlockIterator
6
//
7
// Helper class which should allow STL algorithms to work over DataBlocks
8
//
10
11
#include "mu2e-artdaq-core/Overlays/DTCFragment.hh"
12
#include "mu2e-artdaq-core/Overlays/DataBlock.hh"
13
14
#include <cstdint>
15
#include <cstddef>
16
#include <iterator>
17
18
namespace
mu2e {
19
class
DataBlockIterator
{
20
typedef
std::ptrdiff_t difference_type;
21
typedef
DataBlock
value_type
;
22
typedef
typename
DataBlock
*
pointer
;
23
typedef
typename
DataBlock
&
reference
;
24
typedef
std::forward_iterator_tag iterator_category;
25
26
DataBlockIterator
(
pointer
x =
nullptr
) : p(x) { }
27
DataBlockIterator
(
const
DataBlockIterator
& i)
28
: p(i.p) { }
29
reference
operator*()
const
{
return
*p; }
30
pointer
operator->()
const
{
return
p; }
31
DataBlockIterator
& operator++() {
32
DataBlock
* pN =
new
DataBlock
(p->dataEnd());
33
delete
p;
34
p = pN;
35
return
*
this
;
36
}
37
DataBlockIterator
& operator++(
int
) {
38
DataBlockIterator
tmp(*
this
);
39
++*
this
;
40
return
tmp;
41
}
42
43
private
:
44
pointer
p;
45
};
46
47
}
// namespace mu2e
48
49
#endif
mu2e::DataBlock
Definition:
DataBlock.hh:19
mu2e::DataBlockIterator
Definition:
DataBlockIterator.hh:19
Generated on Tue Feb 20 2018 13:05:58 for mu2e_artdaq_core by
1.8.5