#ifndef __ObjBase_h
#define __ObjBase_h

/**********************************************************
 *                 _xZkqqHx_iBhJiDgOiDjDiDeLiDiKiBfLiLeMjGeAiBhK_xHqqkZx_
 *      a          _xZkqqHx_jEhKjHpB_xHqqkZx_(Array)
 *      b          _xZkqqHx_jIfPjHjNiMfO_xHqqkZx_(Bool)
 *      by         unsigned char(BYte)
 *      c          char(Char)
 *      cb         _xZkqqHx_jFlGiOjKjAjE_xHqqkZx_(Count of Byte)
 *      cr         _xZkqqHx_jAeG_xHqqkZx_(Color Reference value)
 *      cx,cy      short_xZkqqHx_iMfO_xHqqkZx_[_xZkqqHx_iNmAjFfH_xHqqkZx_(x,y)_xZkqqHx_iCmMiDeKiDeFiDjDiDfO_xHqqkZx_](Count of X,Y)
 *      dw         unsigned long_xZkqqHx_iMfO_xHqqkZx_(Double Word)
 *      fn         _xZkqqHx_iKnGjAjE_xHqqkZx_(FuNction)
 *      h          _xZkqqHx_iDgOiDjDiDgIiDiL_xHqqkZx_(Handle)
 *      i          int(Integer)
 *      l          long(Long)
 *      m          _xZkqqHx_iDeOiDiJiDfIiDiBiDjDiDgP_xHqqkZx_(data Member of a class)
 *      n          short_xZkqqHx_iIlNiCkCiCmN_xHqqkZx_int
 *      p          _xZkqqHx_iDhMiDeDiDjDiDfOiMfO_xHqqkZx_(Pointer)
 *      s          _xZkqqHx_jFlGiOjKjHpB_xHqqkZx_(String)
 *      sz         0_xZkqqHx_iCmFiPeJiCoNiCoJjFlGiOjKjHpB_xHqqkZx_(String terminated with Zero)
 *      tm         _xZkqqHx_iDgFiDeMiDfIiDgHjAkBjGeA_xHqqkZx_(Text Metric)
 *      w          unsigned short(Word)
 *      x,y        short_xZkqqHx_iMfOiNmAjFfHjCgM_xHqqkZx_
 ********************************************************/

#include "2Env.h"

class MCARCHIVE;

class MC2ObjBase
{
public:
	/*----- _xZkqqHx_jBfDiCmEiCmM_xHqqkZx_Subclass_xZkqqHx_iCkKiDeDiDjDiDhGiDiKiDiBiDjDiDgHiClFiCmIiCkPiCoKiCmOiCmIiCoHiCmIiCkC_xHqqkZx_ -----*/
	MC2ObjBase ();
	virtual BOOL	IsKindOf (FTObjectType nType) const;

	/*----- _xZkqqHx_iOmAjBmMiJlLiJmCjEfMiCmIiDeOiDiJiDfIiCkKiDeDiDjDiDhGiDiKiDiBiDjDiDgHiClFiCmIiCkPiCoKiCmOiCmIiCoHiCmIiCkC_xHqqkZx_ -----*/
	virtual FTObjectType	Type () const = 0;
	virtual void	OutShortTypeAndStream (MCARCHIVE& ar);
	virtual void	OutByteTypeAndStream (MCARCHIVE& ar);
	virtual void	InStream (MCARCHIVE& ar);
	virtual ~MC2ObjBase ();

	virtual void		RegisterObjForceID ();
	virtual void		UnregisterObjID ();
// 01.05.25 Fukushiro M. 1_xZkqqHx_iNhDjFmPiNfI_xHqqkZx_ ()
//	virtual const MC2ObjBaseVector* GetMembers () const;
	virtual void		GetMembers (MC2ObjBaseVector& vObj) const;

	DWORD		GetObjID () const;
	void		SetObjID (DWORD dwID);

	virtual DBLRect	GetResizeFrame () const = 0;

//----- 01.11.28 Fukushiro M. _xZkqqHx_jCmHiJmBiOgO_xHqqkZx_ ()-----
	//----- _xZkqqHx_iKePiMgAiCpAiOjNiCmCjBfDiCmEiCmM_xHqqkZx_Subclass_xZkqqHx_iCkKiDeDiDjDiDhGiDiKiDiBiDjDiDgHiClFiCmIiCkPiCoKiCmOiCmIiCoHiCmIiCkC_xHqqkZx_ -----
	virtual BOOL	IsClosePolygon () const;
//----- 01.11.28 Fukushiro M. _xZkqqHx_jCmHiJmBiPeJ_xHqqkZx_ ()-----

protected:
// 01.05.26 Fukushiro M. 1_xZkqqHx_iNhDiNoNiPjM_xHqqkZx_ ()
//	virtual void	OutStream (MCARCHIVE& ar);
	virtual void	OutStreamV3 (MCARCHIVE& ar);
	virtual void	InStreamV12 (MCARCHIVE& ar);
	virtual void	TerminateInStream ();

protected:
	DWORD		m_dwObjID;	// _xZkqqHx_iDeJiDhFiDfHiDeGiDeOiDgH_xHqqkZx_ID. Stream_xZkqqHx_iCmMiKnGiMfHiCmFiClBiCoKiCkK_xHqqkZx_
							// _xZkqqHx_iDiBiDjDiDgPjFmPjAjEiCmMiNmFiPiJiCmJiCmIiCkPiCoKiCmOiCmIiCoHiCmIiCkCiBeC_xHqqkZx_
}; // class MC2ObjBase.


inline DWORD MC2ObjBase::GetObjID () const
{
	return m_dwObjID;
}


#endif//__ObjBase_h
