Solution46
CJsonPair.h
[詳解]
1 //=============================================================================
2 /// @file
3 /// JSONペアクラスヘッダファイル
4 ///
5 /// JSONペアクラスヘッダファイルです。
6 ///
7 /// $Id: CJsonPair.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 <CJson.h>
19 #include <CJsonString.h>
20 #include <CJsonValue.h>
21 
22 //=============================================================================
23 // JSONライブラリ名前空間
24 namespace LibJson {
25  //=========================================================================
26  /// JSONペアクラス
27  ///
28  /// JSONペアクラスです。
29  ///
30  /// @attention なし
31  ///
32  class LIB_JSON_API CJsonPair: public CJson {
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 CJsonPair( CJson* pcParent, wchar_t const* pszString = nullptr ) noexcept;
47 
48  //---------------------------------------------------------------------
49  /// デストラクタ
50  ///
51  /// デストラクタです。
52  ///
53  /// @param なし
54  /// @return なし
55  /// @attention なし
56  ///
57  virtual ~CJsonPair() 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::JsonPair; }
72 
73  //---------------------------------------------------------------------
74  /// JSONクラス種別判定関数
75  ///
76  /// JSONクラス種別判定関数です。
77  ///
78  /// @param なし
79  /// @return 実行結果
80  /// - true 成功
81  /// - false 失敗
82  /// @attention オーバライド関数です。
83  ///
84  inline virtual bool IsJsonPair() noexcept override { return true; }
85 
86  //---------------------------------------------------------------------
87  /// JSONクラスインスタンス取得関数
88  ///
89  /// JSONクラスインスタンス取得関数です。
90  ///
91  /// @param なし
92  /// @return JSONクラスインスタンスポインタ
93  /// @attention オーバライド関数です。
94  ///
95  inline virtual CJsonPair* GetJsonPair() noexcept override { return this; }
96  inline virtual CJsonString* GetJsonString() noexcept override { return m_pcJsonString; }
97  inline virtual CJsonValue* GetJsonValue() noexcept override { return m_pcJsonValue; }
98 
99  //=====================================================================
100  // 公開関数
101  public:
102  //---------------------------------------------------------------------
103  /// JSONクラスクリア関数
104  ///
105  /// JSONクラスクリア関数です。
106  ///
107  /// @param なし
108  /// @return なし
109  /// @attention オーバライド関数です。
110  ///
111  virtual void ClearJson() noexcept override;
112 
113  //---------------------------------------------------------------------
114  /// JSONクラスコンパクト化関数
115  ///
116  /// JSONクラスコンパクト化関数です。
117  ///
118  /// @param なし
119  /// @return 実行結果
120  /// - true 成功
121  /// - false 失敗
122  /// @attention オーバライド関数です。
123  ///
124  virtual bool CompactJson() noexcept override;
125 
126  //---------------------------------------------------------------------
127  /// JSONクラス入力関数
128  ///
129  /// JSONクラス入力関数です。
130  ///
131  /// @param[in] rcStream 入力ストリーム参照
132  /// @return 実行結果
133  /// - true 成功
134  /// - false 失敗
135  /// @attention オーバライド関数です。
136  ///
137  virtual bool InputJson( CStream& rcStream ) noexcept override;
138 
139  //---------------------------------------------------------------------
140  /// JSONクラス出力関数
141  ///
142  /// JSONクラス出力関数です。
143  ///
144  /// @param[in] rcStreamOut 出力ストリーム参照
145  /// @return 実行結果
146  /// - true 成功
147  /// - false 失敗
148  /// @attention オーバライド関数です。
149  ///
150  virtual bool OutputJson( CStreamOut& rcStreamOut ) noexcept override;
151 
152  //---------------------------------------------------------------------
153  /// JSONバリュー設定関数
154  ///
155  /// JSONバリュー設定関数です。
156  ///
157  /// @param[in] pcJsonValue JSONバリューポインタ
158  /// @return 実行結果
159  /// - true 成功
160  /// - false 失敗
161  /// @attention なし
162  ///
163  virtual bool SetJsonValue( CJsonValue* pcJsonValue ) noexcept;
164 
165  //=====================================================================
166  // 静的公開関数
167  public:
168  //---------------------------------------------------------------------
169  /// JSONペア入力作成関数
170  ///
171  /// JSONペア入力作成関数です。
172  ///
173  /// @param[in] rcStream 入力ストリーム参照
174  /// @param[in] pcParent 親JSONクラスポインタ
175  /// @return JSONペアポインタ
176  /// @attention なし
177  ///
178  static CJsonPair* CreateInputJson( CStream& rcStream, CJson* pcParent ) noexcept;
179 
180  //=====================================================================
181  // 限定公開変数
182  protected:
183  CJsonString* m_pcJsonString; ///< JSON文字列ポインタ
184  CJsonValue* m_pcJsonValue; ///< JSONバリューポインタ
185 
186  //=====================================================================
187  // 削除関数
188  private:
189  CJsonPair( CJsonPair const& ) = delete;
190  CJsonPair& operator=( CJsonPair const& ) = delete;
191  };
192 }
193 
194 #pragma managed( pop )
JSONペアクラス
Definition: CJsonPair.h:32
virtual CJsonString * GetJsonString() noexcept override
Definition: CJsonPair.h:96
virtual CJsonPair * GetJsonPair() noexcept override
JSONクラスインスタンス取得関数
Definition: CJsonPair.h:95
EJsonClass
JSONクラス種別列挙体
Definition: CJson.h:55
virtual bool IsJsonPair() noexcept override
JSONクラス種別判定関数
Definition: CJsonPair.h:84
JSONライブラリ名前空間
Definition: CJson.h:24
CJsonString * m_pcJsonString
JSON文字列ポインタ
Definition: CJsonPair.h:183
JSONバリュークラス
Definition: CJsonValue.h:30
virtual EJsonClass GetJsonClass() noexcept override
JSONクラス種別取得関数
Definition: CJsonPair.h:71
virtual CJsonValue * GetJsonValue() noexcept override
Definition: CJsonPair.h:97
ストリームクラス
Definition: CStream.h:31
JSONクラス
Definition: CJson.h:44
ストリーム出力クラス
Definition: CStreamOut.h:30
JSONバリュークラスヘッダファイル
#define LIB_JSON_API
ダイナミックライブラリインポート宣言
Definition: LibJsonDef.h:29
JSONクラスヘッダファイル
JSON文字列クラスヘッダファイル
JSON文字列クラス
Definition: CJsonString.h:30
CJsonValue * m_pcJsonValue
JSONバリューポインタ
Definition: CJsonPair.h:184