GCC Code Coverage Report


Directory: src/gate/
File: src/gate/typeids.hpp
Date: 2025-12-12 23:40:09
Exec Total Coverage
Lines: 21 21 100.0%
Functions: 21 21 100.0%
Branches: 0 0 -%

Line Branch Exec Source
1 /* GATE PROJECT LICENSE:
2 +----------------------------------------------------------------------------+
3 | Copyright(c) 2018-2025, Stefan Meislinger <sm@opengate.at> |
4 | All rights reserved. |
5 | |
6 | Redistribution and use in source and binary forms, with or without |
7 | modification, are permitted provided that the following conditions are met:|
8 | |
9 | 1. Redistributions of source code must retain the above copyright notice, |
10 | this list of conditions and the following disclaimer. |
11 | 2. Redistributions in binary form must reproduce the above copyright |
12 | notice, this list of conditions and the following disclaimer in the |
13 | documentation and/or other materials provided with the distribution. |
14 | |
15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"|
16 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
17 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
18 | ARE DISCLAIMED.IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
19 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
20 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
21 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
22 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
23 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
24 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF |
25 | THE POSSIBILITY OF SUCH DAMAGE. |
26 +----------------------------------------------------------------------------+
27 */
28
29 /** @file
30 * @brief C++ typeid to GATE typeid bridge
31 * @ingroup gatecore_cpp
32 */
33
34 #ifndef GATE_TYPEIDS_HPP_INCLUDED
35 #define GATE_TYPEIDS_HPP_INCLUDED
36
37 #include "gate/typeids.h"
38 #include "gate/gatetypes.hpp"
39 #include "gate/times.h"
40 #include "gate/guids.h"
41 #include "gate/structs.h"
42 #include "gate/arrays.h"
43 #include "gate/strings.h"
44 #include "gate/objects.h"
45 #include "gate/properties.h"
46 #include "gate/strings.hpp"
47 #include "gate/guids.hpp"
48 #include "gate/times.hpp"
49 //#include "gate/times.hpp"
50 //#include "gate/guids.hpp"
51 //#include "gate/arrays.hpp"
52 //#include "gate/objects.h"
53 //#include "gate/structs.hpp"
54 //#include "gate/properties.hpp"
55
56 namespace gate
57 {
58
59 typedef ::gate_type_id_t type_id_t;
60 typedef ::gate_type_sig_t type_sig_t;
61
62 namespace detail
63 {
64
65 template<class T>
66 struct TypeIdBase
67 {
68 typedef T type_t;
69 static type_id_t value();
70 static type_sig_t sig();
71
72 };
73
74 #define GATE_TYPEIDS_HPP_BASE_GEN(ntype, gtypeid, gtypesig) \
75 template<> struct TypeIdBase< ntype > \
76 { \
77 typedef ntype type_t; \
78 static type_id_t value() { return gtypeid; } \
79 static type_sig_t sig() { return gtypesig; } \
80 }
81
82 GATE_TYPEIDS_HPP_BASE_GEN(void, GATE_TYPE_EMPTY, GATE_TYPESIG_EMPTY);
83 1 GATE_TYPEIDS_HPP_BASE_GEN(bool_t, GATE_TYPE_BOOL, GATE_TYPESIG_BOOL);
84 6 GATE_TYPEIDS_HPP_BASE_GEN(int8_t, GATE_TYPE_I8, GATE_TYPESIG_I8);
85 //GATE_TYPEIDS_HPP_BASE_GEN(uint8_t, GATE_TYPE_UI8, GATE_TYPESIG_UI8);
86 6 GATE_TYPEIDS_HPP_BASE_GEN(int16_t, GATE_TYPE_I16, GATE_TYPESIG_I16);
87 3 GATE_TYPEIDS_HPP_BASE_GEN(uint16_t, GATE_TYPE_UI16, GATE_TYPESIG_UI16);
88 6 GATE_TYPEIDS_HPP_BASE_GEN(int32_t, GATE_TYPE_I32, GATE_TYPESIG_I32);
89 3 GATE_TYPEIDS_HPP_BASE_GEN(uint32_t, GATE_TYPE_UI32, GATE_TYPESIG_UI32);
90 6 GATE_TYPEIDS_HPP_BASE_GEN(int64_t, GATE_TYPE_I64, GATE_TYPESIG_I64);
91 3 GATE_TYPEIDS_HPP_BASE_GEN(uint64_t, GATE_TYPE_UI64, GATE_TYPESIG_UI64);
92 6 GATE_TYPEIDS_HPP_BASE_GEN(real32_t, GATE_TYPE_R32, GATE_TYPESIG_R32);
93 3 GATE_TYPEIDS_HPP_BASE_GEN(real64_t, GATE_TYPE_R64, GATE_TYPESIG_R64);
94 //GATE_TYPEIDS_HPP_BASE_GEN(uintptr_t, GATE_TYPE_ADDRESS, GATE_TYPESIG_ADDR);
95
96 GATE_TYPEIDS_HPP_BASE_GEN(gate_dataptr_t, GATE_TYPE_DATAPTR, GATE_TYPESIG_DATAPTR);
97 GATE_TYPEIDS_HPP_BASE_GEN(gate_funcptr_t, GATE_TYPE_FUNCPTR, GATE_TYPESIG_FUNCPTR);
98 GATE_TYPEIDS_HPP_BASE_GEN(gate_cstr_t, GATE_TYPE_CSTR, GATE_TYPESIG_CSTR);
99 GATE_TYPEIDS_HPP_BASE_GEN(gate_wstr_t, GATE_TYPE_WSTR, GATE_TYPESIG_WSTR);
100 1 GATE_TYPEIDS_HPP_BASE_GEN(gate_guid_t, GATE_TYPE_GUID, GATE_TYPESIG_GUID);
101 1 GATE_TYPEIDS_HPP_BASE_GEN(gate::Guid, GATE_TYPE_GUID, GATE_TYPESIG_GUID);
102 1 GATE_TYPEIDS_HPP_BASE_GEN(gate_date_t, GATE_TYPE_DATE, GATE_TYPESIG_DATE);
103 1 GATE_TYPEIDS_HPP_BASE_GEN(gate::Date, GATE_TYPE_DATE, GATE_TYPESIG_DATE);
104 1 GATE_TYPEIDS_HPP_BASE_GEN(gate_daytime_t, GATE_TYPE_DAYTIME, GATE_TYPESIG_DAYTIME);
105 1 GATE_TYPEIDS_HPP_BASE_GEN(gate::DayTime, GATE_TYPE_DAYTIME, GATE_TYPESIG_DAYTIME);
106 1 GATE_TYPEIDS_HPP_BASE_GEN(gate_datetime_t, GATE_TYPE_DATETIME, GATE_TYPESIG_DATETIME);
107 1 GATE_TYPEIDS_HPP_BASE_GEN(gate::DateTime, GATE_TYPE_DATETIME, GATE_TYPESIG_DATETIME);
108 1 GATE_TYPEIDS_HPP_BASE_GEN(gate::Time, GATE_TYPE_TIME, GATE_TYPESIG_TIME);
109 1 GATE_TYPEIDS_HPP_BASE_GEN(gate_time_t, GATE_TYPE_TIME, GATE_TYPESIG_TIME);
110
111 GATE_TYPEIDS_HPP_BASE_GEN(gate_string_t, GATE_TYPE_STRING, GATE_TYPESIG_STRING);
112 4 GATE_TYPEIDS_HPP_BASE_GEN(gate::String, GATE_TYPE_STRING, GATE_TYPESIG_STRING);
113 GATE_TYPEIDS_HPP_BASE_GEN(gate_array_t, GATE_TYPE_ARRAY, GATE_TYPESIG_ARRAY);
114
115 GATE_TYPEIDS_HPP_BASE_GEN(gate_struct_ptr_t, GATE_TYPE_STRUCT, GATE_TYPESIG_STRUCT);
116 GATE_TYPEIDS_HPP_BASE_GEN(gate_object_ptr_t, GATE_TYPE_OBJECT, GATE_TYPESIG_OBJECT);
117 GATE_TYPEIDS_HPP_BASE_GEN(gate_property_t, GATE_TYPE_PROPERTY, GATE_TYPESIG_PROPERTY);
118
119 } // end of namespace detail
120
121
122 /// @brief
123 /// @tparam T
124 template<class T> struct TypeId : public detail::TypeIdBase<T>
125 {
126
127 };
128
129
130 } // end of namespace gate
131
132 #endif
133