1 ///////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/stack.h
3 // Purpose:     STL stack clone
4 // Author:      Lindsay Mathieson
5 // Modified by:
6 // Created:     30.07.2001
7 // Copyright:   (c) 2001 Lindsay Mathieson <lindsay@mathieson.org>
8 // Licence:     wxWindows licence
9 ///////////////////////////////////////////////////////////////////////////////
10 
11 #ifndef _WX_STACK_H_
12 #define _WX_STACK_H_
13 
14 #include "wx/vector.h"
15 
16 #define WX_DECLARE_STACK(obj, cls)\
17 class cls : public wxVectorBase\
18 {\
19     WX_DECLARE_VECTORBASE(obj, cls);\
20 public:\
21     void push(const obj& o)\
22     {\
23         bool rc = Alloc(size() + 1);\
24         wxASSERT(rc);\
25         Append(new obj(o));\
26     };\
27 \
28     void pop()\
29     {\
30         RemoveAt(size() - 1);\
31     };\
32 \
33     obj& top()\
34     {\
35         return *(obj *) GetItem(size() - 1);\
36     };\
37     const obj& top() const\
38     {\
39         return *(obj *) GetItem(size() - 1);\
40     };\
41 }
42 
43 #endif // _WX_STACK_H_
44 
45