AbyssLib 1.301
あびす謹製ノベルゲームフレームワークライブラリ

AbyssLibSrc/AbyssLib/AbyssLib/TextStream.h

説明を見る。
00001 /*************************************************
00002 ファイル名:TextStream.h
00003 作成者  :あびす
00004 役割   :テキスト出力
00005 *************************************************/
00010 #ifndef ABYSSLIB_TEXTSTREAM_H
00011 #define ABYSSLIB_TEXTSTREAM_H
00012 
00013 namespace nsAbyssLib{
00014 namespace nsTextStream{
00015 
00016 //テキスト出力ストリーム(インターフェース)
00020 class ITextStream{
00021 public:
00028     virtual void Out(const Expression& t) const = 0;                //多項式を出力
00038     virtual void __cdecl Out(LPCSTR fmt, ...) const = 0;            //文字列を書式に従い出力
00039 };
00040 
00041 //テキスト出力ストリーム
00047 class BaseTextStream : public ITextStream{
00048 public:
00052     virtual ~BaseTextStream(){}                                     //仮想デストラクタ
00053 
00054     //
00055     //  テキスト出力メソッド
00056     //
00057     //  ・派生させる場合、以下の二つは必ず実装すること
00058     //
00059     virtual void Out(const Expression& t) const = 0;                //多項式を出力
00060     virtual void __cdecl Out(LPCSTR fmt, ...) const = 0;            //文字列を書式に従い出力
00061 };
00062 
00063 //テキスト出力ストリーム(ファイル)
00069 class FileTextStream : public BaseTextStream{
00070 public:
00076     FileTextStream();                                               //デフォルトコンストラクタ
00081     FileTextStream(const string& FileName);                         //コンストラクタ(ファイル名)
00082     void Out(const Expression& t) const;                            //多項式を出力
00083     void __cdecl Out(LPCSTR fmt, ...) const;                        //文字列を書式に従い出力
00084 private:
00085     string m_FileName;                                              //ファイル名
00086     FileTextStream(const FileTextStream&);                          //コピーコンストラクタ(禁止)
00087     FileTextStream& operator =(const FileTextStream&);              //代入演算子(禁止)
00088 };
00089 
00090 //テキスト出力ストリーム(コンソール)
00094 class ConsoleTextStream : public BaseTextStream{
00095 public:
00099     ConsoleTextStream(){}                                           //デフォルトコンストラクタ
00100     void Out(const Expression& t) const;                            //多項式を出力
00101     void __cdecl Out(LPCSTR fmt, ...) const;                        //文字列を書式に従い出力
00102 private:
00103     ConsoleTextStream(const ConsoleTextStream&);                    //コピーコンストラクタ(禁止)
00104     ConsoleTextStream& operator =(const ConsoleTextStream&);        //代入演算子(禁止)
00105 };
00106 
00107 //テキスト出力ストリーム(ヌルデバイス)
00113 class NullTextStream : public BaseTextStream{
00114 public:
00118     NullTextStream(){}                                              //デフォルトコンストラクタ
00119     void Out(const Expression& t) const{}                           //多項式を出力
00120     void __cdecl Out(LPCSTR fmt, ...) const{}                       //文字列を書式に従い出力
00121 private:
00122     NullTextStream(const NullTextStream&);                          //コピーコンストラクタ(禁止)
00123     NullTextStream& operator =(const NullTextStream&);              //代入演算子(禁止)
00124 };
00125 
00126 }
00127 }
00128 
00129 #endif
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 フレンド マクロ定義