diff options
Diffstat (limited to 'src/boost/libs/metaparse/example/meta_hs/meta_hs.hpp')
-rw-r--r-- | src/boost/libs/metaparse/example/meta_hs/meta_hs.hpp | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/boost/libs/metaparse/example/meta_hs/meta_hs.hpp b/src/boost/libs/metaparse/example/meta_hs/meta_hs.hpp new file mode 100644 index 000000000..061b442a7 --- /dev/null +++ b/src/boost/libs/metaparse/example/meta_hs/meta_hs.hpp @@ -0,0 +1,64 @@ +#ifndef META_HS_META_HS_HPP +#define META_HS_META_HS_HPP + +// Copyright Abel Sinkovics (abel@sinkovics.hu) 2012. +// 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) + +#include <builder.hpp> + +#include <boost/mpl/plus.hpp> +#include <boost/mpl/minus.hpp> +#include <boost/mpl/times.hpp> +#include <boost/mpl/divides.hpp> +#include <boost/mpl/less.hpp> +#include <boost/mpl/less_equal.hpp> +#include <boost/mpl/greater.hpp> +#include <boost/mpl/greater_equal.hpp> +#include <boost/mpl/equal_to.hpp> +#include <boost/mpl/not_equal_to.hpp> + +#include <boost/preprocessor/cat.hpp> +#include <boost/preprocessor/seq/for_each.hpp> + +#ifdef DEFINE_LAZY + #error DEFINE_LAZY already defined +#endif +#define DEFINE_LAZY(r, unused, name) \ + template <class A, class B> \ + struct BOOST_PP_CAT(lazy_, name) : \ + boost::mpl::name<typename A::type, typename B::type> \ + {}; + +BOOST_PP_SEQ_FOR_EACH(DEFINE_LAZY, ~, + (plus) + (minus) + (times) + (divides) + (less) + (less_equal) + (greater) + (greater_equal) + (equal_to) + (not_equal_to) +) + +#undef DEFINE_LAZY + +typedef builder<> + ::import2<boost::metaparse::string<'.','+','.'>, lazy_plus>::type + ::import2<boost::metaparse::string<'.','-','.'>, lazy_minus>::type + ::import2<boost::metaparse::string<'.','*','.'>, lazy_times>::type + ::import2<boost::metaparse::string<'.','/','.'>, lazy_divides>::type + ::import2<boost::metaparse::string<'.','<','.'>, lazy_less>::type + ::import2<boost::metaparse::string<'.','<','=','.'>, lazy_less_equal>::type + ::import2<boost::metaparse::string<'.','>','.'>, lazy_greater>::type + ::import2<boost::metaparse::string<'.','>','=','.'>, lazy_greater_equal>::type + ::import2<boost::metaparse::string<'.','=','=','.'>, lazy_equal_to>::type + ::import2<boost::metaparse::string<'.','/','=','.'>, lazy_not_equal_to>::type + + meta_hs; + +#endif + |