pasring postconditions
This commit is contained in:
parent
6eb853bfb8
commit
30e2c73725
@ -2,7 +2,7 @@
|
||||
#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_HPP_
|
||||
#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_HPP_
|
||||
|
||||
#include <boost/contract/ext_/preprocessor/traits/func/postcondition.hpp>
|
||||
#include <boost/contract/ext_/preprocessor/traits/func/postconditions.hpp>
|
||||
#include <boost/contract/ext_/preprocessor/traits/func/virt.hpp>
|
||||
#include <boost/contract/ext_/preprocessor/traits/func/except.hpp>
|
||||
#include <boost/contract/ext_/preprocessor/traits/func/ref.hpp>
|
||||
@ -30,14 +30,14 @@
|
||||
|
||||
#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \
|
||||
BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \
|
||||
BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_POSTCONDITION_INDEX
|
||||
# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_POSTCONDITION_PARSE_D( \
|
||||
BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_POSTCONDITIONS_INDEX
|
||||
# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_POSTCONDITIONS_PARSE_D( \
|
||||
d, decl_traits) \
|
||||
decl_traits
|
||||
#else
|
||||
# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_POSTCONDITION_PARSE_( \
|
||||
# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_POSTCONDITIONS_PARSE_( \
|
||||
d, decl_traits) \
|
||||
BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITION_PARSE_D(d, decl_traits)
|
||||
BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS_PARSE_D(d, decl_traits)
|
||||
#endif
|
||||
|
||||
#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \
|
||||
@ -197,7 +197,7 @@
|
||||
// Implementation: These macros order must match INDEX values (see index.hpp).
|
||||
#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARSE_D(d, decl) \
|
||||
BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_DONE_( \
|
||||
BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_POSTCONDITION_PARSE_(d, \
|
||||
BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_POSTCONDITIONS_PARSE_(d, \
|
||||
BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_VIRT_PARSE_( \
|
||||
BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_TRAILING_RETURN_PARSE_(d, \
|
||||
BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_EXCEPT_PARSE_( \
|
||||
|
@ -44,7 +44,7 @@
|
||||
#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_VIRT_INDEX \
|
||||
BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_OVERRIDE_INDEX
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_POSTCONDITION_INDEX 22
|
||||
#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_POSTCONDITIONS_INDEX 22
|
||||
|
||||
// Must be greater than all indexes (i.e., very last one).
|
||||
#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_MAX_INDEX 23
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITION_HPP_
|
||||
#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITION_HPP_
|
||||
#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS_HPP_
|
||||
#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS_HPP_
|
||||
|
||||
#include <boost/contract/ext_/preprocessor/traits/assertions.hpp>
|
||||
#include <boost/contract/ext_/preprocessor/keyword/contract/postcondition.hpp>
|
||||
@ -20,18 +20,18 @@
|
||||
// caller).
|
||||
|
||||
// Extra level of indirection needed for proper macro expansion (on MSVC).
|
||||
#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITION_EXPAND_TRAITS_( \
|
||||
#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS_EXPAND_TRAITS_( \
|
||||
decl_traits) \
|
||||
BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
|
||||
|
||||
// Precondition: decl = `(,,,) ...` from `postcondition(,,,) ...` originally in
|
||||
// decl. This macro will also parse `(,,,)` into a pp-seq of assertion traits.
|
||||
#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITION_(d, decl, traits) \
|
||||
#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS_(d, decl, traits) \
|
||||
( \
|
||||
BOOST_PP_TUPLE_EAT(0) decl, \
|
||||
BOOST_CONTRACT_EXT_PP_TRAITS_PUSH_BACK( \
|
||||
traits, \
|
||||
BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITION_EXPAND_TRAITS_( \
|
||||
BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS_EXPAND_TRAITS_( \
|
||||
BOOST_CONTRACT_EXT_PP_ASSERTIONS_TRAITS_PARSE_D(d, \
|
||||
BOOST_PP_EXPAND( \
|
||||
BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ \
|
||||
@ -39,40 +39,41 @@
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
BOOST_PP_EMPTY \
|
||||
) \
|
||||
)
|
||||
|
||||
// Precondition: decl = `postcondition(,,,) ...`.
|
||||
#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITION_YES_(d, decl, traits) \
|
||||
BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITION_(d, \
|
||||
#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS_YES_(d, decl, traits) \
|
||||
BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS_(d, \
|
||||
BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_REMOVE_FRONT(decl), \
|
||||
traits \
|
||||
)
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITION_NO_( \
|
||||
#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS_NO_( \
|
||||
unused, decl, traits) \
|
||||
(decl, BOOST_CONTRACT_EXT_PP_TRAITS_PUSH_BACK(traits, BOOST_PP_EMPTY))
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITION_PARSE_ARGS_( \
|
||||
#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS_PARSE_ARGS_( \
|
||||
d, decl, traits) \
|
||||
BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_POSTCONDITION_FRONT(decl), \
|
||||
BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITION_YES_ \
|
||||
BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS_YES_ \
|
||||
, \
|
||||
BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITION_NO_ \
|
||||
BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS_NO_ \
|
||||
)(d, decl, traits)
|
||||
|
||||
/* PUBLIC */
|
||||
|
||||
#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITION_PARSE_D( \
|
||||
#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS_PARSE_D( \
|
||||
d, decl_traits) \
|
||||
BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITION_PARSE_ARGS_(d, \
|
||||
BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS_PARSE_ARGS_(d, \
|
||||
BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
|
||||
BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
|
||||
)
|
||||
|
||||
// Expand to pp-seq of postcondition assertion traits to be inspected via
|
||||
// ASSERTION_TRAITS macro, or to EMPTY() if no postconditions.
|
||||
#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITION(traits) \
|
||||
#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS(traits) \
|
||||
BOOST_CONTRACT_EXT_PP_TRAITS_ELEM( \
|
||||
BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_POSTCONDITIONS_INDEX, traits \
|
||||
)()
|
||||
|
Loading…
Reference in New Issue
Block a user