📄 pgebasedataclass.h
字号:
// base DataClass
#pragma once
#include "pgestd.h"
template <class VALUE>
class cstack
{
struct stackUt
{
VALUE pdata;
stackUt* pnext;
};
public:
cstack(int iSize=256)
{
pCur = NULL;
iMax = iSize;
pMain = new stackUt[iSize];
memset(pMain, 0, iSize*sizeof(stackUt));
iCount = 0;
memset(&nilValue, 0, sizeof(VALUE));
pnCur = pMain;
}
~cstack(void)
{
SAFE_DELETE_ARY(pMain);
}
void setstackempty()
{
memset(pMain, 0, iMax*sizeof(stackUt));
iCount = 0;
pCur = 0;
pnCur = pMain;
}
bool isstackempty()
{
return iCount==0;
}
VALUE stackpop() // 栈方式,后进先出
{
if (!iCount) return nilValue;
stackUt* pr = pCur;
pCur = pr->pnext;
iCount--;
return pr->pdata;
}
VALUE stackNpop() // 队列方式,先进先出
{
if (!iCount) return nilValue;
stackUt* pr = pnCur;
pnCur = pr+1;
iCount--;
if (!iCount)
{
pnCur = pMain;
pCur = 0;
}
return pr->pdata;
}
void stackpush(VALUE p)
{
stackUt* ps = pMain+iCount;
ps->pdata = p;
ps->pnext = pCur;
pCur = ps;
iCount++;
}
int iCount;
stackUt* pnCur;
stackUt* pCur;
stackUt* pMain;
int iMax;
VALUE nilValue;
};
class CPGETimer
{
public:
DWORD dwDalyTimes;
DWORD dwStaticTimes;
DWORD dwAllTimes;
int iFrmlim;
CPGETimer(void)
{
dwDalyTimes = 0;
dwStaticTimes = 0;
iFrmlim = 1;
}
~CPGETimer(void){}
void Init()
{
dwStaticTimes = timeGetTime();
dwAllTimes = 0;
}
void Tick()
{
dwDalyTimes = timeGetTime() - dwStaticTimes;
dwStaticTimes = timeGetTime();
dwAllTimes += dwDalyTimes;
if (dwDalyTimes < iFrmlim) {
Sleep(iFrmlim - dwDalyTimes);
//dwDalyTimes = iFrmlim;
}
}
DWORD GetAllTimes()
{
return dwAllTimes;
}
DWORD GetDalyTimes()
{
return dwDalyTimes;
}
void SetFrmLim(int frm)
{
iFrmlim = frm;
}
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -