// Copyright (c) 2005-2014 Code Synthesis Tools CC
//
// This program was generated by CodeSynthesis XSD, an XML Schema to
// C++ data binding compiler.
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
// published by the Free Software Foundation.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
//
// In addition, as a special exception, Code Synthesis Tools CC gives
// permission to link this program with the Xerces-C++ library (or with
// modified versions of Xerces-C++ that use the same license as Xerces-C++),
// and distribute linked combinations including the two. You must obey
// the GNU General Public License version 2 in all respects for all of
// the code used other than Xerces-C++. If you modify this copy of the
// program, you may extend this exception to your version of the program,
// but you are not obligated to do so. If you do not wish to do so, delete
// this exception statement from your version.
//
// Furthermore, Code Synthesis Tools CC makes a special exception for
// the Free/Libre and Open Source Software (FLOSS) which is described
// in the accompanying FLOSSE file.
//

#ifndef CXX_WORK_XSD_4_0_0_XSD_TESTS_CXX_TREE_NAMING_JAVA_TEST_HXX
#define CXX_WORK_XSD_4_0_0_XSD_TESTS_CXX_TREE_NAMING_JAVA_TEST_HXX

#ifndef XSD_USE_CHAR
#define XSD_USE_CHAR
#endif

#ifndef XSD_CXX_TREE_USE_CHAR
#define XSD_CXX_TREE_USE_CHAR
#endif

// Begin prologue.
//
//
// End prologue.

#include <xsd/cxx/config.hxx>

#if (XSD_INT_VERSION != 4000000L)
#error XSD runtime version mismatch
#endif

#include <xsd/cxx/pre.hxx>

#include <xsd/cxx/xml/char-utf8.hxx>

#include <xsd/cxx/tree/exceptions.hxx>
#include <xsd/cxx/tree/elements.hxx>
#include <xsd/cxx/tree/types.hxx>

#include <xsd/cxx/xml/error-handler.hxx>

#include <xsd/cxx/xml/dom/auto-ptr.hxx>

#include <xsd/cxx/tree/parsing.hxx>
#include <xsd/cxx/tree/parsing/byte.hxx>
#include <xsd/cxx/tree/parsing/unsigned-byte.hxx>
#include <xsd/cxx/tree/parsing/short.hxx>
#include <xsd/cxx/tree/parsing/unsigned-short.hxx>
#include <xsd/cxx/tree/parsing/int.hxx>
#include <xsd/cxx/tree/parsing/unsigned-int.hxx>
#include <xsd/cxx/tree/parsing/long.hxx>
#include <xsd/cxx/tree/parsing/unsigned-long.hxx>
#include <xsd/cxx/tree/parsing/boolean.hxx>
#include <xsd/cxx/tree/parsing/float.hxx>
#include <xsd/cxx/tree/parsing/double.hxx>
#include <xsd/cxx/tree/parsing/decimal.hxx>

#include <xsd/cxx/xml/dom/serialization-header.hxx>
#include <xsd/cxx/tree/serialization.hxx>
#include <xsd/cxx/tree/serialization/byte.hxx>
#include <xsd/cxx/tree/serialization/unsigned-byte.hxx>
#include <xsd/cxx/tree/serialization/short.hxx>
#include <xsd/cxx/tree/serialization/unsigned-short.hxx>
#include <xsd/cxx/tree/serialization/int.hxx>
#include <xsd/cxx/tree/serialization/unsigned-int.hxx>
#include <xsd/cxx/tree/serialization/long.hxx>
#include <xsd/cxx/tree/serialization/unsigned-long.hxx>
#include <xsd/cxx/tree/serialization/boolean.hxx>
#include <xsd/cxx/tree/serialization/float.hxx>
#include <xsd/cxx/tree/serialization/double.hxx>
#include <xsd/cxx/tree/serialization/decimal.hxx>

#include <xsd/cxx/tree/std-ostream-operators.hxx>

namespace xml_schema
{
  // anyType and anySimpleType.
  //
  typedef ::xsd::cxx::tree::type Type;
  typedef ::xsd::cxx::tree::simple_type< char, Type > SimpleType;
  typedef ::xsd::cxx::tree::type Container;

  // 8-bit
  //
  typedef signed char Byte;
  typedef unsigned char UnsignedByte;

  // 16-bit
  //
  typedef short Short;
  typedef unsigned short UnsignedShort;

  // 32-bit
  //
  typedef int Int;
  typedef unsigned int UnsignedInt;

  // 64-bit
  //
  typedef long long Long;
  typedef unsigned long long UnsignedLong;

  // Supposed to be arbitrary-length integral types.
  //
  typedef long long Integer;
  typedef long long NonPositiveInteger;
  typedef unsigned long long NonNegativeInteger;
  typedef unsigned long long PositiveInteger;
  typedef long long NegativeInteger;

  // Boolean.
  //
  typedef bool Boolean;

  // Floating-point types.
  //
  typedef float Float;
  typedef double Double;
  typedef double Decimal;

  // String types.
  //
  typedef ::xsd::cxx::tree::string< char, SimpleType > String;
  typedef ::xsd::cxx::tree::normalized_string< char, String > NormalizedString;
  typedef ::xsd::cxx::tree::token< char, NormalizedString > Token;
  typedef ::xsd::cxx::tree::name< char, Token > Name;
  typedef ::xsd::cxx::tree::nmtoken< char, Token > Nmtoken;
  typedef ::xsd::cxx::tree::nmtokens< char, SimpleType, Nmtoken > Nmtokens;
  typedef ::xsd::cxx::tree::ncname< char, Name > Ncname;
  typedef ::xsd::cxx::tree::language< char, Token > Language;

  // ID/IDREF.
  //
  typedef ::xsd::cxx::tree::id< char, Ncname > Id;
  typedef ::xsd::cxx::tree::idref< char, Ncname, Type > Idref;
  typedef ::xsd::cxx::tree::idrefs< char, SimpleType, Idref > Idrefs;

  // URI.
  //
  typedef ::xsd::cxx::tree::uri< char, SimpleType > Uri;

  // Qualified name.
  //
  typedef ::xsd::cxx::tree::qname< char, SimpleType, Uri, Ncname > Qname;

  // Binary.
  //
  typedef ::xsd::cxx::tree::buffer< char > Buffer;
  typedef ::xsd::cxx::tree::base64_binary< char, SimpleType > Base64Binary;
  typedef ::xsd::cxx::tree::hex_binary< char, SimpleType > HexBinary;

  // Date/time.
  //
  typedef ::xsd::cxx::tree::time_zone TimeZone;
  typedef ::xsd::cxx::tree::date< char, SimpleType > Date;
  typedef ::xsd::cxx::tree::date_time< char, SimpleType > DateTime;
  typedef ::xsd::cxx::tree::duration< char, SimpleType > Duration;
  typedef ::xsd::cxx::tree::gday< char, SimpleType > Gday;
  typedef ::xsd::cxx::tree::gmonth< char, SimpleType > Gmonth;
  typedef ::xsd::cxx::tree::gmonth_day< char, SimpleType > GmonthDay;
  typedef ::xsd::cxx::tree::gyear< char, SimpleType > Gyear;
  typedef ::xsd::cxx::tree::gyear_month< char, SimpleType > GyearMonth;
  typedef ::xsd::cxx::tree::time< char, SimpleType > Time;

  // Entity.
  //
  typedef ::xsd::cxx::tree::entity< char, Ncname > Entity;
  typedef ::xsd::cxx::tree::entities< char, SimpleType, Entity > Entities;

  typedef ::xsd::cxx::tree::content_order ContentOrder;
  // Namespace information and list stream. Used in
  // serialization functions.
  //
  typedef ::xsd::cxx::xml::dom::namespace_info< char > NamespaceInfo;
  typedef ::xsd::cxx::xml::dom::namespace_infomap< char > NamespaceInfomap;
  typedef ::xsd::cxx::tree::list_stream< char > ListStream;
  typedef ::xsd::cxx::tree::as_double< Double > AsDouble;
  typedef ::xsd::cxx::tree::as_decimal< Decimal > AsDecimal;
  typedef ::xsd::cxx::tree::facet Facet;

  // Flags and properties.
  //
  typedef ::xsd::cxx::tree::flags Flags;
  typedef ::xsd::cxx::tree::properties< char > Properties;

  // Parsing/serialization diagnostics.
  //
  typedef ::xsd::cxx::tree::severity Severity;
  typedef ::xsd::cxx::tree::error< char > Error;
  typedef ::xsd::cxx::tree::diagnostics< char > Diagnostics;

  // Exceptions.
  //
  typedef ::xsd::cxx::tree::exception< char > Exception;
  typedef ::xsd::cxx::tree::bounds< char > Bounds;
  typedef ::xsd::cxx::tree::duplicate_id< char > DuplicateId;
  typedef ::xsd::cxx::tree::parsing< char > Parsing;
  typedef ::xsd::cxx::tree::expected_element< char > ExpectedElement;
  typedef ::xsd::cxx::tree::unexpected_element< char > UnexpectedElement;
  typedef ::xsd::cxx::tree::expected_attribute< char > ExpectedAttribute;
  typedef ::xsd::cxx::tree::unexpected_enumerator< char > UnexpectedEnumerator;
  typedef ::xsd::cxx::tree::expected_text_content< char > ExpectedTextContent;
  typedef ::xsd::cxx::tree::no_prefix_mapping< char > NoPrefixMapping;
  typedef ::xsd::cxx::tree::serialization< char > Serialization;

  // Error handler callback interface.
  //
  typedef ::xsd::cxx::xml::error_handler< char > ErrorHandler;

  // DOM interaction.
  //
  namespace dom
  {
    // Automatic pointer for DOMDocument.
    //
    using ::xsd::cxx::xml::dom::auto_ptr;

#ifndef XSD_CXX_TREE_TREE_NODE_KEY__XML_SCHEMA
#define XSD_CXX_TREE_TREE_NODE_KEY__XML_SCHEMA
    // DOM user data key for back pointers to tree nodes.
    //
    const XMLCh* const treeNodeKey = ::xsd::cxx::tree::user_data_keys::node;
#endif
  }
}

// Forward declarations.
//
namespace test
{
  class Gender;
  class Type;
  class Foo;
}


#include <memory>    // ::std::auto_ptr
#include <limits>    // std::numeric_limits
#include <algorithm> // std::binary_search

#include <xsd/cxx/xml/char-utf8.hxx>

#include <xsd/cxx/tree/exceptions.hxx>
#include <xsd/cxx/tree/elements.hxx>
#include <xsd/cxx/tree/containers.hxx>
#include <xsd/cxx/tree/list.hxx>

#include <xsd/cxx/xml/dom/parsing-header.hxx>

#include <xsd/cxx/tree/containers-wildcard.hxx>

#ifndef XSD_DONT_INCLUDE_INLINE
#define XSD_DONT_INCLUDE_INLINE

#undef XSD_DONT_INCLUDE_INLINE
#else

#endif // XSD_DONT_INCLUDE_INLINE

namespace test
{
  class Gender: public ::xml_schema::String
  {
    public:
    enum Value
    {
      male,
      female
    };

    Gender (Value v);

    Gender (const char* v);

    Gender (const ::std::string& v);

    Gender (const ::xml_schema::String& v);

    Gender (const ::xercesc::DOMElement& e,
            ::xml_schema::Flags f = 0,
            ::xml_schema::Container* c = 0);

    Gender (const ::xercesc::DOMAttr& a,
            ::xml_schema::Flags f = 0,
            ::xml_schema::Container* c = 0);

    Gender (const ::std::string& s,
            const ::xercesc::DOMElement* e,
            ::xml_schema::Flags f = 0,
            ::xml_schema::Container* c = 0);

    Gender (const Gender& x,
            ::xml_schema::Flags f = 0,
            ::xml_schema::Container* c = 0);

    virtual Gender*
    _clone (::xml_schema::Flags f = 0,
            ::xml_schema::Container* c = 0) const;

    Gender&
    operator= (Value v);

    virtual
    operator Value () const
    {
      return _xsd_Gender_convert ();
    }

    protected:
    Value
    _xsd_Gender_convert () const;

    public:
    static const char* const _xsd_Gender_literals_[2];
    static const Value _xsd_Gender_indexes_[2];
  };

  class Type: public ::xml_schema::Type
  {
    public:
    // foo
    //
    typedef ::test::Foo FooType;
    typedef ::xsd::cxx::tree::optional< FooType > FooOptional;
    typedef ::xsd::cxx::tree::traits< FooType, char > FooTraits;

    const FooOptional&
    getFoo () const;

    FooOptional&
    getFoo ();

    void
    setFoo (const FooType& x);

    void
    setFoo (const FooOptional& x);

    void
    setFoo (::std::auto_ptr< FooType > p);

    // bar
    //
    typedef ::xml_schema::String BarType;
    typedef ::xsd::cxx::tree::traits< BarType, char > BarTraits;

    const BarType&
    getBar () const;

    BarType&
    getBar ();

    void
    setBar (const BarType& x);

    void
    setBar (::std::auto_ptr< BarType > p);

    // Baz
    //
    typedef ::xml_schema::String BazType;
    typedef ::xsd::cxx::tree::sequence< BazType > BazSequence;
    typedef BazSequence::iterator BazIterator;
    typedef BazSequence::const_iterator BazConstIterator;
    typedef ::xsd::cxx::tree::traits< BazType, char > BazTraits;

    const BazSequence&
    getBaz () const;

    BazSequence&
    getBaz ();

    void
    setBaz (const BazSequence& s);

    // any
    //
    typedef ::xsd::cxx::tree::element_sequence AnySequence;
    typedef AnySequence::iterator AnyIterator;
    typedef AnySequence::const_iterator AnyConstIterator;

    const AnySequence&
    getAny () const;

    AnySequence&
    getAny ();

    void
    setAny (const AnySequence& s);

    // Fox
    //
    typedef ::xml_schema::String FoxType;
    typedef ::xsd::cxx::tree::traits< FoxType, char > FoxTraits;

    const FoxType&
    getFox () const;

    FoxType&
    getFox ();

    void
    setFox (const FoxType& x);

    void
    setFox (::std::auto_ptr< FoxType > p);

    static const FoxType&
    getFoxDefaultValue ();

    // any_attribute
    //
    typedef ::xsd::cxx::tree::attribute_set< char > AnyAttributeSet;
    typedef AnyAttributeSet::iterator AnyAttributeIterator;
    typedef AnyAttributeSet::const_iterator AnyAttributeConstIterator;

    const AnyAttributeSet&
    getAnyAttribute () const;

    AnyAttributeSet&
    getAnyAttribute ();

    void
    setAnyAttribute (const AnyAttributeSet& s);

    // DOMDocument for wildcard content.
    //
    const ::xercesc::DOMDocument&
    getDomDocument () const;

    ::xercesc::DOMDocument&
    getDomDocument ();

    // Constructors.
    //
    Type (const BarType&);

    Type (const ::xercesc::DOMElement& e,
          ::xml_schema::Flags f = 0,
          ::xml_schema::Container* c = 0);

    Type (const Type& x,
          ::xml_schema::Flags f = 0,
          ::xml_schema::Container* c = 0);

    virtual Type*
    _clone (::xml_schema::Flags f = 0,
            ::xml_schema::Container* c = 0) const;

    Type&
    operator= (const Type& x);

    virtual 
    ~Type ();

    // Implementation.
    //
    protected:
    void
    parse (::xsd::cxx::xml::dom::parser< char >&,
           ::xml_schema::Flags);

    protected:
    ::xml_schema::dom::auto_ptr< ::xercesc::DOMDocument > dom_document_;

    FooOptional foo_;
    ::xsd::cxx::tree::one< BarType > bar_;
    BazSequence Baz_;
    AnySequence any_;
    ::xsd::cxx::tree::one< FoxType > Fox_;
    static const FoxType Fox_default_value_;
    AnyAttributeSet any_attribute_;
  };

  bool
  operator== (const Type&, const Type&);

  bool
  operator!= (const Type&, const Type&);


  class Foo: public ::xml_schema::Type
  {
    public:
    // a
    //
    typedef ::xml_schema::String AType;
    typedef ::xsd::cxx::tree::traits< AType, char > ATraits;

    const AType&
    getA () const;

    AType&
    getA ();

    void
    setA (const AType& x);

    void
    setA (::std::auto_ptr< AType > p);

    // b
    //
    typedef ::xml_schema::String BType;
    typedef ::xsd::cxx::tree::traits< BType, char > BTraits;

    const BType&
    getB () const;

    BType&
    getB ();

    void
    setB (const BType& x);

    void
    setB (::std::auto_ptr< BType > p);

    // Constructors.
    //
    Foo (const AType&,
         const BType&);

    Foo (const ::xercesc::DOMElement& e,
         ::xml_schema::Flags f = 0,
         ::xml_schema::Container* c = 0);

    Foo (const Foo& x,
         ::xml_schema::Flags f = 0,
         ::xml_schema::Container* c = 0);

    virtual Foo*
    _clone (::xml_schema::Flags f = 0,
            ::xml_schema::Container* c = 0) const;

    Foo&
    operator= (const Foo& x);

    virtual 
    ~Foo ();

    // Implementation.
    //
    protected:
    void
    parse (::xsd::cxx::xml::dom::parser< char >&,
           ::xml_schema::Flags);

    protected:
    ::xsd::cxx::tree::one< AType > a_;
    ::xsd::cxx::tree::one< BType > b_;
  };

  bool
  operator== (const Foo&, const Foo&);

  bool
  operator!= (const Foo&, const Foo&);
}

#ifndef XSD_DONT_INCLUDE_INLINE

#endif // XSD_DONT_INCLUDE_INLINE

#include <iosfwd>

namespace test
{
  ::std::ostream&
  operator<< (::std::ostream&, Gender::Value);

  ::std::ostream&
  operator<< (::std::ostream&, const Gender&);

  ::std::ostream&
  operator<< (::std::ostream&, const Type&);

  ::std::ostream&
  operator<< (::std::ostream&, const Foo&);
}

#include <iosfwd>

#include <xercesc/sax/InputSource.hpp>
#include <xercesc/dom/DOMDocument.hpp>
#include <xercesc/dom/DOMErrorHandler.hpp>

namespace test
{
  // Parse a URI or a local file.
  //

  ::std::auto_ptr< ::xml_schema::String >
  parseRoot (const ::std::string& uri,
             ::xml_schema::Flags f = 0,
             const ::xml_schema::Properties& p = ::xml_schema::Properties ());

  ::std::auto_ptr< ::xml_schema::String >
  parseRoot (const ::std::string& uri,
             ::xml_schema::ErrorHandler& eh,
             ::xml_schema::Flags f = 0,
             const ::xml_schema::Properties& p = ::xml_schema::Properties ());

  ::std::auto_ptr< ::xml_schema::String >
  parseRoot (const ::std::string& uri,
             ::xercesc::DOMErrorHandler& eh,
             ::xml_schema::Flags f = 0,
             const ::xml_schema::Properties& p = ::xml_schema::Properties ());

  // Parse std::istream.
  //

  ::std::auto_ptr< ::xml_schema::String >
  parseRoot (::std::istream& is,
             ::xml_schema::Flags f = 0,
             const ::xml_schema::Properties& p = ::xml_schema::Properties ());

  ::std::auto_ptr< ::xml_schema::String >
  parseRoot (::std::istream& is,
             ::xml_schema::ErrorHandler& eh,
             ::xml_schema::Flags f = 0,
             const ::xml_schema::Properties& p = ::xml_schema::Properties ());

  ::std::auto_ptr< ::xml_schema::String >
  parseRoot (::std::istream& is,
             ::xercesc::DOMErrorHandler& eh,
             ::xml_schema::Flags f = 0,
             const ::xml_schema::Properties& p = ::xml_schema::Properties ());

  ::std::auto_ptr< ::xml_schema::String >
  parseRoot (::std::istream& is,
             const ::std::string& id,
             ::xml_schema::Flags f = 0,
             const ::xml_schema::Properties& p = ::xml_schema::Properties ());

  ::std::auto_ptr< ::xml_schema::String >
  parseRoot (::std::istream& is,
             const ::std::string& id,
             ::xml_schema::ErrorHandler& eh,
             ::xml_schema::Flags f = 0,
             const ::xml_schema::Properties& p = ::xml_schema::Properties ());

  ::std::auto_ptr< ::xml_schema::String >
  parseRoot (::std::istream& is,
             const ::std::string& id,
             ::xercesc::DOMErrorHandler& eh,
             ::xml_schema::Flags f = 0,
             const ::xml_schema::Properties& p = ::xml_schema::Properties ());

  // Parse xercesc::InputSource.
  //

  ::std::auto_ptr< ::xml_schema::String >
  parseRoot (::xercesc::InputSource& is,
             ::xml_schema::Flags f = 0,
             const ::xml_schema::Properties& p = ::xml_schema::Properties ());

  ::std::auto_ptr< ::xml_schema::String >
  parseRoot (::xercesc::InputSource& is,
             ::xml_schema::ErrorHandler& eh,
             ::xml_schema::Flags f = 0,
             const ::xml_schema::Properties& p = ::xml_schema::Properties ());

  ::std::auto_ptr< ::xml_schema::String >
  parseRoot (::xercesc::InputSource& is,
             ::xercesc::DOMErrorHandler& eh,
             ::xml_schema::Flags f = 0,
             const ::xml_schema::Properties& p = ::xml_schema::Properties ());

  // Parse xercesc::DOMDocument.
  //

  ::std::auto_ptr< ::xml_schema::String >
  parseRoot (const ::xercesc::DOMDocument& d,
             ::xml_schema::Flags f = 0,
             const ::xml_schema::Properties& p = ::xml_schema::Properties ());

  ::std::auto_ptr< ::xml_schema::String >
  parseRoot (::xml_schema::dom::auto_ptr< ::xercesc::DOMDocument > d,
             ::xml_schema::Flags f = 0,
             const ::xml_schema::Properties& p = ::xml_schema::Properties ());
}

#include <iosfwd>

#include <xercesc/dom/DOMDocument.hpp>
#include <xercesc/dom/DOMErrorHandler.hpp>
#include <xercesc/framework/XMLFormatter.hpp>

#include <xsd/cxx/xml/dom/auto-ptr.hxx>

namespace test
{
  void
  operator<< (::xercesc::DOMElement&, const Gender&);

  void
  operator<< (::xercesc::DOMAttr&, const Gender&);

  void
  operator<< (::xml_schema::ListStream&,
              const Gender&);

  void
  operator<< (::xercesc::DOMElement&, const Type&);

  // Serialize to std::ostream.
  //

  void
  serializeRoot (::std::ostream& os,
                 const ::xml_schema::String& x, 
                 const ::xml_schema::NamespaceInfomap& m = ::xml_schema::NamespaceInfomap (),
                 const ::std::string& e = "UTF-8",
                 ::xml_schema::Flags f = 0);

  void
  serializeRoot (::std::ostream& os,
                 const ::xml_schema::String& x, 
                 ::xml_schema::ErrorHandler& eh,
                 const ::xml_schema::NamespaceInfomap& m = ::xml_schema::NamespaceInfomap (),
                 const ::std::string& e = "UTF-8",
                 ::xml_schema::Flags f = 0);

  void
  serializeRoot (::std::ostream& os,
                 const ::xml_schema::String& x, 
                 ::xercesc::DOMErrorHandler& eh,
                 const ::xml_schema::NamespaceInfomap& m = ::xml_schema::NamespaceInfomap (),
                 const ::std::string& e = "UTF-8",
                 ::xml_schema::Flags f = 0);

  // Serialize to xercesc::XMLFormatTarget.
  //

  void
  serializeRoot (::xercesc::XMLFormatTarget& ft,
                 const ::xml_schema::String& x, 
                 const ::xml_schema::NamespaceInfomap& m = ::xml_schema::NamespaceInfomap (),
                 const ::std::string& e = "UTF-8",
                 ::xml_schema::Flags f = 0);

  void
  serializeRoot (::xercesc::XMLFormatTarget& ft,
                 const ::xml_schema::String& x, 
                 ::xml_schema::ErrorHandler& eh,
                 const ::xml_schema::NamespaceInfomap& m = ::xml_schema::NamespaceInfomap (),
                 const ::std::string& e = "UTF-8",
                 ::xml_schema::Flags f = 0);

  void
  serializeRoot (::xercesc::XMLFormatTarget& ft,
                 const ::xml_schema::String& x, 
                 ::xercesc::DOMErrorHandler& eh,
                 const ::xml_schema::NamespaceInfomap& m = ::xml_schema::NamespaceInfomap (),
                 const ::std::string& e = "UTF-8",
                 ::xml_schema::Flags f = 0);

  // Serialize to an existing xercesc::DOMDocument.
  //

  void
  serializeRoot (::xercesc::DOMDocument& d,
                 const ::xml_schema::String& x,
                 ::xml_schema::Flags f = 0);

  // Serialize to a new xercesc::DOMDocument.
  //

  ::xml_schema::dom::auto_ptr< ::xercesc::DOMDocument >
  serializeRoot (const ::xml_schema::String& x, 
                 const ::xml_schema::NamespaceInfomap& m = ::xml_schema::NamespaceInfomap (),
                 ::xml_schema::Flags f = 0);

  void
  operator<< (::xercesc::DOMElement&, const Foo&);
}

#ifndef XSD_DONT_INCLUDE_INLINE
#include "test.ixx"
#endif // XSD_DONT_INCLUDE_INLINE

#include <xsd/cxx/post.hxx>

// Begin epilogue.
//
//
// End epilogue.

#endif // CXX_WORK_XSD_4_0_0_XSD_TESTS_CXX_TREE_NAMING_JAVA_TEST_HXX
