Solution46
CJson.cpp
[詳解]
1 //=============================================================================
2 /// @file
3 /// JSONクラス実装ファイル
4 ///
5 /// JSONクラス実装ファイルです。
6 ///
7 /// $Id: CJson.cpp 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 managed( push, off )
14 
15 //=============================================================================
16 // インクルードファイル
17 #include <CJson.h>
18 #include <LibUtility.h>
19 
20 //=============================================================================
21 // インクルード実装ファイル
22 #include <CArray.hpp>
23 
24 //=============================================================================
25 // JSONライブラリ名前空間
26 namespace LibJson {
27  //=========================================================================
28  // JSONクラス
29  //=========================================================================
30  // 構築子と解体子
31  //-------------------------------------------------------------------------
32  // コンストラクタ
33  CJson::CJson( CJson* pcParent ) noexcept
34  // メンバ変数初期化
35  : m_pcParent( pcParent )
36  , m_pcInputPointerList( nullptr )
37  {
38  // 処理ブロック
39  do {
40  // 入力ストリームポインタリストを作成する
41  m_pcInputPointerList = new CArray< int >;
42  if ( nullptr == m_pcInputPointerList ) {
43  // 致命的エラー!
45  break;
46  }
47  } while ( false );
48  }
49 
50  //-------------------------------------------------------------------------
51  // デストラクタ
52  CJson::~CJson() noexcept {
53  // 入力ストリームポインタリストを削除する
54  delete m_pcInputPointerList;
55  }
56 
57  //=========================================================================
58  // 公開関数
59  //-------------------------------------------------------------------------
60  // ルートJSONクラス取得関数
61  CJson* CJson::GetJsonRoot() noexcept {
62  // 処理ブロック
63  CJson* result = nullptr;
64  do {
65  // 巡回する
66  for ( CJson* pcJson = const_cast< CJson* >( this );; ) {
67  // 親JSONクラスポインタを調べる
68  CJson* pcParent = pcJson->GetJsonParent();
69  if ( nullptr == pcParent ) {
70  // 成功!
71  result = pcJson;
72  break;
73  }
74 
75  // JSONクラスポインタを更新する
76  pcJson = pcParent;
77  }
78  } while ( false );
79 
80  // 実行結果を返す
81  return result;
82  }
83 
84  //-------------------------------------------------------------------------
85  // JSONクラスクリア関数
86  void CJson::ClearJson() noexcept {
87  // 入力ストリームポインタリストをクリアする
89  }
90 
91  //-------------------------------------------------------------------------
92  // JSONクラスコンパクト化関数
93  bool CJson::CompactJson() noexcept {
94  // 処理ブロック
95  bool result = false;
96  do {
97  // 入力ストリームポインタリストバッファサイズをコンパクト化する
99  // 失敗!
100  break;
101  }
102 
103  // 成功!
104  result = true;
105  } while ( false );
106 
107  // 実行結果を返す
108  return result;
109  }
110 
111  //=========================================================================
112  // テンプレートクラス明示的インスタンス生成宣言
113  template class LIB_JSON_API CArray< int >;
114 }
115 
116 #pragma managed( pop )
#define NotifyFatalError()
致命的エラー発生通知マクロ
Definition: LibUtility.h:22
virtual CJson * GetJsonParent() noexcept
親JSONクラス取得関数
Definition: CJson.h:106
virtual void Clear() noexcept
クリア関数
Definition: CArray.hpp:209
JSONライブラリ名前空間
Definition: CJson.h:24
CJson(CJson *pcParent) noexcept
コンストラクタ
Definition: CJson.cpp:33
配列クラス実装ヘッダファイル
virtual CJson * GetJsonRoot() noexcept
ルートJSONクラス取得関数
Definition: CJson.cpp:61
virtual ~CJson() noexcept
デストラクタ
Definition: CJson.cpp:52
JSONクラス
Definition: CJson.h:44
CArray< int > * m_pcInputPointerList
入力ストリームポインタリストポインタ
Definition: CJson.h:238
virtual bool CompactJson() noexcept
JSONクラスコンパクト化関数
Definition: CJson.cpp:93
#define LIB_JSON_API
ダイナミックライブラリインポート宣言
Definition: LibJsonDef.h:29
virtual bool CompactBuffer() noexcept
バッファサイズコンパクト化関数
Definition: CArray.hpp:297
JSONクラスヘッダファイル
ユーティリティライブラリヘッダファイル
virtual void ClearJson() noexcept
JSONクラスクリア関数
Definition: CJson.cpp:86