抛弃GdCpp*.dll/pdb历史重新建库。libhv和Sqlite的dll保留

This commit is contained in:
Zhang Jianjun
2026-02-02 16:09:02 +08:00
parent f148ca49e3
commit 4a2a284ac0
292 changed files with 350450 additions and 0 deletions

101
include/Mem/CStack.h Normal file
View File

@@ -0,0 +1,101 @@
#pragma once
#include "GdCPP_Exports.h"
template<typename T>
class CStack
{
public:
/// 构造函数指定预先分配的空间,和实际使用的数量
CStack(uint32_t maxnum = 0, uint32_t num = 0)
: _Num(num)
, _MaxNum(maxnum)
, _Data(nullptr)
{
ASSERT(_MaxNum >= _Num);
if (_MaxNum) {
_Data = new T[_MaxNum];
}
}
~CStack()
{
clearArray();
}
/// 调整实际使用的数量
bool resizeCnt(uint32_t num)
{
ASSERT(_MaxNum >= num);
if (_Num != num && num <= _MaxNum) {
_Num = num;
return true;
}
else {
return false;
}
}
// 调整预留空间
bool reserveCnt(uint32_t maxnum, bool useall = false)
{
if (maxnum > _MaxNum) {
clearArray();
_MaxNum = maxnum;
_Data = new T[_MaxNum];
if (_Data == nullptr) return false;
if (useall) {
_Num = _MaxNum;
}
}
return true;
}
/// 重载[]操作符简化图像的引用调用必须保证camid在[0, camNum-1]范围内
inline T& operator [](size_t id)
{
return _Data[id];
}
inline const T& operator [](size_t id) const
{
return _Data[id];
}
inline T& at(size_t id)
{
return _Data[id];
}
inline const T& at(size_t id) const
{
return _Data[id];
}
inline uint32_t Num() const { return _Num; }
inline uint32_t MaxNum() const { return _MaxNum; }
void clearArray() {
delete[] _Data;
_Data = nullptr;
_MaxNum = 0;
_Num = 0;
}
private:
/// 禁用复制构造函数
CStack(const CStack& r);
protected:
/// 图形数组长度
uint32_t _Num;
uint32_t _MaxNum;
/// 动态分配的CImageBuf数组。数量没有使用宏CAM_MAX_NUM因为CAM_MAX_NUM在不同应用可能发生变化。
/// 为了通用性不在构造时动态分配camNum指定数量
/// 或者默认构造空数组使用resize函数分配。
T* _Data=nullptr;
};