Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 1 | |
| 2 | // (C) Copyright Tobias Schwinger |
| 3 | // |
| 4 | // Use modification and distribution are subject to the boost Software License, |
| 5 | // Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt). |
| 6 | |
| 7 | //------------------------------------------------------------------------------ |
| 8 | |
| 9 | // no include guards, this file is guarded externally |
| 10 | |
| 11 | // this file has been generated from the master.hpp file in the same directory |
| 12 | namespace ndnboost { namespace function_types { |
| 13 | typedef detail::property_tag<0x00000200,0x00000300> non_variadic; |
| 14 | typedef detail::property_tag<0x00000100,0x00000300> variadic; |
| 15 | typedef detail::property_tag<0,0x00000400> non_const; |
| 16 | typedef detail::property_tag<0x00000400,0x00000400> const_qualified; |
| 17 | typedef detail::property_tag<0,0x00000800> non_volatile; |
| 18 | typedef detail::property_tag<0x00000800,0x00000800> volatile_qualified; |
| 19 | typedef detail::property_tag<0x00008000,0x00ff8000> default_cc; |
| 20 | typedef detail::property_tag<0 , 3072> non_cv; |
| 21 | typedef detail::property_tag<0x00000400 , 3072> const_non_volatile; |
| 22 | typedef detail::property_tag<0x00000800, 3072> volatile_non_const; |
| 23 | typedef detail::property_tag<3072 , 3072> cv_qualified; |
| 24 | namespace detail { |
| 25 | typedef constant<0x00ff0fff> full_mask; |
| 26 | template <bits_t Flags, bits_t CCID> struct encode_bits_impl |
| 27 | { |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame] | 28 | NDNBOOST_STATIC_CONSTANT( bits_t, value = |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 29 | Flags | (0x00008000 * CCID) << 1 ); |
| 30 | }; |
| 31 | template <bits_t Flags, bits_t CCID, std::size_t Arity> |
| 32 | struct encode_charr_impl |
| 33 | { |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame] | 34 | NDNBOOST_STATIC_CONSTANT(std::size_t, value = (std::size_t)(1+ |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 35 | Flags | (0x00008000 * CCID) << 1 | Arity << 24 |
| 36 | )); |
| 37 | }; |
| 38 | template <bits_t Bits> struct decode_bits |
| 39 | { |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame] | 40 | NDNBOOST_STATIC_CONSTANT(bits_t, flags = Bits & 0x00000fff); |
| 41 | NDNBOOST_STATIC_CONSTANT(bits_t, cc_id = |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 42 | ( (Bits & 0x00ff0fff) / 0x00008000) >> 1 |
| 43 | ); |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame] | 44 | NDNBOOST_STATIC_CONSTANT(bits_t, tag_bits = (Bits & 0x00ff0fff)); |
| 45 | NDNBOOST_STATIC_CONSTANT(std::size_t, arity = (std::size_t) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 46 | (Bits >> 24) |
| 47 | ); |
| 48 | }; |
| 49 | template <bits_t LHS_bits, bits_t LHS_mask, bits_t RHS_bits, bits_t RHS_mask> |
| 50 | struct tag_ice |
| 51 | { |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame] | 52 | NDNBOOST_STATIC_CONSTANT(bool, match = |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 53 | RHS_bits == (LHS_bits & RHS_mask & (RHS_bits | ~0x000000ff)) |
| 54 | ); |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame] | 55 | NDNBOOST_STATIC_CONSTANT(bits_t, combined_bits = |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 56 | (LHS_bits & ~RHS_mask) | RHS_bits |
| 57 | ); |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame] | 58 | NDNBOOST_STATIC_CONSTANT(bits_t, combined_mask = |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 59 | LHS_mask | RHS_mask |
| 60 | ); |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame] | 61 | NDNBOOST_STATIC_CONSTANT(bits_t, extracted_bits = |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 62 | LHS_bits & RHS_mask |
| 63 | ); |
| 64 | }; |
| 65 | typedef property_tag<0x00000001,0x000000ff> callable_builtin_tag; |
| 66 | typedef property_tag<0x00000003,0x000000ff> nonmember_callable_builtin_tag; |
| 67 | typedef property_tag<0x00000007,0x000000ff> function_tag; |
| 68 | typedef property_tag<0x00000013,0x000000ff> reference_tag; |
| 69 | typedef property_tag<0x0000000b,0x000000ff> pointer_tag; |
| 70 | typedef property_tag<0x00000061,0x000000ff> member_function_pointer_tag; |
| 71 | typedef property_tag<0x000000a3,0x000000ff> member_object_pointer_tag; |
| 72 | typedef property_tag<0x000002a3,0x00ff0fff> member_object_pointer_base; |
| 73 | typedef property_tag<0x00000020,0x000000ff> member_pointer_tag; |
| 74 | typedef property_tag< 33287 , 16745471 > nv_dcc_func; |
| 75 | typedef property_tag< 33377 , 16745471 > nv_dcc_mfp; |
| 76 | } |
| 77 | } } |