44 lines
839 B
C
44 lines
839 B
C
|
|
#pragma once
|
||
|
|
#include <glob/GlobMem.h>
|
||
|
|
#include <map>
|
||
|
|
#include <memory>
|
||
|
|
|
||
|
|
template <typename T> class MemQueue {
|
||
|
|
private:
|
||
|
|
long *m_pSize;
|
||
|
|
long *m_pMaxSize;
|
||
|
|
|
||
|
|
T *m_pHead;
|
||
|
|
T *m_pTail;
|
||
|
|
T *m_pPtr;
|
||
|
|
|
||
|
|
public:
|
||
|
|
MemQueue(std::string tableNmae, int maxSize) {
|
||
|
|
if (maxSize <= 0) {
|
||
|
|
maxSize = 1;
|
||
|
|
}
|
||
|
|
|
||
|
|
char *ptr = (char *)GlobMem::GetInstancePtr()->GetTablePtr(tableNmae);
|
||
|
|
if (ptr == nullptr) {
|
||
|
|
m_pPtr = nullptr;
|
||
|
|
m_pSize = 0;
|
||
|
|
} else {
|
||
|
|
m_pSize = (long *)ptr;
|
||
|
|
m_pHead = (T *)(ptr + sizeof(long));
|
||
|
|
m_pTail = dynamic_cast < if ((*m_pSize) > maxSize) {
|
||
|
|
(*m_pSize) = maxSize;
|
||
|
|
}
|
||
|
|
else if ((*m_pSize) < 0) {
|
||
|
|
(*m_pSize) = 0;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
m_pPtr = (T *)(ptr + sizeof(long));
|
||
|
|
}
|
||
|
|
~MemQueue();
|
||
|
|
|
||
|
|
T *operator()() { return m_pPtr; }
|
||
|
|
|
||
|
|
void push() {}
|
||
|
|
|
||
|
|
void pop() {}
|
||
|
|
};
|