Solution46
CJsonToken.h
[詳解]
1 //=============================================================================
2 /// @file
3 /// JSONトークンクラスヘッダファイル
4 ///
5 /// JSONトークンクラスヘッダファイルです。
6 ///
7 /// $Id: CJsonToken.h 245 2019-03-20 15:03:41Z admin $
8 /// $Date: 2019-03-21 00:03:41 +0900 (2019/03/21 (木)) $
9 /// $Author: admin $
10 ///
11 /// @attention なし
12 
13 #pragma once
14 #pragma managed( push, off )
15 
16 //=============================================================================
17 // インクルードファイル
18 #include <CJsonValue.h>
19 #include <CStringStream.h>
20 #include <CArray.h>
21 
22 //=============================================================================
23 // JSONライブラリ名前空間
24 namespace LibJson {
25  //=========================================================================
26  /// JSONトークンクラス
27  ///
28  /// JSONトークンクラスです。
29  ///
30  /// @attention なし
31  ///
33  //=====================================================================
34  // 構築子と解体子
35  public:
36  //---------------------------------------------------------------------
37  /// コンストラクタ
38  ///
39  /// コンストラクタです。
40  ///
41  /// @param[in] pcParent 親JSONクラスポインタ
42  /// @param[in] pszString 文字列ポインタ
43  /// @return なし
44  /// @attention なし
45  ///
46  explicit CJsonToken( CJson* pcParent, wchar_t const* pszString = nullptr ) noexcept;
47 
48  //---------------------------------------------------------------------
49  /// デストラクタ
50  ///
51  /// デストラクタです。
52  ///
53  /// @param なし
54  /// @return なし
55  /// @attention なし
56  ///
57  virtual ~CJsonToken() noexcept;
58 
59  //=====================================================================
60  // インライン公開関数
61  public:
62  //---------------------------------------------------------------------
63  /// JSONクラス種別取得関数
64  ///
65  /// JSONクラス種別取得関数です。
66  ///
67  /// @param なし
68  /// @return JSONクラス種別
69  /// @attention オーバライド関数です。
70  ///
71  inline virtual EJsonClass GetJsonClass() noexcept override { return EJsonClass::JsonToken; }
72 
73  //---------------------------------------------------------------------
74  /// JSONクラス種別判定関数
75  ///
76  /// JSONクラス種別判定関数です。
77  ///
78  /// @param なし
79  /// @return 実行結果
80  /// - true 成功
81  /// - false 失敗
82  /// @attention オーバライド関数です。
83  ///
84  inline virtual bool IsJsonToken() noexcept override { return true; }
85 
86  //---------------------------------------------------------------------
87  /// JSONクラスインスタンス取得関数
88  ///
89  /// JSONクラスインスタンス取得関数です。
90  ///
91  /// @param なし
92  /// @return JSONクラスインスタンスポインタ
93  /// @attention オーバライド関数です。
94  ///
95  inline virtual CJsonToken* GetJsonToken() noexcept override { return this; }
96 
97  //=====================================================================
98  // 公開関数
99  public:
100  //---------------------------------------------------------------------
101  /// JSONクラスクリア関数
102  ///
103  /// JSONクラスクリア関数です。
104  ///
105  /// @param なし
106  /// @return なし
107  /// @attention オーバライド関数です。
108  ///
109  virtual void ClearJson() noexcept override;
110 
111  //---------------------------------------------------------------------
112  /// JSONクラスコンパクト化関数
113  ///
114  /// JSONクラスコンパクト化関数です。
115  ///
116  /// @param なし
117  /// @return 実行結果
118  /// - true 成功
119  /// - false 失敗
120  /// @attention オーバライド関数です。
121  ///
122  virtual bool CompactJson() noexcept override;
123 
124  //---------------------------------------------------------------------
125  /// JSONクラス出力関数
126  ///
127  /// JSONクラス出力関数です。
128  ///
129  /// @param[in] rcStreamOut 出力ストリーム参照
130  /// @return 実行結果
131  /// - true 成功
132  /// - false 失敗
133  /// @attention オーバライド関数です。
134  ///
135  virtual bool OutputJson( CStreamOut& rcStreamOut ) noexcept override;
136 
137  //---------------------------------------------------------------------
138  /// JSON文字集合入力関数
139  ///
140  /// JSON文字集合入力関数です。
141  ///
142  /// @param[in] rcStream 入力ストリーム参照
143  /// @param[in] pszNgChars 入力禁止文字列
144  /// @return 実行結果
145  /// - true 成功
146  /// - false 失敗
147  /// @attention なし
148  ///
149  virtual bool InputJsonChars( CStream& rcStream, wchar_t const* pszNgChars = nullptr ) noexcept;
150 
151  //---------------------------------------------------------------------
152  /// JSON文字入力関数
153  ///
154  /// JSON文字入力関数です。
155  ///
156  /// @param[in] rcStream 入力ストリーム参照
157  /// @return 実行結果
158  /// - true 成功
159  /// - false 失敗
160  /// @attention なし
161  ///
162  virtual bool InputJsonChar( CStream& rcStream, wchar_t const* pszNgChars = nullptr ) noexcept;
163 
164  //---------------------------------------------------------------------
165  /// JSON整数部入力関数
166  ///
167  /// JSON整数部入力関数です。
168  ///
169  /// @param[in] rcStream 入力ストリーム参照
170  /// @return 実行結果
171  /// - true 成功
172  /// - false 失敗
173  /// @attention なし
174  ///
175  virtual bool InputJsonInt( CStream& rcStream ) noexcept;
176 
177  //---------------------------------------------------------------------
178  /// JSON小数部入力関数
179  ///
180  /// JSON小数部入力関数です。
181  ///
182  /// @param[in] rcStream 入力ストリーム参照
183  /// @return 実行結果
184  /// - true 成功
185  /// - false 失敗
186  /// @attention なし
187  ///
188  virtual bool InputJsonFrac( CStream& rcStream ) noexcept;
189 
190  //---------------------------------------------------------------------
191  /// JSON指数部入力関数
192  ///
193  /// JSON指数部入力関数です。
194  ///
195  /// @param[in] rcStream 入力ストリーム参照
196  /// @return 実行結果
197  /// - true 成功
198  /// - false 失敗
199  /// @attention なし
200  ///
201  virtual bool InputJsonExp( CStream& rcStream ) noexcept;
202 
203  //---------------------------------------------------------------------
204  /// JSON指数部ヘッダ入力関数
205  ///
206  /// JSON指数部ヘッダ入力関数です。
207  ///
208  /// @param[in] rcStream 入力ストリーム参照
209  /// @return 実行結果
210  /// - true 成功
211  /// - false 失敗
212  /// @attention なし
213  ///
214  virtual bool InputJsonExpHeader( CStream& rcStream ) noexcept;
215 
216  //---------------------------------------------------------------------
217  /// JSON数字集合入力関数
218  ///
219  /// JSON数字集合入力関数です。
220  ///
221  /// @param[in] rcStream 入力ストリーム参照
222  /// @return 実行結果
223  /// - true 成功
224  /// - false 失敗
225  /// @attention なし
226  ///
227  virtual bool InputJsonDigits( CStream& rcStream ) noexcept;
228 
229  //---------------------------------------------------------------------
230  /// JSON数字入力関数
231  ///
232  /// JSON数字入力関数です。
233  ///
234  /// @param[in] rcStream 入力ストリーム参照
235  /// @return 実行結果
236  /// - true 成功
237  /// - false 失敗
238  /// @attention なし
239  ///
240  virtual bool InputJsonDigit( CStream& rcStream ) noexcept;
241 
242  //---------------------------------------------------------------------
243  /// JSON固定文字入力関数
244  ///
245  /// JSON固定文字入力関数です。
246  ///
247  /// @param[in] rcStream 入力ストリーム参照
248  /// @param[in] ch 文字コード
249  /// @param[in] bIgnore 大小文字無視フラグ
250  /// @return 実行結果
251  /// - true 成功
252  /// - false 失敗
253  /// @attention なし
254  ///
255  virtual bool InputJsonFixedChar( CStream& rcStream, wchar_t ch, bool bIgnore = false ) noexcept;
256 
257  //---------------------------------------------------------------------
258  /// JSON固定文字列入力関数
259  ///
260  /// JSON固定文字列入力関数です。
261  ///
262  /// @param[in] rcStream ストリーム参照
263  /// @param[in] pszString 文字列ポインタ
264  /// @return 実行結果
265  /// - true 成功
266  /// - false 失敗
267  /// @attention なし
268  ///
269  virtual bool InputJsonFixedString( CStream& rcStream, wchar_t const* pszString ) noexcept;
270 
271  //---------------------------------------------------------------------
272  /// 最後尾文字取得関数
273  ///
274  /// 最後尾文字取得関数です。
275  ///
276  /// @param なし
277  /// @return 文字コード
278  /// @attention なし
279  ///
280  virtual wchar_t GetLastChar() noexcept;
281 
282  //---------------------------------------------------------------------
283  /// ストリームポインタプッシュ関数
284  ///
285  /// ストリームポインタプッシュ関数です。
286  ///
287  /// @param[in] rcStream 入力ストリーム参照
288  /// @return 実行結果
289  /// - true 成功
290  /// - false 失敗
291  /// @attention なし
292  ///
293  virtual bool PushStreamPoints( CStream& rcStream ) noexcept;
294 
295  //---------------------------------------------------------------------
296  /// ストリームポインタポップ関数
297  ///
298  /// ストリームポインタポップ関数です。
299  ///
300  /// @param[in] rcStream 入力ストリーム参照
301  /// @param[in] bResume ポインタ復元フラグ
302  /// @return 実行結果
303  /// - true 成功
304  /// - false 失敗
305  /// @attention なし
306  ///
307  virtual bool PopStreamPoints( CStream& rcStream, bool bResume ) noexcept;
308 
309  //=====================================================================
310  // 限定公開変数
311  protected:
312  CArray< int >* m_pcStringPointerList; ///< 文字列ストリームポインタリストポインタ
313 
314  //=====================================================================
315  // 削除関数
316  private:
317  CJsonToken( CJsonToken const& ) = delete;
318  CJsonToken& operator=( CJsonToken const& ) = delete;
319  };
320 }
321 
322 #pragma managed( pop )
virtual EJsonClass GetJsonClass() noexcept override
JSONクラス種別取得関数
Definition: CJsonToken.h:71
virtual bool IsJsonToken() noexcept override
JSONクラス種別判定関数
Definition: CJsonToken.h:84
EJsonClass
JSONクラス種別列挙体
Definition: CJson.h:55
配列クラスヘッダファイル
JSONライブラリ名前空間
Definition: CJson.h:24
JSONバリュークラス
Definition: CJsonValue.h:30
CArray< int > * m_pcStringPointerList
文字列ストリームポインタリストポインタ
Definition: CJsonToken.h:312
ストリームクラス
Definition: CStream.h:31
JSONクラス
Definition: CJson.h:44
ストリーム出力クラス
Definition: CStreamOut.h:30
JSONトークンクラス
Definition: CJsonToken.h:32
JSONバリュークラスヘッダファイル
#define LIB_JSON_API
ダイナミックライブラリインポート宣言
Definition: LibJsonDef.h:29
文字列ストリームクラス
Definition: CStringStream.h:31
文字列ストリームクラスヘッダ文字列
virtual CJsonToken * GetJsonToken() noexcept override
JSONクラスインスタンス取得関数
Definition: CJsonToken.h:95