summaryrefslogtreecommitdiff
path: root/boost/function_types/detail/pp_loop.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/function_types/detail/pp_loop.hpp')
-rw-r--r--boost/function_types/detail/pp_loop.hpp80
1 files changed, 80 insertions, 0 deletions
diff --git a/boost/function_types/detail/pp_loop.hpp b/boost/function_types/detail/pp_loop.hpp
new file mode 100644
index 0000000000..7d8c347c99
--- /dev/null
+++ b/boost/function_types/detail/pp_loop.hpp
@@ -0,0 +1,80 @@
+
+// (C) Copyright Tobias Schwinger
+//
+// Use modification and distribution are subject to the boost Software License,
+// Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
+
+//------------------------------------------------------------------------------
+
+// no include guards, this file is intended for multiple inclusions
+
+#ifndef BOOST_FT_DETAIL_PP_LOOP_HPP_INCLUDED
+#define BOOST_FT_DETAIL_PP_LOOP_HPP_INCLUDED
+# include <boost/preprocessor/facilities/expand.hpp>
+# include <boost/preprocessor/facilities/empty.hpp>
+# include <boost/preprocessor/punctuation/paren.hpp>
+#endif
+
+#include <boost/function_types/detail/encoding/def.hpp>
+#include <boost/function_types/detail/encoding/aliases_def.hpp>
+
+#if defined(BOOST_FT_PREPROCESSING_MODE)
+# define BOOST_FT_loop <boost/function_types/detail/pp_cc_loop/master.hpp>
+#else
+# define BOOST_FT_loop \
+ <boost/function_types/detail/pp_cc_loop/preprocessed.hpp>
+#endif
+
+#if defined(BOOST_FT_al_path)
+
+# define BOOST_FT_cc_file \
+ <boost/function_types/detail/pp_variate_loop/preprocessed.hpp>
+# define BOOST_FT_variate_file \
+ <boost/function_types/detail/pp_arity_loop.hpp>
+
+# ifndef BOOST_FT_type_function
+# define BOOST_FT_type_function(cc,name) BOOST_FT_SYNTAX( \
+ R BOOST_PP_EMPTY,BOOST_PP_EMPTY,cc,BOOST_PP_EMPTY,name,BOOST_PP_EMPTY)
+# endif
+# ifndef BOOST_FT_type_function_pointer
+# define BOOST_FT_type_function_pointer(cc,name) BOOST_FT_SYNTAX( \
+ R BOOST_PP_EMPTY,BOOST_PP_LPAREN,cc,* BOOST_PP_EMPTY,name,BOOST_PP_RPAREN)
+# endif
+# ifndef BOOST_FT_type_function_reference
+# define BOOST_FT_type_function_reference(cc,name) BOOST_FT_SYNTAX( \
+ R BOOST_PP_EMPTY,BOOST_PP_LPAREN,cc,& BOOST_PP_EMPTY,name,BOOST_PP_RPAREN)
+# endif
+# ifndef BOOST_FT_type_member_function_pointer
+# define BOOST_FT_type_member_function_pointer(cc,name) BOOST_FT_SYNTAX( \
+ R BOOST_PP_EMPTY,BOOST_PP_LPAREN,cc,T0::* BOOST_PP_EMPTY,name,BOOST_PP_RPAREN)
+# endif
+
+# include BOOST_FT_loop
+
+# undef BOOST_FT_type_function
+# undef BOOST_FT_type_function_pointer
+# undef BOOST_FT_type_function_reference
+# undef BOOST_FT_type_member_function_pointer
+
+# undef BOOST_FT_variations
+# undef BOOST_FT_variate_file
+# undef BOOST_FT_cc_file
+# undef BOOST_FT_al_path
+
+#elif defined(BOOST_FT_cc_file)
+
+# include BOOST_FT_loop
+# undef BOOST_FT_cc_file
+
+#else
+
+# error "argument missing"
+
+#endif
+
+#undef BOOST_FT_loop
+
+#include <boost/function_types/detail/encoding/aliases_undef.hpp>
+#include <boost/function_types/detail/encoding/undef.hpp>
+
+