--- parser3/src/include/pa_stack.h 2003/07/24 11:31:21 1.18 +++ parser3/src/include/pa_stack.h 2003/10/02 07:26:46 1.20 @@ -8,7 +8,7 @@ #ifndef PA_STACK_H #define PA_STACK_H -static const char* IDENT_STACK_H="$Date: 2003/07/24 11:31:21 $"; +static const char* IDENT_STACK_H="$Date: 2003/10/02 07:26:46 $"; #include "pa_config_includes.h" #include "pa_array.h" @@ -32,17 +32,17 @@ public: } bool is_empty() { return ftop==0; } - size_t top() { return ftop; } - void top(size_t atop) { ftop=atop; } - T upper_value() { + size_t top_index() { return ftop; } + void set_top_index(size_t atop) { ftop=atop; } + T top_value() { assert(!is_empty()); return get(ftop-1); } /// call this prior to collecting garbage [in unused part of stack there may be pointers(unused)] void wipe_unused() { - if(!is_full()) - memset(&felements[fused], 0, (fallocated-fused)*sizeof(T)); + if(size_t above_top_size=fused-ftop) + memset(&felements[ftop], 0, above_top_size*sizeof(T)); } protected: