1    	#ifndef  STAR_StStreamFileFactory
2    	#define  STAR_StStreamFileFactory
3    	
4    	#include <iostream>
5    	
6    	using namespace std;
7    	
8    	class StStreamFile;
9    	
10   	class StStreamFileFactory {
11   		static StStreamFileFactory *fgStreamFactory;
12   	protected:
13   		StStreamFileFactory();
14   	public:
15   	   virtual ~StStreamFileFactory();
16   		virtual StStreamFile *Create() = 0;
17   		virtual StStreamFile *Create(const char *fileName, ios_base::openmode mode = ios_base::in) = 0;
18   		static  StStreamFile *StreamFile();
19   		static  StStreamFile *StreamFile(const char *fileName, ios_base::openmode mode = ios_base::in);
20   		static StStreamFileFactory *Factory() { return fgStreamFactory; }
21   		static void  SetFactory(StStreamFileFactory *factory) { fgStreamFactory=factory; }
22   	};
23   	
24   	#endif
25