- setVersion(src.getVersion());
- setID(src.getID());
- setIssueInstant(src.getIssueInstant());
- if (src.getIssuer())
- setIssuer(src.getIssuer()->cloneIssuer());
- if (src.getSignature())
- setSignature(src.getSignature()->cloneSignature());
- if (src.getSubject())
- setSubject(src.getSubject()->cloneSubject());
- if (src.getConditions())
- setConditions(src.getConditions()->cloneConditions());
- if (src.getAdvice())
- setAdvice(src.getAdvice()->cloneAdvice());
- for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
- if (*i) {
- AuthnStatement* authst=dynamic_cast<AuthnStatement*>(*i);
- if (authst) {
- getAuthnStatements().push_back(authst->cloneAuthnStatement());
- continue;
- }
-
- AttributeStatement* attst=dynamic_cast<AttributeStatement*>(*i);
- if (attst) {
- getAttributeStatements().push_back(attst->cloneAttributeStatement());
- continue;
- }
-
- AuthzDecisionStatement* authzst=dynamic_cast<AuthzDecisionStatement*>(*i);
- if (authzst) {
- getAuthzDecisionStatements().push_back(authzst->cloneAuthzDecisionStatement());
- continue;
- }
-
- Statement* st=dynamic_cast<Statement*>(*i);
- if (st) {
- getStatements().push_back(st->cloneStatement());
- continue;
- }
- }
- }
+ IMPL_CLONE_ATTRIB(Version);
+ IMPL_CLONE_ATTRIB(ID);
+ IMPL_CLONE_ATTRIB(IssueInstant);
+ IMPL_CLONE_TYPED_CHILD(Issuer);
+ IMPL_CLONE_TYPED_CHILD(Signature);
+ IMPL_CLONE_TYPED_CHILD(Subject);
+ IMPL_CLONE_TYPED_CHILD(Conditions);
+ IMPL_CLONE_TYPED_CHILD(Advice);
+ IMPL_CLONE_CHILDBAG_BEGIN;
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(AuthnStatement);
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(AttributeStatement);
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(AuthzDecisionStatement);
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(Statement);
+ IMPL_CLONE_CHILDBAG_END;