00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __CS_PHYSFILE_H__
00020 #define __CS_PHYSFILE_H__
00021
00022 #include "iutil/vfs.h"
00023 #include "csutil/csstring.h"
00024 #include <stdio.h>
00025
00030 class csPhysicalFile : public iFile
00031 {
00032 public:
00042 csPhysicalFile(char const* path, char const* mode);
00056 csPhysicalFile(FILE*, bool take_ownership, char const* path = 0);
00058 virtual ~csPhysicalFile();
00059
00064 virtual char const* GetName();
00066 virtual size_t GetSize();
00068 virtual int GetStatus();
00069
00071 virtual size_t Read(char* buffer, size_t nbytes);
00073 virtual size_t Write(char const* data, size_t nbytes);
00075 virtual void Flush();
00077 virtual bool AtEOF();
00079 virtual size_t GetPos();
00081 virtual bool SetPos(size_t);
00082
00090 virtual csPtr<iDataBuffer> GetAllData(bool nullterm = false);
00091
00092 SCF_DECLARE_IBASE;
00093
00094 protected:
00095 FILE* fp;
00096 csString path;
00097 bool owner;
00098 int last_error;
00099 };
00100
00101 #endif // __CS_PHYSFILE_H__