deargui-vpl/ref/virtools/Includes/VxCachedFile.h

109 lines
3.7 KiB
C++

/*************************************************************************/
/* File : VxCachedFile.h */
/* Author : Aymeric Bard */
/* */
/* Virtools SDK */
/* Copyright (c) Virtools 2002, All Rights Reserved. */
/*************************************************************************/
#ifndef __VXCACHEDFILE_H__
#define __VXCACHEDFILE_H__
#include "VxFile.h"
class VX_EXPORT VxCachedFile : public VxFile
{
public:
// Ctor
VxCachedFile(const XDWORD iCacheSize = 32768);
// Dtor
~VxCachedFile();
enum {
UNCACHED = 0xffffffff
};
/***********************************************************************
Summary: Returns the cache size.
See also: SetCacheSize.
***********************************************************************/
void SetCacheSize(const XDWORD iCacheSize);
/***********************************************************************
Summary: Returns the cache size.
See also: SetCacheSize.
***********************************************************************/
XDWORD GetCacheSize()
{
return m_CacheSize;
}
/***********************************************************************
Summary: Returns the file size in bytes.
***********************************************************************/
XDWORD Position();
/***********************************************************************
Summary: Seeks to a given position into the file, starting from a given
origin mode.
***********************************************************************/
XBOOL Seek(int iOffset, SeekMode iOrigin);
/***********************************************************************
Summary: Reads given amount of data from the file to the buffer.
Return Value: The number of bytes actually read
***********************************************************************/
XDWORD Read(void* oBuffer, XDWORD iSize);
/***********************************************************************
Summary: Writes given amount of data from the buffer to the file.
Return Value: The number of bytes actually written
***********************************************************************/
XDWORD Write(const void* iBuffer, XDWORD iSize);
// VxFile Override
/***********************************************************************
Summary: Opens () and close the currently opened one) a file for
reading or writing.
***********************************************************************/
XBOOL Open(const char* iFileName, OpenMode iMode = READONLY);
/***********************************************************************
Summary: Returns TRUE if the file is successfully closed.
***********************************************************************/
virtual XBOOL Close();
/***********************************************************************
Summary: Gets a string from a file.
***********************************************************************/
virtual XBOOL GetString(char* oString, XDWORD iMax);
/***********************************************************************
Summary: Flushes a file (force update).
***********************************************************************/
virtual XDWORD Flush();
/***********************************************************************
Summary: Reads given amount of items from the file to the buffer.
Return Value: The number of items actually read
***********************************************************************/
virtual XDWORD ReadItems(void* oBuffer, XDWORD iSize, XDWORD iCount);
protected:
// Current Position in the file
XDWORD m_Position;
// the cache size
XDWORD m_CacheSize;
// the cache
XBYTE* m_Cache;
// Cache position
XDWORD m_CachePosition;
};
#endif