Go to the documentation of this file.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
00026 #include <stdio.h>
00027
00028 #include "csextern.h"
00029 #include "csutil/csstring.h"
00030 #include "csutil/scf_implementation.h"
00031 #include "iutil/vfs.h"
00032
00037 class CS_CRYSTALSPACE_EXPORT csPhysicalFile :
00038 public scfImplementation1<csPhysicalFile, iFile>
00039 {
00040 public:
00050 csPhysicalFile(char const* path, char const* mode);
00064 csPhysicalFile(FILE*, bool take_ownership, char const* path = 0);
00066 virtual ~csPhysicalFile();
00067
00072 virtual char const* GetName();
00074 virtual size_t GetSize();
00076 virtual int GetStatus();
00077
00079 virtual size_t Read(char* buffer, size_t nbytes);
00081 virtual size_t Write(char const* data, size_t nbytes);
00083 virtual void Flush();
00085 virtual bool AtEOF();
00087 virtual size_t GetPos();
00089 virtual bool SetPos(size_t);
00090
00098 virtual csPtr<iDataBuffer> GetAllData(bool nullterm = false);
00099 virtual csPtr<iDataBuffer> GetAllData (CS::Memory::iAllocator* allocator);
00100
00101 csPtr<iFile> GetPartialView (size_t offset, size_t size = (size_t)~0);
00102 protected:
00103 CS::Threading::Mutex mutex;
00104 FILE* fp;
00105 csString path;
00106 bool owner;
00107 int last_error;
00108
00109 class PartialView;
00110 };
00111
00112 #endif // __CS_PHYSFILE_H__