00001
00002
00003 #ifndef _LINKGRPS_H
00004 #define _LINKGRPS_H
00005
00006 #include "tagorder.h"
00007 #include "lnkgrptype.h"
00008 #include "linkgrp.h"
00009 #include "link.h"
00010 #include "idreferl.h"
00011 #include "xmlsimplestruct.h"
00012 #include <map>
00013 #include <vector>
00014 #include <string>
00015
00018 class LinkGrpS {
00019 std::vector <LinkGrp> lnkGrpV;
00020 unsigned ind;
00021
00022 void printErrorea(char*, XMLSimpleNode*, XMLSimpleNode*) const;
00023 XMLSimpleNode* sortuXptr(XMLSimpleStruct* xmlstruct, const std::string & id, const std::string & docRef, const std::string & from) const;
00024 std::map <RefDataErl, Id, TagOrder<RefDataErl> > lortuXptrId() const;
00025 Link xLink2Link(const std::map<Id,Id> & xId2Id, const Link & xLink) const throw (char*);
00026
00027 public:
00028
00030 LinkGrpS();
00031
00035 LinkGrpS(const LinkGrpS & lgs);
00036
00041 LinkGrpS& operator=(const LinkGrpS & lgs);
00042
00046 void add(const LinkGrp & lg);
00047
00051 void remove(const LinkGrp & lg);
00052
00055 void removeAll();
00056
00061 void addLink(const LnkGrpType & type, const Link & lnk);
00062
00067 void removeLink(const LnkGrpType & type, const Link & lnk);
00068
00071 void begin();
00072
00075 void next();
00076
00080 bool ready() const;
00081
00085 LinkGrp current() const;
00086
00088 void ordenatu();
00089
00093 unsigned getLnkGrpKop() const;
00094
00099 LinkGrp getLinkGrp(const unsigned pos) const;
00100
00105 LinkGrp getLinkGrp(const LnkGrpType & lgt) const;
00106
00112 XMLSimpleNode* toXML(XMLSimpleStruct* xmlstruct, const IdRefErl & idRefErl) const;
00113
00117 void init(XMLSimpleNode* lnkItem) throw (char*);
00118
00119
00120
00121
00122 };
00123 #endif //_LINKGRPS_H