Theolizer  Version.1.2.0
serializer for C++ / Do you want to update your classes easily ?
vector.h
[詳解]
1 //############################################################################
2 /*!
3  @brief std::vector<>のシリアライズ
4  @ingroup SerializationStl
5  @file vector.h
6  @author Yoshinori Tahara(Theoride Technology)
7  @date 2016/08/30 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_VECTOR_H)
38 #define THEOLIZER_INTERNAL_VECTOR_H
39 
40 #ifndef THEOLIZER_INTERNAL_DOXYGEN
41 
42 //############################################################################
43 // Begin
44 //############################################################################
45 
46 #include <vector>
47 #include "serializer.h"
48 #include "internal/containers.h"
49 
50 THEOLIZER_PROVIDED_BY("Theoride Technology");
51 
52 //############################################################################
53 // std::vector<>対応
54 //############################################################################
55 
56 // ***************************************************************************
57 // 手動コード展開
58 // ***************************************************************************
59 
60 #define THEOLZIER_INTERNAL_CONTAINER_PARAMETER template<class T, class Alloc>
61 #define THEOLZIER_INTERNAL_CONTAINER_NAME std::vector
62 #define THEOLZIER_INTERNAL_CONTAINER_ARGUMENT T, Alloc
63 #define THEOLZIER_INTERNAL_CONTAINER_UNIQUE vectorTheolizer
64 #define THEOLIZER_INTERNAL_IS_VECTOR
65 #include "internal/container_no_key.inc"
66 #undef THEOLIZER_INTERNAL_IS_VECTOR
67 
68 // ***************************************************************************
69 // 自動生成コード
70 // ***************************************************************************
71 
72 #ifdef THEOLIZER_WRITE_CODE
73 
74 #define THEOLIZER_GENERATED_LAST_VERSION_NO THEOLIZER_INTERNAL_DEFINE(kLastVersionNo,1)
75 #define THEOLIZER_GENERATED_CLASS_TYPE THEOLIZER_INTERNAL_UNPAREN(std::vector<T, Alloc>)
76 #define THEOLIZER_GENERATED_PARAMETER_LIST template<class T, class Alloc>
77 #define THEOLIZER_GENERATED_UNIQUE_NAME vectorTheolizer
78 
79 // ---<<< Version.1 >>>---
80 
81 #define THEOLIZER_GENERATED_VERSION_NO THEOLIZER_INTERNAL_DEFINE(kVersionNo,1)
82 #define THEOLIZER_GENERATED_CLASS_NAME()\
83  THEOLIZER_INTERNAL_TEMPLATE_NAME((u8"std::vector",T,Alloc))
84 #include <theolizer/internal/version_manual.inc>
85 #undef THEOLIZER_GENERATED_VERSION_NO
86 
87 #endif//THEOLIZER_WRITE_CODE
88 
89 // ***************************************************************************
90 // 定義したマクロの解放
91 // ***************************************************************************
92 
93 #undef THEOLZIER_INTERNAL_CONTAINER_PARAMETER
94 #undef THEOLZIER_INTERNAL_CONTAINER_NAME
95 #undef THEOLZIER_INTERNAL_CONTAINER_ARGUMENT
96 #undef THEOLZIER_INTERNAL_CONTAINER_UNIQUE
97 
98 #undef THEOLIZER_INTERNAL_FULL_NAME
99 #undef THEOLIZER_INTERNAL_FULL_NAME_POINTEE
100 
101 //############################################################################
102 // 被ポインタ用(theolizer::VectorPointee<>)
103 //############################################################################
104 
105 // ***************************************************************************
106 // theolizer::VectorPointee<>
107 // std::vector<>の単純な派生クラス
108 // 要素をPointeeとして処理する
109 // ***************************************************************************
110 
111 namespace theolizer
112 {
113 
114 template<class T, class Alloc=std::allocator<T> >
115 class THEOLIZER_ANNOTATE(CS) VectorPointee : public std::vector<T, Alloc>
116 {
117 public:
118  using std::vector<T, Alloc>::vector;
119 };
120 
121 } // namespace theolizer
122 
123 // ***************************************************************************
124 // 手動コード展開
125 // ***************************************************************************
126 
127 #define THEOLZIER_INTERNAL_CONTAINER_PARAMETER template<class T, class Alloc>
128 #define THEOLZIER_INTERNAL_CONTAINER_NAME theolizer::VectorPointee
129 #define THEOLZIER_INTERNAL_CONTAINER_ARGUMENT T, Alloc
130 #define THEOLZIER_INTERNAL_CONTAINER_UNIQUE VectorPointeeTheolizer
131 #define THEOLIZER_INTERNAL_IS_VECTOR
132 #define THEOLIZER_INTERNAL_POINTEE
133 #include "internal/container_no_key.inc"
134 #undef THEOLIZER_INTERNAL_POINTEE
135 #undef THEOLIZER_INTERNAL_IS_VECTOR
136 
137 // ***************************************************************************
138 // 自動生成コード
139 // ***************************************************************************
140 
141 #ifdef THEOLIZER_WRITE_CODE
142 
143 #define THEOLIZER_GENERATED_LAST_VERSION_NO THEOLIZER_INTERNAL_DEFINE(kLastVersionNo,1)
144 #define THEOLIZER_GENERATED_CLASS_TYPE THEOLIZER_INTERNAL_UNPAREN(theolizer::VectorPointee<T, Alloc>)
145 #define THEOLIZER_GENERATED_PARAMETER_LIST template<class T, class Alloc>
146 #define THEOLIZER_GENERATED_UNIQUE_NAME VectorPointeeTheolizer
147 
148 // ---<<< Version.1 >>>---
149 
150 #define THEOLIZER_GENERATED_VERSION_NO THEOLIZER_INTERNAL_DEFINE(kVersionNo,1)
151 #define THEOLIZER_GENERATED_CLASS_NAME()\
152  THEOLIZER_INTERNAL_TEMPLATE_NAME((u8"theolizer::VectorPointee",T,Alloc))
153 #include <theolizer/internal/version_manual.inc>
154 #undef THEOLIZER_GENERATED_VERSION_NO
155 
156 #endif//THEOLIZER_WRITE_CODE
157 
158 // ***************************************************************************
159 // 定義したマクロの解放
160 // ***************************************************************************
161 
162 #undef THEOLZIER_INTERNAL_CONTAINER_PARAMETER
163 #undef THEOLZIER_INTERNAL_CONTAINER_NAME
164 #undef THEOLZIER_INTERNAL_CONTAINER_ARGUMENT
165 #undef THEOLZIER_INTERNAL_CONTAINER_UNIQUE
166 
167 #undef THEOLIZER_INTERNAL_FULL_NAME
168 #undef THEOLIZER_INTERNAL_FULL_NAME_POINTEE
169 
170 //############################################################################
171 // End
172 //############################################################################
173 
174 #endif // THEOLIZER_INTERNAL_DOXYGEN
175 
176 #endif // THEOLIZER_INTERNAL_VECTOR_H
Theolizerライブラリの標準コンテナ・サポート
theolizer名前空間
Definition: base.h:53
#define THEOLIZER_PROVIDED_BY(dVendor)
ソース自動生成制御
TheolizerライブラリのAPI部