-
Notifications
You must be signed in to change notification settings - Fork 499
Expand file tree
/
Copy pathOutput.h
More file actions
90 lines (76 loc) · 2.73 KB
/
Output.h
File metadata and controls
90 lines (76 loc) · 2.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
// Copyright CERN and copyright holders of ALICE O2. This software is
// distributed under the terms of the GNU General Public License v3 (GPL
// Version 3), copied verbatim in the file "COPYING".
//
// See http://alice-o2.web.cern.ch/license for full licensing information.
//
// In applying this license CERN does not waive the privileges and immunities
// granted to it by virtue of its status as an Intergovernmental Organization
// or submit itself to any jurisdiction.
#ifndef FRAMEWORK_OUTPUT_H
#define FRAMEWORK_OUTPUT_H
#include "Headers/DataHeader.h"
#include "Framework/Lifetime.h"
#include "Headers/Stack.h"
namespace o2
{
namespace framework
{
/// A concrete description of the output to be created
///
/// Note that header::Stack forbids copy constructor and so it is for Output.
/// As a consequence it can not be used in standard containers. This is however
/// not a limitation which is expected to cause problems because Output is mostly
/// used as rvalue in specifying output route.
struct Output {
header::DataOrigin origin;
header::DataDescription description;
header::DataHeader::SubSpecificationType subSpec = 0;
enum Lifetime lifetime = Lifetime::Timeframe;
header::Stack metaHeader = {};
Output(header::DataOrigin o, header::DataDescription d) : origin(o), description(d) {}
Output(header::DataOrigin o, header::DataDescription d, header::DataHeader::SubSpecificationType s)
: origin(o), description(d), subSpec(s)
{
}
Output(header::DataOrigin o, header::DataDescription d, header::DataHeader::SubSpecificationType s, Lifetime l)
: origin(o), description(d), subSpec(s), lifetime(l)
{
}
Output(header::DataOrigin o, header::DataDescription d, header::DataHeader::SubSpecificationType s, Lifetime l,
header::Stack&& stack)
: origin(o), description(d), subSpec(s), lifetime(l), metaHeader(std::move(stack))
{
}
Output(header::DataHeader const& header)
: origin(header.dataOrigin), description(header.dataDescription), subSpec(header.subSpecification)
{
}
Output(const Output&) = delete;
Output(Output&& rhs)
: origin(rhs.origin),
description(rhs.description),
subSpec(rhs.subSpec),
lifetime(rhs.lifetime),
metaHeader(std::move(rhs.metaHeader))
{
}
Output& operator=(const Output&) = delete;
Output& operator=(Output&& rhs)
{
origin = rhs.origin;
description = rhs.description;
subSpec = rhs.subSpec;
lifetime = rhs.lifetime;
metaHeader = std::move(rhs.metaHeader);
return *this;
}
bool operator==(const Output& that) const
{
return origin == that.origin && description == that.description && subSpec == that.subSpec &&
lifetime == that.lifetime;
};
};
} // namespace framework
} // namespace o2
#endif