#if !defined(AFX_VIRTUALTABLE_H__8C4FBC2F_D54A_4395_AD92_82898F05F0E9__INCLUDED_)
#define AFX_VIRTUALTABLE_H__8C4FBC2F_D54A_4395_AD92_82898F05F0E9__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// VirtualTable.h : _xZkqqHx_iDhHiDgCiDfPiBfL_xHqqkZx_ _xZkqqHx_iDhEiDeAiDeDiDiL_xHqqkZx_
//

#include "VirtualRealTable.h"	// For Baseclass.

/////////////////////////////////////////////////////////////////////////////
// FCVirtualTable _xZkqqHx_iDeFiDeCiDjDiDgIiDeF_xHqqkZx_

/*************************************************************************
 * <_xZkqqHx_iDeOiDiJiDfI_xHqqkZx_>	FCVirtualTable
 *
 * <_xZkqqHx_iLeAjEfM_xHqqkZx_>	_xZkqqHx_iJlMjBhKiDgFiBfLiDhFiDiLiCmM_xHqqkZx_READ_xZkqqHx_iDeMiDiDiDgCiDfGiDiFiBeF_xHqqkZx_WRITE_xZkqqHx_iDeMiDiDiDgCiDfGiDiFiCpAiKmHjHjNiClHiCoJiBeC_xHqqkZx_
 *			_xZkqqHx_iDeOiDiJiDeDiDeBiDjDiDgHiDfEiDeDiDgIiCmMiCnNiCmFiOgHiCoNiCoKiCoJiBeCiDfEiBfLiDgPiBfLiDfEiDeDiDgIiCmFiCmNiDgFiBfLiDhFiDiLiCmN_xHqqkZx_
 *			READ_xZkqqHx_iDeMiDiDiDgCiDfGiDiFiClDiCoKiCmIiCkCiCmMiCmFiOgHiCoNiCmIiCkCiBeC_xHqqkZx_
 *			_xZkqqHx_iDhIiBfLiDfIiDeOiDiJiDfIiCmJ_xHqqkZx_READ_xZkqqHx_iDeMiDiDiDgCiDfGiDiFiCpAiKmHjHjNiClHiCoJ_xHqqkZx_FCVirtualRealTable_xZkqqHx_iBeB_xHqqkZx_
 *			_xZkqqHx_iNfIiCmJiDhIiBfLiDfIiDeOiDiJiDfIiCmJ_xHqqkZx_WRITE_xZkqqHx_iDeMiDiDiDgCiDfGiDiFiCpAiKmHjHjNiClHiCoJ_xHqqkZx_FCVirtualWriteTable
 *			_xZkqqHx_iCkKiOgHiCoNiCoKiCoJiBeC_xHqqkZx_
 *			_xZkqqHx_iJlMjBhKiDgFiBfLiDhFiDiLiCkJiCoHiDiMiDfCiBfLiDgIiCpAjDmHiCnNiPgPiClHiNnLiBeB_xHqqkZx_WRITE_xZkqqHx_iDeMiDiDiDgCiDfGiDiFiCkKjHeMiCoKiCmO_xHqqkZx_
 *			WRITE_xZkqqHx_iDeMiDiDiDgCiDfGiDiFiCmMjCgMiCpAjFnEiClFiBeBjGlDiCkPiCoKiCmO_xHqqkZx_READ_xZkqqHx_iDeMiDiDiDgCiDfGiDiFiCmMjCgMiCpAjFnEiClHiBeC_xHqqkZx_
 *
 * <_xZkqqHx_jHjKjHpA_xHqqkZx_>	06.02.13 Fukushiro M. _xZkqqHx_iNoMjAkM_xHqqkZx_
 *************************************************************************/
class FCVirtualTable : public FCVirtualRealTable
{
protected:
typedef FCVirtualRealTable BASE_CLASS;

public:
	FCVirtualTable ();
	virtual ~FCVirtualTable ();
	virtual DWORD	GetRecordCount () const;
	virtual flint	GetRecordPrimaryId (DWORD dwIndex) const;
	virtual DWORD	GetRecordAppendIdentifier (DWORD dwIndex) const;
	virtual DWORD	GetRecordDataSize (DWORD dwIndex) const;
	virtual DWORD	GetRecordData (void* pDataBuff, DWORD dwBuffSize, DWORD dwIndex, DWORD dwStartOffset) const;
	virtual void	GetRecordData (BYTEVector& vDataBuff, DWORD dwIndex, DWORD dwStartOffset) const;
	virtual flint	GetRecordLastPrimaryId () const;
	virtual BOOL	IsNullRecord (DWORD dwIndex) const;
	virtual DWORD	PrimaryIdToLowerBoundIndex (flint fliPrimaryId) const;
	virtual DWORD	PrimaryIdToUpperBoundIndex (flint fliPrimaryId) const;
	virtual DWORD	PrimaryIdToIndex (flint fliPrimaryId) const;
	virtual void	MoveWriteRecordToReal ();

protected:
	virtual FCVirtualRecord&		GetTableRecord (DWORD dwIndex);
	virtual const FCVirtualRecord&	GetTableRecord (DWORD dwIndex) const;
}; // class FCVirtualTable.

/////////////////////////////////////////////////////////////////////////////

#endif // !defined(AFX_VIRTUALTABLE_H__8C4FBC2F_D54A_4395_AD92_82898F05F0E9__INCLUDED_)
