]> git.saurik.com Git - wxWidgets.git/blob - include/wx/stack.h
OS X savvy implementation
[wxWidgets.git] / include / wx / stack.h
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