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