00001
00002
00003
00004
00005
00006
00007
00008 #ifndef _SK_UTIL_ARRAYLIST_HXX_
00009 #define _SK_UTIL_ARRAYLIST_HXX_
00010
00011 #include <sk/util/AbstractList.hxx>
00012 #include <sk/util/Processor.h>
00013 #include <sk/util/Class.h>
00014 #include <sk/util/Slot.hxx>
00015 #include <vector>
00016
00017 namespace sk {
00018 namespace util {
00019 template<class T>
00020 class ArrayList
00021 : public sk::util::AbstractList<T>
00022 {
00023 public:
00024 ArrayList();
00025 virtual ~ArrayList();
00026
00027
00028 const sk::util::Class getClass() const;
00029
00030
00031 void clear();
00032 int size() const;
00033 bool isEmpty() const;
00034 bool add(T& object);
00035 bool add(T* object);
00036 void forEach(const sk::util::Processor<T>& processor) const;
00037
00038 T& get(int index) const;
00039 using AbstractList<T>::get;
00040
00041 private:
00042 ArrayList(const ArrayList<T>& other);
00043 ArrayList<T>& operator = (const ArrayList<T>& other);
00044
00045 typedef Slot<T>* item;
00046 typedef std::allocator<item> allocator;
00047 typedef std::vector<item, allocator> container;
00048
00049 container _container;
00050 };
00051 }
00052 }
00053
00054 #endif