00001 00015 #ifndef STACK_H 00016 #define STACK_H 00017 00018 /* INCLUDE FILES */ 00019 #include <string.h> 00020 #include "CommanHeader.h" 00021 00022 00023 /* 00024 C++ Class that defines Stack 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 //If there is enough space to put item onto stack 00063 if(iStatckTop < EMaxProduction-1) 00064 { 00065 ProducedItem* item = new ProducedItem; 00066 memcpy(item, aItem, sizeof(ProducedItem)); 00067 iItems[++iStatckTop] = item; 00068 } 00069 //else Ignore it! 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 /*STACK_H*/ 00099 00100 /* End of File */
Copyright ©2010 Nokia Corporation and/or its subsidiary(-ies).
All rights
reserved. Unless otherwise stated, these materials are provided under the terms of the Eclipse Public License
v1.0.