CoinUtils  trunk
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
CoinFileIO.hpp
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines