Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
85
GameTools/ZALLA3D BASECLASS/queue.h
Normal file
85
GameTools/ZALLA3D BASECLASS/queue.h
Normal file
@@ -0,0 +1,85 @@
|
||||
#ifndef GENERIC_QUEUE_H
|
||||
#define GENERIC_QUEUE_H
|
||||
|
||||
#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;
|
||||
delete element;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
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
|
||||
Reference in New Issue
Block a user