xmltooling  3.3.0
base.h File Reference

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

 xmltooling
 Public namespace of XML Tooling library.
 

Macros

#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)   /##** desc */
 
#define MAKE_NONCOPYABLE(type)
 Blocks copy c'tor and assignment operator for a class. More...
 
#define DECL_XMLOBJECT_ABSTRACT(linkage, cname, base, desc)
 Begins the declaration of an XMLObject specialization for an abstract element/type. More...
 
#define BEGIN_XMLOBJECT(linkage, cname, base, desc)
 Begins the declaration of an XMLObject specialization. More...
 
#define BEGIN_XMLOBJECT2(linkage, cname, base, base2, desc)
 Begins the declaration of an XMLObject specialization with two base classes. More...
 
#define BEGIN_XMLOBJECT3(linkage, cname, base, base2, base3, desc)
 Begins the declaration of an XMLObject specialization with three base classes. More...
 
#define BEGIN_XMLOBJECT4(linkage, cname, base, base2, base3, base4, desc)
 Begins the declaration of an XMLObject specialization with four base classes. More...
 
#define BEGIN_XMLOBJECT5(linkage, cname, base, base2, base3, base4, base5, desc)
 Begins the declaration of an XMLObject specialization with five base classes. More...
 
#define END_XMLOBJECT   }
 Ends the declaration of an XMLObject specialization.
 
#define DECL_ELEMENT_QNAME
 Declares a static variable holding the XMLObject's element QName. More...
 
#define DECL_TYPE_QNAME
 Declares a static variable holding the XMLObject's schema type QName. More...
 
#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. More...
 
#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. More...
 
#define DECL_INHERITED_XMLOBJECT_ATTRIB(proper, upcased, type)
 Declares abstract set method for a typed XML attribute. More...
 
#define DECL_XMLOBJECT_ATTRIB(proper, upcased, type)
 Declares abstract get/set methods for a typed XML attribute. More...
 
#define DECL_INHERITED_STRING_ATTRIB(proper, upcased)   DECL_INHERITED_XMLOBJECT_ATTRIB(proper,upcased,XMLCh)
 Declares abstract set method for a string XML attribute. More...
 
#define DECL_STRING_ATTRIB(proper, upcased)   DECL_XMLOBJECT_ATTRIB(proper,upcased,XMLCh)
 Declares abstract get/set methods for a string XML attribute. More...
 
#define DECL_INHERITED_DATETIME_ATTRIB(proper, upcased)
 Declares abstract set method for a DateTime XML attribute. More...
 
#define DECL_DATETIME_ATTRIB(proper, upcased)
 Declares abstract get/set methods for a DateTime XML attribute. More...
 
#define DECL_INHERITED_INTEGER_ATTRIB(proper, upcased)
 Declares abstract set method for an integer XML attribute. More...
 
#define DECL_INTEGER_ATTRIB(proper, upcased)
 Declares abstract get/set methods for an integer XML attribute. More...
 
#define DECL_BOOLEAN_ATTRIB(proper, upcased, def)
 Declares abstract get/set methods for a boolean XML attribute. More...
 
#define IMPL_XMLOBJECT_ATTRIB(proper, type)
 Implements get/set methods and a private member for a typed XML attribute. More...
 
#define IMPL_STRING_ATTRIB(proper)   IMPL_XMLOBJECT_ATTRIB(proper,XMLCh)
 Implements get/set methods and a private member for a string XML attribute. More...
 
#define IMPL_ID_ATTRIB(proper)
 Implements get/set methods and a private member for a string XML attribute, plus a getXMLID override. More...
 
#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. More...
 
#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. More...
 
#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. More...
 
#define IMPL_DATETIME_ATTRIB_EX(proper, fallback, duration)
 Implements get/set methods and a private member for a DateTime XML attribute. More...
 
#define IMPL_INTEGER_ATTRIB(proper)
 Implements get/set methods and a private member for an integer XML attribute. More...
 
#define IMPL_BOOLEAN_ATTRIB(proper)
 Implements get/set methods and a private member for a boolean XML attribute. More...
 
#define IMPL_XMLOBJECT_FOREIGN_ATTRIB(proper, type)
 Implements get/set methods and a private member for a typed, qualified XML attribute. More...
 
#define DECL_INHERITED_TYPED_FOREIGN_CHILD(proper, ns)
 Declares abstract set method for a typed XML child object in a foreign namespace. More...
 
#define DECL_TYPED_FOREIGN_CHILD(proper, ns)
 Declares abstract get/set methods for a typed XML child object in a foreign namespace. More...
 
#define DECL_INHERITED_TYPED_CHILD(proper)
 Declares abstract set method for a typed XML child object. More...
 
#define DECL_TYPED_CHILD(proper)
 Declares abstract get/set methods for a typed XML child object. More...
 
#define DECL_XMLOBJECT_CHILD(proper)
 Declares abstract get/set methods for a generic XML child object. More...
 
#define IMPL_TYPED_CHILD(proper)
 Implements get/set methods and a private list iterator member for a typed XML child object. More...
 
#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. More...
 
#define IMPL_XMLOBJECT_CHILD(proper)
 Implements get/set methods and a private list iterator member for a generic XML child object. More...
 
#define DECL_TYPED_CHILDREN(proper)
 Declares abstract get/set methods for a typed XML child collection. More...
 
#define DECL_TYPED_FOREIGN_CHILDREN(proper, ns)
 Declares abstract get/set methods for a typed XML child collection in a foreign namespace. More...
 
#define DECL_XMLOBJECT_CHILDREN(proper)
 Declares abstract get/set methods for a generic XML child collection. More...
 
#define IMPL_TYPED_CHILDREN(proper, fence)
 Implements get method and a private vector member for a typed XML child collection. More...
 
#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. More...
 
#define IMPL_XMLOBJECT_CHILDREN(proper, fence)
 Implements get method and a private vector member for a generic XML child collection. More...
 
#define MARSHALL_STRING_ATTRIB(proper, ucase, namespaceURI)
 Implements marshalling for a string attribute. More...
 
#define MARSHALL_DATETIME_ATTRIB(proper, ucase, namespaceURI)
 Implements marshalling for a DateTime attribute. More...
 
#define MARSHALL_INTEGER_ATTRIB(proper, ucase, namespaceURI)
 Implements marshalling for an integer attribute. More...
 
#define MARSHALL_BOOLEAN_ATTRIB(proper, ucase, namespaceURI)
 Implements marshalling for a boolean attribute. More...
 
#define MARSHALL_QNAME_ATTRIB(proper, ucase, namespaceURI)
 Implements marshalling for a QName attribute. More...
 
#define MARSHALL_ID_ATTRIB(proper, ucase, namespaceURI)
 Implements marshalling for an ID attribute. More...
 
#define PROC_STRING_ATTRIB(proper, ucase, namespaceURI)
 Implements unmarshalling process branch for a string attribute. More...
 
#define PROC_ID_ATTRIB(proper, ucase, namespaceURI)
 Implements unmarshalling process branch for an ID attribute. More...
 
#define PROC_DATETIME_ATTRIB(proper, ucase, namespaceURI)   PROC_STRING_ATTRIB(proper,ucase,namespaceURI)
 Implements unmarshalling process branch for a DateTime attribute. More...
 
#define PROC_QNAME_ATTRIB(proper, ucase, namespaceURI)
 Implements unmarshalling process branch for a DateTime attribute. More...
 
#define PROC_INTEGER_ATTRIB(proper, ucase, namespaceURI)   PROC_STRING_ATTRIB(proper,ucase,namespaceURI)
 Implements unmarshalling process branch for an integer attribute. More...
 
#define PROC_BOOLEAN_ATTRIB(proper, ucase, namespaceURI)   PROC_STRING_ATTRIB(proper,ucase,namespaceURI)
 Implements unmarshalling process branch for a boolean attribute. More...
 
#define PROC_TYPED_CHILDREN(proper, namespaceURI, force)
 Implements unmarshalling process branch for typed child collection element. More...
 
#define PROC_TYPED_FOREIGN_CHILDREN(proper, ns, namespaceURI, force)
 Implements unmarshalling process branch for typed child collection element in a foreign namespace. More...
 
#define PROC_TYPED_CHILD(proper, namespaceURI, force)
 Implements unmarshalling process branch for typed child singleton element. More...
 
#define PROC_TYPED_FOREIGN_CHILD(proper, ns, namespaceURI, force)
 Implements unmarshalling process branch for typed child singleton element in a foreign namespace. More...
 
#define PROC_XMLOBJECT_CHILD(proper, namespaceURI)
 Implements unmarshalling process branch for a generic child singleton element. More...
 
#define DECL_SIMPLE_CONTENT(proper)
 Declares aliased get/set methods for named XML element simple content. More...
 
#define DECL_INTEGER_CONTENT(proper)
 Declares aliased get/set methods for named integer XML element content. More...
 
#define IMPL_XMLOBJECT_CLONE(cname)
 Implements cloning methods for an XMLObject specialization implementation class. More...
 
#define IMPL_XMLOBJECT_CLONE2(cname, base)
 Implements cloning methods for an XMLObject specialization implementation class that must override a base class clone method. More...
 
#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. More...
 
#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. More...
 
#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. More...
 
#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. More...
 
#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. More...
 
#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. More...
 
#define IMPL_CLONE_XMLOBJECT_CHILD(proper)
 Implements cloning of a child object, for use in copy constructor or deferred clone methods. More...
 
#define IMPL_CLONE_TYPED_CHILD(proper)
 Implements cloning of a typed child object, for use in copy constructor or deferred clone methods. More...
 
#define IMPL_CLONE_XMLOBJECT_CHILDREN(proper)
 Implements cloning of an untyped child collection, for use in copy constructor or deferred clone methods. More...
 
#define IMPL_CLONE_TYPED_CHILDREN(proper)
 Implements cloning of a child collection, for use in copy constructor or deferred clone methods. More...
 
#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. More...
 
#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. More...
 
#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. More...
 
#define IMPL_CLONE_XMLOBJECT_CHILD_IN_BAG(proper)
 Implements cloning of an XMLObject child in a bag iteration loop. More...
 
#define DECL_XMLOBJECT_SIMPLE(linkage, cname, proper, desc)
 Declares an XMLObject specialization with a simple content model and type, handling it as string data. More...
 
#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. More...
 
#define BEGIN_XMLOBJECTBUILDER(linkage, cname, namespaceURI, namespacePrefix)
 Begins the declaration of an XMLObjectBuilder specialization. More...
 
#define END_XMLOBJECTBUILDER   }
 Ends the declaration of an XMLObjectBuilder specialization.
 
#define DECL_XMLOBJECTBUILDER(linkage, cname, namespaceURI, namespacePrefix)
 Declares a generic XMLObjectBuilder specialization. More...
 
#define IMPL_XMLOBJECTBUILDER(cname)
 Implements the standard XMLObjectBuilder specialization function. More...
 
#define BEGIN_XMLOBJECTVALIDATOR(linkage, cname)
 Begins the declaration of a Schema Validator specialization. More...
 
#define BEGIN_XMLOBJECTVALIDATOR_SUB(linkage, cname, base)
 Begins the declaration of a Schema Validator specialization subclass. More...
 
#define END_XMLOBJECTVALIDATOR   } }
 Ends the declaration of a Validator specialization.
 
#define XMLOBJECTVALIDATOR_CHECKTYPE(cname)
 Validator code that checks the object type. More...
 
#define XMLOBJECTVALIDATOR_REQUIRE(cname, proper)
 Validator code that checks for a required attribute, content, or singleton. More...
 
#define XMLOBJECTVALIDATOR_REQUIRE_INTEGER(cname, proper)
 Validator code that checks for a required integer attribute. More...
 
#define XMLOBJECTVALIDATOR_ONEOF(cname, proper1, proper2)
 Validator code that checks for one of a pair of required attributes, content, or singletons. More...
 
#define XMLOBJECTVALIDATOR_ONLYONEOF(cname, proper1, proper2)
 Validator code that checks for one of a pair of required attributes, content, or singletons, but disallows both. More...
 
#define XMLOBJECTVALIDATOR_ONEOF3(cname, proper1, proper2, proper3)
 Validator code that checks for one of a set of three required attributes, content, or singletons. More...
 
#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. More...
 
#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. More...
 
#define XMLOBJECTVALIDATOR_NONEMPTY(cname, proper)
 Validator code that checks for a non-empty collection. More...
 
#define XMLOBJECTVALIDATOR_SIMPLE(linkage, cname)
 Declares/defines a Validator specialization that checks object type and a non-empty simple content model. More...
 

Functions

template<class InputSequence , class OutputSequence >
void xmltooling::clone (const InputSequence &in, OutputSequence &out)
 Template function for cloning a sequence of XMLObjects. More...
 

Detailed Description

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.

Macro Definition Documentation

◆ BEGIN_XMLOBJECT

#define BEGIN_XMLOBJECT (   linkage,
  cname,
  base,
  desc 
)
Value:
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[]
void clone(const InputSequence &in, OutputSequence &out)
Template function for cloning a sequence of XMLObjects.
Definition: base.h:1951

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.

Parameters
linkagelinkage specifier for the class
cnamethe name of the class to declare
basethe base class to derive from using public virtual inheritance
descdocumentation comment for class

◆ BEGIN_XMLOBJECT2

#define BEGIN_XMLOBJECT2 (   linkage,
  cname,
  base,
  base2,
  desc 
)
Value:
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[]
void clone(const InputSequence &in, OutputSequence &out)
Template function for cloning a sequence of XMLObjects.
Definition: base.h:1951

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.

Parameters
linkagelinkage specifier for the class
cnamethe name of the class to declare
basethe first base class to derive from using public virtual inheritance
base2the second base class to derive from using public virtual inheritance
descdocumentation comment for class

◆ BEGIN_XMLOBJECT3

#define BEGIN_XMLOBJECT3 (   linkage,
  cname,
  base,
  base2,
  base3,
  desc 
)
Value:
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[]
void clone(const InputSequence &in, OutputSequence &out)
Template function for cloning a sequence of XMLObjects.
Definition: base.h:1951

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.

Parameters
linkagelinkage specifier for the class
cnamethe name of the class to declare
basethe first base class to derive from using public virtual inheritance
base2the second base class to derive from using public virtual inheritance
base3the third base class to derive from using public virtual inheritance
descdocumentation comment for class

◆ BEGIN_XMLOBJECT4

#define BEGIN_XMLOBJECT4 (   linkage,
  cname,
  base,
  base2,
  base3,
  base4,
  desc 
)
Value:
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[]
void clone(const InputSequence &in, OutputSequence &out)
Template function for cloning a sequence of XMLObjects.
Definition: base.h:1951

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.

Parameters
linkagelinkage specifier for the class
cnamethe name of the class to declare
basethe first base class to derive from using public virtual inheritance
base2the second base class to derive from using public virtual inheritance
base3the third base class to derive from using public virtual inheritance
base4the fourth base class to derive from using public virtual inheritance
descdocumentation comment for class

◆ BEGIN_XMLOBJECT5

#define BEGIN_XMLOBJECT5 (   linkage,
  cname,
  base,
  base2,
  base3,
  base4,
  base5,
  desc 
)
Value:
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[]
void clone(const InputSequence &in, OutputSequence &out)
Template function for cloning a sequence of XMLObjects.
Definition: base.h:1951

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.

Parameters
linkagelinkage specifier for the class
cnamethe name of the class to declare
basethe first base class to derive from using public virtual inheritance
base2the second base class to derive from using public virtual inheritance
base3the third base class to derive from using public virtual inheritance
base4the fourth base class to derive from using public virtual inheritance
base5the fifth base class to derive from using public virtual inheritance
descdocumentation comment for class

◆ BEGIN_XMLOBJECTBUILDER

#define BEGIN_XMLOBJECTBUILDER (   linkage,
  cname,
  namespaceURI,
  namespacePrefix 
)
Value:
XMLTOOLING_DOXYGEN(Builder for cname objects.) \
class linkage cname##Builder : public xmltooling::ConcreteXMLObjectBuilder { \
public: \
virtual ~cname##Builder() {} \
XMLTOOLING_DOXYGEN(Default builder.) \
virtual cname* buildObject() const { \
return buildObject(namespaceURI,cname::LOCAL_NAME,namespacePrefix); \
} \
XMLTOOLING_DOXYGEN(Builder that allows element/type override.) \
virtual cname* buildObject( \
const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix=nullptr, const xmltooling::QName* schemaType=nullptr \
) const
A data structure for encapsulating XML QNames.
Definition: QName.h:44
A factory interface for obtaining XMLObjects.
Definition: ConcreteXMLObjectBuilder.h:38

Begins the declaration of an XMLObjectBuilder specialization.

Basic boilerplate includes an empty virtual destructor, and a default builder that defaults the element name.

Parameters
linkagelinkage specifier for the class
cnamethe name of the XMLObject specialization
namespaceURIthe XML namespace of the default associated element
namespacePrefixthe XML namespace prefix of the default associated element

◆ BEGIN_XMLOBJECTVALIDATOR

#define BEGIN_XMLOBJECTVALIDATOR (   linkage,
  cname 
)
Value:
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.")
Wrapper around a variable number of arguments.
Definition: exceptions.h:93
virtual void validate(const XMLObject *xmlObject) const =0
Checks to see if an XMLObject is valid.
Exceptions during object validation.
Definition: exceptions.h:363
An interface for classes that implement rules for checking the validity of XMLObjects.
Definition: Validator.h:38
Object that represents an XML Element that has been unmarshalled into this C++ object.
Definition: XMLObject.h:59

Begins the declaration of a Schema Validator specialization.

Parameters
linkagelinkage specifier for the class
cnamethe base name of the Validator specialization

◆ BEGIN_XMLOBJECTVALIDATOR_SUB

#define BEGIN_XMLOBJECTVALIDATOR_SUB (   linkage,
  cname,
  base 
)
Value:
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()));
Wrapper around a variable number of arguments.
Definition: exceptions.h:93
Exceptions during object validation.
Definition: exceptions.h:363
Object that represents an XML Element that has been unmarshalled into this C++ object.
Definition: XMLObject.h:59

Begins the declaration of a Schema Validator specialization subclass.

Parameters
linkagelinkage specifier for the class
cnamethe base name of the Validator specialization
basebase class for the validator

◆ DECL_BOOLEAN_ATTRIB

#define DECL_BOOLEAN_ATTRIB (   proper,
  upcased,
  def 
)

Declares abstract get/set methods for a boolean XML attribute.

Parameters
properthe proper name of the attribute
upcasedthe upcased name of the attribute
defthe default/presumed value, if no explicit value has been set

◆ DECL_DATETIME_ATTRIB

#define DECL_DATETIME_ATTRIB (   proper,
  upcased 
)
Value:
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
#define DECL_XMLOBJECT_ATTRIB(proper, upcased, type)
Declares abstract get/set methods for a typed XML attribute.
Definition: base.h:542

Declares abstract get/set methods for a DateTime XML attribute.

Parameters
properthe proper name of the attribute
upcasedthe upcased name of the attribute

◆ DECL_ELEMENT_QNAME

#define DECL_ELEMENT_QNAME
Value:
public: \
XMLTOOLING_DOXYGEN(Element QName) \
static xmltooling::QName ELEMENT_QNAME
A data structure for encapsulating XML QNames.
Definition: QName.h:44

Declares a static variable holding the XMLObject's element QName.

◆ DECL_INHERITED_DATETIME_ATTRIB

#define DECL_INHERITED_DATETIME_ATTRIB (   proper,
  upcased 
)
Value:
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
#define DECL_INHERITED_XMLOBJECT_ATTRIB(proper, upcased, type)
Declares abstract set method for a typed XML attribute.
Definition: base.h:528

Declares abstract set method for a DateTime XML attribute.

The get method is omitted.

Parameters
properthe proper name of the attribute
upcasedthe upcased name of the attribute

◆ DECL_INHERITED_INTEGER_ATTRIB

#define DECL_INHERITED_INTEGER_ATTRIB (   proper,
  upcased 
)
Value:
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.

Parameters
properthe proper name of the attribute
upcasedthe upcased name of the attribute

◆ DECL_INHERITED_STRING_ATTRIB

#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.

Parameters
properthe proper name of the attribute
upcasedthe upcased name of the attribute

◆ DECL_INHERITED_TYPED_CHILD

#define DECL_INHERITED_TYPED_CHILD (   proper)
Value:
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.

Parameters
properthe proper name of the child type

◆ DECL_INHERITED_TYPED_FOREIGN_CHILD

#define DECL_INHERITED_TYPED_FOREIGN_CHILD (   proper,
  ns 
)
Value:
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.

Parameters
properthe proper name of the child type
nsthe C++ namespace for the type

◆ DECL_INHERITED_XMLOBJECT_ATTRIB

#define DECL_INHERITED_XMLOBJECT_ATTRIB (   proper,
  upcased,
  type 
)
Value:
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.

Parameters
properthe proper name of the attribute
upcasedthe upcased name of the attribute
typethe attribute's data type

◆ DECL_INTEGER_ATTRIB

#define DECL_INTEGER_ATTRIB (   proper,
  upcased 
)
Value:
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.

Parameters
properthe proper name of the attribute
upcasedthe upcased name of the attribute

◆ DECL_INTEGER_CONTENT

#define DECL_INTEGER_CONTENT (   proper)
Value:
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.

Parameters
properthe proper name to label the element's content

◆ DECL_SIMPLE_CONTENT

#define DECL_SIMPLE_CONTENT (   proper)
Value:
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.

Parameters
properthe proper name to label the element's content

◆ DECL_STRING_ATTRIB

#define DECL_STRING_ATTRIB (   proper,
  upcased 
)    DECL_XMLOBJECT_ATTRIB(proper,upcased,XMLCh)

Declares abstract get/set methods for a string XML attribute.

Parameters
properthe proper name of the attribute
upcasedthe upcased name of the attribute

◆ DECL_TYPE_QNAME

#define DECL_TYPE_QNAME
Value:
public: \
XMLTOOLING_DOXYGEN(Type QName) \
static xmltooling::QName TYPE_QNAME
A data structure for encapsulating XML QNames.
Definition: QName.h:44

Declares a static variable holding the XMLObject's schema type QName.

◆ DECL_TYPED_CHILD

#define DECL_TYPED_CHILD (   proper)
Value:
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.

Parameters
properthe proper name of the child type

◆ DECL_TYPED_CHILDREN

#define DECL_TYPED_CHILDREN (   proper)
Value:
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
#define VectorOf(type)
Shorthand for an XMLObjectChildrenList wrapped around a vector.
Definition: XMLObjectChildrenList.h:40

Declares abstract get/set methods for a typed XML child collection.

Parameters
properthe proper name of the child type

◆ DECL_TYPED_FOREIGN_CHILD

#define DECL_TYPED_FOREIGN_CHILD (   proper,
  ns 
)
Value:
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.

Parameters
properthe proper name of the child type
nsthe C++ namespace for the type

◆ DECL_TYPED_FOREIGN_CHILDREN

#define DECL_TYPED_FOREIGN_CHILDREN (   proper,
  ns 
)
Value:
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
#define VectorOf(type)
Shorthand for an XMLObjectChildrenList wrapped around a vector.
Definition: XMLObjectChildrenList.h:40

Declares abstract get/set methods for a typed XML child collection in a foreign namespace.

Parameters
properthe proper name of the child type
nsthe C++ namespace for the type

◆ DECL_XMLOBJECT_ABSTRACT

#define DECL_XMLOBJECT_ABSTRACT (   linkage,
  cname,
  base,
  desc 
)
Value:
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.

Parameters
linkagelinkage specifier for the class
cnamethe name of the class to declare
basethe base class to derive from using public virtual inheritance
descdocumentation comment for class

◆ DECL_XMLOBJECT_ATTRIB

#define DECL_XMLOBJECT_ATTRIB (   proper,
  upcased,
  type 
)
Value:
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.

Parameters
properthe proper name of the attribute
upcasedthe upcased name of the attribute
typethe attribute's data type

◆ DECL_XMLOBJECT_CHILD

#define DECL_XMLOBJECT_CHILD (   proper)
Value:
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
Object that represents an XML Element that has been unmarshalled into this C++ object.
Definition: XMLObject.h:59

Declares abstract get/set methods for a generic XML child object.

Parameters
properthe proper name of the child

◆ DECL_XMLOBJECT_CHILDREN

#define DECL_XMLOBJECT_CHILDREN (   proper)
Value:
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
#define VectorOf(type)
Shorthand for an XMLObjectChildrenList wrapped around a vector.
Definition: XMLObjectChildrenList.h:40
Object that represents an XML Element that has been unmarshalled into this C++ object.
Definition: XMLObject.h:59

Declares abstract get/set methods for a generic XML child collection.

Parameters
properthe proper name of the child

◆ DECL_XMLOBJECT_SIMPLE

#define DECL_XMLOBJECT_SIMPLE (   linkage,
  cname,
  proper,
  desc 
)
Value:
BEGIN_XMLOBJECT(linkage,cname,xmltooling::XMLObject,desc); \
DECL_SIMPLE_CONTENT(proper); \
END_XMLOBJECT
Object that represents an XML Element that has been unmarshalled into this C++ object.
Definition: XMLObject.h:59
#define BEGIN_XMLOBJECT(linkage, cname, base, desc)
Begins the declaration of an XMLObject specialization.
Definition: base.h:369

Declares an XMLObject specialization with a simple content model and type, handling it as string data.

Parameters
linkagelinkage specifier for the class
cnamethe name of the XMLObject specialization
properthe proper name to label the element's content
descdocumentation for class

◆ DECL_XMLOBJECTBUILDER

#define DECL_XMLOBJECTBUILDER (   linkage,
  cname,
  namespaceURI,
  namespacePrefix 
)
Value:
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 b->buildObject(); \
throw xmltooling::XMLObjectException("Unable to obtain typed builder for "#cname"."); \
} \
END_XMLOBJECTBUILDER
A data structure for encapsulating XML QNames.
Definition: QName.h:44
Exceptions in basic object usage.
Definition: exceptions.h:357
#define BEGIN_XMLOBJECTBUILDER(linkage, cname, namespaceURI, namespacePrefix)
Begins the declaration of an XMLObjectBuilder specialization.
Definition: base.h:1654

Declares a generic XMLObjectBuilder specialization.

Parameters
linkagelinkage specifier for the class
cnamethe name of the XMLObject specialization
namespaceURIthe XML namespace of the default associated element
namespacePrefixthe XML namespace prefix of the default associated element

◆ DECL_XMLOBJECTIMPL_SIMPLE

#define DECL_XMLOBJECTIMPL_SIMPLE (   linkage,
  cname 
)
Value:
class linkage cname##Impl \
: public virtual cname, \
{ \
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::AbstractSimpleElement(src), \
xmltooling::AbstractDOMCachingXMLObject(src) {} \
IMPL_XMLOBJECT_CLONE(cname) \
}
A data structure for encapsulating XML QNames.
Definition: QName.h:44
An abstract implementation of XMLObject.
Definition: AbstractXMLObject.h:51
A mix-in to implement object unmarshalling.
Definition: AbstractXMLObjectUnmarshaller.h:42
AbstractXMLObject mixin that implements a simple string-based content model.
Definition: AbstractSimpleElement.h:43
A mix-in to implement object marshalling with DOM reuse.
Definition: AbstractXMLObjectMarshaller.h:42
AbstractXMLObject mixin that implements DOM caching.
Definition: AbstractDOMCachingXMLObject.h:43

Declares and defines an implementation class for an XMLObject with a simple content model and type, handling it as string data.

Parameters
linkagelinkage specifier for the class
cnamethe name of the XMLObject specialization

◆ IMPL_BOOLEAN_ATTRIB

#define IMPL_BOOLEAN_ATTRIB (   proper)
Value:
protected: \
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; \
} \
}
xmltooling_bool_t
Enumerations of the different values of a boolean attribute or element.
Definition: XMLConstants.h:108

Implements get/set methods and a private member for a boolean XML attribute.

Parameters
properthe proper name of the attribute

◆ IMPL_CLONE_ATTRIB

#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

◆ IMPL_CLONE_BOOLEAN_ATTRIB

#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

◆ IMPL_CLONE_FOREIGN_ATTRIB

#define IMPL_CLONE_FOREIGN_ATTRIB (   proper)
Value:
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

◆ IMPL_CLONE_INTEGER_ATTRIB

#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

◆ IMPL_CLONE_TYPED_CHILD

#define IMPL_CLONE_TYPED_CHILD (   proper)
Value:
if (src.get##proper()) \
set##proper(src.get##proper()->clone##proper())
void clone(const InputSequence &in, OutputSequence &out)
Template function for cloning a sequence of XMLObjects.
Definition: base.h:1951

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

◆ IMPL_CLONE_TYPED_CHILD_IN_BAG

#define IMPL_CLONE_TYPED_CHILD_IN_BAG (   proper)
Value:
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.

Parameters
properthe proper name of the child type to clone

◆ IMPL_CLONE_TYPED_CHILDREN

#define IMPL_CLONE_TYPED_CHILDREN (   proper)
Value:
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))] \
)
void clone(const InputSequence &in, OutputSequence &out)
Template function for cloning a sequence of XMLObjects.
Definition: base.h:1951
#define VectorOf(type)
Shorthand for an XMLObjectChildrenList wrapped around a vector.
Definition: XMLObjectChildrenList.h:40

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

◆ IMPL_CLONE_TYPED_FOREIGN_CHILD_IN_BAG

#define IMPL_CLONE_TYPED_FOREIGN_CHILD_IN_BAG (   proper,
  ns 
)
Value:
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.

Parameters
properthe proper name of the child type to clone
nsthe namespace of the child type

◆ IMPL_CLONE_TYPED_FOREIGN_CHILDREN

#define IMPL_CLONE_TYPED_FOREIGN_CHILDREN (   proper,
  ns 
)
Value:
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))] \
)
void clone(const InputSequence &in, OutputSequence &out)
Template function for cloning a sequence of XMLObjects.
Definition: base.h:1951
#define VectorOf(type)
Shorthand for an XMLObjectChildrenList wrapped around a vector.
Definition: XMLObjectChildrenList.h:40

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

◆ IMPL_CLONE_XMLOBJECT_CHILD

#define IMPL_CLONE_XMLOBJECT_CHILD (   proper)
Value:
if (src.get##proper()) \
set##proper(src.get##proper()->clone())
void clone(const InputSequence &in, OutputSequence &out)
Template function for cloning a sequence of XMLObjects.
Definition: base.h:1951

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

◆ IMPL_CLONE_XMLOBJECT_CHILD_IN_BAG

#define IMPL_CLONE_XMLOBJECT_CHILD_IN_BAG (   proper)
Value:
if (*_bagit) { \
get##proper##s().push_back((*_bagit)->clone()); \
}

Implements cloning of an XMLObject child in a bag iteration loop.

Parameters
properthe proper name of the child to clone

◆ IMPL_CLONE_XMLOBJECT_CHILDREN

#define IMPL_CLONE_XMLOBJECT_CHILDREN (   proper)
Value:
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))] \
)
void clone(const InputSequence &in, OutputSequence &out)
Template function for cloning a sequence of XMLObjects.
Definition: base.h:1951
#define VectorOf(type)
Shorthand for an XMLObjectChildrenList wrapped around a vector.
Definition: XMLObjectChildrenList.h:40

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

◆ IMPL_DATETIME_ATTRIB

#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.

Parameters
properthe proper name of the attribute
fallbackepoch to return when attribute is NULL

◆ IMPL_DATETIME_ATTRIB_EX

#define IMPL_DATETIME_ATTRIB_EX (   proper,
  fallback,
  duration 
)
Value:
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.

Parameters
properthe proper name of the attribute
fallbackepoch to return when attribute is NULL
durationtrue iff the attribute should be handled as a duration

◆ IMPL_DURATION_ATTRIB

#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.

Parameters
properthe proper name of the attribute
fallbackepoch to return when attribute is NULL

◆ IMPL_ELEMENT_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.

Parameters
cnamethe name of the XMLObject specialization
namespaceURIthe XML namespace of the default associated element
namespacePrefixthe XML namespace prefix of the default associated element

◆ IMPL_ID_ATTRIB

#define IMPL_ID_ATTRIB (   proper)
Value:
IMPL_XMLOBJECT_ATTRIB(proper,XMLCh) \
const XMLCh* getXMLID() const { \
return m_##proper; \
}
#define IMPL_XMLOBJECT_ATTRIB(proper, type)
Implements get/set methods and a private member for a typed XML attribute.
Definition: base.h:694

Implements get/set methods and a private member for a string XML attribute, plus a getXMLID override.

Parameters
properthe proper name of the attribute

◆ IMPL_ID_ATTRIB_EX

#define IMPL_ID_ATTRIB_EX (   proper,
  ucase,
  namespaceURI 
)
Value:
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(); \
}
#define IMPL_XMLOBJECT_ATTRIB(proper, type)
Implements get/set methods and a private member for a typed XML attribute.
Definition: base.h:694

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.

Parameters
properthe proper name of the attribute
ucasethe upcased name of the attribute
namespaceURIthe XML namespace of the attribute

◆ IMPL_INTEGER_ATTRIB

#define IMPL_INTEGER_ATTRIB (   proper)
Value:
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.

Parameters
properthe proper name of the attribute

◆ IMPL_STRING_ATTRIB

#define IMPL_STRING_ATTRIB (   proper)    IMPL_XMLOBJECT_ATTRIB(proper,XMLCh)

Implements get/set methods and a private member for a string XML attribute.

Parameters
properthe proper name of the attribute

◆ IMPL_TYPE_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.

Parameters
cnamethe name of the XMLObject specialization
namespaceURIthe XML namespace of the default associated element
namespacePrefixthe XML namespace prefix of the default associated element

◆ IMPL_TYPED_CHILD

#define IMPL_TYPED_CHILD (   proper)
Value:
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.

Parameters
properthe proper name of the child type

◆ IMPL_TYPED_CHILDREN

#define IMPL_TYPED_CHILDREN (   proper,
  fence 
)
Value:
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; \
}
#define VectorOf(type)
Shorthand for an XMLObjectChildrenList wrapped around a vector.
Definition: XMLObjectChildrenList.h:40

Implements get method and a private vector member for a typed XML child collection.

Parameters
properthe proper name of the child type
fenceinsertion fence for new objects of the child collection in backing list

◆ IMPL_TYPED_FOREIGN_CHILD

#define IMPL_TYPED_FOREIGN_CHILD (   proper,
  ns 
)
Value:
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.

Parameters
properthe proper name of the child type
nsthe C++ namespace for the type

◆ IMPL_TYPED_FOREIGN_CHILDREN

#define IMPL_TYPED_FOREIGN_CHILDREN (   proper,
  ns,
  fence 
)
Value:
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; \
}
#define VectorOf(type)
Shorthand for an XMLObjectChildrenList wrapped around a vector.
Definition: XMLObjectChildrenList.h:40

Implements get method and a private vector member for a typed XML child collection in a foreign namespace.

Parameters
properthe proper name of the child type
nsthe C++ namespace for the type
fenceinsertion fence for new objects of the child collection in backing list

◆ IMPL_XMLOBJECT_ATTRIB

#define IMPL_XMLOBJECT_ATTRIB (   proper,
  type 
)
Value:
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.

Parameters
properthe proper name of the attribute
typethe attribute's data type

◆ IMPL_XMLOBJECT_CHILD

#define IMPL_XMLOBJECT_CHILD (   proper)
Value:
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; \
}
Object that represents an XML Element that has been unmarshalled into this C++ object.
Definition: XMLObject.h:59

Implements get/set methods and a private list iterator member for a generic XML child object.

Parameters
properthe proper name of the child

◆ IMPL_XMLOBJECT_CHILDREN

#define IMPL_XMLOBJECT_CHILDREN (   proper,
  fence 
)
Value:
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; \
}
#define VectorOf(type)
Shorthand for an XMLObjectChildrenList wrapped around a vector.
Definition: XMLObjectChildrenList.h:40
Object that represents an XML Element that has been unmarshalled into this C++ object.
Definition: XMLObject.h:59

Implements get method and a private vector member for a generic XML child collection.

Parameters
properthe proper name of the child
fenceinsertion fence for new objects of the child collection in backing list

◆ IMPL_XMLOBJECT_CLONE

#define IMPL_XMLOBJECT_CLONE (   cname)
Value:
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); \
}
void clone(const InputSequence &in, OutputSequence &out)
Template function for cloning a sequence of XMLObjects.
Definition: base.h:1951
XMLObject * clone() const
Creates a copy of the object, along with all of its children.

Implements cloning methods for an XMLObject specialization implementation class.

Parameters
cnamethe name of the XMLObject specialization

◆ IMPL_XMLOBJECT_CLONE2

#define IMPL_XMLOBJECT_CLONE2 (   cname,
  base 
)
Value:
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); \
}
void clone(const InputSequence &in, OutputSequence &out)
Template function for cloning a sequence of XMLObjects.
Definition: base.h:1951
XMLObject * clone() const
Creates a copy of the object, along with all of its children.

Implements cloning methods for an XMLObject specialization implementation class that must override a base class clone method.

Parameters
cnamethe name of the XMLObject specialization
basename of base type.

◆ IMPL_XMLOBJECT_CLONE_EX

#define IMPL_XMLOBJECT_CLONE_EX (   cname)
Value:
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(); \
}
void clone(const InputSequence &in, OutputSequence &out)
Template function for cloning a sequence of XMLObjects.
Definition: base.h:1951
XMLObject * clone() const
Creates a copy of the object, along with all of its children.

Implements cloning methods for an XMLObject specialization implementation class that needs two stage duplication to avoid invoking virtual methods during construction.

Parameters
cnamethe name of the XMLObject specialization

◆ IMPL_XMLOBJECT_CLONE_EX2

#define IMPL_XMLOBJECT_CLONE_EX2 (   cname,
  base 
)
Value:
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(); \
}
void clone(const InputSequence &in, OutputSequence &out)
Template function for cloning a sequence of XMLObjects.
Definition: base.h:1951
XMLObject * clone() const
Creates a copy of the object, along with all of its children.

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.

Parameters
cnamethe name of the XMLObject specialization
basename of base type

◆ IMPL_XMLOBJECT_FOREIGN_ATTRIB

#define IMPL_XMLOBJECT_FOREIGN_ATTRIB (   proper,
  type 
)
Value:
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.

Parameters
properthe proper name of the attribute
typethe attribute's data type

◆ IMPL_XMLOBJECTBUILDER

#define IMPL_XMLOBJECTBUILDER (   cname)
Value:
cname* 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); \
}
A data structure for encapsulating XML QNames.
Definition: QName.h:44

Implements the standard XMLObjectBuilder specialization function.

Parameters
cnamethe name of the XMLObject specialization

◆ MAKE_NONCOPYABLE

#define MAKE_NONCOPYABLE (   type)
Value:
private: \
type(const type&); \
type& operator=(const type&)

Blocks copy c'tor and assignment operator for a class.

◆ MARSHALL_BOOLEAN_ATTRIB

#define MARSHALL_BOOLEAN_ATTRIB (   proper,
  ucase,
  namespaceURI 
)
Value:
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; \
}
const XMLCh XML_ONE[]
XML "1" boolean constant.
const XMLCh XML_TRUE[]
XML "true" boolean constant.
const XMLCh XML_FALSE[]
XML "false" boolean constant.
const XMLCh XML_ZERO[]
XML "0" boolean constant.

Implements marshalling for a boolean attribute.

Parameters
properthe proper name of the attribute
ucasethe upcased name of the attribute
namespaceURIthe XML namespace of the attribute

◆ MARSHALL_DATETIME_ATTRIB

#define MARSHALL_DATETIME_ATTRIB (   proper,
  ucase,
  namespaceURI 
)
Value:
if (m_##proper) { \
domElement->setAttributeNS(namespaceURI, ucase##_ATTRIB_NAME, m_##proper->getRawData()); \
}

Implements marshalling for a DateTime attribute.

Parameters
properthe proper name of the attribute
ucasethe upcased name of the attribute
namespaceURIthe XML namespace of the attribute

◆ MARSHALL_ID_ATTRIB

#define MARSHALL_ID_ATTRIB (   proper,
  ucase,
  namespaceURI 
)
Value:
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.

Parameters
properthe proper name of the attribute
ucasethe upcased name of the attribute
namespaceURIthe XML namespace of the attribute

◆ MARSHALL_INTEGER_ATTRIB

#define MARSHALL_INTEGER_ATTRIB (   proper,
  ucase,
  namespaceURI 
)
Value:
if (m_##proper && *m_##proper) { \
domElement->setAttributeNS(namespaceURI, ucase##_ATTRIB_NAME, m_##proper); \
}

Implements marshalling for an integer attribute.

Parameters
properthe proper name of the attribute
ucasethe upcased name of the attribute
namespaceURIthe XML namespace of the attribute

◆ MARSHALL_QNAME_ATTRIB

#define MARSHALL_QNAME_ATTRIB (   proper,
  ucase,
  namespaceURI 
)
Value:
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.

Parameters
properthe proper name of the attribute
ucasethe upcased name of the attribute
namespaceURIthe XML namespace of the attribute

◆ MARSHALL_STRING_ATTRIB

#define MARSHALL_STRING_ATTRIB (   proper,
  ucase,
  namespaceURI 
)
Value:
if (m_##proper && *m_##proper) { \
domElement->setAttributeNS(namespaceURI, ucase##_ATTRIB_NAME, m_##proper); \
}

Implements marshalling for a string attribute.

Parameters
properthe proper name of the attribute
ucasethe upcased name of the attribute
namespaceURIthe XML namespace of the attribute

◆ PROC_BOOLEAN_ATTRIB

#define PROC_BOOLEAN_ATTRIB (   proper,
  ucase,
  namespaceURI 
)    PROC_STRING_ATTRIB(proper,ucase,namespaceURI)

Implements unmarshalling process branch for a boolean attribute.

Parameters
properthe proper name of the attribute
ucasethe upcased name of the attribute
namespaceURIthe XML namespace of the attribute

◆ PROC_DATETIME_ATTRIB

#define PROC_DATETIME_ATTRIB (   proper,
  ucase,
  namespaceURI 
)    PROC_STRING_ATTRIB(proper,ucase,namespaceURI)

Implements unmarshalling process branch for a DateTime attribute.

Parameters
properthe proper name of the attribute
ucasethe upcased name of the attribute
namespaceURIthe XML namespace of the attribute

◆ PROC_ID_ATTRIB

#define PROC_ID_ATTRIB (   proper,
  ucase,
  namespaceURI 
)
Value:
if (xmltooling::XMLHelper::isNodeNamed(attribute, namespaceURI, ucase##_ATTRIB_NAME)) { \
set##proper(attribute->getValue()); \
attribute->getOwnerElement()->setIdAttributeNode(attribute, true); \
return; \
}
static bool isNodeNamed(const xercesc::DOMNode *n, const XMLCh *ns, const XMLCh *local)
Checks the qualified name of a node.

Implements unmarshalling process branch for an ID attribute.

Parameters
properthe proper name of the attribute
ucasethe upcased name of the attribute
namespaceURIthe XML namespace of the attribute

◆ PROC_INTEGER_ATTRIB

#define PROC_INTEGER_ATTRIB (   proper,
  ucase,
  namespaceURI 
)    PROC_STRING_ATTRIB(proper,ucase,namespaceURI)

Implements unmarshalling process branch for an integer attribute.

Parameters
properthe proper name of the attribute
ucasethe upcased name of the attribute
namespaceURIthe XML namespace of the attribute

◆ PROC_QNAME_ATTRIB

#define PROC_QNAME_ATTRIB (   proper,
  ucase,
  namespaceURI 
)
Value:
if (xmltooling::XMLHelper::isNodeNamed(attribute, namespaceURI, ucase##_ATTRIB_NAME)) { \
boost::scoped_ptr<xmltooling::QName> q(xmltooling::XMLHelper::getNodeValueAsQName(attribute)); \
set##proper(q.get()); \
return; \
}
static bool isNodeNamed(const xercesc::DOMNode *n, const XMLCh *ns, const XMLCh *local)
Checks the qualified name of a node.
static QName * getNodeValueAsQName(const xercesc::DOMNode *domNode)
Constructs a QName from a node&#39;s value.

Implements unmarshalling process branch for a DateTime attribute.

Parameters
properthe proper name of the attribute
ucasethe upcased name of the attribute
namespaceURIthe XML namespace of the attribute

◆ PROC_STRING_ATTRIB

#define PROC_STRING_ATTRIB (   proper,
  ucase,
  namespaceURI 
)
Value:
if (xmltooling::XMLHelper::isNodeNamed(attribute, namespaceURI, ucase##_ATTRIB_NAME)) { \
set##proper(attribute->getValue()); \
return; \
}
static bool isNodeNamed(const xercesc::DOMNode *n, const XMLCh *ns, const XMLCh *local)
Checks the qualified name of a node.

Implements unmarshalling process branch for a string attribute.

Parameters
properthe proper name of the attribute
ucasethe upcased name of the attribute
namespaceURIthe XML namespace of the attribute

◆ PROC_TYPED_CHILD

#define PROC_TYPED_CHILD (   proper,
  namespaceURI,
  force 
)
Value:
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; \
} \
}
static bool isNodeNamed(const xercesc::DOMNode *n, const XMLCh *ns, const XMLCh *local)
Checks the qualified name of a node.

Implements unmarshalling process branch for typed child singleton element.

Parameters
properthe proper name of the child type
namespaceURIthe XML namespace of the child element
forcebypass use of hint and just cast down to check child

◆ PROC_TYPED_CHILDREN

#define PROC_TYPED_CHILDREN (   proper,
  namespaceURI,
  force 
)
Value:
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; \
} \
}
static bool isNodeNamed(const xercesc::DOMNode *n, const XMLCh *ns, const XMLCh *local)
Checks the qualified name of a node.

Implements unmarshalling process branch for typed child collection element.

Parameters
properthe proper name of the child type
namespaceURIthe XML namespace of the child element
forcebypass use of hint and just cast down to check child

◆ PROC_TYPED_FOREIGN_CHILD

#define PROC_TYPED_FOREIGN_CHILD (   proper,
  ns,
  namespaceURI,
  force 
)
Value:
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; \
} \
}
static bool isNodeNamed(const xercesc::DOMNode *n, const XMLCh *ns, const XMLCh *local)
Checks the qualified name of a node.

Implements unmarshalling process branch for typed child singleton element in a foreign namespace.

Parameters
properthe proper name of the child type
nsthe C++ namespace for the type
namespaceURIthe XML namespace of the child element
forcebypass use of hint and just cast down to check child

◆ PROC_TYPED_FOREIGN_CHILDREN

#define PROC_TYPED_FOREIGN_CHILDREN (   proper,
  ns,
  namespaceURI,
  force 
)
Value:
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; \
} \
}
static bool isNodeNamed(const xercesc::DOMNode *n, const XMLCh *ns, const XMLCh *local)
Checks the qualified name of a node.

Implements unmarshalling process branch for typed child collection element in a foreign namespace.

Parameters
properthe proper name of the child type
nsthe C++ namespace for the type
namespaceURIthe XML namespace of the child element
forcebypass use of hint and just cast down to check child

◆ PROC_XMLOBJECT_CHILD

#define PROC_XMLOBJECT_CHILD (   proper,
  namespaceURI 
)
Value:
if (xmltooling::XMLHelper::isNodeNamed(root,namespaceURI,proper::LOCAL_NAME)) { \
if (!m_##proper) { \
childXMLObject->setParent(this); \
*m_pos_##proper = m_##proper = childXMLObject; \
return; \
} \
}
static bool isNodeNamed(const xercesc::DOMNode *n, const XMLCh *ns, const XMLCh *local)
Checks the qualified name of a node.

Implements unmarshalling process branch for a generic child singleton element.

Parameters
properthe proper name of the child type
namespaceURIthe XML namespace of the child element

◆ XMLOBJECTVALIDATOR_CHECKTYPE

#define XMLOBJECTVALIDATOR_CHECKTYPE (   cname)
Value:
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()))
Wrapper around a variable number of arguments.
Definition: exceptions.h:93
Exceptions during object validation.
Definition: exceptions.h:363

Validator code that checks the object type.

Parameters
cnamethe name of the XMLObject specialization

◆ XMLOBJECTVALIDATOR_NONEMPTY

#define XMLOBJECTVALIDATOR_NONEMPTY (   cname,
  proper 
)
Value:
if (ptr->get##proper##s().empty()) \
throw xmltooling::ValidationException(#cname" must have at least one "#proper".")
Exceptions during object validation.
Definition: exceptions.h:363

Validator code that checks for a non-empty collection.

Parameters
cnamethe name of the XMLObject specialization
properthe proper name of the collection item

◆ XMLOBJECTVALIDATOR_NONEORBOTH

#define XMLOBJECTVALIDATOR_NONEORBOTH (   cname,
  proper1,
  proper2 
)
Value:
if ((ptr->get##proper1() && !ptr->get##proper2()) || (!ptr->get##proper1() && ptr->get##proper2())) \
throw xmltooling::ValidationException(#cname" cannot have "#proper1" without "#proper2".")
Exceptions during object validation.
Definition: exceptions.h:363

Validator code that checks a co-constraint (if one present, the other must be) between a pair of attributes, content, or singletons.

Parameters
cnamethe name of the XMLObject specialization
proper1the proper name of the first attribute, content, or singleton member
proper2the proper name of the second attribute, content, or singleton member

◆ XMLOBJECTVALIDATOR_ONEOF

#define XMLOBJECTVALIDATOR_ONEOF (   cname,
  proper1,
  proper2 
)
Value:
if (!ptr->get##proper1() && !ptr->get##proper2()) \
throw xmltooling::ValidationException(#cname" must have "#proper1" or "#proper2".")
Exceptions during object validation.
Definition: exceptions.h:363

Validator code that checks for one of a pair of required attributes, content, or singletons.

Parameters
cnamethe name of the XMLObject specialization
proper1the proper name of the first attribute, content, or singleton member
proper2the proper name of the second attribute, content, or singleton member

◆ XMLOBJECTVALIDATOR_ONEOF3

#define XMLOBJECTVALIDATOR_ONEOF3 (   cname,
  proper1,
  proper2,
  proper3 
)
Value:
if (!ptr->get##proper1() && !ptr->get##proper2() && !ptr->get##proper3()) \
throw xmltooling::ValidationException(#cname" must have "#proper1", "#proper2", or "#proper3".")
Exceptions during object validation.
Definition: exceptions.h:363

Validator code that checks for one of a set of three required attributes, content, or singletons.

Parameters
cnamethe name of the XMLObject specialization
proper1the proper name of the first attribute, content, or singleton member
proper2the proper name of the second attribute, content, or singleton member
proper3the proper name of the third attribute, content, or singleton member

◆ XMLOBJECTVALIDATOR_ONLYONEOF

#define XMLOBJECTVALIDATOR_ONLYONEOF (   cname,
  proper1,
  proper2 
)
Value:
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.")
Exceptions during object validation.
Definition: exceptions.h:363

Validator code that checks for one of a pair of required attributes, content, or singletons, but disallows both.

Parameters
cnamethe name of the XMLObject specialization
proper1the proper name of the first attribute, content, or singleton member
proper2the proper name of the second attribute, content, or singleton member

◆ XMLOBJECTVALIDATOR_ONLYONEOF3

#define XMLOBJECTVALIDATOR_ONLYONEOF3 (   cname,
  proper1,
  proper2,
  proper3 
)
Value:
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".")
Exceptions during object validation.
Definition: exceptions.h:363

Validator code that checks for one of a set of three required attributes, content, or singletons but disallows more than one.

Parameters
cnamethe name of the XMLObject specialization
proper1the proper name of the first attribute, content, or singleton member
proper2the proper name of the second attribute, content, or singleton member
proper3the proper name of the third attribute, content, or singleton member

◆ XMLOBJECTVALIDATOR_REQUIRE

#define XMLOBJECTVALIDATOR_REQUIRE (   cname,
  proper 
)
Value:
if (!ptr->get##proper()) \
throw xmltooling::ValidationException(#cname" must have "#proper".")
Exceptions during object validation.
Definition: exceptions.h:363

Validator code that checks for a required attribute, content, or singleton.

Parameters
cnamethe name of the XMLObject specialization
properthe proper name of the attribute, content, or singleton member

◆ XMLOBJECTVALIDATOR_REQUIRE_INTEGER

#define XMLOBJECTVALIDATOR_REQUIRE_INTEGER (   cname,
  proper 
)
Value:
if (!ptr->get##proper().first) \
throw xmltooling::ValidationException(#cname" must have "#proper".")
Exceptions during object validation.
Definition: exceptions.h:363

Validator code that checks for a required integer attribute.

Parameters
cnamethe name of the XMLObject specialization
properthe proper name of the attribute, content, or singleton member

◆ XMLOBJECTVALIDATOR_SIMPLE

#define XMLOBJECTVALIDATOR_SIMPLE (   linkage,
  cname 
)
Value:
BEGIN_XMLOBJECTVALIDATOR(linkage,cname); \
XMLOBJECTVALIDATOR_REQUIRE(cname,TextContent); \
END_XMLOBJECTVALIDATOR
#define BEGIN_XMLOBJECTVALIDATOR(linkage, cname)
Begins the declaration of a Schema Validator specialization.
Definition: base.h:1780

Declares/defines a Validator specialization that checks object type and a non-empty simple content model.

Parameters
linkagelinkage specifier for the class
cnamethe name of the XMLObject specialization