Solution46
CStringStream.h
[詳解]
1 //=============================================================================
2 /// @file
3 /// 文字列ストリームクラスヘッダ文字列
4 ///
5 /// 文字列ストリームクラスヘッダ文字列です。
6 ///
7 /// $Id: CStringStream.h 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 once
14 #pragma managed( push, off )
15 
16 //=============================================================================
17 // インクルード文字列
18 #include <CString.h>
19 #include <CStream.h>
20 
21 //=============================================================================
22 // 共通ライブラリ名前空間
23 namespace LibCommon {
24  //=========================================================================
25  /// 文字列ストリームクラス
26  ///
27  /// 文字列ストリームクラスです。
28  ///
29  /// @attention なし
30  ///
31  class LIB_COMMON_API CStringStream: public CString, public CStream {
32  //=====================================================================
33  // 構築子と解体子
34  public:
35  //---------------------------------------------------------------------
36  /// コンストラクタ
37  ///
38  /// コンストラクタです。
39  ///
40  /// @param[in] pszString 文字列ポインタ
41  /// @return なし
42  /// @attention なし
43  ///
44  explicit CStringStream( wchar_t const* pszString = nullptr ) noexcept;
45 
46  //---------------------------------------------------------------------
47  /// デストラクタ
48  ///
49  /// デストラクタです。
50  ///
51  /// @param なし
52  /// @return なし
53  /// @attention なし
54  ///
55  virtual ~CStringStream() noexcept;
56 
57  //=====================================================================
58  // 公開関数
59  public:
60  //---------------------------------------------------------------------
61  /// クリア関数
62  ///
63  /// クリア関数です。
64  ///
65  /// @param なし
66  /// @return なし
67  /// @attention オーバライド関数です。
68  ///
69  virtual void Clear() noexcept override;
70 
71  //---------------------------------------------------------------------
72  /// 1文字出力関数
73  ///
74  /// 1文字出力関数です。
75  ///
76  /// @param[in] ch 文字コード
77  /// @return 実行結果
78  /// - true 成功
79  /// - false 失敗
80  /// @attention オーバーライド関数です。
81  ///
82  virtual bool OutputChar( wchar_t ch ) noexcept override;
83 
84  //---------------------------------------------------------------------
85  /// 文字列出力関数
86  ///
87  /// 文字列出力関数です。
88  ///
89  /// @param[in] pszString 文字列ポインタ
90  /// @return 実行結果
91  /// - true 成功
92  /// - false 失敗
93  /// @attention オーバーライド関数です。
94  ///
95  virtual bool OutputString( wchar_t const* pszString ) noexcept override;
96 
97  //---------------------------------------------------------------------
98  /// 1文字入力関数
99  ///
100  /// 1文字入力関数です。
101  ///
102  /// @param[out] rCh 文字コード参照
103  /// @return 実行結果
104  /// - true 成功
105  /// - false 失敗
106  /// @attention オーバーライド関数です。
107  ///
108  virtual bool InputChar( wchar_t& rCh ) noexcept override;
109 
110  //---------------------------------------------------------------------
111  /// ストリームサイズ取得関数
112  ///
113  /// ストリームサイズ取得関数です。
114  ///
115  /// @param なし
116  /// @return ストリームサイズ
117  /// @attention オーバライド関数です。
118  ///
119  virtual int GetStreamSize() const noexcept override { return GetCount(); }
120 
121  //---------------------------------------------------------------------
122  /// ストリームポインタ取得関数
123  ///
124  /// ストリームポインタ取得関数です。
125  ///
126  /// @param なし
127  /// @return ストリームポインタ
128  /// @attention オーバライド関数です。
129  ///
130  virtual int GetStreamPoint() const noexcept override { return m_nStreamPoint; }
131 
132  //---------------------------------------------------------------------
133  /// ストリームポインタ設定関数
134  ///
135  /// ストリームポインタ設定関数です。
136  ///
137  /// @param[in] nPoint ストリームポインタ
138  /// @return 実行結果
139  /// - true 成功
140  /// - false 失敗
141  /// @attention オーバライド関数です。
142  ///
143  virtual bool SetStreamPoint( int nPoint ) noexcept override { return UpdateStreamPoint( nPoint ); }
144 
145  //---------------------------------------------------------------------
146  /// ストリーム終端設定関数
147  ///
148  /// ストリーム終端設定関数です。
149  ///
150  /// @param なし
151  /// @return 実行結果
152  /// - true 成功
153  /// - false 失敗
154  /// @attention オーバライド関数です。
155  ///
156  virtual bool SetStreamEnd() noexcept override { return UpdateEndPoint( m_nStreamPoint ); }
157 
158  //=====================================================================
159  // 限定公開関数
160  protected:
161  //---------------------------------------------------------------------
162  /// ストリームポインタ更新関数
163  ///
164  /// ストリームポインタ更新関数です。
165  ///
166  /// @param[in] nPoint ストリームポインタ
167  /// @return 実行結果
168  /// - true 成功
169  /// - false 失敗
170  /// @attention なし
171  ///
172  virtual bool UpdateStreamPoint( int nPoint ) noexcept;
173 
174  //---------------------------------------------------------------------
175  /// 終端ストリームポインタ更新関数
176  ///
177  /// 終端ストリームポインタ更新関数です。
178  ///
179  /// @param[in] nPoint ストリームポインタ
180  /// @return 実行結果
181  /// - true 成功
182  /// - false 失敗
183  /// @attention なし
184  ///
185  virtual bool UpdateEndPoint( int nPoint ) noexcept;
186 
187  //=====================================================================
188  // 限定公開変数
189  protected:
190  int m_nStreamPoint; ///< ストリームポインタ
191 
192  //=====================================================================
193  // 削除関数
194  private:
195  CStringStream( CStringStream const& ) = delete;
196  CStringStream& operator=( CStringStream const& ) = delete;
197  };
198 }
199 
200 #pragma managed( pop )
virtual bool SetStreamEnd() noexcept override
ストリーム終端設定関数
virtual bool SetStreamPoint(int nPoint) noexcept override
ストリームポインタ設定関数
virtual int GetStreamPoint() const noexcept override
ストリームポインタ取得関数
共通ライブラリ名前空間
Definition: CArray.h:23
int m_nStreamPoint
ストリームポインタ
ストリームクラス
Definition: CStream.h:31
virtual int GetStreamSize() const noexcept override
ストリームサイズ取得関数
文字列クラス
Definition: CString.h:31
ストリームクラスヘッダファイル
文字列ストリームクラス
Definition: CStringStream.h:31
#define LIB_COMMON_API
ダイナミックライブラリインポート宣言
Definition: LibCommonDef.h:44
文字列クラスヘッダファイル