00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #if !defined(_XRB_BITCACHEDFILE_HPP_)
00012 #define _XRB_BITCACHEDFILE_HPP_
00013
00014 #include "xrb.hpp"
00015
00016 #include "xrb_bitcache.hpp"
00017
00018 #include <stdio.h>
00019 #include <string>
00020
00021 namespace Xrb
00022 {
00023
00024 class BitCachedFile : public BitCache
00025 {
00026 public:
00027
00028 BitCachedFile (
00029 Uint32 cache_size_in_bytes,
00030 Endian::Endianness endianness)
00031 :
00032 BitCache(cache_size_in_bytes, endianness)
00033 { }
00034 virtual ~BitCachedFile () { }
00035
00036 void Open (char const *path, char const *mode);
00037
00038
00039
00040 void Close ();
00041
00042 protected:
00043
00044 virtual Uint32 FlushBytes (
00045 Uint8 const *bytes_to_flush,
00046 Uint32 number_of_bytes_to_flush) const;
00047 virtual Uint32 RenewBytes (
00048 Uint8 *bytes_to_renew,
00049 Uint32 number_of_bytes_to_renew) const;
00050
00051 private:
00052
00053
00054 FILE *m_file_handle;
00055
00056 std::string m_path;
00057
00058
00059 std::string m_mode;
00060 };
00061
00062 }
00063
00064 #endif // !defined(_XRB_BITCACHEDFILE_HPP_)