Files
Client/Engine/Zalla3D Base Class/queue.h
LGram16 e067522598 Initial commit: ROW Client source code
Game client codebase including:
- CharacterActionControl: Character and creature management
- GlobalScript: Network, items, skills, quests, utilities
- RYLClient: Main client application with GUI and event handlers
- Engine: 3D rendering engine (RYLGL)
- MemoryManager: Custom memory allocation
- Library: Third-party dependencies (DirectX, boost, etc.)
- Tools: Development utilities

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 16:24:34 +09:00

93 lines
1.4 KiB
C++

#ifndef GENERIC_QUEUE_H
#define GENERIC_QUEUE_H
#pragma once
#include <assert.h>
#include <stdio.h>
#pragma warning( disable : 4786 )
template <class Type> class Queue {
public:
Queue(int s=-1);
~Queue();
void Enqueue(Type);
Type Dequeue();
void allocate(int s);
void LockSize(int s){lock_size=s;};
Type *element;
int num;
int array_size;
int lock_size;
Type &operator[](int i){assert(i>=0 && i<num);return element[i];}
};
template <class Type> Queue<Type>::Queue(int s){
num=0;
array_size=0;
element=NULL;
lock_size=s;
}
template <class Type> Queue<Type>::~Queue(){
num=0;
if(element) {
delete[] element;
element = NULL;
}
}
template <class Type> void Queue<Type>::allocate(int s){
assert(s>0);
assert(s>=num);
Type *old=element;
array_size=s;
element=new Type[array_size];
assert(element);
for(int i=0;i<num;i++)
{
element[i]=old[i];
}
if(old) {
delete[] old;
old = NULL;
}
}
template <class Type> void Queue<Type>::Enqueue(Type t)
{
if(lock_size==-1)
{
assert(num<=array_size);
if(num==array_size)
{
allocate((array_size)?array_size*2:16);
}
element[num++]=t;
}
else
{
assert(lock_size!=0);
if(num>=lock_size)
{
Dequeue();
element[num++]=t;
}
else
{
element[num++]=t;
}
}
}
template <class Type> Type Queue<Type>::Dequeue()
{
assert(num>0);
Type result=element[0];
for(int i=1;i<num;i++)
{
element[i-1]=element[i];
}
num--;
return result;
}
#endif