#pragma once
|
|
|
|
template<typename T>
|
class CMosisStrg
|
{
|
int m_nSpace;
|
int m_Width, m_Height;
|
T* m_pData;
|
public:
|
CMosisStrg()
|
{
|
m_pData= NULL;
|
m_Width= m_Height= m_nSpace= 0;
|
}
|
~CMosisStrg()
|
{
|
if(m_pData)
|
delete[] m_pData;
|
}
|
BOOL SetStrgSize(int w, int h)
|
{
|
if(w < 1) w= 1;
|
if(h < 1) h= 1;
|
|
int size= w*h;
|
if(size <= m_nSpace)
|
{
|
m_Width= w;
|
m_Height= h;
|
return TRUE;
|
}
|
if(m_pData)
|
delete[] m_pData;
|
|
m_pData= new T[size];
|
m_nSpace= m_Width= m_Height= 0;
|
if(! m_pData) return FALSE;
|
|
m_nSpace= size;
|
m_Width= w;
|
m_Height= h;
|
return TRUE;
|
}
|
};
|
|
template<typename T>
|
class CMosisBlock
|
{
|
public:
|
CMosisBlock()
|
{
|
m_pData= NULL;
|
m_nData= m_nSpace= 0;
|
ResetBlock();
|
}
|
~CMosisBlock()
|
{
|
if(m_pData)
|
delete[] m_pData;
|
}
|
|
public:
|
int m_iData;
|
int m_nSpace;
|
int m_nData;
|
T *m_pData;
|
public:
|
BOOL SetBlockSize(int size)
|
{
|
if(size <= 1)
|
size= 1;
|
|
if(size <= m_nSpace)
|
{
|
m_nData= size;
|
return TRUE;
|
}
|
if(m_pData)
|
delete[] m_pData;
|
|
m_pData= new T[size];
|
m_nSpace= m_nData= 0;
|
if(! m_pData) return FALSE;
|
|
m_nSpace= size;
|
m_nData= size;
|
return TRUE;
|
}
|
|
void ResetBlock() { m_iData= 0; }
|
T* GetData(int i) {return (m_pData+ i);}
|
T* GetDataAddr() {return m_pData;}
|
int GetDataCount() {return m_iData;}
|
int GetValidDataSpace() {return m_nData;}
|
int GetDataSpace() {return m_nSpace;}
|
int GetDataIndex() {return m_iData;}
|
T* GetNextData() {
|
m_iData++;
|
if(m_iData >= m_nData){ m_iData= m_nData;}
|
return m_pData+ m_iData-1;
|
}
|
|
|
T* GetCurDataAuto() {m_iData++; return m_pData+ m_iData-1;}
|
T* GetCurData() {return m_pData+ m_iData;}
|
int AddDataCount() {if(m_iData< m_nData-1) ++m_iData; return m_iData;}
|
|
void AddBlock(T &data)
|
{
|
if(m_iData < m_nData)
|
{
|
m_pData[m_iData++]= data;
|
}
|
}
|
};
|
|
|
template<typename T>
|
class CMosisStack
|
{
|
public:
|
CMosisStack()
|
{
|
m_pData= NULL;
|
m_nData= m_nSpace= 0;
|
}
|
~CMosisStack()
|
{
|
if(m_pData)
|
delete[] m_pData;
|
}
|
|
protected:
|
int m_nSpace;
|
int m_nData;
|
T *m_pData;
|
|
public:
|
BOOL SetStackSize(int size)
|
{
|
if(size <= 1)
|
size= 1;
|
|
if(size <= m_nSpace)
|
{
|
m_nData= size;
|
return TRUE;
|
}
|
if(m_pData)
|
delete[] m_pData;
|
|
m_pData= new T[size];
|
m_nSpace= m_nData= 0;
|
if(! m_pData) return FALSE;
|
|
m_nSpace= size;
|
m_nData= size;
|
return TRUE;
|
}
|
T* GetStackData(int i) {return (m_pData+ i);}
|
T* GetStackDataAddr() {return m_pData;}
|
int GetStackDataCount() {return m_nData;}
|
|
};
|
|
|
template<typename T>
|
class CPointerBox
|
{
|
|
};
|