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
37namespace rttr
38{
39
50{
57 {
86 static const detail::return_as_ptr return_ref_as_ptr;
87
116 static const detail::discard_return discard_return;
117 };
118
124 {
158 static const detail::bind_as_ptr bind_as_ptr;
159
193 static const detail::as_reference_wrapper as_reference_wrapper;
194 };
195
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_
The array_range class provides a view into an underlying data structure with lower and upper limits.
Definition array_range.h:64
Definition access_levels.h:34
The ctor class groups all policies that can be used during registration of constructors.
Definition policy.h:201
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
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_std_shared_ptr as_std_shared_ptr
The as_std_shared_ptr policy will create an instance of a class through std::make_shared<T>.
Definition policy.h:271
The meth class groups all policies that can be used during registration of methods.
Definition policy.h:57
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
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 prop class groups all policies that can be used during registration of properties.
Definition policy.h:124
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::bind_as_ptr bind_as_ptr
The bind_as_ptr policy will bind a member object as pointer type.
Definition policy.h:158
The policy class contains all policies that can be used during the registration of reflection informa...
Definition policy.h:50