X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-xmltooling.git;a=blobdiff_plain;f=xmltooling%2FXMLObject.h;h=8ebb60755f5ff0c9b1f58fd222847d416df5d670;hp=176a973ff93216ada245a59b0ffd6e76fb2cb598;hb=HEAD;hpb=aff64904d1663ea3770daa633a80f64d205fbb2f diff --git a/xmltooling/XMLObject.h b/xmltooling/XMLObject.h index 176a973..8ebb607 100644 --- a/xmltooling/XMLObject.h +++ b/xmltooling/XMLObject.h @@ -1,17 +1,21 @@ -/* - * Copyright 2001-2007 Internet2 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at +/** + * Licensed to the University Corporation for Advanced Internet + * Development, Inc. (UCAID) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + * + * UCAID licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the + * License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the License. */ /** @@ -23,8 +27,8 @@ #ifndef __xmltooling_xmlobj_h__ #define __xmltooling_xmlobj_h__ -#include #include +#include #include #include @@ -47,6 +51,7 @@ namespace xmltooling { #ifndef XMLTOOLING_NO_XMLSEC class XMLTOOL_API Credential; #endif + class XMLTOOL_API QName; /** * Object that represents an XML Element that has been unmarshalled into this C++ object. @@ -54,7 +59,7 @@ namespace xmltooling { class XMLTOOL_API XMLObject { public: - virtual ~XMLObject() {} + virtual ~XMLObject(); /** * Creates a copy of the object, along with all of its children. @@ -121,9 +126,63 @@ namespace xmltooling { /** * Gets the value of the ID attribute set on this object, if any. * - * @return an ID value or NULL + * @return an ID value or nullptr */ virtual const XMLCh* getXMLID() const=0; + + /** + * Returns the xml:lang property of the object, if any. + * + * @return an xml:lang value, or nullptr + */ + virtual const XMLCh* getLang() const; + + /** + * Returns the xsi:nil property of the object, or false if not set. + * + * @return the xsi:nil property + */ + bool nil() const { + switch (getNil()) { + case xmlconstants::XML_BOOL_TRUE: + case xmlconstants::XML_BOOL_ONE: + return true; + case xmlconstants::XML_BOOL_FALSE: + case xmlconstants::XML_BOOL_ZERO: + default: + return false; + } + } + + /** + * Returns the xsi:nil property as an explicit enumerated value. + * + * @return the xsi:nil property + */ + virtual xmlconstants::xmltooling_bool_t getNil() const=0; + + /** + * Sets the xsi:nil property using an enumerated value. + * + * @param value value to set + */ + virtual void nil(xmlconstants::xmltooling_bool_t value)=0; + + /** + * Sets the xsi:nil property. + * + * @param value value to set + */ + void nil(bool value) { + nil(value ? xmlconstants::XML_BOOL_ONE : xmlconstants::XML_BOOL_ZERO); + } + + /** + * Sets the xsi:nil property using a string constant. + * + * @param value value to set + */ + void setNil(const XMLCh* value); /** * Checks to see if this object has a parent. @@ -186,7 +245,7 @@ namespace xmltooling { /** * Sets (or clears) text content relative to a child element's position. * - * @param value value to set, or NULL to clear + * @param value value to set, or nullptr to clear * @param position position relative to child element */ virtual void setTextContent(const XMLCh* value, unsigned int position=0)=0; @@ -236,22 +295,12 @@ namespace xmltooling { /** * A convenience method that is equal to calling releaseDOM() then releaseParentDOM(true). */ - void releaseThisandParentDOM() const { - if (getDOM()) { - releaseDOM(); - releaseParentDOM(true); - } - } + void releaseThisandParentDOM() const; /** * A convenience method that is equal to calling releaseChildrenDOM(true) then releaseDOM(). */ - void releaseThisAndChildrenDOM() const { - if (getDOM()) { - releaseChildrenDOM(true); - releaseDOM(); - } - } + void releaseThisAndChildrenDOM() const; /** * Marshalls the XMLObject, and its children, into a DOM element. @@ -261,7 +310,7 @@ namespace xmltooling { * a new document will be created and bound to the lifetime of the root object being * marshalled, unless an existing DOM can be reused without creating a new document. * - * @param document the DOM document the marshalled element will be placed in, or NULL + * @param document the DOM document the marshalled element will be placed in, or nullptr * @param sigs ordered array of signatures to create after marshalling is complete * @param credential optional credential to supply signing key and related info * @return the DOM element representing this XMLObject @@ -270,10 +319,10 @@ namespace xmltooling { * @throws SignatureException thrown if a problem occurs during signature creation */ virtual xercesc::DOMElement* marshall( - xercesc::DOMDocument* document=NULL + xercesc::DOMDocument* document=nullptr #ifndef XMLTOOLING_NO_XMLSEC - ,const std::vector* sigs=NULL - ,const Credential* credential=NULL + ,const std::vector* sigs=nullptr + ,const Credential* credential=nullptr #endif ) const=0; @@ -294,8 +343,8 @@ namespace xmltooling { virtual xercesc::DOMElement* marshall( xercesc::DOMElement* parentElement #ifndef XMLTOOLING_NO_XMLSEC - ,const std::vector* sigs=NULL - ,const Credential* credential=NULL + ,const std::vector* sigs=nullptr + ,const Credential* credential=nullptr #endif ) const=0; @@ -314,7 +363,7 @@ namespace xmltooling { virtual XMLObject* unmarshall(xercesc::DOMElement* element, bool bindDocument=false)=0; protected: - XMLObject() {} + XMLObject(); private: XMLObject& operator=(const XMLObject& src); };