Theolizer  Version.1.2.0
serializer for C++ / Do you want to update your classes easily ?
7.usage_individual.h
[詳解]
1 //############################################################################
2 /*!
3  @brief ドキュメント・ファイル-使用方法(個別)
4  @ingroup Documents
5  @file 7.usage_individual.h
6  @author Yoshinori Tahara
7  @date 2016/11/12 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 /*!
38 
39 @page UsageIndividual 使用方法(個別)
40 
41 ここでは、Theolizerの以下の各機能について説明します。
42 
43 @subpage BasicProcess \n
44 @subpage ClassVariation \n
45 @subpage EnumVariation \n
46 @subpage ObjectTracking \n
47 @subpage Destinations \n
48 @subpage SupportSTL \n
49 @subpage ChangingEnum \n
50 @subpage ChangingClass \n
51 @subpage ErrorReport \n
52 
53 */
54 
55 /*!
56  @page BasicProcess THEOLIZER_PROCESS()の使用方法
57 
58 ここでは、THEOLIZER_PROCESS()による保存/回復の網羅的な使用例(自動テスト)について説明します。<br>
59 クラスは単純なものを使います。クラスの詳細な使い方は@ref ClassVariation で説明します。<br>
60 ここではポインタ型とオーナー・ポインタ型の説明と自動テストは行いません。これらについては@ref ObjectTracking で行います。<br>
61 
62 <br>
63 //############################################################################
64 @section DefinitionEnumClass 1.クラスとenum型の定義
65 //############################################################################
66 
67 <b>source/reference_and_test/basic/test_basic_process.h</b> で、次のようなクラスとenum型を定義しています。
68 
69 enum型は従来のenum型と、C++11で追加されたscoped enum型の2つをテストします。
70 
71 @dontinclude test_basic_process.h
72 @skip NormalEnum
73 @until };
74 @until };
75 
76 クラス型はテストを容易にするため、非侵入型完全自動を用いています。<br>
77 同様にメンバ変数をpublicにしたいのでstructを用いています。<br>
78 (幾つか制約事項があります。@ref ClassVariation にて説明します。)<br>
79 また、自動テストの記述を簡単化するため、下記を定義しています。
80  - 初期化用のコンストラクタ
81  - 比較演算子(operator==)
82  - std::ostreamへのフレンド出力演算子(operator<<)
83 
84 @skip struct ClassBasicTest
85 @until };
86 
87 <br>
88 //############################################################################
89 @section TestBasicProcess 2.網羅的な使用例(自動テスト)の説明
90 //############################################################################
91 以下のアイテムを保存し、回復して保存した値と同じ値が回復できたことを、全てのシリアライザの全ての書式指定オプションに対して確認しています。(@ref TestProgram 参照)
92 
93  - C++言語がサポートする基本型全て<br>
94  char, signed char, unsigned char, wchar_t, u16char, u32char,<br>
95  short, int, long, long long,<br>
96  unsigned short, unsigned int, unsigned long, unsigned long long,<br>
97  float, double, long double<br>
98 <br>
99 
100  - C++11規格にて定義されている文字列型全て<br>
101  std::string, std::wstring, std::u16string, std::u32string<br>
102  C言語文字列(例:"foo")はchar型変数の配列として保存されます。<br>
103 
104  <b>1バイト文字列リテラルは要注意事項があります。</b><br>
105  Visual Studioの1バイト文字列リテラルはShift-JIS等のNarrow文字列です。UTF-8ではありません。<br>
106  Theolizerは1バイト文字列はUTF-8として取り扱いますので、u8"foo"のように必ずu8プリフィクスを付けて下さい。<br>
107 
108  - enum型<br>
109  従来のenum型、scoped enum型<br>
110 <br>
111 
112  - クラス型<br>
113  ここでは使い方を示すための1種類のみ。細かいテストは@ref ClassVariation にて実施します。<br>
114 <br>
115 
116  - 右辺値(リテラルや式)が保存でき、同じ型の変数へ回復できること<br>
117  int, long, long long,<br>
118  unsigned int, unsigned long, unsigned long long,<br>
119  float, double, long double,<br>
120  std::string, std::wstring, std::u16string, std::u32string<br>
121 <br>
122 
123  - 配列
124  上記全ての型に対する1次元、2次元、3次元配列についてテストします。
125  saveTestArray(), loadTestArray()と言う関数テンプレトを使っています。
126  型と最下位次元の要素数を指定すると、その型の1次元、2次元、3次元配列を生成して保存し、回復後の値をチェックします。
127  設定する値とチェックする値は、それぞれの関数呼び出し時にラムダ式で与えています。
128 
129 <b>保存処理(source/reference_and_test/basic/test_basic_process.cpp)</b><br>
130 @snippet basic/test_basic_process.cpp saveBasicProcess
131 
132 <b>多次元配列の保存処理(source/reference_and_test/basic/common.h)</b><br>
133 @snippet basic/common.h saveTestArray
134 
135 <b>回復処理(source/reference_and_test/basic/test_basic_process.cpp)</b><br>
136 @snippet basic/test_basic_process.cpp loadBasicProcess
137 
138 <b>多次元配列の回復処理(source/reference_and_test/basic/common.h)</b><br>
139 @snippet basic/common.h loadTestArray
140 
141 */