Solution46
LibCommon::CStream クラスabstract

ストリームクラス [詳解]

#include "CStream.h"

LibCommon::CStream の継承関係図
Inheritance graph
LibCommon::CStream 連携図
Collaboration graph

公開メンバ関数

virtual bool InputChar (wchar_t &rCh) noexcept=0
 1文字入力関数 [詳解]
 
virtual int InputString (wchar_t *pszBuffer, int nSize) noexcept
 文字列入力関数 [詳解]
 
virtual int GetStreamSize () const noexcept
 ストリームサイズ取得関数 [詳解]
 
virtual int GetStreamPoint () const noexcept
 ストリームポインタ取得関数 [詳解]
 
virtual bool SetStreamPoint (int nPoint) noexcept
 ストリームポインタ設定関数 [詳解]
 
virtual bool SetStreamEnd () noexcept
 ストリーム終端設定関数 [詳解]
 
virtual bool IsStreamEnd () const noexcept
 ストリーム終端状態取得関数 [詳解]
 
virtual bool SkipSpace () noexcept
 空白スキップ関数 [詳解]
 
virtual bool SkipChar (wchar_t ch, bool bIgnore=false) noexcept
 1文字スキップ関数 [詳解]
 
virtual bool SkipChar (wchar_t const *pszString, bool bIgnore=false) noexcept
 1文字スキップ関数 [詳解]
 
virtual bool PushStreamPoint (CArray< int > *pcPointerList) noexcept
 ストリームポインタプッシュ関数 [詳解]
 
virtual bool PopStreamPoint (CArray< int > *pcPointerList, bool bResume) noexcept
 ストリームポインタポップ数 [詳解]
 
- 基底クラス LibCommon::CStreamOut に属する継承公開メンバ関数
virtual bool OutputString (wchar_t const *pszString) noexcept=0
 文字列出力関数 [詳解]
 
virtual bool OutputChar (wchar_t ch) noexcept
 1文字出力関数 [詳解]
 
virtual bool OutputFormat (wchar_t const *pszFormat,...) noexcept
 書式設定文字列出力関数 [詳解]
 
virtual bool OutputArgs (wchar_t const *pszFormat, va_list vaArgs) noexcept
 引数リスト文字列出力関数 [詳解]
 
virtual bool OutputNewLine () noexcept
 改行出力関数 [詳解]
 
virtual bool OutputLineHeader () noexcept
 行ヘッダー出力関数 [詳解]
 
virtual bool UpdateLineNumber () noexcept
 行番号更新関数 [詳解]
 
virtual int GetLineNumber () noexcept
 行番号取得関数 [詳解]
 
virtual int GetIndentCount () noexcept
 インデントカウント取得関数 [詳解]
 
virtual bool OutputIndent () noexcept
 インデント出力関数 [詳解]
 
virtual bool Indent () noexcept
 インデント関数 [詳解]
 
virtual bool Unindent () noexcept
 アンインデント関数 [詳解]
 
virtual bool OutputLineString (wchar_t const *pszString, bool bHeader=true, bool bIndent=true) noexcept
 文字列行出力関数 [詳解]
 
virtual bool OutputLineFormat (wchar_t const *pszFormat,...) noexcept
 書式設定文字列行出力関数 [詳解]
 
virtual bool OutputLineArgs (wchar_t const *pszFormat, va_list vaArgs) noexcept
 引数リスト文字列行出力関数 [詳解]
 
virtual bool ExOutputLineFormat (bool bHeader, bool bIndent, wchar_t const *pszFormat,...) noexcept
 拡張書式設定文字列行出力関数 [詳解]
 
virtual bool ExOutputLineArgs (bool bHeader, bool bIndent, wchar_t const *pszFormat, va_list vaArgs) noexcept
 拡張引数リスト文字列行出力関数 [詳解]
 

限定公開メンバ関数

 CStream () noexcept
 コンストラクタ [詳解]
 
virtual ~CStream () noexcept
 デストラクタ [詳解]
 
- 基底クラス LibCommon::CStreamOut に属する継承限定公開メンバ関数
 CStreamOut () noexcept
 コンストラクタ [詳解]
 
virtual ~CStreamOut () noexcept
 デストラクタ [詳解]
 

非公開メンバ関数

 CStream (CStream const &)=delete
 
CStreamoperator= (CStream const &)=delete
 

その他の継承メンバ

- 基底クラス LibCommon::CStreamOut に属する継承限定公開変数類
int m_nLine
 行番号 [詳解]
 
int m_nIndent
 インデントカウント [詳解]
 
- 基底クラス LibCommon::CStreamOut に属する継承静的限定公開変数類
static int const FORMAT_BUFFER_SIZE = ( 2048 - 1 )
 書式設定文字列バッファサイズ [詳解]
 

詳解

ストリームクラス

ストリームクラスです。

注意
抽象クラスです。

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

構築子と解体子

LibCommon::CStream::CStream ( )
explicitprotectednoexcept

コンストラクタ

コンストラクタです。

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

CStream.cpp33 行目に定義があります。

35  : CStreamOut()
36  {}
CStreamOut() noexcept
コンストラクタ
Definition: CStreamOut.cpp:30
virtual LibCommon::CStream::~CStream ( )
inlineprotectedvirtualnoexcept

デストラクタ

デストラクタです。

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

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

55 {}
LibCommon::CStream::CStream ( CStream const &  )
privatedelete

関数詳解

virtual bool LibCommon::CStream::InputChar ( wchar_t &  rCh)
pure virtualnoexcept

1文字入力関数

1文字入力関数です。

引数
[out]rCh文字コード参照
戻り値
実行結果
  • true 成功
  • false 失敗
注意
純粋仮想関数です。

LibCommon::CConsole, LibCommon::CStringStream, LibCommon::CFileStreamで実装されています。

参照元 InputString(), SkipChar().

被呼び出し関係図:

int LibCommon::CStream::InputString ( wchar_t *  pszBuffer,
int  nSize 
)
virtualnoexcept

文字列入力関数

文字列入力関数です。

引数
[in]pszBuffer文字列バッファポインタ
[in]nSizeバッファサイズ
戻り値
入力文字数
注意
なし

LibCommon::CConsoleで再実装されています。

CStream.cpp42 行目に定義があります。

参照先 InputChar().

42  {
43  // 処理ブロック
44  int result = 0;
45  do {
46  // 文字列バッファポインタを調べる
47  if ( nullptr == pszBuffer ) {
48  // 失敗!
49  break;
50  }
51  // 巡回する
52  else for ( int uCount = 0;; ) {
53  // 1文字入力する
54  wchar_t ch;
55  if ( !InputChar( ch ) ) {
56  // 失敗!
57  break;
58  }
59  // 文字コードを調べる
60  else if ( ( L'\n' == ch ) || ( L'\0' == ch ) ) {
61  // 終端文字コードを設定する
62  pszBuffer[ uCount ] = L'\0';
63 
64  // 成功!
65  result = uCount;
66  break;
67  }
68  // 文字コードを調べる
69  else if ( 0 != ::iswprint( ch ) ) {
70  // 入力文字数を調べる
71  if ( ( nSize - 1 ) > uCount ) {
72  // 1文字追加する
73  pszBuffer[ uCount++ ] = ch;
74  }
75  }
76  }
77  } while ( false );
78 
79  // 実行結果を返す
80  return result;
81  }
virtual bool InputChar(wchar_t &rCh) noexcept=0
1文字入力関数

呼び出し関係図:

virtual int LibCommon::CStream::GetStreamSize ( ) const
inlinevirtualnoexcept

ストリームサイズ取得関数

ストリームサイズ取得関数です。

引数
なし
戻り値
ストリームサイズ
注意
なし

LibCommon::CStringStream, LibCommon::CFileStreamで再実装されています。

CStream.h94 行目に定義があります。

参照元 IsStreamEnd().

94 { return 0; }

被呼び出し関係図:

virtual int LibCommon::CStream::GetStreamPoint ( ) const
inlinevirtualnoexcept

ストリームポインタ取得関数

ストリームポインタ取得関数です。

引数
なし
戻り値
ストリームポインタ
注意
なし

LibCommon::CStringStream, LibCommon::CFileStreamで再実装されています。

CStream.h105 行目に定義があります。

参照元 IsStreamEnd(), PushStreamPoint(), SkipChar().

105 { return 0; }

被呼び出し関係図:

virtual bool LibCommon::CStream::SetStreamPoint ( int  nPoint)
inlinevirtualnoexcept

ストリームポインタ設定関数

ストリームポインタ設定関数です。

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

LibCommon::CStringStream, LibCommon::CFileStreamで再実装されています。

CStream.h118 行目に定義があります。

参照元 PopStreamPoint(), SkipChar().

118 { return false; }

被呼び出し関係図:

virtual bool LibCommon::CStream::SetStreamEnd ( )
inlinevirtualnoexcept

ストリーム終端設定関数

ストリーム終端設定関数です。

引数
なし
戻り値
実行結果
  • true 成功
  • false 失敗
注意
なし

LibCommon::CStringStream, LibCommon::CFileStreamで再実装されています。

CStream.h131 行目に定義があります。

131 { return false; }
bool LibCommon::CStream::IsStreamEnd ( ) const
virtualnoexcept

ストリーム終端状態取得関数

ストリーム終端状態取得関数です。

引数
なし
戻り値
実行結果
  • true 成功
  • false 失敗
注意
なし

CStream.cpp85 行目に定義があります。

参照先 GetStreamPoint(), GetStreamSize().

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

85  {
86  // 処理ブロック
87  bool result = false;
88  do {
89  // ストリームポインタを調べる
90  if ( GetStreamSize() > GetStreamPoint() ) {
91  // 失敗!
92  break;
93  }
94 
95  // 成功!
96  result = true;
97  } while ( false );
98 
99  // 実行結果を返す
100  return result;
101  }
virtual int GetStreamPoint() const noexcept
ストリームポインタ取得関数
Definition: CStream.h:105
virtual int GetStreamSize() const noexcept
ストリームサイズ取得関数
Definition: CStream.h:94

呼び出し関係図:

被呼び出し関係図:

bool LibCommon::CStream::SkipSpace ( )
virtualnoexcept

空白スキップ関数

空白スキップ関数です。

引数
なし
戻り値
実行結果
  • true 成功
  • false 失敗
注意
なし

CStream.cpp105 行目に定義があります。

参照先 SkipChar().

105  {
106  // 処理ブロック
107  bool result = false;
108  do {
109  // 巡回する
110  for ( ;; ) {
111  // 空白文字をスキップする
112  if ( !SkipChar( L" \t\r\n" ) ) {
113  // 終了!
114  break;
115  }
116 
117  // 成功!
118  result = true;
119  }
120  } while ( false );
121 
122  // 実行結果を返す
123  return result;
124  }
virtual bool SkipChar(wchar_t ch, bool bIgnore=false) noexcept
1文字スキップ関数
Definition: CStream.cpp:128

呼び出し関係図:

bool LibCommon::CStream::SkipChar ( wchar_t  ch,
bool  bIgnore = false 
)
virtualnoexcept

1文字スキップ関数

1文字スキップ関数です。

引数
[in]chスキップ文字コード
[in]bIgnore大小文字無視フラグ
戻り値
実行結果
  • true 成功
  • false 失敗
注意
なし

CStream.cpp128 行目に定義があります。

参照先 LibCommon::CompareCharCode(), GetStreamPoint(), InputChar(), SetStreamPoint().

参照元 SkipChar(), SkipSpace().

128  {
129  // 処理ブロック
130  bool result = false;
131  do {
132  // ストリームポインタを取得する
133  int nPoint = GetStreamPoint();
134 
135  // 1文字入力する
136  wchar_t ch2;
137  if ( !InputChar( ch2 ) ) {
138  // 失敗!
139  break;
140  }
141  // 文字コードを調べる
142  else if ( !CompareCharCode( ch, ch2, bIgnore ) ) {
143  // ストリームポインタを復元する
144  SetStreamPoint( nPoint );
145 
146  // 失敗!
147  break;
148  }
149 
150  // 成功!
151  result = true;
152  } while ( false );
153 
154  // 実行結果を返す
155  return result;
156  }
LIB_COMMON_API bool CompareCharCode(wchar_t ch1, wchar_t ch2, bool bIgnore) noexcept
文字コード比較関数
Definition: LibUtility.cpp:393
virtual bool InputChar(wchar_t &rCh) noexcept=0
1文字入力関数
virtual int GetStreamPoint() const noexcept
ストリームポインタ取得関数
Definition: CStream.h:105
virtual bool SetStreamPoint(int nPoint) noexcept
ストリームポインタ設定関数
Definition: CStream.h:118

呼び出し関係図:

被呼び出し関係図:

bool LibCommon::CStream::SkipChar ( wchar_t const *  pszString,
bool  bIgnore = false 
)
virtualnoexcept

1文字スキップ関数

1文字スキップ関数です。

引数
[in]pszStringスキップ文字列ポインタ
[in]bIgnore最小文字無視フラグ
戻り値
実行結果
  • true 成功
  • false 失敗
注意
なし

CStream.cpp160 行目に定義があります。

参照先 SkipChar().

160  {
161  // 処理ブロック
162  bool result = false;
163  do {
164  // 文字列ポインタを調べる
165  if ( nullptr == pszString ) {
166  // 失敗!
167  break;
168  }
169  // 巡回する
170  else for ( ;; ++pszString ) {
171  // 文字コードを調べる
172  if ( L'\0' == *pszString ) {
173  // 失敗!
174  break;
175  }
176  // 1文字スキップする
177  else if ( SkipChar( *pszString, bIgnore ) ) {
178  // 成功!
179  result = true;
180  break;
181  }
182  }
183  } while ( false );
184 
185  // 実行結果を返す
186  return result;
187  }
virtual bool SkipChar(wchar_t ch, bool bIgnore=false) noexcept
1文字スキップ関数
Definition: CStream.cpp:128

呼び出し関係図:

bool LibCommon::CStream::PushStreamPoint ( CArray< int > *  pcPointerList)
virtualnoexcept

ストリームポインタプッシュ関数

ストリームポインタプッシュ関数です。

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

CStream.cpp191 行目に定義があります。

参照先 GetStreamPoint().

参照元 LibJson::CJsonToken::PushStreamPoints().

191  {
192  // 処理ブロック
193  bool result = false;
194  do {
195  // ストリームポインタを取得する
196  int nPoint = GetStreamPoint();
197 
198  // ストリームポインタをプッシュする
199  if ( !pcPointerList->Push( nPoint ) ) {
200  // 失敗!
201  break;
202  }
203 
204  // 成功!
205  result = true;
206  } while ( false );
207 
208  // 実行結果を返す
209  return result;
210  }
virtual int GetStreamPoint() const noexcept
ストリームポインタ取得関数
Definition: CStream.h:105
virtual bool Push(Type const &rElement) noexcept
プッシュ関数
Definition: CArray.hpp:686

呼び出し関係図:

被呼び出し関係図:

bool LibCommon::CStream::PopStreamPoint ( CArray< int > *  pcPointerList,
bool  bResume 
)
virtualnoexcept

ストリームポインタポップ数

ストリームポインタポップ数です。

引数
[in]pcPointerListストリームポインタリストポインタ
[in]bResumeポインタ復元フラグ
戻り値
実行結果
  • true 成功
  • false 失敗
注意
なし

CStream.cpp214 行目に定義があります。

参照先 LIB_COMMON_API, SetStreamPoint().

参照元 LibJson::CJsonToken::PopStreamPoints(), LibJson::CJsonToken::PushStreamPoints().

214  {
215  // 処理ブロック
216  bool result = false;
217  do {
218  // ストリームポインタをポップする
219  int nPoint;
220  if ( !pcPointerList->Pop( nPoint ) ) {
221  // 失敗!
222  break;
223  }
224 
225  // 復元フラグを調べる
226  if ( bResume ) {
227  // ストリームポインタを設定する
228  SetStreamPoint( nPoint );
229  }
230 
231  // 成功!
232  result = true;
233  } while ( false );
234 
235  // 実行結果を返す
236  return result;
237  }
virtual bool Pop(Type &rElement) noexcept
ポップ関数
Definition: CArray.hpp:710
virtual bool SetStreamPoint(int nPoint) noexcept
ストリームポインタ設定関数
Definition: CStream.h:118

呼び出し関係図:

被呼び出し関係図:

CStream& LibCommon::CStream::operator= ( CStream const &  )
privatedelete

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