AbyssLib 1.301
あびす謹製ノベルゲームフレームワークライブラリ
|
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