Main MRPT website
>
C++ reference for MRPT 1.4.0
mrpt
utils
TTypeName_impl.h
Go to the documentation of this file.
1
/* +---------------------------------------------------------------------------+
2
| Mobile Robot Programming Toolkit (MRPT) |
3
| http://www.mrpt.org/ |
4
| |
5
| Copyright (c) 2005-2016, Individual contributors, see AUTHORS file |
6
| See: http://www.mrpt.org/Authors - All rights reserved. |
7
| Released under BSD License. See details in http://www.mrpt.org/License |
8
+---------------------------------------------------------------------------+ */
9
#ifndef TTYPENAME_IMPL_H
10
#define TTYPENAME_IMPL_H
11
12
#include <
mrpt/utils/TTypeName.h
>
13
#include <list>
14
#include <vector>
15
#include <deque>
16
#include <set>
17
#include <map>
18
19
// This file extends TTypeName.h for STL C++ types.
20
21
namespace
mrpt
22
{
23
namespace
utils
24
{
25
/** @name Conversion of type to string at compile time
26
@{ */
27
28
MRPT_DECLARE_TTYPENAME
(std::string)
29
30
#define MRPT_DECLARE_TTYPENAME_CONTAINER(_CONTAINER) \
31
template< typename V > \
32
struct TTypeName <_CONTAINER<V> > { \
33
static std::string get() { \
34
return std::string( #_CONTAINER )+std::string("<")+std::string( TTypeName<V>::get() ) + std::string(">"); \
35
} \
36
};
37
38
MRPT_DECLARE_TTYPENAME_CONTAINER
( std::vector )
39
MRPT_DECLARE_TTYPENAME_CONTAINER
( std::deque )
40
MRPT_DECLARE_TTYPENAME_CONTAINER
( std::list )
41
MRPT_DECLARE_TTYPENAME_CONTAINER
( std::set )
42
43
#define MRPT_DECLARE_TTYPENAME_CONTAINER_ASSOC(_CONTAINER) \
44
template< typename K, typename V > \
45
struct TTypeName <_CONTAINER<K,V> > { \
46
static std::string get() { \
47
return std::string( #_CONTAINER )+std::string("<")+std::string( TTypeName<K>::get() )+ std::string(",")+std::string( TTypeName<V>::get() )+std::string(">"); \
48
} \
49
};
50
51
MRPT_DECLARE_TTYPENAME_CONTAINER_ASSOC
( std::map )
52
MRPT_DECLARE_TTYPENAME_CONTAINER_ASSOC
( std::multimap )
53
54
55
template
<
typename
T1,
typename
T2 >
56
struct
TTypeName
<std::pair<T1,T2> > {
57
static
std::string
get
() {
58
return
std::string(
"std::pair<"
)+std::string(
TTypeName<T1>::get
() )+ std::string(
","
)+std::string(
TTypeName<T2>::get
() )+std::string(
">"
);
59
}
60
};
61
62
/** @} */
63
64
}
// End of namespace
65
}
// End of namespace
66
67
#endif
MRPT_DECLARE_TTYPENAME
#define MRPT_DECLARE_TTYPENAME(_TYPE)
Definition:
TTypeName.h:60
MRPT_DECLARE_TTYPENAME_CONTAINER_ASSOC
#define MRPT_DECLARE_TTYPENAME_CONTAINER_ASSOC(_CONTAINER)
Definition:
TTypeName_impl.h:43
mrpt
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
Definition:
CParticleFilter.h:16
TTypeName.h
mrpt::utils::TTypeName< std::pair< T1, T2 > >::get
static std::string get()
Definition:
TTypeName_impl.h:57
MRPT_DECLARE_TTYPENAME_CONTAINER
#define MRPT_DECLARE_TTYPENAME_CONTAINER(_CONTAINER)
Definition:
TTypeName_impl.h:30
mrpt::utils::TTypeName
A template to obtain the type of its argument as a string at compile time.
Definition:
TTypeName.h:47
Page generated by
Doxygen 1.8.16
for MRPT 1.4.0 SVN: at Mon Oct 14 23:11:08 UTC 2019