RSC
0.16.0
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
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
Definition:
CollectingOptionHandler.cpp:31
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 by
1.8.11