RSC
0.12.1
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
Accessors.h
Go to the documentation of this file.
1
/* ============================================================
2
*
3
* This file is part of the RSC project
4
*
5
* Copyright (C) 2010, 2011 Jan Moringen
6
*
7
* This file may be licensed under the terms of the
8
* GNU Lesser General Public License Version 3 (the ``LGPL''),
9
* or (at your option) any later version.
10
*
11
* Software distributed under the License is distributed
12
* on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
13
* express or implied. See the LGPL for the specific language
14
* governing rights and limitations.
15
*
16
* You should have received a copy of the LGPL along with this
17
* program. If not, go to http://www.gnu.org/licenses/lgpl.html
18
* or write to the Free Software Foundation, Inc.,
19
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20
*
21
* The development of this software was supported by:
22
* CoR-Lab, Research Institute for Cognition and Robotics
23
* Bielefeld University
24
*
25
* ============================================================ */
26
27
#pragma once
28
29
#include <boost/shared_ptr.hpp>
30
31
#include "
detail/ForceConst.h
"
32
33
namespace
rsc {
34
namespace
patterns {
35
36
struct
pass_through
{
37
};
38
42
template
<
typename
T>
43
struct
dereferencer
{
44
typedef
T&
result_type
;
45
46
inline
result_type
operator()
(T* t)
const
{
47
return
*t;
48
}
49
50
inline
typename
detail::force_const<result_type>::type
51
operator()
(
const
T* t)
const
{
52
return
*t;
53
}
54
};
55
59
template
<
typename
T>
60
struct
shared_ptr_dereferencer
{
61
typedef
T&
result_type
;
62
63
inline
result_type
operator()
(boost::shared_ptr<T> t)
const
{
64
return
*t;
65
}
66
67
inline
typename
detail::force_const<result_type>::type
68
operator()
(boost::shared_ptr<const T> t)
const
{
69
return
*t;
70
}
71
};
72
73
}
74
}
rsc::patterns::shared_ptr_dereferencer
Definition:
Accessors.h:60
rsc::patterns::dereferencer::result_type
T & result_type
Definition:
Accessors.h:44
rsc::patterns::pass_through
Definition:
Accessors.h:36
rsc::patterns::detail::force_const::type
boost::mpl::if_< typename boost::is_reference< T >::type, typename boost::add_reference< typename boost::add_const< typename boost::remove_reference< T >::type >::type >::type, typename boost::add_const< T >::type >::type type
Definition:
ForceConst.h:43
rsc::patterns::shared_ptr_dereferencer::result_type
T & result_type
Definition:
Accessors.h:61
rsc::patterns::dereferencer::operator()
detail::force_const< result_type >::type operator()(const T *t) const
Definition:
Accessors.h:51
rsc::patterns::dereferencer
Definition:
Accessors.h:43
rsc::patterns::shared_ptr_dereferencer::operator()
detail::force_const< result_type >::type operator()(boost::shared_ptr< const T > t) const
Definition:
Accessors.h:68
rsc::patterns::shared_ptr_dereferencer::operator()
result_type operator()(boost::shared_ptr< T > t) const
Definition:
Accessors.h:63
rsc::patterns::dereferencer::operator()
result_type operator()(T *t) const
Definition:
Accessors.h:46
ForceConst.h
rsc
patterns
Accessors.h
Generated on Wed Feb 3 2016 16:31:15 for RSC by
1.8.6