Skip to content

File preprocessor.hpp

File List > backends > cxx > include > zmbt > core > preprocessor.hpp

Go to the documentation of this file

#ifndef ZMBT_CORE_PREPROCESSOR_HPP_
#define ZMBT_CORE_PREPROCESSOR_HPP_

#include <boost/preprocessor.hpp> // IWYU pragma: export

#define ZMBT_PP_NS_OPEN(s, state, ns) namespace ns {
#define ZMBT_PP_NS_CLOSE(s, state, ns) }
#define ZMBT_PP_NS_OPEN_ALL(...) BOOST_PP_SEQ_FOR_EACH(ZMBT_PP_NS_OPEN, , BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__))
#define ZMBT_PP_NS_CLOSE_ALL(...) BOOST_PP_SEQ_FOR_EACH(ZMBT_PP_NS_CLOSE, , BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__))

#define ZMBT_PP_INJECT_CODE_INTO_NS(code, ...) \
ZMBT_PP_NS_OPEN_ALL(__VA_ARGS__)               \
code                                            \
ZMBT_PP_NS_CLOSE_ALL(__VA_ARGS__)


#endif // ZMBT_CORE_PREPROCESSOR_HPP_