Theolizer  Version.1.2.0
serializer for C++ / Do you want to update your classes easily ?
array.h
[詳解]
1 //############################################################################
2 /*!
3  @brief std::array<>のシリアライズ
4  @ingroup SerializationStl
5  @file array.h
6  @author Yoshinori Tahara(Theoride Technology)
7  @date 2017/02/02 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_ARRAY_H)
38 #define THEOLIZER_INTERNAL_ARRAY_H
39 
40 #ifndef THEOLIZER_INTERNAL_DOXYGEN
41 
42 //############################################################################
43 // Begin
44 //############################################################################
45 
46 #include <array>
47 #include "serializer.h"
48 #include "internal/containers.h"
49 
50 //THEOLIZER_PROVIDED_BY("Theoride Technology");
51 
52 //############################################################################
53 // std::array<>対応
54 //############################################################################
55 
56 // ***************************************************************************
57 // 手動コード展開
58 // ***************************************************************************
59 
60 #define THEOLZIER_INTERNAL_CONTAINER_PARAMETER template<class T, std::size_t N>
61 #define THEOLZIER_INTERNAL_CONTAINER_NAME std::array
62 #define THEOLZIER_INTERNAL_CONTAINER_ARGUMENT T, N
63 #define THEOLZIER_INTERNAL_CONTAINER_UNIQUE arrayTheolizer
64 #include "internal/container_fixed.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::array<T, N>)
74 #define THEOLIZER_GENERATED_PARAMETER_LIST template<class T, std::size_t N>
75 #define THEOLIZER_GENERATED_UNIQUE_NAME arrayTheolizer
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::array",T,\
82  theolizer::internal::NonType<std::size_t,N>))
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::ArrayPointee<>)
101 //############################################################################
102 
103 // ***************************************************************************
104 // theolizer::ArrayPointee<>
105 // std::array<>の単純な派生クラス
106 // 要素をPointeeとして処理する
107 // ***************************************************************************
108 
109 namespace theolizer
110 {
111 
112 template<class T, std::size_t N>
113 class THEOLIZER_ANNOTATE(CS) ArrayPointee : public std::array<T, N>
114 {
115 public:
116  using std::array<T, N>::array;
117 };
118 
119 } // namespace theolizer
120 
121 // ***************************************************************************
122 // 手動コード展開
123 // ***************************************************************************
124 
125 #define THEOLZIER_INTERNAL_CONTAINER_PARAMETER template<class T, std::size_t N>
126 #define THEOLZIER_INTERNAL_CONTAINER_NAME theolizer::ArrayPointee
127 #define THEOLZIER_INTERNAL_CONTAINER_ARGUMENT T, N
128 #define THEOLZIER_INTERNAL_CONTAINER_UNIQUE ArrayPointeeTheolizer
129 #define THEOLIZER_INTERNAL_POINTEE
130 #include "internal/container_fixed.inc"
131 #undef THEOLIZER_INTERNAL_POINTEE
132 
133 // ***************************************************************************
134 // 自動生成コード
135 // ***************************************************************************
136 
137 #ifdef THEOLIZER_WRITE_CODE
138 
139 #define THEOLIZER_GENERATED_LAST_VERSION_NO THEOLIZER_INTERNAL_DEFINE(kLastVersionNo,1)
140 #define THEOLIZER_GENERATED_CLASS_TYPE THEOLIZER_INTERNAL_UNPAREN(theolizer::ArrayPointee<T, N>)
141 #define THEOLIZER_GENERATED_PARAMETER_LIST template<class T, std::size_t N>
142 #define THEOLIZER_GENERATED_UNIQUE_NAME ArrayPointeeTheolizer
143 
144 // ---<<< Version.1 >>>---
145 
146 #define THEOLIZER_GENERATED_VERSION_NO THEOLIZER_INTERNAL_DEFINE(kVersionNo,1)
147 #define THEOLIZER_GENERATED_CLASS_NAME()\
148  THEOLIZER_INTERNAL_TEMPLATE_NAME((u8"theolizer::ArrayPointee",T,\
149  theolizer::internal::NonType<std::size_t,N>))
150 #include <theolizer/internal/version_manual.inc>
151 #undef THEOLIZER_GENERATED_VERSION_NO
152 
153 #endif//THEOLIZER_WRITE_CODE
154 
155 // ***************************************************************************
156 // 定義したマクロの解放
157 // ***************************************************************************
158 
159 #undef THEOLZIER_INTERNAL_CONTAINER_PARAMETER
160 #undef THEOLZIER_INTERNAL_CONTAINER_NAME
161 #undef THEOLZIER_INTERNAL_CONTAINER_ARGUMENT
162 #undef THEOLZIER_INTERNAL_CONTAINER_UNIQUE
163 
164 #undef THEOLIZER_INTERNAL_FULL_NAME
165 
166 //############################################################################
167 // End
168 //############################################################################
169 
170 #endif // THEOLIZER_INTERNAL_DOXYGEN
171 
172 #endif // THEOLIZER_INTERNAL_ARRAY_H
Theolizerライブラリの標準コンテナ・サポート
theolizer名前空間
Definition: base.h:53
TheolizerライブラリのAPI部