00001 00041 #ifndef _QUEUEIMPL_H 00042 #define _QUEUEIMPL_H 00043 00044 #include "queue.h" 00045 #include "orderedlist.h" 00046 00047 using std::string; 00048 00049 namespace container { 00050 00060 class QueueImpl: public Queue { 00061 public: 00062 00063 const static Info * const TYPE_INFO; 00064 00065 private: 00066 OrderedList * const list; 00067 00068 QueueImpl(OrderedList* list); 00069 00070 public: 00071 00072 QueueImpl(const QueueImpl& orig); 00073 00074 QueueImpl(const QueueImpl& orig, bool deepCopy); 00075 00076 virtual ~QueueImpl(); 00077 00078 00079 /********************* QueueImpl Methods (public) *********************/ 00080 00084 static Queue* factoryLinkedComposition(); 00085 00089 static Queue* factoryArrayComposition(); 00090 00091 protected: 00092 00093 /********************* Queue Methods (protected) *********************/ 00094 00095 virtual void enqueue_impl(Entity* entity); 00096 00097 virtual Entity * dequeue_impl(); 00098 00099 public: 00100 00101 /********************* Object Methods (public) *********************/ 00102 00103 virtual ostream& renderState(ostream& os) const; 00104 00105 virtual const Info* typeInfo() const; 00106 00107 virtual Object* clone(bool deepCopy = false) const; 00108 00109 }; 00110 00111 } // namespace container 00112 #endif /* _QUEUEIMPL_H */