Ardour
9.0-pre0-582-g084a23a80d
enum_convert.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2016 Tim Mayberry <mojofunk@gmail.com>
3
* Copyright (C) 2017 Robin Gareus <robin@gareus.org>
4
*
5
* This program is free software; you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License as published by
7
* the Free Software Foundation; either version 2 of the License, or
8
* (at your option) any later version.
9
*
10
* This program is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU General Public License for more details.
14
*
15
* You should have received a copy of the GNU General Public License along
16
* with this program; if not, write to the Free Software Foundation, Inc.,
17
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18
*/
19
20
#ifndef PBD_ENUM_CONVERT_H
21
#define PBD_ENUM_CONVERT_H
22
23
#include <typeinfo>
24
25
#include "
pbd/enumwriter.h
"
26
#include "
pbd/string_convert.h
"
27
28
#define TO_STRING_FULL(Type) \
29
template <> \
30
inline bool to_string (Type val, std::string& str) \
31
{ \
32
str = enum_2_string (val); \
33
return true; \
34
}
35
36
#define STRING_TO_FULL(Type) \
37
template <> \
38
inline bool string_to (const std::string& str, Type& val) \
39
{ \
40
val = (Type)string_2_enum (str, val); \
41
return true; \
42
}
43
44
#define TO_STRING(Type) \
45
template<> inline std::string to_string (Type val) \
46
{ return enum_2_string (val); }
47
48
#define STRING_TO(Type) \
49
template<> inline Type string_to (const std::string& str) \
50
{ Type val; return (Type) string_2_enum (str, val); }
51
52
#define DEFINE_ENUM_CONVERT(Type) \
53
TO_STRING_FULL (Type) \
54
STRING_TO_FULL (Type) \
55
TO_STRING (Type) \
56
STRING_TO (Type)
57
58
#endif
// PBD_ENUM_CONVERT_H
enumwriter.h
string_convert.h
libs
pbd
pbd
enum_convert.h
Generated on Wed Dec 25 2024 05:44:13 for Ardour by
1.9.1