diff DEPENDENCIES/generic/include/boost/phoenix/statement/detail/catch_push_back.hpp @ 16:2665513ce2d3

Add boost headers
author Chris Cannam
date Tue, 05 Aug 2014 11:11:38 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DEPENDENCIES/generic/include/boost/phoenix/statement/detail/catch_push_back.hpp	Tue Aug 05 11:11:38 2014 +0100
@@ -0,0 +1,132 @@
+
+#if !BOOST_PHOENIX_IS_ITERATING
+
+#ifndef BOOST_PHOENIX_STATEMENT_DETAIL_CATCH_PUSH_BACK_HPP
+#define BOOST_PHOENIX_STATEMENT_DETAIL_CATCH_PUSH_BACK_HPP
+
+#include <boost/phoenix/support/iterate.hpp>
+
+#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+
+#include <boost/phoenix/statement/detail/preprocessed/catch_push_back.hpp>
+
+#else
+
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/catch_push_back_" BOOST_PHOENIX_LIMIT_STR ".hpp")
+#endif
+
+/*==============================================================================
+    Copyright (c) 2005-2010 Joel de Guzman
+    Copyright (c) 2010 Thomas Heller
+
+    Distributed under the Boost Software License, Version 1.0. (See accompanying
+    file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 1)
+#endif
+
+    #define BOOST_PHOENIX_CATCH_PUSH_BACK_R0(Z, N, DATA)                        \
+        BOOST_PP_COMMA_IF(N)                                                    \
+        typename proto::result_of::child_c<TryCatch, N>::type                   \
+    /**/
+
+    #define BOOST_PHOENIX_CATCH_PUSH_BACK_R1(Z, N, DATA)                        \
+        BOOST_PP_COMMA_IF(N) proto::child_c<N>(try_catch)                       \
+    /**/
+
+#define BOOST_PHOENIX_ITERATION_PARAMS                                          \
+        (3, (2, BOOST_PHOENIX_CATCH_LIMIT,                                      \
+        <boost/phoenix/statement/detail/catch_push_back.hpp>))
+#include BOOST_PHOENIX_ITERATE()
+    
+    #undef BOOST_PHOENIX_CATCH_PUSH_BACK_R0
+    #undef BOOST_PHOENIX_CATCH_PUSH_BACK_R1
+
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
+#endif
+
+#endif // BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
+
+#endif
+
+#else
+        template <typename TryCatch, typename Exception, typename Expr>
+        struct catch_push_back<TryCatch, Exception, Expr, BOOST_PHOENIX_ITERATION>
+        {
+            typedef
+                typename proto::result_of::make_expr<
+                    phoenix::tag::catch_
+                  , proto::basic_default_domain
+                  , catch_exception<Exception>
+                  , Expr
+                >::type
+                catch_expr;
+
+            typedef phoenix::expression::try_catch<
+                BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, BOOST_PHOENIX_CATCH_PUSH_BACK_R0, _)
+              , catch_expr> gen_type;
+            typedef typename gen_type::type type;
+
+            static type
+            make(
+                TryCatch const& try_catch
+              , Expr const& catch_
+            )
+            {
+                return
+                    gen_type::make(
+                        BOOST_PP_REPEAT(
+                            BOOST_PHOENIX_ITERATION
+                          , BOOST_PHOENIX_CATCH_PUSH_BACK_R1
+                          , _
+                        )
+                      , proto::make_expr<
+                            phoenix::tag::catch_
+                          , proto::basic_default_domain
+                        >(catch_exception<Exception>(), catch_)
+                    );
+            }
+        };
+        
+        template <typename TryCatch, typename Expr>
+        struct catch_all_push_back<TryCatch, Expr, BOOST_PHOENIX_ITERATION>
+        {
+            typedef
+                typename proto::result_of::make_expr<
+                    phoenix::tag::catch_all
+                  , proto::basic_default_domain
+                  , Expr
+                >::type
+                catch_expr;
+
+            typedef phoenix::expression::try_catch<
+                BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, BOOST_PHOENIX_CATCH_PUSH_BACK_R0, _)
+              , catch_expr> gen_type;
+            typedef typename gen_type::type type;
+
+            static type
+            make(
+                TryCatch const& try_catch
+              , Expr const& catch_
+            )
+            {
+                return
+                    gen_type::make(
+                        BOOST_PP_REPEAT(
+                            BOOST_PHOENIX_ITERATION
+                          , BOOST_PHOENIX_CATCH_PUSH_BACK_R1
+                          , _
+                        )
+                      , proto::make_expr<
+                            phoenix::tag::catch_all
+                          , proto::basic_default_domain
+                        >(catch_)
+                    );
+            }
+        };
+
+#endif