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

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

#include <ptlib.h>
#include "h4505.h"

#define new PNEW


#if ! H323_DISABLE_H4505



//
// CallParkPickupOperations
//

H4505_CallParkPickupOperations::H4505_CallParkPickupOperations(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Enumeration(tag, tagClass, 114, FALSE
#ifndef PASN_NOPRINTON
      , "cpRequest=106 "
        "cpSetup "
        "groupIndicationOn=8 "
        "groupIndicationOff "
        "pickrequ=110 "
        "pickup "
        "pickExe "
        "cpNotify "
        "cpickupNotify "
#endif
    )
{
}


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


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


//
// ParkedToPosition
//

H4505_ParkedToPosition::H4505_ParkedToPosition(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Integer(tag, tagClass)
{
  SetConstraints(PASN_Object::FixedConstraint, 0, 65535);
}


H4505_ParkedToPosition & H4505_ParkedToPosition::operator=(int v)
{
  SetValue(v);
  return *this;
}


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


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


//
// ParkCondition
//

H4505_ParkCondition::H4505_ParkCondition(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Enumeration(tag, tagClass, 3, TRUE
#ifndef PASN_NOPRINTON
      , "unspecified "
        "parkedToUserIdle "
        "parkedToUserBusy "
        "parkedToGroup "
#endif
    )
{
}


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


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


//
// CallType
//

H4505_CallType::H4505_CallType(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Enumeration(tag, tagClass, 1, TRUE
#ifndef PASN_NOPRINTON
      , "parkedCall "
        "alertingCall "
#endif
    )
{
}


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


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


//
// CallPickupErrors
//

H4505_CallPickupErrors::H4505_CallPickupErrors(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Enumeration(tag, tagClass, 2002, FALSE
#ifndef PASN_NOPRINTON
      , "callPickupIdInvalid=2000 "
        "callAlreadyPickedUp "
        "undefined "
#endif
    )
{
}


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


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


//
// ArrayOf_MixedExtension
//

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


PASN_Object * H4505_ArrayOf_MixedExtension::CreateObject() const
{
  return new H4504_MixedExtension;
}


H4504_MixedExtension & H4505_ArrayOf_MixedExtension::operator[](PINDEX i) const
{
  return (H4504_MixedExtension &)array[i];
}


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


//
// CpRequestArg
//

H4505_CpRequestArg::H4505_CpRequestArg(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Sequence(tag, tagClass, 2, TRUE, 0)
{
  m_extensionArg.SetConstraints(PASN_Object::FixedConstraint, 0, 255);
}


#ifndef PASN_NOPRINTON
void H4505_CpRequestArg::PrintOn(ostream & strm) const
{
  int indent = strm.precision() + 2;
  strm << "{\n";
  strm << setw(indent+16) << "parkingNumber = " << setprecision(indent) << m_parkingNumber << '\n';
  strm << setw(indent+15) << "parkedNumber = " << setprecision(indent) << m_parkedNumber << '\n';
  strm << setw(indent+17) << "parkedToNumber = " << setprecision(indent) << m_parkedToNumber << '\n';
  if (HasOptionalField(e_parkedToPosition))
    strm << setw(indent+19) << "parkedToPosition = " << setprecision(indent) << m_parkedToPosition << '\n';
  if (HasOptionalField(e_extensionArg))
    strm << setw(indent+15) << "extensionArg = " << setprecision(indent) << m_extensionArg << '\n';
  strm << setw(indent-1) << setprecision(indent-2) << "}";
}
#endif


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

  Comparison result;

  if ((result = m_parkingNumber.Compare(other.m_parkingNumber)) != EqualTo)
    return result;
  if ((result = m_parkedNumber.Compare(other.m_parkedNumber)) != EqualTo)
    return result;
  if ((result = m_parkedToNumber.Compare(other.m_parkedToNumber)) != EqualTo)
    return result;
  if ((result = m_parkedToPosition.Compare(other.m_parkedToPosition)) != EqualTo)
    return result;
  if ((result = m_extensionArg.Compare(other.m_extensionArg)) != EqualTo)
    return result;

  return PASN_Sequence::Compare(other);
}


PINDEX H4505_CpRequestArg::GetDataLength() const
{
  PINDEX length = 0;
  length += m_parkingNumber.GetObjectLength();
  length += m_parkedNumber.GetObjectLength();
  length += m_parkedToNumber.GetObjectLength();
  if (HasOptionalField(e_parkedToPosition))
    length += m_parkedToPosition.GetObjectLength();
  if (HasOptionalField(e_extensionArg))
    length += m_extensionArg.GetObjectLength();
  return length;
}


BOOL H4505_CpRequestArg::Decode(PASN_Stream & strm)
{
  if (!PreambleDecode(strm))
    return FALSE;

  if (!m_parkingNumber.Decode(strm))
    return FALSE;
  if (!m_parkedNumber.Decode(strm))
    return FALSE;
  if (!m_parkedToNumber.Decode(strm))
    return FALSE;
  if (HasOptionalField(e_parkedToPosition) && !m_parkedToPosition.Decode(strm))
    return FALSE;
  if (HasOptionalField(e_extensionArg) && !m_extensionArg.Decode(strm))
    return FALSE;

  return UnknownExtensionsDecode(strm);
}


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

  m_parkingNumber.Encode(strm);
  m_parkedNumber.Encode(strm);
  m_parkedToNumber.Encode(strm);
  if (HasOptionalField(e_parkedToPosition))
    m_parkedToPosition.Encode(strm);
  if (HasOptionalField(e_extensionArg))
    m_extensionArg.Encode(strm);

  UnknownExtensionsEncode(strm);
}


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


//
// CpRequestRes
//

H4505_CpRequestRes::H4505_CpRequestRes(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Sequence(tag, tagClass, 2, TRUE, 0)
{
  m_extensionRes.SetConstraints(PASN_Object::FixedConstraint, 0, 255);
}


#ifndef PASN_NOPRINTON
void H4505_CpRequestRes::PrintOn(ostream & strm) const
{
  int indent = strm.precision() + 2;
  strm << "{\n";
  strm << setw(indent+17) << "parkedToNumber = " << setprecision(indent) << m_parkedToNumber << '\n';
  if (HasOptionalField(e_parkedToPosition))
    strm << setw(indent+19) << "parkedToPosition = " << setprecision(indent) << m_parkedToPosition << '\n';
  strm << setw(indent+16) << "parkCondition = " << setprecision(indent) << m_parkCondition << '\n';
  if (HasOptionalField(e_extensionRes))
    strm << setw(indent+15) << "extensionRes = " << setprecision(indent) << m_extensionRes << '\n';
  strm << setw(indent-1) << setprecision(indent-2) << "}";
}
#endif


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

  Comparison result;

  if ((result = m_parkedToNumber.Compare(other.m_parkedToNumber)) != EqualTo)
    return result;
  if ((result = m_parkedToPosition.Compare(other.m_parkedToPosition)) != EqualTo)
    return result;
  if ((result = m_parkCondition.Compare(other.m_parkCondition)) != EqualTo)
    return result;
  if ((result = m_extensionRes.Compare(other.m_extensionRes)) != EqualTo)
    return result;

  return PASN_Sequence::Compare(other);
}


PINDEX H4505_CpRequestRes::GetDataLength() const
{
  PINDEX length = 0;
  length += m_parkedToNumber.GetObjectLength();
  if (HasOptionalField(e_parkedToPosition))
    length += m_parkedToPosition.GetObjectLength();
  length += m_parkCondition.GetObjectLength();
  if (HasOptionalField(e_extensionRes))
    length += m_extensionRes.GetObjectLength();
  return length;
}


BOOL H4505_CpRequestRes::Decode(PASN_Stream & strm)
{
  if (!PreambleDecode(strm))
    return FALSE;

  if (!m_parkedToNumber.Decode(strm))
    return FALSE;
  if (HasOptionalField(e_parkedToPosition) && !m_parkedToPosition.Decode(strm))
    return FALSE;
  if (!m_parkCondition.Decode(strm))
    return FALSE;
  if (HasOptionalField(e_extensionRes) && !m_extensionRes.Decode(strm))
    return FALSE;

  return UnknownExtensionsDecode(strm);
}


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

  m_parkedToNumber.Encode(strm);
  if (HasOptionalField(e_parkedToPosition))
    m_parkedToPosition.Encode(strm);
  m_parkCondition.Encode(strm);
  if (HasOptionalField(e_extensionRes))
    m_extensionRes.Encode(strm);

  UnknownExtensionsEncode(strm);
}


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


//
// CpSetupArg
//

H4505_CpSetupArg::H4505_CpSetupArg(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Sequence(tag, tagClass, 2, TRUE, 0)
{
  m_extensionArg.SetConstraints(PASN_Object::FixedConstraint, 0, 255);
}


#ifndef PASN_NOPRINTON
void H4505_CpSetupArg::PrintOn(ostream & strm) const
{
  int indent = strm.precision() + 2;
  strm << "{\n";
  strm << setw(indent+16) << "parkingNumber = " << setprecision(indent) << m_parkingNumber << '\n';
  strm << setw(indent+15) << "parkedNumber = " << setprecision(indent) << m_parkedNumber << '\n';
  strm << setw(indent+17) << "parkedToNumber = " << setprecision(indent) << m_parkedToNumber << '\n';
  if (HasOptionalField(e_parkedToPosition))
    strm << setw(indent+19) << "parkedToPosition = " << setprecision(indent) << m_parkedToPosition << '\n';
  if (HasOptionalField(e_extensionArg))
    strm << setw(indent+15) << "extensionArg = " << setprecision(indent) << m_extensionArg << '\n';
  strm << setw(indent-1) << setprecision(indent-2) << "}";
}
#endif


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

  Comparison result;

  if ((result = m_parkingNumber.Compare(other.m_parkingNumber)) != EqualTo)
    return result;
  if ((result = m_parkedNumber.Compare(other.m_parkedNumber)) != EqualTo)
    return result;
  if ((result = m_parkedToNumber.Compare(other.m_parkedToNumber)) != EqualTo)
    return result;
  if ((result = m_parkedToPosition.Compare(other.m_parkedToPosition)) != EqualTo)
    return result;
  if ((result = m_extensionArg.Compare(other.m_extensionArg)) != EqualTo)
    return result;

  return PASN_Sequence::Compare(other);
}


PINDEX H4505_CpSetupArg::GetDataLength() const
{
  PINDEX length = 0;
  length += m_parkingNumber.GetObjectLength();
  length += m_parkedNumber.GetObjectLength();
  length += m_parkedToNumber.GetObjectLength();
  if (HasOptionalField(e_parkedToPosition))
    length += m_parkedToPosition.GetObjectLength();
  if (HasOptionalField(e_extensionArg))
    length += m_extensionArg.GetObjectLength();
  return length;
}


BOOL H4505_CpSetupArg::Decode(PASN_Stream & strm)
{
  if (!PreambleDecode(strm))
    return FALSE;

  if (!m_parkingNumber.Decode(strm))
    return FALSE;
  if (!m_parkedNumber.Decode(strm))
    return FALSE;
  if (!m_parkedToNumber.Decode(strm))
    return FALSE;
  if (HasOptionalField(e_parkedToPosition) && !m_parkedToPosition.Decode(strm))
    return FALSE;
  if (HasOptionalField(e_extensionArg) && !m_extensionArg.Decode(strm))
    return FALSE;

  return UnknownExtensionsDecode(strm);
}


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

  m_parkingNumber.Encode(strm);
  m_parkedNumber.Encode(strm);
  m_parkedToNumber.Encode(strm);
  if (HasOptionalField(e_parkedToPosition))
    m_parkedToPosition.Encode(strm);
  if (HasOptionalField(e_extensionArg))
    m_extensionArg.Encode(strm);

  UnknownExtensionsEncode(strm);
}


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


//
// CpSetupRes
//

H4505_CpSetupRes::H4505_CpSetupRes(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Sequence(tag, tagClass, 2, TRUE, 0)
{
  m_extensionRes.SetConstraints(PASN_Object::FixedConstraint, 0, 255);
}


#ifndef PASN_NOPRINTON
void H4505_CpSetupRes::PrintOn(ostream & strm) const
{
  int indent = strm.precision() + 2;
  strm << "{\n";
  strm << setw(indent+17) << "parkedToNumber = " << setprecision(indent) << m_parkedToNumber << '\n';
  if (HasOptionalField(e_parkedToPosition))
    strm << setw(indent+19) << "parkedToPosition = " << setprecision(indent) << m_parkedToPosition << '\n';
  strm << setw(indent+16) << "parkCondition = " << setprecision(indent) << m_parkCondition << '\n';
  if (HasOptionalField(e_extensionRes))
    strm << setw(indent+15) << "extensionRes = " << setprecision(indent) << m_extensionRes << '\n';
  strm << setw(indent-1) << setprecision(indent-2) << "}";
}
#endif


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

  Comparison result;

  if ((result = m_parkedToNumber.Compare(other.m_parkedToNumber)) != EqualTo)
    return result;
  if ((result = m_parkedToPosition.Compare(other.m_parkedToPosition)) != EqualTo)
    return result;
  if ((result = m_parkCondition.Compare(other.m_parkCondition)) != EqualTo)
    return result;
  if ((result = m_extensionRes.Compare(other.m_extensionRes)) != EqualTo)
    return result;

  return PASN_Sequence::Compare(other);
}


PINDEX H4505_CpSetupRes::GetDataLength() const
{
  PINDEX length = 0;
  length += m_parkedToNumber.GetObjectLength();
  if (HasOptionalField(e_parkedToPosition))
    length += m_parkedToPosition.GetObjectLength();
  length += m_parkCondition.GetObjectLength();
  if (HasOptionalField(e_extensionRes))
    length += m_extensionRes.GetObjectLength();
  return length;
}


BOOL H4505_CpSetupRes::Decode(PASN_Stream & strm)
{
  if (!PreambleDecode(strm))
    return FALSE;

  if (!m_parkedToNumber.Decode(strm))
    return FALSE;
  if (HasOptionalField(e_parkedToPosition) && !m_parkedToPosition.Decode(strm))
    return FALSE;
  if (!m_parkCondition.Decode(strm))
    return FALSE;
  if (HasOptionalField(e_extensionRes) && !m_extensionRes.Decode(strm))
    return FALSE;

  return UnknownExtensionsDecode(strm);
}


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

  m_parkedToNumber.Encode(strm);
  if (HasOptionalField(e_parkedToPosition))
    m_parkedToPosition.Encode(strm);
  m_parkCondition.Encode(strm);
  if (HasOptionalField(e_extensionRes))
    m_extensionRes.Encode(strm);

  UnknownExtensionsEncode(strm);
}


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


//
// GroupIndicationOnArg
//

H4505_GroupIndicationOnArg::H4505_GroupIndicationOnArg(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Sequence(tag, tagClass, 2, TRUE, 0)
{
  m_extensionArg.SetConstraints(PASN_Object::FixedConstraint, 0, 255);
}


#ifndef PASN_NOPRINTON
void H4505_GroupIndicationOnArg::PrintOn(ostream & strm) const
{
  int indent = strm.precision() + 2;
  strm << "{\n";
  strm << setw(indent+15) << "callPickupId = " << setprecision(indent) << m_callPickupId << '\n';
  strm << setw(indent+20) << "groupMemberUserNr = " << setprecision(indent) << m_groupMemberUserNr << '\n';
  strm << setw(indent+19) << "retrieveCallType = " << setprecision(indent) << m_retrieveCallType << '\n';
  strm << setw(indent+18) << "partyToRetrieve = " << setprecision(indent) << m_partyToRetrieve << '\n';
  strm << setw(indent+18) << "retrieveAddress = " << setprecision(indent) << m_retrieveAddress << '\n';
  if (HasOptionalField(e_parkPosition))
    strm << setw(indent+15) << "parkPosition = " << setprecision(indent) << m_parkPosition << '\n';
  if (HasOptionalField(e_extensionArg))
    strm << setw(indent+15) << "extensionArg = " << setprecision(indent) << m_extensionArg << '\n';
  strm << setw(indent-1) << setprecision(indent-2) << "}";
}
#endif


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

  Comparison result;

  if ((result = m_callPickupId.Compare(other.m_callPickupId)) != EqualTo)
    return result;
  if ((result = m_groupMemberUserNr.Compare(other.m_groupMemberUserNr)) != EqualTo)
    return result;
  if ((result = m_retrieveCallType.Compare(other.m_retrieveCallType)) != EqualTo)
    return result;
  if ((result = m_partyToRetrieve.Compare(other.m_partyToRetrieve)) != EqualTo)
    return result;
  if ((result = m_retrieveAddress.Compare(other.m_retrieveAddress)) != EqualTo)
    return result;
  if ((result = m_parkPosition.Compare(other.m_parkPosition)) != EqualTo)
    return result;
  if ((result = m_extensionArg.Compare(other.m_extensionArg)) != EqualTo)
    return result;

  return PASN_Sequence::Compare(other);
}


PINDEX H4505_GroupIndicationOnArg::GetDataLength() const
{
  PINDEX length = 0;
  length += m_callPickupId.GetObjectLength();
  length += m_groupMemberUserNr.GetObjectLength();
  length += m_retrieveCallType.GetObjectLength();
  length += m_partyToRetrieve.GetObjectLength();
  length += m_retrieveAddress.GetObjectLength();
  if (HasOptionalField(e_parkPosition))
    length += m_parkPosition.GetObjectLength();
  if (HasOptionalField(e_extensionArg))
    length += m_extensionArg.GetObjectLength();
  return length;
}


BOOL H4505_GroupIndicationOnArg::Decode(PASN_Stream & strm)
{
  if (!PreambleDecode(strm))
    return FALSE;

  if (!m_callPickupId.Decode(strm))
    return FALSE;
  if (!m_groupMemberUserNr.Decode(strm))
    return FALSE;
  if (!m_retrieveCallType.Decode(strm))
    return FALSE;
  if (!m_partyToRetrieve.Decode(strm))
    return FALSE;
  if (!m_retrieveAddress.Decode(strm))
    return FALSE;
  if (HasOptionalField(e_parkPosition) && !m_parkPosition.Decode(strm))
    return FALSE;
  if (HasOptionalField(e_extensionArg) && !m_extensionArg.Decode(strm))
    return FALSE;

  return UnknownExtensionsDecode(strm);
}


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

  m_callPickupId.Encode(strm);
  m_groupMemberUserNr.Encode(strm);
  m_retrieveCallType.Encode(strm);
  m_partyToRetrieve.Encode(strm);
  m_retrieveAddress.Encode(strm);
  if (HasOptionalField(e_parkPosition))
    m_parkPosition.Encode(strm);
  if (HasOptionalField(e_extensionArg))
    m_extensionArg.Encode(strm);

  UnknownExtensionsEncode(strm);
}


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


//
// GroupIndicationOnRes
//

H4505_GroupIndicationOnRes::H4505_GroupIndicationOnRes(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
{
  m_extensionRes.SetConstraints(PASN_Object::FixedConstraint, 0, 255);
}


#ifndef PASN_NOPRINTON
void H4505_GroupIndicationOnRes::PrintOn(ostream & strm) const
{
  int indent = strm.precision() + 2;
  strm << "{\n";
  if (HasOptionalField(e_extensionRes))
    strm << setw(indent+15) << "extensionRes = " << setprecision(indent) << m_extensionRes << '\n';
  strm << setw(indent-1) << setprecision(indent-2) << "}";
}
#endif


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

  Comparison result;

  if ((result = m_extensionRes.Compare(other.m_extensionRes)) != EqualTo)
    return result;

  return PASN_Sequence::Compare(other);
}


PINDEX H4505_GroupIndicationOnRes::GetDataLength() const
{
  PINDEX length = 0;
  if (HasOptionalField(e_extensionRes))
    length += m_extensionRes.GetObjectLength();
  return length;
}


BOOL H4505_GroupIndicationOnRes::Decode(PASN_Stream & strm)
{
  if (!PreambleDecode(strm))
    return FALSE;

  if (HasOptionalField(e_extensionRes) && !m_extensionRes.Decode(strm))
    return FALSE;

  return UnknownExtensionsDecode(strm);
}


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

  if (HasOptionalField(e_extensionRes))
    m_extensionRes.Encode(strm);

  UnknownExtensionsEncode(strm);
}


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


//
// GroupIndicationOffArg
//

H4505_GroupIndicationOffArg::H4505_GroupIndicationOffArg(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
{
  m_extensionArg.SetConstraints(PASN_Object::FixedConstraint, 0, 255);
}


#ifndef PASN_NOPRINTON
void H4505_GroupIndicationOffArg::PrintOn(ostream & strm) const
{
  int indent = strm.precision() + 2;
  strm << "{\n";
  strm << setw(indent+15) << "callPickupId = " << setprecision(indent) << m_callPickupId << '\n';
  strm << setw(indent+20) << "groupMemberUserNr = " << setprecision(indent) << m_groupMemberUserNr << '\n';
  if (HasOptionalField(e_extensionArg))
    strm << setw(indent+15) << "extensionArg = " << setprecision(indent) << m_extensionArg << '\n';
  strm << setw(indent-1) << setprecision(indent-2) << "}";
}
#endif


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

  Comparison result;

  if ((result = m_callPickupId.Compare(other.m_callPickupId)) != EqualTo)
    return result;
  if ((result = m_groupMemberUserNr.Compare(other.m_groupMemberUserNr)) != EqualTo)
    return result;
  if ((result = m_extensionArg.Compare(other.m_extensionArg)) != EqualTo)
    return result;

  return PASN_Sequence::Compare(other);
}


PINDEX H4505_GroupIndicationOffArg::GetDataLength() const
{
  PINDEX length = 0;
  length += m_callPickupId.GetObjectLength();
  length += m_groupMemberUserNr.GetObjectLength();
  if (HasOptionalField(e_extensionArg))
    length += m_extensionArg.GetObjectLength();
  return length;
}


BOOL H4505_GroupIndicationOffArg::Decode(PASN_Stream & strm)
{
  if (!PreambleDecode(strm))
    return FALSE;

  if (!m_callPickupId.Decode(strm))
    return FALSE;
  if (!m_groupMemberUserNr.Decode(strm))
    return FALSE;
  if (HasOptionalField(e_extensionArg) && !m_extensionArg.Decode(strm))
    return FALSE;

  return UnknownExtensionsDecode(strm);
}


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

  m_callPickupId.Encode(strm);
  m_groupMemberUserNr.Encode(strm);
  if (HasOptionalField(e_extensionArg))
    m_extensionArg.Encode(strm);

  UnknownExtensionsEncode(strm);
}


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


//
// GroupIndicationOffRes
//

H4505_GroupIndicationOffRes::H4505_GroupIndicationOffRes(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
{
  m_extensionRes.SetConstraints(PASN_Object::FixedConstraint, 0, 255);
}


#ifndef PASN_NOPRINTON
void H4505_GroupIndicationOffRes::PrintOn(ostream & strm) const
{
  int indent = strm.precision() + 2;
  strm << "{\n";
  if (HasOptionalField(e_extensionRes))
    strm << setw(indent+15) << "extensionRes = " << setprecision(indent) << m_extensionRes << '\n';
  strm << setw(indent-1) << setprecision(indent-2) << "}";
}
#endif


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

  Comparison result;

  if ((result = m_extensionRes.Compare(other.m_extensionRes)) != EqualTo)
    return result;

  return PASN_Sequence::Compare(other);
}


PINDEX H4505_GroupIndicationOffRes::GetDataLength() const
{
  PINDEX length = 0;
  if (HasOptionalField(e_extensionRes))
    length += m_extensionRes.GetObjectLength();
  return length;
}


BOOL H4505_GroupIndicationOffRes::Decode(PASN_Stream & strm)
{
  if (!PreambleDecode(strm))
    return FALSE;

  if (HasOptionalField(e_extensionRes) && !m_extensionRes.Decode(strm))
    return FALSE;

  return UnknownExtensionsDecode(strm);
}


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

  if (HasOptionalField(e_extensionRes))
    m_extensionRes.Encode(strm);

  UnknownExtensionsEncode(strm);
}


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


//
// PickrequArg
//

H4505_PickrequArg::H4505_PickrequArg(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Sequence(tag, tagClass, 4, TRUE, 0)
{
  m_extensionArg.SetConstraints(PASN_Object::FixedConstraint, 0, 255);
}


#ifndef PASN_NOPRINTON
void H4505_PickrequArg::PrintOn(ostream & strm) const
{
  int indent = strm.precision() + 2;
  strm << "{\n";
  strm << setw(indent+19) << "picking_upNumber = " << setprecision(indent) << m_picking_upNumber << '\n';
  if (HasOptionalField(e_callPickupId))
    strm << setw(indent+15) << "callPickupId = " << setprecision(indent) << m_callPickupId << '\n';
  if (HasOptionalField(e_partyToRetrieve))
    strm << setw(indent+18) << "partyToRetrieve = " << setprecision(indent) << m_partyToRetrieve << '\n';
  strm << setw(indent+18) << "retrieveAddress = " << setprecision(indent) << m_retrieveAddress << '\n';
  if (HasOptionalField(e_parkPosition))
    strm << setw(indent+15) << "parkPosition = " << setprecision(indent) << m_parkPosition << '\n';
  if (HasOptionalField(e_extensionArg))
    strm << setw(indent+15) << "extensionArg = " << setprecision(indent) << m_extensionArg << '\n';
  strm << setw(indent-1) << setprecision(indent-2) << "}";
}
#endif


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

  Comparison result;

  if ((result = m_picking_upNumber.Compare(other.m_picking_upNumber)) != EqualTo)
    return result;
  if ((result = m_callPickupId.Compare(other.m_callPickupId)) != EqualTo)
    return result;
  if ((result = m_partyToRetrieve.Compare(other.m_partyToRetrieve)) != EqualTo)
    return result;
  if ((result = m_retrieveAddress.Compare(other.m_retrieveAddress)) != EqualTo)
    return result;
  if ((result = m_parkPosition.Compare(other.m_parkPosition)) != EqualTo)
    return result;
  if ((result = m_extensionArg.Compare(other.m_extensionArg)) != EqualTo)
    return result;

  return PASN_Sequence::Compare(other);
}


PINDEX H4505_PickrequArg::GetDataLength() const
{
  PINDEX length = 0;
  length += m_picking_upNumber.GetObjectLength();
  if (HasOptionalField(e_callPickupId))
    length += m_callPickupId.GetObjectLength();
  if (HasOptionalField(e_partyToRetrieve))
    length += m_partyToRetrieve.GetObjectLength();
  length += m_retrieveAddress.GetObjectLength();
  if (HasOptionalField(e_parkPosition))
    length += m_parkPosition.GetObjectLength();
  if (HasOptionalField(e_extensionArg))
    length += m_extensionArg.GetObjectLength();
  return length;
}


BOOL H4505_PickrequArg::Decode(PASN_Stream & strm)
{
  if (!PreambleDecode(strm))
    return FALSE;

  if (!m_picking_upNumber.Decode(strm))
    return FALSE;
  if (HasOptionalField(e_callPickupId) && !m_callPickupId.Decode(strm))
    return FALSE;
  if (HasOptionalField(e_partyToRetrieve) && !m_partyToRetrieve.Decode(strm))
    return FALSE;
  if (!m_retrieveAddress.Decode(strm))
    return FALSE;
  if (HasOptionalField(e_parkPosition) && !m_parkPosition.Decode(strm))
    return FALSE;
  if (HasOptionalField(e_extensionArg) && !m_extensionArg.Decode(strm))
    return FALSE;

  return UnknownExtensionsDecode(strm);
}


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

  m_picking_upNumber.Encode(strm);
  if (HasOptionalField(e_callPickupId))
    m_callPickupId.Encode(strm);
  if (HasOptionalField(e_partyToRetrieve))
    m_partyToRetrieve.Encode(strm);
  m_retrieveAddress.Encode(strm);
  if (HasOptionalField(e_parkPosition))
    m_parkPosition.Encode(strm);
  if (HasOptionalField(e_extensionArg))
    m_extensionArg.Encode(strm);

  UnknownExtensionsEncode(strm);
}


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


//
// PickrequRes
//

H4505_PickrequRes::H4505_PickrequRes(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
{
  m_extensionRes.SetConstraints(PASN_Object::FixedConstraint, 0, 255);
}


#ifndef PASN_NOPRINTON
void H4505_PickrequRes::PrintOn(ostream & strm) const
{
  int indent = strm.precision() + 2;
  strm << "{\n";
  strm << setw(indent+15) << "callPickupId = " << setprecision(indent) << m_callPickupId << '\n';
  if (HasOptionalField(e_extensionRes))
    strm << setw(indent+15) << "extensionRes = " << setprecision(indent) << m_extensionRes << '\n';
  strm << setw(indent-1) << setprecision(indent-2) << "}";
}
#endif


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

  Comparison result;

  if ((result = m_callPickupId.Compare(other.m_callPickupId)) != EqualTo)
    return result;
  if ((result = m_extensionRes.Compare(other.m_extensionRes)) != EqualTo)
    return result;

  return PASN_Sequence::Compare(other);
}


PINDEX H4505_PickrequRes::GetDataLength() const
{
  PINDEX length = 0;
  length += m_callPickupId.GetObjectLength();
  if (HasOptionalField(e_extensionRes))
    length += m_extensionRes.GetObjectLength();
  return length;
}


BOOL H4505_PickrequRes::Decode(PASN_Stream & strm)
{
  if (!PreambleDecode(strm))
    return FALSE;

  if (!m_callPickupId.Decode(strm))
    return FALSE;
  if (HasOptionalField(e_extensionRes) && !m_extensionRes.Decode(strm))
    return FALSE;

  return UnknownExtensionsDecode(strm);
}


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

  m_callPickupId.Encode(strm);
  if (HasOptionalField(e_extensionRes))
    m_extensionRes.Encode(strm);

  UnknownExtensionsEncode(strm);
}


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


//
// PickupArg
//

H4505_PickupArg::H4505_PickupArg(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
{
  m_extensionArg.SetConstraints(PASN_Object::FixedConstraint, 0, 255);
}


#ifndef PASN_NOPRINTON
void H4505_PickupArg::PrintOn(ostream & strm) const
{
  int indent = strm.precision() + 2;
  strm << "{\n";
  strm << setw(indent+15) << "callPickupId = " << setprecision(indent) << m_callPickupId << '\n';
  strm << setw(indent+19) << "picking_upNumber = " << setprecision(indent) << m_picking_upNumber << '\n';
  if (HasOptionalField(e_extensionArg))
    strm << setw(indent+15) << "extensionArg = " << setprecision(indent) << m_extensionArg << '\n';
  strm << setw(indent-1) << setprecision(indent-2) << "}";
}
#endif


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

  Comparison result;

  if ((result = m_callPickupId.Compare(other.m_callPickupId)) != EqualTo)
    return result;
  if ((result = m_picking_upNumber.Compare(other.m_picking_upNumber)) != EqualTo)
    return result;
  if ((result = m_extensionArg.Compare(other.m_extensionArg)) != EqualTo)
    return result;

  return PASN_Sequence::Compare(other);
}


PINDEX H4505_PickupArg::GetDataLength() const
{
  PINDEX length = 0;
  length += m_callPickupId.GetObjectLength();
  length += m_picking_upNumber.GetObjectLength();
  if (HasOptionalField(e_extensionArg))
    length += m_extensionArg.GetObjectLength();
  return length;
}


BOOL H4505_PickupArg::Decode(PASN_Stream & strm)
{
  if (!PreambleDecode(strm))
    return FALSE;

  if (!m_callPickupId.Decode(strm))
    return FALSE;
  if (!m_picking_upNumber.Decode(strm))
    return FALSE;
  if (HasOptionalField(e_extensionArg) && !m_extensionArg.Decode(strm))
    return FALSE;

  return UnknownExtensionsDecode(strm);
}


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

  m_callPickupId.Encode(strm);
  m_picking_upNumber.Encode(strm);
  if (HasOptionalField(e_extensionArg))
    m_extensionArg.Encode(strm);

  UnknownExtensionsEncode(strm);
}


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


//
// PickupRes
//

H4505_PickupRes::H4505_PickupRes(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
{
  m_extensionRes.SetConstraints(PASN_Object::FixedConstraint, 0, 255);
}


#ifndef PASN_NOPRINTON
void H4505_PickupRes::PrintOn(ostream & strm) const
{
  int indent = strm.precision() + 2;
  strm << "{\n";
  if (HasOptionalField(e_extensionRes))
    strm << setw(indent+15) << "extensionRes = " << setprecision(indent) << m_extensionRes << '\n';
  strm << setw(indent-1) << setprecision(indent-2) << "}";
}
#endif


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

  Comparison result;

  if ((result = m_extensionRes.Compare(other.m_extensionRes)) != EqualTo)
    return result;

  return PASN_Sequence::Compare(other);
}


PINDEX H4505_PickupRes::GetDataLength() const
{
  PINDEX length = 0;
  if (HasOptionalField(e_extensionRes))
    length += m_extensionRes.GetObjectLength();
  return length;
}


BOOL H4505_PickupRes::Decode(PASN_Stream & strm)
{
  if (!PreambleDecode(strm))
    return FALSE;

  if (HasOptionalField(e_extensionRes) && !m_extensionRes.Decode(strm))
    return FALSE;

  return UnknownExtensionsDecode(strm);
}


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

  if (HasOptionalField(e_extensionRes))
    m_extensionRes.Encode(strm);

  UnknownExtensionsEncode(strm);
}


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


//
// PickExeArg
//

H4505_PickExeArg::H4505_PickExeArg(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
{
  m_extensionArg.SetConstraints(PASN_Object::FixedConstraint, 0, 255);
}


#ifndef PASN_NOPRINTON
void H4505_PickExeArg::PrintOn(ostream & strm) const
{
  int indent = strm.precision() + 2;
  strm << "{\n";
  strm << setw(indent+15) << "callPickupId = " << setprecision(indent) << m_callPickupId << '\n';
  strm << setw(indent+19) << "picking_upNumber = " << setprecision(indent) << m_picking_upNumber << '\n';
  strm << setw(indent+18) << "partyToRetrieve = " << setprecision(indent) << m_partyToRetrieve << '\n';
  if (HasOptionalField(e_extensionArg))
    strm << setw(indent+15) << "extensionArg = " << setprecision(indent) << m_extensionArg << '\n';
  strm << setw(indent-1) << setprecision(indent-2) << "}";
}
#endif


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

  Comparison result;

  if ((result = m_callPickupId.Compare(other.m_callPickupId)) != EqualTo)
    return result;
  if ((result = m_picking_upNumber.Compare(other.m_picking_upNumber)) != EqualTo)
    return result;
  if ((result = m_partyToRetrieve.Compare(other.m_partyToRetrieve)) != EqualTo)
    return result;
  if ((result = m_extensionArg.Compare(other.m_extensionArg)) != EqualTo)
    return result;

  return PASN_Sequence::Compare(other);
}


PINDEX H4505_PickExeArg::GetDataLength() const
{
  PINDEX length = 0;
  length += m_callPickupId.GetObjectLength();
  length += m_picking_upNumber.GetObjectLength();
  length += m_partyToRetrieve.GetObjectLength();
  if (HasOptionalField(e_extensionArg))
    length += m_extensionArg.GetObjectLength();
  return length;
}


BOOL H4505_PickExeArg::Decode(PASN_Stream & strm)
{
  if (!PreambleDecode(strm))
    return FALSE;

  if (!m_callPickupId.Decode(strm))
    return FALSE;
  if (!m_picking_upNumber.Decode(strm))
    return FALSE;
  if (!m_partyToRetrieve.Decode(strm))
    return FALSE;
  if (HasOptionalField(e_extensionArg) && !m_extensionArg.Decode(strm))
    return FALSE;

  return UnknownExtensionsDecode(strm);
}


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

  m_callPickupId.Encode(strm);
  m_picking_upNumber.Encode(strm);
  m_partyToRetrieve.Encode(strm);
  if (HasOptionalField(e_extensionArg))
    m_extensionArg.Encode(strm);

  UnknownExtensionsEncode(strm);
}


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


//
// PickExeRes
//

H4505_PickExeRes::H4505_PickExeRes(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
{
  m_extensionRes.SetConstraints(PASN_Object::FixedConstraint, 0, 255);
}


#ifndef PASN_NOPRINTON
void H4505_PickExeRes::PrintOn(ostream & strm) const
{
  int indent = strm.precision() + 2;
  strm << "{\n";
  if (HasOptionalField(e_extensionRes))
    strm << setw(indent+15) << "extensionRes = " << setprecision(indent) << m_extensionRes << '\n';
  strm << setw(indent-1) << setprecision(indent-2) << "}";
}
#endif


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

  Comparison result;

  if ((result = m_extensionRes.Compare(other.m_extensionRes)) != EqualTo)
    return result;

  return PASN_Sequence::Compare(other);
}


PINDEX H4505_PickExeRes::GetDataLength() const
{
  PINDEX length = 0;
  if (HasOptionalField(e_extensionRes))
    length += m_extensionRes.GetObjectLength();
  return length;
}


BOOL H4505_PickExeRes::Decode(PASN_Stream & strm)
{
  if (!PreambleDecode(strm))
    return FALSE;

  if (HasOptionalField(e_extensionRes) && !m_extensionRes.Decode(strm))
    return FALSE;

  return UnknownExtensionsDecode(strm);
}


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

  if (HasOptionalField(e_extensionRes))
    m_extensionRes.Encode(strm);

  UnknownExtensionsEncode(strm);
}


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


//
// CpNotifyArg
//

H4505_CpNotifyArg::H4505_CpNotifyArg(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Sequence(tag, tagClass, 2, TRUE, 0)
{
  m_extensionArg.SetConstraints(PASN_Object::FixedConstraint, 0, 255);
}


#ifndef PASN_NOPRINTON
void H4505_CpNotifyArg::PrintOn(ostream & strm) const
{
  int indent = strm.precision() + 2;
  strm << "{\n";
  if (HasOptionalField(e_parkingNumber))
    strm << setw(indent+16) << "parkingNumber = " << setprecision(indent) << m_parkingNumber << '\n';
  if (HasOptionalField(e_extensionArg))
    strm << setw(indent+15) << "extensionArg = " << setprecision(indent) << m_extensionArg << '\n';
  strm << setw(indent-1) << setprecision(indent-2) << "}";
}
#endif


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

  Comparison result;

  if ((result = m_parkingNumber.Compare(other.m_parkingNumber)) != EqualTo)
    return result;
  if ((result = m_extensionArg.Compare(other.m_extensionArg)) != EqualTo)
    return result;

  return PASN_Sequence::Compare(other);
}


PINDEX H4505_CpNotifyArg::GetDataLength() const
{
  PINDEX length = 0;
  if (HasOptionalField(e_parkingNumber))
    length += m_parkingNumber.GetObjectLength();
  if (HasOptionalField(e_extensionArg))
    length += m_extensionArg.GetObjectLength();
  return length;
}


BOOL H4505_CpNotifyArg::Decode(PASN_Stream & strm)
{
  if (!PreambleDecode(strm))
    return FALSE;

  if (HasOptionalField(e_parkingNumber) && !m_parkingNumber.Decode(strm))
    return FALSE;
  if (HasOptionalField(e_extensionArg) && !m_extensionArg.Decode(strm))
    return FALSE;

  return UnknownExtensionsDecode(strm);
}


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

  if (HasOptionalField(e_parkingNumber))
    m_parkingNumber.Encode(strm);
  if (HasOptionalField(e_extensionArg))
    m_extensionArg.Encode(strm);

  UnknownExtensionsEncode(strm);
}


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


//
// CpickupNotifyArg
//

H4505_CpickupNotifyArg::H4505_CpickupNotifyArg(unsigned tag, PASN_Object::TagClass tagClass)
  : PASN_Sequence(tag, tagClass, 2, TRUE, 0)
{
  m_extensionArg.SetConstraints(PASN_Object::FixedConstraint, 0, 255);
}


#ifndef PASN_NOPRINTON
void H4505_CpickupNotifyArg::PrintOn(ostream & strm) const
{
  int indent = strm.precision() + 2;
  strm << "{\n";
  if (HasOptionalField(e_picking_upNumber))
    strm << setw(indent+19) << "picking_upNumber = " << setprecision(indent) << m_picking_upNumber << '\n';
  if (HasOptionalField(e_extensionArg))
    strm << setw(indent+15) << "extensionArg = " << setprecision(indent) << m_extensionArg << '\n';
  strm << setw(indent-1) << setprecision(indent-2) << "}";
}
#endif


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

  Comparison result;

  if ((result = m_picking_upNumber.Compare(other.m_picking_upNumber)) != EqualTo)
    return result;
  if ((result = m_extensionArg.Compare(other.m_extensionArg)) != EqualTo)
    return result;

  return PASN_Sequence::Compare(other);
}


PINDEX H4505_CpickupNotifyArg::GetDataLength() const
{
  PINDEX length = 0;
  if (HasOptionalField(e_picking_upNumber))
    length += m_picking_upNumber.GetObjectLength();
  if (HasOptionalField(e_extensionArg))
    length += m_extensionArg.GetObjectLength();
  return length;
}


BOOL H4505_CpickupNotifyArg::Decode(PASN_Stream & strm)
{
  if (!PreambleDecode(strm))
    return FALSE;

  if (HasOptionalField(e_picking_upNumber) && !m_picking_upNumber.Decode(strm))
    return FALSE;
  if (HasOptionalField(e_extensionArg) && !m_extensionArg.Decode(strm))
    return FALSE;

  return UnknownExtensionsDecode(strm);
}


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

  if (HasOptionalField(e_picking_upNumber))
    m_picking_upNumber.Encode(strm);
  if (HasOptionalField(e_extensionArg))
    m_extensionArg.Encode(strm);

  UnknownExtensionsEncode(strm);
}


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


#endif // if ! H323_DISABLE_H4505


// End of h4505.cxx
