00001
00015 #ifndef STACK_H
00016 #define STACK_H
00017
00018
00019 #include <string.h>
00020 #include "CommanHeader.h"
00021
00022
00023
00024
00025
00026 class Stack {
00027 enum
00028 {
00029 EMaxProduction = 1000
00030 };
00031
00032 public:
00033
00034 Stack() : iStatckTop(-1)
00035 {
00036 }
00037
00042 ~Stack()
00043 {
00044 ProducedItem* item = NULL;
00045 do
00046 {
00047 item = Pop();
00048 delete item;
00049 } while(item != NULL);
00050 }
00051
00060 void Push( ProducedItem* aItem )
00061 {
00062
00063 if(iStatckTop < EMaxProduction-1)
00064 {
00065 ProducedItem* item = new ProducedItem;
00066 memcpy(item, aItem, sizeof(ProducedItem));
00067 iItems[++iStatckTop] = item;
00068 }
00069
00070 }
00071
00082 ProducedItem* Pop()
00083 {
00084 if(iStatckTop != -1)
00085 {
00086 ProducedItem* item = iItems[iStatckTop];
00087 iItems[iStatckTop--] = NULL;
00088 return item;
00089 }
00090 return NULL;
00091 }
00092
00093 private:
00094 ProducedItem* iItems[EMaxProduction];
00095 int iStatckTop;
00096 };
00097
00098 #endif
00099
00100