Changeset 25395
- Timestamp:
- 05/09/08 08:08:59 (3 days ago)
- Files:
-
- haiku/trunk/headers/private/kernel/util/Stack.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
haiku/trunk/headers/private/kernel/util/Stack.h
r25381 r25395 10 10 11 11 #include <SupportDefs.h> 12 13 #include <AutoDeleter.h> 12 14 13 15 … … 77 79 }; 78 80 79 template<typename T> class StackDeleter { 81 82 template<typename T> class StackDelete { 80 83 public: 81 StackDeleter(Stack<T>* stack) 82 : fStack(stack) 84 inline void operator()(Stack<T>* stack) 85 { 86 if (stack == NULL) 87 return; 88 89 T item; 90 while (stack->Pop(&item)) { 91 delete item; 92 } 93 94 delete stack; 95 } 96 }; 97 98 template<typename T> class StackDeleter 99 : public BPrivate::AutoDeleter<Stack<T>, StackDelete<T> > { 100 public: 101 StackDeleter() 83 102 { 84 103 } 85 104 86 ~StackDeleter() 105 StackDeleter(Stack<T>* stack) 106 : BPrivate::AutoDeleter<Stack<T>, StackDelete<T> >(stack) 87 107 { 88 if (fStack == NULL)89 return;90 91 T item;92 while (fStack->Pop(&item)) {93 delete item;94 }95 96 delete fStack;97 108 } 98 99 void Detach()100 {101 fStack = NULL;102 }103 104 private:105 Stack<T>* fStack;106 109 }; 107 110
