PageRenderTime 41ms CodeModel.GetById 34ms app.highlight 4ms RepoModel.GetById 1ms app.codeStats 0ms

/Src/Dependencies/Boost/boost/spirit/home/support/nonterminal/locals.hpp

http://hadesmem.googlecode.com/
C++ Header | 54 lines | 38 code | 7 blank | 9 comment | 1 complexity | 2d4c453e39d91e88e799cb279de4b3b3 MD5 | raw file
 1/*=============================================================================
 2    Copyright (c) 2001-2011 Joel de Guzman
 3    Copyright (c) 2001-2011 Hartmut Kaiser
 4
 5    Distributed under the Boost Software License, Version 1.0. (See accompanying
 6    file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 7==============================================================================*/
 8#if !defined(BOOST_SPIRIT_LOCALS_APRIL_03_2007_0506PM)
 9#define BOOST_SPIRIT_LOCALS_APRIL_03_2007_0506PM
10
11#if defined(_MSC_VER)
12#pragma once
13#endif
14
15#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
16#include <boost/preprocessor/repetition/enum_params.hpp>
17#include <boost/mpl/vector.hpp>
18#include <boost/mpl/bool.hpp>
19
20#if !defined(BOOST_SPIRIT_MAX_LOCALS_SIZE)
21# define BOOST_SPIRIT_MAX_LOCALS_SIZE 10
22#else
23# if BOOST_SPIRIT_MAX_LOCALS_SIZE < 3
24#   undef BOOST_SPIRIT_MAX_LOCALS_SIZE
25#   define BOOST_SPIRIT_MAX_LOCALS_SIZE 10
26# endif
27#endif
28
29namespace boost { namespace spirit
30{
31    ///////////////////////////////////////////////////////////////////////////
32    template <
33        BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
34            BOOST_SPIRIT_MAX_LOCALS_SIZE, typename T, mpl::na)
35    >
36    struct locals
37      : mpl::vector<BOOST_PP_ENUM_PARAMS(BOOST_SPIRIT_MAX_LOCALS_SIZE, T)> {};
38
39    ///////////////////////////////////////////////////////////////////////////
40    namespace detail
41    {
42        template <typename T>
43        struct is_locals
44          : mpl::false_
45        {};
46
47        template <BOOST_PP_ENUM_PARAMS(BOOST_SPIRIT_MAX_LOCALS_SIZE, typename T)>
48        struct is_locals<locals<BOOST_PP_ENUM_PARAMS(BOOST_SPIRIT_MAX_LOCALS_SIZE, T)> >
49          : mpl::true_
50        {};
51    }
52}}
53
54#endif