Solution46
LibJson::CJsonPair クラス

JSONペアクラス [詳解]

#include "CJsonPair.h"

LibJson::CJsonPair の継承関係図
Inheritance graph
LibJson::CJsonPair 連携図
Collaboration graph

公開メンバ関数

 CJsonPair (CJson *pcParent, wchar_t const *pszString=nullptr) noexcept
 コンストラクタ [詳解]
 
virtual ~CJsonPair () noexcept
 デストラクタ [詳解]
 
virtual EJsonClass GetJsonClass () noexcept override
 JSONクラス種別取得関数 [詳解]
 
virtual bool IsJsonPair () noexcept override
 JSONクラス種別判定関数 [詳解]
 
virtual CJsonPair * GetJsonPair () noexcept override
 JSONクラスインスタンス取得関数 [詳解]
 
virtual CJsonString * GetJsonString () noexcept override
 
virtual CJsonValue * GetJsonValue () noexcept override
 
virtual void ClearJson () noexcept override
 JSONクラスクリア関数 [詳解]
 
virtual bool CompactJson () noexcept override
 JSONクラスコンパクト化関数 [詳解]
 
virtual bool InputJson (CStream &rcStream) noexcept override
 JSONクラス入力関数 [詳解]
 
virtual bool OutputJson (CStreamOut &rcStreamOut) noexcept override
 JSONクラス出力関数 [詳解]
 
virtual bool SetJsonValue (CJsonValue *pcJsonValue) noexcept
 JSONバリュー設定関数 [詳解]
 
- 基底クラス LibJson::CJson に属する継承公開メンバ関数
 CJson (CJson *pcParent) noexcept
 コンストラクタ [詳解]
 
virtual ~CJson () noexcept
 デストラクタ [詳解]
 
virtual CJson * GetJsonParent () noexcept
 親JSONクラス取得関数 [詳解]
 
virtual void SetJsonParent (CJson *pcParent) noexcept
 親JSONクラス設定関数 [詳解]
 
virtual bool IsJsonObject () noexcept
 JSONクラス種別判定関数 [詳解]
 
virtual bool IsJsonArray () noexcept
 
virtual bool IsJsonString () noexcept
 
virtual bool IsJsonNumber () noexcept
 
virtual bool IsJsonFixed () noexcept
 
virtual bool IsJsonValue () noexcept
 
virtual bool IsJsonContainer () noexcept
 
virtual bool IsJsonToken () noexcept
 
virtual CJsonObject * GetJsonObject () noexcept
 JSONクラスインスタンス取得関数 [詳解]
 
virtual CJsonArray * GetJsonArray () noexcept
 
virtual CJsonNumber * GetJsonNumber () noexcept
 
virtual CJsonFixed * GetJsonFixed () noexcept
 
virtual CJsonContainer * GetJsonContainer () noexcept
 
virtual CJsonToken * GetJsonToken () noexcept
 
virtual CJson * GetJsonRoot () noexcept
 ルートJSONクラス取得関数 [詳解]
 

静的公開メンバ関数

static CJsonPair * CreateInputJson (CStream &rcStream, CJson *pcParent) noexcept
 JSONペア入力作成関数 [詳解]
 

限定公開変数類

CJsonString * m_pcJsonString
 JSON文字列ポインタ [詳解]
 
CJsonValue * m_pcJsonValue
 JSONバリューポインタ [詳解]
 
- 基底クラス LibJson::CJson に属する継承限定公開変数類
CJson * m_pcParent
 親JSONクラスポインタ [詳解]
 
CArray< int > * m_pcInputPointerList
 入力ストリームポインタリストポインタ [詳解]
 

非公開メンバ関数

 CJsonPair (CJsonPair const &)=delete
 
CJsonPair & operator= (CJsonPair const &)=delete
 

その他の継承メンバ

- 基底クラス LibJson::CJson に属する継承公開型
enum  EJsonClass {
  EJsonClass::Invalid, EJsonClass::JsonObject, EJsonClass::JsonArray, EJsonClass::JsonString,
  EJsonClass::JsonNumber, EJsonClass::JsonFixed, EJsonClass::JsonPair, EJsonClass::JsonValue,
  EJsonClass::JsonContainer, EJsonClass::JsonToken, EJsonClass::Size
}
 JSONクラス種別列挙体 [詳解]
 

詳解

JSONペアクラス

JSONペアクラスです。

注意
なし

CJsonPair.h の 32 行目に定義があります。

構築子と解体子

LibJson::CJsonPair::CJsonPair ( CJson *  pcParent,
wchar_t const *  pszString = nullptr 
)
explicitnoexcept

コンストラクタ

コンストラクタです。

引数
[in]pcParent親JSONクラスポインタ
[in]pszString文字列ポインタ
戻り値
なし
注意
なし

CJsonPair.cpp の 29 行目に定義があります。

参照元 CreateInputJson().

31  : CJson( pcParent )
32  // メンバ変数初期化
33  , m_pcJsonString( new CJsonString( this, pszString ) )
34  , m_pcJsonValue( new CJsonFixed( this, L"null" ) )
35  {}
CJson(CJson *pcParent) noexcept
コンストラクタ
Definition: CJson.cpp:33
CJsonString * m_pcJsonString
JSON文字列ポインタ
Definition: CJsonPair.h:183
CJsonValue * m_pcJsonValue
JSONバリューポインタ
Definition: CJsonPair.h:184

被呼び出し関係図:

LibJson::CJsonPair::~CJsonPair ( )
virtualnoexcept

デストラクタ

デストラクタです。

引数
なし
戻り値
なし
注意
なし

CJsonPair.cpp の 39 行目に定義があります。

参照先 ClearJson().

39  {
40  // クリアする
41  ClearJson();
42  }
virtual void ClearJson() noexcept override
JSONクラスクリア関数
Definition: CJsonPair.cpp:48

呼び出し関係図:

LibJson::CJsonPair::CJsonPair ( CJsonPair const &  )
privatedelete

関数詳解

virtual EJsonClass LibJson::CJsonPair::GetJsonClass ( )
inlineoverridevirtualnoexcept

JSONクラス種別取得関数

JSONクラス種別取得関数です。

引数
なし
戻り値
JSONクラス種別
注意
オーバライド関数です。

LibJson::CJsonを再実装しています。

CJsonPair.h の 71 行目に定義があります。

virtual bool LibJson::CJsonPair::IsJsonPair ( )
inlineoverridevirtualnoexcept

JSONクラス種別判定関数

JSONクラス種別判定関数です。

引数
なし
戻り値
実行結果
  • true 成功
  • false 失敗
注意
オーバライド関数です。

LibJson::CJsonを再実装しています。

CJsonPair.h の 84 行目に定義があります。

84 { return true; }
virtual CJsonPair* LibJson::CJsonPair::GetJsonPair ( )
inlineoverridevirtualnoexcept

JSONクラスインスタンス取得関数

JSONクラスインスタンス取得関数です。

引数
なし
戻り値
JSONクラスインスタンスポインタ
注意
オーバライド関数です。

LibJson::CJsonを再実装しています。

CJsonPair.h の 95 行目に定義があります。

参照元 LibJson::CJsonDocument::CreateJsonPath(), LibJson::CJsonDocument::FindJsonPath(), LibJson::CJsonObject::GetJsonPair().

95 { return this; }

被呼び出し関係図:

virtual CJsonString* LibJson::CJsonPair::GetJsonString ( )
inlineoverridevirtualnoexcept

LibJson::CJsonを再実装しています。

CJsonPair.h の 96 行目に定義があります。

参照元 LibJson::CJsonObject::GetJsonElementIndex().

96 { return m_pcJsonString; }
CJsonString * m_pcJsonString
JSON文字列ポインタ
Definition: CJsonPair.h:183

被呼び出し関係図:

virtual CJsonValue* LibJson::CJsonPair::GetJsonValue ( )
inlineoverridevirtualnoexcept

LibJson::CJsonを再実装しています。

CJsonPair.h の 97 行目に定義があります。

参照元 LibJson::CJsonDocument::CreateJsonPath(), LibJson::CJsonDocument::FindJsonPath().

97 { return m_pcJsonValue; }
CJsonValue * m_pcJsonValue
JSONバリューポインタ
Definition: CJsonPair.h:184

被呼び出し関係図:

void LibJson::CJsonPair::ClearJson ( )
overridevirtualnoexcept

JSONクラスクリア関数

JSONクラスクリア関数です。

引数
なし
戻り値
なし
注意
オーバライド関数です。

LibJson::CJsonを再実装しています。

CJsonPair.cpp の 48 行目に定義があります。

参照先 LibJson::CJson::ClearJson(), m_pcJsonString, m_pcJsonValue.

参照元 InputJson(), ~CJsonPair().

48  {
49  // 基底クラスをクリアする
51 
52  // JSONバリューを削除する
53  delete m_pcJsonValue;
54  m_pcJsonValue = nullptr;
55 
56  // JSON文字列を削除する
57  delete m_pcJsonString;
58  m_pcJsonString = nullptr;
59  }
CJsonString * m_pcJsonString
JSON文字列ポインタ
Definition: CJsonPair.h:183
virtual void ClearJson() noexcept
JSONクラスクリア関数
Definition: CJson.cpp:86
CJsonValue * m_pcJsonValue
JSONバリューポインタ
Definition: CJsonPair.h:184

呼び出し関係図:

被呼び出し関係図:

bool LibJson::CJsonPair::CompactJson ( )
overridevirtualnoexcept

JSONクラスコンパクト化関数

JSONクラスコンパクト化関数です。

引数
なし
戻り値
実行結果
  • true 成功
  • false 失敗
注意
オーバライド関数です。

LibJson::CJsonを再実装しています。

CJsonPair.cpp の 63 行目に定義があります。

参照先 LibJson::CJsonToken::CompactJson(), LibJson::CJson::CompactJson(), m_pcJsonString, m_pcJsonValue.

63  {
64  // 処理ブロック
65  bool result = false;
66  do {
67  // 基底クラスをコンパクト化する
68  if ( !CJson::CompactJson() ) {
69  // 失敗!
70  break;
71  }
72  // JSON文字列ポインタを調べる
73  else if ( nullptr != m_pcJsonString ) {
74  // JSON文字列をコンパクト化する
75  if ( !m_pcJsonString->CompactJson() ) {
76  // 失敗!
77  break;
78  }
79  }
80 
81  // JSONバリューポインタを調べる
82  if ( nullptr != m_pcJsonValue ) {
83  // JSONバリューをコンパクト化する
84  if ( !m_pcJsonValue->CompactJson() ) {
85  // 失敗!
86  break;
87  }
88  }
89 
90  // 成功!
91  result = true;
92  } while ( false );
93 
94  // 実行結果を返す
95  return result;
96  }
CJsonString * m_pcJsonString
JSON文字列ポインタ
Definition: CJsonPair.h:183
virtual bool CompactJson() noexcept
JSONクラスコンパクト化関数
Definition: CJson.cpp:93
virtual bool CompactJson() noexcept override
JSONクラスコンパクト化関数
Definition: CJsonToken.cpp:72
CJsonValue * m_pcJsonValue
JSONバリューポインタ
Definition: CJsonPair.h:184

呼び出し関係図:

bool LibJson::CJsonPair::InputJson ( CStream &  rcStream)
overridevirtualnoexcept

JSONクラス入力関数

JSONクラス入力関数です。

引数
[in]rcStream入力ストリーム参照
戻り値
実行結果
  • true 成功
  • false 失敗
注意
オーバライド関数です。

LibJson::CJsonを再実装しています。

CJsonPair.cpp の 100 行目に定義があります。

参照先 ClearJson(), LibJson::CJsonValue::CreateInputJson(), LibJson::CJsonString::CreateInputJson(), LibJson::CJson::m_pcInputPointerList, m_pcJsonString, m_pcJsonValue.

参照元 CreateInputJson().

100  {
101  // 処理ブロック
102  bool result = false;
103  do {
104  // クリアする
105  ClearJson();
106 
107  // ストリームポインタをプッシュする
108  if ( !rcStream.PushStreamPoint( m_pcInputPointerList ) ) {
109  // 失敗!
110  break;
111  }
112  // 処理ブロック
113  else do {
114  // JSON文字列を入力作成する
115  m_pcJsonString = CJsonString::CreateInputJson( rcStream, this );
116  if ( nullptr == m_pcJsonString ) {
117  // 失敗!
118  break;
119  }
120 
121  // 空白をスキップする
122  rcStream.SkipSpace();
123 
124  // 1文字スキップする
125  if ( !rcStream.SkipChar( L':' ) ) {
126  // クリアする
127  ClearJson();
128 
129  // 失敗!
130  break;
131  }
132 
133  // JSONバリューを入力作成する
134  m_pcJsonValue = CJsonValue::CreateInputJson( rcStream, this );
135  if ( nullptr == m_pcJsonValue ) {
136  // クリアする
137  ClearJson();
138 
139  // 失敗!
140  break;
141  }
142 
143  // 成功!
144  result = true;
145  } while ( false );
146 
147  // 入力ストリームポインタをポップする
148  rcStream.PopStreamPoint( m_pcInputPointerList, !result );
149  } while ( false );
150 
151  // 実行結果を返す
152  return result;
153  }
CJsonString * m_pcJsonString
JSON文字列ポインタ
Definition: CJsonPair.h:183
CArray< int > * m_pcInputPointerList
入力ストリームポインタリストポインタ
Definition: CJson.h:238
static CJsonString * CreateInputJson(CStream &rcStream, CJson *pcParent) noexcept
JSON文字列入力作成関数
virtual void ClearJson() noexcept override
JSONクラスクリア関数
Definition: CJsonPair.cpp:48
static CJsonValue * CreateInputJson(CStream &rcStream, CJson *pcParent) noexcept
JSONバリュー入力作成関数
Definition: CJsonValue.cpp:46
CJsonValue * m_pcJsonValue
JSONバリューポインタ
Definition: CJsonPair.h:184

呼び出し関係図:

被呼び出し関係図:

bool LibJson::CJsonPair::OutputJson ( CStreamOut &  rcStreamOut)
overridevirtualnoexcept

JSONクラス出力関数

JSONクラス出力関数です。

引数
[in]rcStreamOut出力ストリーム参照
戻り値
実行結果
  • true 成功
  • false 失敗
注意
オーバライド関数です。

LibJson::CJsonを再実装しています。

CJsonPair.cpp の 157 行目に定義があります。

参照先 m_pcJsonString, m_pcJsonValue, LibJson::CJsonString::OutputJson(), LibJson::CJson::OutputJson().

157  {
158  // 処理ブロック
159  bool result = false;
160  do {
161  // JSON文字列ポインタを調べる
162  if ( nullptr == m_pcJsonString ) {
163  // 失敗!
164  break;
165  }
166  // JSON文字列を出力する
167  else if ( !m_pcJsonString->OutputJson( rcStreamOut ) ) {
168  // 失敗!
169  break;
170  }
171  // 区切り文字列を出力する
172  else if ( !rcStreamOut.OutputString( L": " ) ) {
173  // 失敗!
174  break;
175  }
176  // JSONバリューポインタを調べる
177  else if ( nullptr == m_pcJsonValue ) {
178  // 失敗!
179  break;
180  }
181  // JSONバリューを出力する
182  else if ( !m_pcJsonValue->OutputJson( rcStreamOut ) ) {
183  // 失敗!
184  break;
185  }
186 
187  // 成功!
188  result = true;
189  } while ( false );
190 
191  // 実行結果を返す
192  return result;
193  }
virtual bool OutputJson(CStreamOut &rcStreamOut) noexcept
JSONクラス出力関数
Definition: CJson.h:232
CJsonString * m_pcJsonString
JSON文字列ポインタ
Definition: CJsonPair.h:183
virtual bool OutputJson(CStreamOut &rcStreamOut) noexcept override
JSONクラス出力関数
Definition: CJsonString.cpp:89
CJsonValue * m_pcJsonValue
JSONバリューポインタ
Definition: CJsonPair.h:184

呼び出し関係図:

bool LibJson::CJsonPair::SetJsonValue ( CJsonValue *  pcJsonValue)
virtualnoexcept

JSONバリュー設定関数

JSONバリュー設定関数です。

引数
[in]pcJsonValueJSONバリューポインタ
戻り値
実行結果
  • true 成功
  • false 失敗
注意
なし

CJsonPair.cpp の 228 行目に定義があります。

参照先 m_pcJsonValue.

参照元 LibJson::CJsonDocument::CreateJsonPath(), LibJson::CJsonDocument::SetJsonSetValueByStream().

228  {
229  // 処理ブロック
230  bool result = false;
231  do {
232  // JSONバリューを削除する
233  delete m_pcJsonValue;
234 
235  // JSONバリューポインタを設定する
236  m_pcJsonValue = pcJsonValue;
237 
238  // 成功!
239  result = true;
240  } while ( false );
241 
242  // 実行結果を返す
243  return result;
244  }
CJsonValue * m_pcJsonValue
JSONバリューポインタ
Definition: CJsonPair.h:184

被呼び出し関係図:

CJsonPair * LibJson::CJsonPair::CreateInputJson ( CStream &  rcStream,
CJson *  pcParent 
)
staticnoexcept

JSONペア入力作成関数

JSONペア入力作成関数です。

引数
[in]rcStream入力ストリーム参照
[in]pcParent親JSONクラスポインタ
戻り値
JSONペアポインタ
注意
なし

CJsonPair.cpp の 199 行目に定義があります。

参照先 CJsonPair(), InputJson().

参照元 LibJson::CJsonObject::CreateInputJsonElement(), LibJson::CJsonDocument::InputDocument(), LibJson::CJsonDocument::SetJsonSetValueByStream().

199  {
200  // 処理ブロック
201  CJsonPair* result = nullptr;
202  do {
203  // JSONペアを作成する
204  CJsonPair* pcJsonPair = new CJsonPair( pcParent );
205  if ( nullptr == pcJsonPair ) {
206  // 失敗!
207  break;
208  }
209  // JSONペアを入力する
210  else if ( !pcJsonPair->InputJson( rcStream ) ) {
211  // JSONペアを削除する
212  delete pcJsonPair;
213 
214  // 失敗!
215  break;
216  }
217 
218  // 成功!
219  result = pcJsonPair;
220  } while ( false );
221 
222  // 実行結果を返す
223  return result;
224  }
CJsonPair(CJson *pcParent, wchar_t const *pszString=nullptr) noexcept
コンストラクタ
Definition: CJsonPair.cpp:29

呼び出し関係図:

被呼び出し関係図:

CJsonPair& LibJson::CJsonPair::operator= ( CJsonPair const &  )
privatedelete

メンバ詳解

CJsonString* LibJson::CJsonPair::m_pcJsonString
protected

JSON文字列ポインタ

CJsonPair.h の 183 行目に定義があります。

参照元 ClearJson(), CompactJson(), InputJson(), OutputJson().

CJsonValue* LibJson::CJsonPair::m_pcJsonValue
protected

JSONバリューポインタ

CJsonPair.h の 184 行目に定義があります。

参照元 ClearJson(), CompactJson(), InputJson(), OutputJson(), SetJsonValue().


このクラス詳解は次のファイルから抽出されました: