Solution46
CJsonObject.h
[詳解]
1 //=============================================================================
2 /// @file
3 /// JSONオブジェクトクラスヘッダファイル
4 ///
5 /// JSONオブジェクトクラスヘッダファイルです。
6 ///
7 /// $Id: CJsonObject.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 <CJsonContainer.h>
19 #include <CJsonPair.h>
20 
21 //=============================================================================
22 // JSONライブラリ名前空間
23 namespace LibJson {
24  //=========================================================================
25  /// JSONオブジェクトクラス
26  ///
27  /// JSONオブジェクトクラスです。
28  ///
29  /// @attention なし
30  ///
32  //=====================================================================
33  // 構築子と解体子
34  public:
35  //---------------------------------------------------------------------
36  /// コンストラクタ
37  ///
38  /// コンストラクタです。
39  ///
40  /// @param[in] pcParent 親JSONクラスポインタ
41  /// @return なし
42  /// @attention なし
43  ///
44  explicit CJsonObject( CJson* pcParent ) noexcept;
45 
46  //---------------------------------------------------------------------
47  /// デストラクタ
48  ///
49  /// デストラクタです。
50  ///
51  /// @param なし
52  /// @return なし
53  /// @attention なし
54  ///
55  virtual ~CJsonObject() noexcept {}
56 
57  //=====================================================================
58  // インライン公開関数
59  public:
60  //---------------------------------------------------------------------
61  /// JSONクラス種別取得関数
62  ///
63  /// JSONクラス種別取得関数です。
64  ///
65  /// @param なし
66  /// @return JSONクラス種別
67  /// @attention オーバライド関数です。
68  ///
69  inline virtual EJsonClass GetJsonClass() noexcept override { return EJsonClass::JsonObject; }
70 
71  //---------------------------------------------------------------------
72  /// JSONクラス種別判定関数
73  ///
74  /// JSONクラス種別判定関数です。
75  ///
76  /// @param なし
77  /// @return 実行結果
78  /// - true 成功
79  /// - false 失敗
80  /// @attention オーバライド関数です。
81  ///
82  inline virtual bool IsJsonObject() noexcept override { return true; }
83 
84  //---------------------------------------------------------------------
85  /// JSONクラスインスタンス取得関数
86  ///
87  /// JSONクラスインスタンス取得関数です。
88  ///
89  /// @param なし
90  /// @return JSONクラスインスタンスポインタ
91  /// @attention オーバライド関数です。
92  ///
93  inline virtual CJsonObject* GetJsonObject() noexcept override { return this; }
94 
95  //---------------------------------------------------------------------
96  /// オープン文字取得関数
97  ///
98  /// オープン文字取得関数です。
99  ///
100  /// @param なし
101  /// @return 文字コード
102  /// @attention オーバライド関数です。
103  ///
104  inline virtual wchar_t GetOpenChar() noexcept override { return L'{'; }
105 
106  //---------------------------------------------------------------------
107  /// クローズ文字取得関数
108  ///
109  /// クローズ文字取得関数です。
110  ///
111  /// @param なし
112  /// @return 文字コード
113  /// @attention オーバライド関数です。
114  ///
115  inline virtual wchar_t GetCloseChar() noexcept override { return L'}'; }
116 
117  //---------------------------------------------------------------------
118  /// JSONエレメント入力作成関数
119  ///
120  /// JSONエレメント入力作成関数です。
121  ///
122  /// @param[in] rcStream 入力ストリーム参照
123  /// @param[in] pcParent 親JSONクラスポインタ
124  /// @return JSON派生クラスポインタ
125  /// @attention オーバライド関数です。
126  ///
127  inline virtual CJson* CreateInputJsonElement( CStream& rcStream, CJson* pcParent ) noexcept override { return CJsonPair::CreateInputJson( rcStream, pcParent ); }
128 
129  //=====================================================================
130  // 公開関数
131  public:
132  //---------------------------------------------------------------------
133  /// JSONペア取得関数
134  ///
135  /// JSONペア取得関数です。
136  ///
137  /// @param[in] pszName 名前文字列
138  /// @return JSONペアポインタ
139  /// @attention なし
140  ///
141  virtual CJsonPair* GetJsonPair( wchar_t const* pszName ) noexcept;
142 
143  //---------------------------------------------------------------------
144  /// JSONエレメントインデックス取得関数
145  ///
146  /// JSONエレメントインデックス取得関数です。
147  ///
148  /// @param[in] pszName 名前文字列
149  /// @return インデックス
150  /// @attention なし
151  ///
152  virtual int GetJsonElementIndex( wchar_t const* pszName ) noexcept;
153 
154  //=====================================================================
155  // 静的公開関数
156  public:
157  //---------------------------------------------------------------------
158  /// JSONオブジェクト入力作成関数
159  ///
160  /// JSONオブジェクト入力作成関数です。
161  ///
162  /// @param[in] rcStream 入力ストリーム参照
163  /// @param[in] pcParent 親JSONクラスポインタ
164  /// @return JSONオブジェクトポインタ
165  /// @attention なし
166  ///
167  static CJsonObject* CreateInputJson( CStream& rcStream, CJson* pcParent ) noexcept;
168 
169  //=====================================================================
170  // 削除関数
171  private:
172  CJsonObject( CJsonObject const& ) = delete;
173  CJsonObject& operator=( CJsonObject const& ) = delete;
174  };
175 }
176 
177 #pragma managed( pop )
virtual CJson * CreateInputJsonElement(CStream &rcStream, CJson *pcParent) noexcept override
JSONエレメント入力作成関数
Definition: CJsonObject.h:127
JSONペアクラス
Definition: CJsonPair.h:32
JSONオブジェクトクラス
Definition: CJsonObject.h:31
virtual ~CJsonObject() noexcept
デストラクタ
Definition: CJsonObject.h:55
EJsonClass
JSONクラス種別列挙体
Definition: CJson.h:55
virtual CJsonObject * GetJsonObject() noexcept override
JSONクラスインスタンス取得関数
Definition: CJsonObject.h:93
JSONコンテナクラスヘッダファイル
JSONライブラリ名前空間
Definition: CJson.h:24
virtual wchar_t GetOpenChar() noexcept override
オープン文字取得関数
Definition: CJsonObject.h:104
JSONコンテナクラス
ストリームクラス
Definition: CStream.h:31
JSONペアクラスヘッダファイル
JSONクラス
Definition: CJson.h:44
#define LIB_JSON_API
ダイナミックライブラリインポート宣言
Definition: LibJsonDef.h:29
virtual wchar_t GetCloseChar() noexcept override
クローズ文字取得関数
Definition: CJsonObject.h:115
virtual bool IsJsonObject() noexcept override
JSONクラス種別判定関数
Definition: CJsonObject.h:82
virtual EJsonClass GetJsonClass() noexcept override
JSONクラス種別取得関数
Definition: CJsonObject.h:69
static CJsonPair * CreateInputJson(CStream &rcStream, CJson *pcParent) noexcept
JSONペア入力作成関数
Definition: CJsonPair.cpp:199