// 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 XML_REGINFO_HH
#define XML_REGINFO_HH

#ifndef XSD_CXX11
#define XSD_CXX11
#endif

#ifndef XSD_USE_CHAR
#define XSD_USE_CHAR
#endif

#ifndef XSD_CXX_TREE_USE_CHAR
#define XSD_CXX_TREE_USE_CHAR
#endif

// Begin prologue.
//
#if __clang__ || __GNUC__ >= 4
	#pragma GCC diagnostic push
	#pragma GCC diagnostic ignored "-Wfloat-equal"
	#pragma GCC diagnostic ignored "-Wimplicit-fallthrough"
#ifndef __ANDROID__
	#pragma GCC diagnostic ignored "-Wsuggest-override"
#endif
#endif
//
// 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 flexisip
{
  namespace Xsd
  {
    namespace XmlSchema
    {
      // 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::unique_ptr;

#ifndef XSD_CXX_TREE_TREE_NODE_KEY__FLEXISIP__XSD__XMLSCHEMA
#define XSD_CXX_TREE_TREE_NODE_KEY__FLEXISIP__XSD__XMLSCHEMA
        // 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 reginfo
{
  class Reginfo;
  class Registration;
  class Contact;
  class State;
  class State1;
  class DisplayName;
  class UnknownParam;
  class State2;
  class Event;
}


#include <memory>    // ::std::unique_ptr
#include <limits>    // std::numeric_limits
#include <algorithm> // std::binary_search
#include <utility>   // std::move

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

#include "xml.hh"

namespace reginfo
{
  class Reginfo: public ::flexisip::Xsd::XmlSchema::Type
  {
    public:
    // registration
    //
    typedef ::reginfo::Registration RegistrationType;
    typedef ::xsd::cxx::tree::sequence< RegistrationType > RegistrationSequence;
    typedef RegistrationSequence::iterator RegistrationIterator;
    typedef RegistrationSequence::const_iterator RegistrationConstIterator;
    typedef ::xsd::cxx::tree::traits< RegistrationType, char > RegistrationTraits;

    const RegistrationSequence&
    getRegistration () const;

    RegistrationSequence&
    getRegistration ();

    void
    setRegistration (const RegistrationSequence& 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);

    // version
    //
    typedef ::flexisip::Xsd::XmlSchema::NonNegativeInteger VersionType;
    typedef ::xsd::cxx::tree::traits< VersionType, char > VersionTraits;

    const VersionType&
    getVersion () const;

    VersionType&
    getVersion ();

    void
    setVersion (const VersionType& x);

    // state
    //
    typedef ::reginfo::State StateType;
    typedef ::xsd::cxx::tree::traits< StateType, char > StateTraits;

    const StateType&
    getState () const;

    StateType&
    getState ();

    void
    setState (const StateType& x);

    void
    setState (::std::unique_ptr< StateType > p);

    ::std::unique_ptr< StateType >
    setDetachState ();

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

    ::xercesc::DOMDocument&
    getDomDocument ();

    // Constructors.
    //
    Reginfo (const VersionType&,
             const StateType&);

    Reginfo (const ::xercesc::DOMElement& e,
             ::flexisip::Xsd::XmlSchema::Flags f = 0,
             ::flexisip::Xsd::XmlSchema::Container* c = 0);

    Reginfo (const Reginfo& x,
             ::flexisip::Xsd::XmlSchema::Flags f = 0,
             ::flexisip::Xsd::XmlSchema::Container* c = 0);

    virtual Reginfo*
    _clone (::flexisip::Xsd::XmlSchema::Flags f = 0,
            ::flexisip::Xsd::XmlSchema::Container* c = 0) const;

    Reginfo&
    operator= (const Reginfo& x);

    virtual 
    ~Reginfo ();

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

    protected:
    ::flexisip::Xsd::XmlSchema::dom::unique_ptr< ::xercesc::DOMDocument > dom_document_;

    RegistrationSequence registration_;
    AnySequence any_;
    ::xsd::cxx::tree::one< VersionType > version_;
    ::xsd::cxx::tree::one< StateType > state_;
  };

  class Registration: public ::flexisip::Xsd::XmlSchema::Type
  {
    public:
    // contact
    //
    typedef ::reginfo::Contact ContactType;
    typedef ::xsd::cxx::tree::sequence< ContactType > ContactSequence;
    typedef ContactSequence::iterator ContactIterator;
    typedef ContactSequence::const_iterator ContactConstIterator;
    typedef ::xsd::cxx::tree::traits< ContactType, char > ContactTraits;

    const ContactSequence&
    getContact () const;

    ContactSequence&
    getContact ();

    void
    setContact (const ContactSequence& 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);

    // aor
    //
    typedef ::flexisip::Xsd::XmlSchema::Uri AorType;
    typedef ::xsd::cxx::tree::traits< AorType, char > AorTraits;

    const AorType&
    getAor () const;

    AorType&
    getAor ();

    void
    setAor (const AorType& x);

    void
    setAor (::std::unique_ptr< AorType > p);

    ::std::unique_ptr< AorType >
    setDetachAor ();

    // id
    //
    typedef ::flexisip::Xsd::XmlSchema::String IdType;
    typedef ::xsd::cxx::tree::traits< IdType, char > IdTraits;

    const IdType&
    getId () const;

    IdType&
    getId ();

    void
    setId (const IdType& x);

    void
    setId (::std::unique_ptr< IdType > p);

    ::std::unique_ptr< IdType >
    setDetachId ();

    // state
    //
    typedef ::reginfo::State1 StateType;
    typedef ::xsd::cxx::tree::traits< StateType, char > StateTraits;

    const StateType&
    getState () const;

    StateType&
    getState ();

    void
    setState (const StateType& x);

    void
    setState (::std::unique_ptr< StateType > p);

    ::std::unique_ptr< StateType >
    setDetachState ();

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

    ::xercesc::DOMDocument&
    getDomDocument ();

    // Constructors.
    //
    Registration (const AorType&,
                  const IdType&,
                  const StateType&);

    Registration (const ::xercesc::DOMElement& e,
                  ::flexisip::Xsd::XmlSchema::Flags f = 0,
                  ::flexisip::Xsd::XmlSchema::Container* c = 0);

    Registration (const Registration& x,
                  ::flexisip::Xsd::XmlSchema::Flags f = 0,
                  ::flexisip::Xsd::XmlSchema::Container* c = 0);

    virtual Registration*
    _clone (::flexisip::Xsd::XmlSchema::Flags f = 0,
            ::flexisip::Xsd::XmlSchema::Container* c = 0) const;

    Registration&
    operator= (const Registration& x);

    virtual 
    ~Registration ();

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

    protected:
    ::flexisip::Xsd::XmlSchema::dom::unique_ptr< ::xercesc::DOMDocument > dom_document_;

    ContactSequence contact_;
    AnySequence any_;
    ::xsd::cxx::tree::one< AorType > aor_;
    ::xsd::cxx::tree::one< IdType > id_;
    ::xsd::cxx::tree::one< StateType > state_;
  };

  class Contact: public ::flexisip::Xsd::XmlSchema::Type
  {
    public:
    // uri
    //
    typedef ::flexisip::Xsd::XmlSchema::Uri UriType;
    typedef ::xsd::cxx::tree::traits< UriType, char > UriTraits;

    const UriType&
    getUri () const;

    UriType&
    getUri ();

    void
    setUri (const UriType& x);

    void
    setUri (::std::unique_ptr< UriType > p);

    ::std::unique_ptr< UriType >
    setDetachUri ();

    // display-name
    //
    typedef ::reginfo::DisplayName DisplayNameType;
    typedef ::xsd::cxx::tree::optional< DisplayNameType > DisplayNameOptional;
    typedef ::xsd::cxx::tree::traits< DisplayNameType, char > DisplayNameTraits;

    const DisplayNameOptional&
    getDisplayName () const;

    DisplayNameOptional&
    getDisplayName ();

    void
    setDisplayName (const DisplayNameType& x);

    void
    setDisplayName (const DisplayNameOptional& x);

    void
    setDisplayName (::std::unique_ptr< DisplayNameType > p);

    // unknown-param
    //
    typedef ::reginfo::UnknownParam UnknownParamType;
    typedef ::xsd::cxx::tree::sequence< UnknownParamType > UnknownParamSequence;
    typedef UnknownParamSequence::iterator UnknownParamIterator;
    typedef UnknownParamSequence::const_iterator UnknownParamConstIterator;
    typedef ::xsd::cxx::tree::traits< UnknownParamType, char > UnknownParamTraits;

    const UnknownParamSequence&
    getUnknownParam () const;

    UnknownParamSequence&
    getUnknownParam ();

    void
    setUnknownParam (const UnknownParamSequence& 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);

    // state
    //
    typedef ::reginfo::State2 StateType;
    typedef ::xsd::cxx::tree::traits< StateType, char > StateTraits;

    const StateType&
    getState () const;

    StateType&
    getState ();

    void
    setState (const StateType& x);

    void
    setState (::std::unique_ptr< StateType > p);

    ::std::unique_ptr< StateType >
    setDetachState ();

    // event
    //
    typedef ::reginfo::Event EventType;
    typedef ::xsd::cxx::tree::traits< EventType, char > EventTraits;

    const EventType&
    getEvent () const;

    EventType&
    getEvent ();

    void
    setEvent (const EventType& x);

    void
    setEvent (::std::unique_ptr< EventType > p);

    ::std::unique_ptr< EventType >
    setDetachEvent ();

    // duration-registered
    //
    typedef ::flexisip::Xsd::XmlSchema::UnsignedLong DurationRegisteredType;
    typedef ::xsd::cxx::tree::optional< DurationRegisteredType > DurationRegisteredOptional;
    typedef ::xsd::cxx::tree::traits< DurationRegisteredType, char > DurationRegisteredTraits;

    const DurationRegisteredOptional&
    getDurationRegistered () const;

    DurationRegisteredOptional&
    getDurationRegistered ();

    void
    setDurationRegistered (const DurationRegisteredType& x);

    void
    setDurationRegistered (const DurationRegisteredOptional& x);

    // expires
    //
    typedef ::flexisip::Xsd::XmlSchema::UnsignedLong ExpiresType;
    typedef ::xsd::cxx::tree::optional< ExpiresType > ExpiresOptional;
    typedef ::xsd::cxx::tree::traits< ExpiresType, char > ExpiresTraits;

    const ExpiresOptional&
    getExpires () const;

    ExpiresOptional&
    getExpires ();

    void
    setExpires (const ExpiresType& x);

    void
    setExpires (const ExpiresOptional& x);

    // retry-after
    //
    typedef ::flexisip::Xsd::XmlSchema::UnsignedLong RetryAfterType;
    typedef ::xsd::cxx::tree::optional< RetryAfterType > RetryAfterOptional;
    typedef ::xsd::cxx::tree::traits< RetryAfterType, char > RetryAfterTraits;

    const RetryAfterOptional&
    getRetryAfter () const;

    RetryAfterOptional&
    getRetryAfter ();

    void
    setRetryAfter (const RetryAfterType& x);

    void
    setRetryAfter (const RetryAfterOptional& x);

    // id
    //
    typedef ::flexisip::Xsd::XmlSchema::String IdType;
    typedef ::xsd::cxx::tree::traits< IdType, char > IdTraits;

    const IdType&
    getId () const;

    IdType&
    getId ();

    void
    setId (const IdType& x);

    void
    setId (::std::unique_ptr< IdType > p);

    ::std::unique_ptr< IdType >
    setDetachId ();

    // q
    //
    typedef ::flexisip::Xsd::XmlSchema::String QType;
    typedef ::xsd::cxx::tree::optional< QType > QOptional;
    typedef ::xsd::cxx::tree::traits< QType, char > QTraits;

    const QOptional&
    getQ () const;

    QOptional&
    getQ ();

    void
    setQ (const QType& x);

    void
    setQ (const QOptional& x);

    void
    setQ (::std::unique_ptr< QType > p);

    // callid
    //
    typedef ::flexisip::Xsd::XmlSchema::String CallidType;
    typedef ::xsd::cxx::tree::optional< CallidType > CallidOptional;
    typedef ::xsd::cxx::tree::traits< CallidType, char > CallidTraits;

    const CallidOptional&
    getCallid () const;

    CallidOptional&
    getCallid ();

    void
    setCallid (const CallidType& x);

    void
    setCallid (const CallidOptional& x);

    void
    setCallid (::std::unique_ptr< CallidType > p);

    // cseq
    //
    typedef ::flexisip::Xsd::XmlSchema::UnsignedLong CseqType;
    typedef ::xsd::cxx::tree::optional< CseqType > CseqOptional;
    typedef ::xsd::cxx::tree::traits< CseqType, char > CseqTraits;

    const CseqOptional&
    getCseq () const;

    CseqOptional&
    getCseq ();

    void
    setCseq (const CseqType& x);

    void
    setCseq (const CseqOptional& x);

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

    ::xercesc::DOMDocument&
    getDomDocument ();

    // Constructors.
    //
    Contact (const UriType&,
             const StateType&,
             const EventType&,
             const IdType&);

    Contact (const ::xercesc::DOMElement& e,
             ::flexisip::Xsd::XmlSchema::Flags f = 0,
             ::flexisip::Xsd::XmlSchema::Container* c = 0);

    Contact (const Contact& x,
             ::flexisip::Xsd::XmlSchema::Flags f = 0,
             ::flexisip::Xsd::XmlSchema::Container* c = 0);

    virtual Contact*
    _clone (::flexisip::Xsd::XmlSchema::Flags f = 0,
            ::flexisip::Xsd::XmlSchema::Container* c = 0) const;

    Contact&
    operator= (const Contact& x);

    virtual 
    ~Contact ();

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

    protected:
    ::flexisip::Xsd::XmlSchema::dom::unique_ptr< ::xercesc::DOMDocument > dom_document_;

    ::xsd::cxx::tree::one< UriType > uri_;
    DisplayNameOptional display_name_;
    UnknownParamSequence unknown_param_;
    AnySequence any_;
    ::xsd::cxx::tree::one< StateType > state_;
    ::xsd::cxx::tree::one< EventType > event_;
    DurationRegisteredOptional duration_registered_;
    ExpiresOptional expires_;
    RetryAfterOptional retry_after_;
    ::xsd::cxx::tree::one< IdType > id_;
    QOptional q_;
    CallidOptional callid_;
    CseqOptional cseq_;
  };

  class State: public ::flexisip::Xsd::XmlSchema::String
  {
    public:
    enum Value
    {
      full,
      partial
    };

    State (Value v);

    State (const char* v);

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

    State (const ::flexisip::Xsd::XmlSchema::String& v);

    State (const ::xercesc::DOMElement& e,
           ::flexisip::Xsd::XmlSchema::Flags f = 0,
           ::flexisip::Xsd::XmlSchema::Container* c = 0);

    State (const ::xercesc::DOMAttr& a,
           ::flexisip::Xsd::XmlSchema::Flags f = 0,
           ::flexisip::Xsd::XmlSchema::Container* c = 0);

    State (const ::std::string& s,
           const ::xercesc::DOMElement* e,
           ::flexisip::Xsd::XmlSchema::Flags f = 0,
           ::flexisip::Xsd::XmlSchema::Container* c = 0);

    State (const State& x,
           ::flexisip::Xsd::XmlSchema::Flags f = 0,
           ::flexisip::Xsd::XmlSchema::Container* c = 0);

    virtual State*
    _clone (::flexisip::Xsd::XmlSchema::Flags f = 0,
            ::flexisip::Xsd::XmlSchema::Container* c = 0) const;

    State&
    operator= (Value v);

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

    protected:
    Value
    _xsd_State_convert () const;

    public:
    static const char* const _xsd_State_literals_[2];
    static const Value _xsd_State_indexes_[2];
  };

  class State1: public ::flexisip::Xsd::XmlSchema::String
  {
    public:
    enum Value
    {
      init,
      active,
      terminated
    };

    State1 (Value v);

    State1 (const char* v);

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

    State1 (const ::flexisip::Xsd::XmlSchema::String& v);

    State1 (const ::xercesc::DOMElement& e,
            ::flexisip::Xsd::XmlSchema::Flags f = 0,
            ::flexisip::Xsd::XmlSchema::Container* c = 0);

    State1 (const ::xercesc::DOMAttr& a,
            ::flexisip::Xsd::XmlSchema::Flags f = 0,
            ::flexisip::Xsd::XmlSchema::Container* c = 0);

    State1 (const ::std::string& s,
            const ::xercesc::DOMElement* e,
            ::flexisip::Xsd::XmlSchema::Flags f = 0,
            ::flexisip::Xsd::XmlSchema::Container* c = 0);

    State1 (const State1& x,
            ::flexisip::Xsd::XmlSchema::Flags f = 0,
            ::flexisip::Xsd::XmlSchema::Container* c = 0);

    virtual State1*
    _clone (::flexisip::Xsd::XmlSchema::Flags f = 0,
            ::flexisip::Xsd::XmlSchema::Container* c = 0) const;

    State1&
    operator= (Value v);

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

    protected:
    Value
    _xsd_State1_convert () const;

    public:
    static const char* const _xsd_State1_literals_[3];
    static const Value _xsd_State1_indexes_[3];
  };

  class DisplayName: public ::flexisip::Xsd::XmlSchema::String
  {
    public:
    // lang
    //
    typedef ::flexisip::Xsd::Namespace::Lang LangType;
    typedef ::xsd::cxx::tree::optional< LangType > LangOptional;
    typedef ::xsd::cxx::tree::traits< LangType, char > LangTraits;

    const LangOptional&
    getLang () const;

    LangOptional&
    getLang ();

    void
    setLang (const LangType& x);

    void
    setLang (const LangOptional& x);

    void
    setLang (::std::unique_ptr< LangType > p);

    // Constructors.
    //
    DisplayName ();

    DisplayName (const char*);

    DisplayName (const ::std::string&);

    DisplayName (const ::flexisip::Xsd::XmlSchema::String&);

    DisplayName (const ::xercesc::DOMElement& e,
                 ::flexisip::Xsd::XmlSchema::Flags f = 0,
                 ::flexisip::Xsd::XmlSchema::Container* c = 0);

    DisplayName (const DisplayName& x,
                 ::flexisip::Xsd::XmlSchema::Flags f = 0,
                 ::flexisip::Xsd::XmlSchema::Container* c = 0);

    virtual DisplayName*
    _clone (::flexisip::Xsd::XmlSchema::Flags f = 0,
            ::flexisip::Xsd::XmlSchema::Container* c = 0) const;

    DisplayName&
    operator= (const DisplayName& x);

    virtual 
    ~DisplayName ();

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

    protected:
    LangOptional lang_;
  };

  class UnknownParam: public ::flexisip::Xsd::XmlSchema::String
  {
    public:
    // name
    //
    typedef ::flexisip::Xsd::XmlSchema::String NameType;
    typedef ::xsd::cxx::tree::traits< NameType, char > NameTraits;

    const NameType&
    getName () const;

    NameType&
    getName ();

    void
    setName (const NameType& x);

    void
    setName (::std::unique_ptr< NameType > p);

    ::std::unique_ptr< NameType >
    setDetachName ();

    // Constructors.
    //
    UnknownParam (const NameType&);

    UnknownParam (const char*,
                  const NameType&);

    UnknownParam (const ::std::string&,
                  const NameType&);

    UnknownParam (const ::flexisip::Xsd::XmlSchema::String&,
                  const NameType&);

    UnknownParam (const ::xercesc::DOMElement& e,
                  ::flexisip::Xsd::XmlSchema::Flags f = 0,
                  ::flexisip::Xsd::XmlSchema::Container* c = 0);

    UnknownParam (const UnknownParam& x,
                  ::flexisip::Xsd::XmlSchema::Flags f = 0,
                  ::flexisip::Xsd::XmlSchema::Container* c = 0);

    virtual UnknownParam*
    _clone (::flexisip::Xsd::XmlSchema::Flags f = 0,
            ::flexisip::Xsd::XmlSchema::Container* c = 0) const;

    UnknownParam&
    operator= (const UnknownParam& x);

    virtual 
    ~UnknownParam ();

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

    protected:
    ::xsd::cxx::tree::one< NameType > name_;
  };

  class State2: public ::flexisip::Xsd::XmlSchema::String
  {
    public:
    enum Value
    {
      active,
      terminated
    };

    State2 (Value v);

    State2 (const char* v);

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

    State2 (const ::flexisip::Xsd::XmlSchema::String& v);

    State2 (const ::xercesc::DOMElement& e,
            ::flexisip::Xsd::XmlSchema::Flags f = 0,
            ::flexisip::Xsd::XmlSchema::Container* c = 0);

    State2 (const ::xercesc::DOMAttr& a,
            ::flexisip::Xsd::XmlSchema::Flags f = 0,
            ::flexisip::Xsd::XmlSchema::Container* c = 0);

    State2 (const ::std::string& s,
            const ::xercesc::DOMElement* e,
            ::flexisip::Xsd::XmlSchema::Flags f = 0,
            ::flexisip::Xsd::XmlSchema::Container* c = 0);

    State2 (const State2& x,
            ::flexisip::Xsd::XmlSchema::Flags f = 0,
            ::flexisip::Xsd::XmlSchema::Container* c = 0);

    virtual State2*
    _clone (::flexisip::Xsd::XmlSchema::Flags f = 0,
            ::flexisip::Xsd::XmlSchema::Container* c = 0) const;

    State2&
    operator= (Value v);

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

    protected:
    Value
    _xsd_State2_convert () const;

    public:
    static const char* const _xsd_State2_literals_[2];
    static const Value _xsd_State2_indexes_[2];
  };

  class Event: public ::flexisip::Xsd::XmlSchema::String
  {
    public:
    enum Value
    {
      registered,
      created,
      refreshed,
      shortened,
      expired,
      deactivated,
      probation,
      unregistered,
      rejected
    };

    Event (Value v);

    Event (const char* v);

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

    Event (const ::flexisip::Xsd::XmlSchema::String& v);

    Event (const ::xercesc::DOMElement& e,
           ::flexisip::Xsd::XmlSchema::Flags f = 0,
           ::flexisip::Xsd::XmlSchema::Container* c = 0);

    Event (const ::xercesc::DOMAttr& a,
           ::flexisip::Xsd::XmlSchema::Flags f = 0,
           ::flexisip::Xsd::XmlSchema::Container* c = 0);

    Event (const ::std::string& s,
           const ::xercesc::DOMElement* e,
           ::flexisip::Xsd::XmlSchema::Flags f = 0,
           ::flexisip::Xsd::XmlSchema::Container* c = 0);

    Event (const Event& x,
           ::flexisip::Xsd::XmlSchema::Flags f = 0,
           ::flexisip::Xsd::XmlSchema::Container* c = 0);

    virtual Event*
    _clone (::flexisip::Xsd::XmlSchema::Flags f = 0,
            ::flexisip::Xsd::XmlSchema::Container* c = 0) const;

    Event&
    operator= (Value v);

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

    protected:
    Value
    _xsd_Event_convert () const;

    public:
    static const char* const _xsd_Event_literals_[9];
    static const Value _xsd_Event_indexes_[9];
  };
}

#include <iosfwd>

namespace reginfo
{
  ::std::ostream&
  operator<< (::std::ostream&, const Reginfo&);

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

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

  ::std::ostream&
  operator<< (::std::ostream&, State::Value);

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

  ::std::ostream&
  operator<< (::std::ostream&, State1::Value);

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

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

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

  ::std::ostream&
  operator<< (::std::ostream&, State2::Value);

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

  ::std::ostream&
  operator<< (::std::ostream&, Event::Value);

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

#include <iosfwd>

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

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

  ::std::unique_ptr< ::reginfo::Reginfo >
  parseReginfo (const ::std::string& uri,
                ::flexisip::Xsd::XmlSchema::Flags f = 0,
                const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Reginfo >
  parseReginfo (const ::std::string& uri,
                ::flexisip::Xsd::XmlSchema::ErrorHandler& eh,
                ::flexisip::Xsd::XmlSchema::Flags f = 0,
                const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Reginfo >
  parseReginfo (const ::std::string& uri,
                ::xercesc::DOMErrorHandler& eh,
                ::flexisip::Xsd::XmlSchema::Flags f = 0,
                const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  // Parse std::istream.
  //

  ::std::unique_ptr< ::reginfo::Reginfo >
  parseReginfo (::std::istream& is,
                ::flexisip::Xsd::XmlSchema::Flags f = 0,
                const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Reginfo >
  parseReginfo (::std::istream& is,
                ::flexisip::Xsd::XmlSchema::ErrorHandler& eh,
                ::flexisip::Xsd::XmlSchema::Flags f = 0,
                const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Reginfo >
  parseReginfo (::std::istream& is,
                ::xercesc::DOMErrorHandler& eh,
                ::flexisip::Xsd::XmlSchema::Flags f = 0,
                const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Reginfo >
  parseReginfo (::std::istream& is,
                const ::std::string& id,
                ::flexisip::Xsd::XmlSchema::Flags f = 0,
                const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Reginfo >
  parseReginfo (::std::istream& is,
                const ::std::string& id,
                ::flexisip::Xsd::XmlSchema::ErrorHandler& eh,
                ::flexisip::Xsd::XmlSchema::Flags f = 0,
                const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Reginfo >
  parseReginfo (::std::istream& is,
                const ::std::string& id,
                ::xercesc::DOMErrorHandler& eh,
                ::flexisip::Xsd::XmlSchema::Flags f = 0,
                const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  // Parse xercesc::InputSource.
  //

  ::std::unique_ptr< ::reginfo::Reginfo >
  parseReginfo (::xercesc::InputSource& is,
                ::flexisip::Xsd::XmlSchema::Flags f = 0,
                const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Reginfo >
  parseReginfo (::xercesc::InputSource& is,
                ::flexisip::Xsd::XmlSchema::ErrorHandler& eh,
                ::flexisip::Xsd::XmlSchema::Flags f = 0,
                const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Reginfo >
  parseReginfo (::xercesc::InputSource& is,
                ::xercesc::DOMErrorHandler& eh,
                ::flexisip::Xsd::XmlSchema::Flags f = 0,
                const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  // Parse xercesc::DOMDocument.
  //

  ::std::unique_ptr< ::reginfo::Reginfo >
  parseReginfo (const ::xercesc::DOMDocument& d,
                ::flexisip::Xsd::XmlSchema::Flags f = 0,
                const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Reginfo >
  parseReginfo (::flexisip::Xsd::XmlSchema::dom::unique_ptr< ::xercesc::DOMDocument > d,
                ::flexisip::Xsd::XmlSchema::Flags f = 0,
                const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  // Parse a URI or a local file.
  //

  ::std::unique_ptr< ::reginfo::Registration >
  parseRegistration (const ::std::string& uri,
                     ::flexisip::Xsd::XmlSchema::Flags f = 0,
                     const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Registration >
  parseRegistration (const ::std::string& uri,
                     ::flexisip::Xsd::XmlSchema::ErrorHandler& eh,
                     ::flexisip::Xsd::XmlSchema::Flags f = 0,
                     const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Registration >
  parseRegistration (const ::std::string& uri,
                     ::xercesc::DOMErrorHandler& eh,
                     ::flexisip::Xsd::XmlSchema::Flags f = 0,
                     const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  // Parse std::istream.
  //

  ::std::unique_ptr< ::reginfo::Registration >
  parseRegistration (::std::istream& is,
                     ::flexisip::Xsd::XmlSchema::Flags f = 0,
                     const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Registration >
  parseRegistration (::std::istream& is,
                     ::flexisip::Xsd::XmlSchema::ErrorHandler& eh,
                     ::flexisip::Xsd::XmlSchema::Flags f = 0,
                     const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Registration >
  parseRegistration (::std::istream& is,
                     ::xercesc::DOMErrorHandler& eh,
                     ::flexisip::Xsd::XmlSchema::Flags f = 0,
                     const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Registration >
  parseRegistration (::std::istream& is,
                     const ::std::string& id,
                     ::flexisip::Xsd::XmlSchema::Flags f = 0,
                     const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Registration >
  parseRegistration (::std::istream& is,
                     const ::std::string& id,
                     ::flexisip::Xsd::XmlSchema::ErrorHandler& eh,
                     ::flexisip::Xsd::XmlSchema::Flags f = 0,
                     const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Registration >
  parseRegistration (::std::istream& is,
                     const ::std::string& id,
                     ::xercesc::DOMErrorHandler& eh,
                     ::flexisip::Xsd::XmlSchema::Flags f = 0,
                     const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  // Parse xercesc::InputSource.
  //

  ::std::unique_ptr< ::reginfo::Registration >
  parseRegistration (::xercesc::InputSource& is,
                     ::flexisip::Xsd::XmlSchema::Flags f = 0,
                     const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Registration >
  parseRegistration (::xercesc::InputSource& is,
                     ::flexisip::Xsd::XmlSchema::ErrorHandler& eh,
                     ::flexisip::Xsd::XmlSchema::Flags f = 0,
                     const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Registration >
  parseRegistration (::xercesc::InputSource& is,
                     ::xercesc::DOMErrorHandler& eh,
                     ::flexisip::Xsd::XmlSchema::Flags f = 0,
                     const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  // Parse xercesc::DOMDocument.
  //

  ::std::unique_ptr< ::reginfo::Registration >
  parseRegistration (const ::xercesc::DOMDocument& d,
                     ::flexisip::Xsd::XmlSchema::Flags f = 0,
                     const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Registration >
  parseRegistration (::flexisip::Xsd::XmlSchema::dom::unique_ptr< ::xercesc::DOMDocument > d,
                     ::flexisip::Xsd::XmlSchema::Flags f = 0,
                     const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  // Parse a URI or a local file.
  //

  ::std::unique_ptr< ::reginfo::Contact >
  parseContact (const ::std::string& uri,
                ::flexisip::Xsd::XmlSchema::Flags f = 0,
                const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Contact >
  parseContact (const ::std::string& uri,
                ::flexisip::Xsd::XmlSchema::ErrorHandler& eh,
                ::flexisip::Xsd::XmlSchema::Flags f = 0,
                const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Contact >
  parseContact (const ::std::string& uri,
                ::xercesc::DOMErrorHandler& eh,
                ::flexisip::Xsd::XmlSchema::Flags f = 0,
                const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  // Parse std::istream.
  //

  ::std::unique_ptr< ::reginfo::Contact >
  parseContact (::std::istream& is,
                ::flexisip::Xsd::XmlSchema::Flags f = 0,
                const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Contact >
  parseContact (::std::istream& is,
                ::flexisip::Xsd::XmlSchema::ErrorHandler& eh,
                ::flexisip::Xsd::XmlSchema::Flags f = 0,
                const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Contact >
  parseContact (::std::istream& is,
                ::xercesc::DOMErrorHandler& eh,
                ::flexisip::Xsd::XmlSchema::Flags f = 0,
                const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Contact >
  parseContact (::std::istream& is,
                const ::std::string& id,
                ::flexisip::Xsd::XmlSchema::Flags f = 0,
                const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Contact >
  parseContact (::std::istream& is,
                const ::std::string& id,
                ::flexisip::Xsd::XmlSchema::ErrorHandler& eh,
                ::flexisip::Xsd::XmlSchema::Flags f = 0,
                const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Contact >
  parseContact (::std::istream& is,
                const ::std::string& id,
                ::xercesc::DOMErrorHandler& eh,
                ::flexisip::Xsd::XmlSchema::Flags f = 0,
                const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  // Parse xercesc::InputSource.
  //

  ::std::unique_ptr< ::reginfo::Contact >
  parseContact (::xercesc::InputSource& is,
                ::flexisip::Xsd::XmlSchema::Flags f = 0,
                const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Contact >
  parseContact (::xercesc::InputSource& is,
                ::flexisip::Xsd::XmlSchema::ErrorHandler& eh,
                ::flexisip::Xsd::XmlSchema::Flags f = 0,
                const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Contact >
  parseContact (::xercesc::InputSource& is,
                ::xercesc::DOMErrorHandler& eh,
                ::flexisip::Xsd::XmlSchema::Flags f = 0,
                const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  // Parse xercesc::DOMDocument.
  //

  ::std::unique_ptr< ::reginfo::Contact >
  parseContact (const ::xercesc::DOMDocument& d,
                ::flexisip::Xsd::XmlSchema::Flags f = 0,
                const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::Properties ());

  ::std::unique_ptr< ::reginfo::Contact >
  parseContact (::flexisip::Xsd::XmlSchema::dom::unique_ptr< ::xercesc::DOMDocument > d,
                ::flexisip::Xsd::XmlSchema::Flags f = 0,
                const ::flexisip::Xsd::XmlSchema::Properties& p = ::flexisip::Xsd::XmlSchema::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 reginfo
{
  // Serialize to std::ostream.
  //

  void
  serializeReginfo (::std::ostream& os,
                    const ::reginfo::Reginfo& x, 
                    const ::flexisip::Xsd::XmlSchema::NamespaceInfomap& m = ::flexisip::Xsd::XmlSchema::NamespaceInfomap (),
                    const ::std::string& e = "UTF-8",
                    ::flexisip::Xsd::XmlSchema::Flags f = 0);

  void
  serializeReginfo (::std::ostream& os,
                    const ::reginfo::Reginfo& x, 
                    ::flexisip::Xsd::XmlSchema::ErrorHandler& eh,
                    const ::flexisip::Xsd::XmlSchema::NamespaceInfomap& m = ::flexisip::Xsd::XmlSchema::NamespaceInfomap (),
                    const ::std::string& e = "UTF-8",
                    ::flexisip::Xsd::XmlSchema::Flags f = 0);

  void
  serializeReginfo (::std::ostream& os,
                    const ::reginfo::Reginfo& x, 
                    ::xercesc::DOMErrorHandler& eh,
                    const ::flexisip::Xsd::XmlSchema::NamespaceInfomap& m = ::flexisip::Xsd::XmlSchema::NamespaceInfomap (),
                    const ::std::string& e = "UTF-8",
                    ::flexisip::Xsd::XmlSchema::Flags f = 0);

  // Serialize to xercesc::XMLFormatTarget.
  //

  void
  serializeReginfo (::xercesc::XMLFormatTarget& ft,
                    const ::reginfo::Reginfo& x, 
                    const ::flexisip::Xsd::XmlSchema::NamespaceInfomap& m = ::flexisip::Xsd::XmlSchema::NamespaceInfomap (),
                    const ::std::string& e = "UTF-8",
                    ::flexisip::Xsd::XmlSchema::Flags f = 0);

  void
  serializeReginfo (::xercesc::XMLFormatTarget& ft,
                    const ::reginfo::Reginfo& x, 
                    ::flexisip::Xsd::XmlSchema::ErrorHandler& eh,
                    const ::flexisip::Xsd::XmlSchema::NamespaceInfomap& m = ::flexisip::Xsd::XmlSchema::NamespaceInfomap (),
                    const ::std::string& e = "UTF-8",
                    ::flexisip::Xsd::XmlSchema::Flags f = 0);

  void
  serializeReginfo (::xercesc::XMLFormatTarget& ft,
                    const ::reginfo::Reginfo& x, 
                    ::xercesc::DOMErrorHandler& eh,
                    const ::flexisip::Xsd::XmlSchema::NamespaceInfomap& m = ::flexisip::Xsd::XmlSchema::NamespaceInfomap (),
                    const ::std::string& e = "UTF-8",
                    ::flexisip::Xsd::XmlSchema::Flags f = 0);

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

  void
  serializeReginfo (::xercesc::DOMDocument& d,
                    const ::reginfo::Reginfo& x,
                    ::flexisip::Xsd::XmlSchema::Flags f = 0);

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

  ::flexisip::Xsd::XmlSchema::dom::unique_ptr< ::xercesc::DOMDocument >
  serializeReginfo (const ::reginfo::Reginfo& x, 
                    const ::flexisip::Xsd::XmlSchema::NamespaceInfomap& m = ::flexisip::Xsd::XmlSchema::NamespaceInfomap (),
                    ::flexisip::Xsd::XmlSchema::Flags f = 0);

  // Serialize to std::ostream.
  //

  void
  serializeRegistration (::std::ostream& os,
                         const ::reginfo::Registration& x, 
                         const ::flexisip::Xsd::XmlSchema::NamespaceInfomap& m = ::flexisip::Xsd::XmlSchema::NamespaceInfomap (),
                         const ::std::string& e = "UTF-8",
                         ::flexisip::Xsd::XmlSchema::Flags f = 0);

  void
  serializeRegistration (::std::ostream& os,
                         const ::reginfo::Registration& x, 
                         ::flexisip::Xsd::XmlSchema::ErrorHandler& eh,
                         const ::flexisip::Xsd::XmlSchema::NamespaceInfomap& m = ::flexisip::Xsd::XmlSchema::NamespaceInfomap (),
                         const ::std::string& e = "UTF-8",
                         ::flexisip::Xsd::XmlSchema::Flags f = 0);

  void
  serializeRegistration (::std::ostream& os,
                         const ::reginfo::Registration& x, 
                         ::xercesc::DOMErrorHandler& eh,
                         const ::flexisip::Xsd::XmlSchema::NamespaceInfomap& m = ::flexisip::Xsd::XmlSchema::NamespaceInfomap (),
                         const ::std::string& e = "UTF-8",
                         ::flexisip::Xsd::XmlSchema::Flags f = 0);

  // Serialize to xercesc::XMLFormatTarget.
  //

  void
  serializeRegistration (::xercesc::XMLFormatTarget& ft,
                         const ::reginfo::Registration& x, 
                         const ::flexisip::Xsd::XmlSchema::NamespaceInfomap& m = ::flexisip::Xsd::XmlSchema::NamespaceInfomap (),
                         const ::std::string& e = "UTF-8",
                         ::flexisip::Xsd::XmlSchema::Flags f = 0);

  void
  serializeRegistration (::xercesc::XMLFormatTarget& ft,
                         const ::reginfo::Registration& x, 
                         ::flexisip::Xsd::XmlSchema::ErrorHandler& eh,
                         const ::flexisip::Xsd::XmlSchema::NamespaceInfomap& m = ::flexisip::Xsd::XmlSchema::NamespaceInfomap (),
                         const ::std::string& e = "UTF-8",
                         ::flexisip::Xsd::XmlSchema::Flags f = 0);

  void
  serializeRegistration (::xercesc::XMLFormatTarget& ft,
                         const ::reginfo::Registration& x, 
                         ::xercesc::DOMErrorHandler& eh,
                         const ::flexisip::Xsd::XmlSchema::NamespaceInfomap& m = ::flexisip::Xsd::XmlSchema::NamespaceInfomap (),
                         const ::std::string& e = "UTF-8",
                         ::flexisip::Xsd::XmlSchema::Flags f = 0);

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

  void
  serializeRegistration (::xercesc::DOMDocument& d,
                         const ::reginfo::Registration& x,
                         ::flexisip::Xsd::XmlSchema::Flags f = 0);

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

  ::flexisip::Xsd::XmlSchema::dom::unique_ptr< ::xercesc::DOMDocument >
  serializeRegistration (const ::reginfo::Registration& x, 
                         const ::flexisip::Xsd::XmlSchema::NamespaceInfomap& m = ::flexisip::Xsd::XmlSchema::NamespaceInfomap (),
                         ::flexisip::Xsd::XmlSchema::Flags f = 0);

  // Serialize to std::ostream.
  //

  void
  serializeContact (::std::ostream& os,
                    const ::reginfo::Contact& x, 
                    const ::flexisip::Xsd::XmlSchema::NamespaceInfomap& m = ::flexisip::Xsd::XmlSchema::NamespaceInfomap (),
                    const ::std::string& e = "UTF-8",
                    ::flexisip::Xsd::XmlSchema::Flags f = 0);

  void
  serializeContact (::std::ostream& os,
                    const ::reginfo::Contact& x, 
                    ::flexisip::Xsd::XmlSchema::ErrorHandler& eh,
                    const ::flexisip::Xsd::XmlSchema::NamespaceInfomap& m = ::flexisip::Xsd::XmlSchema::NamespaceInfomap (),
                    const ::std::string& e = "UTF-8",
                    ::flexisip::Xsd::XmlSchema::Flags f = 0);

  void
  serializeContact (::std::ostream& os,
                    const ::reginfo::Contact& x, 
                    ::xercesc::DOMErrorHandler& eh,
                    const ::flexisip::Xsd::XmlSchema::NamespaceInfomap& m = ::flexisip::Xsd::XmlSchema::NamespaceInfomap (),
                    const ::std::string& e = "UTF-8",
                    ::flexisip::Xsd::XmlSchema::Flags f = 0);

  // Serialize to xercesc::XMLFormatTarget.
  //

  void
  serializeContact (::xercesc::XMLFormatTarget& ft,
                    const ::reginfo::Contact& x, 
                    const ::flexisip::Xsd::XmlSchema::NamespaceInfomap& m = ::flexisip::Xsd::XmlSchema::NamespaceInfomap (),
                    const ::std::string& e = "UTF-8",
                    ::flexisip::Xsd::XmlSchema::Flags f = 0);

  void
  serializeContact (::xercesc::XMLFormatTarget& ft,
                    const ::reginfo::Contact& x, 
                    ::flexisip::Xsd::XmlSchema::ErrorHandler& eh,
                    const ::flexisip::Xsd::XmlSchema::NamespaceInfomap& m = ::flexisip::Xsd::XmlSchema::NamespaceInfomap (),
                    const ::std::string& e = "UTF-8",
                    ::flexisip::Xsd::XmlSchema::Flags f = 0);

  void
  serializeContact (::xercesc::XMLFormatTarget& ft,
                    const ::reginfo::Contact& x, 
                    ::xercesc::DOMErrorHandler& eh,
                    const ::flexisip::Xsd::XmlSchema::NamespaceInfomap& m = ::flexisip::Xsd::XmlSchema::NamespaceInfomap (),
                    const ::std::string& e = "UTF-8",
                    ::flexisip::Xsd::XmlSchema::Flags f = 0);

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

  void
  serializeContact (::xercesc::DOMDocument& d,
                    const ::reginfo::Contact& x,
                    ::flexisip::Xsd::XmlSchema::Flags f = 0);

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

  ::flexisip::Xsd::XmlSchema::dom::unique_ptr< ::xercesc::DOMDocument >
  serializeContact (const ::reginfo::Contact& x, 
                    const ::flexisip::Xsd::XmlSchema::NamespaceInfomap& m = ::flexisip::Xsd::XmlSchema::NamespaceInfomap (),
                    ::flexisip::Xsd::XmlSchema::Flags f = 0);

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

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

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

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

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

  void
  operator<< (::flexisip::Xsd::XmlSchema::ListStream&,
              const State&);

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

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

  void
  operator<< (::flexisip::Xsd::XmlSchema::ListStream&,
              const State1&);

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

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

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

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

  void
  operator<< (::flexisip::Xsd::XmlSchema::ListStream&,
              const State2&);

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

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

  void
  operator<< (::flexisip::Xsd::XmlSchema::ListStream&,
              const Event&);
}

#include <xsd/cxx/post.hxx>

// Begin epilogue.
//
#if __clang__ || __GNUC__ >= 4
	#pragma GCC diagnostic pop
#endif
//
// End epilogue.

#endif // XML_REGINFO_HH
