Solution46
LibJson::CJsonContainer クラスabstract

JSONコンテナクラス [詳解]

#include "CJsonContainer.h"

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

公開メンバ関数

 CJsonContainer (CJson *pcParent) noexcept
 コンストラクタ [詳解]
 
virtual ~CJsonContainer () noexcept
 デストラクタ [詳解]
 
virtual EJsonClass GetJsonClass () noexcept override
 JSONクラス種別取得関数 [詳解]
 
virtual bool IsJsonContainer () noexcept override
 JSONクラス種別判定関数 [詳解]
 
virtual CJsonContainerGetJsonContainer () noexcept override
 JSONクラスインスタンス取得関数 [詳解]
 
virtual wchar_t GetOpenChar () noexcept=0
 オープン文字取得関数 [詳解]
 
virtual wchar_t GetCloseChar () noexcept=0
 クローズ文字取得関数 [詳解]
 
virtual CJsonCreateInputJsonElement (CStream &rcStream, CJson *pcParent) noexcept=0
 JSONエレメント入力作成関数 [詳解]
 
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 CJsonGetJsonElement (int nIndex) noexcept
 JSONエレメント取得関数 [詳解]
 
virtual bool SetJsonElement (int nIndex, CJson *pcJson) noexcept
 JSONエレメント設定関数 [詳解]
 
virtual bool ExtendJsonElementCount (int nCount) noexcept
 JSONエレメント数拡張関数 [詳解]
 
- 基底クラス LibJson::CJsonValue に属する継承公開メンバ関数
 CJsonValue (CJson *pcParent) noexcept
 コンストラクタ [詳解]
 
virtual ~CJsonValue () noexcept
 デストラクタ [詳解]
 
virtual bool IsJsonValue () noexcept override
 JSONクラス種別判定関数 [詳解]
 
virtual CJsonValueGetJsonValue () noexcept override
 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 IsJsonPair () noexcept
 
virtual bool IsJsonToken () noexcept
 
virtual CJsonObjectGetJsonObject () noexcept
 JSONクラスインスタンス取得関数 [詳解]
 
virtual CJsonArrayGetJsonArray () noexcept
 
virtual CJsonStringGetJsonString () noexcept
 
virtual CJsonNumberGetJsonNumber () noexcept
 
virtual CJsonFixedGetJsonFixed () noexcept
 
virtual CJsonPairGetJsonPair () noexcept
 
virtual CJsonTokenGetJsonToken () noexcept
 
virtual CJsonGetJsonRoot () noexcept
 ルートJSONクラス取得関数 [詳解]
 
- 基底クラス LibCommon::CArray< CJson * > に属する継承公開メンバ関数
 CArray () noexcept
 コンストラクタ [詳解]
 
 CArray (CJson * const &rElement) noexcept
 コンストラクタ [詳解]
 
 CArray (CJson * const *pBuffer, int nCount) noexcept
 コンストラクタ [詳解]
 
 CArray (std::initializer_list< CJson * const > const &rcInitializer) noexcept
 コンストラクタ [詳解]
 
 CArray (CArray const &rcInstance) noexcept
 コピーコンストラクタ [詳解]
 
 CArray (CArray &&rcInstance) noexcept
 ムーブコンストラクタ [詳解]
 
virtual ~CArray () noexcept
 デストラクタ [詳解]
 
virtual CJson * * GetBuffer () noexcept
 配列要素バッファ取得関数 [詳解]
 
virtual int GetSize () const noexcept
 バッファサイズ取得関数 [詳解]
 
virtual int GetCount () const noexcept
 配列要素数取得関数 [詳解]
 
virtual int GetSegmentSize () const noexcept
 セグメントサイズ取得関数 [詳解]
 
virtual CArrayoperator= (CArray const &rcInstance) noexcept
 コピー代入演算子オーバーロード関数 [詳解]
 
virtual CArrayoperator= (CArray &&rcInstance) noexcept
 ムーブ代入演算子オーバーロード関数 [詳解]
 
virtual CArrayoperator= (CJson * const &rElement) noexcept
 代入演算子オーバーロード関数 [詳解]
 
virtual CArrayoperator= (std::initializer_list< CJson * const > const &rcInitializer) noexcept
 代入演算子オーバーロード関数 [詳解]
 
virtual CArrayoperator+= (CArray const &rcInstance) noexcept
 加算代入演算子オーバーロード関数 [詳解]
 
virtual CArrayoperator+= (CJson * const &rElement) noexcept
 加算代入演算子オーバーロード関数 [詳解]
 
virtual CArrayoperator+= (std::initializer_list< CJson * const > const &rcInitializer) noexcept
 加算代入演算子オーバーロード関数 [詳解]
 
virtual CJson * & operator[] (int nIndex) noexcept
 配列添字演算子オーバーロード関数 [詳解]
 
virtual operator CJson * const * () noexcept
 配列要素ポインタキャスト演算子オーバーロード関数 [詳解]
 
virtual CArrayoperator() () noexcept
 関数演算子オーバーロード関数 [詳解]
 
virtual void Clear () noexcept
 クリア関数 [詳解]
 
virtual bool CreateBuffer (int nSize) noexcept
 バッファ作成関数 [詳解]
 
virtual bool UpdateBuffer (int nCount) noexcept
 バッファサイズ更新関数 [詳解]
 
virtual bool CompactBuffer () noexcept
 バッファサイズコンパクト化関数 [詳解]
 
virtual bool Copy (CArray const &rcInstance) noexcept
 コピー関数 [詳解]
 
virtual bool Copy (CJson * const &rElement) noexcept
 コピー関数 [詳解]
 
virtual bool Copy (CJson * const *pBuffer, int nCount) noexcept
 コピー関数 [詳解]
 
virtual bool Copy (std::initializer_list< CJson * const > const &rcInitializer) noexcept
 コピー関数 [詳解]
 
virtual bool Move (CArray &&rcInstance) noexcept
 ムーブ関数 [詳解]
 
virtual bool Append (CArray const &rcInstance) noexcept
 追加関数 [詳解]
 
virtual bool Append (CJson * const &rElement) noexcept
 追加関数 [詳解]
 
virtual bool Append (CJson * const *pBuffer, int nCount) noexcept
 追加関数 [詳解]
 
virtual bool Append (std::initializer_list< CJson * const > const &rcInitializer) noexcept
 追加関数 [詳解]
 
virtual bool Insert (int nIndex, CArray const &rcInstance) noexcept
 挿入関数 [詳解]
 
virtual bool Insert (int nIndex, CJson * const &rElement) noexcept
 挿入関数 [詳解]
 
virtual bool Insert (int nIndex, CJson * const *pBuffer, int nCount) noexcept
 挿入関数 [詳解]
 
virtual bool Insert (int nIndex, std::initializer_list< CJson * const > const &rcInitializer) noexcept
 挿入関数 [詳解]
 
virtual bool Remove () noexcept
 削除関数 [詳解]
 
virtual bool Remove (int nIndex) noexcept
 削除関数 [詳解]
 
virtual bool Remove (int nIndex, int nCount) noexcept
 削除関数 [詳解]
 
virtual bool Get (int nIndex, CJson * &rElement) const noexcept
 取得関数 [詳解]
 
virtual bool Set (int nIndex, CJson * const &rElement) noexcept
 設定関数 [詳解]
 
virtual int Find (CJson * const &rElement) const noexcept
 検索関数 [詳解]
 
virtual bool Compare (CJson * const &rElement1, CJson * const &rElement2) const noexcept
 比較関数 [詳解]
 
virtual bool Push (CJson * const &rElement) noexcept
 プッシュ関数 [詳解]
 
virtual bool Push (CJson * const *pBuffer, int nCount) noexcept
 プッシュ関数 [詳解]
 
virtual bool Push (std::initializer_list< CJson * const > const &rcInitializer) noexcept
 プッシュ関数 [詳解]
 
virtual bool Pop (CJson * &rElement) noexcept
 ポップ関数 [詳解]
 
virtual bool PopFront (CJson * &rElement) noexcept
 ポップフロント関数 [詳解]
 

非公開メンバ関数

 CJsonContainer (CJsonContainer const &)=delete
 
CJsonContaineroperator= (CJsonContainer 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クラス種別列挙体 [詳解]
 
- 基底クラス LibJson::CJsonValue に属する継承静的公開メンバ関数
static CJsonValueCreateInputJson (CStream &rcStream, CJson *pcParent) noexcept
 JSONバリュー入力作成関数 [詳解]
 
- 基底クラス LibCommon::CArray< CJson * > に属する継承静的公開変数類
static int const SEGMENT_SIZE
 セグメントサイズ初期値 [詳解]
 
- 基底クラス LibJson::CJson に属する継承限定公開変数類
CJsonm_pcParent
 親JSONクラスポインタ [詳解]
 
CArray< int > * m_pcInputPointerList
 入力ストリームポインタリストポインタ [詳解]
 
- 基底クラス LibCommon::CArray< CJson * > に属する継承限定公開変数類
CJson * * m_pBuffer
 バッファポインタ [詳解]
 
int m_nSize
 バッファサイズ [詳解]
 
int m_nCount
 要素数 [詳解]
 

詳解

JSONコンテナクラス

JSONコンテナクラスです。

注意
抽象クラスです。

CJsonContainer.h31 行目に定義があります。

構築子と解体子

LibJson::CJsonContainer::CJsonContainer ( CJson pcParent)
explicitnoexcept

コンストラクタ

コンストラクタです。

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

CJsonContainer.cpp35 行目に定義があります。

37  : CJsonValue( pcParent )
38  , CArray< CJson* >()
39  {}
CJsonValue(CJson *pcParent) noexcept
コンストラクタ
Definition: CJsonValue.cpp:37
LibJson::CJsonContainer::~CJsonContainer ( )
virtualnoexcept

デストラクタ

デストラクタです。

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

CJsonContainer.cpp43 行目に定義があります。

参照先 ClearJson().

43  {
44  // クリアする
45  ClearJson();
46  }
virtual void ClearJson() noexcept override
JSONクラスクリア関数

呼び出し関係図:

LibJson::CJsonContainer::CJsonContainer ( CJsonContainer const &  )
privatedelete

関数詳解

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

JSONクラス種別取得関数

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

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

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

LibJson::CJsonArray, LibJson::CJsonObjectで再実装されています。

CJsonContainer.h69 行目に定義があります。

virtual bool LibJson::CJsonContainer::IsJsonContainer ( )
inlineoverridevirtualnoexcept

JSONクラス種別判定関数

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

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

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

CJsonContainer.h82 行目に定義があります。

82 { return true; }
virtual CJsonContainer* LibJson::CJsonContainer::GetJsonContainer ( )
inlineoverridevirtualnoexcept

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

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

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

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

CJsonContainer.h93 行目に定義があります。

参照元 LibJson::CJsonDocument::GetJsonPathList(), LibJson::CJsonDocument::GetJsonSetValue().

93 { return this; }

被呼び出し関係図:

virtual wchar_t LibJson::CJsonContainer::GetOpenChar ( )
inlinepure virtualnoexcept

オープン文字取得関数

オープン文字取得関数です。

引数
なし
戻り値
文字コード
注意
純粋仮想関数です。

LibJson::CJsonArray, LibJson::CJsonObjectで実装されています。

参照元 InputJson(), OutputJson().

被呼び出し関係図:

virtual wchar_t LibJson::CJsonContainer::GetCloseChar ( )
inlinepure virtualnoexcept

クローズ文字取得関数

クローズ文字取得関数です。

引数
なし
戻り値
文字コード
注意
純粋仮想関数です。

LibJson::CJsonArray, LibJson::CJsonObjectで実装されています。

参照元 InputJson(), OutputJson().

被呼び出し関係図:

virtual CJson* LibJson::CJsonContainer::CreateInputJsonElement ( CStream rcStream,
CJson pcParent 
)
inlinepure virtualnoexcept

JSONエレメント入力作成関数

JSONエレメント入力作成関数です。

引数
[in]rcStream入力ストリーム参照
[in]pcParent親JSONクラスポインタ
戻り値
JSON派生クラスポインタ
注意
純粋仮想関数です。

LibJson::CJsonArray, LibJson::CJsonObjectで実装されています。

参照元 InputJson().

被呼び出し関係図:

void LibJson::CJsonContainer::ClearJson ( )
overridevirtualnoexcept

JSONクラスクリア関数

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

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

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

CJsonContainer.cpp52 行目に定義があります。

参照先 LibJson::CJson::ClearJson(), LibCommon::CArray< CJson * >::m_nCount, LibCommon::CArray< CJson * >::m_pBuffer.

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

52  {
53  // 基底クラスをクリアする
55 
56  // 巡回する
57  for ( int nIndex = ( m_nCount - 1 ); 0 <= nIndex; --nIndex ) {
58  // JSONクラスを削除する
59  delete m_pBuffer[ nIndex ];
60  m_pBuffer[ nIndex ] = nullptr;
61  }
62  }
int m_nCount
要素数
Definition: CArray.h:669
CJson * * m_pBuffer
バッファポインタ
Definition: CArray.h:667
virtual void ClearJson() noexcept
JSONクラスクリア関数
Definition: CJson.cpp:86

呼び出し関係図:

被呼び出し関係図:

bool LibJson::CJsonContainer::CompactJson ( )
overridevirtualnoexcept

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

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

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

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

CJsonContainer.cpp66 行目に定義があります。

参照先 LibJson::CJson::CompactJson(), LibCommon::CArray< CJson * >::m_nCount, LibCommon::CArray< CJson * >::m_pBuffer.

66  {
67  // 処理ブロック
68  bool result = false;
69  do {
70  // 基底クラスをコンパクト化する
71  if ( !CJsonValue::CompactJson() ) {
72  // 失敗!
73  break;
74  }
75  // 巡回する
76  else for ( int nIndex = 0, nCount = m_nCount;; ++nIndex ) {
77  // インデックスを調べる
78  if ( nCount <= nIndex ) {
79  // 成功!
80  result = true;
81  break;
82  }
83  // JSONクラスをコンパクト化する
84  else if ( !m_pBuffer[ nIndex ]->CompactJson() ) {
85  // 失敗!
86  break;
87  }
88  }
89  } while ( false );
90 
91  // 実行結果を返す
92  return result;
93  }
virtual bool CompactJson() noexcept override
JSONクラスコンパクト化関数
int m_nCount
要素数
Definition: CArray.h:669
virtual bool CompactJson() noexcept
JSONクラスコンパクト化関数
Definition: CJson.cpp:93
CJson * * m_pBuffer
バッファポインタ
Definition: CArray.h:667

呼び出し関係図:

bool LibJson::CJsonContainer::InputJson ( CStream rcStream)
overridevirtualnoexcept

JSONクラス入力関数

JSONクラス入力関数です。

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

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

CJsonContainer.cpp97 行目に定義があります。

参照先 ClearJson(), LibCommon::CArray< CJson * >::CompactBuffer(), CreateInputJsonElement(), GetCloseChar(), GetOpenChar(), LibJson::CJson::m_pcInputPointerList, LibCommon::CArray< CJson * >::Push().

参照元 LibJson::CJsonArray::CreateInputJson(), LibJson::CJsonObject::CreateInputJson().

97  {
98  // 処理ブロック
99  bool result = false;
100  do {
101  // クリアする
102  ClearJson();
103 
104  // 入力ストリームポインタをプッシュする
105  if ( !rcStream.PushStreamPoint( m_pcInputPointerList ) ) {
106  // 失敗!
107  break;
108  }
109  // 処理ブロック
110  else do {
111  // 空白をスキップする
112  rcStream.SkipSpace();
113 
114  // 1文字スキップする
115  if ( !rcStream.SkipChar( GetOpenChar() ) ) {
116  // 失敗!
117  break;
118  }
119  // 巡回する
120  else for ( ;; ) {
121  // JSON派生クラスを入力作成する
122  CJson* pcType = CreateInputJsonElement( rcStream, this );
123  if ( nullptr != pcType ) {
124  // JSON派生クラスポインタをプッシュする
125  if ( !Push( pcType ) ) {
126  // クリアする
127  ClearJson();
128 
129  // 失敗!
130  break;
131  }
132 
133  // 空白をスキップする
134  rcStream.SkipSpace();
135 
136  // 1文字スキップする
137  if ( rcStream.SkipChar( L',' ) ) {
138  // 継続する!
139  continue;
140  }
141  }
142 
143  // 空白をスキップする
144  rcStream.SkipSpace();
145 
146  // 1文字スキップする
147  if ( !rcStream.SkipChar( GetCloseChar() ) ) {
148  // クリアする
149  ClearJson();
150 
151  // 失敗!
152  break;
153  }
154  // JSON派生クラスポインタリストバッファをコンパクト化する
155  else if ( !CompactBuffer() ) {
156  // クリアする
157  ClearJson();
158 
159  // 失敗!
160  break;
161  }
162 
163  // 成功!
164  result = true;
165  break;
166  }
167  } while ( false );
168 
169  // 入力ストリームポインタをポップする
170  rcStream.PopStreamPoint( m_pcInputPointerList, !result );
171  } while ( false );
172 
173  // 実行結果を返す
174  return result;
175  }
virtual void ClearJson() noexcept override
JSONクラスクリア関数
CJson(CJson *pcParent) noexcept
コンストラクタ
Definition: CJson.cpp:33
virtual bool Push(CJson * const &rElement) noexcept
プッシュ関数
CArray< int > * m_pcInputPointerList
入力ストリームポインタリストポインタ
Definition: CJson.h:238
virtual CJson * CreateInputJsonElement(CStream &rcStream, CJson *pcParent) noexcept=0
JSONエレメント入力作成関数
virtual wchar_t GetCloseChar() noexcept=0
クローズ文字取得関数
virtual bool CompactBuffer() noexcept
バッファサイズコンパクト化関数
virtual wchar_t GetOpenChar() noexcept=0
オープン文字取得関数

呼び出し関係図:

被呼び出し関係図:

bool LibJson::CJsonContainer::OutputJson ( CStreamOut rcStreamOut)
overridevirtualnoexcept

JSONクラス出力関数

JSONクラス出力関数です。

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

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

CJsonContainer.cpp179 行目に定義があります。

参照先 GetCloseChar(), GetOpenChar(), LibCommon::CArray< CJson * >::m_nCount, LibCommon::CArray< CJson * >::m_pBuffer, LibJson::CJson::OutputJson().

179  {
180  // 処理ブロック
181  bool result = false;
182  do {
183  // 1文字出力する
184  if ( !rcStreamOut.OutputChar( GetOpenChar() ) ) {
185  // 失敗!
186  break;
187  }
188  // エレメント数を調べる
189  else if ( 0 >= m_nCount ) {
190  // 1文字出力する
191  if ( !rcStreamOut.OutputChar( GetCloseChar() ) ) {
192  // 失敗!
193  break;
194  }
195 
196  // 成功!
197  result = true;
198  break;
199  }
200 
201  // インデントする
202  if ( !rcStreamOut.Indent() ) {
203  // 失敗!
204  break;
205  }
206  // 巡回する
207  else for ( int nIndex = 0, nCount = m_nCount;; ++nIndex ) {
208  // 改行する
209  if ( !rcStreamOut.OutputNewLine() ) {
210  // 失敗!
211  break;
212  }
213  // インデックスを調べる
214  else if ( nCount == nIndex ) {
215  // アンインデントする
216  if ( !rcStreamOut.Unindent() ) {
217  // 失敗!
218  break;
219  }
220  // インデントを出力する
221  else if ( !rcStreamOut.OutputIndent() ) {
222  // 失敗!
223  break;
224  }
225  // 1文字出力する
226  else if ( !rcStreamOut.OutputChar( GetCloseChar() ) ) {
227  // 失敗!
228  break;
229  }
230 
231  // 成功!
232  result = true;
233  break;
234  }
235  // インデントを出力する
236  else if ( !rcStreamOut.OutputIndent() ) {
237  // 失敗!
238  break;
239  }
240 
241  // JSON派生クラスを取得する
242  CJson* pcType = m_pBuffer[ nIndex ];
243  if ( nullptr == pcType ) {
244  // 失敗!
245  break;
246  }
247  // JSON派生クラスを出力する
248  else if ( !pcType->OutputJson( rcStreamOut ) ) {
249  // 失敗!
250  break;
251  }
252  // インデックスを調べる
253  else if ( ( nCount - 1 ) > nIndex ) {
254  // 1文字出力する
255  if ( !rcStreamOut.OutputChar( L',' ) ) {
256  // 失敗!
257  break;
258  }
259  }
260  }
261  } while ( false );
262 
263  // 実行結果を返す
264  return result;
265  }
int m_nCount
要素数
Definition: CArray.h:669
CJson(CJson *pcParent) noexcept
コンストラクタ
Definition: CJson.cpp:33
virtual wchar_t GetCloseChar() noexcept=0
クローズ文字取得関数
CJson * * m_pBuffer
バッファポインタ
Definition: CArray.h:667
virtual wchar_t GetOpenChar() noexcept=0
オープン文字取得関数

呼び出し関係図:

CJson * LibJson::CJsonContainer::GetJsonElement ( int  nIndex)
virtualnoexcept

JSONエレメント取得関数

JSONエレメント取得関数です。

引数
[in]nIndexインデックス
戻り値
JSONクラスポインタ
注意
なし

CJsonContainer.cpp269 行目に定義があります。

参照先 LibCommon::CArray< CJson * >::m_nCount, LibCommon::CArray< CJson * >::m_pBuffer.

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

269  {
270  // 処理ブロック
271  CJson* result = nullptr;
272  do {
273  // インデックスを調べる
274  if ( m_nCount <= nIndex ) {
275  // 失敗!
276  break;
277  }
278 
279  // JSONクラスを取得する
280  result = m_pBuffer[ nIndex ];
281  } while ( false );
282 
283  // 実行結果を返す
284  return result;
285  }
int m_nCount
要素数
Definition: CArray.h:669
CJson(CJson *pcParent) noexcept
コンストラクタ
Definition: CJson.cpp:33
CJson * * m_pBuffer
バッファポインタ
Definition: CArray.h:667

被呼び出し関係図:

bool LibJson::CJsonContainer::SetJsonElement ( int  nIndex,
CJson pcJson 
)
virtualnoexcept

JSONエレメント設定関数

JSONエレメント設定関数です。

引数
[in]nIndexインデックス
[in]pcJsonJSONクラスポインタ
戻り値
実行結果
  • true 成功
  • false 失敗
注意
なし

CJsonContainer.cpp289 行目に定義があります。

参照先 ExtendJsonElementCount(), LibCommon::CArray< CJson * >::m_pBuffer.

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

289  {
290  // 処理ブロック
291  bool result = false;
292  do {
293  // インデックスを調べる
294  if ( 0 > nIndex ) {
295  // 失敗!
296  break;
297  }
298  // エレメント数を拡張する
299  else if ( !ExtendJsonElementCount( nIndex + 1 ) ) {
300  // 失敗!
301  break;
302  }
303 
304  // JSONクラスを設定する
305  m_pBuffer[ nIndex ] = pcJson;
306 
307  // 成功!
308  result = true;
309  } while ( false );
310 
311  // 実行結果を返す
312  return result;
313  }
virtual bool ExtendJsonElementCount(int nCount) noexcept
JSONエレメント数拡張関数
CJson * * m_pBuffer
バッファポインタ
Definition: CArray.h:667

呼び出し関係図:

被呼び出し関係図:

bool LibJson::CJsonContainer::ExtendJsonElementCount ( int  nCount)
virtualnoexcept

JSONエレメント数拡張関数

JSONエレメント数拡張関数です。

引数
[in]nCountエレメント数
戻り値
実行結果
  • true 成功
  • false 失敗
注意
なし

CJsonContainer.cpp317 行目に定義があります。

参照先 LibCommon::CArray< CJson * >::m_nCount, LibCommon::CArray< CJson * >::m_pBuffer, LibCommon::CArray< CJson * >::UpdateBuffer().

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

317  {
318  // 処理ブロック
319  bool result = false;
320  do {
321  // バッファサイズを更新する
322  if ( !UpdateBuffer( nCount ) ) {
323  // 失敗!
324  break;
325  }
326  // 巡回する
327  else for ( ; nCount > m_nCount; ++m_nCount ) {
328  // JSON固定値をエレメントとして設定する
329  m_pBuffer[ m_nCount ] = new CJsonFixed( this, L"null" );
330  }
331 
332  // 成功!
333  result = true;
334  } while ( false );
335 
336  // 実行結果を返す
337  return result;
338  }
int m_nCount
要素数
Definition: CArray.h:669
CJson * * m_pBuffer
バッファポインタ
Definition: CArray.h:667
virtual bool UpdateBuffer(int nCount) noexcept
バッファサイズ更新関数

呼び出し関係図:

被呼び出し関係図:

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

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