Solution46
LibJson::CJsonObject クラス

JSONオブジェクトクラス [詳解]

#include "CJsonObject.h"

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

公開メンバ関数

 CJsonObject (CJson *pcParent) noexcept
 コンストラクタ [詳解]
 
virtual ~CJsonObject () noexcept
 デストラクタ [詳解]
 
virtual EJsonClass GetJsonClass () noexcept override
 JSONクラス種別取得関数 [詳解]
 
virtual bool IsJsonObject () noexcept override
 JSONクラス種別判定関数 [詳解]
 
virtual CJsonObjectGetJsonObject () noexcept override
 JSONクラスインスタンス取得関数 [詳解]
 
virtual wchar_t GetOpenChar () noexcept override
 オープン文字取得関数 [詳解]
 
virtual wchar_t GetCloseChar () noexcept override
 クローズ文字取得関数 [詳解]
 
virtual CJsonCreateInputJsonElement (CStream &rcStream, CJson *pcParent) noexcept override
 JSONエレメント入力作成関数 [詳解]
 
virtual CJsonPairGetJsonPair (wchar_t const *pszName) noexcept
 JSONペア取得関数 [詳解]
 
virtual int GetJsonElementIndex (wchar_t const *pszName) noexcept
 JSONエレメントインデックス取得関数 [詳解]
 
- 基底クラス LibJson::CJsonContainer に属する継承公開メンバ関数
 CJsonContainer (CJson *pcParent) noexcept
 コンストラクタ [詳解]
 
virtual ~CJsonContainer () noexcept
 デストラクタ [詳解]
 
virtual bool IsJsonContainer () noexcept override
 JSONクラス種別判定関数 [詳解]
 
virtual CJsonContainerGetJsonContainer () noexcept override
 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 IsJsonArray () noexcept
 
virtual bool IsJsonString () noexcept
 
virtual bool IsJsonNumber () noexcept
 
virtual bool IsJsonFixed () noexcept
 
virtual bool IsJsonPair () noexcept
 
virtual bool IsJsonToken () noexcept
 
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
 ポップフロント関数 [詳解]
 

静的公開メンバ関数

static CJsonObjectCreateInputJson (CStream &rcStream, CJson *pcParent) noexcept
 JSONオブジェクト入力作成関数 [詳解]
 
- 基底クラス LibJson::CJsonValue に属する継承静的公開メンバ関数
static CJsonValueCreateInputJson (CStream &rcStream, CJson *pcParent) noexcept
 JSONバリュー入力作成関数 [詳解]
 

非公開メンバ関数

 CJsonObject (CJsonObject const &)=delete
 
CJsonObjectoperator= (CJsonObject 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クラス種別列挙体 [詳解]
 
- 基底クラス 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オブジェクトクラスです。

注意
なし

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

構築子と解体子

LibJson::CJsonObject::CJsonObject ( CJson pcParent)
explicitnoexcept

コンストラクタ

コンストラクタです。

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

CJsonObject.cpp32 行目に定義があります。

34  : CJsonContainer( pcParent )
35  {}
CJsonContainer(CJson *pcParent) noexcept
コンストラクタ
virtual LibJson::CJsonObject::~CJsonObject ( )
inlinevirtualnoexcept

デストラクタ

デストラクタです。

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

CJsonObject.h55 行目に定義があります。

55 {}
LibJson::CJsonObject::CJsonObject ( CJsonObject const &  )
privatedelete

関数詳解

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

JSONクラス種別取得関数

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

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

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

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

69 { return EJsonClass::JsonObject; }
JSONオブジェクトクラス
virtual bool LibJson::CJsonObject::IsJsonObject ( )
inlineoverridevirtualnoexcept

JSONクラス種別判定関数

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

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

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

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

82 { return true; }
virtual CJsonObject* LibJson::CJsonObject::GetJsonObject ( )
inlineoverridevirtualnoexcept

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

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

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

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

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

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

93 { return this; }

被呼び出し関係図:

virtual wchar_t LibJson::CJsonObject::GetOpenChar ( )
inlineoverridevirtualnoexcept

オープン文字取得関数

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

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

LibJson::CJsonContainerを実装しています。

CJsonObject.h104 行目に定義があります。

104 { return L'{'; }
virtual wchar_t LibJson::CJsonObject::GetCloseChar ( )
inlineoverridevirtualnoexcept

クローズ文字取得関数

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

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

LibJson::CJsonContainerを実装しています。

CJsonObject.h115 行目に定義があります。

115 { return L'}'; }
virtual CJson* LibJson::CJsonObject::CreateInputJsonElement ( CStream rcStream,
CJson pcParent 
)
inlineoverridevirtualnoexcept

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

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

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

LibJson::CJsonContainerを実装しています。

CJsonObject.h127 行目に定義があります。

参照先 LibJson::CJsonPair::CreateInputJson().

127 { return CJsonPair::CreateInputJson( rcStream, pcParent ); }
static CJsonPair * CreateInputJson(CStream &rcStream, CJson *pcParent) noexcept
JSONペア入力作成関数
Definition: CJsonPair.cpp:199

呼び出し関係図:

CJsonPair * LibJson::CJsonObject::GetJsonPair ( wchar_t const *  pszName)
virtualnoexcept

JSONペア取得関数

JSONペア取得関数です。

引数
[in]pszName名前文字列
戻り値
JSONペアポインタ
注意
なし

CJsonObject.cpp41 行目に定義があります。

参照先 LibJson::CJsonPair::GetJsonPair().

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

41  {
42  // 処理ブロック
43  CJsonPair* result = nullptr;
44  do {
45  // JSONエレメントインデックスを取得する
46  int nIndex = GetJsonElementIndex( pszName );
47  if ( 0 > nIndex ) {
48  // 失敗!
49  break;
50  }
51 
52  // JSONペアを取得する
53  CJsonPair* pcJsonPair = ( *this )[ nIndex ]->GetJsonPair();
54  if ( nullptr == pcJsonPair ) {
55  // 失敗!
56  break;
57  }
58 
59  // 成功!
60  result = pcJsonPair;
61  } while ( false );
62 
63  // 実行結果を返す
64  return result;
65  }
virtual int GetJsonElementIndex(wchar_t const *pszName) noexcept
JSONエレメントインデックス取得関数
Definition: CJsonObject.cpp:69

呼び出し関係図:

被呼び出し関係図:

int LibJson::CJsonObject::GetJsonElementIndex ( wchar_t const *  pszName)
virtualnoexcept

JSONエレメントインデックス取得関数

JSONエレメントインデックス取得関数です。

引数
[in]pszName名前文字列
戻り値
インデックス
注意
なし

CJsonObject.cpp69 行目に定義があります。

参照先 LibJson::CJson::GetJsonPair(), LibJson::CJsonPair::GetJsonString().

69  {
70  // 処理ブロック
71  int result = -1;
72  do {
73  // 名前文字列ポインタを調べる
74  if ( nullptr == pszName ) {
75  // 失敗!
76  break;
77  }
78  // 巡回する
79  else for ( int nIndex = 0; this->GetCount() > nIndex; ++nIndex ) {
80  // JSONクラスを取得する
81  CJson* pcJson = ( *this )[ nIndex ];
82  if ( nullptr != pcJson ) {
83  // JSONペアを取得する
84  CJsonPair* pcJsonPair = pcJson->GetJsonPair();
85  if ( nullptr != pcJsonPair ) {
86  // JSON文字列を取得する
87  CJsonString* pcJsonString = pcJsonPair->GetJsonString();
88  if ( nullptr != pcJsonString ) {
89  // 名前を取得する
90  wchar_t const* pszString = *pcJsonString;
91  if ( nullptr != pszString ) {
92  // 名前を調べる
93  if ( 0 == ::wcscmp( pszName, pszString ) ) {
94  // 成功!
95  result = nIndex;
96  break;
97  }
98  }
99  }
100  }
101  }
102  }
103  } while ( false );
104 
105  // 実行結果を返す
106  return result;
107  }
CJson(CJson *pcParent) noexcept
コンストラクタ
Definition: CJson.cpp:33
virtual int GetCount() const noexcept
配列要素数取得関数
Definition: CArray.h:149

呼び出し関係図:

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

JSONオブジェクト入力作成関数

JSONオブジェクト入力作成関数です。

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

CJsonObject.cpp113 行目に定義があります。

参照先 LibJson::CJsonContainer::InputJson().

参照元 LibJson::CJsonValue::CreateInputJson().

113  {
114  // 処理ブロック
115  CJsonObject* result = nullptr;
116  do {
117  // JSONオブジェクトを作成する
118  CJsonObject* pcJsonObject = new CJsonObject( pcParent );
119  if ( nullptr == pcJsonObject ) {
120  // 失敗!
121  break;
122  }
123  // JSONオブジェクトを入力する
124  else if ( !pcJsonObject->InputJson( rcStream ) ) {
125  // JSONオブジェクトを削除する
126  delete pcJsonObject;
127 
128  // 失敗!
129  break;
130  }
131 
132  // 成功!
133  result = pcJsonObject;
134  } while ( false );
135 
136  // 実行結果を返す
137  return result;
138  }
CJsonObject(CJson *pcParent) noexcept
コンストラクタ
Definition: CJsonObject.cpp:32

呼び出し関係図:

被呼び出し関係図:

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

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