//
// h4503.cxx
//
// Code automatically generated by asnparse.
//

#ifdef P_USE_PRAGMA
#pragma implementation "h4503.h"
#endif

#include <ptlib.h>
#include "asn/h4503.h"

#define new PNEW


#if ! H323_DISABLE_H4503



#ifndef PASN_NOPRINTON
const static PASN_Names Names_H4503_H323CallDiversionOperations[]={
        {"activateDiversionQ",15}
       ,{"deactivateDiversionQ",16}
       ,{"interrogateDiversionQ",17}
       ,{"checkRestriction",18}
       ,{"callRerouting",19}
       ,{"divertingLegInformation1",20}
       ,{"divertingLegInformation2",21}
       ,{"divertingLegInformation3",22}
       ,{"divertingLegInformation4",100}
       ,{"cfnrDivertedLegFailed",23}
};
#endif
//
// H323CallDiversionOperations
//

H4503_H323CallDiversionOperations::H4503_H323CallDiversionOperations(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Enumeration(tag, tagClass, 100, false
#ifndef PASN_NOPRINTON
    ,(const PASN_Names *)Names_H4503_H323CallDiversionOperations,10
#endif
    )
{
}


H4503_H323CallDiversionOperations & H4503_H323CallDiversionOperations::operator=(unsigned v)
{
  SetValue(v);
  return *this;
}


PObject * H4503_H323CallDiversionOperations::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_H323CallDiversionOperations::Class()), PInvalidCast);
#endif
  return new H4503_H323CallDiversionOperations(*this);
}



#ifndef PASN_NOPRINTON
const static PASN_Names Names_H4503_RESULT_activateDiversionQ[]={
      {"extensionSeq",0}
     ,{"nonStandardData",1}
};
#endif
//
// RESULT-activateDiversionQ
//

H4503_RESULT_activateDiversionQ::H4503_RESULT_activateDiversionQ(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Choice(tag, tagClass, 2, false
#ifndef PASN_NOPRINTON
    ,(const PASN_Names *)Names_H4503_RESULT_activateDiversionQ,2
#endif
)
{
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_RESULT_activateDiversionQ::operator H4503_ExtensionSeq &() const
#else
H4503_RESULT_activateDiversionQ::operator H4503_ExtensionSeq &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


H4503_RESULT_activateDiversionQ::operator const H4503_ExtensionSeq &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_RESULT_activateDiversionQ::operator H225_NonStandardParameter &() const
#else
H4503_RESULT_activateDiversionQ::operator H225_NonStandardParameter &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


H4503_RESULT_activateDiversionQ::operator const H225_NonStandardParameter &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


PBoolean H4503_RESULT_activateDiversionQ::CreateObject()
{
  switch (tag) {
    case e_extensionSeq :
      choice = new H4503_ExtensionSeq();
      return true;
    case e_nonStandardData :
      choice = new H225_NonStandardParameter();
      return true;
  }

  choice = NULL;
  return false;
}


PObject * H4503_RESULT_activateDiversionQ::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_RESULT_activateDiversionQ::Class()), PInvalidCast);
#endif
  return new H4503_RESULT_activateDiversionQ(*this);
}



#ifndef PASN_NOPRINTON
const static PASN_Names Names_H4503_RESULT_deactivateDiversionQ[]={
      {"extensionSeq",0}
     ,{"nonStandardData",1}
};
#endif
//
// RESULT-deactivateDiversionQ
//

H4503_RESULT_deactivateDiversionQ::H4503_RESULT_deactivateDiversionQ(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Choice(tag, tagClass, 2, false
#ifndef PASN_NOPRINTON
    ,(const PASN_Names *)Names_H4503_RESULT_deactivateDiversionQ,2
#endif
)
{
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_RESULT_deactivateDiversionQ::operator H4503_ExtensionSeq &() const
#else
H4503_RESULT_deactivateDiversionQ::operator H4503_ExtensionSeq &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


H4503_RESULT_deactivateDiversionQ::operator const H4503_ExtensionSeq &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_RESULT_deactivateDiversionQ::operator H225_NonStandardParameter &() const
#else
H4503_RESULT_deactivateDiversionQ::operator H225_NonStandardParameter &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


H4503_RESULT_deactivateDiversionQ::operator const H225_NonStandardParameter &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


PBoolean H4503_RESULT_deactivateDiversionQ::CreateObject()
{
  switch (tag) {
    case e_extensionSeq :
      choice = new H4503_ExtensionSeq();
      return true;
    case e_nonStandardData :
      choice = new H225_NonStandardParameter();
      return true;
  }

  choice = NULL;
  return false;
}


PObject * H4503_RESULT_deactivateDiversionQ::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_RESULT_deactivateDiversionQ::Class()), PInvalidCast);
#endif
  return new H4503_RESULT_deactivateDiversionQ(*this);
}



#ifndef PASN_NOPRINTON
const static PASN_Names Names_H4503_RESULT_checkRestriction[]={
      {"extensionSeq",0}
     ,{"nonStandardData",1}
};
#endif
//
// RESULT-checkRestriction
//

H4503_RESULT_checkRestriction::H4503_RESULT_checkRestriction(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Choice(tag, tagClass, 2, false
#ifndef PASN_NOPRINTON
    ,(const PASN_Names *)Names_H4503_RESULT_checkRestriction,2
#endif
)
{
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_RESULT_checkRestriction::operator H4503_ExtensionSeq &() const
#else
H4503_RESULT_checkRestriction::operator H4503_ExtensionSeq &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


H4503_RESULT_checkRestriction::operator const H4503_ExtensionSeq &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_RESULT_checkRestriction::operator H225_NonStandardParameter &() const
#else
H4503_RESULT_checkRestriction::operator H225_NonStandardParameter &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


H4503_RESULT_checkRestriction::operator const H225_NonStandardParameter &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


PBoolean H4503_RESULT_checkRestriction::CreateObject()
{
  switch (tag) {
    case e_extensionSeq :
      choice = new H4503_ExtensionSeq();
      return true;
    case e_nonStandardData :
      choice = new H225_NonStandardParameter();
      return true;
  }

  choice = NULL;
  return false;
}


PObject * H4503_RESULT_checkRestriction::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_RESULT_checkRestriction::Class()), PInvalidCast);
#endif
  return new H4503_RESULT_checkRestriction(*this);
}



#ifndef PASN_NOPRINTON
const static PASN_Names Names_H4503_RESULT_callRerouting[]={
      {"extensionSeq",0}
     ,{"nonStandardData",1}
};
#endif
//
// RESULT-callRerouting
//

H4503_RESULT_callRerouting::H4503_RESULT_callRerouting(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Choice(tag, tagClass, 2, false
#ifndef PASN_NOPRINTON
    ,(const PASN_Names *)Names_H4503_RESULT_callRerouting,2
#endif
)
{
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_RESULT_callRerouting::operator H4503_ExtensionSeq &() const
#else
H4503_RESULT_callRerouting::operator H4503_ExtensionSeq &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


H4503_RESULT_callRerouting::operator const H4503_ExtensionSeq &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_RESULT_callRerouting::operator H225_NonStandardParameter &() const
#else
H4503_RESULT_callRerouting::operator H225_NonStandardParameter &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


H4503_RESULT_callRerouting::operator const H225_NonStandardParameter &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


PBoolean H4503_RESULT_callRerouting::CreateObject()
{
  switch (tag) {
    case e_extensionSeq :
      choice = new H4503_ExtensionSeq();
      return true;
    case e_nonStandardData :
      choice = new H225_NonStandardParameter();
      return true;
  }

  choice = NULL;
  return false;
}


PObject * H4503_RESULT_callRerouting::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_RESULT_callRerouting::Class()), PInvalidCast);
#endif
  return new H4503_RESULT_callRerouting(*this);
}



#ifndef PASN_NOPRINTON
const static PASN_Names Names_H4503_ARGUMENT_cfnrDivertedLegFailed[]={
      {"extensionSeq",0}
     ,{"nonStandardData",1}
};
#endif
//
// ARGUMENT-cfnrDivertedLegFailed
//

H4503_ARGUMENT_cfnrDivertedLegFailed::H4503_ARGUMENT_cfnrDivertedLegFailed(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Choice(tag, tagClass, 2, false
#ifndef PASN_NOPRINTON
    ,(const PASN_Names *)Names_H4503_ARGUMENT_cfnrDivertedLegFailed,2
#endif
)
{
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_ARGUMENT_cfnrDivertedLegFailed::operator H4503_ExtensionSeq &() const
#else
H4503_ARGUMENT_cfnrDivertedLegFailed::operator H4503_ExtensionSeq &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


H4503_ARGUMENT_cfnrDivertedLegFailed::operator const H4503_ExtensionSeq &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_ARGUMENT_cfnrDivertedLegFailed::operator H225_NonStandardParameter &() const
#else
H4503_ARGUMENT_cfnrDivertedLegFailed::operator H225_NonStandardParameter &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


H4503_ARGUMENT_cfnrDivertedLegFailed::operator const H225_NonStandardParameter &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


PBoolean H4503_ARGUMENT_cfnrDivertedLegFailed::CreateObject()
{
  switch (tag) {
    case e_extensionSeq :
      choice = new H4503_ExtensionSeq();
      return true;
    case e_nonStandardData :
      choice = new H225_NonStandardParameter();
      return true;
  }

  choice = NULL;
  return false;
}


PObject * H4503_ARGUMENT_cfnrDivertedLegFailed::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_ARGUMENT_cfnrDivertedLegFailed::Class()), PInvalidCast);
#endif
  return new H4503_ARGUMENT_cfnrDivertedLegFailed(*this);
}


#ifndef PASN_NOPRINTON
const static PASN_Names Names_H4503_DiversionReason[]={
        {"unknown",0}
       ,{"cfu",1}
       ,{"cfb",2}
       ,{"cfnr",3}
};
#endif
//
// DiversionReason
//

H4503_DiversionReason::H4503_DiversionReason(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Enumeration(tag, tagClass, 3, true
#ifndef PASN_NOPRINTON
    ,(const PASN_Names *)Names_H4503_DiversionReason,4
#endif
    )
{
}


H4503_DiversionReason & H4503_DiversionReason::operator=(unsigned v)
{
  SetValue(v);
  return *this;
}


PObject * H4503_DiversionReason::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_DiversionReason::Class()), PInvalidCast);
#endif
  return new H4503_DiversionReason(*this);
}


//
// IntResultList
//

H4503_IntResultList::H4503_IntResultList(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Array(tag, tagClass)
{
  SetConstraints(PASN_Object::FixedConstraint, 0, 29);
}


PASN_Object * H4503_IntResultList::CreateObject() const
{
  return new H4503_IntResult;
}


H4503_IntResult & H4503_IntResultList::operator[](PINDEX i) const
{
  return (H4503_IntResult &)array[i];
}


PObject * H4503_IntResultList::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_IntResultList::Class()), PInvalidCast);
#endif
  return new H4503_IntResultList(*this);
}


#ifndef PASN_NOPRINTON
const static PASN_Names Names_H4503_Procedure[]={
        {"cfu",0}
       ,{"cfb",1}
       ,{"cfnr",2}
};
#endif
//
// Procedure
//

H4503_Procedure::H4503_Procedure(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Enumeration(tag, tagClass, 2, true
#ifndef PASN_NOPRINTON
    ,(const PASN_Names *)Names_H4503_Procedure,3
#endif
    )
{
}


H4503_Procedure & H4503_Procedure::operator=(unsigned v)
{
  SetValue(v);
  return *this;
}


PObject * H4503_Procedure::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_Procedure::Class()), PInvalidCast);
#endif
  return new H4503_Procedure(*this);
}


#ifndef PASN_NOPRINTON
const static PASN_Names Names_H4503_SubscriptionOption[]={
        {"noNotification",0}
       ,{"notificationWithoutDivertedToNr",1}
       ,{"notificationWithDivertedToNr",2}
};
#endif
//
// SubscriptionOption
//

H4503_SubscriptionOption::H4503_SubscriptionOption(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Enumeration(tag, tagClass, 2, true
#ifndef PASN_NOPRINTON
    ,(const PASN_Names *)Names_H4503_SubscriptionOption,3
#endif
    )
{
}


H4503_SubscriptionOption & H4503_SubscriptionOption::operator=(unsigned v)
{
  SetValue(v);
  return *this;
}


PObject * H4503_SubscriptionOption::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_SubscriptionOption::Class()), PInvalidCast);
#endif
  return new H4503_SubscriptionOption(*this);
}


#ifndef PASN_NOPRINTON
const static PASN_Names Names_H4503_CallDiversionErrors[]={
        {"invalidDivertedNumber",12}
       ,{"specialServiceNumber",14}
       ,{"diversionToServedUserNumber",15}
       ,{"numberOfDiversionsExceeded",24}
       ,{"temporarilyUnavailable",1000}
       ,{"notAuthorized",1007}
       ,{"unspecified",1008}
};
#endif
//
// CallDiversionErrors
//

H4503_CallDiversionErrors::H4503_CallDiversionErrors(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Enumeration(tag, tagClass, 1008, false
#ifndef PASN_NOPRINTON
    ,(const PASN_Names *)Names_H4503_CallDiversionErrors,7
#endif
    )
{
}


H4503_CallDiversionErrors & H4503_CallDiversionErrors::operator=(unsigned v)
{
  SetValue(v);
  return *this;
}


PObject * H4503_CallDiversionErrors::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_CallDiversionErrors::Class()), PInvalidCast);
#endif
  return new H4503_CallDiversionErrors(*this);
}


#ifndef PASN_NOPRINTON
const static PASN_Names Names_H4503_BasicService[]={
        {"allServices",0}
};
#endif
//
// BasicService
//

H4503_BasicService::H4503_BasicService(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Enumeration(tag, tagClass, 0, true
#ifndef PASN_NOPRINTON
    ,(const PASN_Names *)Names_H4503_BasicService,1
#endif
    )
{
}


H4503_BasicService & H4503_BasicService::operator=(unsigned v)
{
  SetValue(v);
  return *this;
}


PObject * H4503_BasicService::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_BasicService::Class()), PInvalidCast);
#endif
  return new H4503_BasicService(*this);
}


//
// ExtensionSeq
//

H4503_ExtensionSeq::H4503_ExtensionSeq(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Array(tag, tagClass)
{
}


PASN_Object * H4503_ExtensionSeq::CreateObject() const
{
  return new H4501_Extension;
}


H4501_Extension & H4503_ExtensionSeq::operator[](PINDEX i) const
{
  return (H4501_Extension &)array[i];
}


PObject * H4503_ExtensionSeq::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_ExtensionSeq::Class()), PInvalidCast);
#endif
  return new H4503_ExtensionSeq(*this);
}



#ifndef PASN_NOPRINTON
const static PASN_Names Names_H4503_ARGUMENT_activateDiversionQ_extension[]={
      {"extensionSeq",0}
     ,{"nonStandardData",1}
};
#endif
//
// ARGUMENT-activateDiversionQ_extension
//

H4503_ARGUMENT_activateDiversionQ_extension::H4503_ARGUMENT_activateDiversionQ_extension(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Choice(tag, tagClass, 2, false
#ifndef PASN_NOPRINTON
    ,(const PASN_Names *)Names_H4503_ARGUMENT_activateDiversionQ_extension,2
#endif
)
{
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_ARGUMENT_activateDiversionQ_extension::operator H4503_ExtensionSeq &() const
#else
H4503_ARGUMENT_activateDiversionQ_extension::operator H4503_ExtensionSeq &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


H4503_ARGUMENT_activateDiversionQ_extension::operator const H4503_ExtensionSeq &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_ARGUMENT_activateDiversionQ_extension::operator H225_NonStandardParameter &() const
#else
H4503_ARGUMENT_activateDiversionQ_extension::operator H225_NonStandardParameter &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


H4503_ARGUMENT_activateDiversionQ_extension::operator const H225_NonStandardParameter &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


PBoolean H4503_ARGUMENT_activateDiversionQ_extension::CreateObject()
{
  switch (tag) {
    case e_extensionSeq :
      choice = new H4503_ExtensionSeq();
      return true;
    case e_nonStandardData :
      choice = new H225_NonStandardParameter();
      return true;
  }

  choice = NULL;
  return false;
}


PObject * H4503_ARGUMENT_activateDiversionQ_extension::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_ARGUMENT_activateDiversionQ_extension::Class()), PInvalidCast);
#endif
  return new H4503_ARGUMENT_activateDiversionQ_extension(*this);
}



#ifndef PASN_NOPRINTON
const static PASN_Names Names_H4503_ARGUMENT_deactivateDiversionQ_extension[]={
      {"extensionSeq",0}
     ,{"nonStandardData",1}
};
#endif
//
// ARGUMENT-deactivateDiversionQ_extension
//

H4503_ARGUMENT_deactivateDiversionQ_extension::H4503_ARGUMENT_deactivateDiversionQ_extension(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Choice(tag, tagClass, 2, false
#ifndef PASN_NOPRINTON
    ,(const PASN_Names *)Names_H4503_ARGUMENT_deactivateDiversionQ_extension,2
#endif
)
{
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_ARGUMENT_deactivateDiversionQ_extension::operator H4503_ExtensionSeq &() const
#else
H4503_ARGUMENT_deactivateDiversionQ_extension::operator H4503_ExtensionSeq &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


H4503_ARGUMENT_deactivateDiversionQ_extension::operator const H4503_ExtensionSeq &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_ARGUMENT_deactivateDiversionQ_extension::operator H225_NonStandardParameter &() const
#else
H4503_ARGUMENT_deactivateDiversionQ_extension::operator H225_NonStandardParameter &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


H4503_ARGUMENT_deactivateDiversionQ_extension::operator const H225_NonStandardParameter &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


PBoolean H4503_ARGUMENT_deactivateDiversionQ_extension::CreateObject()
{
  switch (tag) {
    case e_extensionSeq :
      choice = new H4503_ExtensionSeq();
      return true;
    case e_nonStandardData :
      choice = new H225_NonStandardParameter();
      return true;
  }

  choice = NULL;
  return false;
}


PObject * H4503_ARGUMENT_deactivateDiversionQ_extension::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_ARGUMENT_deactivateDiversionQ_extension::Class()), PInvalidCast);
#endif
  return new H4503_ARGUMENT_deactivateDiversionQ_extension(*this);
}



#ifndef PASN_NOPRINTON
const static PASN_Names Names_H4503_ARGUMENT_interrogateDiversionQ_extension[]={
      {"extensionSeq",0}
     ,{"nonStandardData",1}
};
#endif
//
// ARGUMENT-interrogateDiversionQ_extension
//

H4503_ARGUMENT_interrogateDiversionQ_extension::H4503_ARGUMENT_interrogateDiversionQ_extension(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Choice(tag, tagClass, 2, false
#ifndef PASN_NOPRINTON
    ,(const PASN_Names *)Names_H4503_ARGUMENT_interrogateDiversionQ_extension,2
#endif
)
{
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_ARGUMENT_interrogateDiversionQ_extension::operator H4503_ExtensionSeq &() const
#else
H4503_ARGUMENT_interrogateDiversionQ_extension::operator H4503_ExtensionSeq &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


H4503_ARGUMENT_interrogateDiversionQ_extension::operator const H4503_ExtensionSeq &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_ARGUMENT_interrogateDiversionQ_extension::operator H225_NonStandardParameter &() const
#else
H4503_ARGUMENT_interrogateDiversionQ_extension::operator H225_NonStandardParameter &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


H4503_ARGUMENT_interrogateDiversionQ_extension::operator const H225_NonStandardParameter &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


PBoolean H4503_ARGUMENT_interrogateDiversionQ_extension::CreateObject()
{
  switch (tag) {
    case e_extensionSeq :
      choice = new H4503_ExtensionSeq();
      return true;
    case e_nonStandardData :
      choice = new H225_NonStandardParameter();
      return true;
  }

  choice = NULL;
  return false;
}


PObject * H4503_ARGUMENT_interrogateDiversionQ_extension::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_ARGUMENT_interrogateDiversionQ_extension::Class()), PInvalidCast);
#endif
  return new H4503_ARGUMENT_interrogateDiversionQ_extension(*this);
}



#ifndef PASN_NOPRINTON
const static PASN_Names Names_H4503_ARGUMENT_checkRestriction_extension[]={
      {"extensionSeq",0}
     ,{"nonStandardData",1}
};
#endif
//
// ARGUMENT-checkRestriction_extension
//

H4503_ARGUMENT_checkRestriction_extension::H4503_ARGUMENT_checkRestriction_extension(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Choice(tag, tagClass, 2, false
#ifndef PASN_NOPRINTON
    ,(const PASN_Names *)Names_H4503_ARGUMENT_checkRestriction_extension,2
#endif
)
{
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_ARGUMENT_checkRestriction_extension::operator H4503_ExtensionSeq &() const
#else
H4503_ARGUMENT_checkRestriction_extension::operator H4503_ExtensionSeq &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


H4503_ARGUMENT_checkRestriction_extension::operator const H4503_ExtensionSeq &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_ARGUMENT_checkRestriction_extension::operator H225_NonStandardParameter &() const
#else
H4503_ARGUMENT_checkRestriction_extension::operator H225_NonStandardParameter &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


H4503_ARGUMENT_checkRestriction_extension::operator const H225_NonStandardParameter &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


PBoolean H4503_ARGUMENT_checkRestriction_extension::CreateObject()
{
  switch (tag) {
    case e_extensionSeq :
      choice = new H4503_ExtensionSeq();
      return true;
    case e_nonStandardData :
      choice = new H225_NonStandardParameter();
      return true;
  }

  choice = NULL;
  return false;
}


PObject * H4503_ARGUMENT_checkRestriction_extension::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_ARGUMENT_checkRestriction_extension::Class()), PInvalidCast);
#endif
  return new H4503_ARGUMENT_checkRestriction_extension(*this);
}



#ifndef PASN_NOPRINTON
const static PASN_Names Names_H4503_ARGUMENT_callRerouting_extension[]={
      {"extensionSeq",0}
     ,{"nonStandardData",1}
};
#endif
//
// ARGUMENT-callRerouting_extension
//

H4503_ARGUMENT_callRerouting_extension::H4503_ARGUMENT_callRerouting_extension(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Choice(tag, tagClass, 2, false
#ifndef PASN_NOPRINTON
    ,(const PASN_Names *)Names_H4503_ARGUMENT_callRerouting_extension,2
#endif
)
{
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_ARGUMENT_callRerouting_extension::operator H4503_ExtensionSeq &() const
#else
H4503_ARGUMENT_callRerouting_extension::operator H4503_ExtensionSeq &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


H4503_ARGUMENT_callRerouting_extension::operator const H4503_ExtensionSeq &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_ARGUMENT_callRerouting_extension::operator H225_NonStandardParameter &() const
#else
H4503_ARGUMENT_callRerouting_extension::operator H225_NonStandardParameter &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


H4503_ARGUMENT_callRerouting_extension::operator const H225_NonStandardParameter &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


PBoolean H4503_ARGUMENT_callRerouting_extension::CreateObject()
{
  switch (tag) {
    case e_extensionSeq :
      choice = new H4503_ExtensionSeq();
      return true;
    case e_nonStandardData :
      choice = new H225_NonStandardParameter();
      return true;
  }

  choice = NULL;
  return false;
}


PObject * H4503_ARGUMENT_callRerouting_extension::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_ARGUMENT_callRerouting_extension::Class()), PInvalidCast);
#endif
  return new H4503_ARGUMENT_callRerouting_extension(*this);
}



#ifndef PASN_NOPRINTON
const static PASN_Names Names_H4503_ARGUMENT_divertingLegInformation1_extension[]={
      {"extensionSeq",0}
     ,{"nonStandardData",1}
};
#endif
//
// ARGUMENT-divertingLegInformation1_extension
//

H4503_ARGUMENT_divertingLegInformation1_extension::H4503_ARGUMENT_divertingLegInformation1_extension(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Choice(tag, tagClass, 2, false
#ifndef PASN_NOPRINTON
    ,(const PASN_Names *)Names_H4503_ARGUMENT_divertingLegInformation1_extension,2
#endif
)
{
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_ARGUMENT_divertingLegInformation1_extension::operator H4503_ExtensionSeq &() const
#else
H4503_ARGUMENT_divertingLegInformation1_extension::operator H4503_ExtensionSeq &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


H4503_ARGUMENT_divertingLegInformation1_extension::operator const H4503_ExtensionSeq &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_ARGUMENT_divertingLegInformation1_extension::operator H225_NonStandardParameter &() const
#else
H4503_ARGUMENT_divertingLegInformation1_extension::operator H225_NonStandardParameter &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


H4503_ARGUMENT_divertingLegInformation1_extension::operator const H225_NonStandardParameter &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


PBoolean H4503_ARGUMENT_divertingLegInformation1_extension::CreateObject()
{
  switch (tag) {
    case e_extensionSeq :
      choice = new H4503_ExtensionSeq();
      return true;
    case e_nonStandardData :
      choice = new H225_NonStandardParameter();
      return true;
  }

  choice = NULL;
  return false;
}


PObject * H4503_ARGUMENT_divertingLegInformation1_extension::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_ARGUMENT_divertingLegInformation1_extension::Class()), PInvalidCast);
#endif
  return new H4503_ARGUMENT_divertingLegInformation1_extension(*this);
}



#ifndef PASN_NOPRINTON
const static PASN_Names Names_H4503_ARGUMENT_divertingLegInformation2_extension[]={
      {"extensionSeq",0}
     ,{"nonStandardData",1}
};
#endif
//
// ARGUMENT-divertingLegInformation2_extension
//

H4503_ARGUMENT_divertingLegInformation2_extension::H4503_ARGUMENT_divertingLegInformation2_extension(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Choice(tag, tagClass, 2, false
#ifndef PASN_NOPRINTON
    ,(const PASN_Names *)Names_H4503_ARGUMENT_divertingLegInformation2_extension,2
#endif
)
{
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_ARGUMENT_divertingLegInformation2_extension::operator H4503_ExtensionSeq &() const
#else
H4503_ARGUMENT_divertingLegInformation2_extension::operator H4503_ExtensionSeq &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


H4503_ARGUMENT_divertingLegInformation2_extension::operator const H4503_ExtensionSeq &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_ARGUMENT_divertingLegInformation2_extension::operator H225_NonStandardParameter &() const
#else
H4503_ARGUMENT_divertingLegInformation2_extension::operator H225_NonStandardParameter &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


H4503_ARGUMENT_divertingLegInformation2_extension::operator const H225_NonStandardParameter &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


PBoolean H4503_ARGUMENT_divertingLegInformation2_extension::CreateObject()
{
  switch (tag) {
    case e_extensionSeq :
      choice = new H4503_ExtensionSeq();
      return true;
    case e_nonStandardData :
      choice = new H225_NonStandardParameter();
      return true;
  }

  choice = NULL;
  return false;
}


PObject * H4503_ARGUMENT_divertingLegInformation2_extension::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_ARGUMENT_divertingLegInformation2_extension::Class()), PInvalidCast);
#endif
  return new H4503_ARGUMENT_divertingLegInformation2_extension(*this);
}



#ifndef PASN_NOPRINTON
const static PASN_Names Names_H4503_ARGUMENT_divertingLegInformation3_extension[]={
      {"extensionSeq",0}
     ,{"nonStandardData",1}
};
#endif
//
// ARGUMENT-divertingLegInformation3_extension
//

H4503_ARGUMENT_divertingLegInformation3_extension::H4503_ARGUMENT_divertingLegInformation3_extension(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Choice(tag, tagClass, 2, false
#ifndef PASN_NOPRINTON
    ,(const PASN_Names *)Names_H4503_ARGUMENT_divertingLegInformation3_extension,2
#endif
)
{
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_ARGUMENT_divertingLegInformation3_extension::operator H4503_ExtensionSeq &() const
#else
H4503_ARGUMENT_divertingLegInformation3_extension::operator H4503_ExtensionSeq &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


H4503_ARGUMENT_divertingLegInformation3_extension::operator const H4503_ExtensionSeq &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_ARGUMENT_divertingLegInformation3_extension::operator H225_NonStandardParameter &() const
#else
H4503_ARGUMENT_divertingLegInformation3_extension::operator H225_NonStandardParameter &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


H4503_ARGUMENT_divertingLegInformation3_extension::operator const H225_NonStandardParameter &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


PBoolean H4503_ARGUMENT_divertingLegInformation3_extension::CreateObject()
{
  switch (tag) {
    case e_extensionSeq :
      choice = new H4503_ExtensionSeq();
      return true;
    case e_nonStandardData :
      choice = new H225_NonStandardParameter();
      return true;
  }

  choice = NULL;
  return false;
}


PObject * H4503_ARGUMENT_divertingLegInformation3_extension::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_ARGUMENT_divertingLegInformation3_extension::Class()), PInvalidCast);
#endif
  return new H4503_ARGUMENT_divertingLegInformation3_extension(*this);
}



#ifndef PASN_NOPRINTON
const static PASN_Names Names_H4503_ARGUMENT_divertingLegInformation4_extension[]={
      {"extensionSeq",0}
     ,{"nonStandardData",1}
};
#endif
//
// ARGUMENT-divertingLegInformation4_extension
//

H4503_ARGUMENT_divertingLegInformation4_extension::H4503_ARGUMENT_divertingLegInformation4_extension(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Choice(tag, tagClass, 2, false
#ifndef PASN_NOPRINTON
    ,(const PASN_Names *)Names_H4503_ARGUMENT_divertingLegInformation4_extension,2
#endif
)
{
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_ARGUMENT_divertingLegInformation4_extension::operator H4503_ExtensionSeq &() const
#else
H4503_ARGUMENT_divertingLegInformation4_extension::operator H4503_ExtensionSeq &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


H4503_ARGUMENT_divertingLegInformation4_extension::operator const H4503_ExtensionSeq &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_ARGUMENT_divertingLegInformation4_extension::operator H225_NonStandardParameter &() const
#else
H4503_ARGUMENT_divertingLegInformation4_extension::operator H225_NonStandardParameter &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


H4503_ARGUMENT_divertingLegInformation4_extension::operator const H225_NonStandardParameter &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


PBoolean H4503_ARGUMENT_divertingLegInformation4_extension::CreateObject()
{
  switch (tag) {
    case e_extensionSeq :
      choice = new H4503_ExtensionSeq();
      return true;
    case e_nonStandardData :
      choice = new H225_NonStandardParameter();
      return true;
  }

  choice = NULL;
  return false;
}


PObject * H4503_ARGUMENT_divertingLegInformation4_extension::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_ARGUMENT_divertingLegInformation4_extension::Class()), PInvalidCast);
#endif
  return new H4503_ARGUMENT_divertingLegInformation4_extension(*this);
}



#ifndef PASN_NOPRINTON
const static PASN_Names Names_H4503_IntResult_extension[]={
      {"extensionSeq",0}
     ,{"nonStandardData",1}
};
#endif
//
// IntResult_extension
//

H4503_IntResult_extension::H4503_IntResult_extension(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Choice(tag, tagClass, 2, false
#ifndef PASN_NOPRINTON
    ,(const PASN_Names *)Names_H4503_IntResult_extension,2
#endif
)
{
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_IntResult_extension::operator H4503_ExtensionSeq &() const
#else
H4503_IntResult_extension::operator H4503_ExtensionSeq &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


H4503_IntResult_extension::operator const H4503_ExtensionSeq &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H4503_ExtensionSeq), PInvalidCast);
#endif
  return *(H4503_ExtensionSeq *)choice;
}


#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
H4503_IntResult_extension::operator H225_NonStandardParameter &() const
#else
H4503_IntResult_extension::operator H225_NonStandardParameter &()
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


H4503_IntResult_extension::operator const H225_NonStandardParameter &() const
#endif
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(PAssertNULL(choice), H225_NonStandardParameter), PInvalidCast);
#endif
  return *(H225_NonStandardParameter *)choice;
}


PBoolean H4503_IntResult_extension::CreateObject()
{
  switch (tag) {
    case e_extensionSeq :
      choice = new H4503_ExtensionSeq();
      return true;
    case e_nonStandardData :
      choice = new H225_NonStandardParameter();
      return true;
  }

  choice = NULL;
  return false;
}


PObject * H4503_IntResult_extension::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_IntResult_extension::Class()), PInvalidCast);
#endif
  return new H4503_IntResult_extension(*this);
}


//
// ARGUMENT-activateDiversionQ
//

H4503_ARGUMENT_activateDiversionQ::H4503_ARGUMENT_activateDiversionQ(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Sequence(tag, tagClass, 1, true, 0)
{
}


#ifndef PASN_NOPRINTON
void H4503_ARGUMENT_activateDiversionQ::PrintOn(ostream & strm) const
{
  std::streamsize indent = strm.precision() + 2;
  strm << "{\n";
  strm << setw(indent+12) << "procedure = " << setprecision(indent) << m_procedure << '\n';
  strm << setw(indent+15) << "basicService = " << setprecision(indent) << m_basicService << '\n';
  strm << setw(indent+20) << "divertedToAddress = " << setprecision(indent) << m_divertedToAddress << '\n';
  strm << setw(indent+15) << "servedUserNr = " << setprecision(indent) << m_servedUserNr << '\n';
  strm << setw(indent+19) << "activatingUserNr = " << setprecision(indent) << m_activatingUserNr << '\n';
  if (HasOptionalField(e_extension))
    strm << setw(indent+12) << "extension = " << setprecision(indent) << m_extension << '\n';
  strm << setw(indent-1) << setprecision(indent-2) << "}";
}
#endif


PObject::Comparison H4503_ARGUMENT_activateDiversionQ::Compare(const PObject & obj) const
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(&obj, H4503_ARGUMENT_activateDiversionQ), PInvalidCast);
#endif
  const H4503_ARGUMENT_activateDiversionQ & other = (const H4503_ARGUMENT_activateDiversionQ &)obj;

  Comparison result;

  if ((result = m_procedure.Compare(other.m_procedure)) != EqualTo)
    return result;
  if ((result = m_basicService.Compare(other.m_basicService)) != EqualTo)
    return result;
  if ((result = m_divertedToAddress.Compare(other.m_divertedToAddress)) != EqualTo)
    return result;
  if ((result = m_servedUserNr.Compare(other.m_servedUserNr)) != EqualTo)
    return result;
  if ((result = m_activatingUserNr.Compare(other.m_activatingUserNr)) != EqualTo)
    return result;
  if ((result = m_extension.Compare(other.m_extension)) != EqualTo)
    return result;

  return PASN_Sequence::Compare(other);
}


PINDEX H4503_ARGUMENT_activateDiversionQ::GetDataLength() const
{
  PINDEX length = 0;
  length += m_procedure.GetObjectLength();
  length += m_basicService.GetObjectLength();
  length += m_divertedToAddress.GetObjectLength();
  length += m_servedUserNr.GetObjectLength();
  length += m_activatingUserNr.GetObjectLength();
  if (HasOptionalField(e_extension))
    length += m_extension.GetObjectLength();
  return length;
}


PBoolean H4503_ARGUMENT_activateDiversionQ::Decode(PASN_Stream & strm)
{
  if (!PreambleDecode(strm))
    return false;

  if (!m_procedure.Decode(strm))
    return false;
  if (!m_basicService.Decode(strm))
    return false;
  if (!m_divertedToAddress.Decode(strm))
    return false;
  if (!m_servedUserNr.Decode(strm))
    return false;
  if (!m_activatingUserNr.Decode(strm))
    return false;
  if (HasOptionalField(e_extension) && !m_extension.Decode(strm))
    return false;

  return UnknownExtensionsDecode(strm);
}


void H4503_ARGUMENT_activateDiversionQ::Encode(PASN_Stream & strm) const
{
  PreambleEncode(strm);

  m_procedure.Encode(strm);
  m_basicService.Encode(strm);
  m_divertedToAddress.Encode(strm);
  m_servedUserNr.Encode(strm);
  m_activatingUserNr.Encode(strm);
  if (HasOptionalField(e_extension))
    m_extension.Encode(strm);

  UnknownExtensionsEncode(strm);
}


PObject * H4503_ARGUMENT_activateDiversionQ::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_ARGUMENT_activateDiversionQ::Class()), PInvalidCast);
#endif
  return new H4503_ARGUMENT_activateDiversionQ(*this);
}


//
// ARGUMENT-deactivateDiversionQ
//

H4503_ARGUMENT_deactivateDiversionQ::H4503_ARGUMENT_deactivateDiversionQ(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Sequence(tag, tagClass, 1, true, 0)
{
}


#ifndef PASN_NOPRINTON
void H4503_ARGUMENT_deactivateDiversionQ::PrintOn(ostream & strm) const
{
  std::streamsize indent = strm.precision() + 2;
  strm << "{\n";
  strm << setw(indent+12) << "procedure = " << setprecision(indent) << m_procedure << '\n';
  strm << setw(indent+15) << "basicService = " << setprecision(indent) << m_basicService << '\n';
  strm << setw(indent+15) << "servedUserNr = " << setprecision(indent) << m_servedUserNr << '\n';
  strm << setw(indent+21) << "deactivatingUserNr = " << setprecision(indent) << m_deactivatingUserNr << '\n';
  if (HasOptionalField(e_extension))
    strm << setw(indent+12) << "extension = " << setprecision(indent) << m_extension << '\n';
  strm << setw(indent-1) << setprecision(indent-2) << "}";
}
#endif


PObject::Comparison H4503_ARGUMENT_deactivateDiversionQ::Compare(const PObject & obj) const
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(&obj, H4503_ARGUMENT_deactivateDiversionQ), PInvalidCast);
#endif
  const H4503_ARGUMENT_deactivateDiversionQ & other = (const H4503_ARGUMENT_deactivateDiversionQ &)obj;

  Comparison result;

  if ((result = m_procedure.Compare(other.m_procedure)) != EqualTo)
    return result;
  if ((result = m_basicService.Compare(other.m_basicService)) != EqualTo)
    return result;
  if ((result = m_servedUserNr.Compare(other.m_servedUserNr)) != EqualTo)
    return result;
  if ((result = m_deactivatingUserNr.Compare(other.m_deactivatingUserNr)) != EqualTo)
    return result;
  if ((result = m_extension.Compare(other.m_extension)) != EqualTo)
    return result;

  return PASN_Sequence::Compare(other);
}


PINDEX H4503_ARGUMENT_deactivateDiversionQ::GetDataLength() const
{
  PINDEX length = 0;
  length += m_procedure.GetObjectLength();
  length += m_basicService.GetObjectLength();
  length += m_servedUserNr.GetObjectLength();
  length += m_deactivatingUserNr.GetObjectLength();
  if (HasOptionalField(e_extension))
    length += m_extension.GetObjectLength();
  return length;
}


PBoolean H4503_ARGUMENT_deactivateDiversionQ::Decode(PASN_Stream & strm)
{
  if (!PreambleDecode(strm))
    return false;

  if (!m_procedure.Decode(strm))
    return false;
  if (!m_basicService.Decode(strm))
    return false;
  if (!m_servedUserNr.Decode(strm))
    return false;
  if (!m_deactivatingUserNr.Decode(strm))
    return false;
  if (HasOptionalField(e_extension) && !m_extension.Decode(strm))
    return false;

  return UnknownExtensionsDecode(strm);
}


void H4503_ARGUMENT_deactivateDiversionQ::Encode(PASN_Stream & strm) const
{
  PreambleEncode(strm);

  m_procedure.Encode(strm);
  m_basicService.Encode(strm);
  m_servedUserNr.Encode(strm);
  m_deactivatingUserNr.Encode(strm);
  if (HasOptionalField(e_extension))
    m_extension.Encode(strm);

  UnknownExtensionsEncode(strm);
}


PObject * H4503_ARGUMENT_deactivateDiversionQ::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_ARGUMENT_deactivateDiversionQ::Class()), PInvalidCast);
#endif
  return new H4503_ARGUMENT_deactivateDiversionQ(*this);
}


//
// ARGUMENT-interrogateDiversionQ
//

H4503_ARGUMENT_interrogateDiversionQ::H4503_ARGUMENT_interrogateDiversionQ(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Sequence(tag, tagClass, 1, true, 0)
{
}


#ifndef PASN_NOPRINTON
void H4503_ARGUMENT_interrogateDiversionQ::PrintOn(ostream & strm) const
{
  std::streamsize indent = strm.precision() + 2;
  strm << "{\n";
  strm << setw(indent+12) << "procedure = " << setprecision(indent) << m_procedure << '\n';
  strm << setw(indent+15) << "basicService = " << setprecision(indent) << m_basicService << '\n';
  strm << setw(indent+15) << "servedUserNr = " << setprecision(indent) << m_servedUserNr << '\n';
  strm << setw(indent+22) << "interrogatingUserNr = " << setprecision(indent) << m_interrogatingUserNr << '\n';
  if (HasOptionalField(e_extension))
    strm << setw(indent+12) << "extension = " << setprecision(indent) << m_extension << '\n';
  strm << setw(indent-1) << setprecision(indent-2) << "}";
}
#endif


PObject::Comparison H4503_ARGUMENT_interrogateDiversionQ::Compare(const PObject & obj) const
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(&obj, H4503_ARGUMENT_interrogateDiversionQ), PInvalidCast);
#endif
  const H4503_ARGUMENT_interrogateDiversionQ & other = (const H4503_ARGUMENT_interrogateDiversionQ &)obj;

  Comparison result;

  if ((result = m_procedure.Compare(other.m_procedure)) != EqualTo)
    return result;
  if ((result = m_basicService.Compare(other.m_basicService)) != EqualTo)
    return result;
  if ((result = m_servedUserNr.Compare(other.m_servedUserNr)) != EqualTo)
    return result;
  if ((result = m_interrogatingUserNr.Compare(other.m_interrogatingUserNr)) != EqualTo)
    return result;
  if ((result = m_extension.Compare(other.m_extension)) != EqualTo)
    return result;

  return PASN_Sequence::Compare(other);
}


PINDEX H4503_ARGUMENT_interrogateDiversionQ::GetDataLength() const
{
  PINDEX length = 0;
  length += m_procedure.GetObjectLength();
  length += m_basicService.GetObjectLength();
  length += m_servedUserNr.GetObjectLength();
  length += m_interrogatingUserNr.GetObjectLength();
  if (HasOptionalField(e_extension))
    length += m_extension.GetObjectLength();
  return length;
}


PBoolean H4503_ARGUMENT_interrogateDiversionQ::Decode(PASN_Stream & strm)
{
  if (!PreambleDecode(strm))
    return false;

  if (!m_procedure.Decode(strm))
    return false;
  if (!m_basicService.Decode(strm))
    return false;
  if (!m_servedUserNr.Decode(strm))
    return false;
  if (!m_interrogatingUserNr.Decode(strm))
    return false;
  if (HasOptionalField(e_extension) && !m_extension.Decode(strm))
    return false;

  return UnknownExtensionsDecode(strm);
}


void H4503_ARGUMENT_interrogateDiversionQ::Encode(PASN_Stream & strm) const
{
  PreambleEncode(strm);

  m_procedure.Encode(strm);
  m_basicService.Encode(strm);
  m_servedUserNr.Encode(strm);
  m_interrogatingUserNr.Encode(strm);
  if (HasOptionalField(e_extension))
    m_extension.Encode(strm);

  UnknownExtensionsEncode(strm);
}


PObject * H4503_ARGUMENT_interrogateDiversionQ::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_ARGUMENT_interrogateDiversionQ::Class()), PInvalidCast);
#endif
  return new H4503_ARGUMENT_interrogateDiversionQ(*this);
}


//
// ARGUMENT-checkRestriction
//

H4503_ARGUMENT_checkRestriction::H4503_ARGUMENT_checkRestriction(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Sequence(tag, tagClass, 1, true, 0)
{
}


#ifndef PASN_NOPRINTON
void H4503_ARGUMENT_checkRestriction::PrintOn(ostream & strm) const
{
  std::streamsize indent = strm.precision() + 2;
  strm << "{\n";
  strm << setw(indent+15) << "servedUserNr = " << setprecision(indent) << m_servedUserNr << '\n';
  strm << setw(indent+15) << "basicService = " << setprecision(indent) << m_basicService << '\n';
  strm << setw(indent+15) << "divertedToNr = " << setprecision(indent) << m_divertedToNr << '\n';
  if (HasOptionalField(e_extension))
    strm << setw(indent+12) << "extension = " << setprecision(indent) << m_extension << '\n';
  strm << setw(indent-1) << setprecision(indent-2) << "}";
}
#endif


PObject::Comparison H4503_ARGUMENT_checkRestriction::Compare(const PObject & obj) const
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(&obj, H4503_ARGUMENT_checkRestriction), PInvalidCast);
#endif
  const H4503_ARGUMENT_checkRestriction & other = (const H4503_ARGUMENT_checkRestriction &)obj;

  Comparison result;

  if ((result = m_servedUserNr.Compare(other.m_servedUserNr)) != EqualTo)
    return result;
  if ((result = m_basicService.Compare(other.m_basicService)) != EqualTo)
    return result;
  if ((result = m_divertedToNr.Compare(other.m_divertedToNr)) != EqualTo)
    return result;
  if ((result = m_extension.Compare(other.m_extension)) != EqualTo)
    return result;

  return PASN_Sequence::Compare(other);
}


PINDEX H4503_ARGUMENT_checkRestriction::GetDataLength() const
{
  PINDEX length = 0;
  length += m_servedUserNr.GetObjectLength();
  length += m_basicService.GetObjectLength();
  length += m_divertedToNr.GetObjectLength();
  if (HasOptionalField(e_extension))
    length += m_extension.GetObjectLength();
  return length;
}


PBoolean H4503_ARGUMENT_checkRestriction::Decode(PASN_Stream & strm)
{
  if (!PreambleDecode(strm))
    return false;

  if (!m_servedUserNr.Decode(strm))
    return false;
  if (!m_basicService.Decode(strm))
    return false;
  if (!m_divertedToNr.Decode(strm))
    return false;
  if (HasOptionalField(e_extension) && !m_extension.Decode(strm))
    return false;

  return UnknownExtensionsDecode(strm);
}


void H4503_ARGUMENT_checkRestriction::Encode(PASN_Stream & strm) const
{
  PreambleEncode(strm);

  m_servedUserNr.Encode(strm);
  m_basicService.Encode(strm);
  m_divertedToNr.Encode(strm);
  if (HasOptionalField(e_extension))
    m_extension.Encode(strm);

  UnknownExtensionsEncode(strm);
}


PObject * H4503_ARGUMENT_checkRestriction::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_ARGUMENT_checkRestriction::Class()), PInvalidCast);
#endif
  return new H4503_ARGUMENT_checkRestriction(*this);
}


//
// ARGUMENT-callRerouting
//

H4503_ARGUMENT_callRerouting::H4503_ARGUMENT_callRerouting(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Sequence(tag, tagClass, 7, true, 0)
{
  m_diversionCounter.SetConstraints(PASN_Object::FixedConstraint, 1, 15);
  m_callingInfo.SetConstraints(PASN_Object::FixedConstraint, 1, 128);
  m_redirectingInfo.SetConstraints(PASN_Object::FixedConstraint, 1, 128);
  m_originalCalledInfo.SetConstraints(PASN_Object::FixedConstraint, 1, 128);
}


#ifndef PASN_NOPRINTON
void H4503_ARGUMENT_callRerouting::PrintOn(ostream & strm) const
{
  std::streamsize indent = strm.precision() + 2;
  strm << "{\n";
  strm << setw(indent+18) << "reroutingReason = " << setprecision(indent) << m_reroutingReason << '\n';
  if (HasOptionalField(e_originalReroutingReason))
    strm << setw(indent+26) << "originalReroutingReason = " << setprecision(indent) << m_originalReroutingReason << '\n';
  strm << setw(indent+16) << "calledAddress = " << setprecision(indent) << m_calledAddress << '\n';
  strm << setw(indent+19) << "diversionCounter = " << setprecision(indent) << m_diversionCounter << '\n';
  strm << setw(indent+18) << "h225InfoElement = " << setprecision(indent) << m_h225InfoElement << '\n';
  strm << setw(indent+18) << "lastReroutingNr = " << setprecision(indent) << m_lastReroutingNr << '\n';
  strm << setw(indent+21) << "subscriptionOption = " << setprecision(indent) << m_subscriptionOption << '\n';
  if (HasOptionalField(e_callingPartySubaddress))
    strm << setw(indent+25) << "callingPartySubaddress = " << setprecision(indent) << m_callingPartySubaddress << '\n';
  strm << setw(indent+16) << "callingNumber = " << setprecision(indent) << m_callingNumber << '\n';
  if (HasOptionalField(e_callingInfo))
    strm << setw(indent+14) << "callingInfo = " << setprecision(indent) << m_callingInfo << '\n';
  if (HasOptionalField(e_originalCalledNr))
    strm << setw(indent+19) << "originalCalledNr = " << setprecision(indent) << m_originalCalledNr << '\n';
  if (HasOptionalField(e_redirectingInfo))
    strm << setw(indent+18) << "redirectingInfo = " << setprecision(indent) << m_redirectingInfo << '\n';
  if (HasOptionalField(e_originalCalledInfo))
    strm << setw(indent+21) << "originalCalledInfo = " << setprecision(indent) << m_originalCalledInfo << '\n';
  if (HasOptionalField(e_extension))
    strm << setw(indent+12) << "extension = " << setprecision(indent) << m_extension << '\n';
  strm << setw(indent-1) << setprecision(indent-2) << "}";
}
#endif


PObject::Comparison H4503_ARGUMENT_callRerouting::Compare(const PObject & obj) const
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(&obj, H4503_ARGUMENT_callRerouting), PInvalidCast);
#endif
  const H4503_ARGUMENT_callRerouting & other = (const H4503_ARGUMENT_callRerouting &)obj;

  Comparison result;

  if ((result = m_reroutingReason.Compare(other.m_reroutingReason)) != EqualTo)
    return result;
  if ((result = m_originalReroutingReason.Compare(other.m_originalReroutingReason)) != EqualTo)
    return result;
  if ((result = m_calledAddress.Compare(other.m_calledAddress)) != EqualTo)
    return result;
  if ((result = m_diversionCounter.Compare(other.m_diversionCounter)) != EqualTo)
    return result;
  if ((result = m_h225InfoElement.Compare(other.m_h225InfoElement)) != EqualTo)
    return result;
  if ((result = m_lastReroutingNr.Compare(other.m_lastReroutingNr)) != EqualTo)
    return result;
  if ((result = m_subscriptionOption.Compare(other.m_subscriptionOption)) != EqualTo)
    return result;
  if ((result = m_callingPartySubaddress.Compare(other.m_callingPartySubaddress)) != EqualTo)
    return result;
  if ((result = m_callingNumber.Compare(other.m_callingNumber)) != EqualTo)
    return result;
  if ((result = m_callingInfo.Compare(other.m_callingInfo)) != EqualTo)
    return result;
  if ((result = m_originalCalledNr.Compare(other.m_originalCalledNr)) != EqualTo)
    return result;
  if ((result = m_redirectingInfo.Compare(other.m_redirectingInfo)) != EqualTo)
    return result;
  if ((result = m_originalCalledInfo.Compare(other.m_originalCalledInfo)) != EqualTo)
    return result;
  if ((result = m_extension.Compare(other.m_extension)) != EqualTo)
    return result;

  return PASN_Sequence::Compare(other);
}


PINDEX H4503_ARGUMENT_callRerouting::GetDataLength() const
{
  PINDEX length = 0;
  length += m_reroutingReason.GetObjectLength();
  if (HasOptionalField(e_originalReroutingReason))
    length += m_originalReroutingReason.GetObjectLength();
  length += m_calledAddress.GetObjectLength();
  length += m_diversionCounter.GetObjectLength();
  length += m_h225InfoElement.GetObjectLength();
  length += m_lastReroutingNr.GetObjectLength();
  length += m_subscriptionOption.GetObjectLength();
  if (HasOptionalField(e_callingPartySubaddress))
    length += m_callingPartySubaddress.GetObjectLength();
  length += m_callingNumber.GetObjectLength();
  if (HasOptionalField(e_callingInfo))
    length += m_callingInfo.GetObjectLength();
  if (HasOptionalField(e_originalCalledNr))
    length += m_originalCalledNr.GetObjectLength();
  if (HasOptionalField(e_redirectingInfo))
    length += m_redirectingInfo.GetObjectLength();
  if (HasOptionalField(e_originalCalledInfo))
    length += m_originalCalledInfo.GetObjectLength();
  if (HasOptionalField(e_extension))
    length += m_extension.GetObjectLength();
  return length;
}


PBoolean H4503_ARGUMENT_callRerouting::Decode(PASN_Stream & strm)
{
  if (!PreambleDecode(strm))
    return false;

  if (!m_reroutingReason.Decode(strm))
    return false;
  if (HasOptionalField(e_originalReroutingReason) && !m_originalReroutingReason.Decode(strm))
    return false;
  if (!m_calledAddress.Decode(strm))
    return false;
  if (!m_diversionCounter.Decode(strm))
    return false;
  if (!m_h225InfoElement.Decode(strm))
    return false;
  if (!m_lastReroutingNr.Decode(strm))
    return false;
  if (!m_subscriptionOption.Decode(strm))
    return false;
  if (HasOptionalField(e_callingPartySubaddress) && !m_callingPartySubaddress.Decode(strm))
    return false;
  if (!m_callingNumber.Decode(strm))
    return false;
  if (HasOptionalField(e_callingInfo) && !m_callingInfo.Decode(strm))
    return false;
  if (HasOptionalField(e_originalCalledNr) && !m_originalCalledNr.Decode(strm))
    return false;
  if (HasOptionalField(e_redirectingInfo) && !m_redirectingInfo.Decode(strm))
    return false;
  if (HasOptionalField(e_originalCalledInfo) && !m_originalCalledInfo.Decode(strm))
    return false;
  if (HasOptionalField(e_extension) && !m_extension.Decode(strm))
    return false;

  return UnknownExtensionsDecode(strm);
}


void H4503_ARGUMENT_callRerouting::Encode(PASN_Stream & strm) const
{
  PreambleEncode(strm);

  m_reroutingReason.Encode(strm);
  if (HasOptionalField(e_originalReroutingReason))
    m_originalReroutingReason.Encode(strm);
  m_calledAddress.Encode(strm);
  m_diversionCounter.Encode(strm);
  m_h225InfoElement.Encode(strm);
  m_lastReroutingNr.Encode(strm);
  m_subscriptionOption.Encode(strm);
  if (HasOptionalField(e_callingPartySubaddress))
    m_callingPartySubaddress.Encode(strm);
  m_callingNumber.Encode(strm);
  if (HasOptionalField(e_callingInfo))
    m_callingInfo.Encode(strm);
  if (HasOptionalField(e_originalCalledNr))
    m_originalCalledNr.Encode(strm);
  if (HasOptionalField(e_redirectingInfo))
    m_redirectingInfo.Encode(strm);
  if (HasOptionalField(e_originalCalledInfo))
    m_originalCalledInfo.Encode(strm);
  if (HasOptionalField(e_extension))
    m_extension.Encode(strm);

  UnknownExtensionsEncode(strm);
}


PObject * H4503_ARGUMENT_callRerouting::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_ARGUMENT_callRerouting::Class()), PInvalidCast);
#endif
  return new H4503_ARGUMENT_callRerouting(*this);
}


//
// ARGUMENT-divertingLegInformation1
//

H4503_ARGUMENT_divertingLegInformation1::H4503_ARGUMENT_divertingLegInformation1(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Sequence(tag, tagClass, 4, true, 0)
{
  m_nominatedInfo.SetConstraints(PASN_Object::FixedConstraint, 1, 128);
  m_redirectingInfo.SetConstraints(PASN_Object::FixedConstraint, 1, 128);
}


#ifndef PASN_NOPRINTON
void H4503_ARGUMENT_divertingLegInformation1::PrintOn(ostream & strm) const
{
  std::streamsize indent = strm.precision() + 2;
  strm << "{\n";
  strm << setw(indent+18) << "diversionReason = " << setprecision(indent) << m_diversionReason << '\n';
  strm << setw(indent+21) << "subscriptionOption = " << setprecision(indent) << m_subscriptionOption << '\n';
  strm << setw(indent+14) << "nominatedNr = " << setprecision(indent) << m_nominatedNr << '\n';
  if (HasOptionalField(e_nominatedInfo))
    strm << setw(indent+16) << "nominatedInfo = " << setprecision(indent) << m_nominatedInfo << '\n';
  if (HasOptionalField(e_redirectingNr))
    strm << setw(indent+16) << "redirectingNr = " << setprecision(indent) << m_redirectingNr << '\n';
  if (HasOptionalField(e_redirectingInfo))
    strm << setw(indent+18) << "redirectingInfo = " << setprecision(indent) << m_redirectingInfo << '\n';
  if (HasOptionalField(e_extension))
    strm << setw(indent+12) << "extension = " << setprecision(indent) << m_extension << '\n';
  strm << setw(indent-1) << setprecision(indent-2) << "}";
}
#endif


PObject::Comparison H4503_ARGUMENT_divertingLegInformation1::Compare(const PObject & obj) const
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(&obj, H4503_ARGUMENT_divertingLegInformation1), PInvalidCast);
#endif
  const H4503_ARGUMENT_divertingLegInformation1 & other = (const H4503_ARGUMENT_divertingLegInformation1 &)obj;

  Comparison result;

  if ((result = m_diversionReason.Compare(other.m_diversionReason)) != EqualTo)
    return result;
  if ((result = m_subscriptionOption.Compare(other.m_subscriptionOption)) != EqualTo)
    return result;
  if ((result = m_nominatedNr.Compare(other.m_nominatedNr)) != EqualTo)
    return result;
  if ((result = m_nominatedInfo.Compare(other.m_nominatedInfo)) != EqualTo)
    return result;
  if ((result = m_redirectingNr.Compare(other.m_redirectingNr)) != EqualTo)
    return result;
  if ((result = m_redirectingInfo.Compare(other.m_redirectingInfo)) != EqualTo)
    return result;
  if ((result = m_extension.Compare(other.m_extension)) != EqualTo)
    return result;

  return PASN_Sequence::Compare(other);
}


PINDEX H4503_ARGUMENT_divertingLegInformation1::GetDataLength() const
{
  PINDEX length = 0;
  length += m_diversionReason.GetObjectLength();
  length += m_subscriptionOption.GetObjectLength();
  length += m_nominatedNr.GetObjectLength();
  if (HasOptionalField(e_nominatedInfo))
    length += m_nominatedInfo.GetObjectLength();
  if (HasOptionalField(e_redirectingNr))
    length += m_redirectingNr.GetObjectLength();
  if (HasOptionalField(e_redirectingInfo))
    length += m_redirectingInfo.GetObjectLength();
  if (HasOptionalField(e_extension))
    length += m_extension.GetObjectLength();
  return length;
}


PBoolean H4503_ARGUMENT_divertingLegInformation1::Decode(PASN_Stream & strm)
{
  if (!PreambleDecode(strm))
    return false;

  if (!m_diversionReason.Decode(strm))
    return false;
  if (!m_subscriptionOption.Decode(strm))
    return false;
  if (!m_nominatedNr.Decode(strm))
    return false;
  if (HasOptionalField(e_nominatedInfo) && !m_nominatedInfo.Decode(strm))
    return false;
  if (HasOptionalField(e_redirectingNr) && !m_redirectingNr.Decode(strm))
    return false;
  if (HasOptionalField(e_redirectingInfo) && !m_redirectingInfo.Decode(strm))
    return false;
  if (HasOptionalField(e_extension) && !m_extension.Decode(strm))
    return false;

  return UnknownExtensionsDecode(strm);
}


void H4503_ARGUMENT_divertingLegInformation1::Encode(PASN_Stream & strm) const
{
  PreambleEncode(strm);

  m_diversionReason.Encode(strm);
  m_subscriptionOption.Encode(strm);
  m_nominatedNr.Encode(strm);
  if (HasOptionalField(e_nominatedInfo))
    m_nominatedInfo.Encode(strm);
  if (HasOptionalField(e_redirectingNr))
    m_redirectingNr.Encode(strm);
  if (HasOptionalField(e_redirectingInfo))
    m_redirectingInfo.Encode(strm);
  if (HasOptionalField(e_extension))
    m_extension.Encode(strm);

  UnknownExtensionsEncode(strm);
}


PObject * H4503_ARGUMENT_divertingLegInformation1::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_ARGUMENT_divertingLegInformation1::Class()), PInvalidCast);
#endif
  return new H4503_ARGUMENT_divertingLegInformation1(*this);
}


//
// ARGUMENT-divertingLegInformation2
//

H4503_ARGUMENT_divertingLegInformation2::H4503_ARGUMENT_divertingLegInformation2(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Sequence(tag, tagClass, 6, true, 0)
{
  m_diversionCounter.SetConstraints(PASN_Object::FixedConstraint, 1, 15);
  m_redirectingInfo.SetConstraints(PASN_Object::FixedConstraint, 1, 128);
  m_originalCalledInfo.SetConstraints(PASN_Object::FixedConstraint, 1, 128);
}


#ifndef PASN_NOPRINTON
void H4503_ARGUMENT_divertingLegInformation2::PrintOn(ostream & strm) const
{
  std::streamsize indent = strm.precision() + 2;
  strm << "{\n";
  strm << setw(indent+19) << "diversionCounter = " << setprecision(indent) << m_diversionCounter << '\n';
  strm << setw(indent+18) << "diversionReason = " << setprecision(indent) << m_diversionReason << '\n';
  if (HasOptionalField(e_originalDiversionReason))
    strm << setw(indent+26) << "originalDiversionReason = " << setprecision(indent) << m_originalDiversionReason << '\n';
  if (HasOptionalField(e_divertingNr))
    strm << setw(indent+14) << "divertingNr = " << setprecision(indent) << m_divertingNr << '\n';
  if (HasOptionalField(e_originalCalledNr))
    strm << setw(indent+19) << "originalCalledNr = " << setprecision(indent) << m_originalCalledNr << '\n';
  if (HasOptionalField(e_redirectingInfo))
    strm << setw(indent+18) << "redirectingInfo = " << setprecision(indent) << m_redirectingInfo << '\n';
  if (HasOptionalField(e_originalCalledInfo))
    strm << setw(indent+21) << "originalCalledInfo = " << setprecision(indent) << m_originalCalledInfo << '\n';
  if (HasOptionalField(e_extension))
    strm << setw(indent+12) << "extension = " << setprecision(indent) << m_extension << '\n';
  strm << setw(indent-1) << setprecision(indent-2) << "}";
}
#endif


PObject::Comparison H4503_ARGUMENT_divertingLegInformation2::Compare(const PObject & obj) const
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(&obj, H4503_ARGUMENT_divertingLegInformation2), PInvalidCast);
#endif
  const H4503_ARGUMENT_divertingLegInformation2 & other = (const H4503_ARGUMENT_divertingLegInformation2 &)obj;

  Comparison result;

  if ((result = m_diversionCounter.Compare(other.m_diversionCounter)) != EqualTo)
    return result;
  if ((result = m_diversionReason.Compare(other.m_diversionReason)) != EqualTo)
    return result;
  if ((result = m_originalDiversionReason.Compare(other.m_originalDiversionReason)) != EqualTo)
    return result;
  if ((result = m_divertingNr.Compare(other.m_divertingNr)) != EqualTo)
    return result;
  if ((result = m_originalCalledNr.Compare(other.m_originalCalledNr)) != EqualTo)
    return result;
  if ((result = m_redirectingInfo.Compare(other.m_redirectingInfo)) != EqualTo)
    return result;
  if ((result = m_originalCalledInfo.Compare(other.m_originalCalledInfo)) != EqualTo)
    return result;
  if ((result = m_extension.Compare(other.m_extension)) != EqualTo)
    return result;

  return PASN_Sequence::Compare(other);
}


PINDEX H4503_ARGUMENT_divertingLegInformation2::GetDataLength() const
{
  PINDEX length = 0;
  length += m_diversionCounter.GetObjectLength();
  length += m_diversionReason.GetObjectLength();
  if (HasOptionalField(e_originalDiversionReason))
    length += m_originalDiversionReason.GetObjectLength();
  if (HasOptionalField(e_divertingNr))
    length += m_divertingNr.GetObjectLength();
  if (HasOptionalField(e_originalCalledNr))
    length += m_originalCalledNr.GetObjectLength();
  if (HasOptionalField(e_redirectingInfo))
    length += m_redirectingInfo.GetObjectLength();
  if (HasOptionalField(e_originalCalledInfo))
    length += m_originalCalledInfo.GetObjectLength();
  if (HasOptionalField(e_extension))
    length += m_extension.GetObjectLength();
  return length;
}


PBoolean H4503_ARGUMENT_divertingLegInformation2::Decode(PASN_Stream & strm)
{
  if (!PreambleDecode(strm))
    return false;

  if (!m_diversionCounter.Decode(strm))
    return false;
  if (!m_diversionReason.Decode(strm))
    return false;
  if (HasOptionalField(e_originalDiversionReason) && !m_originalDiversionReason.Decode(strm))
    return false;
  if (HasOptionalField(e_divertingNr) && !m_divertingNr.Decode(strm))
    return false;
  if (HasOptionalField(e_originalCalledNr) && !m_originalCalledNr.Decode(strm))
    return false;
  if (HasOptionalField(e_redirectingInfo) && !m_redirectingInfo.Decode(strm))
    return false;
  if (HasOptionalField(e_originalCalledInfo) && !m_originalCalledInfo.Decode(strm))
    return false;
  if (HasOptionalField(e_extension) && !m_extension.Decode(strm))
    return false;

  return UnknownExtensionsDecode(strm);
}


void H4503_ARGUMENT_divertingLegInformation2::Encode(PASN_Stream & strm) const
{
  PreambleEncode(strm);

  m_diversionCounter.Encode(strm);
  m_diversionReason.Encode(strm);
  if (HasOptionalField(e_originalDiversionReason))
    m_originalDiversionReason.Encode(strm);
  if (HasOptionalField(e_divertingNr))
    m_divertingNr.Encode(strm);
  if (HasOptionalField(e_originalCalledNr))
    m_originalCalledNr.Encode(strm);
  if (HasOptionalField(e_redirectingInfo))
    m_redirectingInfo.Encode(strm);
  if (HasOptionalField(e_originalCalledInfo))
    m_originalCalledInfo.Encode(strm);
  if (HasOptionalField(e_extension))
    m_extension.Encode(strm);

  UnknownExtensionsEncode(strm);
}


PObject * H4503_ARGUMENT_divertingLegInformation2::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_ARGUMENT_divertingLegInformation2::Class()), PInvalidCast);
#endif
  return new H4503_ARGUMENT_divertingLegInformation2(*this);
}


//
// ARGUMENT-divertingLegInformation3
//

H4503_ARGUMENT_divertingLegInformation3::H4503_ARGUMENT_divertingLegInformation3(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Sequence(tag, tagClass, 3, true, 0)
{
  m_redirectionInfo.SetConstraints(PASN_Object::FixedConstraint, 1, 128);
}


#ifndef PASN_NOPRINTON
void H4503_ARGUMENT_divertingLegInformation3::PrintOn(ostream & strm) const
{
  std::streamsize indent = strm.precision() + 2;
  strm << "{\n";
  strm << setw(indent+31) << "presentationAllowedIndicator = " << setprecision(indent) << m_presentationAllowedIndicator << '\n';
  if (HasOptionalField(e_redirectionNr))
    strm << setw(indent+16) << "redirectionNr = " << setprecision(indent) << m_redirectionNr << '\n';
  if (HasOptionalField(e_redirectionInfo))
    strm << setw(indent+18) << "redirectionInfo = " << setprecision(indent) << m_redirectionInfo << '\n';
  if (HasOptionalField(e_extension))
    strm << setw(indent+12) << "extension = " << setprecision(indent) << m_extension << '\n';
  strm << setw(indent-1) << setprecision(indent-2) << "}";
}
#endif


PObject::Comparison H4503_ARGUMENT_divertingLegInformation3::Compare(const PObject & obj) const
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(&obj, H4503_ARGUMENT_divertingLegInformation3), PInvalidCast);
#endif
  const H4503_ARGUMENT_divertingLegInformation3 & other = (const H4503_ARGUMENT_divertingLegInformation3 &)obj;

  Comparison result;

  if ((result = m_presentationAllowedIndicator.Compare(other.m_presentationAllowedIndicator)) != EqualTo)
    return result;
  if ((result = m_redirectionNr.Compare(other.m_redirectionNr)) != EqualTo)
    return result;
  if ((result = m_redirectionInfo.Compare(other.m_redirectionInfo)) != EqualTo)
    return result;
  if ((result = m_extension.Compare(other.m_extension)) != EqualTo)
    return result;

  return PASN_Sequence::Compare(other);
}


PINDEX H4503_ARGUMENT_divertingLegInformation3::GetDataLength() const
{
  PINDEX length = 0;
  length += m_presentationAllowedIndicator.GetObjectLength();
  if (HasOptionalField(e_redirectionNr))
    length += m_redirectionNr.GetObjectLength();
  if (HasOptionalField(e_redirectionInfo))
    length += m_redirectionInfo.GetObjectLength();
  if (HasOptionalField(e_extension))
    length += m_extension.GetObjectLength();
  return length;
}


PBoolean H4503_ARGUMENT_divertingLegInformation3::Decode(PASN_Stream & strm)
{
  if (!PreambleDecode(strm))
    return false;

  if (!m_presentationAllowedIndicator.Decode(strm))
    return false;
  if (HasOptionalField(e_redirectionNr) && !m_redirectionNr.Decode(strm))
    return false;
  if (HasOptionalField(e_redirectionInfo) && !m_redirectionInfo.Decode(strm))
    return false;
  if (HasOptionalField(e_extension) && !m_extension.Decode(strm))
    return false;

  return UnknownExtensionsDecode(strm);
}


void H4503_ARGUMENT_divertingLegInformation3::Encode(PASN_Stream & strm) const
{
  PreambleEncode(strm);

  m_presentationAllowedIndicator.Encode(strm);
  if (HasOptionalField(e_redirectionNr))
    m_redirectionNr.Encode(strm);
  if (HasOptionalField(e_redirectionInfo))
    m_redirectionInfo.Encode(strm);
  if (HasOptionalField(e_extension))
    m_extension.Encode(strm);

  UnknownExtensionsEncode(strm);
}


PObject * H4503_ARGUMENT_divertingLegInformation3::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_ARGUMENT_divertingLegInformation3::Class()), PInvalidCast);
#endif
  return new H4503_ARGUMENT_divertingLegInformation3(*this);
}


//
// ARGUMENT-divertingLegInformation4
//

H4503_ARGUMENT_divertingLegInformation4::H4503_ARGUMENT_divertingLegInformation4(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Sequence(tag, tagClass, 3, true, 0)
{
  m_callingInfo.SetConstraints(PASN_Object::FixedConstraint, 1, 128);
  m_nominatedInfo.SetConstraints(PASN_Object::FixedConstraint, 1, 128);
}


#ifndef PASN_NOPRINTON
void H4503_ARGUMENT_divertingLegInformation4::PrintOn(ostream & strm) const
{
  std::streamsize indent = strm.precision() + 2;
  strm << "{\n";
  strm << setw(indent+18) << "diversionReason = " << setprecision(indent) << m_diversionReason << '\n';
  strm << setw(indent+21) << "subscriptionOption = " << setprecision(indent) << m_subscriptionOption << '\n';
  strm << setw(indent+12) << "callingNr = " << setprecision(indent) << m_callingNr << '\n';
  if (HasOptionalField(e_callingInfo))
    strm << setw(indent+14) << "callingInfo = " << setprecision(indent) << m_callingInfo << '\n';
  strm << setw(indent+14) << "nominatedNr = " << setprecision(indent) << m_nominatedNr << '\n';
  if (HasOptionalField(e_nominatedInfo))
    strm << setw(indent+16) << "nominatedInfo = " << setprecision(indent) << m_nominatedInfo << '\n';
  if (HasOptionalField(e_extension))
    strm << setw(indent+12) << "extension = " << setprecision(indent) << m_extension << '\n';
  strm << setw(indent-1) << setprecision(indent-2) << "}";
}
#endif


PObject::Comparison H4503_ARGUMENT_divertingLegInformation4::Compare(const PObject & obj) const
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(&obj, H4503_ARGUMENT_divertingLegInformation4), PInvalidCast);
#endif
  const H4503_ARGUMENT_divertingLegInformation4 & other = (const H4503_ARGUMENT_divertingLegInformation4 &)obj;

  Comparison result;

  if ((result = m_diversionReason.Compare(other.m_diversionReason)) != EqualTo)
    return result;
  if ((result = m_subscriptionOption.Compare(other.m_subscriptionOption)) != EqualTo)
    return result;
  if ((result = m_callingNr.Compare(other.m_callingNr)) != EqualTo)
    return result;
  if ((result = m_callingInfo.Compare(other.m_callingInfo)) != EqualTo)
    return result;
  if ((result = m_nominatedNr.Compare(other.m_nominatedNr)) != EqualTo)
    return result;
  if ((result = m_nominatedInfo.Compare(other.m_nominatedInfo)) != EqualTo)
    return result;
  if ((result = m_extension.Compare(other.m_extension)) != EqualTo)
    return result;

  return PASN_Sequence::Compare(other);
}


PINDEX H4503_ARGUMENT_divertingLegInformation4::GetDataLength() const
{
  PINDEX length = 0;
  length += m_diversionReason.GetObjectLength();
  length += m_subscriptionOption.GetObjectLength();
  length += m_callingNr.GetObjectLength();
  if (HasOptionalField(e_callingInfo))
    length += m_callingInfo.GetObjectLength();
  length += m_nominatedNr.GetObjectLength();
  if (HasOptionalField(e_nominatedInfo))
    length += m_nominatedInfo.GetObjectLength();
  if (HasOptionalField(e_extension))
    length += m_extension.GetObjectLength();
  return length;
}


PBoolean H4503_ARGUMENT_divertingLegInformation4::Decode(PASN_Stream & strm)
{
  if (!PreambleDecode(strm))
    return false;

  if (!m_diversionReason.Decode(strm))
    return false;
  if (!m_subscriptionOption.Decode(strm))
    return false;
  if (!m_callingNr.Decode(strm))
    return false;
  if (HasOptionalField(e_callingInfo) && !m_callingInfo.Decode(strm))
    return false;
  if (!m_nominatedNr.Decode(strm))
    return false;
  if (HasOptionalField(e_nominatedInfo) && !m_nominatedInfo.Decode(strm))
    return false;
  if (HasOptionalField(e_extension) && !m_extension.Decode(strm))
    return false;

  return UnknownExtensionsDecode(strm);
}


void H4503_ARGUMENT_divertingLegInformation4::Encode(PASN_Stream & strm) const
{
  PreambleEncode(strm);

  m_diversionReason.Encode(strm);
  m_subscriptionOption.Encode(strm);
  m_callingNr.Encode(strm);
  if (HasOptionalField(e_callingInfo))
    m_callingInfo.Encode(strm);
  m_nominatedNr.Encode(strm);
  if (HasOptionalField(e_nominatedInfo))
    m_nominatedInfo.Encode(strm);
  if (HasOptionalField(e_extension))
    m_extension.Encode(strm);

  UnknownExtensionsEncode(strm);
}


PObject * H4503_ARGUMENT_divertingLegInformation4::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_ARGUMENT_divertingLegInformation4::Class()), PInvalidCast);
#endif
  return new H4503_ARGUMENT_divertingLegInformation4(*this);
}


//
// IntResult
//

H4503_IntResult::H4503_IntResult(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Sequence(tag, tagClass, 1, true, 0)
{
}


#ifndef PASN_NOPRINTON
void H4503_IntResult::PrintOn(ostream & strm) const
{
  std::streamsize indent = strm.precision() + 2;
  strm << "{\n";
  strm << setw(indent+15) << "servedUserNr = " << setprecision(indent) << m_servedUserNr << '\n';
  strm << setw(indent+15) << "basicService = " << setprecision(indent) << m_basicService << '\n';
  strm << setw(indent+12) << "procedure = " << setprecision(indent) << m_procedure << '\n';
  strm << setw(indent+20) << "divertedToAddress = " << setprecision(indent) << m_divertedToAddress << '\n';
  strm << setw(indent+16) << "remoteEnabled = " << setprecision(indent) << m_remoteEnabled << '\n';
  if (HasOptionalField(e_extension))
    strm << setw(indent+12) << "extension = " << setprecision(indent) << m_extension << '\n';
  strm << setw(indent-1) << setprecision(indent-2) << "}";
}
#endif


PObject::Comparison H4503_IntResult::Compare(const PObject & obj) const
{
#ifndef PASN_LEANANDMEAN
  PAssert(PIsDescendant(&obj, H4503_IntResult), PInvalidCast);
#endif
  const H4503_IntResult & other = (const H4503_IntResult &)obj;

  Comparison result;

  if ((result = m_servedUserNr.Compare(other.m_servedUserNr)) != EqualTo)
    return result;
  if ((result = m_basicService.Compare(other.m_basicService)) != EqualTo)
    return result;
  if ((result = m_procedure.Compare(other.m_procedure)) != EqualTo)
    return result;
  if ((result = m_divertedToAddress.Compare(other.m_divertedToAddress)) != EqualTo)
    return result;
  if ((result = m_remoteEnabled.Compare(other.m_remoteEnabled)) != EqualTo)
    return result;
  if ((result = m_extension.Compare(other.m_extension)) != EqualTo)
    return result;

  return PASN_Sequence::Compare(other);
}


PINDEX H4503_IntResult::GetDataLength() const
{
  PINDEX length = 0;
  length += m_servedUserNr.GetObjectLength();
  length += m_basicService.GetObjectLength();
  length += m_procedure.GetObjectLength();
  length += m_divertedToAddress.GetObjectLength();
  length += m_remoteEnabled.GetObjectLength();
  if (HasOptionalField(e_extension))
    length += m_extension.GetObjectLength();
  return length;
}


PBoolean H4503_IntResult::Decode(PASN_Stream & strm)
{
  if (!PreambleDecode(strm))
    return false;

  if (!m_servedUserNr.Decode(strm))
    return false;
  if (!m_basicService.Decode(strm))
    return false;
  if (!m_procedure.Decode(strm))
    return false;
  if (!m_divertedToAddress.Decode(strm))
    return false;
  if (!m_remoteEnabled.Decode(strm))
    return false;
  if (HasOptionalField(e_extension) && !m_extension.Decode(strm))
    return false;

  return UnknownExtensionsDecode(strm);
}


void H4503_IntResult::Encode(PASN_Stream & strm) const
{
  PreambleEncode(strm);

  m_servedUserNr.Encode(strm);
  m_basicService.Encode(strm);
  m_procedure.Encode(strm);
  m_divertedToAddress.Encode(strm);
  m_remoteEnabled.Encode(strm);
  if (HasOptionalField(e_extension))
    m_extension.Encode(strm);

  UnknownExtensionsEncode(strm);
}


PObject * H4503_IntResult::Clone() const
{
#ifndef PASN_LEANANDMEAN
  PAssert(IsClass(H4503_IntResult::Class()), PInvalidCast);
#endif
  return new H4503_IntResult(*this);
}


#endif // if ! H323_DISABLE_H4503


// End of h4503.cxx
