policy.h
Go to the documentation of this file.
1 /************************************************************************************
2 * *
3 * Copyright (c) 2014 - 2018 Axel Menzel <info@rttr.org> *
4 * *
5 * This file is part of RTTR (Run Time Type Reflection) *
6 * License: MIT License *
7 * *
8 * Permission is hereby granted, free of charge, to any person obtaining *
9 * a copy of this software and associated documentation files (the "Software"), *
10 * to deal in the Software without restriction, including without limitation *
11 * the rights to use, copy, modify, merge, publish, distribute, sublicense, *
12 * and/or sell copies of the Software, and to permit persons to whom the *
13 * Software is furnished to do so, subject to the following conditions: *
14 * *
15 * The above copyright notice and this permission notice shall be included in *
16 * all copies or substantial portions of the Software. *
17 * *
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR *
19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *
20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
21 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *
22 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, *
23 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE *
24 * SOFTWARE. *
25 * *
26 *************************************************************************************/
27 
28 #ifndef RTTR_POLICY_H_
29 #define RTTR_POLICY_H_
30 
31 #include "rttr/detail/base/core_prerequisites.h"
32 #include "rttr/detail/misc/misc_type_traits.h"
33 #include "rttr/detail/policies/ctor_policies.h"
34 #include "rttr/detail/policies/meth_policies.h"
35 #include "rttr/detail/policies/prop_policies.h"
36 
37 namespace rttr
38 {
39 
49 struct RTTR_API policy
50 {
56  struct RTTR_API meth
57  {
86  static const detail::return_as_ptr return_ref_as_ptr;
87 
116  static const detail::discard_return discard_return;
117  };
118 
123  struct RTTR_API prop
124  {
158  static const detail::bind_as_ptr bind_as_ptr;
159 
193  static const detail::as_reference_wrapper as_reference_wrapper;
194  };
195 
200  struct RTTR_API ctor
201  {
235  static const detail::as_raw_pointer as_raw_ptr;
236 
271  static const detail::as_std_shared_ptr as_std_shared_ptr;
272 
306  static const detail::as_object as_object;
307  };
308 };
309 
310 } // end namespace rttr
311 
312 #endif // RTTR_POLICY_H_
Definition: access_levels.h:33
The policy class contains all policies that can be used during the registration of reflection informa...
Definition: policy.h:49
static const detail::as_raw_pointer as_raw_ptr
The as_raw_ptr policy will create an instance of a class as raw pointer.
Definition: policy.h:235
static const detail::as_reference_wrapper as_reference_wrapper
The as_reference_wrapper policy will bind a member object as std::reference_wrapper type...
Definition: policy.h:193
static const detail::return_as_ptr return_ref_as_ptr
This policy can be used when a method return a reference to an object and the caller should be able t...
Definition: policy.h:86
The ctor class groups all policies that can be used during registration of constructors.
Definition: policy.h:200
static const detail::bind_as_ptr bind_as_ptr
The bind_as_ptr policy will bind a member object as pointer type.
Definition: policy.h:158
static const detail::as_std_shared_ptr as_std_shared_ptr
The as_std_shared_ptr policy will create an instance of a class through std::make_shared.
Definition: policy.h:271
static const detail::as_object as_object
The as_object policy will create an instance of a class with automatic storage.
Definition: policy.h:306
The meth class groups all policies that can be used during registration of methods.
Definition: policy.h:56
static const detail::discard_return discard_return
This policy should be used when the return value of a method should not be forwarded to the caller...
Definition: policy.h:116
The prop class groups all policies that can be used during registration of properties.
Definition: policy.h:123