- : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src),
- m_Id(XMLString::replicate(src.m_Id)) {
-
- for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
- if (*i) {
- X509Data* xd=dynamic_cast<X509Data*>(*i);
- if (xd) {
- getX509Datas().push_back(xd->cloneX509Data());
- continue;
- }
-
- KeyName* kn=dynamic_cast<KeyName*>(*i);
- if (kn) {
- getKeyNames().push_back(kn->cloneKeyName());
- continue;
- }
-
- KeyValue* kv=dynamic_cast<KeyValue*>(*i);
- if (kv) {
- getKeyValues().push_back(kv->cloneKeyValue());
- continue;
- }
-
- DEREncodedKeyValue* ekv=dynamic_cast<DEREncodedKeyValue*>(*i);
- if (ekv) {
- getDEREncodedKeyValues().push_back(ekv->cloneDEREncodedKeyValue());
- continue;
- }
-
- RetrievalMethod* rm=dynamic_cast<RetrievalMethod*>(*i);
- if (rm) {
- getRetrievalMethods().push_back(rm->cloneRetrievalMethod());
- continue;
- }
-
- MgmtData* md=dynamic_cast<MgmtData*>(*i);
- if (md) {
- getMgmtDatas().push_back(md->cloneMgmtData());
- continue;
- }
-
- SPKIData* sd=dynamic_cast<SPKIData*>(*i);
- if (sd) {
- getSPKIDatas().push_back(sd->cloneSPKIData());
- continue;
- }
-
- PGPData* pd=dynamic_cast<PGPData*>(*i);
- if (pd) {
- getPGPDatas().push_back(pd->clonePGPData());
- continue;
- }
-
- KeyInfoReference* kref=dynamic_cast<KeyInfoReference*>(*i);
- if (kref) {
- getKeyInfoReferences().push_back(kref->cloneKeyInfoReference());
- continue;
- }
-
- getUnknownXMLObjects().push_back((*i)->clone());
- }
- }
+ : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src), m_Id(nullptr) {
+ IMPL_CLONE_ATTRIB(Id);
+ IMPL_CLONE_CHILDBAG_BEGIN;
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(X509Data);
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(KeyName);
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(KeyValue);
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(DEREncodedKeyValue);
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(RetrievalMethod);
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(MgmtData);
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(SPKIData);
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(PGPData);
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(KeyInfoReference);
+ IMPL_CLONE_XMLOBJECT_CHILD_IN_BAG(UnknownXMLObject);
+ IMPL_CLONE_CHILDBAG_END;