Theolizer  Version.1.2.0
serializer for C++ / Do you want to update your classes easily ?
map.h
[詳解]
1 //############################################################################
2 /*!
3  @brief std::map<>のシリアライズ
4  @ingroup SerializationStl
5  @file map.h
6  @author Yoshinori Tahara(Theoride Technology)
7  @date 2017/02/06 Created
8 */
9 /*
10  © 2016 Theoride Technology (http://theolizer.com/) All Rights Reserved.
11  "Theolizer" is a registered trademark of Theoride Technology.
12 
13  "Theolizer" License
14  In the case where you are in possession of a valid “Theolizer” License,
15  you may use this file in accordance with the terms and conditions of
16  the use license determined by Theoride Technology.
17 
18  General Public License Version 3 ("GPLv3")
19  You may use this file in accordance with the terms and conditions of
20  GPLv3 published by Free Software Foundation.
21  Please confirm the contents of GPLv3 at https://www.gnu.org/licenses/gpl.txt .
22  A copy of GPLv3 is also saved in a LICENSE.TXT file.
23 
24  商用ライセンス
25  あなたが有効なTheolizer商用ライセンスを保持している場合、
26  セオライド テクノロジーの定める使用許諾書の条件に従って、
27  このファイルを取り扱うことができます。
28 
29  General Public License Version 3(以下GPLv3)
30  Free Software Foundationが公表するGPLv3の使用条件に従って、
31  あなたはこのファイルを取り扱うことができます。
32  GPLv3の内容を https://www.gnu.org/licenses/gpl.txt にて確認して下さい。
33  またGPLv3のコピーをLICENSE.TXTファイルにおいてます。
34 */
35 //############################################################################
36 
37 #if !defined(THEOLIZER_INTERNAL_MAP_H)
38 #define THEOLIZER_INTERNAL_MAP_H
39 
40 #ifndef THEOLIZER_INTERNAL_DOXYGEN
41 
42 //############################################################################
43 // Begin
44 //############################################################################
45 
46 #include <map>
47 #include "serializer.h"
48 #include "internal/containers.h"
49 
50 THEOLIZER_PROVIDED_BY("Theoride Technology");
51 
52 //############################################################################
53 // std::map<>対応
54 //############################################################################
55 
56 // ***************************************************************************
57 // 手動コード展開
58 // ***************************************************************************
59 
60 #define THEOLZIER_INTERNAL_CONTAINER_PARAMETER \
61  template<class Key, class T, class Compare, class Alloc>
62 #define THEOLZIER_INTERNAL_CONTAINER_NAME std::map
63 #define THEOLZIER_INTERNAL_CONTAINER_ARGUMENT Key, T, Compare, Alloc
64 #define THEOLZIER_INTERNAL_CONTAINER_UNIQUE mapTheolizer
65 #include "internal/container_map.inc"
66 
67 // ***************************************************************************
68 // 自動生成コード
69 // ***************************************************************************
70 
71 #ifdef THEOLIZER_WRITE_CODE
72 
73 #define THEOLIZER_GENERATED_LAST_VERSION_NO THEOLIZER_INTERNAL_DEFINE(kLastVersionNo,1)
74 #define THEOLIZER_GENERATED_CLASS_TYPE THEOLIZER_INTERNAL_UNPAREN(std::map<Key, T, Compare, Alloc>)
75 #define THEOLIZER_GENERATED_PARAMETER_LIST template<class Key, class T, class Compare, class Alloc>
76 #define THEOLIZER_GENERATED_UNIQUE_NAME mapTheolizer
77 
78 // ---<<< Version.1 >>>---
79 
80 #define THEOLIZER_GENERATED_VERSION_NO THEOLIZER_INTERNAL_DEFINE(kVersionNo,1)
81 #define THEOLIZER_GENERATED_CLASS_NAME()\
82  THEOLIZER_INTERNAL_TEMPLATE_NAME((u8"std::map",Key,T,Compare,Alloc))
83 #include <theolizer/internal/version_manual.inc>
84 #undef THEOLIZER_GENERATED_VERSION_NO
85 
86 #endif//THEOLIZER_WRITE_CODE
87 
88 // ***************************************************************************
89 // 定義したマクロの解放
90 // ***************************************************************************
91 
92 #undef THEOLZIER_INTERNAL_CONTAINER_PARAMETER
93 #undef THEOLZIER_INTERNAL_CONTAINER_NAME
94 #undef THEOLZIER_INTERNAL_CONTAINER_ARGUMENT
95 #undef THEOLZIER_INTERNAL_CONTAINER_UNIQUE
96 
97 #undef THEOLIZER_INTERNAL_FULL_NAME
98 
99 //############################################################################
100 // 被ポインタ用(theolizer::MapPointee<>)
101 //############################################################################
102 
103 // ***************************************************************************
104 // theolizer::MapPointee<>
105 // std::map<>の単純な派生クラス
106 // 要素をPointeeとして処理する
107 // ***************************************************************************
108 
109 namespace theolizer
110 {
111 
112 template
113 <
114  class Key,
115  class T,
116  class Compare=std::less<Key>,
117  class Alloc=std::allocator<std::pair<const Key,T> >
118 >
119 class THEOLIZER_ANNOTATE(CS) MapPointee : public std::map<Key, T, Compare, Alloc>
120 {
121 public:
122  using std::map<Key, T, Compare, Alloc>::map;
123 };
124 
125 } // namespace theolizer
126 
127 // ***************************************************************************
128 // 手動コード展開
129 // ***************************************************************************
130 
131 #define THEOLZIER_INTERNAL_CONTAINER_PARAMETER \
132  template<class Key, class T, class Compare, class Alloc>
133 #define THEOLZIER_INTERNAL_CONTAINER_NAME theolizer::MapPointee
134 #define THEOLZIER_INTERNAL_CONTAINER_ARGUMENT Key, T, Compare, Alloc
135 #define THEOLZIER_INTERNAL_CONTAINER_UNIQUE MapPointeeTheolizer
136 #define THEOLIZER_INTERNAL_POINTEE
137 #include "internal/container_map.inc"
138 #undef THEOLIZER_INTERNAL_POINTEE
139 
140 // ***************************************************************************
141 // 自動生成コード
142 // ***************************************************************************
143 
144 #ifdef THEOLIZER_WRITE_CODE
145 
146 #define THEOLIZER_GENERATED_LAST_VERSION_NO THEOLIZER_INTERNAL_DEFINE(kLastVersionNo,1)
147 #define THEOLIZER_GENERATED_CLASS_TYPE THEOLIZER_INTERNAL_UNPAREN(theolizer::MapPointee<Key, T, Compare, Alloc>)
148 #define THEOLIZER_GENERATED_PARAMETER_LIST template<class Key, class T, class Compare, class Alloc>
149 #define THEOLIZER_GENERATED_UNIQUE_NAME MapPointeeTheolizer
150 
151 // ---<<< Version.1 >>>---
152 
153 #define THEOLIZER_GENERATED_VERSION_NO THEOLIZER_INTERNAL_DEFINE(kVersionNo,1)
154 #define THEOLIZER_GENERATED_CLASS_NAME()\
155  THEOLIZER_INTERNAL_TEMPLATE_NAME((u8"theolizer::MapPointee",Key,T,Compare,Alloc))
156 #include <theolizer/internal/version_manual.inc>
157 #undef THEOLIZER_GENERATED_VERSION_NO
158 
159 #endif//THEOLIZER_WRITE_CODE
160 
161 // ***************************************************************************
162 // 定義したマクロの解放
163 // ***************************************************************************
164 
165 #undef THEOLZIER_INTERNAL_CONTAINER_PARAMETER
166 #undef THEOLZIER_INTERNAL_CONTAINER_NAME
167 #undef THEOLZIER_INTERNAL_CONTAINER_ARGUMENT
168 #undef THEOLZIER_INTERNAL_CONTAINER_UNIQUE
169 
170 #undef THEOLIZER_INTERNAL_FULL_NAME
171 
172 //############################################################################
173 // std::multimap<>対応
174 //############################################################################
175 
176 // ***************************************************************************
177 // 手動コード展開
178 // ***************************************************************************
179 
180 #define THEOLZIER_INTERNAL_CONTAINER_PARAMETER \
181  template<class Key, class T, class Compare, class Alloc>
182 #define THEOLZIER_INTERNAL_CONTAINER_NAME std::multimap
183 #define THEOLZIER_INTERNAL_CONTAINER_ARGUMENT Key, T, Compare, Alloc
184 #define THEOLZIER_INTERNAL_CONTAINER_UNIQUE multimapTheolizer
185 #define THEOLIZER_INTERNAL_IS_MULTI
186 #include "internal/container_map.inc"
187 #undef THEOLIZER_INTERNAL_IS_MULTI
188 
189 // ***************************************************************************
190 // 自動生成コードの雛形
191 // ***************************************************************************
192 
193 //----------------------------------------------------------------------------
194 // 通常用
195 //----------------------------------------------------------------------------
196 
197 #ifdef THEOLIZER_WRITE_CODE
198 
199 #define THEOLIZER_GENERATED_LAST_VERSION_NO THEOLIZER_INTERNAL_DEFINE(kLastVersionNo,1)
200 #define THEOLIZER_GENERATED_CLASS_TYPE THEOLIZER_INTERNAL_UNPAREN(std::multimap<Key, T, Compare, Alloc>)
201 #define THEOLIZER_GENERATED_PARAMETER_LIST template<class Key, class T, class Compare, class Alloc>
202 #define THEOLIZER_GENERATED_UNIQUE_NAME multimapTheolizer
203 
204 // ---<<< Version.1 >>>---
205 
206 #define THEOLIZER_GENERATED_VERSION_NO THEOLIZER_INTERNAL_DEFINE(kVersionNo,1)
207 #define THEOLIZER_GENERATED_CLASS_NAME()\
208  THEOLIZER_INTERNAL_TEMPLATE_NAME((u8"std::multimap",Key,T,Compare,Alloc))
209 #include <theolizer/internal/version_manual.inc>
210 #undef THEOLIZER_GENERATED_VERSION_NO
211 
212 #endif//THEOLIZER_WRITE_CODE
213 
214 // ***************************************************************************
215 // 定義したマクロの解放
216 // ***************************************************************************
217 
218 #undef THEOLZIER_INTERNAL_CONTAINER_PARAMETER
219 #undef THEOLZIER_INTERNAL_CONTAINER_NAME
220 #undef THEOLZIER_INTERNAL_CONTAINER_ARGUMENT
221 #undef THEOLZIER_INTERNAL_CONTAINER_UNIQUE
222 
223 #undef THEOLIZER_INTERNAL_FULL_NAME
224 
225 //############################################################################
226 // End
227 //############################################################################
228 
229 #endif // THEOLIZER_INTERNAL_DOXYGEN
230 
231 #endif // THEOLIZER_INTERNAL_MAP_H
Theolizerライブラリの標準コンテナ・サポート
theolizer名前空間
Definition: base.h:53
#define THEOLIZER_PROVIDED_BY(dVendor)
ソース自動生成制御
TheolizerライブラリのAPI部