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 CJsonPairGetJsonPair () noexcept override
 JSONクラスインスタンス取得関数 [詳解]
 
virtual CJsonStringGetJsonString () noexcept override
 
virtual CJsonValueGetJsonValue () 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 CJsonGetJsonParent () 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 CJsonObjectGetJsonObject () noexcept
 JSONクラスインスタンス取得関数 [詳解]
 
virtual CJsonArrayGetJsonArray () noexcept
 
virtual CJsonNumberGetJsonNumber () noexcept
 
virtual CJsonFixedGetJsonFixed () noexcept
 
virtual CJsonContainerGetJsonContainer () noexcept
 
virtual CJsonTokenGetJsonToken () noexcept
 
virtual CJsonGetJsonRoot () noexcept
 ルートJSONクラス取得関数 [詳解]
 

静的公開メンバ関数

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

限定公開変数類

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

非公開メンバ関数

 CJsonPair (CJsonPair const &)=delete
 
CJsonPairoperator= (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.h32 行目に定義があります。

構築子と解体子

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

コンストラクタ

コンストラクタです。

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

CJsonPair.cpp29 行目に定義があります。

参照元 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.cpp39 行目に定義があります。

参照先 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.h71 行目に定義があります。

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

JSONクラス種別判定関数

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

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

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

CJsonPair.h84 行目に定義があります。

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

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

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

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

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

CJsonPair.h95 行目に定義があります。

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

95 { return this; }

被呼び出し関係図:

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

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

CJsonPair.h96 行目に定義があります。

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

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

被呼び出し関係図:

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

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

CJsonPair.h97 行目に定義があります。

参照元 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.cpp48 行目に定義があります。

参照先 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.cpp63 行目に定義があります。

参照先 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.cpp100 行目に定義があります。

参照先 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.cpp157 行目に定義があります。

参照先 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.cpp228 行目に定義があります。

参照先 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.cpp199 行目に定義があります。

参照先 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.h183 行目に定義があります。

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

CJsonValue* LibJson::CJsonPair::m_pcJsonValue
protected

JSONバリューポインタ

CJsonPair.h184 行目に定義があります。

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


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