gambit is hosted by Hepforge, IPPP Durham
GAMBIT  v1.5.0-2191-ga4742ac
a Global And Modular Bsm Inference Tool
module_macros_common.hpp File Reference

Generic observable and likelihood function module rollcall macro definitions, common to both the core and actual module source code. More...

#include <string>
#include "gambit/Utils/util_macros.hpp"
#include <boost/preprocessor/comparison/greater.hpp>
#include <boost/preprocessor/control/iif.hpp>
#include <boost/preprocessor/repetition/enum.hpp>
#include <boost/preprocessor/seq/for_each_i.hpp>
#include <boost/preprocessor/tuple/to_seq.hpp>
Include dependency graph for module_macros_common.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define UNUSED_OK
 Define a macro to suppress unused variable and typedef warnings in GCC (and do nothing for other compilers) More...
 
Simple macro constants
#define IS_MODEL   1
 
#define NOT_MODEL   0
 
#define NEW_CAPABILITY   1
 
#define OLD_CAPABILITY   0
 
Variadic redirectors for \link QUICK_FUNCTION() QUICK_FUNCTION\endlink function.
#define QF_ALLOW_MODELS_MORE(A, B, ...)   ALLOW_MODELS_AB(A, B, __VA_ARGS__)
 
#define QF_ALLOW_MODELS_1(A, _1)   DUMMYARG(A, _1)
 
#define QF_ALLOW_MODELS(A, ...)   VARARG_SWITCH_ON_GT_ONE_A(QF_ALLOW_MODELS, A, __VA_ARGS__)
 
#define EXPAND_DEPS_10(A, B, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10)
 
#define EXPAND_DEPS_9(A, B, _1, _2, _3, _4, _5, _6, _7, _8, _9)
 
#define EXPAND_DEPS_8(A, B, _1, _2, _3, _4, _5, _6, _7, _8)
 
#define EXPAND_DEPS_7(A, B, _1, _2, _3, _4, _5, _6, _7)
 
#define EXPAND_DEPS_6(A, B, _1, _2, _3, _4, _5, _6)
 
#define EXPAND_DEPS_5(A, B, _1, _2, _3, _4, _5)
 
#define EXPAND_DEPS_4(A, B, _1, _2, _3, _4)
 
#define EXPAND_DEPS_3(A, B, _1, _2, _3)
 
#define EXPAND_DEPS_2(A, B, _1, _2)
 
#define EXPAND_DEPS_1(A, B, _1)   LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_1),BOOST_PP_TUPLE_ELEM(1,_1))
 
#define EXPAND_DEPS_AB(A, B, ...)   VARARG_AB(EXPAND_DEPS, A, B, __VA_ARGS__)
 
#define QUICK_FUNCTION(MODULE, CAPABILITY, NEW_CAPABILITY_FLAG, FUNCTION, ...)
 }@ More...
 
#define QFBODY_MORE(A, B, C, _1, _2, ...)   QFBODY_2(A,B,C,_1,_2) EXPAND_DEPS_AB(A, C, __VA_ARGS__)
 
#define QFBODY_2(A, B, C, _1, _2)   QFBODY_1(A,B,C,_1) QF_ALLOW_MODELS(A, C INSERT_NONEMPTY(_2))
 
#define QFBODY_1(A, B, C, _1)   LONG_DECLARE_FUNCTION(A,B,C,_1,0)
 
#define QFBODY_ABC(A, B, C, ...)   VARARG_SWITCH_ON_GT_TWO_ABC(QFBODY, A, B, C, __VA_ARGS__)
 
Variadic redirection macro for START_FUNCTION(TYPE,[CAN_MANAGE_LOOPS/CANNOT_MANAGE_LOOPS])

}@

Registers the current FUNCTION of the current MODULE as a provider of the current CAPABILITY, returning a result of type TYPE. Allows this function to manage loops if the optional second argument CAN_MANAGE_LOOPS is given; otherwise, if CANNOT_MANAGE_LOOPS is given instead, or no second argument is given, the function is prohibited from managing loops.

#define START_FUNCTION_INIT_FUNCTION(TYPE)   DECLARE_FUNCTION(TYPE,2)
 
#define START_FUNCTION_CAN_MANAGE_LOOPS(TYPE)   DECLARE_FUNCTION(TYPE,1)
 
#define START_FUNCTION_CANNOT_MANAGE_LOOPS(TYPE)   DECLARE_FUNCTION(TYPE,0)
 
#define START_FUNCTION_(TYPE)
 
#define DEFINED_START_FUNCTION_CAN_MANAGE_LOOPS   ()
 
#define DEFINED_START_FUNCTION_CANNOT_MANAGE_LOOPS   ()
 
#define DEFINED_START_FUNCTION_INIT_FUNCTION   ()
 
#define START_FUNCTION_2(_1, _2)   CAT(START_FUNCTION_,IF_DEFINED(START_FUNCTION_##_2,_2))(_1)
 
#define START_FUNCTION_1(_1)   CAT(START_FUNCTION_,CANNOT_MANAGE_LOOPS)(_1)
 
#define START_FUNCTION(...)   VARARG(START_FUNCTION, __VA_ARGS__)
 
Variadic redirection macro for BACKEND_REQ_FROM_GROUP(GROUP, CAPABILITY, (TAGS), TYPE, [(ARGS)])
#define BACKEND_REQ_FROM_GROUP_5(_1, _2, _3, _4, _5)   DECLARE_BACKEND_REQ(_1, _2, _3, _4, _5, 0)
 
#define BACKEND_REQ_FROM_GROUP_4(_1, _2, _3, _4)   DECLARE_BACKEND_REQ(_1, _2, _3, _4, (), 1)
 
#define BACKEND_REQ_FROM_GROUP(...)   VARARG(BACKEND_REQ_FROM_GROUP, __VA_ARGS__)
 
Variadic redirection macro for BACKEND_REQ(CAPABILITY, (TAGS), TYPE, [(ARGS)])
#define BACKEND_REQ_4(_1, _2, _3, _4)   DECLARE_BACKEND_REQ(none, _1, _2, _3, _4, 0)
 
#define BACKEND_REQ_3(_1, _2, _3)   DECLARE_BACKEND_REQ(none, _1, _2, _3, (), 1)
 
#define BACKEND_REQ(...)   VARARG(BACKEND_REQ, __VA_ARGS__)
 
Variadic redirection macro for LONG_BACKEND_REQ(CAPABILITY, (TAGS), TYPE, [(ARGS)])
#define LONG_BACKEND_REQ_7(_1, _2, _3, _4, _5, _6, _7)   LONG_DECLARE_BACKEND_REQ(_1, _2, _3, none, _4, _5, _6, _7, 0)
 
#define LONG_BACKEND_REQ_6(_1, _2, _3, _4, _5, _6)   LONG_DECLARE_BACKEND_REQ(_1, _2, _3, none, _4, _5, _6, (), 1)
 
#define LONG_BACKEND_REQ(...)   VARARG(LONG_BACKEND_REQ, __VA_ARGS__)
 
#define CLASSLOAD_NEEDED_0(_1)   CLASSLOAD_NEEDED(_1, "default")
 NEEDS_CLASSES_FROM() called with no versions; use default. More...
 
#define CLASSLOAD_NEEDED_1(_1, ...)   CLASSLOAD_NEEDED(_1, #__VA_ARGS__)
 CLASSLOAD_NEEDED() called with one or more versions; require specified backend versions. More...
 
#define NEEDS_CLASSES_FROM(...)   CAT(CLASSLOAD_NEEDED_, BOOST_PP_GREATER(BOOST_PP_VARIADIC_SIZE(__VA_ARGS__), 1))(__VA_ARGS__)
 Redirects the NEEDS_CLASSES_FROM(BACKEND, [VERSIONS]) macro to the CLASSLOAD_NEEDED(BACKEND, VERSTRING) macro according to whether it has been called with version numbers or not (making the version number 'default' if it is omitted). More...
 
#define ALLOW_MODEL   ALLOW_MODELS
 Simple alias for ALLOW_MODEL/S. More...
 
#define ACTIVATE_FOR_MODEL   ACTIVATE_FOR_MODELS
 Simple alias for ACTIVATE_FOR_MODEL/S. More...
 
#define BACKEND_GROUP   BACKEND_GROUPS
 Simple alias for BACKEND_GROUP/S. More...
 
#define MODEL_GROUP_AUX(r, data, i, elem)   MODEL_GROUP(CAT(data,i), (elem))
 Shortcuts for allowing declarations of joint models (single-line model combinations) More...
 
#define MODEL_COMBO_AUX(z, i, data)   CAT(data,i)
 
#define ALLOW_JOINT_MODEL(...)
 
Variadic redirection macros for ALLOW_MODELS([MODELS])

Register that the current FUNCTION may only be used with the listed models.

The current maximum number of models that can be indicated this way is 10; if more models should be allowed, ALLOW_MODELS can be called multiple times. If ALLOW_MODELS and ALLOW_MODEL_COMBINATION are both absent, all models are considered to be allowed.

#define ALLOW_MODELS_10(A, B, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10)
 
#define ALLOW_MODELS_9(A, B, _1, _2, _3, _4, _5, _6, _7, _8, _9)
 
#define ALLOW_MODELS_8(A, B, _1, _2, _3, _4, _5, _6, _7, _8)
 
#define ALLOW_MODELS_7(A, B, _1, _2, _3, _4, _5, _6, _7)
 
#define ALLOW_MODELS_6(A, B, _1, _2, _3, _4, _5, _6)
 
#define ALLOW_MODELS_5(A, B, _1, _2, _3, _4, _5)
 
#define ALLOW_MODELS_4(A, B, _1, _2, _3, _4)
 
#define ALLOW_MODELS_3(A, B, _1, _2, _3)   ALLOWED_MODEL(A,B,_1) ALLOWED_MODEL(A,B,_2) ALLOWED_MODEL(A,B,_3)
 
#define ALLOW_MODELS_2(A, B, _1, _2)   ALLOWED_MODEL(A,B,_1) ALLOWED_MODEL(A,B,_2)
 
#define ALLOW_MODELS_1(A, B, _1)   ALLOWED_MODEL(A,B,_1)
 
#define ALLOW_MODELS_AB(A, B, ...)   VARARG_AB(ALLOW_MODELS, A, B, __VA_ARGS__)
 
Variadic redirection macros for ALLOW_MODEL_DEPENDENCE([MODELS])

Register that the current FUNCTION may only be used with the listed models, but only in certain combinations.

The current maximum number of models that can be indicated this way is 10; if more models should be allowed, ALLOW_MODEL_DEPENDENCE can be called multiple times. If ALLOW_MODELS and ALLOW_MODEL_COMBINATION are both absent, all models are considered to be allowed.

#define ALLOW_MODEL_DEPENDENCE_10(A, B, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10)
 
#define ALLOW_MODEL_DEPENDENCE_9(A, B, _1, _2, _3, _4, _5, _6, _7, _8, _9)
 
#define ALLOW_MODEL_DEPENDENCE_8(A, B, _1, _2, _3, _4, _5, _6, _7, _8)
 
#define ALLOW_MODEL_DEPENDENCE_7(A, B, _1, _2, _3, _4, _5, _6, _7)
 
#define ALLOW_MODEL_DEPENDENCE_6(A, B, _1, _2, _3, _4, _5, _6)
 
#define ALLOW_MODEL_DEPENDENCE_5(A, B, _1, _2, _3, _4, _5)
 
#define ALLOW_MODEL_DEPENDENCE_4(A, B, _1, _2, _3, _4)
 
#define ALLOW_MODEL_DEPENDENCE_3(A, B, _1, _2, _3)
 
#define ALLOW_MODEL_DEPENDENCE_2(A, B, _1, _2)
 
#define ALLOW_MODEL_DEPENDENCE_1(A, B, _1)   ALLOWED_MODEL_DEPENDENCE(A,B,_1)
 
#define ALLOW_MODEL_DEPENDENCE_AB(A, B, ...)   VARARG_AB(ALLOW_MODEL_DEPENDENCE, A, B, __VA_ARGS__)
 
#define ALLOW_MODEL_DEPENDENCE(...)   ALLOW_MODEL_DEPENDENCE_AB(MODULE, FUNCTION, __VA_ARGS__)
 
Variadic redirection macros for BACKEND_GROUP([GROUPS])

Declare one or more backend GROUPS, from each of which one constituent backend requirement must be fulfilled.

#define BACKEND_GROUPS_10(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10)
 
#define BACKEND_GROUPS_9(_1, _2, _3, _4, _5, _6, _7, _8, _9)
 
#define BACKEND_GROUPS_8(_1, _2, _3, _4, _5, _6, _7, _8)
 
#define BACKEND_GROUPS_7(_1, _2, _3, _4, _5, _6, _7)
 
#define BACKEND_GROUPS_6(_1, _2, _3, _4, _5, _6)
 
#define BACKEND_GROUPS_5(_1, _2, _3, _4, _5)   BE_GROUP(_1) BE_GROUP(_2) BE_GROUP(_3) BE_GROUP(_4) BE_GROUP(_5)
 
#define BACKEND_GROUPS_4(_1, _2, _3, _4)   BE_GROUP(_1) BE_GROUP(_2) BE_GROUP(_3) BE_GROUP(_4)
 
#define BACKEND_GROUPS_3(_1, _2, _3)   BE_GROUP(_1) BE_GROUP(_2) BE_GROUP(_3)
 
#define BACKEND_GROUPS_2(_1, _2)   BE_GROUP(_1) BE_GROUP(_2)
 
#define BACKEND_GROUPS_1(_1)   BE_GROUP(_1)
 
#define BACKEND_GROUPS(...)   VARARG(BACKEND_GROUPS, __VA_ARGS__)
 
Variadic redirection macros for ACTIVATE_FOR_BACKEND(BACKEND_REQ, BACKEND, [VERSIONS])

Indicate that the current CONDITIONAL_DEPENDENCY should be activated if the backend requirement BACKEND_REQ of the current FUNCTION is filled by a backend function from BACKEND.

The specific versions that this applies to are passed as optional additional arguments; if no version information is passed, all versions of BACKEND are considered to cause the CONDITIONAL_DEPENDENCY to become active.

#define ACTIVATE_DEP_BE_0(_1, _2)   ACTIVATE_DEP_BE(_1, _2, "any")
 ACTIVATE_FOR_BACKEND() called with no versions; allow any backend version. More...
 
#define ACTIVATE_DEP_BE_1(_1, _2, ...)   ACTIVATE_DEP_BE(_1, _2, #__VA_ARGS__)
 ACTIVATE_FOR_BACKEND() called with two arguments; allow specified backend versions. More...
 
#define ACTIVATE_FOR_BACKEND(...)
 Redirects the ACTIVATE_FOR_BACKEND(BACKEND_REQ, BACKEND, [VERSIONS]) macro to the ACTIVATE_DEP_BE(BACKEND_REQ, BACKEND, VERSTRING) macro according to whether it has been called with version numbers or not (making the version number 'any' if it is omitted). More...
 

Detailed Description

Generic observable and likelihood function module rollcall macro definitions, common to both the core and actual module source code.


Authors (add name and date if you modify):

Author
Pat Scott (patsc.nosp@m.ott@.nosp@m.physi.nosp@m.cs.m.nosp@m.cgill.nosp@m..ca)
Date
2013 Aug
2014 Jan, Mar
Author
Anders Kvellestad (ander.nosp@m.s.kv.nosp@m.elles.nosp@m.tad@.nosp@m.fys.u.nosp@m.io.n.nosp@m.o)
Date
2013 Nov
Author
Christoph Weniger (c.wen.nosp@m.iger.nosp@m.@uva..nosp@m.nl)
Date
2014 Jan

Definition in file module_macros_common.hpp.

Macro Definition Documentation

◆ ACTIVATE_DEP_BE_0

#define ACTIVATE_DEP_BE_0 (   _1,
  _2 
)    ACTIVATE_DEP_BE(_1, _2, "any")

ACTIVATE_FOR_BACKEND() called with no versions; allow any backend version.

Definition at line 334 of file module_macros_common.hpp.

◆ ACTIVATE_DEP_BE_1

#define ACTIVATE_DEP_BE_1 (   _1,
  _2,
  ... 
)    ACTIVATE_DEP_BE(_1, _2, #__VA_ARGS__)

ACTIVATE_FOR_BACKEND() called with two arguments; allow specified backend versions.

Definition at line 336 of file module_macros_common.hpp.

◆ ACTIVATE_FOR_BACKEND

#define ACTIVATE_FOR_BACKEND (   ...)
Value:
CAT(ACTIVATE_DEP_BE_, BOOST_PP_GREATER \
(BOOST_PP_VARIADIC_SIZE(__VA_ARGS__), 2))\
(__VA_ARGS__)
#define CAT(X, Y)
Concatenate macro arguments for 2-7 arguments.
Definition: cats.hpp:22
#define BOOST_PP_VARIADIC_SIZE(...)

Redirects the ACTIVATE_FOR_BACKEND(BACKEND_REQ, BACKEND, [VERSIONS]) macro to the ACTIVATE_DEP_BE(BACKEND_REQ, BACKEND, VERSTRING) macro according to whether it has been called with version numbers or not (making the version number 'any' if it is omitted).

Definition at line 341 of file module_macros_common.hpp.

◆ ACTIVATE_FOR_MODEL

#define ACTIVATE_FOR_MODEL   ACTIVATE_FOR_MODELS

Simple alias for ACTIVATE_FOR_MODEL/S.

Definition at line 183 of file module_macros_common.hpp.

◆ ALLOW_JOINT_MODEL

#define ALLOW_JOINT_MODEL (   ...)
Value:
ALLOW_MODEL_DEPENDENCE(__VA_ARGS__) \
BOOST_PP_SEQ_FOR_EACH_I(MODEL_GROUP_AUX,model_group_,BOOST_PP_TUPLE_TO_SEQ((__VA_ARGS__))) \
ALLOW_MODEL_COMBINATION(BOOST_PP_ENUM(BOOST_PP_VARIADIC_SIZE(__VA_ARGS__),MODEL_COMBO_AUX,model_group_))
#define ALLOW_MODEL_DEPENDENCE(...)
#define BOOST_PP_TUPLE_TO_SEQ(...)
#define MODEL_GROUP_AUX(r, data, i, elem)
Shortcuts for allowing declarations of joint models (single-line model combinations) ...
#define MODEL_COMBO_AUX(z, i, data)
#define BOOST_PP_VARIADIC_SIZE(...)

Definition at line 191 of file module_macros_common.hpp.

◆ ALLOW_MODEL

#define ALLOW_MODEL   ALLOW_MODELS

Simple alias for ALLOW_MODEL/S.

Definition at line 181 of file module_macros_common.hpp.

◆ ALLOW_MODEL_DEPENDENCE

#define ALLOW_MODEL_DEPENDENCE (   ...)    ALLOW_MODEL_DEPENDENCE_AB(MODULE, FUNCTION, __VA_ARGS__)

Definition at line 296 of file module_macros_common.hpp.

◆ ALLOW_MODEL_DEPENDENCE_1

#define ALLOW_MODEL_DEPENDENCE_1 (   A,
  B,
  _1 
)    ALLOWED_MODEL_DEPENDENCE(A,B,_1)

Definition at line 294 of file module_macros_common.hpp.

◆ ALLOW_MODEL_DEPENDENCE_10

#define ALLOW_MODEL_DEPENDENCE_10 (   A,
  B,
  _1,
  _2,
  _3,
  _4,
  _5,
  _6,
  _7,
  _8,
  _9,
  _10 
)
Value:
ALLOWED_MODEL_DEPENDENCE(A,B,_2) \
ALLOWED_MODEL_DEPENDENCE(A,B,_3) \
ALLOWED_MODEL_DEPENDENCE(A,B,_4) \
ALLOWED_MODEL_DEPENDENCE(A,B,_5) \
ALLOWED_MODEL_DEPENDENCE(A,B,_6) \
ALLOWED_MODEL_DEPENDENCE(A,B,_7) \
ALLOWED_MODEL_DEPENDENCE(A,B,_8) \
ALLOWED_MODEL_DEPENDENCE(A,B,_9) \
ALLOWED_MODEL_DEPENDENCE(A,B,_10)
#define ALLOWED_MODEL_DEPENDENCE(MODULE, FUNCTION, MODEL)
Indicate that the current FUNCTION may be used with a specific model MODEL, but only in combination w...

Definition at line 240 of file module_macros_common.hpp.

◆ ALLOW_MODEL_DEPENDENCE_2

#define ALLOW_MODEL_DEPENDENCE_2 (   A,
  B,
  _1,
  _2 
)
Value:
ALLOWED_MODEL_DEPENDENCE(A,B,_2)
#define ALLOWED_MODEL_DEPENDENCE(MODULE, FUNCTION, MODEL)
Indicate that the current FUNCTION may be used with a specific model MODEL, but only in combination w...

Definition at line 292 of file module_macros_common.hpp.

◆ ALLOW_MODEL_DEPENDENCE_3

#define ALLOW_MODEL_DEPENDENCE_3 (   A,
  B,
  _1,
  _2,
  _3 
)
Value:
ALLOWED_MODEL_DEPENDENCE(A,B,_2) \
ALLOWED_MODEL_DEPENDENCE(A,B,_3)
#define ALLOWED_MODEL_DEPENDENCE(MODULE, FUNCTION, MODEL)
Indicate that the current FUNCTION may be used with a specific model MODEL, but only in combination w...

Definition at line 289 of file module_macros_common.hpp.

◆ ALLOW_MODEL_DEPENDENCE_4

#define ALLOW_MODEL_DEPENDENCE_4 (   A,
  B,
  _1,
  _2,
  _3,
  _4 
)
Value:
ALLOWED_MODEL_DEPENDENCE(A,B,_2) \
ALLOWED_MODEL_DEPENDENCE(A,B,_3) \
ALLOWED_MODEL_DEPENDENCE(A,B,_4)
#define ALLOWED_MODEL_DEPENDENCE(MODULE, FUNCTION, MODEL)
Indicate that the current FUNCTION may be used with a specific model MODEL, but only in combination w...

Definition at line 285 of file module_macros_common.hpp.

◆ ALLOW_MODEL_DEPENDENCE_5

#define ALLOW_MODEL_DEPENDENCE_5 (   A,
  B,
  _1,
  _2,
  _3,
  _4,
  _5 
)
Value:
ALLOWED_MODEL_DEPENDENCE(A,B,_2) \
ALLOWED_MODEL_DEPENDENCE(A,B,_3) \
ALLOWED_MODEL_DEPENDENCE(A,B,_4) \
ALLOWED_MODEL_DEPENDENCE(A,B,_5)
#define ALLOWED_MODEL_DEPENDENCE(MODULE, FUNCTION, MODEL)
Indicate that the current FUNCTION may be used with a specific model MODEL, but only in combination w...

Definition at line 280 of file module_macros_common.hpp.

◆ ALLOW_MODEL_DEPENDENCE_6

#define ALLOW_MODEL_DEPENDENCE_6 (   A,
  B,
  _1,
  _2,
  _3,
  _4,
  _5,
  _6 
)
Value:
ALLOWED_MODEL_DEPENDENCE(A,B,_2) \
ALLOWED_MODEL_DEPENDENCE(A,B,_3) \
ALLOWED_MODEL_DEPENDENCE(A,B,_4) \
ALLOWED_MODEL_DEPENDENCE(A,B,_5) \
ALLOWED_MODEL_DEPENDENCE(A,B,_6)
#define ALLOWED_MODEL_DEPENDENCE(MODULE, FUNCTION, MODEL)
Indicate that the current FUNCTION may be used with a specific model MODEL, but only in combination w...

Definition at line 274 of file module_macros_common.hpp.

◆ ALLOW_MODEL_DEPENDENCE_7

#define ALLOW_MODEL_DEPENDENCE_7 (   A,
  B,
  _1,
  _2,
  _3,
  _4,
  _5,
  _6,
  _7 
)
Value:
ALLOWED_MODEL_DEPENDENCE(A,B,_2) \
ALLOWED_MODEL_DEPENDENCE(A,B,_3) \
ALLOWED_MODEL_DEPENDENCE(A,B,_4) \
ALLOWED_MODEL_DEPENDENCE(A,B,_5) \
ALLOWED_MODEL_DEPENDENCE(A,B,_6) \
ALLOWED_MODEL_DEPENDENCE(A,B,_7)
#define ALLOWED_MODEL_DEPENDENCE(MODULE, FUNCTION, MODEL)
Indicate that the current FUNCTION may be used with a specific model MODEL, but only in combination w...

Definition at line 267 of file module_macros_common.hpp.

◆ ALLOW_MODEL_DEPENDENCE_8

#define ALLOW_MODEL_DEPENDENCE_8 (   A,
  B,
  _1,
  _2,
  _3,
  _4,
  _5,
  _6,
  _7,
  _8 
)
Value:
ALLOWED_MODEL_DEPENDENCE(A,B,_2) \
ALLOWED_MODEL_DEPENDENCE(A,B,_3) \
ALLOWED_MODEL_DEPENDENCE(A,B,_4) \
ALLOWED_MODEL_DEPENDENCE(A,B,_5) \
ALLOWED_MODEL_DEPENDENCE(A,B,_6) \
ALLOWED_MODEL_DEPENDENCE(A,B,_7) \
ALLOWED_MODEL_DEPENDENCE(A,B,_8)
#define ALLOWED_MODEL_DEPENDENCE(MODULE, FUNCTION, MODEL)
Indicate that the current FUNCTION may be used with a specific model MODEL, but only in combination w...

Definition at line 259 of file module_macros_common.hpp.

◆ ALLOW_MODEL_DEPENDENCE_9

#define ALLOW_MODEL_DEPENDENCE_9 (   A,
  B,
  _1,
  _2,
  _3,
  _4,
  _5,
  _6,
  _7,
  _8,
  _9 
)
Value:
ALLOWED_MODEL_DEPENDENCE(A,B,_2) \
ALLOWED_MODEL_DEPENDENCE(A,B,_3) \
ALLOWED_MODEL_DEPENDENCE(A,B,_4) \
ALLOWED_MODEL_DEPENDENCE(A,B,_5) \
ALLOWED_MODEL_DEPENDENCE(A,B,_6) \
ALLOWED_MODEL_DEPENDENCE(A,B,_7) \
ALLOWED_MODEL_DEPENDENCE(A,B,_8) \
ALLOWED_MODEL_DEPENDENCE(A,B,_9)
#define ALLOWED_MODEL_DEPENDENCE(MODULE, FUNCTION, MODEL)
Indicate that the current FUNCTION may be used with a specific model MODEL, but only in combination w...

Definition at line 250 of file module_macros_common.hpp.

◆ ALLOW_MODEL_DEPENDENCE_AB

#define ALLOW_MODEL_DEPENDENCE_AB (   A,
  B,
  ... 
)    VARARG_AB(ALLOW_MODEL_DEPENDENCE, A, B, __VA_ARGS__)

Definition at line 295 of file module_macros_common.hpp.

◆ ALLOW_MODELS_1

#define ALLOW_MODELS_1 (   A,
  B,
  _1 
)    ALLOWED_MODEL(A,B,_1)

Definition at line 226 of file module_macros_common.hpp.

◆ ALLOW_MODELS_10

#define ALLOW_MODELS_10 (   A,
  B,
  _1,
  _2,
  _3,
  _4,
  _5,
  _6,
  _7,
  _8,
  _9,
  _10 
)
Value:
ALLOWED_MODEL(A,B,_1) ALLOWED_MODEL(A,B,_2) ALLOWED_MODEL(A,B,_3) \
ALLOWED_MODEL(A,B,_4) ALLOWED_MODEL(A,B,_5) ALLOWED_MODEL(A,B,_6) \
ALLOWED_MODEL(A,B,_7) ALLOWED_MODEL(A,B,_8) ALLOWED_MODEL(A,B,_9) \
ALLOWED_MODEL(A,B,_10)
#define ALLOWED_MODEL(MODULE, FUNCTION, MODEL)
Indicate that the current FUNCTION may only be used with specific model MODEL, or combinations given ...

Definition at line 205 of file module_macros_common.hpp.

◆ ALLOW_MODELS_2

#define ALLOW_MODELS_2 (   A,
  B,
  _1,
  _2 
)    ALLOWED_MODEL(A,B,_1) ALLOWED_MODEL(A,B,_2)

Definition at line 225 of file module_macros_common.hpp.

◆ ALLOW_MODELS_3

#define ALLOW_MODELS_3 (   A,
  B,
  _1,
  _2,
  _3 
)    ALLOWED_MODEL(A,B,_1) ALLOWED_MODEL(A,B,_2) ALLOWED_MODEL(A,B,_3)

Definition at line 224 of file module_macros_common.hpp.

◆ ALLOW_MODELS_4

#define ALLOW_MODELS_4 (   A,
  B,
  _1,
  _2,
  _3,
  _4 
)
Value:
ALLOWED_MODEL(A,B,_1) ALLOWED_MODEL(A,B,_2) ALLOWED_MODEL(A,B,_3) \
ALLOWED_MODEL(A,B,_4)
#define ALLOWED_MODEL(MODULE, FUNCTION, MODEL)
Indicate that the current FUNCTION may only be used with specific model MODEL, or combinations given ...

Definition at line 222 of file module_macros_common.hpp.

◆ ALLOW_MODELS_5

#define ALLOW_MODELS_5 (   A,
  B,
  _1,
  _2,
  _3,
  _4,
  _5 
)
Value:
ALLOWED_MODEL(A,B,_1) ALLOWED_MODEL(A,B,_2) ALLOWED_MODEL(A,B,_3) \
ALLOWED_MODEL(A,B,_4) ALLOWED_MODEL(A,B,_5)
#define ALLOWED_MODEL(MODULE, FUNCTION, MODEL)
Indicate that the current FUNCTION may only be used with specific model MODEL, or combinations given ...

Definition at line 220 of file module_macros_common.hpp.

◆ ALLOW_MODELS_6

#define ALLOW_MODELS_6 (   A,
  B,
  _1,
  _2,
  _3,
  _4,
  _5,
  _6 
)
Value:
ALLOWED_MODEL(A,B,_1) ALLOWED_MODEL(A,B,_2) ALLOWED_MODEL(A,B,_3) \
ALLOWED_MODEL(A,B,_4) ALLOWED_MODEL(A,B,_5) ALLOWED_MODEL(A,B,_6)
#define ALLOWED_MODEL(MODULE, FUNCTION, MODEL)
Indicate that the current FUNCTION may only be used with specific model MODEL, or combinations given ...

Definition at line 218 of file module_macros_common.hpp.

◆ ALLOW_MODELS_7

#define ALLOW_MODELS_7 (   A,
  B,
  _1,
  _2,
  _3,
  _4,
  _5,
  _6,
  _7 
)
Value:
ALLOWED_MODEL(A,B,_1) ALLOWED_MODEL(A,B,_2) ALLOWED_MODEL(A,B,_3) \
ALLOWED_MODEL(A,B,_4) ALLOWED_MODEL(A,B,_5) ALLOWED_MODEL(A,B,_6) \
ALLOWED_MODEL(A,B,_7)
#define ALLOWED_MODEL(MODULE, FUNCTION, MODEL)
Indicate that the current FUNCTION may only be used with specific model MODEL, or combinations given ...

Definition at line 215 of file module_macros_common.hpp.

◆ ALLOW_MODELS_8

#define ALLOW_MODELS_8 (   A,
  B,
  _1,
  _2,
  _3,
  _4,
  _5,
  _6,
  _7,
  _8 
)
Value:
ALLOWED_MODEL(A,B,_1) ALLOWED_MODEL(A,B,_2) ALLOWED_MODEL(A,B,_3) \
ALLOWED_MODEL(A,B,_4) ALLOWED_MODEL(A,B,_5) ALLOWED_MODEL(A,B,_6) \
ALLOWED_MODEL(A,B,_7) ALLOWED_MODEL(A,B,_8)
#define ALLOWED_MODEL(MODULE, FUNCTION, MODEL)
Indicate that the current FUNCTION may only be used with specific model MODEL, or combinations given ...

Definition at line 212 of file module_macros_common.hpp.

◆ ALLOW_MODELS_9

#define ALLOW_MODELS_9 (   A,
  B,
  _1,
  _2,
  _3,
  _4,
  _5,
  _6,
  _7,
  _8,
  _9 
)
Value:
ALLOWED_MODEL(A,B,_1) ALLOWED_MODEL(A,B,_2) ALLOWED_MODEL(A,B,_3) \
ALLOWED_MODEL(A,B,_4) ALLOWED_MODEL(A,B,_5) ALLOWED_MODEL(A,B,_6) \
ALLOWED_MODEL(A,B,_7) ALLOWED_MODEL(A,B,_8) ALLOWED_MODEL(A,B,_9)
#define ALLOWED_MODEL(MODULE, FUNCTION, MODEL)
Indicate that the current FUNCTION may only be used with specific model MODEL, or combinations given ...

Definition at line 209 of file module_macros_common.hpp.

◆ ALLOW_MODELS_AB

#define ALLOW_MODELS_AB (   A,
  B,
  ... 
)    VARARG_AB(ALLOW_MODELS, A, B, __VA_ARGS__)

Definition at line 227 of file module_macros_common.hpp.

◆ BACKEND_GROUP

#define BACKEND_GROUP   BACKEND_GROUPS

Simple alias for BACKEND_GROUP/S.

Definition at line 185 of file module_macros_common.hpp.

◆ BACKEND_GROUPS

#define BACKEND_GROUPS (   ...)    VARARG(BACKEND_GROUPS, __VA_ARGS__)

Definition at line 319 of file module_macros_common.hpp.

◆ BACKEND_GROUPS_1

#define BACKEND_GROUPS_1 (   _1)    BE_GROUP(_1)

Definition at line 318 of file module_macros_common.hpp.

◆ BACKEND_GROUPS_10

#define BACKEND_GROUPS_10 (   _1,
  _2,
  _3,
  _4,
  _5,
  _6,
  _7,
  _8,
  _9,
  _10 
)
Value:
BE_GROUP(_6) BE_GROUP(_7) BE_GROUP(_8) BE_GROUP(_9) BE_GROUP(_10)
#define BE_GROUP(GROUP)
Declare a backend group, from which one backend requirement must be activated.

Definition at line 304 of file module_macros_common.hpp.

◆ BACKEND_GROUPS_2

#define BACKEND_GROUPS_2 (   _1,
  _2 
)    BE_GROUP(_1) BE_GROUP(_2)

Definition at line 317 of file module_macros_common.hpp.

◆ BACKEND_GROUPS_3

#define BACKEND_GROUPS_3 (   _1,
  _2,
  _3 
)    BE_GROUP(_1) BE_GROUP(_2) BE_GROUP(_3)

Definition at line 316 of file module_macros_common.hpp.

◆ BACKEND_GROUPS_4

#define BACKEND_GROUPS_4 (   _1,
  _2,
  _3,
  _4 
)    BE_GROUP(_1) BE_GROUP(_2) BE_GROUP(_3) BE_GROUP(_4)

Definition at line 315 of file module_macros_common.hpp.

◆ BACKEND_GROUPS_5

#define BACKEND_GROUPS_5 (   _1,
  _2,
  _3,
  _4,
  _5 
)    BE_GROUP(_1) BE_GROUP(_2) BE_GROUP(_3) BE_GROUP(_4) BE_GROUP(_5)

Definition at line 314 of file module_macros_common.hpp.

◆ BACKEND_GROUPS_6

#define BACKEND_GROUPS_6 (   _1,
  _2,
  _3,
  _4,
  _5,
  _6 
)
Value:
BE_GROUP(_6)
#define BE_GROUP(GROUP)
Declare a backend group, from which one backend requirement must be activated.

Definition at line 312 of file module_macros_common.hpp.

◆ BACKEND_GROUPS_7

#define BACKEND_GROUPS_7 (   _1,
  _2,
  _3,
  _4,
  _5,
  _6,
  _7 
)
Value:
BE_GROUP(_6) BE_GROUP(_7)
#define BE_GROUP(GROUP)
Declare a backend group, from which one backend requirement must be activated.

Definition at line 310 of file module_macros_common.hpp.

◆ BACKEND_GROUPS_8

#define BACKEND_GROUPS_8 (   _1,
  _2,
  _3,
  _4,
  _5,
  _6,
  _7,
  _8 
)
Value:
BE_GROUP(_6) BE_GROUP(_7) BE_GROUP(_8)
#define BE_GROUP(GROUP)
Declare a backend group, from which one backend requirement must be activated.

Definition at line 308 of file module_macros_common.hpp.

◆ BACKEND_GROUPS_9

#define BACKEND_GROUPS_9 (   _1,
  _2,
  _3,
  _4,
  _5,
  _6,
  _7,
  _8,
  _9 
)
Value:
BE_GROUP(_6) BE_GROUP(_7) BE_GROUP(_8) BE_GROUP(_9)
#define BE_GROUP(GROUP)
Declare a backend group, from which one backend requirement must be activated.

Definition at line 306 of file module_macros_common.hpp.

◆ BACKEND_REQ

#define BACKEND_REQ (   ...)    VARARG(BACKEND_REQ, __VA_ARGS__)

Definition at line 163 of file module_macros_common.hpp.

◆ BACKEND_REQ_3

#define BACKEND_REQ_3 (   _1,
  _2,
  _3 
)    DECLARE_BACKEND_REQ(none, _1, _2, _3, (), 1)

Definition at line 162 of file module_macros_common.hpp.

◆ BACKEND_REQ_4

#define BACKEND_REQ_4 (   _1,
  _2,
  _3,
  _4 
)    DECLARE_BACKEND_REQ(none, _1, _2, _3, _4, 0)

Definition at line 161 of file module_macros_common.hpp.

◆ BACKEND_REQ_FROM_GROUP

#define BACKEND_REQ_FROM_GROUP (   ...)    VARARG(BACKEND_REQ_FROM_GROUP, __VA_ARGS__)

Definition at line 158 of file module_macros_common.hpp.

◆ BACKEND_REQ_FROM_GROUP_4

#define BACKEND_REQ_FROM_GROUP_4 (   _1,
  _2,
  _3,
  _4 
)    DECLARE_BACKEND_REQ(_1, _2, _3, _4, (), 1)

Definition at line 157 of file module_macros_common.hpp.

◆ BACKEND_REQ_FROM_GROUP_5

#define BACKEND_REQ_FROM_GROUP_5 (   _1,
  _2,
  _3,
  _4,
  _5 
)    DECLARE_BACKEND_REQ(_1, _2, _3, _4, _5, 0)

Definition at line 156 of file module_macros_common.hpp.

◆ CLASSLOAD_NEEDED_0

#define CLASSLOAD_NEEDED_0 (   _1)    CLASSLOAD_NEEDED(_1, "default")

NEEDS_CLASSES_FROM() called with no versions; use default.

Definition at line 171 of file module_macros_common.hpp.

◆ CLASSLOAD_NEEDED_1

#define CLASSLOAD_NEEDED_1 (   _1,
  ... 
)    CLASSLOAD_NEEDED(_1, #__VA_ARGS__)

CLASSLOAD_NEEDED() called with one or more versions; require specified backend versions.

Definition at line 173 of file module_macros_common.hpp.

◆ DEFINED_START_FUNCTION_CAN_MANAGE_LOOPS

#define DEFINED_START_FUNCTION_CAN_MANAGE_LOOPS   ()

Definition at line 148 of file module_macros_common.hpp.

◆ DEFINED_START_FUNCTION_CANNOT_MANAGE_LOOPS

#define DEFINED_START_FUNCTION_CANNOT_MANAGE_LOOPS   ()

Definition at line 149 of file module_macros_common.hpp.

◆ DEFINED_START_FUNCTION_INIT_FUNCTION

#define DEFINED_START_FUNCTION_INIT_FUNCTION   ()

Definition at line 150 of file module_macros_common.hpp.

◆ EXPAND_DEPS_1

#define EXPAND_DEPS_1 (   A,
  B,
  _1 
)    LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_1),BOOST_PP_TUPLE_ELEM(1,_1))

Definition at line 116 of file module_macros_common.hpp.

◆ EXPAND_DEPS_10

#define EXPAND_DEPS_10 (   A,
  B,
  _1,
  _2,
  _3,
  _4,
  _5,
  _6,
  _7,
  _8,
  _9,
  _10 
)
Value:
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_2),BOOST_PP_TUPLE_ELEM(1,_2)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_3),BOOST_PP_TUPLE_ELEM(1,_3)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_4),BOOST_PP_TUPLE_ELEM(1,_4)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_5),BOOST_PP_TUPLE_ELEM(1,_5)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_6),BOOST_PP_TUPLE_ELEM(1,_6)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_7),BOOST_PP_TUPLE_ELEM(1,_7)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_8),BOOST_PP_TUPLE_ELEM(1,_8)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_9),BOOST_PP_TUPLE_ELEM(1,_9)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_10),BOOST_PP_TUPLE_ELEM(1,_10))
#define BOOST_PP_TUPLE_ELEM(...)
#define LONG_DEPENDENCY(MODULE, FUNCTION, DEP, TYPE)
Long (all argument) version of DEPENDENCY.

Definition at line 62 of file module_macros_common.hpp.

◆ EXPAND_DEPS_2

#define EXPAND_DEPS_2 (   A,
  B,
  _1,
  _2 
)
Value:
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_2),BOOST_PP_TUPLE_ELEM(1,_2))
#define BOOST_PP_TUPLE_ELEM(...)
#define LONG_DEPENDENCY(MODULE, FUNCTION, DEP, TYPE)
Long (all argument) version of DEPENDENCY.

Definition at line 114 of file module_macros_common.hpp.

◆ EXPAND_DEPS_3

#define EXPAND_DEPS_3 (   A,
  B,
  _1,
  _2,
  _3 
)
Value:
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_2),BOOST_PP_TUPLE_ELEM(1,_2)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_3),BOOST_PP_TUPLE_ELEM(1,_3))
#define BOOST_PP_TUPLE_ELEM(...)
#define LONG_DEPENDENCY(MODULE, FUNCTION, DEP, TYPE)
Long (all argument) version of DEPENDENCY.

Definition at line 111 of file module_macros_common.hpp.

◆ EXPAND_DEPS_4

#define EXPAND_DEPS_4 (   A,
  B,
  _1,
  _2,
  _3,
  _4 
)
Value:
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_2),BOOST_PP_TUPLE_ELEM(1,_2)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_3),BOOST_PP_TUPLE_ELEM(1,_3)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_4),BOOST_PP_TUPLE_ELEM(1,_4))
#define BOOST_PP_TUPLE_ELEM(...)
#define LONG_DEPENDENCY(MODULE, FUNCTION, DEP, TYPE)
Long (all argument) version of DEPENDENCY.

Definition at line 107 of file module_macros_common.hpp.

◆ EXPAND_DEPS_5

#define EXPAND_DEPS_5 (   A,
  B,
  _1,
  _2,
  _3,
  _4,
  _5 
)
Value:
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_2),BOOST_PP_TUPLE_ELEM(1,_2)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_3),BOOST_PP_TUPLE_ELEM(1,_3)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_4),BOOST_PP_TUPLE_ELEM(1,_4)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_5),BOOST_PP_TUPLE_ELEM(1,_5))
#define BOOST_PP_TUPLE_ELEM(...)
#define LONG_DEPENDENCY(MODULE, FUNCTION, DEP, TYPE)
Long (all argument) version of DEPENDENCY.

Definition at line 102 of file module_macros_common.hpp.

◆ EXPAND_DEPS_6

#define EXPAND_DEPS_6 (   A,
  B,
  _1,
  _2,
  _3,
  _4,
  _5,
  _6 
)
Value:
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_2),BOOST_PP_TUPLE_ELEM(1,_2)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_3),BOOST_PP_TUPLE_ELEM(1,_3)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_4),BOOST_PP_TUPLE_ELEM(1,_4)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_5),BOOST_PP_TUPLE_ELEM(1,_5)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_6),BOOST_PP_TUPLE_ELEM(1,_6))
#define BOOST_PP_TUPLE_ELEM(...)
#define LONG_DEPENDENCY(MODULE, FUNCTION, DEP, TYPE)
Long (all argument) version of DEPENDENCY.

Definition at line 96 of file module_macros_common.hpp.

◆ EXPAND_DEPS_7

#define EXPAND_DEPS_7 (   A,
  B,
  _1,
  _2,
  _3,
  _4,
  _5,
  _6,
  _7 
)
Value:
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_2),BOOST_PP_TUPLE_ELEM(1,_2)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_3),BOOST_PP_TUPLE_ELEM(1,_3)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_4),BOOST_PP_TUPLE_ELEM(1,_4)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_5),BOOST_PP_TUPLE_ELEM(1,_5)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_6),BOOST_PP_TUPLE_ELEM(1,_6)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_7),BOOST_PP_TUPLE_ELEM(1,_7))
#define BOOST_PP_TUPLE_ELEM(...)
#define LONG_DEPENDENCY(MODULE, FUNCTION, DEP, TYPE)
Long (all argument) version of DEPENDENCY.

Definition at line 89 of file module_macros_common.hpp.

◆ EXPAND_DEPS_8

#define EXPAND_DEPS_8 (   A,
  B,
  _1,
  _2,
  _3,
  _4,
  _5,
  _6,
  _7,
  _8 
)
Value:
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_2),BOOST_PP_TUPLE_ELEM(1,_2)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_3),BOOST_PP_TUPLE_ELEM(1,_3)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_4),BOOST_PP_TUPLE_ELEM(1,_4)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_5),BOOST_PP_TUPLE_ELEM(1,_5)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_6),BOOST_PP_TUPLE_ELEM(1,_6)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_7),BOOST_PP_TUPLE_ELEM(1,_7)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_8),BOOST_PP_TUPLE_ELEM(1,_8))
#define BOOST_PP_TUPLE_ELEM(...)
#define LONG_DEPENDENCY(MODULE, FUNCTION, DEP, TYPE)
Long (all argument) version of DEPENDENCY.

Definition at line 81 of file module_macros_common.hpp.

◆ EXPAND_DEPS_9

#define EXPAND_DEPS_9 (   A,
  B,
  _1,
  _2,
  _3,
  _4,
  _5,
  _6,
  _7,
  _8,
  _9 
)
Value:
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_2),BOOST_PP_TUPLE_ELEM(1,_2)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_3),BOOST_PP_TUPLE_ELEM(1,_3)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_4),BOOST_PP_TUPLE_ELEM(1,_4)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_5),BOOST_PP_TUPLE_ELEM(1,_5)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_6),BOOST_PP_TUPLE_ELEM(1,_6)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_7),BOOST_PP_TUPLE_ELEM(1,_7)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_8),BOOST_PP_TUPLE_ELEM(1,_8)) \
LONG_DEPENDENCY(A,B,BOOST_PP_TUPLE_ELEM(0,_9),BOOST_PP_TUPLE_ELEM(1,_9))
#define BOOST_PP_TUPLE_ELEM(...)
#define LONG_DEPENDENCY(MODULE, FUNCTION, DEP, TYPE)
Long (all argument) version of DEPENDENCY.

Definition at line 72 of file module_macros_common.hpp.

◆ EXPAND_DEPS_AB

#define EXPAND_DEPS_AB (   A,
  B,
  ... 
)    VARARG_AB(EXPAND_DEPS, A, B, __VA_ARGS__)

Definition at line 117 of file module_macros_common.hpp.

◆ IS_MODEL

#define IS_MODEL   1

Definition at line 51 of file module_macros_common.hpp.

◆ LONG_BACKEND_REQ

#define LONG_BACKEND_REQ (   ...)    VARARG(LONG_BACKEND_REQ, __VA_ARGS__)

Definition at line 168 of file module_macros_common.hpp.

◆ LONG_BACKEND_REQ_6

#define LONG_BACKEND_REQ_6 (   _1,
  _2,
  _3,
  _4,
  _5,
  _6 
)    LONG_DECLARE_BACKEND_REQ(_1, _2, _3, none, _4, _5, _6, (), 1)

Definition at line 167 of file module_macros_common.hpp.

◆ LONG_BACKEND_REQ_7

#define LONG_BACKEND_REQ_7 (   _1,
  _2,
  _3,
  _4,
  _5,
  _6,
  _7 
)    LONG_DECLARE_BACKEND_REQ(_1, _2, _3, none, _4, _5, _6, _7, 0)

Definition at line 166 of file module_macros_common.hpp.

◆ MODEL_COMBO_AUX

#define MODEL_COMBO_AUX (   z,
  i,
  data 
)    CAT(data,i)

Definition at line 190 of file module_macros_common.hpp.

◆ MODEL_GROUP_AUX

#define MODEL_GROUP_AUX (   r,
  data,
  i,
  elem 
)    MODEL_GROUP(CAT(data,i), (elem))

Shortcuts for allowing declarations of joint models (single-line model combinations)

Definition at line 189 of file module_macros_common.hpp.

◆ NEEDS_CLASSES_FROM

#define NEEDS_CLASSES_FROM (   ...)    CAT(CLASSLOAD_NEEDED_, BOOST_PP_GREATER(BOOST_PP_VARIADIC_SIZE(__VA_ARGS__), 1))(__VA_ARGS__)

Redirects the NEEDS_CLASSES_FROM(BACKEND, [VERSIONS]) macro to the CLASSLOAD_NEEDED(BACKEND, VERSTRING) macro according to whether it has been called with version numbers or not (making the version number 'default' if it is omitted).

Definition at line 177 of file module_macros_common.hpp.

◆ NEW_CAPABILITY

Spectrum NEW_CAPABILITY   1

Definition at line 53 of file module_macros_common.hpp.

◆ NOT_MODEL

#define NOT_MODEL   0

Definition at line 52 of file module_macros_common.hpp.

◆ OLD_CAPABILITY

Definition at line 54 of file module_macros_common.hpp.

◆ QF_ALLOW_MODELS

#define QF_ALLOW_MODELS (   A,
  ... 
)    VARARG_SWITCH_ON_GT_ONE_A(QF_ALLOW_MODELS, A, __VA_ARGS__)

Definition at line 61 of file module_macros_common.hpp.

◆ QF_ALLOW_MODELS_1

#define QF_ALLOW_MODELS_1 (   A,
  _1 
)    DUMMYARG(A, _1)

Definition at line 60 of file module_macros_common.hpp.

◆ QF_ALLOW_MODELS_MORE

#define QF_ALLOW_MODELS_MORE (   A,
  B,
  ... 
)    ALLOW_MODELS_AB(A, B, __VA_ARGS__)

Definition at line 59 of file module_macros_common.hpp.

◆ QFBODY_1

#define QFBODY_1 (   A,
  B,
  C,
  _1 
)    LONG_DECLARE_FUNCTION(A,B,C,_1,0)

Definition at line 131 of file module_macros_common.hpp.

◆ QFBODY_2

#define QFBODY_2 (   A,
  B,
  C,
  _1,
  _2 
)    QFBODY_1(A,B,C,_1) QF_ALLOW_MODELS(A, C INSERT_NONEMPTY(_2))

Definition at line 130 of file module_macros_common.hpp.

◆ QFBODY_ABC

#define QFBODY_ABC (   A,
  B,
  C,
  ... 
)    VARARG_SWITCH_ON_GT_TWO_ABC(QFBODY, A, B, C, __VA_ARGS__)

Definition at line 132 of file module_macros_common.hpp.

◆ QFBODY_MORE

#define QFBODY_MORE (   A,
  B,
  C,
  _1,
  _2,
  ... 
)    QFBODY_2(A,B,C,_1,_2) EXPAND_DEPS_AB(A, C, __VA_ARGS__)

Definition at line 129 of file module_macros_common.hpp.

◆ QUICK_FUNCTION

#define QUICK_FUNCTION (   MODULE,
  CAPABILITY,
  NEW_CAPABILITY_FLAG,
  FUNCTION,
  ... 
)
Value:
BOOST_PP_IIF(NEW_CAPABILITY_FLAG,LONG_START_CAPABILITY(MODULE,CAPABILITY),BOOST_PP_EMPTY()) \
QFBODY_ABC(MODULE, CAPABILITY, FUNCTION, __VA_ARGS__)
#define CAPABILITY
#define MODULE
#define LONG_START_CAPABILITY(MODULE, CAPABILITY)
Long (all argument) version of START_CAPABILITY.
#define FUNCTION

}@

Quick, one-line declaration of simple module functions, including dependencies. Allows declaration of capability, function name and type, dependencies and up to ten allowed models, all in one hit. Typically used to supplement standalone modules so that all dependencies can be dealt with, but can be used in rollcall headers as well. NEW_CAPABILITY_FLAG can be either NEW_CAPABILITY or OLD_CAPABILITY. {@

Definition at line 126 of file module_macros_common.hpp.

◆ START_FUNCTION

#define START_FUNCTION (   ...)    VARARG(START_FUNCTION, __VA_ARGS__)

Definition at line 153 of file module_macros_common.hpp.

◆ START_FUNCTION_

#define START_FUNCTION_ (   TYPE)
Value:
FAIL("Unrecognised flag in argument 2 of START_FUNCTION; should be "\
"CAN_MANAGE_LOOPS, CANNOT_MANAGE_LOOPS, INIT_FUNCTION, or absent.")
#define FAIL(x)
Definition: util_macros.hpp:37

Definition at line 146 of file module_macros_common.hpp.

◆ START_FUNCTION_1

#define START_FUNCTION_1 (   _1)    CAT(START_FUNCTION_,CANNOT_MANAGE_LOOPS)(_1)

Definition at line 152 of file module_macros_common.hpp.

◆ START_FUNCTION_2

#define START_FUNCTION_2 (   _1,
  _2 
)    CAT(START_FUNCTION_,IF_DEFINED(START_FUNCTION_##_2,_2))(_1)

Definition at line 151 of file module_macros_common.hpp.

◆ START_FUNCTION_CAN_MANAGE_LOOPS

#define START_FUNCTION_CAN_MANAGE_LOOPS (   TYPE)    DECLARE_FUNCTION(TYPE,1)

Definition at line 144 of file module_macros_common.hpp.

◆ START_FUNCTION_CANNOT_MANAGE_LOOPS

#define START_FUNCTION_CANNOT_MANAGE_LOOPS (   TYPE)    DECLARE_FUNCTION(TYPE,0)

Definition at line 145 of file module_macros_common.hpp.

◆ START_FUNCTION_INIT_FUNCTION

#define START_FUNCTION_INIT_FUNCTION (   TYPE)    DECLARE_FUNCTION(TYPE,2)

Definition at line 143 of file module_macros_common.hpp.

◆ UNUSED_OK

#define UNUSED_OK

Define a macro to suppress unused variable and typedef warnings in GCC (and do nothing for other compilers)

Definition at line 45 of file module_macros_common.hpp.