#ifndef __3ToolBaseCreate_h
#define __3ToolBaseCreate_h

#include "3ToolBaseFDA.h"	// Super class.

class MCARCHIVE;

/*************************************************************************
 * <_xZkqqHx_iDeOiDiJiDfI_xHqqkZx_>	MC3ToolBaseFDA
 *
 * <_xZkqqHx_iLeAjEfM_xHqqkZx_>	_xZkqqHx_jFjEjFgJiCmMjBoFiCkLiClDiCpAiOhHjCoIiClFiCmEiNoMjAkMiClHiCoJiNoMjAkMiDgDiBfLiDiLiCmMiKoOjGhLiDeOiDiJiDfIiBeC_xHqqkZx_
 *
 * <_xZkqqHx_jHjKjHpA_xHqqkZx_>	00.01.18 Fukushiro M. _xZkqqHx_iNoMjAkM_xHqqkZx_
 *************************************************************************/
class MC3ToolBaseCreate : public MC3ToolBaseFDA
{
public:
enum FTWhichTmpl
{
	FDBC_REFO_INSIDE_OBJ = 0,	// _xZkqqHx_jDoAjFjEjFjEjFgJiCpAiMlDiCmJiClHiCoJiBeC_xHqqkZx_
	FDBC_REFO_LAST_OBJ,			// _xZkqqHx_iNmFiMoDiCmJiNoMjAkMiClDiCoKiClNjFjEjFgJiCpAiMlDiCmJiClHiCoJiBeC_xHqqkZx_
	FDBC_REFO_CHIP_OBJ,			// _xZkqqHx_iDgAiDgCiDhGjFjEjFgJiCpAiMlDiCmJiClHiCoJiBeC_xHqqkZx_
	FDBC_REFO_SELECT_OBJ,		// _xZkqqHx_jBeJjBpAjCiGiCmMjFjEjFgJiCpAiMlDiCmJiClHiCoJiBeC_xHqqkZx_
};

public:
	//----- _xZkqqHx_iDfEiDhFiDeOiDiJiDfIiCmFjEeDiInD_xHqqkZx_ -----
	virtual void	OutStream (MCARCHIVE& ar);
	virtual void	InStream (MCARCHIVE& ar);
	virtual void	InitContents ();

protected:

struct MC3ObjMemRec
{
	MC3ObjMemRec () {}
	MC3ObjMemRec (FTObjectType a, DWORD b) : objType(a), dwObjID(b) {}
	FTObjectType	objType;
	DWORD			dwObjID;
};

typedef vector<MC3ObjMemRec>	MC3ObjMemRecVector;

protected:
	shortVector			m_vReferenceOrder;	// _xZkqqHx_iNoMjAkMiMlDiDiKiDhEiDeAiDiMiDjDiDfIjFjEjFgJiCmMiMjPiNpFiPiHiBeC_xHqqkZx_
	MC3ObjMemRecVector	m_vLastObj;			// _xZkqqHx_iNmFiMoDiCmJiNoMiCoHiCoKiClNjFjEjFgJiCmMiLeMjIfOiBeC_xHqqkZx_
}; // class MC3ToolBaseCreate.

#endif//__3ToolBaseCreate_h
