1*128277c9SStephan Aßmus /* 2*128277c9SStephan Aßmus * Copyright 2006, Haiku. 3*128277c9SStephan Aßmus * Distributed under the terms of the MIT License. 4*128277c9SStephan Aßmus * 5*128277c9SStephan Aßmus * Authors: 6*128277c9SStephan Aßmus * IngoWeinhold <bonefish@cs.tu-berlin.de> 7*128277c9SStephan Aßmus * Stephan Aßmus <superstippi@gmx.de> 8*128277c9SStephan Aßmus */ 9*128277c9SStephan Aßmus 10*128277c9SStephan Aßmus #ifndef LIST_H 11*128277c9SStephan Aßmus #define LIST_H 12*128277c9SStephan Aßmus 13*128277c9SStephan Aßmus #include <List.h> 14*128277c9SStephan Aßmus 15*128277c9SStephan Aßmus template<class T, bool delete_on_destruction = true> 16*128277c9SStephan Aßmus class List : protected BList { 17*128277c9SStephan Aßmus public: 18*128277c9SStephan Aßmus List(int32 count = 10) BList(count)19*128277c9SStephan Aßmus : BList(count) {} 20*128277c9SStephan Aßmus ~List()21*128277c9SStephan Aßmus ~List() 22*128277c9SStephan Aßmus { MakeEmpty(); } 23*128277c9SStephan Aßmus 24*128277c9SStephan Aßmus // adding items AddItem(T value)25*128277c9SStephan Aßmus inline void AddItem(T value) 26*128277c9SStephan Aßmus { BList::AddItem((void*)value); } 27*128277c9SStephan Aßmus AddItem(T value,int32 index)28*128277c9SStephan Aßmus inline void AddItem(T value, int32 index) 29*128277c9SStephan Aßmus { BList::AddItem((void*)value, index); } 30*128277c9SStephan Aßmus 31*128277c9SStephan Aßmus // information HasItem(T value)32*128277c9SStephan Aßmus inline bool HasItem(T value) const 33*128277c9SStephan Aßmus { return BList::HasItem((void*)value); } 34*128277c9SStephan Aßmus IndexOf(T value)35*128277c9SStephan Aßmus inline int32 IndexOf(T value) const 36*128277c9SStephan Aßmus { return BList::IndexOf((void*)value); } 37*128277c9SStephan Aßmus IsEmpty()38*128277c9SStephan Aßmus inline bool IsEmpty() const 39*128277c9SStephan Aßmus { return BList::IsEmpty(); } 40*128277c9SStephan Aßmus CountItems()41*128277c9SStephan Aßmus inline int32 CountItems() const 42*128277c9SStephan Aßmus { return BList::CountItems(); } 43*128277c9SStephan Aßmus 44*128277c9SStephan Aßmus // retrieving items ItemAt(int32 index)45*128277c9SStephan Aßmus inline T ItemAt(int32 index) const 46*128277c9SStephan Aßmus { return (T)BList::ItemAt(index); } 47*128277c9SStephan Aßmus ItemAtFast(int32 index)48*128277c9SStephan Aßmus inline T ItemAtFast(int32 index) const 49*128277c9SStephan Aßmus { return (T)BList::ItemAtFast(index); } 50*128277c9SStephan Aßmus FirstItem()51*128277c9SStephan Aßmus inline T FirstItem() const 52*128277c9SStephan Aßmus { return (T)BList::FirstItem(); } 53*128277c9SStephan Aßmus LastItem()54*128277c9SStephan Aßmus inline T LastItem() const 55*128277c9SStephan Aßmus { return (T)BList::LastItem(); } 56*128277c9SStephan Aßmus 57*128277c9SStephan Aßmus // removing items RemoveItem(T value)58*128277c9SStephan Aßmus inline bool RemoveItem(T value) 59*128277c9SStephan Aßmus { return BList::RemoveItem((void*)value); } 60*128277c9SStephan Aßmus RemoveItem(int32 index)61*128277c9SStephan Aßmus inline T RemoveItem(int32 index) 62*128277c9SStephan Aßmus { return (T)BList::RemoveItem(index); } 63*128277c9SStephan Aßmus RemoveItems(int32 index,int32 count)64*128277c9SStephan Aßmus inline bool RemoveItems(int32 index, int32 count) 65*128277c9SStephan Aßmus { return BList::RemoveItems(index, count); } 66*128277c9SStephan Aßmus MakeEmpty()67*128277c9SStephan Aßmus inline void MakeEmpty() { 68*128277c9SStephan Aßmus if (delete_on_destruction) { 69*128277c9SStephan Aßmus // delete all values 70*128277c9SStephan Aßmus int32 count = CountItems(); 71*128277c9SStephan Aßmus for (int32 i = 0; i < count; i++) 72*128277c9SStephan Aßmus delete (T)BList::ItemAtFast(i); 73*128277c9SStephan Aßmus } 74*128277c9SStephan Aßmus BList::MakeEmpty(); 75*128277c9SStephan Aßmus } 76*128277c9SStephan Aßmus }; 77*128277c9SStephan Aßmus 78*128277c9SStephan Aßmus #endif // LIST_H 79