00001 00011 #ifndef __FACES_H__ 00012 #define __FACES_H__ 00013 00014 #include <cad/container/container.h> 00015 #include <cad/objects/face.h> 00016 00017 #include <slist> 00018 00022 class Faces : public Container { 00023 public: 00024 struct Iterator; 00025 00029 Faces(); 00030 00035 Faces(Face* object); 00036 00040 virtual ~Faces(); 00041 00047 void add(Face* object); 00048 00053 void clear(); 00054 00059 unsigned count(); 00060 00066 bool empty(); 00067 00074 void first(); 00075 00082 Element getObject() throw (OutOfModelException*); 00083 00090 bool hasObject(); 00091 00097 void next() throw (OutOfModelException*); 00098 00102 void print(); 00103 00104 private: 00108 typedef slist<Face *> FaceContainer; 00109 00117 bool exist(Face* object); 00118 00124 bool exist(Iterator it); 00125 00134 Iterator find(Face* object); 00135 00140 struct Iterator { 00144 FaceContainer::iterator faceIt; 00145 }; 00146 00150 Iterator current_object; 00151 00155 FaceContainer objs; 00156 }; // class Faces 00157 00158 #endif // ! __Faces_H__