#ifndef __VirtualRealTable_h
#define __VirtualRealTable_h

// VirtualRealTable.h : _xZkqqHx_iDhHiDgCiDfPiBfL_xHqqkZx_ _xZkqqHx_iDhEiDeAiDeDiDiL_xHqqkZx_

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

class FCTopGroupRec;

/////////////////////////////////////////////////////////////////////////////
// FCVirtualRealTable _xZkqqHx_iDeFiDeCiDjDiDgIiDeF_xHqqkZx_

/*************************************************************************
 * <_xZkqqHx_iDeOiDiJiDfI_xHqqkZx_>	FCVirtualRealTable
 *
 * <_xZkqqHx_iLeAjEfM_xHqqkZx_>	_xZkqqHx_iJlMjBhKiDgFiBfLiDhFiDiLiCmM_xHqqkZx_READ_xZkqqHx_iDeMiDiDiDgCiDfGiDiFiCpAiKmHjHjNiClHiCoJiBeC_xHqqkZx_
 *			_xZkqqHx_iDeOiDiJiDeDiDeBiDjDiDgHiDfEiDeDiDgIiCmMiCnNiCmFiOgHiCoNiCoKiCoJiBeCiDfEiBfLiDgPiBfLiDfEiDeDiDgIiCmFiCmNiDgFiBfLiDhFiDiLiCmN_xHqqkZx_
 *			READ_xZkqqHx_iDeMiDiDiDgCiDfGiDiFiClDiCoKiCmIiCkCiCmMiCmFiOgHiCoNiCmIiCkCiBeC_xHqqkZx_
 *			_xZkqqHx_iDeOiDiJiDeDiDeBiDjDiDgHiDfEiDeDiDgIiCmFiCmNiBeBiClBiCmMiDeOiDiJiDfIiCmMiPoDiCmJ_xHqqkZx_READ_xZkqqHx_iBeF_xHqqkZx_WRITE_xZkqqHx_iDeMiDiDiDgCiDfGiDiFiCpA_xHqqkZx_
 *			_xZkqqHx_iCnMiCmGiCnPiClN_xHqqkZx_ FCVirtualTable _xZkqqHx_iCkKiNoMjAkMiClDiCoKiCoJiBeC_xHqqkZx_
 *			FCVirtualTable_xZkqqHx_iDeOiDiJiDfIiCmJ_xHqqkZx_ READ_xZkqqHx_iDeMiDiDiDgCiDfGiDiFiLeAjEfMiCoAiCnMiCmGiCnPiCmEjBgHiCnNiNjOiCpBiCmFiCoA_xHqqkZx_
 *			_xZkqqHx_jHmHiCkCiCmMiClOiCkKiBeB_xHqqkZx_FCVirtualTable_xZkqqHx_iDeOiDiJiDfIiCkKiCoCiCoCiClBiClFiCkNiCmIiCoJiClNiCnPiBeB_xHqqkZx_
 *			READ_xZkqqHx_iDeMiDiDiDgCiDfGiDiFiLeAjEfMiCmMiCnNiDhIiBfLiDfIiDeOiDiJiDfIiCmJjFmKiCkPiCmEiPgPiClFiCmEiCkAiCoJiBeC_xHqqkZx_
 *
 * <_xZkqqHx_jHjKjHpA_xHqqkZx_>	06.02.13 Fukushiro M. _xZkqqHx_iNoMjAkM_xHqqkZx_
 *************************************************************************/
class FCVirtualRealTable : public FCVirtualWriteTable
{
protected:
typedef FCVirtualWriteTable BASE_CLASS;

public:
	FCVirtualRealTable ();
	virtual ~FCVirtualRealTable ();
	virtual DWORD	GetRealRecordEnd () const;
	virtual flint	GetRealRecordPrimaryId (DWORD dwIndex) const;
	virtual DWORD	GetRealRecordAppendIdentifier (DWORD dwIndex) const;
	virtual DWORD	GetRealDeleteIdentifier () const;
	virtual DWORD	GetRealAppendIdentifier () const;
	virtual void	SetRealDeleteIdentifier (DWORD dwDeleteIdentifier);
	virtual void	SetRealAppendIdentifier (DWORD dwAppendIdentifier);
	virtual DWORD	SetDataToEmptyRealRecord (const void* pRecordData, DWORD dwIndex);

friend class FCTopGroupRec;
protected:
	virtual void	ResizeRealRecordCount (DWORD dwRecordSize);
	virtual void	ClearAllRealRecords ();
	virtual DWORD	AppendEmptyRealRecord (flint fliPrimaryId, DWORD dwAppendIdentifier, DWORD dwRecordDataSize);
	virtual void	SetRealRecord (DWORD dwIndex, flint fliPrimaryId, DWORD dwAppendIdentifier, DWORD dwRecordDataSize, DWORD dwRecordDataId);
	virtual FCVirtualRecord&	GetTableRealRecord (DWORD dwIndex);
	virtual const FCVirtualRecord&	GetTableRealRecord (DWORD dwIndex) const;

protected:
	vector<FCVirtualRecord>	m_vVirtualRealTable;	// READ_xZkqqHx_iDeMiDiDiDgCiDfGiDiFiBeC_xHqqkZx_
	DWORD	m_dwRealDeleteIdentifier;				// _xZkqqHx_iNoNiPjM_xHqqkZx_Identifier_xZkqqHx_iBeC_xHqqkZx_
	DWORD	m_dwRealAppendIdentifier;				// _xZkqqHx_jCmHiJmB_xHqqkZx_Identifier_xZkqqHx_iBeC_xHqqkZx_
}; // class FCVirtualRealTable.

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

#endif//__VirtualRealTable_h
