Solution46
LibCommon::CStreamOut クラスabstract

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

#include "CStreamOut.h"

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

公開メンバ関数

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
 拡張引数リスト文字列行出力関数 [詳解]
 

限定公開メンバ関数

 CStreamOut () noexcept
 コンストラクタ [詳解]
 
virtual ~CStreamOut () noexcept
 デストラクタ [詳解]
 

限定公開変数類

int m_nLine
 行番号 [詳解]
 
int m_nIndent
 インデントカウント [詳解]
 

静的限定公開変数類

static int const FORMAT_BUFFER_SIZE = ( 2048 - 1 )
 書式設定文字列バッファサイズ [詳解]
 

非公開メンバ関数

 CStreamOut (CStreamOut const &)=delete
 
CStreamOutoperator= (CStreamOut const &)=delete
 

詳解

ストリーム出力クラス

ストリーム出力クラスです。

注意
抽象クラスです。

CStreamOut.h30 行目に定義があります。

構築子と解体子

LibCommon::CStreamOut::CStreamOut ( )
explicitprotectednoexcept

コンストラクタ

コンストラクタです。

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

CStreamOut.cpp30 行目に定義があります。

32  : m_nLine( 0 )
33  , m_nIndent( 0 )
34  {}
int m_nIndent
インデントカウント
Definition: CStreamOut.h:297
int m_nLine
行番号
Definition: CStreamOut.h:296
LibCommon::CStreamOut::~CStreamOut ( )
protectedvirtualnoexcept

デストラクタ

デストラクタです。

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

CStreamOut.cpp38 行目に定義があります。

38  {
39  }
LibCommon::CStreamOut::CStreamOut ( CStreamOut const &  )
privatedelete

関数詳解

virtual bool LibCommon::CStreamOut::OutputString ( wchar_t const *  pszString)
pure virtualnoexcept

文字列出力関数

文字列出力関数です。

引数
[in]pszString文字列ポインタ
戻り値
実行結果
  • true 成功
  • false 失敗
注意
純粋仮想関数です。

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

参照元 OutputArgs(), OutputChar(), OutputIndent(), OutputLineString(), OutputNewLine().

被呼び出し関係図:

bool LibCommon::CStreamOut::OutputChar ( wchar_t  ch)
virtualnoexcept

1文字出力関数

1文字出力関数です。

引数
[in]ch文字コード
戻り値
実行結果
  • true 成功
  • false 失敗
注意
なし

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

CStreamOut.cpp45 行目に定義があります。

参照先 OutputString().

参照元 LibCommon::CConsole::InputString().

45  {
46  // 処理ブロック
47  bool result = false;
48  do {
49  // 文字列を出力する
50  wchar_t szBuffer[ 2 ] = { ch, L'\0' };
51  if ( !OutputString( szBuffer ) ) {
52  // 失敗!
53  break;
54  }
55 
56  // 成功!
57  result = true;
58  } while ( false );
59 
60  // 実行結果を返す
61  return result;
62  }
virtual bool OutputString(wchar_t const *pszString) noexcept=0
文字列出力関数

呼び出し関係図:

被呼び出し関係図:

bool LibCommon::CStreamOut::OutputFormat ( wchar_t const *  pszFormat,
  ... 
)
virtualnoexcept

書式設定文字列出力関数

書式設定文字列出力関数です。

引数
[in]pszFormat書式設定文字列
[in]...可変長引数リスト
戻り値
実行結果
  • true 成功
  • false 失敗
注意
なし

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

参照先 OutputArgs().

参照元 OutputLineHeader().

66  {
67  // 処理ブロック
68  bool result = false;
69  do {
70  // 引数リストを作成する
71  va_list vaArgs;
72  va_start( vaArgs, pszFormat );
73 
74  // 処理ブロック
75  do {
76  // 引数リスト文字列を出力する
77  if ( !OutputArgs( pszFormat, vaArgs ) ) {
78  // 失敗!
79  break;
80  }
81 
82  // 成功!
83  result = true;
84  } while ( false );
85 
86  // 引数リストを解放する
87  va_end( vaArgs );
88  } while ( false );
89 
90  // 実行結果を返す
91  return result;
92  }
virtual bool OutputArgs(wchar_t const *pszFormat, va_list vaArgs) noexcept
引数リスト文字列出力関数
Definition: CStreamOut.cpp:96

呼び出し関係図:

被呼び出し関係図:

bool LibCommon::CStreamOut::OutputArgs ( wchar_t const *  pszFormat,
va_list  vaArgs 
)
virtualnoexcept

引数リスト文字列出力関数

引数リスト文字列出力関数です。

引数
[in]pszFormat書式設定文字列
[in]vaArgs引数リスト
戻り値
実行結果
  • true 成功
  • false 失敗
注意
なし

CStreamOut.cpp96 行目に定義があります。

参照先 LibCommon::ExpandFormatArgs(), FORMAT_BUFFER_SIZE, OutputString().

参照元 OutputFormat().

96  {
97  // 処理ブロック
98  bool result = false;
99  do {
100  // 書式設定文字列ポインタを調べる
101  if ( nullptr == pszFormat ) {
102  // 失敗!
103  break;
104  }
105 
106  // 書式設定文字列を展開する
107  wchar_t szBuffer[ FORMAT_BUFFER_SIZE + 1 ];
108  if ( !ExpandFormatArgs( szBuffer, ( FORMAT_BUFFER_SIZE + 1 ), pszFormat, vaArgs ) ) {
109  // 失敗!
110  break;
111  }
112  // 文字列を出力する
113  else if ( !OutputString( szBuffer ) ) {
114  // 失敗!
115  break;
116  }
117 
118  // 成功!
119  result = true;
120  } while ( false );
121 
122  // 実行結果を返す
123  return result;
124  }
LIB_COMMON_API bool ExpandFormatArgs(wchar_t *pszBuffer, size_t uSize, wchar_t const *pszFormat, va_list vaArgs) noexcept
書式設定文字列展開関数
Definition: LibUtility.cpp:195
virtual bool OutputString(wchar_t const *pszString) noexcept=0
文字列出力関数
static int const FORMAT_BUFFER_SIZE
書式設定文字列バッファサイズ
Definition: CStreamOut.h:291

呼び出し関係図:

被呼び出し関係図:

bool LibCommon::CStreamOut::OutputNewLine ( )
virtualnoexcept

改行出力関数

改行出力関数です。

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

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

参照先 OutputString().

参照元 OutputLineString().

128  {
129  // 処理ブロック
130  bool result = false;
131  do {
132  // 改行文字列を出力する
133  if ( !OutputString( L"\n" ) ) {
134  // 失敗!
135  break;
136  }
137 
138  // 成功!
139  result = true;
140  } while ( false );
141 
142  // 実行結果を返す
143  return result;
144  }
virtual bool OutputString(wchar_t const *pszString) noexcept=0
文字列出力関数

呼び出し関係図:

被呼び出し関係図:

bool LibCommon::CStreamOut::OutputLineHeader ( )
virtualnoexcept

行ヘッダー出力関数

行ヘッダー出力関数です。

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

CStreamOut.cpp148 行目に定義があります。

参照先 GetLineNumber(), OutputFormat(), UpdateLineNumber().

参照元 OutputLineString().

148  {
149  // 処理ブロック
150  bool result = false;
151  do {
152  // 行番号を更新する
154 
155  // ヘッダ文字列を出力する
156  SYSTEMTIME sSysTime;
157  ::GetLocalTime( &sSysTime );
158  if ( !OutputFormat( L"%06lu:[%04X:%04X]%02u%02u%02u-%02u%02u%02u.%03u ",
159  GetLineNumber(),
160  ::GetCurrentProcessId(),
161  ::GetCurrentThreadId(),
162  ( sSysTime.wYear % 100 ),
163  sSysTime.wMonth,
164  sSysTime.wDay,
165  sSysTime.wHour,
166  sSysTime.wMinute,
167  sSysTime.wSecond,
168  sSysTime.wMilliseconds ) ) {
169  // 失敗!
170  break;
171  }
172 
173  // 成功!
174  result = true;
175  } while ( false );
176 
177  // 実行結果を返す
178  return result;
179  }
virtual bool UpdateLineNumber() noexcept
行番号更新関数
Definition: CStreamOut.h:150
virtual int GetLineNumber() noexcept
行番号取得関数
Definition: CStreamOut.h:161
virtual bool OutputFormat(wchar_t const *pszFormat,...) noexcept
書式設定文字列出力関数
Definition: CStreamOut.cpp:66

呼び出し関係図:

被呼び出し関係図:

virtual bool LibCommon::CStreamOut::UpdateLineNumber ( )
inlinevirtualnoexcept

行番号更新関数

行番号更新関数です。

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

LibLogOut::CLibLogOutで再実装されています。

CStreamOut.h150 行目に定義があります。

参照元 OutputLineHeader().

150 { ++m_nLine; return true; }
int m_nLine
行番号
Definition: CStreamOut.h:296

被呼び出し関係図:

virtual int LibCommon::CStreamOut::GetLineNumber ( )
inlinevirtualnoexcept

行番号取得関数

行番号取得関数です。

引数
なし
戻り値
行番号
注意
なし

LibLogOut::CLibLogOutで再実装されています。

CStreamOut.h161 行目に定義があります。

参照元 OutputLineHeader().

161 { return m_nLine; }
int m_nLine
行番号
Definition: CStreamOut.h:296

被呼び出し関係図:

virtual int LibCommon::CStreamOut::GetIndentCount ( )
inlinevirtualnoexcept

インデントカウント取得関数

インデントカウント取得関数です。

引数
なし
戻り値
インデントカウント
注意
なし

LibLogOut::CLibLogOutで再実装されています。

CStreamOut.h172 行目に定義があります。

参照元 OutputIndent().

172 { return m_nIndent; }
int m_nIndent
インデントカウント
Definition: CStreamOut.h:297

被呼び出し関係図:

bool LibCommon::CStreamOut::OutputIndent ( )
virtualnoexcept

インデント出力関数

インデント出力関数です。

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

CStreamOut.cpp183 行目に定義があります。

参照先 GetIndentCount(), OutputString().

参照元 OutputLineString().

183  {
184  // 処理ブロック
185  bool result = false;
186  do {
187  // 巡回する
188  for ( int uCount = GetIndentCount();; --uCount ) {
189  // 残りループ回数を調べる
190  if ( 0 == uCount ) {
191  // 成功!
192  result = true;
193  break;
194  }
195  // インデント文字列を出力する
196  else if ( !OutputString( L" " ) ) {
197  // 失敗!
198  break;
199  }
200  }
201  } while ( false );
202 
203  // 実行結果を返す
204  return result;
205  }
virtual bool OutputString(wchar_t const *pszString) noexcept=0
文字列出力関数
virtual int GetIndentCount() noexcept
インデントカウント取得関数
Definition: CStreamOut.h:172

呼び出し関係図:

被呼び出し関係図:

bool LibCommon::CStreamOut::Indent ( )
virtualnoexcept

インデント関数

インデント関数です。

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

LibLogOut::CLibLogOutで再実装されています。

CStreamOut.cpp209 行目に定義があります。

参照先 m_nIndent.

209  {
210  // インデントカウントをインクリメントする
211  ++m_nIndent;
212 
213  // 成功!
214  return true;
215  }
int m_nIndent
インデントカウント
Definition: CStreamOut.h:297
bool LibCommon::CStreamOut::Unindent ( )
virtualnoexcept

アンインデント関数

アンインデント関数です。

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

LibLogOut::CLibLogOutで再実装されています。

CStreamOut.cpp219 行目に定義があります。

参照先 m_nIndent, NotifyFatalError.

219  {
220  // 処理ブロック
221  bool result = false;
222  do {
223  // インデントカウントを調べる
224  if ( 0 >= m_nIndent ) {
225  // 致命的エラー!
227  break;
228  }
229 
230  // インデントカウントをデクリメントする
231  --m_nIndent;
232 
233  // 成功!
234  result = true;
235  } while ( false );
236 
237  // 実行結果を返す
238  return result;
239  }
#define NotifyFatalError()
致命的エラー発生通知マクロ
Definition: LibUtility.h:22
int m_nIndent
インデントカウント
Definition: CStreamOut.h:297
bool LibCommon::CStreamOut::OutputLineString ( wchar_t const *  pszString,
bool  bHeader = true,
bool  bIndent = true 
)
virtualnoexcept

文字列行出力関数

文字列行出力関数です。

引数
[in]pszString文字列ポインタ
[in]bHeader行ヘッダ出力フラグ
[in]bIndentインデント出力フラグ
戻り値
実行結果
  • true 成功
  • false 失敗
注意
なし

CStreamOut.cpp243 行目に定義があります。

参照先 OutputIndent(), OutputLineHeader(), OutputNewLine(), OutputString().

参照元 ExOutputLineArgs().

243  {
244  // 処理ブロック
245  bool result = false;
246  do {
247  // 行ヘッダを出力する
248  if ( bHeader && !OutputLineHeader() ) {
249  // 失敗!
250  break;
251  }
252  // インデントを出力する
253  else if ( bIndent && !OutputIndent() ) {
254  // 失敗!
255  break;
256  }
257  // 文字列を出力する
258  else if ( !OutputString( pszString ) ) {
259  // 失敗!
260  break;
261  }
262  // 改行を出力する
263  else if ( !OutputNewLine() ) {
264  // 失敗!
265  break;
266  }
267 
268  // 成功!
269  result = true;
270  } while ( false );
271 
272  // 実行結果を返す
273  return result;
274  }
virtual bool OutputNewLine() noexcept
改行出力関数
Definition: CStreamOut.cpp:128
virtual bool OutputLineHeader() noexcept
行ヘッダー出力関数
Definition: CStreamOut.cpp:148
virtual bool OutputString(wchar_t const *pszString) noexcept=0
文字列出力関数
virtual bool OutputIndent() noexcept
インデント出力関数
Definition: CStreamOut.cpp:183

呼び出し関係図:

被呼び出し関係図:

bool LibCommon::CStreamOut::OutputLineFormat ( wchar_t const *  pszFormat,
  ... 
)
virtualnoexcept

書式設定文字列行出力関数

書式設定文字列行出力関数です。

引数
[in]pszFormat書式設定文字列
[in]...可変長引数リスト
戻り値
実行結果
  • true 成功
  • false 失敗
注意
なし

CStreamOut.cpp278 行目に定義があります。

参照先 OutputLineArgs().

278  {
279  // 処理ブロック
280  bool result = false;
281  do {
282  // 引数リストを作成する
283  va_list vaArgs;
284  va_start( vaArgs, pszFormat );
285 
286  // 処理ブロック
287  do {
288  // 引数リスト文字列を行出力する
289  if ( !OutputLineArgs( pszFormat, vaArgs ) ) {
290  // 失敗!
291  break;
292  }
293 
294  // 成功!
295  result = true;
296  } while ( false );
297 
298  // 引数リストを解放する
299  va_end( vaArgs );
300  } while ( false );
301 
302  // 実行結果を返す
303  return result;
304  }
virtual bool OutputLineArgs(wchar_t const *pszFormat, va_list vaArgs) noexcept
引数リスト文字列行出力関数
Definition: CStreamOut.cpp:308

呼び出し関係図:

bool LibCommon::CStreamOut::OutputLineArgs ( wchar_t const *  pszFormat,
va_list  vaArgs 
)
virtualnoexcept

引数リスト文字列行出力関数

引数リスト文字列行出力関数です。

引数
[in]pszFormat書式設定文字列
[in]vaArgs引数リスト
戻り値
実行結果
  • true 成功
  • false 失敗
注意
なし

CStreamOut.cpp308 行目に定義があります。

参照先 ExOutputLineArgs().

参照元 OutputLineFormat().

308  {
309  // 拡張引数リスト文字列を行出力する
310  return ExOutputLineArgs( true, true, pszFormat, vaArgs );
311  }
virtual bool ExOutputLineArgs(bool bHeader, bool bIndent, wchar_t const *pszFormat, va_list vaArgs) noexcept
拡張引数リスト文字列行出力関数
Definition: CStreamOut.cpp:345

呼び出し関係図:

被呼び出し関係図:

bool LibCommon::CStreamOut::ExOutputLineFormat ( bool  bHeader,
bool  bIndent,
wchar_t const *  pszFormat,
  ... 
)
virtualnoexcept

拡張書式設定文字列行出力関数

拡張書式設定文字列行出力関数です。

引数
[in]bHeader行ヘッダ出力フラグ
[in]bIndentインデント出力フラグ
[in]pszFormat書式設定文字列
[in]...可変長引数リスト
戻り値
実行結果
  • true 成功
  • false 失敗
注意
なし

CStreamOut.cpp315 行目に定義があります。

参照先 ExOutputLineArgs().

参照元 LibLogOut::CLibLogOut::UpdateProcessInfo().

315  {
316  // 処理ブロック
317  bool result = false;
318  do {
319  // 引数リストを作成する
320  va_list vaArgs;
321  va_start( vaArgs, pszFormat );
322 
323  // 処理ブロック
324  do {
325  // 引数リスト文字列を行出力する
326  if ( !ExOutputLineArgs( bHeader, bIndent, pszFormat, vaArgs ) ) {
327  // 失敗!
328  break;
329  }
330 
331  // 成功!
332  result = true;
333  } while ( false );
334 
335  // 引数リストを解放する
336  va_end( vaArgs );
337  } while ( false );
338 
339  // 実行結果を返す
340  return result;
341  }
virtual bool ExOutputLineArgs(bool bHeader, bool bIndent, wchar_t const *pszFormat, va_list vaArgs) noexcept
拡張引数リスト文字列行出力関数
Definition: CStreamOut.cpp:345

呼び出し関係図:

被呼び出し関係図:

bool LibCommon::CStreamOut::ExOutputLineArgs ( bool  bHeader,
bool  bIndent,
wchar_t const *  pszFormat,
va_list  vaArgs 
)
virtualnoexcept

拡張引数リスト文字列行出力関数

拡張引数リスト文字列行出力関数です。

引数
[in]bHeader行ヘッダ出力フラグ
[in]bIndentインデント出力フラグ
[in]pszFormat書式設定文字列
[in]vaArgs引数リスト
戻り値
実行結果
  • true 成功
  • false 失敗
注意
なし

CStreamOut.cpp345 行目に定義があります。

参照先 LibCommon::ExpandFormatArgs(), FORMAT_BUFFER_SIZE, OutputLineString().

参照元 ExOutputLineFormat(), OutputLineArgs().

345  {
346  // 処理ブロック
347  bool result = false;
348  do {
349  // 書式設定文字列ポインタを調べる
350  if ( nullptr == pszFormat ) {
351  // 失敗!
352  break;
353  }
354 
355  // 書式設定文字列を展開する
356  wchar_t szBuffer[ FORMAT_BUFFER_SIZE + 1 ];
357  if ( !ExpandFormatArgs( szBuffer, ( FORMAT_BUFFER_SIZE + 1 ), pszFormat, vaArgs ) ) {
358  // 失敗!
359  break;
360  }
361  // 文字列を行出力する
362  else if ( !OutputLineString( szBuffer, bHeader, bIndent ) ) {
363  // 失敗!
364  break;
365  }
366 
367  // 成功!
368  result = true;
369  } while ( false );
370 
371  // 実行結果を返す
372  return result;
373  }
LIB_COMMON_API bool ExpandFormatArgs(wchar_t *pszBuffer, size_t uSize, wchar_t const *pszFormat, va_list vaArgs) noexcept
書式設定文字列展開関数
Definition: LibUtility.cpp:195
virtual bool OutputLineString(wchar_t const *pszString, bool bHeader=true, bool bIndent=true) noexcept
文字列行出力関数
Definition: CStreamOut.cpp:243
static int const FORMAT_BUFFER_SIZE
書式設定文字列バッファサイズ
Definition: CStreamOut.h:291

呼び出し関係図:

被呼び出し関係図:

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

メンバ詳解

int const LibCommon::CStreamOut::FORMAT_BUFFER_SIZE = ( 2048 - 1 )
staticprotected

書式設定文字列バッファサイズ

CStreamOut.h291 行目に定義があります。

参照元 ExOutputLineArgs(), OutputArgs().

int LibCommon::CStreamOut::m_nLine
protected

行番号

CStreamOut.h296 行目に定義があります。

int LibCommon::CStreamOut::m_nIndent
protected

インデントカウント

CStreamOut.h297 行目に定義があります。

参照元 Indent(), Unindent().


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