00001 #ifndef STAR_StStreamFileFactory
00002 #define STAR_StStreamFileFactory
00003
00004 #include <iostream>
00005
00006 using namespace std;
00007
00008 class StStreamFile;
00009
00010 class StStreamFileFactory {
00011 static StStreamFileFactory *fgStreamFactory;
00012 protected:
00013 StStreamFileFactory();
00014 public:
00015 virtual ~StStreamFileFactory();
00016 virtual StStreamFile *Create() = 0;
00017 virtual StStreamFile *Create(const char *fileName, ios_base::openmode mode = ios_base::in) = 0;
00018 static StStreamFile *StreamFile();
00019 static StStreamFile *StreamFile(const char *fileName, ios_base::openmode mode = ios_base::in);
00020 static StStreamFileFactory *Factory() { return fgStreamFactory; }
00021 static void SetFactory(StStreamFileFactory *factory) { fgStreamFactory=factory; }
00022 };
00023
00024 #endif