[cpp-opensaml COMMIT] /branches/REL_2/saml/saml2/metadata/impl/MetadataImpl.cpp

noreply at shibboleth.net noreply at shibboleth.net
Thu Dec 22 22:37:56 GMT 2011


Author: scantor
Date: Thu Dec 22 22:37:56 2011
New Revision: 690

URL: http://svn.shibboleth.net/view/cpp-opensaml?rev=690&view=rev
Log:
Additional macros and cleanup for cloning

Modified:
    branches/REL_2/saml/saml2/metadata/impl/MetadataImpl.cpp

Modified: branches/REL_2/saml/saml2/metadata/impl/MetadataImpl.cpp
URL: http://svn.shibboleth.net/view/cpp-opensaml/branches/REL_2/saml/saml2/metadata/impl/MetadataImpl.cpp?rev=690&r1=689&r2=690&view=diff
==============================================================================
--- branches/REL_2/saml/saml2/metadata/impl/MetadataImpl.cpp (original)
+++ branches/REL_2/saml/saml2/metadata/impl/MetadataImpl.cpp Thu Dec 22 22:37:56 2011
@@ -44,6 +44,9 @@
 #include <xmltooling/util/XMLHelper.h>
 
 #include <ctime>
+#include <boost/lambda/bind.hpp>
+#include <boost/lambda/if.hpp>
+#include <boost/lambda/lambda.hpp>
 #include <xercesc/util/XMLUniDefs.hpp>
 #include <xsec/framework/XSECDefs.hpp>
 
@@ -113,9 +116,7 @@
             }
 
             void _clone(const localizedNameTypeImpl& src) {
-                setLang(src.getLang());
-                if (src.m_LangPrefix)
-                    m_LangPrefix = XMLString::replicate(src.m_LangPrefix);
+                IMPL_CLONE_FOREIGN_ATTRIB(Lang);
             }
 
             IMPL_XMLOBJECT_CLONE_EX(localizedNameType);
@@ -179,9 +180,7 @@
             }
 
             void _clone(const localizedURITypeImpl& src) {
-                setLang(src.getLang());
-                if (src.m_LangPrefix)
-                    m_LangPrefix = XMLString::replicate(src.m_LangPrefix);
+                IMPL_CLONE_FOREIGN_ATTRIB(Lang);
             }
 
             IMPL_XMLOBJECT_CLONE_EX(localizedURIType);
@@ -292,11 +291,7 @@
 
             ExtensionsImpl(const ExtensionsImpl& src)
                     : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
-                for (vector<XMLObject*>::const_iterator i=src.m_UnknownXMLObjects.begin(); i!=src.m_UnknownXMLObjects.end(); ++i) {
-                    if (*i) {
-                        getUnknownXMLObjects().push_back((*i)->clone());
-                    }
-                }
+                IMPL_CLONE_XMLOBJECT_CHILDREN(UnknownXMLObject);
             }
 
             IMPL_XMLOBJECT_CLONE(Extensions);
@@ -349,23 +344,10 @@
                     : AbstractXMLObject(src), AbstractComplexElement(src),
                         AbstractAttributeExtensibleXMLObject(src), AbstractDOMCachingXMLObject(src) {
                 init();
-                if (src.getExtensions())
-                    setExtensions(src.getExtensions()->cloneExtensions());
-                for (vector<OrganizationName*>::const_iterator i=src.m_OrganizationNames.begin(); i!=src.m_OrganizationNames.end(); i++) {
-                    if (*i) {
-                        getOrganizationNames().push_back((*i)->cloneOrganizationName());
-                    }
-                }
-                for (vector<OrganizationDisplayName*>::const_iterator j=src.m_OrganizationDisplayNames.begin(); j!=src.m_OrganizationDisplayNames.end(); j++) {
-                    if (*j) {
-                        getOrganizationDisplayNames().push_back((*j)->cloneOrganizationDisplayName());
-                    }
-                }
-                for (vector<OrganizationURL*>::const_iterator k=src.m_OrganizationURLs.begin(); k!=src.m_OrganizationURLs.end(); k++) {
-                    if (*k) {
-                        getOrganizationURLs().push_back((*k)->cloneOrganizationURL());
-                    }
-                }
+                IMPL_CLONE_TYPED_CHILD(Extensions);
+                IMPL_CLONE_TYPED_CHILDREN(OrganizationName);
+                IMPL_CLONE_TYPED_CHILDREN(OrganizationDisplayName);
+                IMPL_CLONE_TYPED_CHILDREN(OrganizationURL);
             }
 
             IMPL_XMLOBJECT_CLONE(Organization);
@@ -437,25 +419,13 @@
                     : AbstractXMLObject(src), AbstractComplexElement(src),
                         AbstractAttributeExtensibleXMLObject(src), AbstractDOMCachingXMLObject(src) {
                 init();
-                if (src.getExtensions())
-                    setExtensions(src.getExtensions()->cloneExtensions());
-                if (src.getCompany())
-                    setCompany(src.getCompany()->cloneCompany());
-                if (src.getGivenName())
-                    setGivenName(src.getGivenName()->cloneGivenName());
-                if (src.getSurName())
-                    setSurName(src.getSurName()->cloneSurName());
-
-                for (vector<EmailAddress*>::const_iterator i=src.m_EmailAddresss.begin(); i!=src.m_EmailAddresss.end(); i++) {
-                    if (*i) {
-                        getEmailAddresss().push_back((*i)->cloneEmailAddress());
-                    }
-                }
-                for (vector<TelephoneNumber*>::const_iterator j=src.m_TelephoneNumbers.begin(); j!=src.m_TelephoneNumbers.end(); j++) {
-                    if (*j) {
-                        getTelephoneNumbers().push_back((*j)->cloneTelephoneNumber());

[... 763 lines stripped ...]


More information about the commits mailing list