mu2e_artdaq_core
v1_02_25
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 <cstddef>
15
#include <cstdint>
16
#include <iterator>
17
18
namespace
mu2e {
19
class
DataBlockIterator
20
{
21
typedef
std::ptrdiff_t difference_type;
22
typedef
DataBlock
value_type
;
23
typedef
typename
DataBlock
*
pointer
;
24
typedef
typename
DataBlock
&
reference
;
25
typedef
std::forward_iterator_tag iterator_category;
26
27
DataBlockIterator
(
pointer
x =
nullptr
)
28
: p(x) {}
29
DataBlockIterator
(
const
DataBlockIterator
& i)
30
: p(i.p) {}
31
reference
operator*()
const
{
return
*p; }
32
pointer
operator->()
const
{
return
p; }
33
DataBlockIterator
& operator++()
34
{
35
DataBlock
* pN =
new
DataBlock
(p->dataEnd());
36
delete
p;
37
p = pN;
38
return
*
this
;
39
}
40
DataBlockIterator
& operator++(
int
)
41
{
42
DataBlockIterator
tmp(*
this
);
43
++*
this
;
44
return
tmp;
45
}
46
47
private
:
48
pointer
p;
49
};
50
51
}
// namespace mu2e
52
53
#endif
mu2e::DataBlock
Definition:
DataBlock.hh:19
mu2e::DataBlockIterator
Definition:
DataBlockIterator.hh:19
Generated on Wed Jul 17 2019 22:28:33 for mu2e_artdaq_core by
1.8.5