Solution46
LibCommon::CFileStream クラス

ファイルストリームクラス [詳解]

#include "CFileStream.h"

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

公開メンバ関数

 CFileStream () noexcept
 コンストラクタ [詳解]
 
virtual ~CFileStream () noexcept
 デストラクタ [詳解]
 
virtual bool OutputString (wchar_t const *pszString) noexcept override
 文字列出力関数 [詳解]
 
virtual bool InputChar (wchar_t &rCh) noexcept override
 1文字入力関数 [詳解]
 
virtual int GetStreamSize () const noexcept override
 ストリームサイズ取得関数 [詳解]
 
virtual int GetStreamPoint () const noexcept override
 ストリームポインタ取得関数 [詳解]
 
virtual bool SetStreamPoint (int nPoint) noexcept override
 ストリームポインタ設定関数 [詳解]
 
virtual bool SetStreamEnd () noexcept override
 ストリーム終端設定関数 [詳解]
 
- 基底クラス LibCommon::CFile に属する継承公開メンバ関数
 CFile () noexcept
 コンストラクタ [詳解]
 
virtual ~CFile () noexcept
 デストラクタ [詳解]
 
virtual HANDLE GetHandle () const noexcept
 ファイルハンドル取得関数 [詳解]
 
virtual bool Create (wchar_t const *pszPath, UINT uCodePage=CP_UTF16) noexcept
 作成関数 [詳解]
 
virtual bool Open (wchar_t const *pszPath, bool bWrite=false) noexcept
 オープン関数 [詳解]
 
virtual bool OpenAppend (wchar_t const *pszPath, UINT uCodePage=CP_UTF16) noexcept
 追記モードオープン関数 [詳解]
 
virtual void Close () noexcept
 クローズ関数 [詳解]
 
virtual LONGLONG Read (void *pBuffer, LONGLONG nSize) noexcept
 リード関数 [詳解]
 
virtual LONGLONG Write (void const *pBuffer, LONGLONG nSize) noexcept
 ライト関数 [詳解]
 
virtual LONGLONG GetFileSize () const noexcept
 ファイルサイズ取得関数 [詳解]
 
virtual LONGLONG GetFilePoint () const noexcept
 ファイルポインタ取得関数 [詳解]
 
virtual bool SetFilePoint (LONGLONG nPoint) noexcept
 ファイルポインタ設定関数 [詳解]
 
virtual bool SetFileEnd () noexcept
 ファイル終端設定関数 [詳解]
 
virtual bool ReadCodeBytes (unsigned char pBuffer[MB_LEN_MAX], int &nCount, int nSize) noexcept
 コードバイトリード関数 [詳解]
 
virtual bool InputCodePage (UINT &ruCodePage, int &rnUtf8, int &rnSJis) noexcept
 コードページ入力関数 [詳解]
 
virtual bool OutputBom (UINT uCodePage) noexcept
 BOM出力関数 [詳解]
 
- 基底クラス LibCommon::CStream に属する継承公開メンバ関数
virtual int InputString (wchar_t *pszBuffer, int nSize) 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 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
 拡張引数リスト文字列行出力関数 [詳解]
 

非公開メンバ関数

 CFileStream (CFileStream const &)=delete
 
CFileStreamoperator= (CFileStream const &)=delete
 

その他の継承メンバ

- 基底クラス LibCommon::CFile に属する継承静的公開メンバ関数
static char unsigned const * GetBomData (UINT uCodePage, int &nSize) noexcept
 BOMデータ取得関数 [詳解]
 
static bool IsAscii (char unsigned ch) noexcept
 ASCIIコード判定関数 [詳解]
 
static bool IsFirstByteSjis (char unsigned ch) noexcept
 S-JIS第1バイト判定関数 [詳解]
 
static bool IsSecondByteSjis (char unsigned ch) noexcept
 S-JIS第2バイト判定関数 [詳解]
 
static bool IsConfirmedFirstByteSjis (char unsigned ch) noexcept
 S-JIS確定第1バイト判定関数 [詳解]
 
static bool IsKanaSjis (char unsigned ch) noexcept
 S-JIS半角カナ判定関数 [詳解]
 
static bool IsConfirmedKanaSjis (char unsigned ch) noexcept
 S-JIS確定半角カナ判定関数 [詳解]
 
static bool IsKanaUnicode (wchar_t ch) noexcept
 Unicode半角カナ判定関数 [詳解]
 
static bool GetCodeSizeUtf8 (char unsigned ch, int &nSize) noexcept
 UTF-8コードサイズ取得関数 [詳解]
 
- 基底クラス LibCommon::CStream に属する継承限定公開メンバ関数
 CStream () noexcept
 コンストラクタ [詳解]
 
virtual ~CStream () noexcept
 デストラクタ [詳解]
 
- 基底クラス LibCommon::CStreamOut に属する継承限定公開メンバ関数
 CStreamOut () noexcept
 コンストラクタ [詳解]
 
virtual ~CStreamOut () noexcept
 デストラクタ [詳解]
 
- 基底クラス LibCommon::CFile に属する継承限定公開変数類
HANDLE m_hFile
 ファイルハンドル [詳解]
 
UINT m_uCodePage
 コードページ種別 [詳解]
 
- 基底クラス LibCommon::CStreamOut に属する継承限定公開変数類
int m_nLine
 行番号 [詳解]
 
int m_nIndent
 インデントカウント [詳解]
 
- 基底クラス LibCommon::CStreamOut に属する継承静的限定公開変数類
static int const FORMAT_BUFFER_SIZE = ( 2048 - 1 )
 書式設定文字列バッファサイズ [詳解]
 

詳解

ファイルストリームクラス

ファイルストリームクラスです。

注意
なし

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

構築子と解体子

LibCommon::CFileStream::CFileStream ( )
explicitnoexcept

コンストラクタ

コンストラクタです。

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

CFileStream.cpp28 行目に定義があります。

30  : CFile()
31  , CStream()
32  {}
CFile() noexcept
コンストラクタ
Definition: CFile.cpp:35
CStream() noexcept
コンストラクタ
Definition: CStream.cpp:33
virtual LibCommon::CFileStream::~CFileStream ( )
inlinevirtualnoexcept

デストラクタ

デストラクタです。

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

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

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

関数詳解

bool LibCommon::CFileStream::OutputString ( wchar_t const *  pszString)
overridevirtualnoexcept

文字列出力関数

文字列出力関数です。

引数
[in]pszString文字列ポインタ
戻り値
実行結果
  • true 成功
  • false 失敗
注意
オーバーライド関数です。

LibCommon::CStreamOutを実装しています。

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

参照先 LibCommon::CFile::Write().

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

38  {
39  // 処理ブロック
40  bool result = false;
41  do {
42  // 文字列ポインタを調べる
43  if ( nullptr == pszString ) {
44  // 失敗!
45  break;
46  }
47 
48  // ファイルに文字列出力する
49  LONGLONG nSize = ( ::wcslen( pszString ) * sizeof( wchar_t ) );
50  if ( nSize != Write( pszString, nSize ) ) {
51  // 失敗!
52  break;
53  }
54 
55  // 成功!
56  result = true;
57  } while ( false );
58 
59  // 実行結果を返す
60  return result;
61  }
virtual LONGLONG Write(void const *pBuffer, LONGLONG nSize) noexcept
ライト関数
Definition: CFile.cpp:273

呼び出し関係図:

被呼び出し関係図:

bool LibCommon::CFileStream::InputChar ( wchar_t &  rCh)
overridevirtualnoexcept

1文字入力関数

1文字入力関数です。

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

LibCommon::CStreamを実装しています。

CFileStream.cpp65 行目に定義があります。

参照先 LibCommon::CFile::GetFilePoint(), LibCommon::CFile::Read(), LibCommon::CFile::SetFilePoint().

65  {
66  // 処理ブロック
67  bool result = false;
68  do {
69  // 1文字リードする
70  if ( sizeof( wchar_t ) != Read( &rCh, sizeof( wchar_t ) ) ) {
71  // 失敗!
72  break;
73  }
74  // 文字コードを調べる
75  else if ( L'\r' == rCh ) {
76  // ファイルポインタを取得する
77  LONGLONG nPoint = GetFilePoint();
78 
79  // 次の1文字をリードする
80  wchar_t chNext;
81  if ( sizeof( wchar_t ) == Read( &chNext, sizeof( wchar_t ) ) ) {
82  // 文字コードを調べる
83  if ( L'\n' == chNext ) {
84  // 文字コードを設定する
85  rCh = chNext;
86  }
87  else {
88  // ファイルポインタを復元する
89  SetFilePoint( nPoint );
90  }
91  }
92  }
93 
94  // 成功!
95  result = true;
96  } while ( false );
97 
98  // 実行結果を返す
99  return result;
100  }
virtual LONGLONG GetFilePoint() const noexcept
ファイルポインタ取得関数
Definition: CFile.cpp:360
virtual LONGLONG Read(void *pBuffer, LONGLONG nSize) noexcept
リード関数
Definition: CFile.cpp:207
virtual bool SetFilePoint(LONGLONG nPoint) noexcept
ファイルポインタ設定関数
Definition: CFile.cpp:382

呼び出し関係図:

int LibCommon::CFileStream::GetStreamSize ( ) const
overridevirtualnoexcept

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

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

引数
なし
戻り値
ストリームサイズ
注意
オーバーライド関数です。

LibCommon::CStreamを再実装しています。

CFileStream.cpp104 行目に定義があります。

参照先 LibCommon::CFile::GetFileSize().

104  {
105  // ファイルサイズを返す
106  return static_cast< int >( GetFileSize() );
107  }
virtual LONGLONG GetFileSize() const noexcept
ファイルサイズ取得関数
Definition: CFile.cpp:339

呼び出し関係図:

int LibCommon::CFileStream::GetStreamPoint ( ) const
overridevirtualnoexcept

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

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

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

LibCommon::CStreamを再実装しています。

CFileStream.cpp111 行目に定義があります。

参照先 LibCommon::CFile::GetFilePoint().

111  {
112  // ファイルポインタを返す
113  return static_cast< int >( GetFilePoint() );
114  }
virtual LONGLONG GetFilePoint() const noexcept
ファイルポインタ取得関数
Definition: CFile.cpp:360

呼び出し関係図:

bool LibCommon::CFileStream::SetStreamPoint ( int  nPoint)
overridevirtualnoexcept

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

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

引数
[in]nPointストリームポインタ
戻り値
実行結果
  • true 成功
  • false 失敗
注意
オーバーライド関数です。

LibCommon::CStreamを再実装しています。

CFileStream.cpp118 行目に定義があります。

参照先 LibCommon::CFile::SetFilePoint().

118  {
119  // ファイルポインタを設定する
120  return SetFilePoint( nPoint );
121  }
virtual bool SetFilePoint(LONGLONG nPoint) noexcept
ファイルポインタ設定関数
Definition: CFile.cpp:382

呼び出し関係図:

bool LibCommon::CFileStream::SetStreamEnd ( )
overridevirtualnoexcept

ストリーム終端設定関数

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

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

LibCommon::CStreamを再実装しています。

CFileStream.cpp125 行目に定義があります。

参照先 LibCommon::CFile::SetFileEnd().

125  {
126  // ファイル終端を設定する
127  return SetFileEnd();
128  }
virtual bool SetFileEnd() noexcept
ファイル終端設定関数
Definition: CFile.cpp:404

呼び出し関係図:

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

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