Solution46
CJsonString.h
[詳解]
1 //=============================================================================
2 /// @file
3 /// JSON文字列クラスヘッダファイル
4 ///
5 /// JSON文字列クラスヘッダファイルです。
6 ///
7 /// $Id: CJsonString.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 <CJsonToken.h>
19 
20 //=============================================================================
21 // JSONライブラリ名前空間
22 namespace LibJson {
23  //=========================================================================
24  /// JSON文字列クラス
25  ///
26  /// JSON文字列クラスです。
27  ///
28  /// @attention なし
29  ///
31  //=====================================================================
32  // 構築子と解体子
33  public:
34  //---------------------------------------------------------------------
35  /// コンストラクタ
36  ///
37  /// コンストラクタです。
38  ///
39  /// @param[in] pcParent 親JSONクラスポインタ
40  /// @param[in] pszString 文字列ポインタ
41  /// @return なし
42  /// @attention なし
43  ///
44  explicit CJsonString( CJson* pcParent, wchar_t const* pszString = nullptr ) noexcept;
45 
46  //---------------------------------------------------------------------
47  /// デストラクタ
48  ///
49  /// デストラクタです。
50  ///
51  /// @param なし
52  /// @return なし
53  /// @attention なし
54  ///
55  virtual ~CJsonString() 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::JsonString; }
70 
71  //---------------------------------------------------------------------
72  /// JSONクラス種別判定関数
73  ///
74  /// JSONクラス種別判定関数です。
75  ///
76  /// @param なし
77  /// @return 実行結果
78  /// - true 成功
79  /// - false 失敗
80  /// @attention オーバライド関数です。
81  ///
82  inline virtual bool IsJsonString() noexcept override { return true; }
83 
84  //---------------------------------------------------------------------
85  /// JSONクラスインスタンス取得関数
86  ///
87  /// JSONクラスインスタンス取得関数です。
88  ///
89  /// @param なし
90  /// @return JSONクラスインスタンスポインタ
91  /// @attention オーバライド関数です。
92  ///
93  inline virtual CJsonString* GetJsonString() noexcept override { return this; }
94 
95  //=====================================================================
96  // 公開関数
97  public:
98  //---------------------------------------------------------------------
99  /// JSONクラス入力関数
100  ///
101  /// JSONクラス入力関数です。
102  ///
103  /// @param[in] rcStream 入力ストリーム参照
104  /// @return 実行結果
105  /// - true 成功
106  /// - false 失敗
107  /// @attention オーバライド関数です。
108  ///
109  virtual bool InputJson( CStream& rcStream ) noexcept override;
110 
111  //---------------------------------------------------------------------
112  /// JSONクラス出力関数
113  ///
114  /// JSONクラス出力関数です。
115  ///
116  /// @param[in] rcStreamOut 出力ストリーム参照
117  /// @return 実行結果
118  /// - true 成功
119  /// - false 失敗
120  /// @attention オーバライド関数です。
121  ///
122  virtual bool OutputJson( CStreamOut& rcStreamOut ) noexcept override;
123 
124  //=====================================================================
125  // 静的公開関数
126  public:
127  //---------------------------------------------------------------------
128  /// JSON文字列入力作成関数
129  ///
130  /// JSON文字列入力作成関数です。
131  ///
132  /// @param[in] rcStream 入力ストリーム参照
133  /// @param[in] pcParent 親JSONクラスポインタ
134  /// @return JSON文字列ポインタ
135  /// @attention なし
136  ///
137  static CJsonString* CreateInputJson( CStream& rcStream, CJson* pcParent ) noexcept;
138 
139  //=====================================================================
140  // 削除関数
141  private:
142  CJsonString( CJsonString const& ) = delete;
143  CJsonString& operator=( CJsonString const& ) = delete;
144  };
145 }
146 
147 #pragma managed( pop )
JSONトークンクラスヘッダファイル
EJsonClass
JSONクラス種別列挙体
Definition: CJson.h:55
JSONライブラリ名前空間
Definition: CJson.h:24
virtual bool IsJsonString() noexcept override
JSONクラス種別判定関数
Definition: CJsonString.h:82
ストリームクラス
Definition: CStream.h:31
virtual EJsonClass GetJsonClass() noexcept override
JSONクラス種別取得関数
Definition: CJsonString.h:69
JSONクラス
Definition: CJson.h:44
ストリーム出力クラス
Definition: CStreamOut.h:30
JSONトークンクラス
Definition: CJsonToken.h:32
virtual CJsonString * GetJsonString() noexcept override
JSONクラスインスタンス取得関数
Definition: CJsonString.h:93
#define LIB_JSON_API
ダイナミックライブラリインポート宣言
Definition: LibJsonDef.h:29
virtual ~CJsonString() noexcept
デストラクタ
Definition: CJsonString.h:55
JSON文字列クラス
Definition: CJsonString.h:30