' 'Class description: ' !short:Stack class structure Class Stack: ~~~~~~~~~~~~~ Stack is defined as an object. Common use: ~~~~~~~~~~~~~~~~~ LOCAL OBJECT Stack OF Stack Stack:Push(...) //can be used repeatedly ... x:=Stack:Pop() //can be repeated Source code of class Stack is in C_Stack.prg !seealso: c_menu.ngo:Menu c_color.ngo:Color ob_class.ngo:"Class hierarchy" !short:~~~~~~~~~~~~~~~~~~~~~~~ !short:create class Stack !short: export: !short: var Data //{} ^BStack:Data^N: private: array Array which data is filled by Push(val) method and retrieved by Pop() method. !short: method New=StackNew //o:New() --> self ^BStack:New()^N: public: return self Object is filled with default values. !short: method Init=StackInit //o:Init() --> true ^BStack:Init()^N: public: return true The stack is initialised, i.e. the instvar variable is set to {} (empty array). !short: method Push=StackPush //o:Push(val) --> xVal ^BStack:Push(xVal)^N: public: return xVal The value xVal is stored on top of the stack. !short: method Pop=StackPop //o:Pop() --> xVal ^BStack:Pop()^N: public: return xVal The last stored value is retrieved as result and stack is lowered by one. !short: method Top=StackTop //o:Top() --> xVal ^BStack:Top()^N: public: return xVal The last stored value is returned, no stack size change. !short: method IsEmpty=StackIsEmpty //o:IsEmpty() --> true/false ^BStack:IsEmpty()^N: public: return true/false If empty true is returned, else false is returned. !short: method Done=StackDone //o:Done() --> true ^BStack:Done()^N: public: return true Nothing to do because the memory becomes free when the object is destroyed. When the object of class Stack is destroyed, its instvar variable Stack:data is also destroyed. !short: endclass