mu2e_artdaq_core
v1_02_11
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
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) : p(i.p) {}
28
reference
operator*()
const
{
return
*p; }
29
pointer
operator->()
const
{
return
p; }
30
DataBlockIterator
& operator++() {
31
DataBlock
* pN =
new
DataBlock
(p->dataEnd());
32
delete
p;
33
p = pN;
34
return
*
this
;
35
}
36
DataBlockIterator
& operator++(
int
) {
37
DataBlockIterator
tmp(*
this
);
38
++*
this
;
39
return
tmp;
40
}
41
42
private
:
43
pointer
p;
44
};
45
46
}
// namespace mu2e
47
48
#endif
mu2e::DataBlock
Definition:
DataBlock.hh:19
mu2e::DataBlockIterator
Definition:
DataBlockIterator.hh:19
Generated on Wed Jan 30 2019 12:40:38 for mu2e_artdaq_core by
1.8.5