#ifndef __XMLIO_GROUP_TEMPLATE__ #define __XMLIO_GROUP_TEMPLATE__ namespace XMLIOSERVER { template class GroupTemplate : public ObjectTemplate > { public: GroupTemplate(void) : ObjectTemplate >(), childList(), groupList() {/* Ne rien faire de plus */} GroupTemplate(const string& _id) : ObjectTemplate >(_id), childList(), groupList() {/* Ne rien faire de plus */} virtual const char* getName(void) const {return ("GroupTemplate"); } /// Pour les groupes d'objets enfants /// GroupTemplate& createGroup(const string _id) throw (XMLIOUndefinedValueException) { GroupTemplate& obj = GroupTemplate::CreateObject(_id); groupList.addPtrObject(&obj); return (obj); } GroupTemplate& createGroup(void) { GroupTemplate& obj = GroupTemplate::CreateObject(); groupList.addPtrObject(&obj); return (obj); } GroupTemplate& getGroup(const string _id) throw (XMLIOUndefinedValueException) { return (*groupList[_id]); } bool hasGroup(const string _id) { return (groupList.hasMappedValue(_id)); } const StrHashMap* >& getGroupList(void) { return (groupList); } size_t getNbGroup() const {return (groupList.getVectorSize()); } /// Pour les objets enfants /// T& createChild(const string _id) throw (XMLIOUndefinedValueException) { T& obj = ObjectTemplate::CreateObject(_id); childList.addPtrObject(&obj); return (obj); } T& createChild(void) { T& obj = ObjectTemplate::CreateObject(); childList.addPtrObject(&obj); return (obj); } T& getChild(const string _id) throw (XMLIOUndefinedValueException) { return (*childList[_id]); } bool hasChild(const string _id) { return (childList.hasMappedValue(_id)); } const StrHashMap& getCurrentListChild(void) { return (childList); } size_t getNbChild() const {return (childList.getVectorSize()); } static bool CLASS_TEST(ostream& log = std::clog) { GroupTemplate group; ///////////////////////////////////////// GroupTemplate& group0 = group.createGroup("toto"); GroupTemplate& group1 = group.createGroup(); T& child0 = group.createChild("toto"); T& child1 = group.createChild(); log << "Nombre de (groupes) enfants : " << group.getNbChild() << "/" << group.getNbGroup() << " (2/2 attendu)" << std::endl; ///////////////////////////////////////// log << "Test GroupTemplate ... ok !" << std::endl; return (true); }; ~GroupTemplate() {/* Ne rien faire de plus pour le moment */ } protected: private: StrHashMap childList; StrHashMap* > groupList; }; // class GroupTemplate }// namespace XMLIOSERVER #endif // __XMLIO_GROUP_TEMPLATE__