GCC Code Coverage Report


Directory: src/gate/
File: src/gate/typeids.hpp
Date: 2025-09-14 13:10:38
Exec Total Coverage
Lines: 11 11 100.0%
Functions: 11 11 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/times.hpp"
48 //#include "gate/guids.hpp"
49 //#include "gate/arrays.hpp"
50 //#include "gate/objects.h"
51 //#include "gate/structs.hpp"
52 //#include "gate/properties.hpp"
53
54 namespace gate
55 {
56
57 typedef ::gate_type_id_t type_id_t;
58 typedef ::gate_type_sig_t type_sig_t;
59
60 namespace detail
61 {
62
63 template<class T>
64 struct TypeIdBase
65 {
66 typedef T type_t;
67 static type_id_t value();
68 static type_sig_t sig();
69
70 };
71
72 #define GATE_TYPEIDS_HPP_BASE_GEN(ntype, gtypeid, gtypesig) \
73 template<> struct TypeIdBase< ntype > \
74 { \
75 typedef ntype type_t; \
76 static type_id_t value() { return gtypeid; } \
77 static type_sig_t sig() { return gtypesig; } \
78 }
79
80 GATE_TYPEIDS_HPP_BASE_GEN(void, GATE_TYPE_EMPTY, GATE_TYPESIG_EMPTY);
81 1 GATE_TYPEIDS_HPP_BASE_GEN(bool_t, GATE_TYPE_BOOL, GATE_TYPESIG_BOOL);
82 4 GATE_TYPEIDS_HPP_BASE_GEN(int8_t, GATE_TYPE_I8, GATE_TYPESIG_I8);
83 //GATE_TYPEIDS_HPP_BASE_GEN(uint8_t, GATE_TYPE_UI8, GATE_TYPESIG_UI8);
84 4 GATE_TYPEIDS_HPP_BASE_GEN(int16_t, GATE_TYPE_I16, GATE_TYPESIG_I16);
85 1 GATE_TYPEIDS_HPP_BASE_GEN(uint16_t, GATE_TYPE_UI16, GATE_TYPESIG_UI16);
86 4 GATE_TYPEIDS_HPP_BASE_GEN(int32_t, GATE_TYPE_I32, GATE_TYPESIG_I32);
87 1 GATE_TYPEIDS_HPP_BASE_GEN(uint32_t, GATE_TYPE_UI32, GATE_TYPESIG_UI32);
88 4 GATE_TYPEIDS_HPP_BASE_GEN(int64_t, GATE_TYPE_I64, GATE_TYPESIG_I64);
89 1 GATE_TYPEIDS_HPP_BASE_GEN(uint64_t, GATE_TYPE_UI64, GATE_TYPESIG_UI64);
90 4 GATE_TYPEIDS_HPP_BASE_GEN(real32_t, GATE_TYPE_R32, GATE_TYPESIG_R32);
91 1 GATE_TYPEIDS_HPP_BASE_GEN(real64_t, GATE_TYPE_R64, GATE_TYPESIG_R64);
92 //GATE_TYPEIDS_HPP_BASE_GEN(uintptr_t, GATE_TYPE_ADDRESS, GATE_TYPESIG_ADDR);
93
94 GATE_TYPEIDS_HPP_BASE_GEN(gate_dataptr_t, GATE_TYPE_DATAPTR, GATE_TYPESIG_DATAPTR);
95 GATE_TYPEIDS_HPP_BASE_GEN(gate_funcptr_t, GATE_TYPE_FUNCPTR, GATE_TYPESIG_FUNCPTR);
96 GATE_TYPEIDS_HPP_BASE_GEN(gate_cstr_t, GATE_TYPE_CSTR, GATE_TYPESIG_CSTR);
97 GATE_TYPEIDS_HPP_BASE_GEN(gate_wstr_t, GATE_TYPE_WSTR, GATE_TYPESIG_WSTR);
98 GATE_TYPEIDS_HPP_BASE_GEN(gate_guid_t, GATE_TYPE_GUID, GATE_TYPESIG_GUID);
99 GATE_TYPEIDS_HPP_BASE_GEN(gate_date_t, GATE_TYPE_DATE, GATE_TYPESIG_DATE);
100 GATE_TYPEIDS_HPP_BASE_GEN(gate_daytime_t, GATE_TYPE_DAYTIME, GATE_TYPESIG_DAYTIME);
101 GATE_TYPEIDS_HPP_BASE_GEN(gate_datetime_t, GATE_TYPE_DATETIME, GATE_TYPESIG_DATETIME);
102 GATE_TYPEIDS_HPP_BASE_GEN(gate_time_t, GATE_TYPE_TIME, GATE_TYPESIG_TIME);
103
104 GATE_TYPEIDS_HPP_BASE_GEN(gate_string_t, GATE_TYPE_STRING, GATE_TYPESIG_STRING);
105 3 GATE_TYPEIDS_HPP_BASE_GEN(gate::String, GATE_TYPE_STRING, GATE_TYPESIG_STRING);
106 GATE_TYPEIDS_HPP_BASE_GEN(gate_array_t, GATE_TYPE_ARRAY, GATE_TYPESIG_ARRAY);
107
108 GATE_TYPEIDS_HPP_BASE_GEN(gate_struct_ptr_t, GATE_TYPE_STRUCT, GATE_TYPESIG_STRUCT);
109 GATE_TYPEIDS_HPP_BASE_GEN(gate_object_ptr_t, GATE_TYPE_OBJECT, GATE_TYPESIG_OBJECT);
110 GATE_TYPEIDS_HPP_BASE_GEN(gate_property_t, GATE_TYPE_PROPERTY, GATE_TYPESIG_PROPERTY);
111
112 } // end of namespace detail
113
114
115 /// @brief
116 /// @tparam T
117 template<class T> struct TypeId : public detail::TypeIdBase<T>
118 {
119
120 };
121
122
123 } // end of namespace gate
124
125 #endif
126