]>
git.saurik.com Git - wxWidgets.git/blob - include/wx/ffile.h
   1 ///////////////////////////////////////////////////////////////////////////// 
   3 // Purpose:     wxFFile - encapsulates "FILE *" stream 
   4 // Author:      Vadim Zeitlin 
   8 // Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr> 
   9 // Licence:     wxWindows license 
  10 ///////////////////////////////////////////////////////////////////////////// 
  16     #pragma interface "ffile.h" 
  22   #include  "wx/string.h" 
  23   #include  "wx/filefn.h" 
  28 // ---------------------------------------------------------------------------- 
  29 // class wxFFile: standard C stream library IO 
  31 // NB: for space efficiency this class has no virtual functions, including 
  32 //     dtor which is _not_ virtual, so it shouldn't be used as a base class. 
  33 // ---------------------------------------------------------------------------- 
  35 class WXDLLEXPORT wxFFile
 
  41   wxFFile() { m_fp 
= NULL
; } 
  42     // open specified file (may fail, use IsOpened()) 
  43   wxFFile(const wxChar 
*filename
, const char *mode 
= "r"); 
  44     // attach to (already opened) file 
  45   wxFFile(FILE *fp
) { m_fp 
= fp
; } 
  48     // open a file (existing or not - the mode controls what happens) 
  49   bool Open(const wxChar 
*filename
, const char *mode 
= "r"); 
  50     // closes the opened file (this is a NOP if not opened) 
  53   // assign an existing file descriptor and get it back from wxFFile object 
  54   void Attach(FILE *fp
, const wxString
& name 
= wxT("")) 
  55     { Close(); m_fp 
= fp
; m_name 
= name
; } 
  56   void Detach() { m_fp 
= NULL
; } 
  57   FILE *fp() const { return m_fp
; } 
  59   // read/write (unbuffered) 
  60     // read all data from the file into a string (useful for text files) 
  61   bool ReadAll(wxString 
*str
); 
  62     // returns number of bytes read - use Eof() and Error() to see if an error 
  64   size_t Read(void *pBuf
, size_t nCount
); 
  65     // returns the number of bytes written 
  66   size_t Write(const void *pBuf
, size_t nCount
); 
  67     // returns true on success 
  68   bool Write(const wxString
& s
, wxMBConv
& conv 
= wxConvLibc
) 
  70       const wxWX2MBbuf buf 
= s
.mb_str(conv
); 
  71       size_t size 
= strlen(buf
); 
  72       return Write((const char *)buf
, size
) == size
; 
  74     // flush data not yet written 
  77   // file pointer operations (return ofsInvalid on failure) 
  78     // move ptr ofs bytes related to start/current pos/end of file 
  79   bool Seek(long ofs
, wxSeekMode mode 
= wxFromStart
); 
  80     // move ptr to ofs bytes before the end 
  81   bool SeekEnd(long ofs 
= 0) { return Seek(ofs
, wxFromEnd
); } 
  82     // get current position in the file 
  84     // get current file length 
  85   size_t Length() const; 
  89   bool IsOpened() const { return m_fp 
!= NULL
; } 
  90     // is end of file reached? 
  91   bool Eof() const { return feof(m_fp
) != 0; } 
  92     // is an error occured? 
  93   bool Error() const { return ferror(m_fp
) != 0; } 
  95   const wxString
& GetName() const { return m_name
; } 
  97   // dtor closes the file if opened 
  98   ~wxFFile() { Close(); } 
 101   // copy ctor and assignment operator are private because it doesn't make 
 102   // sense to copy files this way: attempt to do it will provoke a compile-time 
 104   wxFFile(const wxFFile
&); 
 105   wxFFile
& operator=(const wxFFile
&); 
 107   FILE *m_fp
;       // IO stream or NULL if not opened 
 109   wxString m_name
;  // the name of the file (for diagnostic messages) 
 114 #endif // _WX_FFILE_H_