/* SleepLib BinaryFile Header Author: Mark Watkins License: GPL */ #ifndef BINARY_FILE_H #define BINARY_FILE_H #include #include enum BFOpenMode { BF_READ, BF_WRITE }; const long max_buffer_size=1048576*2; class UnpackError { }; class PackBuffer { public: PackBuffer(); ~PackBuffer(); bool Open(wxString filename,BFOpenMode mode); void Close(); }; class BinaryFile { public: BinaryFile(); ~BinaryFile(); bool Open(wxString filename,BFOpenMode mode); void Close(); bool Unpack(bool & data); bool Unpack(wxInt8 & data); bool Unpack(wxInt16 & data); bool Unpack(wxInt32 & data); bool Unpack(wxInt64 & data); bool Unpack(wxUint8 & data); bool Unpack(wxUint16 & data); bool Unpack(wxUint32 & data); bool Unpack(wxUint64 & data); bool Unpack(float & data); bool Unpack(double & data); bool Unpack(wxString & data); bool Unpack(wxDateTime & data); bool Pack(const bool &data); bool Pack(const wxInt8 &data); bool Pack(const wxInt16 & data); bool Pack(const wxInt32 & data); bool Pack(const wxInt64 & data); bool Pack(const wxUint8 & data); bool Pack(const wxUint16 & data); bool Pack(const wxUint32 & data); bool Pack(const wxUint64 & data); bool Pack(const float & data); bool Pack(const double & data); bool Pack(const wxString & data); bool Pack(const wxDateTime & data); size_t Write(const void* buffer, size_t count); protected: BFOpenMode bf_mode; wxFFile f; char * buffer; int buff_read; long pos; wxString bf_filename; long size; }; #endif //BINARY_FILE_H