include
tf2
impl
impl/convert.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2013, Open Source Robotics Foundation
3
* All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions are met:
7
*
8
* * Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer.
10
* * Redistributions in binary form must reproduce the above copyright
11
* notice, this list of conditions and the following disclaimer in the
12
* documentation and/or other materials provided with the distribution.
13
* * Neither the name of the Willow Garage, Inc. nor the names of its
14
* contributors may be used to endorse or promote products derived from
15
* this software without specific prior written permission.
16
*
17
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
* POSSIBILITY OF SUCH DAMAGE.
28
*/
29
30
#ifndef TF2_IMPL_CONVERT_H
31
#define TF2_IMPL_CONVERT_H
32
33
namespace
tf2
{
34
namespace
impl {
35
36
template
<
bool
IS_MESSAGE_A,
bool
IS_MESSAGE_B>
37
class
Converter
{
38
public
:
39
template
<
typename
A,
typename
B>
40
static
void
convert
(
const
A& a, B& b);
41
};
42
43
// The case where both A and B are messages should not happen: if you have two
44
// messages that are interchangeable, well, that's against the ROS purpose:
45
// only use one type. Worst comes to worst, specialize the original convert
46
// function for your types.
47
// if B == A, the templated version of convert with only one argument will be
48
// used.
49
//
50
//template <>
51
//template <typename A, typename B>
52
//inline void Converter<true, true>::convert(const A& a, B& b);
53
54
template
<>
55
template
<
typename
A,
typename
B>
56
inline
void
Converter<true, false>::convert
(
const
A& a, B& b)
57
{
58
#ifdef _MSC_VER
59
tf2::fromMsg
(a, b);
60
#else
61
fromMsg
(a, b);
62
#endif
63
}
64
65
template
<>
66
template
<
typename
A,
typename
B>
67
inline
void
Converter<false, true>::convert
(
const
A& a, B& b)
68
{
69
#ifdef _MSC_VER
70
b =
tf2::toMsg
(a);
71
#else
72
b =
toMsg
(a);
73
#endif
74
}
75
76
template
<>
77
template
<
typename
A,
typename
B>
78
inline
void
Converter<false, false>::convert
(
const
A& a, B& b)
79
{
80
#ifdef _MSC_VER
81
tf2::fromMsg
(
tf2::toMsg
(a), b);
82
#else
83
fromMsg
(
toMsg
(a), b);
84
#endif
85
}
86
87
}
88
}
89
90
#endif //TF2_IMPL_CONVERT_H
tf2
Definition:
buffer_core.h:54
tf2::fromMsg
void fromMsg(const A &, B &b)
tf2::toMsg
B toMsg(const A &a)
tf2::impl::Converter
Definition:
impl/convert.h:37
tf2::impl::Converter::convert
static void convert(const A &a, B &b)
tf2
Author(s): Tully Foote, Eitan Marder-Eppstein, Wim Meeussen
autogenerated on Mon Jun 27 2022 02:43:06