//	v1.01 - ゼロクリア対応

#ifndef __MyuDynamicArray_H__
#define __MyuDynamicArray_H__

#include "mslcommon.h"

//	クラス宣言
template <typename T>
class CMyuDynamicArray
{
protected:
	typename T* m_pBuf;
	int m_nBufSize;

public:
	//	コンストラクタ・デストラクタ
	CMyuDynamicArray(){ m_pBuf=NULL; m_nBufSize=0; }
	//CMyuDynamicArray( int nSize ) : CMyuDynamicArray(){ m_pBuf=NULL; m_nBufSize=0; Alloc(nSize); }
	CMyuDynamicArray( int nSize ) : CMyuDynamicArray(){ Alloc(nSize); }
	virtual ~CMyuDynamicArray(){ Release(); }

	//	開放
	void Release(){ SAFE_DELETE_ARY(m_pBuf); m_nBufSize=0; }

	bool Alloc( int size )
	{
		//	一応開放
		Release();

		m_pBuf = new typename T[size];
		if ( m_pBuf == NULL )
			return false;
		MslZeroMemory( m_pBuf, size );
		m_nBufSize = size;
		return true;
	}

	typename T* GetBuf(){ return m_pBuf; };
	int GetAllocedSize(){ return m_nBufSize; }
};

#endif//__MyuDynamicArray_H__
