Licensed to the University Corporation for Advanced Internet Development, Inc. More...
#include <typeinfo>
#include <cstdio>
#include <xmltooling/config_pub_win32.h>
#include <utility>
Classes | |
struct | xmltooling::cleanup< T > |
Functor for cleaning up heap objects in containers. More... | |
struct | xmltooling::cleanup_pair< A, B > |
Functor for cleaning up heap objects in key/value containers. More... | |
struct | xmltooling::cleanup_const_pair< A, B > |
Functor for cleaning up const heap objects in key/value containers. More... | |
Namespaces | |
namespace | xmltooling |
Public namespace of XML Tooling library. | |
Defines | |
#define | nullptr 0 |
#define | XMLTOOL_IMPORT |
#define | XMLTOOL_EXPORT |
#define | XMLTOOL_DLLLOCAL |
#define | XMLTOOL_DLLPUBLIC |
#define | XMLTOOL_API XMLTOOL_IMPORT |
#define | XMLTOOL_EXCEPTIONAPI(api) |
#define | XMLTOOLING_DOXYGEN(desc) |
#define | MAKE_NONCOPYABLE(type) |
Blocks copy c'tor and assignment operator for a class. | |
#define | DECL_XMLOBJECT_ABSTRACT(linkage, cname, base, desc) |
Begins the declaration of an XMLObject specialization for an abstract element/type. | |
#define | BEGIN_XMLOBJECT(linkage, cname, base, desc) |
Begins the declaration of an XMLObject specialization. | |
#define | BEGIN_XMLOBJECT2(linkage, cname, base, base2, desc) |
Begins the declaration of an XMLObject specialization with two base classes. | |
#define | BEGIN_XMLOBJECT3(linkage, cname, base, base2, base3, desc) |
Begins the declaration of an XMLObject specialization with three base classes. | |
#define | BEGIN_XMLOBJECT4(linkage, cname, base, base2, base3, base4, desc) |
Begins the declaration of an XMLObject specialization with four base classes. | |
#define | BEGIN_XMLOBJECT5(linkage, cname, base, base2, base3, base4, base5, desc) |
Begins the declaration of an XMLObject specialization with five base classes. | |
#define | END_XMLOBJECT } |
Ends the declaration of an XMLObject specialization. | |
#define | DECL_ELEMENT_QNAME |
Declares a static variable holding the XMLObject's element QName. | |
#define | DECL_TYPE_QNAME |
Declares a static variable holding the XMLObject's schema type QName. | |
#define | IMPL_ELEMENT_QNAME(cname, namespaceURI, namespacePrefix) xmltooling::QName cname::ELEMENT_QNAME(namespaceURI,cname::LOCAL_NAME,namespacePrefix) |
Implements a static variable holding an XMLObject's element QName. | |
#define | IMPL_TYPE_QNAME(cname, namespaceURI, namespacePrefix) xmltooling::QName cname::TYPE_QNAME(namespaceURI,cname::TYPE_NAME,namespacePrefix) |
Implements a static variable holding an XMLObject's schema type QName. | |
#define | DECL_INHERITED_XMLOBJECT_ATTRIB(proper, upcased, type) |
Declares abstract set method for a typed XML attribute. | |
#define | DECL_XMLOBJECT_ATTRIB(proper, upcased, type) |
Declares abstract get/set methods for a typed XML attribute. | |
#define | DECL_INHERITED_STRING_ATTRIB(proper, upcased) DECL_INHERITED_XMLOBJECT_ATTRIB(proper,upcased,XMLCh) |
Declares abstract set method for a string XML attribute. | |
#define | DECL_STRING_ATTRIB(proper, upcased) DECL_XMLOBJECT_ATTRIB(proper,upcased,XMLCh) |
Declares abstract get/set methods for a string XML attribute. | |
#define | DECL_INHERITED_DATETIME_ATTRIB(proper, upcased) |
Declares abstract set method for a DateTime XML attribute. | |
#define | DECL_DATETIME_ATTRIB(proper, upcased) |
Declares abstract get/set methods for a DateTime XML attribute. | |
#define | DECL_INHERITED_INTEGER_ATTRIB(proper, upcased) |
Declares abstract set method for an integer XML attribute. | |
#define | DECL_INTEGER_ATTRIB(proper, upcased) |
Declares abstract get/set methods for an integer XML attribute. | |
#define | DECL_BOOLEAN_ATTRIB(proper, upcased, def) |
Declares abstract get/set methods for a boolean XML attribute. | |
#define | IMPL_XMLOBJECT_ATTRIB(proper, type) |
Implements get/set methods and a private member for a typed XML attribute. | |
#define | IMPL_STRING_ATTRIB(proper) IMPL_XMLOBJECT_ATTRIB(proper,XMLCh) |
Implements get/set methods and a private member for a string XML attribute. | |
#define | IMPL_ID_ATTRIB(proper) |
Implements get/set methods and a private member for a string XML attribute, plus a getXMLID override. | |
#define | IMPL_ID_ATTRIB_EX(proper, ucase, namespaceURI) |
Implements get/set methods and a private member for a string XML attribute, plus a getXMLID override and attribute node clearance when DOM is dropped. | |
#define | IMPL_DATETIME_ATTRIB(proper, fallback) IMPL_DATETIME_ATTRIB_EX(proper,fallback,false) |
Implements get/set methods and a private member for a DateTime XML attribute. | |
#define | IMPL_DURATION_ATTRIB(proper, fallback) IMPL_DATETIME_ATTRIB_EX(proper,fallback,true) |
Implements get/set methods and a private member for a duration-valued DateTime XML attribute. | |
#define | IMPL_DATETIME_ATTRIB_EX(proper, fallback, duration) |
Implements get/set methods and a private member for a DateTime XML attribute. | |
#define | IMPL_INTEGER_ATTRIB(proper) |
Implements get/set methods and a private member for an integer XML attribute. | |
#define | IMPL_BOOLEAN_ATTRIB(proper) |
Implements get/set methods and a private member for a boolean XML attribute. | |
#define | IMPL_XMLOBJECT_FOREIGN_ATTRIB(proper, type) |
Implements get/set methods and a private member for a typed, qualified XML attribute. | |
#define | DECL_INHERITED_TYPED_FOREIGN_CHILD(proper, ns) |
Declares abstract set method for a typed XML child object in a foreign namespace. | |
#define | DECL_TYPED_FOREIGN_CHILD(proper, ns) |
Declares abstract get/set methods for a typed XML child object in a foreign namespace. | |
#define | DECL_INHERITED_TYPED_CHILD(proper) |
Declares abstract set method for a typed XML child object. | |
#define | DECL_TYPED_CHILD(proper) |
Declares abstract get/set methods for a typed XML child object. | |
#define | DECL_XMLOBJECT_CHILD(proper) |
Declares abstract get/set methods for a generic XML child object. | |
#define | IMPL_TYPED_CHILD(proper) |
Implements get/set methods and a private list iterator member for a typed XML child object. | |
#define | IMPL_TYPED_FOREIGN_CHILD(proper, ns) |
Implements get/set methods and a private list iterator member for a typed XML child object in a foreign namespace. | |
#define | IMPL_XMLOBJECT_CHILD(proper) |
Implements get/set methods and a private list iterator member for a generic XML child object. | |
#define | DECL_TYPED_CHILDREN(proper) |
Declares abstract get/set methods for a typed XML child collection. | |
#define | DECL_TYPED_FOREIGN_CHILDREN(proper, ns) |
Declares abstract get/set methods for a typed XML child collection in a foreign namespace. | |
#define | DECL_XMLOBJECT_CHILDREN(proper) |
Declares abstract get/set methods for a generic XML child collection. | |
#define | IMPL_TYPED_CHILDREN(proper, fence) |
Implements get method and a private vector member for a typed XML child collection. | |
#define | IMPL_TYPED_FOREIGN_CHILDREN(proper, ns, fence) |
Implements get method and a private vector member for a typed XML child collection in a foreign namespace. | |
#define | IMPL_XMLOBJECT_CHILDREN(proper, fence) |
Implements get method and a private vector member for a generic XML child collection. | |
#define | MARSHALL_STRING_ATTRIB(proper, ucase, namespaceURI) |
Implements marshalling for a string attribute. | |
#define | MARSHALL_DATETIME_ATTRIB(proper, ucase, namespaceURI) |
Implements marshalling for a DateTime attribute. | |
#define | MARSHALL_INTEGER_ATTRIB(proper, ucase, namespaceURI) |
Implements marshalling for an integer attribute. | |
#define | MARSHALL_BOOLEAN_ATTRIB(proper, ucase, namespaceURI) |
Implements marshalling for a boolean attribute. | |
#define | MARSHALL_QNAME_ATTRIB(proper, ucase, namespaceURI) |
Implements marshalling for a QName attribute. | |
#define | MARSHALL_ID_ATTRIB(proper, ucase, namespaceURI) |
Implements marshalling for an ID attribute. | |
#define | PROC_STRING_ATTRIB(proper, ucase, namespaceURI) |
Implements unmarshalling process branch for a string attribute. | |
#define | PROC_ID_ATTRIB(proper, ucase, namespaceURI) |
Implements unmarshalling process branch for an ID attribute. | |
#define | PROC_DATETIME_ATTRIB(proper, ucase, namespaceURI) PROC_STRING_ATTRIB(proper,ucase,namespaceURI) |
Implements unmarshalling process branch for a DateTime attribute. | |
#define | PROC_QNAME_ATTRIB(proper, ucase, namespaceURI) |
Implements unmarshalling process branch for a DateTime attribute. | |
#define | PROC_INTEGER_ATTRIB(proper, ucase, namespaceURI) PROC_STRING_ATTRIB(proper,ucase,namespaceURI) |
Implements unmarshalling process branch for an integer attribute. | |
#define | PROC_BOOLEAN_ATTRIB(proper, ucase, namespaceURI) PROC_STRING_ATTRIB(proper,ucase,namespaceURI) |
Implements unmarshalling process branch for a boolean attribute. | |
#define | PROC_TYPED_CHILDREN(proper, namespaceURI, force) |
Implements unmarshalling process branch for typed child collection element. | |
#define | PROC_TYPED_FOREIGN_CHILDREN(proper, ns, namespaceURI, force) |
Implements unmarshalling process branch for typed child collection element in a foreign namespace. | |
#define | PROC_TYPED_CHILD(proper, namespaceURI, force) |
Implements unmarshalling process branch for typed child singleton element. | |
#define | PROC_TYPED_FOREIGN_CHILD(proper, ns, namespaceURI, force) |
Implements unmarshalling process branch for typed child singleton element in a foreign namespace. | |
#define | PROC_XMLOBJECT_CHILD(proper, namespaceURI) |
Implements unmarshalling process branch for a generic child singleton element. | |
#define | DECL_SIMPLE_CONTENT(proper) |
Declares aliased get/set methods for named XML element simple content. | |
#define | DECL_INTEGER_CONTENT(proper) |
Declares aliased get/set methods for named integer XML element content. | |
#define | IMPL_XMLOBJECT_CLONE(cname) |
Implements cloning methods for an XMLObject specialization implementation class. | |
#define | IMPL_XMLOBJECT_CLONE2(cname, base) |
Implements cloning methods for an XMLObject specialization implementation class that must override a base class clone method. | |
#define | IMPL_XMLOBJECT_CLONE_EX(cname) |
Implements cloning methods for an XMLObject specialization implementation class that needs two stage duplication to avoid invoking virtual methods during construction. | |
#define | IMPL_XMLOBJECT_CLONE_EX2(cname, base) |
Implements cloning methods for an XMLObject specialization implementation class that needs two stage duplication to avoid invoking virtual methods during construction, and must override a base class clone method. | |
#define | IMPL_CLONE_ATTRIB(proper) set##proper(src.get##proper()) |
Implements cloning of a child attribute, for use in copy constructor or deferred clone methods. | |
#define | IMPL_CLONE_FOREIGN_ATTRIB(proper) |
Implements cloning of a child attribute in a foreign namespace, for use in copy constructor or deferred clone methods. | |
#define | IMPL_CLONE_INTEGER_ATTRIB(proper) set##proper(src.m_##proper) |
Implements cloning of an integer child attribute, for use in copy constructor or deferred clone methods. | |
#define | IMPL_CLONE_BOOLEAN_ATTRIB(proper) proper(src.m_##proper) |
Implements cloning of a boolean child attribute, for use in copy constructor or deferred clone methods. | |
#define | IMPL_CLONE_XMLOBJECT_CHILD(proper) |
Implements cloning of a child object, for use in copy constructor or deferred clone methods. | |
#define | IMPL_CLONE_TYPED_CHILD(proper) |
Implements cloning of a typed child object, for use in copy constructor or deferred clone methods. | |
#define | IMPL_CLONE_XMLOBJECT_CHILDREN(proper) |
Implements cloning of an untyped child collection, for use in copy constructor or deferred clone methods. | |
#define | IMPL_CLONE_TYPED_CHILDREN(proper) |
Implements cloning of a child collection, for use in copy constructor or deferred clone methods. | |
#define | IMPL_CLONE_TYPED_FOREIGN_CHILDREN(proper, ns) |
Implements cloning of a child collection in a foreign namespace, for use in copy constructor or deferred clone methods. | |
#define | IMPL_CLONE_CHILDBAG_BEGIN for (list<xmltooling::XMLObject*>::const_iterator _bagit = src.m_children.begin(); _bagit != src.m_children.end(); ++_bagit) { |
Opens an iteration loop over all of the children of an object. | |
#define | IMPL_CLONE_CHILDBAG_END } |
Closes an iteration loop over all of the children of an object. | |
#define | IMPL_CLONE_TYPED_CHILD_IN_BAG(proper) |
Implements cloning of a typed child in a bag iteration loop based on a cast check. | |
#define | IMPL_CLONE_TYPED_FOREIGN_CHILD_IN_BAG(proper, ns) |
Implements cloning of a typed child in a forign namespace in a bag iteration loop based on a cast check. | |
#define | IMPL_CLONE_XMLOBJECT_CHILD_IN_BAG(proper) |
Implements cloning of an XMLObject child in a bag iteration loop. | |
#define | DECL_XMLOBJECT_SIMPLE(linkage, cname, proper, desc) |
Declares an XMLObject specialization with a simple content model and type, handling it as string data. | |
#define | DECL_XMLOBJECTIMPL_SIMPLE(linkage, cname) |
Declares and defines an implementation class for an XMLObject with a simple content model and type, handling it as string data. | |
#define | BEGIN_XMLOBJECTBUILDER(linkage, cname, namespaceURI, namespacePrefix) |
Begins the declaration of an XMLObjectBuilder specialization. | |
#define | END_XMLOBJECTBUILDER } |
Ends the declaration of an XMLObjectBuilder specialization. | |
#define | DECL_XMLOBJECTBUILDER(linkage, cname, namespaceURI, namespacePrefix) |
Declares a generic XMLObjectBuilder specialization. | |
#define | IMPL_XMLOBJECTBUILDER(cname) |
Implements the standard XMLObjectBuilder specialization function. | |
#define | BEGIN_XMLOBJECTVALIDATOR(linkage, cname) |
Begins the declaration of a Schema Validator specialization. | |
#define | BEGIN_XMLOBJECTVALIDATOR_SUB(linkage, cname, base) |
Begins the declaration of a Schema Validator specialization subclass. | |
#define | END_XMLOBJECTVALIDATOR } } |
Ends the declaration of a Validator specialization. | |
#define | XMLOBJECTVALIDATOR_CHECKTYPE(cname) |
Validator code that checks the object type. | |
#define | XMLOBJECTVALIDATOR_REQUIRE(cname, proper) |
Validator code that checks for a required attribute, content, or singleton. | |
#define | XMLOBJECTVALIDATOR_REQUIRE_INTEGER(cname, proper) |
Validator code that checks for a required integer attribute. | |
#define | XMLOBJECTVALIDATOR_ONEOF(cname, proper1, proper2) |
Validator code that checks for one of a pair of required attributes, content, or singletons. | |
#define | XMLOBJECTVALIDATOR_ONLYONEOF(cname, proper1, proper2) |
Validator code that checks for one of a pair of required attributes, content, or singletons, but disallows both. | |
#define | XMLOBJECTVALIDATOR_ONEOF3(cname, proper1, proper2, proper3) |
Validator code that checks for one of a set of three required attributes, content, or singletons. | |
#define | XMLOBJECTVALIDATOR_ONLYONEOF3(cname, proper1, proper2, proper3) |
Validator code that checks for one of a set of three required attributes, content, or singletons but disallows more than one. | |
#define | XMLOBJECTVALIDATOR_NONEORBOTH(cname, proper1, proper2) |
Validator code that checks a co-constraint (if one present, the other must be) between a pair of attributes, content, or singletons. | |
#define | XMLOBJECTVALIDATOR_NONEMPTY(cname, proper) |
Validator code that checks for a non-empty collection. | |
#define | XMLOBJECTVALIDATOR_SIMPLE(linkage, cname) |
Declares/defines a Validator specialization that checks object type and a non-empty simple content model. | |
Functions | |
template<class InputSequence , class OutputSequence > | |
void | xmltooling::clone (const InputSequence &in, OutputSequence &out) |
Template function for cloning a sequence of XMLObjects. |
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
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. Base header file definitions. Must be included prior to including any other header.
#define BEGIN_XMLOBJECT | ( | linkage, | |||
cname, | |||||
base, | |||||
desc | ) |
XMLTOOLING_DOXYGEN(desc) \ class linkage cname : public virtual base { \ protected: \ cname() {} \ public: \ virtual ~cname() {} \ XMLTOOLING_DOXYGEN(Type-specific clone method.) \ virtual cname* clone##cname() const=0; \ XMLTOOLING_DOXYGEN(Element local name) \ static const XMLCh LOCAL_NAME[]
Begins the declaration of an XMLObject specialization.
Basic boilerplate includes a protected constructor, empty virtual destructor, and Unicode constants for the default associated element's name and prefix.
linkage | linkage specifier for the class | |
cname | the name of the class to declare | |
base | the base class to derive from using public virtual inheritance | |
desc | documentation comment for class |
#define BEGIN_XMLOBJECT2 | ( | linkage, | |||
cname, | |||||
base, | |||||
base2, | |||||
desc | ) |
XMLTOOLING_DOXYGEN(desc) \ class linkage cname : public virtual base, public virtual base2 { \ protected: \ cname() {} \ public: \ virtual ~cname() {} \ XMLTOOLING_DOXYGEN(Type-specific clone method.) \ virtual cname* clone##cname() const=0; \ XMLTOOLING_DOXYGEN(Element local name) \ static const XMLCh LOCAL_NAME[]
Begins the declaration of an XMLObject specialization with two base classes.
Basic boilerplate includes a protected constructor, empty virtual destructor, and Unicode constants for the default associated element's name and prefix.
linkage | linkage specifier for the class | |
cname | the name of the class to declare | |
base | the first base class to derive from using public virtual inheritance | |
base2 | the second base class to derive from using public virtual inheritance | |
desc | documentation comment for class |
#define BEGIN_XMLOBJECT3 | ( | linkage, | |||
cname, | |||||
base, | |||||
base2, | |||||
base3, | |||||
desc | ) |
XMLTOOLING_DOXYGEN(desc) \ class linkage cname : public virtual base, public virtual base2, public virtual base3 { \ protected: \ cname() {} \ public: \ virtual ~cname() {} \ XMLTOOLING_DOXYGEN(Type-specific clone method.) \ virtual cname* clone##cname() const=0; \ XMLTOOLING_DOXYGEN(Element local name) \ static const XMLCh LOCAL_NAME[]
Begins the declaration of an XMLObject specialization with three base classes.
Basic boilerplate includes a protected constructor, empty virtual destructor, and Unicode constants for the default associated element's name and prefix.
linkage | linkage specifier for the class | |
cname | the name of the class to declare | |
base | the first base class to derive from using public virtual inheritance | |
base2 | the second base class to derive from using public virtual inheritance | |
base3 | the third base class to derive from using public virtual inheritance | |
desc | documentation comment for class |
#define BEGIN_XMLOBJECT4 | ( | linkage, | |||
cname, | |||||
base, | |||||
base2, | |||||
base3, | |||||
base4, | |||||
desc | ) |
XMLTOOLING_DOXYGEN(desc) \ class linkage cname : public virtual base, public virtual base2, public virtual base3, public virtual base4 { \ protected: \ cname() {} \ public: \ virtual ~cname() {} \ XMLTOOLING_DOXYGEN(Type-specific clone method.) \ virtual cname* clone##cname() const=0; \ XMLTOOLING_DOXYGEN(Element local name) \ static const XMLCh LOCAL_NAME[]
Begins the declaration of an XMLObject specialization with four base classes.
Basic boilerplate includes a protected constructor, empty virtual destructor, and Unicode constants for the default associated element's name and prefix.
linkage | linkage specifier for the class | |
cname | the name of the class to declare | |
base | the first base class to derive from using public virtual inheritance | |
base2 | the second base class to derive from using public virtual inheritance | |
base3 | the third base class to derive from using public virtual inheritance | |
base4 | the fourth base class to derive from using public virtual inheritance | |
desc | documentation comment for class |
#define BEGIN_XMLOBJECT5 | ( | linkage, | |||
cname, | |||||
base, | |||||
base2, | |||||
base3, | |||||
base4, | |||||
base5, | |||||
desc | ) |
XMLTOOLING_DOXYGEN(desc) \ class linkage cname : public virtual base, public virtual base2, public virtual base3, public virtual base4, public virtual base5 { \ protected: \ cname() {} \ public: \ virtual ~cname() {} \ XMLTOOLING_DOXYGEN(Type-specific clone method.) \ virtual cname* clone##cname() const=0; \ XMLTOOLING_DOXYGEN(Element local name) \ static const XMLCh LOCAL_NAME[]
Begins the declaration of an XMLObject specialization with five base classes.
Basic boilerplate includes a protected constructor, empty virtual destructor, and Unicode constants for the default associated element's name and prefix.
linkage | linkage specifier for the class | |
cname | the name of the class to declare | |
base | the first base class to derive from using public virtual inheritance | |
base2 | the second base class to derive from using public virtual inheritance | |
base3 | the third base class to derive from using public virtual inheritance | |
base4 | the fourth base class to derive from using public virtual inheritance | |
base5 | the fifth base class to derive from using public virtual inheritance | |
desc | documentation comment for class |
#define BEGIN_XMLOBJECTBUILDER | ( | linkage, | |||
cname, | |||||
namespaceURI, | |||||
namespacePrefix | ) |
XMLTOOLING_DOXYGEN(Builder for cname objects.) \ class linkage cname##Builder : public xmltooling::ConcreteXMLObjectBuilder { \ public: \ virtual ~cname##Builder() {} \ XMLTOOLING_DOXYGEN(Default builder.) \ virtual xmltooling::XMLObject* buildObject() const { \ return buildObject(namespaceURI,cname::LOCAL_NAME,namespacePrefix); \ } \ XMLTOOLING_DOXYGEN(Builder that allows element/type override.) \ virtual xmltooling::XMLObject* buildObject( \ const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix=nullptr, const xmltooling::QName* schemaType=nullptr \ ) const
Begins the declaration of an XMLObjectBuilder specialization.
Basic boilerplate includes an empty virtual destructor, and a default builder that defaults the element name.
linkage | linkage specifier for the class | |
cname | the name of the XMLObject specialization | |
namespaceURI | the XML namespace of the default associated element | |
namespacePrefix | the XML namespace prefix of the default associated element |
#define BEGIN_XMLOBJECTVALIDATOR | ( | linkage, | |||
cname | ) |
class linkage cname##SchemaValidator : public xmltooling::Validator \ { \ public: \ virtual ~cname##SchemaValidator() {} \ virtual void validate(const xmltooling::XMLObject* xmlObject) const { \ const cname* ptr=dynamic_cast<const cname*>(xmlObject); \ if (!ptr) \ throw xmltooling::ValidationException(#cname"SchemaValidator: unsupported object type ($1).",xmltooling::params(1,typeid(xmlObject).name())); \ if (ptr->nil() && (ptr->hasChildren() || ptr->getTextContent())) \ throw xmltooling::ValidationException("Object has nil property but with children or content.")
Begins the declaration of a Schema Validator specialization.
linkage | linkage specifier for the class | |
cname | the base name of the Validator specialization |
#define BEGIN_XMLOBJECTVALIDATOR_SUB | ( | linkage, | |||
cname, | |||||
base | ) |
class linkage cname##SchemaValidator : public base##SchemaValidator \ { \ public: \ virtual ~cname##SchemaValidator() {} \ virtual void validate(const xmltooling::XMLObject* xmlObject) const { \ const cname* ptr=dynamic_cast<const cname*>(xmlObject); \ if (!ptr) \ throw xmltooling::ValidationException(#cname"SchemaValidator: unsupported object type ($1).",xmltooling::params(1,typeid(xmlObject).name()));
Begins the declaration of a Schema Validator specialization subclass.
linkage | linkage specifier for the class | |
cname | the base name of the Validator specialization | |
base | base class for the validator |
#define DECL_BOOLEAN_ATTRIB | ( | proper, | |||
upcased, | |||||
def | ) |
Declares abstract get/set methods for a boolean XML attribute.
proper | the proper name of the attribute | |
upcased | the upcased name of the attribute | |
def | the default/presumed value, if no explicit value has been set |
#define DECL_DATETIME_ATTRIB | ( | proper, | |||
upcased | ) |
DECL_XMLOBJECT_ATTRIB(proper,upcased,xercesc::XMLDateTime); \ XMLTOOLING_DOXYGEN(Returns the proper attribute in epoch form.) \ virtual time_t get##proper##Epoch() const=0; \ XMLTOOLING_DOXYGEN(Sets the proper attribute.) \ virtual void set##proper(time_t proper)=0; \ XMLTOOLING_DOXYGEN(Sets the proper attribute.) \ virtual void set##proper(const XMLCh* proper)=0
Declares abstract get/set methods for a DateTime XML attribute.
proper | the proper name of the attribute | |
upcased | the upcased name of the attribute |
#define DECL_ELEMENT_QNAME |
public: \ XMLTOOLING_DOXYGEN(Element QName) \ static xmltooling::QName ELEMENT_QNAME
Declares a static variable holding the XMLObject's element QName.
#define DECL_INHERITED_DATETIME_ATTRIB | ( | proper, | |||
upcased | ) |
DECL_INHERITED_XMLOBJECT_ATTRIB(proper,upcased,xercesc::XMLDateTime); \ XMLTOOLING_DOXYGEN(Sets the proper attribute.) \ virtual void set##proper(time_t proper)=0; \ XMLTOOLING_DOXYGEN(Sets the proper attribute.) \ virtual void set##proper(const XMLCh* proper)=0
Declares abstract set method for a DateTime XML attribute.
The get method is omitted.
proper | the proper name of the attribute | |
upcased | the upcased name of the attribute |
#define DECL_INHERITED_INTEGER_ATTRIB | ( | proper, | |||
upcased | ) |
public: \ XMLTOOLING_DOXYGEN(proper attribute name) \ static const XMLCh upcased##_ATTRIB_NAME[]; \ XMLTOOLING_DOXYGEN(Sets the proper attribute using a string value.) \ virtual void set##proper(const XMLCh* proper)=0; \ XMLTOOLING_DOXYGEN(Sets the proper attribute.) \ virtual void set##proper(int proper)=0
Declares abstract set method for an integer XML attribute.
The get method is omitted.
proper | the proper name of the attribute | |
upcased | the upcased name of the attribute |
#define DECL_INHERITED_STRING_ATTRIB | ( | proper, | |||
upcased | ) | DECL_INHERITED_XMLOBJECT_ATTRIB(proper,upcased,XMLCh) |
Declares abstract set method for a string XML attribute.
The get method is omitted.
proper | the proper name of the attribute | |
upcased | the upcased name of the attribute |
#define DECL_INHERITED_TYPED_CHILD | ( | proper | ) |
public: \ XMLTOOLING_DOXYGEN(Sets the proper child.) \ virtual void set##proper(proper* child)=0
Declares abstract set method for a typed XML child object.
The get method is omitted.
proper | the proper name of the child type |
#define DECL_INHERITED_TYPED_FOREIGN_CHILD | ( | proper, | |||
ns | ) |
public: \ XMLTOOLING_DOXYGEN(Sets the proper child.) \ virtual void set##proper(ns::proper* child)=0
Declares abstract set method for a typed XML child object in a foreign namespace.
The get method is omitted.
proper | the proper name of the child type | |
ns | the C++ namespace for the type |
#define DECL_INHERITED_XMLOBJECT_ATTRIB | ( | proper, | |||
upcased, | |||||
type | ) |
public: \ XMLTOOLING_DOXYGEN(proper attribute name) \ static const XMLCh upcased##_ATTRIB_NAME[]; \ XMLTOOLING_DOXYGEN(Sets the proper attribute.) \ virtual void set##proper(const type* proper)=0
Declares abstract set method for a typed XML attribute.
The get method is omitted.
proper | the proper name of the attribute | |
upcased | the upcased name of the attribute | |
type | the attribute's data type |
#define DECL_INTEGER_ATTRIB | ( | proper, | |||
upcased | ) |
public: \ XMLTOOLING_DOXYGEN(proper attribute name) \ static const XMLCh upcased##_ATTRIB_NAME[]; \ XMLTOOLING_DOXYGEN(Returns the proper attribute after a NULL indicator.) \ virtual std::pair<bool,int> get##proper() const=0; \ XMLTOOLING_DOXYGEN(Sets the proper attribute using a string value.) \ virtual void set##proper(const XMLCh* proper)=0; \ XMLTOOLING_DOXYGEN(Sets the proper attribute.) \ virtual void set##proper(int proper)=0
Declares abstract get/set methods for an integer XML attribute.
proper | the proper name of the attribute | |
upcased | the upcased name of the attribute |
#define DECL_INTEGER_CONTENT | ( | proper | ) |
XMLTOOLING_DOXYGEN(Returns proper in integer form after a NULL indicator.) \ std::pair<bool,int> get##proper() const { \ if (getTextContent()) { \ try { \ return std::make_pair(true, xercesc::XMLString::parseInt(getTextContent())); \ } \ catch (...) { \ return std::make_pair(true, 0); \ } \ } else { \ return std::make_pair(false, 0); \ } \ } \ XMLTOOLING_DOXYGEN(Sets proper.) \ void set##proper(int proper) { \ try { \ std::string buf(boost::lexical_cast<std::string>(proper)); \ xmltooling::auto_ptr_XMLCh widen(buf.c_str()); \ setTextContent(widen.get()); \ } \ catch (boost::bad_lexical_cast&) { \ } \ } \ XMLTOOLING_DOXYGEN(Sets or clears proper.) \ void set##proper(const XMLCh* proper) { \ setTextContent(proper); \ }
Declares aliased get/set methods for named integer XML element content.
proper | the proper name to label the element's content |
#define DECL_SIMPLE_CONTENT | ( | proper | ) |
XMLTOOLING_DOXYGEN(Returns proper.) \ const XMLCh* get##proper() const { \ return getTextContent(); \ } \ XMLTOOLING_DOXYGEN(Sets or clears proper.) \ void set##proper(const XMLCh* proper) { \ setTextContent(proper); \ }
Declares aliased get/set methods for named XML element simple content.
proper | the proper name to label the element's content |
#define DECL_STRING_ATTRIB | ( | proper, | |||
upcased | ) | DECL_XMLOBJECT_ATTRIB(proper,upcased,XMLCh) |
Declares abstract get/set methods for a string XML attribute.
proper | the proper name of the attribute | |
upcased | the upcased name of the attribute |
#define DECL_TYPE_QNAME |
public: \ XMLTOOLING_DOXYGEN(Type QName) \ static xmltooling::QName TYPE_QNAME
Declares a static variable holding the XMLObject's schema type QName.
#define DECL_TYPED_CHILD | ( | proper | ) |
public: \ XMLTOOLING_DOXYGEN(Returns the proper child.) \ virtual proper* get##proper() const=0; \ XMLTOOLING_DOXYGEN(Sets the proper child.) \ virtual void set##proper(proper* child)=0
Declares abstract get/set methods for a typed XML child object.
proper | the proper name of the child type |
#define DECL_TYPED_CHILDREN | ( | proper | ) |
public: \ XMLTOOLING_DOXYGEN(Returns modifiable proper collection.) \ virtual VectorOf(proper) get##proper##s()=0; \ XMLTOOLING_DOXYGEN(Returns reference to immutable proper collection.) \ virtual const std::vector<proper*>& get##proper##s() const=0
Declares abstract get/set methods for a typed XML child collection.
proper | the proper name of the child type |
#define DECL_TYPED_FOREIGN_CHILD | ( | proper, | |||
ns | ) |
public: \ XMLTOOLING_DOXYGEN(Returns the proper child.) \ virtual ns::proper* get##proper() const=0; \ XMLTOOLING_DOXYGEN(Sets the proper child.) \ virtual void set##proper(ns::proper* child)=0
Declares abstract get/set methods for a typed XML child object in a foreign namespace.
proper | the proper name of the child type | |
ns | the C++ namespace for the type |
#define DECL_TYPED_FOREIGN_CHILDREN | ( | proper, | |||
ns | ) |
public: \ XMLTOOLING_DOXYGEN(Returns modifiable proper collection.) \ virtual VectorOf(ns::proper) get##proper##s()=0; \ XMLTOOLING_DOXYGEN(Returns reference to immutable proper collection.) \ virtual const std::vector<ns::proper*>& get##proper##s() const=0
Declares abstract get/set methods for a typed XML child collection in a foreign namespace.
proper | the proper name of the child type | |
ns | the C++ namespace for the type |
#define DECL_XMLOBJECT_ABSTRACT | ( | linkage, | |||
cname, | |||||
base, | |||||
desc | ) |
XMLTOOLING_DOXYGEN(desc) \ class linkage cname : public virtual base { \ protected: \ cname() {} \ public: \ virtual ~cname() {} \ XMLTOOLING_DOXYGEN(Element local name) \ static const XMLCh LOCAL_NAME[]; \ }
Begins the declaration of an XMLObject specialization for an abstract element/type.
Basic boilerplate includes a protected constructor, empty virtual destructor, and Unicode constants for the default associated element's name and prefix.
linkage | linkage specifier for the class | |
cname | the name of the class to declare | |
base | the base class to derive from using public virtual inheritance | |
desc | documentation comment for class |
#define DECL_XMLOBJECT_ATTRIB | ( | proper, | |||
upcased, | |||||
type | ) |
public: \ XMLTOOLING_DOXYGEN(proper attribute name) \ static const XMLCh upcased##_ATTRIB_NAME[]; \ XMLTOOLING_DOXYGEN(Returns the proper attribute.) \ virtual const type* get##proper() const=0; \ XMLTOOLING_DOXYGEN(Sets the proper attribute.) \ virtual void set##proper(const type* proper)=0
Declares abstract get/set methods for a typed XML attribute.
proper | the proper name of the attribute | |
upcased | the upcased name of the attribute | |
type | the attribute's data type |
#define DECL_XMLOBJECT_CHILD | ( | proper | ) |
public: \ XMLTOOLING_DOXYGEN(Returns the proper child.) \ virtual xmltooling::XMLObject* get##proper() const=0; \ XMLTOOLING_DOXYGEN(Sets the proper child.) \ virtual void set##proper(xmltooling::XMLObject* child)=0
Declares abstract get/set methods for a generic XML child object.
proper | the proper name of the child |
#define DECL_XMLOBJECT_CHILDREN | ( | proper | ) |
public: \ XMLTOOLING_DOXYGEN(Returns modifiable proper collection.) \ virtual VectorOf(xmltooling::XMLObject) get##proper##s()=0; \ XMLTOOLING_DOXYGEN(Returns reference to immutable proper collection.) \ virtual const std::vector<xmltooling::XMLObject*>& get##proper##s() const=0
Declares abstract get/set methods for a generic XML child collection.
proper | the proper name of the child |
#define DECL_XMLOBJECT_SIMPLE | ( | linkage, | |||
cname, | |||||
proper, | |||||
desc | ) |
BEGIN_XMLOBJECT(linkage,cname,xmltooling::XMLObject,desc); \ DECL_SIMPLE_CONTENT(proper); \ END_XMLOBJECT
Declares an XMLObject specialization with a simple content model and type, handling it as string data.
linkage | linkage specifier for the class | |
cname | the name of the XMLObject specialization | |
proper | the proper name to label the element's content | |
desc | documentation for class |
#define DECL_XMLOBJECTBUILDER | ( | linkage, | |||
cname, | |||||
namespaceURI, | |||||
namespacePrefix | ) |
BEGIN_XMLOBJECTBUILDER(linkage,cname,namespaceURI,namespacePrefix); \ XMLTOOLING_DOXYGEN(Singleton builder.) \ static cname* build##cname() { \ const cname##Builder* b = dynamic_cast<const cname##Builder*>( \ XMLObjectBuilder::getBuilder(xmltooling::QName(namespaceURI,cname::LOCAL_NAME)) \ ); \ if (b) \ return dynamic_cast<cname*>(b->buildObject()); \ throw xmltooling::XMLObjectException("Unable to obtain typed builder for "#cname"."); \ } \ END_XMLOBJECTBUILDER
Declares a generic XMLObjectBuilder specialization.
linkage | linkage specifier for the class | |
cname | the name of the XMLObject specialization | |
namespaceURI | the XML namespace of the default associated element | |
namespacePrefix | the XML namespace prefix of the default associated element |
#define DECL_XMLOBJECTIMPL_SIMPLE | ( | linkage, | |||
cname | ) |
class linkage cname##Impl \ : public virtual cname, \ public xmltooling::AbstractSimpleElement, \ public xmltooling::AbstractDOMCachingXMLObject, \ public xmltooling::AbstractXMLObjectMarshaller, \ public xmltooling::AbstractXMLObjectUnmarshaller \ { \ public: \ virtual ~cname##Impl() {} \ cname##Impl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) \ : xmltooling::AbstractXMLObject(nsURI, localName, prefix, schemaType) { \ } \ cname##Impl(const cname##Impl& src) \ : xmltooling::AbstractXMLObject(src), \ xmltooling::AbstractSimpleElement(src), \ xmltooling::AbstractDOMCachingXMLObject(src) {} \ IMPL_XMLOBJECT_CLONE(cname) \ }
Declares and defines an implementation class for an XMLObject with a simple content model and type, handling it as string data.
linkage | linkage specifier for the class | |
cname | the name of the XMLObject specialization |
#define IMPL_BOOLEAN_ATTRIB | ( | proper | ) |
protected: \ xmlconstants::xmltooling_bool_t m_##proper; \ public: \ xmlconstants::xmltooling_bool_t get##proper() const { \ return m_##proper; \ } \ void proper(xmlconstants::xmltooling_bool_t value) { \ if (m_##proper != value) { \ releaseThisandParentDOM(); \ m_##proper = value; \ } \ }
Implements get/set methods and a private member for a boolean XML attribute.
proper | the proper name of the attribute |
#define IMPL_CLONE_ATTRIB | ( | proper | ) | set##proper(src.get##proper()) |
Implements cloning of a child attribute, for use in copy constructor or deferred clone methods.
proper the proper name of the attribute to clone
#define IMPL_CLONE_BOOLEAN_ATTRIB | ( | proper | ) | proper(src.m_##proper) |
Implements cloning of a boolean child attribute, for use in copy constructor or deferred clone methods.
proper the proper name of the attribute to clone
#define IMPL_CLONE_FOREIGN_ATTRIB | ( | proper | ) |
set##proper(src.get##proper()); \ if (src.m_##proper##Prefix) \ m_##proper##Prefix = xercesc::XMLString::replicate(src.m_##proper##Prefix)
Implements cloning of a child attribute in a foreign namespace, for use in copy constructor or deferred clone methods.
proper the proper name of the attribute to clone
#define IMPL_CLONE_INTEGER_ATTRIB | ( | proper | ) | set##proper(src.m_##proper) |
Implements cloning of an integer child attribute, for use in copy constructor or deferred clone methods.
proper the proper name of the attribute to clone
#define IMPL_CLONE_TYPED_CHILD | ( | proper | ) |
if (src.get##proper()) \ set##proper(src.get##proper()->clone##proper())
Implements cloning of a typed child object, for use in copy constructor or deferred clone methods.
proper the proper name of the child type to clone
#define IMPL_CLONE_TYPED_CHILD_IN_BAG | ( | proper | ) |
proper* _##proper##cast = dynamic_cast<proper*>(*_bagit); \ if (_##proper##cast) { \ get##proper##s().push_back(_##proper##cast->clone##proper()); \ continue; \ }
Implements cloning of a typed child in a bag iteration loop based on a cast check.
proper | the proper name of the child type to clone |
#define IMPL_CLONE_TYPED_CHILDREN | ( | proper | ) |
static void (VectorOf(proper)::* proper##_push_back)(proper* const&) = &VectorOf(proper)::push_back; \ VectorOf(proper) c##proper = get##proper##s(); \ std::for_each( \ src.m_##proper##s.begin(), src.m_##proper##s.end(), \ boost::lambda::if_(boost::lambda::_1 != ((proper*)nullptr)) \ [boost::lambda::bind(proper##_push_back, boost::ref(c##proper), boost::lambda::bind(&proper::clone##proper, boost::lambda::_1))] \ )
Implements cloning of a child collection, for use in copy constructor or deferred clone methods.
proper the proper name of the child type to clone
#define IMPL_CLONE_TYPED_FOREIGN_CHILD_IN_BAG | ( | proper, | |||
ns | ) |
ns::proper* _##proper##cast = dynamic_cast<ns::proper*>(*_bagit); \ if (_##proper##cast) { \ get##proper##s().push_back(_##proper##cast->clone##proper()); \ continue; \ }
Implements cloning of a typed child in a forign namespace in a bag iteration loop based on a cast check.
proper | the proper name of the child type to clone | |
ns | the namespace of the child type |
#define IMPL_CLONE_TYPED_FOREIGN_CHILDREN | ( | proper, | |||
ns | ) |
static void (VectorOf(ns::proper)::* proper##_push_back)(ns::proper* const&) = &VectorOf(ns::proper)::push_back; \ VectorOf(ns::proper) c##proper = get##proper##s(); \ std::for_each( \ src.m_##proper##s.begin(), src.m_##proper##s.end(), \ boost::lambda::if_(boost::lambda::_1 != ((ns::proper*)nullptr)) \ [boost::lambda::bind(proper##_push_back, boost::ref(c##proper), boost::lambda::bind(&ns::proper::clone##proper, boost::lambda::_1))] \ )
Implements cloning of a child collection in a foreign namespace, for use in copy constructor or deferred clone methods.
proper the proper name of the child type to clone ns the namespace of the child type
#define IMPL_CLONE_XMLOBJECT_CHILD | ( | proper | ) |
if (src.get##proper()) \ set##proper(src.get##proper()->clone())
Implements cloning of a child object, for use in copy constructor or deferred clone methods.
proper the proper name of the child object to clone
#define IMPL_CLONE_XMLOBJECT_CHILD_IN_BAG | ( | proper | ) |
if (*_bagit) { \ get##proper##s().push_back((*_bagit)->clone()); \ }
Implements cloning of an XMLObject child in a bag iteration loop.
proper | the proper name of the child to clone |
#define IMPL_CLONE_XMLOBJECT_CHILDREN | ( | proper | ) |
static void (VectorOf(XMLObject)::* XMLObject_push_back)(XMLObject* const&) = &VectorOf(XMLObject)::push_back; \ VectorOf(XMLObject) c##proper = get##proper##s(); \ std::for_each( \ src.m_##proper##s.begin(), src.m_##proper##s.end(), \ boost::lambda::if_(boost::lambda::_1 != ((XMLObject*)nullptr)) \ [boost::lambda::bind(XMLObject_push_back, boost::ref(c##proper), boost::lambda::bind(&XMLObject::clone, boost::lambda::_1))] \ )
Implements cloning of an untyped child collection, for use in copy constructor or deferred clone methods.
proper the proper name of the child type to clone
#define IMPL_DATETIME_ATTRIB | ( | proper, | |||
fallback | ) | IMPL_DATETIME_ATTRIB_EX(proper,fallback,false) |
Implements get/set methods and a private member for a DateTime XML attribute.
proper | the proper name of the attribute | |
fallback | epoch to return when attribute is NULL |
#define IMPL_DATETIME_ATTRIB_EX | ( | proper, | |||
fallback, | |||||
duration | ) |
protected: \ XMLDateTime* m_##proper; \ time_t m_##proper##Epoch; \ public: \ const XMLDateTime* get##proper() const { \ return m_##proper; \ } \ time_t get##proper##Epoch() const { \ return m_##proper ? m_##proper##Epoch : fallback; \ } \ void set##proper(const XMLDateTime* proper) { \ m_##proper = prepareForAssignment(m_##proper,proper); \ if (m_##proper) \ m_##proper##Epoch=m_##proper->getEpoch(duration); \ } \ void set##proper(time_t proper) { \ m_##proper = prepareForAssignment(m_##proper,proper,duration); \ m_##proper##Epoch = proper; \ } \ void set##proper(const XMLCh* proper) { \ m_##proper = prepareForAssignment(m_##proper,proper,duration); \ if (m_##proper) \ m_##proper##Epoch=m_##proper->getEpoch(duration); \ }
Implements get/set methods and a private member for a DateTime XML attribute.
proper | the proper name of the attribute | |
fallback | epoch to return when attribute is NULL | |
duration | true iff the attribute should be handled as a duration |
#define IMPL_DURATION_ATTRIB | ( | proper, | |||
fallback | ) | IMPL_DATETIME_ATTRIB_EX(proper,fallback,true) |
Implements get/set methods and a private member for a duration-valued DateTime XML attribute.
proper | the proper name of the attribute | |
fallback | epoch to return when attribute is NULL |
#define IMPL_ELEMENT_QNAME | ( | cname, | |||
namespaceURI, | |||||
namespacePrefix | ) | xmltooling::QName cname::ELEMENT_QNAME(namespaceURI,cname::LOCAL_NAME,namespacePrefix) |
Implements a static variable holding an XMLObject's element QName.
cname | the name of the XMLObject specialization | |
namespaceURI | the XML namespace of the default associated element | |
namespacePrefix | the XML namespace prefix of the default associated element |
#define IMPL_ID_ATTRIB | ( | proper | ) |
IMPL_XMLOBJECT_ATTRIB(proper,XMLCh) \ const XMLCh* getXMLID() const { \ return m_##proper; \ }
Implements get/set methods and a private member for a string XML attribute, plus a getXMLID override.
proper | the proper name of the attribute |
#define IMPL_ID_ATTRIB_EX | ( | proper, | |||
ucase, | |||||
namespaceURI | ) |
IMPL_XMLOBJECT_ATTRIB(proper,XMLCh) \ const XMLCh* getXMLID() const { \ return m_##proper; \ } \ void releaseDOM() const { \ if (getDOM()) \ getDOM()->removeAttributeNS(namespaceURI, ucase##_ATTRIB_NAME); \ AbstractDOMCachingXMLObject::releaseDOM(); \ }
Implements get/set methods and a private member for a string XML attribute, plus a getXMLID override and attribute node clearance when DOM is dropped.
proper | the proper name of the attribute | |
ucase | the upcased name of the attribute | |
namespaceURI | the XML namespace of the attribute |
#define IMPL_INTEGER_ATTRIB | ( | proper | ) |
protected: \ XMLCh* m_##proper; \ public: \ pair<bool,int> get##proper() const { \ if (m_##proper) { \ try { \ return std::make_pair(true, xercesc::XMLString::parseInt(m_##proper)); \ } \ catch (...) { \ return std::make_pair(true, 0); \ } \ } else { \ return std::make_pair(false, 0); \ } \ } \ void set##proper(const XMLCh* proper) { \ m_##proper = prepareForAssignment(m_##proper,proper); \ } \ void set##proper(int proper) { \ try { \ std::string buf(boost::lexical_cast<std::string>(proper)); \ xmltooling::auto_ptr_XMLCh widen(buf.c_str()); \ set##proper(widen.get()); \ } \ catch (boost::bad_lexical_cast&) { \ } \ }
Implements get/set methods and a private member for an integer XML attribute.
proper | the proper name of the attribute |
#define IMPL_STRING_ATTRIB | ( | proper | ) | IMPL_XMLOBJECT_ATTRIB(proper,XMLCh) |
Implements get/set methods and a private member for a string XML attribute.
proper | the proper name of the attribute |
#define IMPL_TYPE_QNAME | ( | cname, | |||
namespaceURI, | |||||
namespacePrefix | ) | xmltooling::QName cname::TYPE_QNAME(namespaceURI,cname::TYPE_NAME,namespacePrefix) |
Implements a static variable holding an XMLObject's schema type QName.
cname | the name of the XMLObject specialization | |
namespaceURI | the XML namespace of the default associated element | |
namespacePrefix | the XML namespace prefix of the default associated element |
#define IMPL_TYPED_CHILD | ( | proper | ) |
protected: \ proper* m_##proper; \ std::list<xmltooling::XMLObject*>::iterator m_pos_##proper; \ public: \ proper* get##proper() const { \ return m_##proper; \ } \ void set##proper(proper* child) { \ prepareForAssignment(m_##proper,child); \ *m_pos_##proper = m_##proper = child; \ }
Implements get/set methods and a private list iterator member for a typed XML child object.
proper | the proper name of the child type |
#define IMPL_TYPED_CHILDREN | ( | proper, | |||
fence | ) |
protected: \ std::vector<proper*> m_##proper##s; \ public: \ VectorOf(proper) get##proper##s() { \ return VectorOf(proper)(this, m_##proper##s, &m_children, fence); \ } \ const std::vector<proper*>& get##proper##s() const { \ return m_##proper##s; \ }
Implements get method and a private vector member for a typed XML child collection.
proper | the proper name of the child type | |
fence | insertion fence for new objects of the child collection in backing list |
#define IMPL_TYPED_FOREIGN_CHILD | ( | proper, | |||
ns | ) |
protected: \ ns::proper* m_##proper; \ std::list<xmltooling::XMLObject*>::iterator m_pos_##proper; \ public: \ ns::proper* get##proper() const { \ return m_##proper; \ } \ void set##proper(ns::proper* child) { \ prepareForAssignment(m_##proper,child); \ *m_pos_##proper = m_##proper = child; \ }
Implements get/set methods and a private list iterator member for a typed XML child object in a foreign namespace.
proper | the proper name of the child type | |
ns | the C++ namespace for the type |
#define IMPL_TYPED_FOREIGN_CHILDREN | ( | proper, | |||
ns, | |||||
fence | ) |
protected: \ std::vector<ns::proper*> m_##proper##s; \ public: \ VectorOf(ns::proper) get##proper##s() { \ return VectorOf(ns::proper)(this, m_##proper##s, &m_children, fence); \ } \ const std::vector<ns::proper*>& get##proper##s() const { \ return m_##proper##s; \ }
Implements get method and a private vector member for a typed XML child collection in a foreign namespace.
proper | the proper name of the child type | |
ns | the C++ namespace for the type | |
fence | insertion fence for new objects of the child collection in backing list |
#define IMPL_XMLOBJECT_ATTRIB | ( | proper, | |||
type | ) |
protected: \ type* m_##proper; \ public: \ const type* get##proper() const { \ return m_##proper; \ } \ void set##proper(const type* proper) { \ m_##proper = prepareForAssignment(m_##proper,proper); \ }
Implements get/set methods and a private member for a typed XML attribute.
proper | the proper name of the attribute | |
type | the attribute's data type |
#define IMPL_XMLOBJECT_CHILD | ( | proper | ) |
protected: \ xmltooling::XMLObject* m_##proper; \ std::list<xmltooling::XMLObject*>::iterator m_pos_##proper; \ public: \ xmltooling::XMLObject* get##proper() const { \ return m_##proper; \ } \ void set##proper(xmltooling::XMLObject* child) { \ prepareForAssignment(m_##proper,child); \ *m_pos_##proper = m_##proper = child; \ }
Implements get/set methods and a private list iterator member for a generic XML child object.
proper | the proper name of the child |
#define IMPL_XMLOBJECT_CHILDREN | ( | proper, | |||
fence | ) |
protected: \ std::vector<xmltooling::XMLObject*> m_##proper##s; \ public: \ VectorOf(xmltooling::XMLObject) get##proper##s() { \ return VectorOf(xmltooling::XMLObject)(this, m_##proper##s, &m_children, fence); \ } \ const std::vector<xmltooling::XMLObject*>& get##proper##s() const { \ return m_##proper##s; \ }
Implements get method and a private vector member for a generic XML child collection.
proper | the proper name of the child | |
fence | insertion fence for new objects of the child collection in backing list |
#define IMPL_XMLOBJECT_CLONE | ( | cname | ) |
cname* clone##cname() const { \ return dynamic_cast<cname*>(clone()); \ } \ xmltooling::XMLObject* clone() const { \ std::auto_ptr<xmltooling::XMLObject> domClone(xmltooling::AbstractDOMCachingXMLObject::clone()); \ cname##Impl* ret=dynamic_cast<cname##Impl*>(domClone.get()); \ if (ret) \ return domClone.release(); \ return new cname##Impl(*this); \ }
Implements cloning methods for an XMLObject specialization implementation class.
cname | the name of the XMLObject specialization |
#define IMPL_XMLOBJECT_CLONE2 | ( | cname, | |||
base | ) |
cname* clone##cname() const { \ return dynamic_cast<cname*>(clone()); \ } \ base* clone##base() const { \ return dynamic_cast<base*>(clone()); \ } \ xmltooling::XMLObject* clone() const { \ std::auto_ptr<xmltooling::XMLObject> domClone(xmltooling::AbstractDOMCachingXMLObject::clone()); \ cname##Impl* ret=dynamic_cast<cname##Impl*>(domClone.get()); \ if (ret) \ return domClone.release(); \ return new cname##Impl(*this); \ }
Implements cloning methods for an XMLObject specialization implementation class that must override a base class clone method.
cname | the name of the XMLObject specialization | |
base | name of base type. |
#define IMPL_XMLOBJECT_CLONE_EX | ( | cname | ) |
cname* clone##cname() const { \ return dynamic_cast<cname*>(clone()); \ } \ xmltooling::XMLObject* clone() const { \ std::auto_ptr<xmltooling::XMLObject> domClone(xmltooling::AbstractDOMCachingXMLObject::clone()); \ cname##Impl* ret=dynamic_cast<cname##Impl*>(domClone.get()); \ if (ret) \ return domClone.release(); \ std::auto_ptr<cname##Impl> ret2(new cname##Impl(*this)); \ ret2->_clone(*this); \ return ret2.release(); \ }
Implements cloning methods for an XMLObject specialization implementation class that needs two stage duplication to avoid invoking virtual methods during construction.
cname | the name of the XMLObject specialization |
#define IMPL_XMLOBJECT_CLONE_EX2 | ( | cname, | |||
base | ) |
cname* clone##cname() const { \ return dynamic_cast<cname*>(clone()); \ } \ base* clone##base() const { \ return dynamic_cast<base*>(clone()); \ } \ xmltooling::XMLObject* clone() const { \ std::auto_ptr<xmltooling::XMLObject> domClone(xmltooling::AbstractDOMCachingXMLObject::clone()); \ cname##Impl* ret=dynamic_cast<cname##Impl*>(domClone.get()); \ if (ret) \ return domClone.release(); \ std::auto_ptr<cname##Impl> ret2(new cname##Impl(*this)); \ ret2->_clone(*this); \ return ret2.release(); \ }
Implements cloning methods for an XMLObject specialization implementation class that needs two stage duplication to avoid invoking virtual methods during construction, and must override a base class clone method.
cname | the name of the XMLObject specialization | |
base | name of base type |
#define IMPL_XMLOBJECT_FOREIGN_ATTRIB | ( | proper, | |||
type | ) |
protected: \ XMLCh* m_##proper##Prefix; \ type* m_##proper; \ public: \ const type* get##proper() const { \ return m_##proper; \ } \ void set##proper(const type* proper) { \ m_##proper = prepareForAssignment(m_##proper,proper); \ xercesc::XMLString::release(&m_##proper##Prefix); \ m_##proper##Prefix = nullptr; \ }
Implements get/set methods and a private member for a typed, qualified XML attribute.
proper | the proper name of the attribute | |
type | the attribute's data type |
#define IMPL_XMLOBJECTBUILDER | ( | cname | ) |
xmltooling::XMLObject* cname##Builder::buildObject( \ const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType \ ) const \ { \ return new cname##Impl(nsURI,localName,prefix,schemaType); \ }
Implements the standard XMLObjectBuilder specialization function.
cname | the name of the XMLObject specialization |
#define MAKE_NONCOPYABLE | ( | type | ) |
private: \ type(const type&); \ type& operator=(const type&)
Blocks copy c'tor and assignment operator for a class.
#define MARSHALL_BOOLEAN_ATTRIB | ( | proper, | |||
ucase, | |||||
namespaceURI | ) |
switch (m_##proper) { \ case xmlconstants::XML_BOOL_TRUE: \ domElement->setAttributeNS(namespaceURI, ucase##_ATTRIB_NAME, xmlconstants::XML_TRUE); \ break; \ case xmlconstants::XML_BOOL_ONE: \ domElement->setAttributeNS(namespaceURI, ucase##_ATTRIB_NAME, xmlconstants::XML_ONE); \ break; \ case xmlconstants::XML_BOOL_FALSE: \ domElement->setAttributeNS(namespaceURI, ucase##_ATTRIB_NAME, xmlconstants::XML_FALSE); \ break; \ case xmlconstants::XML_BOOL_ZERO: \ domElement->setAttributeNS(namespaceURI, ucase##_ATTRIB_NAME, xmlconstants::XML_ZERO); \ break; \ case xmlconstants::XML_BOOL_NULL: \ break; \ }
Implements marshalling for a boolean attribute.
proper | the proper name of the attribute | |
ucase | the upcased name of the attribute | |
namespaceURI | the XML namespace of the attribute |
#define MARSHALL_DATETIME_ATTRIB | ( | proper, | |||
ucase, | |||||
namespaceURI | ) |
if (m_##proper) { \
domElement->setAttributeNS(namespaceURI, ucase##_ATTRIB_NAME, m_##proper->getRawData()); \
}
Implements marshalling for a DateTime attribute.
proper | the proper name of the attribute | |
ucase | the upcased name of the attribute | |
namespaceURI | the XML namespace of the attribute |
#define MARSHALL_ID_ATTRIB | ( | proper, | |||
ucase, | |||||
namespaceURI | ) |
if (m_##proper && *m_##proper) { \ domElement->setAttributeNS(namespaceURI, ucase##_ATTRIB_NAME, m_##proper); \ domElement->setIdAttributeNS(namespaceURI, ucase##_ATTRIB_NAME, true); \ }
Implements marshalling for an ID attribute.
proper | the proper name of the attribute | |
ucase | the upcased name of the attribute | |
namespaceURI | the XML namespace of the attribute |
#define MARSHALL_INTEGER_ATTRIB | ( | proper, | |||
ucase, | |||||
namespaceURI | ) |
if (m_##proper && *m_##proper) { \
domElement->setAttributeNS(namespaceURI, ucase##_ATTRIB_NAME, m_##proper); \
}
Implements marshalling for an integer attribute.
proper | the proper name of the attribute | |
ucase | the upcased name of the attribute | |
namespaceURI | the XML namespace of the attribute |
#define MARSHALL_QNAME_ATTRIB | ( | proper, | |||
ucase, | |||||
namespaceURI | ) |
if (m_##proper) { \ xmltooling::auto_ptr_XMLCh qstr(m_##proper->toString().c_str()); \ domElement->setAttributeNS(namespaceURI, ucase##_ATTRIB_NAME, qstr.get()); \ }
Implements marshalling for a QName attribute.
proper | the proper name of the attribute | |
ucase | the upcased name of the attribute | |
namespaceURI | the XML namespace of the attribute |
#define MARSHALL_STRING_ATTRIB | ( | proper, | |||
ucase, | |||||
namespaceURI | ) |
if (m_##proper && *m_##proper) { \
domElement->setAttributeNS(namespaceURI, ucase##_ATTRIB_NAME, m_##proper); \
}
Implements marshalling for a string attribute.
proper | the proper name of the attribute | |
ucase | the upcased name of the attribute | |
namespaceURI | the XML namespace of the attribute |
#define PROC_BOOLEAN_ATTRIB | ( | proper, | |||
ucase, | |||||
namespaceURI | ) | PROC_STRING_ATTRIB(proper,ucase,namespaceURI) |
Implements unmarshalling process branch for a boolean attribute.
proper | the proper name of the attribute | |
ucase | the upcased name of the attribute | |
namespaceURI | the XML namespace of the attribute |
#define PROC_DATETIME_ATTRIB | ( | proper, | |||
ucase, | |||||
namespaceURI | ) | PROC_STRING_ATTRIB(proper,ucase,namespaceURI) |
Implements unmarshalling process branch for a DateTime attribute.
proper | the proper name of the attribute | |
ucase | the upcased name of the attribute | |
namespaceURI | the XML namespace of the attribute |
#define PROC_ID_ATTRIB | ( | proper, | |||
ucase, | |||||
namespaceURI | ) |
if (xmltooling::XMLHelper::isNodeNamed(attribute, namespaceURI, ucase##_ATTRIB_NAME)) { \ set##proper(attribute->getValue()); \ attribute->getOwnerElement()->setIdAttributeNode(attribute, true); \ return; \ }
Implements unmarshalling process branch for an ID attribute.
proper | the proper name of the attribute | |
ucase | the upcased name of the attribute | |
namespaceURI | the XML namespace of the attribute |
#define PROC_INTEGER_ATTRIB | ( | proper, | |||
ucase, | |||||
namespaceURI | ) | PROC_STRING_ATTRIB(proper,ucase,namespaceURI) |
Implements unmarshalling process branch for an integer attribute.
proper | the proper name of the attribute | |
ucase | the upcased name of the attribute | |
namespaceURI | the XML namespace of the attribute |
#define PROC_QNAME_ATTRIB | ( | proper, | |||
ucase, | |||||
namespaceURI | ) |
if (xmltooling::XMLHelper::isNodeNamed(attribute, namespaceURI, ucase##_ATTRIB_NAME)) { \ boost::scoped_ptr<xmltooling::QName> q(xmltooling::XMLHelper::getNodeValueAsQName(attribute)); \ set##proper(q.get()); \ return; \ }
Implements unmarshalling process branch for a DateTime attribute.
proper | the proper name of the attribute | |
ucase | the upcased name of the attribute | |
namespaceURI | the XML namespace of the attribute |
#define PROC_STRING_ATTRIB | ( | proper, | |||
ucase, | |||||
namespaceURI | ) |
if (xmltooling::XMLHelper::isNodeNamed(attribute, namespaceURI, ucase##_ATTRIB_NAME)) { \ set##proper(attribute->getValue()); \ return; \ }
Implements unmarshalling process branch for a string attribute.
proper | the proper name of the attribute | |
ucase | the upcased name of the attribute | |
namespaceURI | the XML namespace of the attribute |
#define PROC_TYPED_CHILD | ( | proper, | |||
namespaceURI, | |||||
force | ) |
if (force || xmltooling::XMLHelper::isNodeNamed(root,namespaceURI,proper::LOCAL_NAME)) { \ proper* typesafe=dynamic_cast<proper*>(childXMLObject); \ if (typesafe && !m_##proper) { \ typesafe->setParent(this); \ *m_pos_##proper = m_##proper = typesafe; \ return; \ } \ }
Implements unmarshalling process branch for typed child singleton element.
proper | the proper name of the child type | |
namespaceURI | the XML namespace of the child element | |
force | bypass use of hint and just cast down to check child |
#define PROC_TYPED_CHILDREN | ( | proper, | |||
namespaceURI, | |||||
force | ) |
if (force || xmltooling::XMLHelper::isNodeNamed(root,namespaceURI,proper::LOCAL_NAME)) { \ proper* typesafe=dynamic_cast<proper*>(childXMLObject); \ if (typesafe) { \ get##proper##s().push_back(typesafe); \ return; \ } \ }
Implements unmarshalling process branch for typed child collection element.
proper | the proper name of the child type | |
namespaceURI | the XML namespace of the child element | |
force | bypass use of hint and just cast down to check child |
#define PROC_TYPED_FOREIGN_CHILD | ( | proper, | |||
ns, | |||||
namespaceURI, | |||||
force | ) |
if (force || xmltooling::XMLHelper::isNodeNamed(root,namespaceURI,ns::proper::LOCAL_NAME)) { \ ns::proper* typesafe=dynamic_cast<ns::proper*>(childXMLObject); \ if (typesafe && !m_##proper) { \ typesafe->setParent(this); \ *m_pos_##proper = m_##proper = typesafe; \ return; \ } \ }
Implements unmarshalling process branch for typed child singleton element in a foreign namespace.
proper | the proper name of the child type | |
ns | the C++ namespace for the type | |
namespaceURI | the XML namespace of the child element | |
force | bypass use of hint and just cast down to check child |
#define PROC_TYPED_FOREIGN_CHILDREN | ( | proper, | |||
ns, | |||||
namespaceURI, | |||||
force | ) |
if (force || xmltooling::XMLHelper::isNodeNamed(root,namespaceURI,ns::proper::LOCAL_NAME)) { \ ns::proper* typesafe=dynamic_cast<ns::proper*>(childXMLObject); \ if (typesafe) { \ get##proper##s().push_back(typesafe); \ return; \ } \ }
Implements unmarshalling process branch for typed child collection element in a foreign namespace.
proper | the proper name of the child type | |
ns | the C++ namespace for the type | |
namespaceURI | the XML namespace of the child element | |
force | bypass use of hint and just cast down to check child |
#define PROC_XMLOBJECT_CHILD | ( | proper, | |||
namespaceURI | ) |
if (xmltooling::XMLHelper::isNodeNamed(root,namespaceURI,proper::LOCAL_NAME)) { \ if (!m_##proper) { \ childXMLObject->setParent(this); \ *m_pos_##proper = m_##proper = childXMLObject; \ return; \ } \ }
Implements unmarshalling process branch for a generic child singleton element.
proper | the proper name of the child type | |
namespaceURI | the XML namespace of the child element |
#define XMLOBJECTVALIDATOR_CHECKTYPE | ( | cname | ) |
const cname* ptr=dynamic_cast<const cname*>(xmlObject); \ if (!ptr) \ throw xmltooling::ValidationException(#cname"SchemaValidator: unsupported object type ($1).",xmltooling::params(1,typeid(xmlObject).name()))
Validator code that checks the object type.
cname | the name of the XMLObject specialization |
#define XMLOBJECTVALIDATOR_NONEMPTY | ( | cname, | |||
proper | ) |
if (ptr->get##proper##s().empty()) \ throw xmltooling::ValidationException(#cname" must have at least one "#proper".")
Validator code that checks for a non-empty collection.
cname | the name of the XMLObject specialization | |
proper | the proper name of the collection item |
#define XMLOBJECTVALIDATOR_NONEORBOTH | ( | cname, | |||
proper1, | |||||
proper2 | ) |
if ((ptr->get##proper1() && !ptr->get##proper2()) || (!ptr->get##proper1() && ptr->get##proper2())) \ throw xmltooling::ValidationException(#cname" cannot have "#proper1" without "#proper2".")
Validator code that checks a co-constraint (if one present, the other must be) between a pair of attributes, content, or singletons.
cname | the name of the XMLObject specialization | |
proper1 | the proper name of the first attribute, content, or singleton member | |
proper2 | the proper name of the second attribute, content, or singleton member |
#define XMLOBJECTVALIDATOR_ONEOF | ( | cname, | |||
proper1, | |||||
proper2 | ) |
if (!ptr->get##proper1() && !ptr->get##proper2()) \ throw xmltooling::ValidationException(#cname" must have "#proper1" or "#proper2".")
Validator code that checks for one of a pair of required attributes, content, or singletons.
cname | the name of the XMLObject specialization | |
proper1 | the proper name of the first attribute, content, or singleton member | |
proper2 | the proper name of the second attribute, content, or singleton member |
#define XMLOBJECTVALIDATOR_ONEOF3 | ( | cname, | |||
proper1, | |||||
proper2, | |||||
proper3 | ) |
if (!ptr->get##proper1() && !ptr->get##proper2() && !ptr->get##proper3()) \ throw xmltooling::ValidationException(#cname" must have "#proper1", "#proper2", or "#proper3".")
Validator code that checks for one of a set of three required attributes, content, or singletons.
cname | the name of the XMLObject specialization | |
proper1 | the proper name of the first attribute, content, or singleton member | |
proper2 | the proper name of the second attribute, content, or singleton member | |
proper3 | the proper name of the third attribute, content, or singleton member |
#define XMLOBJECTVALIDATOR_ONLYONEOF | ( | cname, | |||
proper1, | |||||
proper2 | ) |
if ((!ptr->get##proper1() && !ptr->get##proper2()) || (ptr->get##proper1() && ptr->get##proper2())) \ throw xmltooling::ValidationException(#cname" must have "#proper1" or "#proper2" but not both.")
Validator code that checks for one of a pair of required attributes, content, or singletons, but disallows both.
cname | the name of the XMLObject specialization | |
proper1 | the proper name of the first attribute, content, or singleton member | |
proper2 | the proper name of the second attribute, content, or singleton member |
#define XMLOBJECTVALIDATOR_ONLYONEOF3 | ( | cname, | |||
proper1, | |||||
proper2, | |||||
proper3 | ) |
int c##proper1##proper2##proper3=0; \ if (ptr->get##proper1()!=nullptr) \ c##proper1##proper2##proper3++; \ if (ptr->get##proper2()!=nullptr) \ c##proper1##proper2##proper3++; \ if (ptr->get##proper3()!=nullptr) \ c##proper1##proper2##proper3++; \ if (c##proper1##proper2##proper3 != 1) \ throw xmltooling::ValidationException(#cname" must have only one of "#proper1", "#proper2", or "#proper3".")
Validator code that checks for one of a set of three required attributes, content, or singletons but disallows more than one.
cname | the name of the XMLObject specialization | |
proper1 | the proper name of the first attribute, content, or singleton member | |
proper2 | the proper name of the second attribute, content, or singleton member | |
proper3 | the proper name of the third attribute, content, or singleton member |
#define XMLOBJECTVALIDATOR_REQUIRE | ( | cname, | |||
proper | ) |
if (!ptr->get##proper()) \ throw xmltooling::ValidationException(#cname" must have "#proper".")
Validator code that checks for a required attribute, content, or singleton.
cname | the name of the XMLObject specialization | |
proper | the proper name of the attribute, content, or singleton member |
#define XMLOBJECTVALIDATOR_REQUIRE_INTEGER | ( | cname, | |||
proper | ) |
if (!ptr->get##proper().first) \ throw xmltooling::ValidationException(#cname" must have "#proper".")
Validator code that checks for a required integer attribute.
cname | the name of the XMLObject specialization | |
proper | the proper name of the attribute, content, or singleton member |
#define XMLOBJECTVALIDATOR_SIMPLE | ( | linkage, | |||
cname | ) |
BEGIN_XMLOBJECTVALIDATOR(linkage,cname); \ XMLOBJECTVALIDATOR_REQUIRE(cname,TextContent); \ END_XMLOBJECTVALIDATOR
Declares/defines a Validator specialization that checks object type and a non-empty simple content model.
linkage | linkage specifier for the class | |
cname | the name of the XMLObject specialization |