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

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

## 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[]
xmltooling::clone
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

  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

## 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[]

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

  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

## 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[]

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

  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

## 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[]

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

  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

## 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[]

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

  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

## 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
xmltooling::ConcreteXMLObjectBuilder
A factory interface for obtaining XMLObjects.
Definition ConcreteXMLObjectBuilder.h:39
xmltooling::ConcreteXMLObjectBuilder::buildObject
virtual XMLObject * buildObject() const =0
Creates an empty XMLObject with a defaulted element name and/or type.
xmltooling::QName
A data structure for encapsulating XML QNames.
Definition QName.h:45

Begins the declaration of an XMLObjectBuilder specialization.

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

Parameters

  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

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

Begins the declaration of a Schema Validator specialization.

Parameters

  linkage | linkage specifier for the class
  cname | the 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()));

Begins the declaration of a Schema Validator specialization subclass.

Parameters

  linkage | linkage specifier for the class
  cname | the base name of the Validator specialization
  base | base 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

  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

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

  proper | the proper name of the attribute
  upcased | the upcased name of the attribute

## DECL_ELEMENT_QNAME

#define DECL_ELEMENT_QNAME

Value:
public: \
XMLTOOLING_DOXYGEN(Element QName) \
static xmltooling::QName ELEMENT_QNAME

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

  proper | the proper name of the attribute
  upcased | the 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

  proper | the proper name of the attribute
  upcased | the 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

  proper | the proper name of the attribute
  upcased | the 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

  proper | the 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

  proper | the proper name of the child type
  ns | the 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

  proper | the proper name of the attribute
  upcased | the upcased name of the attribute
  type | the 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

  proper | the proper name of the attribute
  upcased | the 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); \
}
xmltooling::auto_ptr_XMLCh
A minimal auto_ptr-like class that can copy or transcode a buffer into 16-bit Unicode and free the re...
Definition unicode.h:160

Declares aliased get/set methods for named integer XML element content.

Parameters

  proper | the 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

  proper | the 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

  proper | the proper name of the attribute
  upcased | the upcased name of the attribute

## DECL_TYPE_QNAME

#define DECL_TYPE_QNAME

Value:
public: \
XMLTOOLING_DOXYGEN(Type QName) \
static xmltooling::QName TYPE_QNAME

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

  proper | the 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
VectorOf
#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

  proper | the 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

  proper | the proper name of the child type
  ns | the 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

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

Parameters

  proper | the proper name of the child type
  ns | the 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

  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

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

  proper | the proper name of the attribute
  upcased | the upcased name of the attribute
  type | the 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

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

Parameters

  proper | the 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

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

Parameters

  proper | the 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
BEGIN_XMLOBJECT
#define BEGIN_XMLOBJECT(linkage, cname, base, desc)
Begins the declaration of an XMLObject specialization.
Definition base.h:369
END_XMLOBJECT
#define END_XMLOBJECT
Ends the declaration of an XMLObject specialization.
Definition base.h:482

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

Parameters

  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

## 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
BEGIN_XMLOBJECTBUILDER
#define BEGIN_XMLOBJECTBUILDER(linkage, cname, namespaceURI, namespacePrefix)
Begins the declaration of an XMLObjectBuilder specialization.
Definition base.h:1654
END_XMLOBJECTBUILDER
#define END_XMLOBJECTBUILDER
Ends the declaration of an XMLObjectBuilder specialization.
Definition base.h:1671
xmltooling::XMLObjectException
Exceptions in basic object usage.
Definition exceptions.h:357

Declares a generic XMLObjectBuilder specialization.

Parameters

  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

## DECL_XMLOBJECTIMPL_SIMPLE

#define DECL_XMLOBJECTIMPL_SIMPLE | ( |  | linkage,
|  |  | cname )

Value:
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) \
}
xmltooling::AbstractDOMCachingXMLObject
AbstractXMLObject mixin that implements DOM caching.
Definition AbstractDOMCachingXMLObject.h:44
xmltooling::AbstractSimpleElement
AbstractXMLObject mixin that implements a simple string-based content model.
Definition AbstractSimpleElement.h:44
xmltooling::AbstractXMLObject
An abstract implementation of XMLObject.
Definition AbstractXMLObject.h:52
xmltooling::AbstractXMLObjectMarshaller
A mix-in to implement object marshalling with DOM reuse.
Definition AbstractXMLObjectMarshaller.h:43
xmltooling::AbstractXMLObjectUnmarshaller
A mix-in to implement object unmarshalling.
Definition AbstractXMLObjectUnmarshaller.h:43

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

Parameters

  linkage | linkage specifier for the class
  cname | the name of the XMLObject specialization

## IMPL_BOOLEAN_ATTRIB

#define IMPL_BOOLEAN_ATTRIB | ( |  | proper | ) |

Value:
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; \
} \
}
xmlconstants::xmltooling_bool_t
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

  proper | the 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())

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

  proper | the 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))] \
)

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

  proper | the proper name of the child type to clone
  ns | the 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))] \
)

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())

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

  proper | the 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))] \
)

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

  proper | the proper name of the attribute
  fallback | epoch 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

  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

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

  proper | the proper name of the attribute
  fallback | epoch 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

  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

## IMPL_ID_ATTRIB

#define IMPL_ID_ATTRIB | ( |  | proper | ) |

Value:
IMPL_XMLOBJECT_ATTRIB(proper,XMLCh) \
const XMLCh* getXMLID() const { \
return m_##proper; \
}
IMPL_XMLOBJECT_ATTRIB
#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

  proper | the 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(); \
}

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

  proper | the proper name of the attribute
  ucase | the upcased name of the attribute
  namespaceURI | the 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

  proper | the 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

  proper | the 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

  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

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

  proper | the 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; \
}

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

Parameters

  proper | the proper name of the child type
  fence | insertion 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

  proper | the proper name of the child type
  ns | the 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; \
}

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

Parameters

  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

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

  proper | the proper name of the attribute
  type | the 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; \
}

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

Parameters

  proper | the 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; \
}

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

Parameters

  proper | the proper name of the child
  fence | insertion 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); \
}
xmltooling::AbstractDOMCachingXMLObject::clone
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

  cname | the 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); \
}

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

Parameters

  cname | the name of the XMLObject specialization
  base | name 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(); \
}

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

Parameters

  cname | the 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(); \
}

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

  cname | the name of the XMLObject specialization
  base | name 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

  proper | the proper name of the attribute
  type | the 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); \
}

Implements the standard XMLObjectBuilder specialization function.

Parameters

  cname | the 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; \
}
xmlconstants::XML_TRUE
const XMLCh XML_TRUE[]
XML "true" boolean constant.
xmlconstants::XML_FALSE
const XMLCh XML_FALSE[]
XML "false" boolean constant.
xmlconstants::XML_ZERO
const XMLCh XML_ZERO[]
XML "0" boolean constant.
xmlconstants::XML_ONE
const XMLCh XML_ONE[]
XML "1" boolean constant.

Implements marshalling for a boolean attribute.

Parameters

  proper | the proper name of the attribute
  ucase | the upcased name of the attribute
  namespaceURI | the 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

  proper | the proper name of the attribute
  ucase | the upcased name of the attribute
  namespaceURI | the 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

  proper | the proper name of the attribute
  ucase | the upcased name of the attribute
  namespaceURI | the 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

  proper | the proper name of the attribute
  ucase | the upcased name of the attribute
  namespaceURI | the 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

  proper | the proper name of the attribute
  ucase | the upcased name of the attribute
  namespaceURI | the 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

  proper | the proper name of the attribute
  ucase | the upcased name of the attribute
  namespaceURI | the 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

  proper | the proper name of the attribute
  ucase | the upcased name of the attribute
  namespaceURI | the 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

  proper | the proper name of the attribute
  ucase | the upcased name of the attribute
  namespaceURI | the 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; \
}
xmltooling::XMLHelper::isNodeNamed
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

  proper | the proper name of the attribute
  ucase | the upcased name of the attribute
  namespaceURI | the 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

  proper | the proper name of the attribute
  ucase | the upcased name of the attribute
  namespaceURI | the 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; \
}
xmltooling::XMLHelper::getNodeValueAsQName
static QName * getNodeValueAsQName(const xercesc::DOMNode *domNode)
Constructs a QName from a node's value.

Implements unmarshalling process branch for a DateTime attribute.

Parameters

  proper | the proper name of the attribute
  ucase | the upcased name of the attribute
  namespaceURI | the 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; \
}

Implements unmarshalling process branch for a string attribute.

Parameters

  proper | the proper name of the attribute
  ucase | the upcased name of the attribute
  namespaceURI | the 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; \
} \
}

Implements unmarshalling process branch for typed child singleton element.

Parameters

  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

## 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; \
} \
}

Implements unmarshalling process branch for typed child collection element.

Parameters

  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

## 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; \
} \
}

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

Parameters

  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

## 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; \
} \
}

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

Parameters

  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

## 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; \
} \
}

Implements unmarshalling process branch for a generic child singleton element.

Parameters

  proper | the proper name of the child type
  namespaceURI | the 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()))

Validator code that checks the object type.

Parameters

  cname | the 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".")

Validator code that checks for a non-empty collection.

Parameters

  cname | the name of the XMLObject specialization
  proper | the 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".")

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

Parameters

  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

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

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

Parameters

  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

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

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

Parameters

  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

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

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

Parameters

  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

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

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

Parameters

  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

## XMLOBJECTVALIDATOR_REQUIRE

#define XMLOBJECTVALIDATOR_REQUIRE | ( |  | cname,
|  |  | proper )

Value:
if (!ptr->get##proper()) \
throw xmltooling::ValidationException(#cname" must have "#proper".")

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

Parameters

  cname | the name of the XMLObject specialization
  proper | the 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".")

Validator code that checks for a required integer attribute.

Parameters

  cname | the name of the XMLObject specialization
  proper | the 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
END_XMLOBJECTVALIDATOR
#define END_XMLOBJECTVALIDATOR
Ends the declaration of a Validator specialization.
Definition base.h:1812
BEGIN_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

  linkage | linkage specifier for the class
  cname | the name of the XMLObject specialization