Blame view

3rdparty/boost_1_81_0/boost/parameter/name.hpp 5.66 KB
0b6a182c   Hu Chunming   添加无鉴权注册和注销
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
  // Copyright Daniel Wallin 2006.
  // Copyright Cromwell D. Enage 2017.
  // 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)
  
  #ifndef BOOST_PARAMETER_NAME_060806_HPP
  #define BOOST_PARAMETER_NAME_060806_HPP
  
  #include <boost/parameter/aux_/name.hpp>
  #include <boost/preprocessor/stringize.hpp>
  #include <boost/config.hpp>
  
  #if defined(BOOST_PARAMETER_CAN_USE_MP11)
  #define BOOST_PARAMETER_NAME_TAG(tag_namespace, tag, q)                      \
      namespace tag_namespace                                                  \
      {                                                                        \
          struct tag                                                           \
          {                                                                    \
              static BOOST_CONSTEXPR char const* keyword_name()                \
              {                                                                \
                  return BOOST_PP_STRINGIZE(tag);                              \
              }                                                                \
              using _ = BOOST_PARAMETER_TAG_PLACEHOLDER_TYPE(tag);             \
              using _1 = _;                                                    \
              BOOST_PARAMETER_TAG_MP11_PLACEHOLDER_BINDING(binding_fn, tag);   \
              BOOST_PARAMETER_TAG_MP11_PLACEHOLDER_VALUE(fn, tag);             \
              using qualifier = ::boost::parameter::q;                         \
          };                                                                   \
      }
  /**/
  #else   // !defined(BOOST_PARAMETER_CAN_USE_MP11)
  #define BOOST_PARAMETER_NAME_TAG(tag_namespace, tag, q)                      \
      namespace tag_namespace                                                  \
      {                                                                        \
          struct tag                                                           \
          {                                                                    \
              static BOOST_CONSTEXPR char const* keyword_name()                \
              {                                                                \
                  return BOOST_PP_STRINGIZE(tag);                              \
              }                                                                \
              typedef BOOST_PARAMETER_TAG_PLACEHOLDER_TYPE(tag) _;             \
              typedef BOOST_PARAMETER_TAG_PLACEHOLDER_TYPE(tag) _1;            \
              typedef ::boost::parameter::q qualifier;                         \
          };                                                                   \
      }
  /**/
  #endif  // BOOST_PARAMETER_CAN_USE_MP11
  
  #include <boost/parameter/keyword.hpp>
  
  #define BOOST_PARAMETER_NAME_KEYWORD(tag_namespace, tag, name)               \
      namespace                                                                \
      {                                                                        \
          ::boost::parameter::keyword<tag_namespace::tag> const& name          \
              = ::boost::parameter::keyword<tag_namespace::tag>::instance;     \
      }
  /**/
  
  #define BOOST_PARAMETER_BASIC_NAME(tag_namespace, tag, qualifier, name)      \
      BOOST_PARAMETER_NAME_TAG(tag_namespace, tag, qualifier)                  \
      BOOST_PARAMETER_NAME_KEYWORD(tag_namespace, tag, name)
  /**/
  
  #define BOOST_PARAMETER_COMPLEX_NAME_TUPLE1(object, namespace)               \
      (object, namespace), ~
  /**/
  
  #include <boost/preprocessor/tuple/elem.hpp>
  
  #define BOOST_PARAMETER_COMPLEX_NAME_TUPLE(name)                             \
      BOOST_PP_TUPLE_ELEM(2, 0, (BOOST_PARAMETER_COMPLEX_NAME_TUPLE1 name))
  /**/
  
  #define BOOST_PARAMETER_COMPLEX_NAME_OBJECT(name)                            \
      BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PARAMETER_COMPLEX_NAME_TUPLE(name))
  /**/
  
  #define BOOST_PARAMETER_COMPLEX_NAME_NAMESPACE(name)                         \
      BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PARAMETER_COMPLEX_NAME_TUPLE(name))
  /**/
  
  #include <boost/parameter/aux_/preprocessor/qualifier.hpp>
  #include <boost/preprocessor/tuple/eat.hpp>
  
  #define BOOST_PARAMETER_COMPLEX_NAME(name)                                   \
      BOOST_PARAMETER_BASIC_NAME(                                              \
          BOOST_PARAMETER_COMPLEX_NAME_NAMESPACE(name)                         \
        , BOOST_PARAMETER_UNQUALIFIED(BOOST_PP_TUPLE_EAT(2) name)              \
        , BOOST_PARAMETER_GET_QUALIFIER(BOOST_PP_TUPLE_EAT(2) name)            \
        , BOOST_PARAMETER_COMPLEX_NAME_OBJECT(name)                            \
      )
  /**/
  
  #include <boost/preprocessor/cat.hpp>
  
  #define BOOST_PARAMETER_SIMPLE_NAME(name)                                    \
      BOOST_PARAMETER_BASIC_NAME(                                              \
          tag                                                                  \
        , BOOST_PARAMETER_UNQUALIFIED(name)                                    \
        , BOOST_PARAMETER_GET_QUALIFIER(name)                                  \
        , BOOST_PP_CAT(_, BOOST_PARAMETER_UNQUALIFIED(name))                   \
      )
  /**/
  
  #include <boost/parameter/aux_/preprocessor/is_binary.hpp>
  #include <boost/preprocessor/control/iif.hpp>
  
  #define BOOST_PARAMETER_NAME(name)                                           \
      BOOST_PP_IIF(                                                            \
          BOOST_PARAMETER_IS_BINARY(name)                                      \
        , BOOST_PARAMETER_COMPLEX_NAME                                         \
        , BOOST_PARAMETER_SIMPLE_NAME                                          \
      )(name)
  /**/
  
  #include <boost/parameter/template_keyword.hpp>
  
  #endif  // include guard