mirror of
https://github.com/boostorg/contract.git
synced 2026-02-27 17:02:15 +00:00
parsing template parameters
This commit is contained in:
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_ISxalignas (1)
|
||||
#define alignasxBOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_REMOVExalignas
|
||||
#define alignasxBOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_CAT_TO_COMMAalignas ,
|
||||
#define alignasBOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_CAT_TO_EMPTYalignas
|
||||
#define alignasBOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ALIGNAS_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ALIGNAS_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ALIGNAS_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_ALIGNAS_FRONT`).
|
||||
// Precondition: tokens must start with `alignas` (this can be
|
||||
// checked with `..._IS_ALIGNAS_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_ALIGNAS_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_REMOVE)
|
||||
// Precondition: tokens must end with `alignas` (this can be
|
||||
// checked with `..._IS_ALIGNAS_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_ISxalignof (1)
|
||||
#define alignofxBOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_REMOVExalignof
|
||||
#define alignofxBOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_CAT_TO_COMMAalignof ,
|
||||
#define alignofBOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_CAT_TO_EMPTYalignof
|
||||
#define alignofBOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ALIGNOF_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ALIGNOF_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ALIGNOF_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_ALIGNOF_FRONT`).
|
||||
// Precondition: tokens must start with `alignof` (this can be
|
||||
// checked with `..._IS_ALIGNOF_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_ALIGNOF_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_REMOVE)
|
||||
// Precondition: tokens must end with `alignof` (this can be
|
||||
// checked with `..._IS_ALIGNOF_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_ISxand (1)
|
||||
#define andxBOOST_CONTRACT_EXT_PP_KEYWORD_AND_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_REMOVExand
|
||||
#define andxBOOST_CONTRACT_EXT_PP_KEYWORD_AND_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_CAT_TO_COMMAand ,
|
||||
#define andBOOST_CONTRACT_EXT_PP_KEYWORD_AND_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_CAT_TO_EMPTYand
|
||||
#define andBOOST_CONTRACT_EXT_PP_KEYWORD_AND_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AND_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_AND_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_AND_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AND_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_AND_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AND_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_AND_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_AND_FRONT`).
|
||||
// Precondition: tokens must start with `and` (this can be
|
||||
// checked with `..._IS_AND_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_AND_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_AND_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_AND_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_AND_REMOVE)
|
||||
// Precondition: tokens must end with `and` (this can be
|
||||
// checked with `..._IS_AND_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_AND_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_ISxand_eq (1)
|
||||
#define and_eqxBOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_REMOVExand_eq
|
||||
#define and_eqxBOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_CAT_TO_COMMAand_eq ,
|
||||
#define and_eqBOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_CAT_TO_EMPTYand_eq
|
||||
#define and_eqBOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AND_EQ_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AND_EQ_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AND_EQ_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_AND_EQ_FRONT`).
|
||||
// Precondition: tokens must start with `and_eq` (this can be
|
||||
// checked with `..._IS_AND_EQ_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_AND_EQ_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_REMOVE)
|
||||
// Precondition: tokens must end with `and_eq` (this can be
|
||||
// checked with `..._IS_AND_EQ_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_ISxasm (1)
|
||||
#define asmxBOOST_CONTRACT_EXT_PP_KEYWORD_ASM_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_REMOVExasm
|
||||
#define asmxBOOST_CONTRACT_EXT_PP_KEYWORD_ASM_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_CAT_TO_COMMAasm ,
|
||||
#define asmBOOST_CONTRACT_EXT_PP_KEYWORD_ASM_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_CAT_TO_EMPTYasm
|
||||
#define asmBOOST_CONTRACT_EXT_PP_KEYWORD_ASM_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ASM_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ASM_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_ASM_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ASM_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_ASM_FRONT`).
|
||||
// Precondition: tokens must start with `asm` (this can be
|
||||
// checked with `..._IS_ASM_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_ASM_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_ASM_REMOVE)
|
||||
// Precondition: tokens must end with `asm` (this can be
|
||||
// checked with `..._IS_ASM_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_ISxauto (1)
|
||||
#define autoxBOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_REMOVExauto
|
||||
#define autoxBOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_CAT_TO_COMMAauto ,
|
||||
#define autoBOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_CAT_TO_EMPTYauto
|
||||
#define autoBOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_AUTO_FRONT`).
|
||||
// Precondition: tokens must start with `auto` (this can be
|
||||
// checked with `..._IS_AUTO_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_AUTO_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_REMOVE)
|
||||
// Precondition: tokens must end with `auto` (this can be
|
||||
// checked with `..._IS_AUTO_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_ISxbitand (1)
|
||||
#define bitandxBOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_REMOVExbitand
|
||||
#define bitandxBOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_CAT_TO_COMMAbitand ,
|
||||
#define bitandBOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_CAT_TO_EMPTYbitand
|
||||
#define bitandBOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BITAND_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BITAND_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BITAND_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_BITAND_FRONT`).
|
||||
// Precondition: tokens must start with `bitand` (this can be
|
||||
// checked with `..._IS_BITAND_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_BITAND_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_REMOVE)
|
||||
// Precondition: tokens must end with `bitand` (this can be
|
||||
// checked with `..._IS_BITAND_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_ISxbitor (1)
|
||||
#define bitorxBOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_REMOVExbitor
|
||||
#define bitorxBOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_CAT_TO_COMMAbitor ,
|
||||
#define bitorBOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_CAT_TO_EMPTYbitor
|
||||
#define bitorBOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BITOR_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BITOR_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BITOR_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_BITOR_FRONT`).
|
||||
// Precondition: tokens must start with `bitor` (this can be
|
||||
// checked with `..._IS_BITOR_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_BITOR_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_REMOVE)
|
||||
// Precondition: tokens must end with `bitor` (this can be
|
||||
// checked with `..._IS_BITOR_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_ISxbool (1)
|
||||
#define boolxBOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_REMOVExbool
|
||||
#define boolxBOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_CAT_TO_COMMAbool ,
|
||||
#define boolBOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_CAT_TO_EMPTYbool
|
||||
#define boolBOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BOOL_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BOOL_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BOOL_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_BOOL_FRONT`).
|
||||
// Precondition: tokens must start with `bool` (this can be
|
||||
// checked with `..._IS_BOOL_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_BOOL_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_REMOVE)
|
||||
// Precondition: tokens must end with `bool` (this can be
|
||||
// checked with `..._IS_BOOL_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_ISxbreak (1)
|
||||
#define breakxBOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_REMOVExbreak
|
||||
#define breakxBOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_CAT_TO_COMMAbreak ,
|
||||
#define breakBOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_CAT_TO_EMPTYbreak
|
||||
#define breakBOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BREAK_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BREAK_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BREAK_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_BREAK_FRONT`).
|
||||
// Precondition: tokens must start with `break` (this can be
|
||||
// checked with `..._IS_BREAK_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_BREAK_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_REMOVE)
|
||||
// Precondition: tokens must end with `break` (this can be
|
||||
// checked with `..._IS_BREAK_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_ISxcase (1)
|
||||
#define casexBOOST_CONTRACT_EXT_PP_KEYWORD_CASE_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_REMOVExcase
|
||||
#define casexBOOST_CONTRACT_EXT_PP_KEYWORD_CASE_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_CAT_TO_COMMAcase ,
|
||||
#define caseBOOST_CONTRACT_EXT_PP_KEYWORD_CASE_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_CAT_TO_EMPTYcase
|
||||
#define caseBOOST_CONTRACT_EXT_PP_KEYWORD_CASE_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CASE_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CASE_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_CASE_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CASE_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_CASE_FRONT`).
|
||||
// Precondition: tokens must start with `case` (this can be
|
||||
// checked with `..._IS_CASE_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_CASE_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_CASE_REMOVE)
|
||||
// Precondition: tokens must end with `case` (this can be
|
||||
// checked with `..._IS_CASE_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_ISxcatch (1)
|
||||
#define catchxBOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_REMOVExcatch
|
||||
#define catchxBOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_CAT_TO_COMMAcatch ,
|
||||
#define catchBOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_CAT_TO_EMPTYcatch
|
||||
#define catchBOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CATCH_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CATCH_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CATCH_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_CATCH_FRONT`).
|
||||
// Precondition: tokens must start with `catch` (this can be
|
||||
// checked with `..._IS_CATCH_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_CATCH_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_REMOVE)
|
||||
// Precondition: tokens must end with `catch` (this can be
|
||||
// checked with `..._IS_CATCH_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_ISxchar (1)
|
||||
#define charxBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_REMOVExchar
|
||||
#define charxBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_CAT_TO_COMMAchar ,
|
||||
#define charBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_CAT_TO_EMPTYchar
|
||||
#define charBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CHAR_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CHAR_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CHAR_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_CHAR_FRONT`).
|
||||
// Precondition: tokens must start with `char` (this can be
|
||||
// checked with `..._IS_CHAR_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_CHAR_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_REMOVE)
|
||||
// Precondition: tokens must end with `char` (this can be
|
||||
// checked with `..._IS_CHAR_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_ISxchar16_t (1)
|
||||
#define char16_txBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_REMOVExchar16_t
|
||||
#define char16_txBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_CAT_TO_COMMAchar16_t ,
|
||||
#define char16_tBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_CAT_TO_EMPTYchar16_t
|
||||
#define char16_tBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CHAR16_T_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CHAR16_T_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CHAR16_T_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_CHAR16_T_FRONT`).
|
||||
// Precondition: tokens must start with `char16_t` (this can be
|
||||
// checked with `..._IS_CHAR16_T_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_CHAR16_T_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_REMOVE)
|
||||
// Precondition: tokens must end with `char16_t` (this can be
|
||||
// checked with `..._IS_CHAR16_T_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_ISxchar32_t (1)
|
||||
#define char32_txBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_REMOVExchar32_t
|
||||
#define char32_txBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_CAT_TO_COMMAchar32_t ,
|
||||
#define char32_tBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_CAT_TO_EMPTYchar32_t
|
||||
#define char32_tBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CHAR32_T_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CHAR32_T_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CHAR32_T_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_CHAR32_T_FRONT`).
|
||||
// Precondition: tokens must start with `char32_t` (this can be
|
||||
// checked with `..._IS_CHAR32_T_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_CHAR32_T_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_REMOVE)
|
||||
// Precondition: tokens must end with `char32_t` (this can be
|
||||
// checked with `..._IS_CHAR32_T_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_ISxclass (1)
|
||||
#define classxBOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_REMOVExclass
|
||||
#define classxBOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_CAT_TO_COMMAclass ,
|
||||
#define classBOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_CAT_TO_EMPTYclass
|
||||
#define classBOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CLASS_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CLASS_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CLASS_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_CLASS_FRONT`).
|
||||
// Precondition: tokens must start with `class` (this can be
|
||||
// checked with `..._IS_CLASS_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_CLASS_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_REMOVE)
|
||||
// Precondition: tokens must end with `class` (this can be
|
||||
// checked with `..._IS_CLASS_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_ISxcompl (1)
|
||||
#define complxBOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_REMOVExcompl
|
||||
#define complxBOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_CAT_TO_COMMAcompl ,
|
||||
#define complBOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_CAT_TO_EMPTYcompl
|
||||
#define complBOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_COMPL_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_COMPL_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_COMPL_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_COMPL_FRONT`).
|
||||
// Precondition: tokens must start with `compl` (this can be
|
||||
// checked with `..._IS_COMPL_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_COMPL_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_REMOVE)
|
||||
// Precondition: tokens must end with `compl` (this can be
|
||||
// checked with `..._IS_COMPL_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_ISxconst (1)
|
||||
#define constxBOOST_CONTRACT_EXT_PP_KEYWORD_CONST_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_REMOVExconst
|
||||
#define constxBOOST_CONTRACT_EXT_PP_KEYWORD_CONST_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAT_TO_COMMAconst ,
|
||||
#define constBOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAT_TO_EMPTYconst
|
||||
#define constBOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_CONST_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_CONST_FRONT`).
|
||||
// Precondition: tokens must start with `const` (this can be
|
||||
// checked with `..._IS_CONST_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_CONST_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_CONST_REMOVE)
|
||||
// Precondition: tokens must end with `const` (this can be
|
||||
// checked with `..._IS_CONST_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_ISxconst_cast (1)
|
||||
#define const_castxBOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_REMOVExconst_cast
|
||||
#define const_castxBOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_CAT_TO_COMMAconst_cast ,
|
||||
#define const_castBOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_CAT_TO_EMPTYconst_cast
|
||||
#define const_castBOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_CAST_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_CAST_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_CAST_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_CONST_CAST_FRONT`).
|
||||
// Precondition: tokens must start with `const_cast` (this can be
|
||||
// checked with `..._IS_CONST_CAST_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_CONST_CAST_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_REMOVE)
|
||||
// Precondition: tokens must end with `const_cast` (this can be
|
||||
// checked with `..._IS_CONST_CAST_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_ISxconstexpr (1)
|
||||
#define constexprxBOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_REMOVExconstexpr
|
||||
#define constexprxBOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_CAT_TO_COMMAconstexpr ,
|
||||
#define constexprBOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_CAT_TO_EMPTYconstexpr
|
||||
#define constexprBOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONSTEXPR_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONSTEXPR_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONSTEXPR_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_CONSTEXPR_FRONT`).
|
||||
// Precondition: tokens must start with `constexpr` (this can be
|
||||
// checked with `..._IS_CONSTEXPR_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_CONSTEXPR_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_REMOVE)
|
||||
// Precondition: tokens must end with `constexpr` (this can be
|
||||
// checked with `..._IS_CONSTEXPR_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_ISxcontinue (1)
|
||||
#define continuexBOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_REMOVExcontinue
|
||||
#define continuexBOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_CAT_TO_COMMAcontinue ,
|
||||
#define continueBOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_CAT_TO_EMPTYcontinue
|
||||
#define continueBOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONTINUE_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONTINUE_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONTINUE_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_CONTINUE_FRONT`).
|
||||
// Precondition: tokens must start with `continue` (this can be
|
||||
// checked with `..._IS_CONTINUE_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_CONTINUE_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_REMOVE)
|
||||
// Precondition: tokens must end with `continue` (this can be
|
||||
// checked with `..._IS_CONTINUE_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_ISxextends (1)
|
||||
#define extendsxBOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_REMOVExextends
|
||||
#define extendsxBOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_CAT_TO_COMMAextends ,
|
||||
#define extendsBOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_CAT_TO_EMPTYextends
|
||||
#define extendsBOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXTENDS_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXTENDS_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXTENDS_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_EXTENDS_FRONT`).
|
||||
// Precondition: tokens must start with `extends` (this can be
|
||||
// checked with `..._IS_EXTENDS_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_EXTENDS_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_REMOVE)
|
||||
// Precondition: tokens must end with `extends` (this can be
|
||||
// checked with `..._IS_EXTENDS_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_INVARIANT_ISxinvariant (1)
|
||||
#define invariantxBOOST_CONTRACT_EXT_PP_KEYWORD_INVARIANT_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_INVARIANT_REMOVExinvariant
|
||||
#define invariantxBOOST_CONTRACT_EXT_PP_KEYWORD_INVARIANT_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_INVARIANT_CAT_TO_COMMAinvariant ,
|
||||
#define invariantBOOST_CONTRACT_EXT_PP_KEYWORD_INVARIANT_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_INVARIANT_CAT_TO_EMPTYinvariant
|
||||
#define invariantBOOST_CONTRACT_EXT_PP_KEYWORD_INVARIANT_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_INVARIANT_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_INVARIANT_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_INVARIANT_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_INVARIANT_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_INVARIANT_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_INVARIANT_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_INVARIANT_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_INVARIANT_FRONT`).
|
||||
// Precondition: tokens must start with `invariant` (this can be
|
||||
// checked with `..._IS_INVARIANT_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_INVARIANT_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_INVARIANT_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_INVARIANT_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_INVARIANT_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_INVARIANT_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_INVARIANT_REMOVE)
|
||||
// Precondition: tokens must end with `invariant` (this can be
|
||||
// checked with `..._IS_INVARIANT_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_INVARIANT_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_INVARIANT_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_ISxpostcondition (1)
|
||||
#define postconditionxBOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_REMOVExpostcondition
|
||||
#define postconditionxBOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_CAT_TO_COMMApostcondition ,
|
||||
#define postconditionBOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_CAT_TO_EMPTYpostcondition
|
||||
#define postconditionBOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_POSTCONDITION_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_POSTCONDITION_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_POSTCONDITION_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_POSTCONDITION_FRONT`).
|
||||
// Precondition: tokens must start with `postcondition` (this can be
|
||||
// checked with `..._IS_POSTCONDITION_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_POSTCONDITION_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_REMOVE)
|
||||
// Precondition: tokens must end with `postcondition` (this can be
|
||||
// checked with `..._IS_POSTCONDITION_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_ISxprecondition (1)
|
||||
#define preconditionxBOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_REMOVExprecondition
|
||||
#define preconditionxBOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_CAT_TO_COMMAprecondition ,
|
||||
#define preconditionBOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_CAT_TO_EMPTYprecondition
|
||||
#define preconditionBOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PRECONDITION_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PRECONDITION_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PRECONDITION_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_PRECONDITION_FRONT`).
|
||||
// Precondition: tokens must start with `precondition` (this can be
|
||||
// checked with `..._IS_PRECONDITION_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_PRECONDITION_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_REMOVE)
|
||||
// Precondition: tokens must end with `precondition` (this can be
|
||||
// checked with `..._IS_PRECONDITION_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_ISxverbatim (1)
|
||||
#define verbatimxBOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_REMOVExverbatim
|
||||
#define verbatimxBOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_CAT_TO_COMMAverbatim ,
|
||||
#define verbatimBOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_CAT_TO_EMPTYverbatim
|
||||
#define verbatimBOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VERBATIM_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VERBATIM_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VERBATIM_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_VERBATIM_FRONT`).
|
||||
// Precondition: tokens must start with `verbatim` (this can be
|
||||
// checked with `..._IS_VERBATIM_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_VERBATIM_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_REMOVE)
|
||||
// Precondition: tokens must end with `verbatim` (this can be
|
||||
// checked with `..._IS_VERBATIM_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_ISxdecltype (1)
|
||||
#define decltypexBOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_REMOVExdecltype
|
||||
#define decltypexBOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_CAT_TO_COMMAdecltype ,
|
||||
#define decltypeBOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_CAT_TO_EMPTYdecltype
|
||||
#define decltypeBOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DECLTYPE_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DECLTYPE_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DECLTYPE_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_DECLTYPE_FRONT`).
|
||||
// Precondition: tokens must start with `decltype` (this can be
|
||||
// checked with `..._IS_DECLTYPE_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_DECLTYPE_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_REMOVE)
|
||||
// Precondition: tokens must end with `decltype` (this can be
|
||||
// checked with `..._IS_DECLTYPE_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_ISxdefault (1)
|
||||
#define defaultxBOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_REMOVExdefault
|
||||
#define defaultxBOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_CAT_TO_COMMAdefault ,
|
||||
#define defaultBOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_CAT_TO_EMPTYdefault
|
||||
#define defaultBOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DEFAULT_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DEFAULT_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DEFAULT_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_DEFAULT_FRONT`).
|
||||
// Precondition: tokens must start with `default` (this can be
|
||||
// checked with `..._IS_DEFAULT_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_DEFAULT_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_REMOVE)
|
||||
// Precondition: tokens must end with `default` (this can be
|
||||
// checked with `..._IS_DEFAULT_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_ISxdelete (1)
|
||||
#define deletexBOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_REMOVExdelete
|
||||
#define deletexBOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_CAT_TO_COMMAdelete ,
|
||||
#define deleteBOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_CAT_TO_EMPTYdelete
|
||||
#define deleteBOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DELETE_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DELETE_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DELETE_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_DELETE_FRONT`).
|
||||
// Precondition: tokens must start with `delete` (this can be
|
||||
// checked with `..._IS_DELETE_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_DELETE_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_REMOVE)
|
||||
// Precondition: tokens must end with `delete` (this can be
|
||||
// checked with `..._IS_DELETE_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DO_ISxdo (1)
|
||||
#define doxBOOST_CONTRACT_EXT_PP_KEYWORD_DO_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DO_REMOVExdo
|
||||
#define doxBOOST_CONTRACT_EXT_PP_KEYWORD_DO_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DO_CAT_TO_COMMAdo ,
|
||||
#define doBOOST_CONTRACT_EXT_PP_KEYWORD_DO_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DO_CAT_TO_EMPTYdo
|
||||
#define doBOOST_CONTRACT_EXT_PP_KEYWORD_DO_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DO_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_DO_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_DO_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DO_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_DO_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DO_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_DO_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_DO_FRONT`).
|
||||
// Precondition: tokens must start with `do` (this can be
|
||||
// checked with `..._IS_DO_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DO_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_DO_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_DO_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_DO_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DO_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_DO_REMOVE)
|
||||
// Precondition: tokens must end with `do` (this can be
|
||||
// checked with `..._IS_DO_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DO_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_DO_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_ISxdouble (1)
|
||||
#define doublexBOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_REMOVExdouble
|
||||
#define doublexBOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_CAT_TO_COMMAdouble ,
|
||||
#define doubleBOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_CAT_TO_EMPTYdouble
|
||||
#define doubleBOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DOUBLE_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DOUBLE_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DOUBLE_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_DOUBLE_FRONT`).
|
||||
// Precondition: tokens must start with `double` (this can be
|
||||
// checked with `..._IS_DOUBLE_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_DOUBLE_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_REMOVE)
|
||||
// Precondition: tokens must end with `double` (this can be
|
||||
// checked with `..._IS_DOUBLE_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_ISxdynamic_cast (1)
|
||||
#define dynamic_castxBOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_REMOVExdynamic_cast
|
||||
#define dynamic_castxBOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_CAT_TO_COMMAdynamic_cast ,
|
||||
#define dynamic_castBOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_CAT_TO_EMPTYdynamic_cast
|
||||
#define dynamic_castBOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DYNAMIC_CAST_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DYNAMIC_CAST_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DYNAMIC_CAST_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_DYNAMIC_CAST_FRONT`).
|
||||
// Precondition: tokens must start with `dynamic_cast` (this can be
|
||||
// checked with `..._IS_DYNAMIC_CAST_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_DYNAMIC_CAST_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_REMOVE)
|
||||
// Precondition: tokens must end with `dynamic_cast` (this can be
|
||||
// checked with `..._IS_DYNAMIC_CAST_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_ISxelse (1)
|
||||
#define elsexBOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVExelse
|
||||
#define elsexBOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_CAT_TO_COMMAelse ,
|
||||
#define elseBOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_CAT_TO_EMPTYelse
|
||||
#define elseBOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_ELSE_FRONT`).
|
||||
// Precondition: tokens must start with `else` (this can be
|
||||
// checked with `..._IS_ELSE_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_ELSE_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE)
|
||||
// Precondition: tokens must end with `else` (this can be
|
||||
// checked with `..._IS_ELSE_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_ISxenum (1)
|
||||
#define enumxBOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_REMOVExenum
|
||||
#define enumxBOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_CAT_TO_COMMAenum ,
|
||||
#define enumBOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_CAT_TO_EMPTYenum
|
||||
#define enumBOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ENUM_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ENUM_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ENUM_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_ENUM_FRONT`).
|
||||
// Precondition: tokens must start with `enum` (this can be
|
||||
// checked with `..._IS_ENUM_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_ENUM_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_REMOVE)
|
||||
// Precondition: tokens must end with `enum` (this can be
|
||||
// checked with `..._IS_ENUM_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_ISxexplicit (1)
|
||||
#define explicitxBOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_REMOVExexplicit
|
||||
#define explicitxBOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_CAT_TO_COMMAexplicit ,
|
||||
#define explicitBOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_CAT_TO_EMPTYexplicit
|
||||
#define explicitBOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXPLICIT_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXPLICIT_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXPLICIT_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_EXPLICIT_FRONT`).
|
||||
// Precondition: tokens must start with `explicit` (this can be
|
||||
// checked with `..._IS_EXPLICIT_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_EXPLICIT_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_REMOVE)
|
||||
// Precondition: tokens must end with `explicit` (this can be
|
||||
// checked with `..._IS_EXPLICIT_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_ISxexport (1)
|
||||
#define exportxBOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_REMOVExexport
|
||||
#define exportxBOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_CAT_TO_COMMAexport ,
|
||||
#define exportBOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_CAT_TO_EMPTYexport
|
||||
#define exportBOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXPORT_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXPORT_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXPORT_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_EXPORT_FRONT`).
|
||||
// Precondition: tokens must start with `export` (this can be
|
||||
// checked with `..._IS_EXPORT_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_EXPORT_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_REMOVE)
|
||||
// Precondition: tokens must end with `export` (this can be
|
||||
// checked with `..._IS_EXPORT_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_ISxextern (1)
|
||||
#define externxBOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_REMOVExextern
|
||||
#define externxBOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_CAT_TO_COMMAextern ,
|
||||
#define externBOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_CAT_TO_EMPTYextern
|
||||
#define externBOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXTERN_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXTERN_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXTERN_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_EXTERN_FRONT`).
|
||||
// Precondition: tokens must start with `extern` (this can be
|
||||
// checked with `..._IS_EXTERN_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_EXTERN_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_REMOVE)
|
||||
// Precondition: tokens must end with `extern` (this can be
|
||||
// checked with `..._IS_EXTERN_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_ISxfalse (1)
|
||||
#define falsexBOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_REMOVExfalse
|
||||
#define falsexBOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_CAT_TO_COMMAfalse ,
|
||||
#define falseBOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_CAT_TO_EMPTYfalse
|
||||
#define falseBOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FALSE_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FALSE_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FALSE_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_FALSE_FRONT`).
|
||||
// Precondition: tokens must start with `false` (this can be
|
||||
// checked with `..._IS_FALSE_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_FALSE_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_REMOVE)
|
||||
// Precondition: tokens must end with `false` (this can be
|
||||
// checked with `..._IS_FALSE_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_ISxfinal (1)
|
||||
#define finalxBOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_REMOVExfinal
|
||||
#define finalxBOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_CAT_TO_COMMAfinal ,
|
||||
#define finalBOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_CAT_TO_EMPTYfinal
|
||||
#define finalBOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FINAL_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FINAL_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FINAL_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_FINAL_FRONT`).
|
||||
// Precondition: tokens must start with `final` (this can be
|
||||
// checked with `..._IS_FINAL_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_FINAL_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_REMOVE)
|
||||
// Precondition: tokens must end with `final` (this can be
|
||||
// checked with `..._IS_FINAL_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_ISxfloat (1)
|
||||
#define floatxBOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_REMOVExfloat
|
||||
#define floatxBOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_CAT_TO_COMMAfloat ,
|
||||
#define floatBOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_CAT_TO_EMPTYfloat
|
||||
#define floatBOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FLOAT_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FLOAT_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FLOAT_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_FLOAT_FRONT`).
|
||||
// Precondition: tokens must start with `float` (this can be
|
||||
// checked with `..._IS_FLOAT_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_FLOAT_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_REMOVE)
|
||||
// Precondition: tokens must end with `float` (this can be
|
||||
// checked with `..._IS_FLOAT_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_ISxfor (1)
|
||||
#define forxBOOST_CONTRACT_EXT_PP_KEYWORD_FOR_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_REMOVExfor
|
||||
#define forxBOOST_CONTRACT_EXT_PP_KEYWORD_FOR_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_CAT_TO_COMMAfor ,
|
||||
#define forBOOST_CONTRACT_EXT_PP_KEYWORD_FOR_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_CAT_TO_EMPTYfor
|
||||
#define forBOOST_CONTRACT_EXT_PP_KEYWORD_FOR_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FOR_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FOR_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_FOR_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FOR_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_FOR_FRONT`).
|
||||
// Precondition: tokens must start with `for` (this can be
|
||||
// checked with `..._IS_FOR_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_FOR_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_FOR_REMOVE)
|
||||
// Precondition: tokens must end with `for` (this can be
|
||||
// checked with `..._IS_FOR_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_ISxfriend (1)
|
||||
#define friendxBOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_REMOVExfriend
|
||||
#define friendxBOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_CAT_TO_COMMAfriend ,
|
||||
#define friendBOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_CAT_TO_EMPTYfriend
|
||||
#define friendBOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FRIEND_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FRIEND_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FRIEND_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_FRIEND_FRONT`).
|
||||
// Precondition: tokens must start with `friend` (this can be
|
||||
// checked with `..._IS_FRIEND_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_FRIEND_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_REMOVE)
|
||||
// Precondition: tokens must end with `friend` (this can be
|
||||
// checked with `..._IS_FRIEND_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -12,13 +12,102 @@ entries = [
|
||||
{
|
||||
'directory': '.',
|
||||
'keywords': [
|
||||
'alignas', 'alignof', 'and', 'and_eq', 'asm', 'auto', 'bitand', 'bitor', 'bool', 'break', 'case', 'catch', 'char', 'char16_t', 'char32_t', 'class', 'compl', 'const', 'constexpr', 'const_cast', 'continue', 'decltype', 'default', 'delete', 'do', 'double', 'dynamic_cast', 'else', 'enum', 'explicit', 'export', 'extern', 'false', 'final', 'float', 'for', 'friend', 'goto', 'if', 'inline', 'int', 'long', 'mutable', 'namespace', 'new', 'noexcept', 'not', 'not_eq', 'nullptr', 'operator', 'or', 'or_eq', 'override', 'private', 'protected', 'public', 'register', 'reinterpret_cast', 'return', 'short', 'signed', 'sizeof', 'static', 'static_assert', 'static_cast', 'struct', 'switch', 'template', 'this', 'thread_local', 'throw', 'true', 'try', 'typedef', 'typeid', 'typename', 'union', 'unsigned', 'using', 'virtual', 'void', 'volatile', 'wchar_t', 'while', 'xor', 'xor_eq'
|
||||
'alignas',
|
||||
'alignof',
|
||||
'and',
|
||||
'and_eq',
|
||||
'asm',
|
||||
'auto',
|
||||
'bitand',
|
||||
'bitor',
|
||||
'bool',
|
||||
'break',
|
||||
'case',
|
||||
'catch',
|
||||
'char',
|
||||
'char16_t',
|
||||
'char32_t',
|
||||
'class',
|
||||
'compl',
|
||||
'const',
|
||||
'constexpr',
|
||||
'const_cast',
|
||||
'continue',
|
||||
'decltype',
|
||||
'default',
|
||||
'delete',
|
||||
'do',
|
||||
'double',
|
||||
'dynamic_cast',
|
||||
'else',
|
||||
'enum',
|
||||
'explicit',
|
||||
'export',
|
||||
'extern',
|
||||
'false',
|
||||
'final',
|
||||
'float',
|
||||
'for',
|
||||
'friend',
|
||||
'goto',
|
||||
'if',
|
||||
'inline',
|
||||
'int',
|
||||
'long',
|
||||
'mutable',
|
||||
'namespace',
|
||||
'new',
|
||||
'noexcept',
|
||||
'not',
|
||||
'not_eq',
|
||||
'nullptr',
|
||||
'operator',
|
||||
'or',
|
||||
'or_eq',
|
||||
'override',
|
||||
'private',
|
||||
'protected',
|
||||
'public',
|
||||
'register',
|
||||
'reinterpret_cast',
|
||||
'return',
|
||||
'short',
|
||||
'signed',
|
||||
'sizeof',
|
||||
'static',
|
||||
'static_assert',
|
||||
'static_cast',
|
||||
'struct',
|
||||
'switch',
|
||||
'template',
|
||||
'this',
|
||||
'thread_local',
|
||||
'throw',
|
||||
'true',
|
||||
'try',
|
||||
'typedef',
|
||||
'typeid',
|
||||
'typename',
|
||||
'union',
|
||||
'unsigned',
|
||||
'using',
|
||||
'virtual',
|
||||
'void',
|
||||
'volatile',
|
||||
'wchar_t',
|
||||
'while',
|
||||
'xor',
|
||||
'xor_eq'
|
||||
]
|
||||
},
|
||||
{
|
||||
'directory': 'contract',
|
||||
'keywords': [
|
||||
'invariant', 'precondition', 'postcondition', 'extends', 'verbatim'
|
||||
'invariant',
|
||||
'precondition',
|
||||
'postcondition',
|
||||
'extends',
|
||||
'verbatim'
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -44,34 +133,38 @@ for entry in entries:
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_ISx{2} (1)
|
||||
#define {2}xBOOST_CONTRACT_EXT_PP_KEYWORD_{1}_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_REMOVEx{2}
|
||||
#define {2}xBOOST_CONTRACT_EXT_PP_KEYWORD_{1}_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_CAT_TO_COMMA{2} ,
|
||||
#define {2}BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_CAT_TO_EMPTY{2}
|
||||
#define {2}BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_{1}_FRONT(tokens) \\
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \\
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \\
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_{1}_BACK(token) \\
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \\
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_{1}_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_{1}_BACK(tokens) \\
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \\
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_{1}_FRONT`).
|
||||
// Precondition: tokens must start with `{2}` (this can be
|
||||
// checked with `..._IS_{1}_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_REMOVE_FRONT(tokens) \\
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_{1}_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_REMOVE_BACK(token) \\
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_{1}_REMOVE)
|
||||
// Precondition: tokens must end with `{2}` (this can be
|
||||
// checked with `..._IS_{1}_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_REMOVE_BACK(tokens) \\
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_ISxgoto (1)
|
||||
#define gotoxBOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_REMOVExgoto
|
||||
#define gotoxBOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_CAT_TO_COMMAgoto ,
|
||||
#define gotoBOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_CAT_TO_EMPTYgoto
|
||||
#define gotoBOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_GOTO_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_GOTO_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_GOTO_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_GOTO_FRONT`).
|
||||
// Precondition: tokens must start with `goto` (this can be
|
||||
// checked with `..._IS_GOTO_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_GOTO_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_REMOVE)
|
||||
// Precondition: tokens must end with `goto` (this can be
|
||||
// checked with `..._IS_GOTO_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IF_ISxif (1)
|
||||
#define ifxBOOST_CONTRACT_EXT_PP_KEYWORD_IF_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVExif
|
||||
#define ifxBOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IF_CAT_TO_COMMAif ,
|
||||
#define ifBOOST_CONTRACT_EXT_PP_KEYWORD_IF_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IF_CAT_TO_EMPTYif
|
||||
#define ifBOOST_CONTRACT_EXT_PP_KEYWORD_IF_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_IF_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_IF_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_IF_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_IF_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_IF_FRONT`).
|
||||
// Precondition: tokens must start with `if` (this can be
|
||||
// checked with `..._IS_IF_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_IF_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_IF_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE)
|
||||
// Precondition: tokens must end with `if` (this can be
|
||||
// checked with `..._IS_IF_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_IF_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_ISxinline (1)
|
||||
#define inlinexBOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_REMOVExinline
|
||||
#define inlinexBOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_CAT_TO_COMMAinline ,
|
||||
#define inlineBOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_CAT_TO_EMPTYinline
|
||||
#define inlineBOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_INLINE_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_INLINE_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_INLINE_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_INLINE_FRONT`).
|
||||
// Precondition: tokens must start with `inline` (this can be
|
||||
// checked with `..._IS_INLINE_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_INLINE_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_REMOVE)
|
||||
// Precondition: tokens must end with `inline` (this can be
|
||||
// checked with `..._IS_INLINE_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_INT_ISxint (1)
|
||||
#define intxBOOST_CONTRACT_EXT_PP_KEYWORD_INT_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_INT_REMOVExint
|
||||
#define intxBOOST_CONTRACT_EXT_PP_KEYWORD_INT_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_INT_CAT_TO_COMMAint ,
|
||||
#define intBOOST_CONTRACT_EXT_PP_KEYWORD_INT_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_INT_CAT_TO_EMPTYint
|
||||
#define intBOOST_CONTRACT_EXT_PP_KEYWORD_INT_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_INT_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_INT_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_INT_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_INT_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_INT_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_INT_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_INT_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_INT_FRONT`).
|
||||
// Precondition: tokens must start with `int` (this can be
|
||||
// checked with `..._IS_INT_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_INT_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_INT_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_INT_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_INT_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_INT_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_INT_REMOVE)
|
||||
// Precondition: tokens must end with `int` (this can be
|
||||
// checked with `..._IS_INT_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_INT_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_INT_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_ISxlong (1)
|
||||
#define longxBOOST_CONTRACT_EXT_PP_KEYWORD_LONG_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_REMOVExlong
|
||||
#define longxBOOST_CONTRACT_EXT_PP_KEYWORD_LONG_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_CAT_TO_COMMAlong ,
|
||||
#define longBOOST_CONTRACT_EXT_PP_KEYWORD_LONG_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_CAT_TO_EMPTYlong
|
||||
#define longBOOST_CONTRACT_EXT_PP_KEYWORD_LONG_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_LONG_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_LONG_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_LONG_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_LONG_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_LONG_FRONT`).
|
||||
// Precondition: tokens must start with `long` (this can be
|
||||
// checked with `..._IS_LONG_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_LONG_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_LONG_REMOVE)
|
||||
// Precondition: tokens must end with `long` (this can be
|
||||
// checked with `..._IS_LONG_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_ISxmutable (1)
|
||||
#define mutablexBOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_REMOVExmutable
|
||||
#define mutablexBOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_CAT_TO_COMMAmutable ,
|
||||
#define mutableBOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_CAT_TO_EMPTYmutable
|
||||
#define mutableBOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_MUTABLE_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_MUTABLE_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_MUTABLE_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_MUTABLE_FRONT`).
|
||||
// Precondition: tokens must start with `mutable` (this can be
|
||||
// checked with `..._IS_MUTABLE_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_MUTABLE_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_REMOVE)
|
||||
// Precondition: tokens must end with `mutable` (this can be
|
||||
// checked with `..._IS_MUTABLE_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_ISxnamespace (1)
|
||||
#define namespacexBOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_REMOVExnamespace
|
||||
#define namespacexBOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_CAT_TO_COMMAnamespace ,
|
||||
#define namespaceBOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_CAT_TO_EMPTYnamespace
|
||||
#define namespaceBOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_NAMESPACE_FRONT`).
|
||||
// Precondition: tokens must start with `namespace` (this can be
|
||||
// checked with `..._IS_NAMESPACE_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_NAMESPACE_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_REMOVE)
|
||||
// Precondition: tokens must end with `namespace` (this can be
|
||||
// checked with `..._IS_NAMESPACE_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_ISxnew (1)
|
||||
#define newxBOOST_CONTRACT_EXT_PP_KEYWORD_NEW_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_REMOVExnew
|
||||
#define newxBOOST_CONTRACT_EXT_PP_KEYWORD_NEW_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_CAT_TO_COMMAnew ,
|
||||
#define newBOOST_CONTRACT_EXT_PP_KEYWORD_NEW_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_CAT_TO_EMPTYnew
|
||||
#define newBOOST_CONTRACT_EXT_PP_KEYWORD_NEW_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NEW_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NEW_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_NEW_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NEW_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_NEW_FRONT`).
|
||||
// Precondition: tokens must start with `new` (this can be
|
||||
// checked with `..._IS_NEW_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_NEW_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_NEW_REMOVE)
|
||||
// Precondition: tokens must end with `new` (this can be
|
||||
// checked with `..._IS_NEW_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_ISxnoexcept (1)
|
||||
#define noexceptxBOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_REMOVExnoexcept
|
||||
#define noexceptxBOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_CAT_TO_COMMAnoexcept ,
|
||||
#define noexceptBOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_CAT_TO_EMPTYnoexcept
|
||||
#define noexceptBOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NOEXCEPT_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NOEXCEPT_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NOEXCEPT_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_NOEXCEPT_FRONT`).
|
||||
// Precondition: tokens must start with `noexcept` (this can be
|
||||
// checked with `..._IS_NOEXCEPT_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_NOEXCEPT_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_REMOVE)
|
||||
// Precondition: tokens must end with `noexcept` (this can be
|
||||
// checked with `..._IS_NOEXCEPT_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_ISxnot (1)
|
||||
#define notxBOOST_CONTRACT_EXT_PP_KEYWORD_NOT_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_REMOVExnot
|
||||
#define notxBOOST_CONTRACT_EXT_PP_KEYWORD_NOT_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_CAT_TO_COMMAnot ,
|
||||
#define notBOOST_CONTRACT_EXT_PP_KEYWORD_NOT_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_CAT_TO_EMPTYnot
|
||||
#define notBOOST_CONTRACT_EXT_PP_KEYWORD_NOT_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NOT_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NOT_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_NOT_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NOT_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_NOT_FRONT`).
|
||||
// Precondition: tokens must start with `not` (this can be
|
||||
// checked with `..._IS_NOT_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_NOT_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_NOT_REMOVE)
|
||||
// Precondition: tokens must end with `not` (this can be
|
||||
// checked with `..._IS_NOT_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_ISxnot_eq (1)
|
||||
#define not_eqxBOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_REMOVExnot_eq
|
||||
#define not_eqxBOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_CAT_TO_COMMAnot_eq ,
|
||||
#define not_eqBOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_CAT_TO_EMPTYnot_eq
|
||||
#define not_eqBOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NOT_EQ_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NOT_EQ_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NOT_EQ_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_NOT_EQ_FRONT`).
|
||||
// Precondition: tokens must start with `not_eq` (this can be
|
||||
// checked with `..._IS_NOT_EQ_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_NOT_EQ_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_REMOVE)
|
||||
// Precondition: tokens must end with `not_eq` (this can be
|
||||
// checked with `..._IS_NOT_EQ_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_ISxnullptr (1)
|
||||
#define nullptrxBOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_REMOVExnullptr
|
||||
#define nullptrxBOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_CAT_TO_COMMAnullptr ,
|
||||
#define nullptrBOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_CAT_TO_EMPTYnullptr
|
||||
#define nullptrBOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NULLPTR_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NULLPTR_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NULLPTR_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_NULLPTR_FRONT`).
|
||||
// Precondition: tokens must start with `nullptr` (this can be
|
||||
// checked with `..._IS_NULLPTR_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_NULLPTR_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_REMOVE)
|
||||
// Precondition: tokens must end with `nullptr` (this can be
|
||||
// checked with `..._IS_NULLPTR_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_ISxoperator (1)
|
||||
#define operatorxBOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_REMOVExoperator
|
||||
#define operatorxBOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_CAT_TO_COMMAoperator ,
|
||||
#define operatorBOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_CAT_TO_EMPTYoperator
|
||||
#define operatorBOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OPERATOR_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OPERATOR_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OPERATOR_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_OPERATOR_FRONT`).
|
||||
// Precondition: tokens must start with `operator` (this can be
|
||||
// checked with `..._IS_OPERATOR_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_OPERATOR_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_REMOVE)
|
||||
// Precondition: tokens must end with `operator` (this can be
|
||||
// checked with `..._IS_OPERATOR_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_ISxor (1)
|
||||
#define orxBOOST_CONTRACT_EXT_PP_KEYWORD_OR_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_REMOVExor
|
||||
#define orxBOOST_CONTRACT_EXT_PP_KEYWORD_OR_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_CAT_TO_COMMAor ,
|
||||
#define orBOOST_CONTRACT_EXT_PP_KEYWORD_OR_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_CAT_TO_EMPTYor
|
||||
#define orBOOST_CONTRACT_EXT_PP_KEYWORD_OR_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OR_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_OR_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_OR_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OR_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_OR_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OR_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_OR_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_OR_FRONT`).
|
||||
// Precondition: tokens must start with `or` (this can be
|
||||
// checked with `..._IS_OR_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_OR_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_OR_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_OR_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_OR_REMOVE)
|
||||
// Precondition: tokens must end with `or` (this can be
|
||||
// checked with `..._IS_OR_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_OR_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_ISxor_eq (1)
|
||||
#define or_eqxBOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_REMOVExor_eq
|
||||
#define or_eqxBOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_CAT_TO_COMMAor_eq ,
|
||||
#define or_eqBOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_CAT_TO_EMPTYor_eq
|
||||
#define or_eqBOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OR_EQ_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OR_EQ_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OR_EQ_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_OR_EQ_FRONT`).
|
||||
// Precondition: tokens must start with `or_eq` (this can be
|
||||
// checked with `..._IS_OR_EQ_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_OR_EQ_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_REMOVE)
|
||||
// Precondition: tokens must end with `or_eq` (this can be
|
||||
// checked with `..._IS_OR_EQ_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_ISxoverride (1)
|
||||
#define overridexBOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_REMOVExoverride
|
||||
#define overridexBOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_CAT_TO_COMMAoverride ,
|
||||
#define overrideBOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_CAT_TO_EMPTYoverride
|
||||
#define overrideBOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OVERRIDE_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OVERRIDE_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OVERRIDE_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_OVERRIDE_FRONT`).
|
||||
// Precondition: tokens must start with `override` (this can be
|
||||
// checked with `..._IS_OVERRIDE_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_OVERRIDE_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_REMOVE)
|
||||
// Precondition: tokens must end with `override` (this can be
|
||||
// checked with `..._IS_OVERRIDE_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_PRIVATE_ISxprivate (1)
|
||||
#define privatexBOOST_CONTRACT_EXT_PP_KEYWORD_PRIVATE_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_PRIVATE_REMOVExprivate
|
||||
#define privatexBOOST_CONTRACT_EXT_PP_KEYWORD_PRIVATE_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_PRIVATE_CAT_TO_COMMAprivate ,
|
||||
#define privateBOOST_CONTRACT_EXT_PP_KEYWORD_PRIVATE_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_PRIVATE_CAT_TO_EMPTYprivate
|
||||
#define privateBOOST_CONTRACT_EXT_PP_KEYWORD_PRIVATE_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PRIVATE_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_PRIVATE_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_PRIVATE_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PRIVATE_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_PRIVATE_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PRIVATE_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_PRIVATE_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_PRIVATE_FRONT`).
|
||||
// Precondition: tokens must start with `private` (this can be
|
||||
// checked with `..._IS_PRIVATE_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_PRIVATE_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_PRIVATE_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_PRIVATE_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_PRIVATE_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_PRIVATE_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_PRIVATE_REMOVE)
|
||||
// Precondition: tokens must end with `private` (this can be
|
||||
// checked with `..._IS_PRIVATE_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_PRIVATE_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_PRIVATE_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_PROTECTED_ISxprotected (1)
|
||||
#define protectedxBOOST_CONTRACT_EXT_PP_KEYWORD_PROTECTED_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_PROTECTED_REMOVExprotected
|
||||
#define protectedxBOOST_CONTRACT_EXT_PP_KEYWORD_PROTECTED_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_PROTECTED_CAT_TO_COMMAprotected ,
|
||||
#define protectedBOOST_CONTRACT_EXT_PP_KEYWORD_PROTECTED_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_PROTECTED_CAT_TO_EMPTYprotected
|
||||
#define protectedBOOST_CONTRACT_EXT_PP_KEYWORD_PROTECTED_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PROTECTED_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_PROTECTED_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_PROTECTED_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PROTECTED_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_PROTECTED_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PROTECTED_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_PROTECTED_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_PROTECTED_FRONT`).
|
||||
// Precondition: tokens must start with `protected` (this can be
|
||||
// checked with `..._IS_PROTECTED_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_PROTECTED_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_PROTECTED_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_PROTECTED_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_PROTECTED_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_PROTECTED_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_PROTECTED_REMOVE)
|
||||
// Precondition: tokens must end with `protected` (this can be
|
||||
// checked with `..._IS_PROTECTED_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_PROTECTED_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_PROTECTED_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_PUBLIC_ISxpublic (1)
|
||||
#define publicxBOOST_CONTRACT_EXT_PP_KEYWORD_PUBLIC_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_PUBLIC_REMOVExpublic
|
||||
#define publicxBOOST_CONTRACT_EXT_PP_KEYWORD_PUBLIC_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_PUBLIC_CAT_TO_COMMApublic ,
|
||||
#define publicBOOST_CONTRACT_EXT_PP_KEYWORD_PUBLIC_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_PUBLIC_CAT_TO_EMPTYpublic
|
||||
#define publicBOOST_CONTRACT_EXT_PP_KEYWORD_PUBLIC_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PUBLIC_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_PUBLIC_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_PUBLIC_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PUBLIC_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_PUBLIC_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PUBLIC_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_PUBLIC_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_PUBLIC_FRONT`).
|
||||
// Precondition: tokens must start with `public` (this can be
|
||||
// checked with `..._IS_PUBLIC_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_PUBLIC_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_PUBLIC_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_PUBLIC_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_PUBLIC_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_PUBLIC_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_PUBLIC_REMOVE)
|
||||
// Precondition: tokens must end with `public` (this can be
|
||||
// checked with `..._IS_PUBLIC_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_PUBLIC_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_PUBLIC_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_ISxregister (1)
|
||||
#define registerxBOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_REMOVExregister
|
||||
#define registerxBOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_CAT_TO_COMMAregister ,
|
||||
#define registerBOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_CAT_TO_EMPTYregister
|
||||
#define registerBOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REGISTER_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REGISTER_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REGISTER_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_REGISTER_FRONT`).
|
||||
// Precondition: tokens must start with `register` (this can be
|
||||
// checked with `..._IS_REGISTER_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_REGISTER_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_REMOVE)
|
||||
// Precondition: tokens must end with `register` (this can be
|
||||
// checked with `..._IS_REGISTER_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_ISxreinterpret_cast (1)
|
||||
#define reinterpret_castxBOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_REMOVExreinterpret_cast
|
||||
#define reinterpret_castxBOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_CAT_TO_COMMAreinterpret_cast ,
|
||||
#define reinterpret_castBOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_CAT_TO_EMPTYreinterpret_cast
|
||||
#define reinterpret_castBOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REINTERPRET_CAST_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REINTERPRET_CAST_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REINTERPRET_CAST_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_REINTERPRET_CAST_FRONT`).
|
||||
// Precondition: tokens must start with `reinterpret_cast` (this can be
|
||||
// checked with `..._IS_REINTERPRET_CAST_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_REINTERPRET_CAST_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_REMOVE)
|
||||
// Precondition: tokens must end with `reinterpret_cast` (this can be
|
||||
// checked with `..._IS_REINTERPRET_CAST_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_ISxreturn (1)
|
||||
#define returnxBOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_REMOVExreturn
|
||||
#define returnxBOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_CAT_TO_COMMAreturn ,
|
||||
#define returnBOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_CAT_TO_EMPTYreturn
|
||||
#define returnBOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_RETURN_FRONT`).
|
||||
// Precondition: tokens must start with `return` (this can be
|
||||
// checked with `..._IS_RETURN_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_RETURN_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_REMOVE)
|
||||
// Precondition: tokens must end with `return` (this can be
|
||||
// checked with `..._IS_RETURN_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_ISxshort (1)
|
||||
#define shortxBOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_REMOVExshort
|
||||
#define shortxBOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_CAT_TO_COMMAshort ,
|
||||
#define shortBOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_CAT_TO_EMPTYshort
|
||||
#define shortBOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SHORT_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SHORT_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SHORT_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_SHORT_FRONT`).
|
||||
// Precondition: tokens must start with `short` (this can be
|
||||
// checked with `..._IS_SHORT_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_SHORT_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_REMOVE)
|
||||
// Precondition: tokens must end with `short` (this can be
|
||||
// checked with `..._IS_SHORT_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_ISxsigned (1)
|
||||
#define signedxBOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_REMOVExsigned
|
||||
#define signedxBOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_CAT_TO_COMMAsigned ,
|
||||
#define signedBOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_CAT_TO_EMPTYsigned
|
||||
#define signedBOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SIGNED_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SIGNED_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SIGNED_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_SIGNED_FRONT`).
|
||||
// Precondition: tokens must start with `signed` (this can be
|
||||
// checked with `..._IS_SIGNED_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_SIGNED_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_REMOVE)
|
||||
// Precondition: tokens must end with `signed` (this can be
|
||||
// checked with `..._IS_SIGNED_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_ISxsizeof (1)
|
||||
#define sizeofxBOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_REMOVExsizeof
|
||||
#define sizeofxBOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_CAT_TO_COMMAsizeof ,
|
||||
#define sizeofBOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_CAT_TO_EMPTYsizeof
|
||||
#define sizeofBOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SIZEOF_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SIZEOF_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SIZEOF_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_SIZEOF_FRONT`).
|
||||
// Precondition: tokens must start with `sizeof` (this can be
|
||||
// checked with `..._IS_SIZEOF_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_SIZEOF_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_REMOVE)
|
||||
// Precondition: tokens must end with `sizeof` (this can be
|
||||
// checked with `..._IS_SIZEOF_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ISxstatic (1)
|
||||
#define staticxBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVExstatic
|
||||
#define staticxBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAT_TO_COMMAstatic ,
|
||||
#define staticBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAT_TO_EMPTYstatic
|
||||
#define staticBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STATIC_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STATIC_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STATIC_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_STATIC_FRONT`).
|
||||
// Precondition: tokens must start with `static` (this can be
|
||||
// checked with `..._IS_STATIC_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_STATIC_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE)
|
||||
// Precondition: tokens must end with `static` (this can be
|
||||
// checked with `..._IS_STATIC_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_ISxstatic_assert (1)
|
||||
#define static_assertxBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_REMOVExstatic_assert
|
||||
#define static_assertxBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_CAT_TO_COMMAstatic_assert ,
|
||||
#define static_assertBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_CAT_TO_EMPTYstatic_assert
|
||||
#define static_assertBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STATIC_ASSERT_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STATIC_ASSERT_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STATIC_ASSERT_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_STATIC_ASSERT_FRONT`).
|
||||
// Precondition: tokens must start with `static_assert` (this can be
|
||||
// checked with `..._IS_STATIC_ASSERT_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_STATIC_ASSERT_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_REMOVE)
|
||||
// Precondition: tokens must end with `static_assert` (this can be
|
||||
// checked with `..._IS_STATIC_ASSERT_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_ISxstatic_cast (1)
|
||||
#define static_castxBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_REMOVExstatic_cast
|
||||
#define static_castxBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_CAT_TO_COMMAstatic_cast ,
|
||||
#define static_castBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_CAT_TO_EMPTYstatic_cast
|
||||
#define static_castBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STATIC_CAST_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STATIC_CAST_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STATIC_CAST_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_STATIC_CAST_FRONT`).
|
||||
// Precondition: tokens must start with `static_cast` (this can be
|
||||
// checked with `..._IS_STATIC_CAST_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_STATIC_CAST_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_REMOVE)
|
||||
// Precondition: tokens must end with `static_cast` (this can be
|
||||
// checked with `..._IS_STATIC_CAST_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_ISxstruct (1)
|
||||
#define structxBOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_REMOVExstruct
|
||||
#define structxBOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_CAT_TO_COMMAstruct ,
|
||||
#define structBOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_CAT_TO_EMPTYstruct
|
||||
#define structBOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STRUCT_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STRUCT_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STRUCT_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_STRUCT_FRONT`).
|
||||
// Precondition: tokens must start with `struct` (this can be
|
||||
// checked with `..._IS_STRUCT_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_STRUCT_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_REMOVE)
|
||||
// Precondition: tokens must end with `struct` (this can be
|
||||
// checked with `..._IS_STRUCT_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_ISxswitch (1)
|
||||
#define switchxBOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_REMOVExswitch
|
||||
#define switchxBOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_CAT_TO_COMMAswitch ,
|
||||
#define switchBOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_CAT_TO_EMPTYswitch
|
||||
#define switchBOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SWITCH_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SWITCH_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SWITCH_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_SWITCH_FRONT`).
|
||||
// Precondition: tokens must start with `switch` (this can be
|
||||
// checked with `..._IS_SWITCH_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_SWITCH_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_REMOVE)
|
||||
// Precondition: tokens must end with `switch` (this can be
|
||||
// checked with `..._IS_SWITCH_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_ISxtemplate (1)
|
||||
#define templatexBOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVExtemplate
|
||||
#define templatexBOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_CAT_TO_COMMAtemplate ,
|
||||
#define templateBOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_CAT_TO_EMPTYtemplate
|
||||
#define templateBOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TEMPLATE_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TEMPLATE_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TEMPLATE_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_TEMPLATE_FRONT`).
|
||||
// Precondition: tokens must start with `template` (this can be
|
||||
// checked with `..._IS_TEMPLATE_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_TEMPLATE_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVE)
|
||||
// Precondition: tokens must end with `template` (this can be
|
||||
// checked with `..._IS_TEMPLATE_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_ISxthis (1)
|
||||
#define thisxBOOST_CONTRACT_EXT_PP_KEYWORD_THIS_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_REMOVExthis
|
||||
#define thisxBOOST_CONTRACT_EXT_PP_KEYWORD_THIS_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_CAT_TO_COMMAthis ,
|
||||
#define thisBOOST_CONTRACT_EXT_PP_KEYWORD_THIS_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_CAT_TO_EMPTYthis
|
||||
#define thisBOOST_CONTRACT_EXT_PP_KEYWORD_THIS_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_THIS_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_THIS_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_THIS_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_THIS_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_THIS_FRONT`).
|
||||
// Precondition: tokens must start with `this` (this can be
|
||||
// checked with `..._IS_THIS_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_THIS_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_THIS_REMOVE)
|
||||
// Precondition: tokens must end with `this` (this can be
|
||||
// checked with `..._IS_THIS_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_ISxthread_local (1)
|
||||
#define thread_localxBOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_REMOVExthread_local
|
||||
#define thread_localxBOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_CAT_TO_COMMAthread_local ,
|
||||
#define thread_localBOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_CAT_TO_EMPTYthread_local
|
||||
#define thread_localBOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_THREAD_LOCAL_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_THREAD_LOCAL_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_THREAD_LOCAL_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_THREAD_LOCAL_FRONT`).
|
||||
// Precondition: tokens must start with `thread_local` (this can be
|
||||
// checked with `..._IS_THREAD_LOCAL_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_THREAD_LOCAL_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_REMOVE)
|
||||
// Precondition: tokens must end with `thread_local` (this can be
|
||||
// checked with `..._IS_THREAD_LOCAL_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_ISxthrow (1)
|
||||
#define throwxBOOST_CONTRACT_EXT_PP_KEYWORD_THROW_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_REMOVExthrow
|
||||
#define throwxBOOST_CONTRACT_EXT_PP_KEYWORD_THROW_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_CAT_TO_COMMAthrow ,
|
||||
#define throwBOOST_CONTRACT_EXT_PP_KEYWORD_THROW_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_CAT_TO_EMPTYthrow
|
||||
#define throwBOOST_CONTRACT_EXT_PP_KEYWORD_THROW_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_THROW_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_THROW_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_THROW_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_THROW_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_THROW_FRONT`).
|
||||
// Precondition: tokens must start with `throw` (this can be
|
||||
// checked with `..._IS_THROW_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_THROW_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_THROW_REMOVE)
|
||||
// Precondition: tokens must end with `throw` (this can be
|
||||
// checked with `..._IS_THROW_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_ISxtrue (1)
|
||||
#define truexBOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_REMOVExtrue
|
||||
#define truexBOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_CAT_TO_COMMAtrue ,
|
||||
#define trueBOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_CAT_TO_EMPTYtrue
|
||||
#define trueBOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TRUE_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TRUE_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TRUE_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_TRUE_FRONT`).
|
||||
// Precondition: tokens must start with `true` (this can be
|
||||
// checked with `..._IS_TRUE_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_TRUE_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_REMOVE)
|
||||
// Precondition: tokens must end with `true` (this can be
|
||||
// checked with `..._IS_TRUE_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_ISxtry (1)
|
||||
#define tryxBOOST_CONTRACT_EXT_PP_KEYWORD_TRY_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_REMOVExtry
|
||||
#define tryxBOOST_CONTRACT_EXT_PP_KEYWORD_TRY_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_CAT_TO_COMMAtry ,
|
||||
#define tryBOOST_CONTRACT_EXT_PP_KEYWORD_TRY_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_CAT_TO_EMPTYtry
|
||||
#define tryBOOST_CONTRACT_EXT_PP_KEYWORD_TRY_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TRY_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TRY_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_TRY_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TRY_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_TRY_FRONT`).
|
||||
// Precondition: tokens must start with `try` (this can be
|
||||
// checked with `..._IS_TRY_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_TRY_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_TRY_REMOVE)
|
||||
// Precondition: tokens must end with `try` (this can be
|
||||
// checked with `..._IS_TRY_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_ISxtypedef (1)
|
||||
#define typedefxBOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_REMOVExtypedef
|
||||
#define typedefxBOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_CAT_TO_COMMAtypedef ,
|
||||
#define typedefBOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_CAT_TO_EMPTYtypedef
|
||||
#define typedefBOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_TYPEDEF_FRONT`).
|
||||
// Precondition: tokens must start with `typedef` (this can be
|
||||
// checked with `..._IS_TYPEDEF_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_TYPEDEF_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_REMOVE)
|
||||
// Precondition: tokens must end with `typedef` (this can be
|
||||
// checked with `..._IS_TYPEDEF_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_ISxtypeid (1)
|
||||
#define typeidxBOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_REMOVExtypeid
|
||||
#define typeidxBOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_CAT_TO_COMMAtypeid ,
|
||||
#define typeidBOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_CAT_TO_EMPTYtypeid
|
||||
#define typeidBOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEID_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEID_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEID_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_TYPEID_FRONT`).
|
||||
// Precondition: tokens must start with `typeid` (this can be
|
||||
// checked with `..._IS_TYPEID_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_TYPEID_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_REMOVE)
|
||||
// Precondition: tokens must end with `typeid` (this can be
|
||||
// checked with `..._IS_TYPEID_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_ISxtypename (1)
|
||||
#define typenamexBOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_REMOVExtypename
|
||||
#define typenamexBOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_CAT_TO_COMMAtypename ,
|
||||
#define typenameBOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_CAT_TO_EMPTYtypename
|
||||
#define typenameBOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPENAME_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPENAME_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPENAME_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_TYPENAME_FRONT`).
|
||||
// Precondition: tokens must start with `typename` (this can be
|
||||
// checked with `..._IS_TYPENAME_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_TYPENAME_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_REMOVE)
|
||||
// Precondition: tokens must end with `typename` (this can be
|
||||
// checked with `..._IS_TYPENAME_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_ISxunion (1)
|
||||
#define unionxBOOST_CONTRACT_EXT_PP_KEYWORD_UNION_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_REMOVExunion
|
||||
#define unionxBOOST_CONTRACT_EXT_PP_KEYWORD_UNION_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_CAT_TO_COMMAunion ,
|
||||
#define unionBOOST_CONTRACT_EXT_PP_KEYWORD_UNION_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_CAT_TO_EMPTYunion
|
||||
#define unionBOOST_CONTRACT_EXT_PP_KEYWORD_UNION_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_UNION_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_UNION_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_UNION_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_UNION_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_UNION_FRONT`).
|
||||
// Precondition: tokens must start with `union` (this can be
|
||||
// checked with `..._IS_UNION_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_UNION_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_UNION_REMOVE)
|
||||
// Precondition: tokens must end with `union` (this can be
|
||||
// checked with `..._IS_UNION_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_ISxunsigned (1)
|
||||
#define unsignedxBOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_REMOVExunsigned
|
||||
#define unsignedxBOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_CAT_TO_COMMAunsigned ,
|
||||
#define unsignedBOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_CAT_TO_EMPTYunsigned
|
||||
#define unsignedBOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_UNSIGNED_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_UNSIGNED_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_UNSIGNED_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_UNSIGNED_FRONT`).
|
||||
// Precondition: tokens must start with `unsigned` (this can be
|
||||
// checked with `..._IS_UNSIGNED_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_UNSIGNED_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_REMOVE)
|
||||
// Precondition: tokens must end with `unsigned` (this can be
|
||||
// checked with `..._IS_UNSIGNED_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_USING_ISxusing (1)
|
||||
#define usingxBOOST_CONTRACT_EXT_PP_KEYWORD_USING_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_USING_REMOVExusing
|
||||
#define usingxBOOST_CONTRACT_EXT_PP_KEYWORD_USING_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_USING_CAT_TO_COMMAusing ,
|
||||
#define usingBOOST_CONTRACT_EXT_PP_KEYWORD_USING_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_USING_CAT_TO_EMPTYusing
|
||||
#define usingBOOST_CONTRACT_EXT_PP_KEYWORD_USING_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_USING_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_USING_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_USING_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_USING_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_USING_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_USING_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_USING_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_USING_FRONT`).
|
||||
// Precondition: tokens must start with `using` (this can be
|
||||
// checked with `..._IS_USING_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_USING_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_USING_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_USING_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_USING_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_USING_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_USING_REMOVE)
|
||||
// Precondition: tokens must end with `using` (this can be
|
||||
// checked with `..._IS_USING_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_USING_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_USING_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -6,33 +6,42 @@
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/tuple/eat.hpp>
|
||||
#include <boost/preprocessor/variadic/size.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_(a, b) \
|
||||
BOOST_CONTRACT_EXT_PP_HAS_PAREN(BOOST_PP_CAT(a, b))
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_1 0
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_2 1
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_CHECK_(a, b) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_, \
|
||||
BOOST_PP_VARIADIC_SIZE(BOOST_PP_CAT(a, b)))
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: A macro `<checking_prefix><keyword-to-check>` must be #defined
|
||||
// to expand to unary (e.g., `(1)`).
|
||||
// Precondition: A macro named `cat_to_comma_prefix ## token-to-check` must be
|
||||
// #defined to expand to `,`.
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
tokens, checking_prefix) \
|
||||
cat_to_comma_prefix, tokens) \
|
||||
BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(tokens), \
|
||||
0 BOOST_PP_TUPLE_EAT(2) \
|
||||
, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_ \
|
||||
)(checking_prefix, tokens)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_CHECK_ \
|
||||
)(cat_to_comma_prefix, tokens)
|
||||
|
||||
// Precondition: A macro `<keyword-to-check><checking_postfix>` must be #defined
|
||||
// to expand to unary (e.g., `(1)`).
|
||||
// WARNING: This check only works if `token` is a single token, it will always
|
||||
// expand to 0 with no errors if token is multiple tokens
|
||||
// (e.g., `const *this`). Also, this check will expand to 0 with no error if
|
||||
// `token` starts with a non-alphanumeric symbol (e.g., `*this`).
|
||||
// Precondition: A macro named `token-to-check ## cat_to_comma_postfix` must be
|
||||
// #defined to expand to `,`.
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
token, checking_postfix) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_(token, checking_postfix)
|
||||
cat_to_comma_postfix, tokens) \
|
||||
BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(tokens), \
|
||||
0 BOOST_PP_TUPLE_EAT(2) \
|
||||
, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_CHECK_ \
|
||||
)(tokens, cat_to_comma_postfix)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_VIRTUAL_ISxvirtual (1)
|
||||
#define virtualxBOOST_CONTRACT_EXT_PP_KEYWORD_VIRTUAL_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_VIRTUAL_REMOVExvirtual
|
||||
#define virtualxBOOST_CONTRACT_EXT_PP_KEYWORD_VIRTUAL_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_VIRTUAL_CAT_TO_COMMAvirtual ,
|
||||
#define virtualBOOST_CONTRACT_EXT_PP_KEYWORD_VIRTUAL_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_VIRTUAL_CAT_TO_EMPTYvirtual
|
||||
#define virtualBOOST_CONTRACT_EXT_PP_KEYWORD_VIRTUAL_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VIRTUAL_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_VIRTUAL_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_VIRTUAL_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VIRTUAL_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_VIRTUAL_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VIRTUAL_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_VIRTUAL_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_VIRTUAL_FRONT`).
|
||||
// Precondition: tokens must start with `virtual` (this can be
|
||||
// checked with `..._IS_VIRTUAL_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_VIRTUAL_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_VIRTUAL_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_VIRTUAL_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_VIRTUAL_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_VIRTUAL_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_VIRTUAL_REMOVE)
|
||||
// Precondition: tokens must end with `virtual` (this can be
|
||||
// checked with `..._IS_VIRTUAL_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_VIRTUAL_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_VIRTUAL_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_ISxvoid (1)
|
||||
#define voidxBOOST_CONTRACT_EXT_PP_KEYWORD_VOID_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_REMOVExvoid
|
||||
#define voidxBOOST_CONTRACT_EXT_PP_KEYWORD_VOID_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_CAT_TO_COMMAvoid ,
|
||||
#define voidBOOST_CONTRACT_EXT_PP_KEYWORD_VOID_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_CAT_TO_EMPTYvoid
|
||||
#define voidBOOST_CONTRACT_EXT_PP_KEYWORD_VOID_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_VOID_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_VOID_FRONT`).
|
||||
// Precondition: tokens must start with `void` (this can be
|
||||
// checked with `..._IS_VOID_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_VOID_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_VOID_REMOVE)
|
||||
// Precondition: tokens must end with `void` (this can be
|
||||
// checked with `..._IS_VOID_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_ISxvolatile (1)
|
||||
#define volatilexBOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_REMOVExvolatile
|
||||
#define volatilexBOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_CAT_TO_COMMAvolatile ,
|
||||
#define volatileBOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_CAT_TO_EMPTYvolatile
|
||||
#define volatileBOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOLATILE_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOLATILE_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOLATILE_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_VOLATILE_FRONT`).
|
||||
// Precondition: tokens must start with `volatile` (this can be
|
||||
// checked with `..._IS_VOLATILE_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_VOLATILE_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_REMOVE)
|
||||
// Precondition: tokens must end with `volatile` (this can be
|
||||
// checked with `..._IS_VOLATILE_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_ISxwchar_t (1)
|
||||
#define wchar_txBOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_REMOVExwchar_t
|
||||
#define wchar_txBOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_CAT_TO_COMMAwchar_t ,
|
||||
#define wchar_tBOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_CAT_TO_EMPTYwchar_t
|
||||
#define wchar_tBOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_WCHAR_T_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_WCHAR_T_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_WCHAR_T_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_WCHAR_T_FRONT`).
|
||||
// Precondition: tokens must start with `wchar_t` (this can be
|
||||
// checked with `..._IS_WCHAR_T_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_WCHAR_T_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_REMOVE)
|
||||
// Precondition: tokens must end with `wchar_t` (this can be
|
||||
// checked with `..._IS_WCHAR_T_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_ISxwhile (1)
|
||||
#define whilexBOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_REMOVExwhile
|
||||
#define whilexBOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_CAT_TO_COMMAwhile ,
|
||||
#define whileBOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_CAT_TO_EMPTYwhile
|
||||
#define whileBOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_WHILE_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_WHILE_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_WHILE_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_WHILE_FRONT`).
|
||||
// Precondition: tokens must start with `while` (this can be
|
||||
// checked with `..._IS_WHILE_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_WHILE_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_REMOVE)
|
||||
// Precondition: tokens must end with `while` (this can be
|
||||
// checked with `..._IS_WHILE_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_ISxxor (1)
|
||||
#define xorxBOOST_CONTRACT_EXT_PP_KEYWORD_XOR_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_REMOVExxor
|
||||
#define xorxBOOST_CONTRACT_EXT_PP_KEYWORD_XOR_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_CAT_TO_COMMAxor ,
|
||||
#define xorBOOST_CONTRACT_EXT_PP_KEYWORD_XOR_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_CAT_TO_EMPTYxor
|
||||
#define xorBOOST_CONTRACT_EXT_PP_KEYWORD_XOR_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_XOR_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_XOR_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_XOR_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_XOR_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_XOR_FRONT`).
|
||||
// Precondition: tokens must start with `xor` (this can be
|
||||
// checked with `..._IS_XOR_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_XOR_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_XOR_REMOVE)
|
||||
// Precondition: tokens must end with `xor` (this can be
|
||||
// checked with `..._IS_XOR_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
@@ -8,34 +8,38 @@
|
||||
#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
// PRIVATE //
|
||||
/* PRIVATE */
|
||||
|
||||
// NOTE: These are not local macros, do NOT #undefine them ('x' used to avoid
|
||||
// concatenating to reserved symbols).
|
||||
// The following macro must expand to a unary token (e.g., `(1)`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_ISxxor_eq (1)
|
||||
#define xor_eqxBOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_IS (1)
|
||||
// The following macro must expand to nothing.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_REMOVExxor_eq
|
||||
#define xor_eqxBOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_REMOVE
|
||||
// Must expand to a single comma `,` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_CAT_TO_COMMAxor_eq ,
|
||||
#define xor_eqBOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_CAT_TO_COMMA ,
|
||||
// Must expand to empty `` (not local macros, do not #undefine).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_CAT_TO_EMPTYxor_eq
|
||||
#define xor_eqBOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_CAT_TO_EMPTY
|
||||
|
||||
// PUBLIC //
|
||||
/* PUBLIC */
|
||||
|
||||
// Precondition: tokens must start with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_XOR_EQ_FRONT(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_ISx)
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_CAT_TO_COMMA, tokens)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_XOR_EQ_BACK(token) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK(token, \
|
||||
xBOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_IS)
|
||||
// Precondition: tokens must end with a token concatenable to a macro name
|
||||
// (e.g., a literal or integral token) or with parenthesis.
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_XOR_EQ_BACK(tokens) \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_CAT_TO_COMMA, tokens)
|
||||
|
||||
// Precondition: tokens start with keyword to remove (see `..._IS_XOR_EQ_FRONT`).
|
||||
// Precondition: tokens must start with `xor_eq` (this can be
|
||||
// checked with `..._IS_XOR_EQ_FRONT` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_REMOVE_FRONT(tokens) \
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_REMOVEx, tokens)
|
||||
BOOST_PP_CAT(BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_CAT_TO_EMPTY, tokens)
|
||||
|
||||
// Precondition: token ends with keyword to remove (see `..._IS_XOR_EQ_BACK`).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_REMOVE_BACK(token) \
|
||||
BOOST_PP_CAT(token, xBOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_REMOVE)
|
||||
// Precondition: tokens must end with `xor_eq` (this can be
|
||||
// checked with `..._IS_XOR_EQ_BACK` macro above).
|
||||
#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_REMOVE_BACK(tokens) \
|
||||
BOOST_PP_CAT(tokens, BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_CAT_TO_EMPTY)
|
||||
|
||||
#endif // #include guard
|
||||
|
||||
|
||||
Reference in New Issue
Block a user