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
containers.h
Theolizerライブラリの標準コンテナ・サポート
theolizer
theolizer名前空間
Definition:
base.h:53
serializer.h
TheolizerライブラリのAPI部
Theolizer
source
library
theolizer
array.h
© 2016
Theoride Technology
All Rights Reserved. "Theolizer" is a registered trademark of Theoride Technology.
構築:
1.8.12