#ifndef _IMAGELST_RELATION_HPP_ #define _IMAGELST_RELATION_HPP_ #ifdef _EXPAND_RELATION_TEMPLATES_ #pragma option -Jgd #endif template class RContainer { friend class Relation; public: T *item(void); void item(T *lpItem); RContainer *sibling(void); void sibling(RContainer *lpSibling); RContainer *parent(void); void parent(RContainer *lpParent); RContainer *child(void); void child(RContainer *lpChild); private: RContainer *mlpSibling; RContainer *mlpParent; RContainer *mlpChild; T *mlpItem; RContainer(void); ~RContainer(); }; template class Relation { public: Relation(void); Relation(const Relation &someRelation); virtual ~Relation(void); void insert(const T &someItem,const T &insertAfter); void remove(const T &someItem); WORD find(T &someItem); Relation &operator=(const Relation &someRelation); WORD operator==(const Relation &someRelation)const; private: RContainer *Relation::searchChildDescend(RContainer *lpRContainer,T &someItem); RContainer *Relation::searchSiblingDescend(RContainer *lpRContainer,T &someItem); RContainer *mlpRContainer; }; #endif