13 #define TYPE_TO_ENUM(type, e_val) \
15 ParameterTypes ParameterTypeToEnum::toEnum<type>() { \
18 #define TYPE_TO_NAME(type) \
25 class LuminosityBlockID;
125 char oldFill = os.fill(
' ');
134 std::unique_ptr<ParameterDescriptionNode> clonedNode(node.
clone());
135 return caseValue >>
std::move(clonedNode);
139 std::unique_ptr<ParameterDescriptionNode> clonedNode(node.
clone());
140 return caseValue >>
std::move(clonedNode);
145 std::unique_ptr<ParameterDescriptionNode> clonedNode(node.
clone());
146 return caseValue >>
std::move(clonedNode);
149 std::unique_ptr<ParameterDescriptionCases<std::string>>
operator>>(
char const* caseValue,
151 std::unique_ptr<ParameterDescriptionNode> clonedNode(node.
clone());
152 return caseValue >>
std::move(clonedNode);
155 std::unique_ptr<ParameterDescriptionCases<bool>>
operator>>(
bool caseValue,
156 std::unique_ptr<ParameterDescriptionNode> node) {
157 return std::unique_ptr<ParameterDescriptionCases<bool>>(
161 std::unique_ptr<ParameterDescriptionCases<int>>
operator>>(
int caseValue,
162 std::unique_ptr<ParameterDescriptionNode> node) {
163 return std::unique_ptr<ParameterDescriptionCases<int>>(
168 std::unique_ptr<ParameterDescriptionNode> node) {
169 return std::unique_ptr<ParameterDescriptionCases<std::string>>(
173 std::unique_ptr<ParameterDescriptionCases<std::string>>
operator>>(
char const* caseValue,
174 std::unique_ptr<ParameterDescriptionNode> node) {
176 return std::unique_ptr<ParameterDescriptionCases<std::string>>(
184 return std::make_unique<ANDGroupDescription>(node_left, node_right);
187 std::unique_ptr<ParameterDescriptionNode>
operator&&(std::unique_ptr<ParameterDescriptionNode> node_left,
189 return std::make_unique<ANDGroupDescription>(
std::move(node_left), node_right);
193 std::unique_ptr<ParameterDescriptionNode> node_right) {
194 return std::make_unique<ANDGroupDescription>(node_left,
std::move(node_right));
197 std::unique_ptr<ParameterDescriptionNode>
operator&&(std::unique_ptr<ParameterDescriptionNode> node_left,
198 std::unique_ptr<ParameterDescriptionNode> node_right) {
199 return std::make_unique<ANDGroupDescription>(
std::move(node_left),
std::move(node_right));
206 return std::make_unique<ORGroupDescription>(node_left, node_right);
209 std::unique_ptr<ParameterDescriptionNode>
operator||(std::unique_ptr<ParameterDescriptionNode> node_left,
211 return std::make_unique<ORGroupDescription>(
std::move(node_left), node_right);
215 std::unique_ptr<ParameterDescriptionNode> node_right) {
216 return std::make_unique<ORGroupDescription>(node_left,
std::move(node_right));
219 std::unique_ptr<ParameterDescriptionNode>
operator||(std::unique_ptr<ParameterDescriptionNode> node_left,
220 std::unique_ptr<ParameterDescriptionNode> node_right) {
221 return std::make_unique<ORGroupDescription>(
std::move(node_left),
std::move(node_right));
228 return std::make_unique<XORGroupDescription>(node_left, node_right);
231 std::unique_ptr<ParameterDescriptionNode>
operator^(std::unique_ptr<ParameterDescriptionNode> node_left,
233 return std::make_unique<XORGroupDescription>(
std::move(node_left), node_right);
237 std::unique_ptr<ParameterDescriptionNode> node_right) {
238 return std::make_unique<XORGroupDescription>(node_left,
std::move(node_right));
241 std::unique_ptr<ParameterDescriptionNode>
operator^(std::unique_ptr<ParameterDescriptionNode> node_left,
242 std::unique_ptr<ParameterDescriptionNode> node_right) {
243 return std::make_unique<XORGroupDescription>(
std::move(node_left),
std::move(node_right));