00001 #ifndef __CMWFWLIST_H__ 00002 #define __CMWFWLIST_H__ 00003 00004 class cmwfwDoorKeeper; 00005 template <class T> class ListWrapperClass; 00006 00007 00008 template <class T> class cmwfwList{ 00009 public: 00010 friend class cmwfwDeviceServer; 00011 friend class cmwfwSubscribtionManager; 00012 friend class cmwfwPoller; 00013 friend class cmwfwForwarder; 00014 friend class cmwfwIOValue; 00015 00016 cmwfwList(bool thr_safe = true); 00017 ~cmwfwList(void); 00018 protected: 00019 private: 00020 void Size(int* sz,bool useMutex = true); 00021 bool get(T& item, T* dest, bool useMutex = true); 00022 bool getFirst(T* dest,bool useMutex = true); 00023 bool getLast(T* dest,bool useMutex = true); 00024 bool getNext(T* dest,T pos,bool useMutex = true); 00025 bool getNext(T* dest,bool useMutex = true); 00026 bool getPrev(T* dest,T pos,bool useMutex = true); 00027 bool getPrev(T* dest,bool useMutex = true); 00028 bool getCurrent(T* dest,bool useMutex = true); 00029 void resetCurrent(bool useMutex = true); 00030 bool hasItem(T item,bool useMutex = true); 00031 bool insert(T item,bool useMutex = true); 00032 bool remove(T item,bool useMutex = true); 00033 void lock(); 00034 void unlock(); 00035 void heaperr(int line); 00036 00037 bool thread_safe; 00038 cmwfwDoorKeeper* doorkeeper; 00039 int size; 00040 ListWrapperClass<T>* current; 00041 ListWrapperClass<T>* first; 00042 ListWrapperClass<T>* last; 00043 }; 00044 00045 00046 00047 template <class T> class ListWrapperClass{ 00048 public: 00049 ListWrapperClass(T input); 00050 T Data(); 00051 ListWrapperClass* next; 00052 ListWrapperClass* prev; 00053 protected: 00054 private: 00055 T data; 00056 }; 00057 00058 #endif //#ifndef __CMWFWLIST_H__