CoinUtils
trunk
|
00001 /* $Id$ */ 00002 // Copyright (C) 2005, COIN-OR. All Rights Reserved. 00003 // This code is licensed under the terms of the Eclipse Public License (EPL). 00004 00005 #ifndef CoinFileIO_H 00006 #define CoinFileIO_H 00007 00008 #include <string> 00009 00011 class CoinFileIOBase 00012 { 00013 public: 00016 CoinFileIOBase (const std::string &fileName); 00017 00019 ~CoinFileIOBase (); 00020 00022 const char *getFileName () const; 00023 00025 inline std::string getReadType () const 00026 { return readType_.c_str();} 00027 protected: 00028 std::string readType_; 00029 private: 00030 CoinFileIOBase (); 00031 CoinFileIOBase (const CoinFileIOBase &); 00032 00033 std::string fileName_; 00034 }; 00035 00037 class CoinFileInput: public CoinFileIOBase 00038 { 00039 public: 00041 static bool haveGzipSupport(); 00043 static bool haveBzip2Support(); 00044 00052 static CoinFileInput *create (const std::string &fileName); 00053 00056 CoinFileInput (const std::string &fileName); 00057 00059 virtual ~CoinFileInput (); 00060 00065 virtual int read (void *buffer, int size) = 0; 00066 00076 virtual char *gets (char *buffer, int size) = 0; 00077 }; 00078 00080 class CoinFileOutput: public CoinFileIOBase 00081 { 00082 public: 00083 00085 enum Compression { 00086 COMPRESS_NONE = 0, 00087 COMPRESS_GZIP = 1, 00088 COMPRESS_BZIP2 = 2 00089 }; 00090 00093 static bool compressionSupported (Compression compression); 00094 00105 static CoinFileOutput *create (const std::string &fileName, 00106 Compression compression); 00107 00110 CoinFileOutput (const std::string &fileName); 00111 00113 virtual ~CoinFileOutput (); 00114 00119 virtual int write (const void * buffer, int size) = 0; 00120 00128 virtual bool puts (const char *s); 00129 00131 inline bool puts (const std::string &s) 00132 { 00133 return puts (s.c_str ()); 00134 } 00135 }; 00136 00144 bool fileAbsPath (const std::string &path) ; 00145 00164 bool fileCoinReadable(std::string &name, 00165 const std::string &dfltPrefix = std::string("")); 00166 #endif