D:/Storage/CVS_Head/h323plus/src/h225_2.cxx

00001 //
00002 // h225_2.cxx
00003 //
00004 // Code automatically generated by asnparse.
00005 //
00006 
00007 #include <ptlib.h>
00008 #include "h225.h"
00009 
00010 #define new PNEW
00011 
00012 
00013 #if ! H323_DISABLE_H225
00014 
00015 //
00016 // ArrayOf_EnumeratedParameter
00017 //
00018 
00019 H225_ArrayOf_EnumeratedParameter::H225_ArrayOf_EnumeratedParameter(unsigned tag, PASN_Object::TagClass tagClass)
00020   : PASN_Array(tag, tagClass)
00021 {
00022 }
00023 
00024 
00025 PASN_Object * H225_ArrayOf_EnumeratedParameter::CreateObject() const
00026 {
00027   return new H225_EnumeratedParameter;
00028 }
00029 
00030 
00031 H225_EnumeratedParameter & H225_ArrayOf_EnumeratedParameter::operator[](PINDEX i) const
00032 {
00033   return (H225_EnumeratedParameter &)array[i];
00034 }
00035 
00036 
00037 PObject * H225_ArrayOf_EnumeratedParameter::Clone() const
00038 {
00039 #ifndef PASN_LEANANDMEAN
00040   PAssert(IsClass(H225_ArrayOf_EnumeratedParameter::Class()), PInvalidCast);
00041 #endif
00042   return new H225_ArrayOf_EnumeratedParameter(*this);
00043 }
00044 
00045 
00046 //
00047 // RTPSession_associatedSessionIds
00048 //
00049 
00050 H225_RTPSession_associatedSessionIds::H225_RTPSession_associatedSessionIds(unsigned tag, PASN_Object::TagClass tagClass)
00051   : PASN_Array(tag, tagClass)
00052 {
00053 }
00054 
00055 
00056 PASN_Object * H225_RTPSession_associatedSessionIds::CreateObject() const
00057 {
00058   PASN_Integer * obj = new PASN_Integer;
00059   obj->SetConstraints(PASN_Object::FixedConstraint, 1, 255);
00060   return obj;
00061 }
00062 
00063 
00064 PASN_Integer & H225_RTPSession_associatedSessionIds::operator[](PINDEX i) const
00065 {
00066   return (PASN_Integer &)array[i];
00067 }
00068 
00069 
00070 PObject * H225_RTPSession_associatedSessionIds::Clone() const
00071 {
00072 #ifndef PASN_LEANANDMEAN
00073   PAssert(IsClass(H225_RTPSession_associatedSessionIds::Class()), PInvalidCast);
00074 #endif
00075   return new H225_RTPSession_associatedSessionIds(*this);
00076 }
00077 
00078 
00079 //
00080 // ArrayOf_AdmissionConfirm
00081 //
00082 
00083 H225_ArrayOf_AdmissionConfirm::H225_ArrayOf_AdmissionConfirm(unsigned tag, PASN_Object::TagClass tagClass)
00084   : PASN_Array(tag, tagClass)
00085 {
00086 }
00087 
00088 
00089 PASN_Object * H225_ArrayOf_AdmissionConfirm::CreateObject() const
00090 {
00091   return new H225_AdmissionConfirm;
00092 }
00093 
00094 
00095 H225_AdmissionConfirm & H225_ArrayOf_AdmissionConfirm::operator[](PINDEX i) const
00096 {
00097   return (H225_AdmissionConfirm &)array[i];
00098 }
00099 
00100 
00101 PObject * H225_ArrayOf_AdmissionConfirm::Clone() const
00102 {
00103 #ifndef PASN_LEANANDMEAN
00104   PAssert(IsClass(H225_ArrayOf_AdmissionConfirm::Class()), PInvalidCast);
00105 #endif
00106   return new H225_ArrayOf_AdmissionConfirm(*this);
00107 }
00108 
00109 
00110 //
00111 // ArrayOf_Endpoint
00112 //
00113 
00114 H225_ArrayOf_Endpoint::H225_ArrayOf_Endpoint(unsigned tag, PASN_Object::TagClass tagClass)
00115   : PASN_Array(tag, tagClass)
00116 {
00117 }
00118 
00119 
00120 PASN_Object * H225_ArrayOf_Endpoint::CreateObject() const
00121 {
00122   return new H225_Endpoint;
00123 }
00124 
00125 
00126 H225_Endpoint & H225_ArrayOf_Endpoint::operator[](PINDEX i) const
00127 {
00128   return (H225_Endpoint &)array[i];
00129 }
00130 
00131 
00132 PObject * H225_ArrayOf_Endpoint::Clone() const
00133 {
00134 #ifndef PASN_LEANANDMEAN
00135   PAssert(IsClass(H225_ArrayOf_Endpoint::Class()), PInvalidCast);
00136 #endif
00137   return new H225_ArrayOf_Endpoint(*this);
00138 }
00139 
00140 
00141 //
00142 // ArrayOf_AuthenticationMechanism
00143 //
00144 
00145 H225_ArrayOf_AuthenticationMechanism::H225_ArrayOf_AuthenticationMechanism(unsigned tag, PASN_Object::TagClass tagClass)
00146   : PASN_Array(tag, tagClass)
00147 {
00148 }
00149 
00150 
00151 PASN_Object * H225_ArrayOf_AuthenticationMechanism::CreateObject() const
00152 {
00153   return new H235_AuthenticationMechanism;
00154 }
00155 
00156 
00157 H235_AuthenticationMechanism & H225_ArrayOf_AuthenticationMechanism::operator[](PINDEX i) const
00158 {
00159   return (H235_AuthenticationMechanism &)array[i];
00160 }
00161 
00162 
00163 PObject * H225_ArrayOf_AuthenticationMechanism::Clone() const
00164 {
00165 #ifndef PASN_LEANANDMEAN
00166   PAssert(IsClass(H225_ArrayOf_AuthenticationMechanism::Class()), PInvalidCast);
00167 #endif
00168   return new H225_ArrayOf_AuthenticationMechanism(*this);
00169 }
00170 
00171 
00172 //
00173 // ArrayOf_PASN_ObjectId
00174 //
00175 
00176 H225_ArrayOf_PASN_ObjectId::H225_ArrayOf_PASN_ObjectId(unsigned tag, PASN_Object::TagClass tagClass)
00177   : PASN_Array(tag, tagClass)
00178 {
00179 }
00180 
00181 
00182 PASN_Object * H225_ArrayOf_PASN_ObjectId::CreateObject() const
00183 {
00184   return new PASN_ObjectId;
00185 }
00186 
00187 
00188 PASN_ObjectId & H225_ArrayOf_PASN_ObjectId::operator[](PINDEX i) const
00189 {
00190   return (PASN_ObjectId &)array[i];
00191 }
00192 
00193 
00194 PObject * H225_ArrayOf_PASN_ObjectId::Clone() const
00195 {
00196 #ifndef PASN_LEANANDMEAN
00197   PAssert(IsClass(H225_ArrayOf_PASN_ObjectId::Class()), PInvalidCast);
00198 #endif
00199   return new H225_ArrayOf_PASN_ObjectId(*this);
00200 }
00201 
00202 
00203 //
00204 // ArrayOf_IntegrityMechanism
00205 //
00206 
00207 H225_ArrayOf_IntegrityMechanism::H225_ArrayOf_IntegrityMechanism(unsigned tag, PASN_Object::TagClass tagClass)
00208   : PASN_Array(tag, tagClass)
00209 {
00210 }
00211 
00212 
00213 PASN_Object * H225_ArrayOf_IntegrityMechanism::CreateObject() const
00214 {
00215   return new H225_IntegrityMechanism;
00216 }
00217 
00218 
00219 H225_IntegrityMechanism & H225_ArrayOf_IntegrityMechanism::operator[](PINDEX i) const
00220 {
00221   return (H225_IntegrityMechanism &)array[i];
00222 }
00223 
00224 
00225 PObject * H225_ArrayOf_IntegrityMechanism::Clone() const
00226 {
00227 #ifndef PASN_LEANANDMEAN
00228   PAssert(IsClass(H225_ArrayOf_IntegrityMechanism::Class()), PInvalidCast);
00229 #endif
00230   return new H225_ArrayOf_IntegrityMechanism(*this);
00231 }
00232 
00233 
00234 //
00235 // ArrayOf_AddressPattern
00236 //
00237 
00238 H225_ArrayOf_AddressPattern::H225_ArrayOf_AddressPattern(unsigned tag, PASN_Object::TagClass tagClass)
00239   : PASN_Array(tag, tagClass)
00240 {
00241 }
00242 
00243 
00244 PASN_Object * H225_ArrayOf_AddressPattern::CreateObject() const
00245 {
00246   return new H225_AddressPattern;
00247 }
00248 
00249 
00250 H225_AddressPattern & H225_ArrayOf_AddressPattern::operator[](PINDEX i) const
00251 {
00252   return (H225_AddressPattern &)array[i];
00253 }
00254 
00255 
00256 PObject * H225_ArrayOf_AddressPattern::Clone() const
00257 {
00258 #ifndef PASN_LEANANDMEAN
00259   PAssert(IsClass(H225_ArrayOf_AddressPattern::Class()), PInvalidCast);
00260 #endif
00261   return new H225_ArrayOf_AddressPattern(*this);
00262 }
00263 
00264 
00265 //
00266 // ArrayOf_H248PackagesDescriptor
00267 //
00268 
00269 H225_ArrayOf_H248PackagesDescriptor::H225_ArrayOf_H248PackagesDescriptor(unsigned tag, PASN_Object::TagClass tagClass)
00270   : PASN_Array(tag, tagClass)
00271 {
00272 }
00273 
00274 
00275 PASN_Object * H225_ArrayOf_H248PackagesDescriptor::CreateObject() const
00276 {
00277   return new H225_H248PackagesDescriptor;
00278 }
00279 
00280 
00281 H225_H248PackagesDescriptor & H225_ArrayOf_H248PackagesDescriptor::operator[](PINDEX i) const
00282 {
00283   return (H225_H248PackagesDescriptor &)array[i];
00284 }
00285 
00286 
00287 PObject * H225_ArrayOf_H248PackagesDescriptor::Clone() const
00288 {
00289 #ifndef PASN_LEANANDMEAN
00290   PAssert(IsClass(H225_ArrayOf_H248PackagesDescriptor::Class()), PInvalidCast);
00291 #endif
00292   return new H225_ArrayOf_H248PackagesDescriptor(*this);
00293 }
00294 
00295 
00296 //
00297 // RegistrationRequest_language
00298 //
00299 
00300 H225_RegistrationRequest_language::H225_RegistrationRequest_language(unsigned tag, PASN_Object::TagClass tagClass)
00301   : PASN_Array(tag, tagClass)
00302 {
00303 }
00304 
00305 
00306 PASN_Object * H225_RegistrationRequest_language::CreateObject() const
00307 {
00308   PASN_IA5String * obj = new PASN_IA5String;
00309   obj->SetConstraints(PASN_Object::FixedConstraint, 1, 32);
00310   return obj;
00311 }
00312 
00313 
00314 PASN_IA5String & H225_RegistrationRequest_language::operator[](PINDEX i) const
00315 {
00316   return (PASN_IA5String &)array[i];
00317 }
00318 
00319 
00320 PObject * H225_RegistrationRequest_language::Clone() const
00321 {
00322 #ifndef PASN_LEANANDMEAN
00323   PAssert(IsClass(H225_RegistrationRequest_language::Class()), PInvalidCast);
00324 #endif
00325   return new H225_RegistrationRequest_language(*this);
00326 }
00327 
00328 
00329 //
00330 // ArrayOf_RasUsageSpecification
00331 //
00332 
00333 H225_ArrayOf_RasUsageSpecification::H225_ArrayOf_RasUsageSpecification(unsigned tag, PASN_Object::TagClass tagClass)
00334   : PASN_Array(tag, tagClass)
00335 {
00336 }
00337 
00338 
00339 PASN_Object * H225_ArrayOf_RasUsageSpecification::CreateObject() const
00340 {
00341   return new H225_RasUsageSpecification;
00342 }
00343 
00344 
00345 H225_RasUsageSpecification & H225_ArrayOf_RasUsageSpecification::operator[](PINDEX i) const
00346 {
00347   return (H225_RasUsageSpecification &)array[i];
00348 }
00349 
00350 
00351 PObject * H225_ArrayOf_RasUsageSpecification::Clone() const
00352 {
00353 #ifndef PASN_LEANANDMEAN
00354   PAssert(IsClass(H225_ArrayOf_RasUsageSpecification::Class()), PInvalidCast);
00355 #endif
00356   return new H225_ArrayOf_RasUsageSpecification(*this);
00357 }
00358 
00359 
00360 //
00361 // RegistrationRejectReason_invalidTerminalAliases
00362 //
00363 
00364 H225_RegistrationRejectReason_invalidTerminalAliases::H225_RegistrationRejectReason_invalidTerminalAliases(unsigned tag, PASN_Object::TagClass tagClass)
00365   : PASN_Sequence(tag, tagClass, 3, TRUE, 0)
00366 {
00367 }
00368 
00369 
00370 #ifndef PASN_NOPRINTON
00371 void H225_RegistrationRejectReason_invalidTerminalAliases::PrintOn(ostream & strm) const
00372 {
00373   int indent = strm.precision() + 2;
00374   strm << "{\n";
00375   if (HasOptionalField(e_terminalAlias))
00376     strm << setw(indent+16) << "terminalAlias = " << setprecision(indent) << m_terminalAlias << '\n';
00377   if (HasOptionalField(e_terminalAliasPattern))
00378     strm << setw(indent+23) << "terminalAliasPattern = " << setprecision(indent) << m_terminalAliasPattern << '\n';
00379   if (HasOptionalField(e_supportedPrefixes))
00380     strm << setw(indent+20) << "supportedPrefixes = " << setprecision(indent) << m_supportedPrefixes << '\n';
00381   strm << setw(indent-1) << setprecision(indent-2) << "}";
00382 }
00383 #endif
00384 
00385 
00386 PObject::Comparison H225_RegistrationRejectReason_invalidTerminalAliases::Compare(const PObject & obj) const
00387 {
00388 #ifndef PASN_LEANANDMEAN
00389   PAssert(PIsDescendant(&obj, H225_RegistrationRejectReason_invalidTerminalAliases), PInvalidCast);
00390 #endif
00391   const H225_RegistrationRejectReason_invalidTerminalAliases & other = (const H225_RegistrationRejectReason_invalidTerminalAliases &)obj;
00392 
00393   Comparison result;
00394 
00395   if ((result = m_terminalAlias.Compare(other.m_terminalAlias)) != EqualTo)
00396     return result;
00397   if ((result = m_terminalAliasPattern.Compare(other.m_terminalAliasPattern)) != EqualTo)
00398     return result;
00399   if ((result = m_supportedPrefixes.Compare(other.m_supportedPrefixes)) != EqualTo)
00400     return result;
00401 
00402   return PASN_Sequence::Compare(other);
00403 }
00404 
00405 
00406 PINDEX H225_RegistrationRejectReason_invalidTerminalAliases::GetDataLength() const
00407 {
00408   PINDEX length = 0;
00409   if (HasOptionalField(e_terminalAlias))
00410     length += m_terminalAlias.GetObjectLength();
00411   if (HasOptionalField(e_terminalAliasPattern))
00412     length += m_terminalAliasPattern.GetObjectLength();
00413   if (HasOptionalField(e_supportedPrefixes))
00414     length += m_supportedPrefixes.GetObjectLength();
00415   return length;
00416 }
00417 
00418 
00419 BOOL H225_RegistrationRejectReason_invalidTerminalAliases::Decode(PASN_Stream & strm)
00420 {
00421   if (!PreambleDecode(strm))
00422     return FALSE;
00423 
00424   if (HasOptionalField(e_terminalAlias) && !m_terminalAlias.Decode(strm))
00425     return FALSE;
00426   if (HasOptionalField(e_terminalAliasPattern) && !m_terminalAliasPattern.Decode(strm))
00427     return FALSE;
00428   if (HasOptionalField(e_supportedPrefixes) && !m_supportedPrefixes.Decode(strm))
00429     return FALSE;
00430 
00431   return UnknownExtensionsDecode(strm);
00432 }
00433 
00434 
00435 void H225_RegistrationRejectReason_invalidTerminalAliases::Encode(PASN_Stream & strm) const
00436 {
00437   PreambleEncode(strm);
00438 
00439   if (HasOptionalField(e_terminalAlias))
00440     m_terminalAlias.Encode(strm);
00441   if (HasOptionalField(e_terminalAliasPattern))
00442     m_terminalAliasPattern.Encode(strm);
00443   if (HasOptionalField(e_supportedPrefixes))
00444     m_supportedPrefixes.Encode(strm);
00445 
00446   UnknownExtensionsEncode(strm);
00447 }
00448 
00449 
00450 PObject * H225_RegistrationRejectReason_invalidTerminalAliases::Clone() const
00451 {
00452 #ifndef PASN_LEANANDMEAN
00453   PAssert(IsClass(H225_RegistrationRejectReason_invalidTerminalAliases::Class()), PInvalidCast);
00454 #endif
00455   return new H225_RegistrationRejectReason_invalidTerminalAliases(*this);
00456 }
00457 
00458 
00459 //
00460 // ArrayOf_QOSCapability
00461 //
00462 
00463 H225_ArrayOf_QOSCapability::H225_ArrayOf_QOSCapability(unsigned tag, PASN_Object::TagClass tagClass)
00464   : PASN_Array(tag, tagClass)
00465 {
00466 }
00467 
00468 
00469 PASN_Object * H225_ArrayOf_QOSCapability::CreateObject() const
00470 {
00471   return new H245_QOSCapability;
00472 }
00473 
00474 
00475 H245_QOSCapability & H225_ArrayOf_QOSCapability::operator[](PINDEX i) const
00476 {
00477   return (H245_QOSCapability &)array[i];
00478 }
00479 
00480 
00481 PObject * H225_ArrayOf_QOSCapability::Clone() const
00482 {
00483 #ifndef PASN_LEANANDMEAN
00484   PAssert(IsClass(H225_ArrayOf_QOSCapability::Class()), PInvalidCast);
00485 #endif
00486   return new H225_ArrayOf_QOSCapability(*this);
00487 }
00488 
00489 
00490 //
00491 // AdmissionConfirm_language
00492 //
00493 
00494 H225_AdmissionConfirm_language::H225_AdmissionConfirm_language(unsigned tag, PASN_Object::TagClass tagClass)
00495   : PASN_Array(tag, tagClass)
00496 {
00497 }
00498 
00499 
00500 PASN_Object * H225_AdmissionConfirm_language::CreateObject() const
00501 {
00502   PASN_IA5String * obj = new PASN_IA5String;
00503   obj->SetConstraints(PASN_Object::FixedConstraint, 1, 32);
00504   return obj;
00505 }
00506 
00507 
00508 PASN_IA5String & H225_AdmissionConfirm_language::operator[](PINDEX i) const
00509 {
00510   return (PASN_IA5String &)array[i];
00511 }
00512 
00513 
00514 PObject * H225_AdmissionConfirm_language::Clone() const
00515 {
00516 #ifndef PASN_LEANANDMEAN
00517   PAssert(IsClass(H225_AdmissionConfirm_language::Class()), PInvalidCast);
00518 #endif
00519   return new H225_AdmissionConfirm_language(*this);
00520 }
00521 
00522 
00523 //
00524 // ArrayOf_PartyNumber
00525 //
00526 
00527 H225_ArrayOf_PartyNumber::H225_ArrayOf_PartyNumber(unsigned tag, PASN_Object::TagClass tagClass)
00528   : PASN_Array(tag, tagClass)
00529 {
00530 }
00531 
00532 
00533 PASN_Object * H225_ArrayOf_PartyNumber::CreateObject() const
00534 {
00535   return new H225_PartyNumber;
00536 }
00537 
00538 
00539 H225_PartyNumber & H225_ArrayOf_PartyNumber::operator[](PINDEX i) const
00540 {
00541   return (H225_PartyNumber &)array[i];
00542 }
00543 
00544 
00545 PObject * H225_ArrayOf_PartyNumber::Clone() const
00546 {
00547 #ifndef PASN_LEANANDMEAN
00548   PAssert(IsClass(H225_ArrayOf_PartyNumber::Class()), PInvalidCast);
00549 #endif
00550   return new H225_ArrayOf_PartyNumber(*this);
00551 }
00552 
00553 
00554 //
00555 // ArrayOf_BandwidthDetails
00556 //
00557 
00558 H225_ArrayOf_BandwidthDetails::H225_ArrayOf_BandwidthDetails(unsigned tag, PASN_Object::TagClass tagClass)
00559   : PASN_Array(tag, tagClass)
00560 {
00561 }
00562 
00563 
00564 PASN_Object * H225_ArrayOf_BandwidthDetails::CreateObject() const
00565 {
00566   return new H225_BandwidthDetails;
00567 }
00568 
00569 
00570 H225_BandwidthDetails & H225_ArrayOf_BandwidthDetails::operator[](PINDEX i) const
00571 {
00572   return (H225_BandwidthDetails &)array[i];
00573 }
00574 
00575 
00576 PObject * H225_ArrayOf_BandwidthDetails::Clone() const
00577 {
00578 #ifndef PASN_LEANANDMEAN
00579   PAssert(IsClass(H225_ArrayOf_BandwidthDetails::Class()), PInvalidCast);
00580 #endif
00581   return new H225_ArrayOf_BandwidthDetails(*this);
00582 }
00583 
00584 
00585 //
00586 // LocationRequest_language
00587 //
00588 
00589 H225_LocationRequest_language::H225_LocationRequest_language(unsigned tag, PASN_Object::TagClass tagClass)
00590   : PASN_Array(tag, tagClass)
00591 {
00592 }
00593 
00594 
00595 PASN_Object * H225_LocationRequest_language::CreateObject() const
00596 {
00597   PASN_IA5String * obj = new PASN_IA5String;
00598   obj->SetConstraints(PASN_Object::FixedConstraint, 1, 32);
00599   return obj;
00600 }
00601 
00602 
00603 PASN_IA5String & H225_LocationRequest_language::operator[](PINDEX i) const
00604 {
00605   return (PASN_IA5String &)array[i];
00606 }
00607 
00608 
00609 PObject * H225_LocationRequest_language::Clone() const
00610 {
00611 #ifndef PASN_LEANANDMEAN
00612   PAssert(IsClass(H225_LocationRequest_language::Class()), PInvalidCast);
00613 #endif
00614   return new H225_LocationRequest_language(*this);
00615 }
00616 
00617 
00618 //
00619 // InfoRequestResponse_perCallInfo
00620 //
00621 
00622 H225_InfoRequestResponse_perCallInfo::H225_InfoRequestResponse_perCallInfo(unsigned tag, PASN_Object::TagClass tagClass)
00623   : PASN_Array(tag, tagClass)
00624 {
00625 }
00626 
00627 
00628 PASN_Object * H225_InfoRequestResponse_perCallInfo::CreateObject() const
00629 {
00630   return new H225_InfoRequestResponse_perCallInfo_subtype;
00631 }
00632 
00633 
00634 H225_InfoRequestResponse_perCallInfo_subtype & H225_InfoRequestResponse_perCallInfo::operator[](PINDEX i) const
00635 {
00636   return (H225_InfoRequestResponse_perCallInfo_subtype &)array[i];
00637 }
00638 
00639 
00640 PObject * H225_InfoRequestResponse_perCallInfo::Clone() const
00641 {
00642 #ifndef PASN_LEANANDMEAN
00643   PAssert(IsClass(H225_InfoRequestResponse_perCallInfo::Class()), PInvalidCast);
00644 #endif
00645   return new H225_InfoRequestResponse_perCallInfo(*this);
00646 }
00647 
00648 
00649 //
00650 // ServiceControlIndication_callSpecific
00651 //
00652 
00653 H225_ServiceControlIndication_callSpecific::H225_ServiceControlIndication_callSpecific(unsigned tag, PASN_Object::TagClass tagClass)
00654   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
00655 {
00656 }
00657 
00658 
00659 #ifndef PASN_NOPRINTON
00660 void H225_ServiceControlIndication_callSpecific::PrintOn(ostream & strm) const
00661 {
00662   int indent = strm.precision() + 2;
00663   strm << "{\n";
00664   strm << setw(indent+17) << "callIdentifier = " << setprecision(indent) << m_callIdentifier << '\n';
00665   strm << setw(indent+15) << "conferenceID = " << setprecision(indent) << m_conferenceID << '\n';
00666   strm << setw(indent+15) << "answeredCall = " << setprecision(indent) << m_answeredCall << '\n';
00667   strm << setw(indent-1) << setprecision(indent-2) << "}";
00668 }
00669 #endif
00670 
00671 
00672 PObject::Comparison H225_ServiceControlIndication_callSpecific::Compare(const PObject & obj) const
00673 {
00674 #ifndef PASN_LEANANDMEAN
00675   PAssert(PIsDescendant(&obj, H225_ServiceControlIndication_callSpecific), PInvalidCast);
00676 #endif
00677   const H225_ServiceControlIndication_callSpecific & other = (const H225_ServiceControlIndication_callSpecific &)obj;
00678 
00679   Comparison result;
00680 
00681   if ((result = m_callIdentifier.Compare(other.m_callIdentifier)) != EqualTo)
00682     return result;
00683   if ((result = m_conferenceID.Compare(other.m_conferenceID)) != EqualTo)
00684     return result;
00685   if ((result = m_answeredCall.Compare(other.m_answeredCall)) != EqualTo)
00686     return result;
00687 
00688   return PASN_Sequence::Compare(other);
00689 }
00690 
00691 
00692 PINDEX H225_ServiceControlIndication_callSpecific::GetDataLength() const
00693 {
00694   PINDEX length = 0;
00695   length += m_callIdentifier.GetObjectLength();
00696   length += m_conferenceID.GetObjectLength();
00697   length += m_answeredCall.GetObjectLength();
00698   return length;
00699 }
00700 
00701 
00702 BOOL H225_ServiceControlIndication_callSpecific::Decode(PASN_Stream & strm)
00703 {
00704   if (!PreambleDecode(strm))
00705     return FALSE;
00706 
00707   if (!m_callIdentifier.Decode(strm))
00708     return FALSE;
00709   if (!m_conferenceID.Decode(strm))
00710     return FALSE;
00711   if (!m_answeredCall.Decode(strm))
00712     return FALSE;
00713 
00714   return UnknownExtensionsDecode(strm);
00715 }
00716 
00717 
00718 void H225_ServiceControlIndication_callSpecific::Encode(PASN_Stream & strm) const
00719 {
00720   PreambleEncode(strm);
00721 
00722   m_callIdentifier.Encode(strm);
00723   m_conferenceID.Encode(strm);
00724   m_answeredCall.Encode(strm);
00725 
00726   UnknownExtensionsEncode(strm);
00727 }
00728 
00729 
00730 PObject * H225_ServiceControlIndication_callSpecific::Clone() const
00731 {
00732 #ifndef PASN_LEANANDMEAN
00733   PAssert(IsClass(H225_ServiceControlIndication_callSpecific::Class()), PInvalidCast);
00734 #endif
00735   return new H225_ServiceControlIndication_callSpecific(*this);
00736 }
00737 
00738 
00739 
00740 #ifndef PASN_NOPRINTON
00741 const static PASN_Names Names_H225_ServiceControlResponse_result[]={
00742       {"started",0}
00743      ,{"failed",1}
00744      ,{"stopped",2}
00745      ,{"notAvailable",3}
00746      ,{"neededFeatureNotSupported",4}
00747 };
00748 #endif
00749 //
00750 // ServiceControlResponse_result
00751 //
00752 
00753 H225_ServiceControlResponse_result::H225_ServiceControlResponse_result(unsigned tag, PASN_Object::TagClass tagClass)
00754   : PASN_Choice(tag, tagClass, 5, TRUE
00755 #ifndef PASN_NOPRINTON
00756     ,(const PASN_Names *)Names_H225_ServiceControlResponse_result,5
00757 #endif
00758 )
00759 {
00760 }
00761 
00762 
00763 BOOL H225_ServiceControlResponse_result::CreateObject()
00764 {
00765   choice = (tag <= e_neededFeatureNotSupported) ? new PASN_Null() : NULL;
00766   return choice != NULL;
00767 }
00768 
00769 
00770 PObject * H225_ServiceControlResponse_result::Clone() const
00771 {
00772 #ifndef PASN_LEANANDMEAN
00773   PAssert(IsClass(H225_ServiceControlResponse_result::Class()), PInvalidCast);
00774 #endif
00775   return new H225_ServiceControlResponse_result(*this);
00776 }
00777 
00778 
00779 //
00780 // TransportAddress_ipSourceRoute_route
00781 //
00782 
00783 H225_TransportAddress_ipSourceRoute_route::H225_TransportAddress_ipSourceRoute_route(unsigned tag, PASN_Object::TagClass tagClass)
00784   : PASN_Array(tag, tagClass)
00785 {
00786 }
00787 
00788 
00789 PASN_Object * H225_TransportAddress_ipSourceRoute_route::CreateObject() const
00790 {
00791   PASN_OctetString * obj = new PASN_OctetString;
00792   obj->SetConstraints(PASN_Object::FixedConstraint, 4);
00793   return obj;
00794 }
00795 
00796 
00797 PASN_OctetString & H225_TransportAddress_ipSourceRoute_route::operator[](PINDEX i) const
00798 {
00799   return (PASN_OctetString &)array[i];
00800 }
00801 
00802 
00803 PObject * H225_TransportAddress_ipSourceRoute_route::Clone() const
00804 {
00805 #ifndef PASN_LEANANDMEAN
00806   PAssert(IsClass(H225_TransportAddress_ipSourceRoute_route::Class()), PInvalidCast);
00807 #endif
00808   return new H225_TransportAddress_ipSourceRoute_route(*this);
00809 }
00810 
00811 
00812 
00813 #ifndef PASN_NOPRINTON
00814 const static PASN_Names Names_H225_TransportAddress_ipSourceRoute_routing[]={
00815       {"strict",0}
00816      ,{"loose",1}
00817 };
00818 #endif
00819 //
00820 // TransportAddress_ipSourceRoute_routing
00821 //
00822 
00823 H225_TransportAddress_ipSourceRoute_routing::H225_TransportAddress_ipSourceRoute_routing(unsigned tag, PASN_Object::TagClass tagClass)
00824   : PASN_Choice(tag, tagClass, 2, TRUE
00825 #ifndef PASN_NOPRINTON
00826     ,(const PASN_Names *)Names_H225_TransportAddress_ipSourceRoute_routing,2
00827 #endif
00828 )
00829 {
00830 }
00831 
00832 
00833 BOOL H225_TransportAddress_ipSourceRoute_routing::CreateObject()
00834 {
00835   choice = (tag <= e_loose) ? new PASN_Null() : NULL;
00836   return choice != NULL;
00837 }
00838 
00839 
00840 PObject * H225_TransportAddress_ipSourceRoute_routing::Clone() const
00841 {
00842 #ifndef PASN_LEANANDMEAN
00843   PAssert(IsClass(H225_TransportAddress_ipSourceRoute_routing::Class()), PInvalidCast);
00844 #endif
00845   return new H225_TransportAddress_ipSourceRoute_routing(*this);
00846 }
00847 
00848 
00849 //
00850 // ArrayOf_RTPSession
00851 //
00852 
00853 H225_ArrayOf_RTPSession::H225_ArrayOf_RTPSession(unsigned tag, PASN_Object::TagClass tagClass)
00854   : PASN_Array(tag, tagClass)
00855 {
00856 }
00857 
00858 
00859 PASN_Object * H225_ArrayOf_RTPSession::CreateObject() const
00860 {
00861   return new H225_RTPSession;
00862 }
00863 
00864 
00865 H225_RTPSession & H225_ArrayOf_RTPSession::operator[](PINDEX i) const
00866 {
00867   return (H225_RTPSession &)array[i];
00868 }
00869 
00870 
00871 PObject * H225_ArrayOf_RTPSession::Clone() const
00872 {
00873 #ifndef PASN_LEANANDMEAN
00874   PAssert(IsClass(H225_ArrayOf_RTPSession::Class()), PInvalidCast);
00875 #endif
00876   return new H225_ArrayOf_RTPSession(*this);
00877 }
00878 
00879 
00880 //
00881 // ArrayOf_TransportChannelInfo
00882 //
00883 
00884 H225_ArrayOf_TransportChannelInfo::H225_ArrayOf_TransportChannelInfo(unsigned tag, PASN_Object::TagClass tagClass)
00885   : PASN_Array(tag, tagClass)
00886 {
00887 }
00888 
00889 
00890 PASN_Object * H225_ArrayOf_TransportChannelInfo::CreateObject() const
00891 {
00892   return new H225_TransportChannelInfo;
00893 }
00894 
00895 
00896 H225_TransportChannelInfo & H225_ArrayOf_TransportChannelInfo::operator[](PINDEX i) const
00897 {
00898   return (H225_TransportChannelInfo &)array[i];
00899 }
00900 
00901 
00902 PObject * H225_ArrayOf_TransportChannelInfo::Clone() const
00903 {
00904 #ifndef PASN_LEANANDMEAN
00905   PAssert(IsClass(H225_ArrayOf_TransportChannelInfo::Class()), PInvalidCast);
00906 #endif
00907   return new H225_ArrayOf_TransportChannelInfo(*this);
00908 }
00909 
00910 
00911 //
00912 // ArrayOf_ConferenceIdentifier
00913 //
00914 
00915 H225_ArrayOf_ConferenceIdentifier::H225_ArrayOf_ConferenceIdentifier(unsigned tag, PASN_Object::TagClass tagClass)
00916   : PASN_Array(tag, tagClass)
00917 {
00918 }
00919 
00920 
00921 PASN_Object * H225_ArrayOf_ConferenceIdentifier::CreateObject() const
00922 {
00923   return new H225_ConferenceIdentifier;
00924 }
00925 
00926 
00927 H225_ConferenceIdentifier & H225_ArrayOf_ConferenceIdentifier::operator[](PINDEX i) const
00928 {
00929   return (H225_ConferenceIdentifier &)array[i];
00930 }
00931 
00932 
00933 PObject * H225_ArrayOf_ConferenceIdentifier::Clone() const
00934 {
00935 #ifndef PASN_LEANANDMEAN
00936   PAssert(IsClass(H225_ArrayOf_ConferenceIdentifier::Class()), PInvalidCast);
00937 #endif
00938   return new H225_ArrayOf_ConferenceIdentifier(*this);
00939 }
00940 
00941 
00942 //
00943 // InfoRequestResponse_perCallInfo_subtype_pdu
00944 //
00945 
00946 H225_InfoRequestResponse_perCallInfo_subtype_pdu::H225_InfoRequestResponse_perCallInfo_subtype_pdu(unsigned tag, PASN_Object::TagClass tagClass)
00947   : PASN_Array(tag, tagClass)
00948 {
00949 }
00950 
00951 
00952 PASN_Object * H225_InfoRequestResponse_perCallInfo_subtype_pdu::CreateObject() const
00953 {
00954   return new H225_InfoRequestResponse_perCallInfo_subtype_pdu_subtype;
00955 }
00956 
00957 
00958 H225_InfoRequestResponse_perCallInfo_subtype_pdu_subtype & H225_InfoRequestResponse_perCallInfo_subtype_pdu::operator[](PINDEX i) const
00959 {
00960   return (H225_InfoRequestResponse_perCallInfo_subtype_pdu_subtype &)array[i];
00961 }
00962 
00963 
00964 PObject * H225_InfoRequestResponse_perCallInfo_subtype_pdu::Clone() const
00965 {
00966 #ifndef PASN_LEANANDMEAN
00967   PAssert(IsClass(H225_InfoRequestResponse_perCallInfo_subtype_pdu::Class()), PInvalidCast);
00968 #endif
00969   return new H225_InfoRequestResponse_perCallInfo_subtype_pdu(*this);
00970 }
00971 
00972 
00973 //
00974 // Status-UUIE
00975 //
00976 
00977 H225_Status_UUIE::H225_Status_UUIE(unsigned tag, PASN_Object::TagClass tagClass)
00978   : PASN_Sequence(tag, tagClass, 2, TRUE, 0)
00979 {
00980 }
00981 
00982 
00983 #ifndef PASN_NOPRINTON
00984 void H225_Status_UUIE::PrintOn(ostream & strm) const
00985 {
00986   int indent = strm.precision() + 2;
00987   strm << "{\n";
00988   strm << setw(indent+21) << "protocolIdentifier = " << setprecision(indent) << m_protocolIdentifier << '\n';
00989   strm << setw(indent+17) << "callIdentifier = " << setprecision(indent) << m_callIdentifier << '\n';
00990   if (HasOptionalField(e_tokens))
00991     strm << setw(indent+9) << "tokens = " << setprecision(indent) << m_tokens << '\n';
00992   if (HasOptionalField(e_cryptoTokens))
00993     strm << setw(indent+15) << "cryptoTokens = " << setprecision(indent) << m_cryptoTokens << '\n';
00994   strm << setw(indent-1) << setprecision(indent-2) << "}";
00995 }
00996 #endif
00997 
00998 
00999 PObject::Comparison H225_Status_UUIE::Compare(const PObject & obj) const
01000 {
01001 #ifndef PASN_LEANANDMEAN
01002   PAssert(PIsDescendant(&obj, H225_Status_UUIE), PInvalidCast);
01003 #endif
01004   const H225_Status_UUIE & other = (const H225_Status_UUIE &)obj;
01005 
01006   Comparison result;
01007 
01008   if ((result = m_protocolIdentifier.Compare(other.m_protocolIdentifier)) != EqualTo)
01009     return result;
01010   if ((result = m_callIdentifier.Compare(other.m_callIdentifier)) != EqualTo)
01011     return result;
01012   if ((result = m_tokens.Compare(other.m_tokens)) != EqualTo)
01013     return result;
01014   if ((result = m_cryptoTokens.Compare(other.m_cryptoTokens)) != EqualTo)
01015     return result;
01016 
01017   return PASN_Sequence::Compare(other);
01018 }
01019 
01020 
01021 PINDEX H225_Status_UUIE::GetDataLength() const
01022 {
01023   PINDEX length = 0;
01024   length += m_protocolIdentifier.GetObjectLength();
01025   length += m_callIdentifier.GetObjectLength();
01026   if (HasOptionalField(e_tokens))
01027     length += m_tokens.GetObjectLength();
01028   if (HasOptionalField(e_cryptoTokens))
01029     length += m_cryptoTokens.GetObjectLength();
01030   return length;
01031 }
01032 
01033 
01034 BOOL H225_Status_UUIE::Decode(PASN_Stream & strm)
01035 {
01036   if (!PreambleDecode(strm))
01037     return FALSE;
01038 
01039   if (!m_protocolIdentifier.Decode(strm))
01040     return FALSE;
01041   if (!m_callIdentifier.Decode(strm))
01042     return FALSE;
01043   if (HasOptionalField(e_tokens) && !m_tokens.Decode(strm))
01044     return FALSE;
01045   if (HasOptionalField(e_cryptoTokens) && !m_cryptoTokens.Decode(strm))
01046     return FALSE;
01047 
01048   return UnknownExtensionsDecode(strm);
01049 }
01050 
01051 
01052 void H225_Status_UUIE::Encode(PASN_Stream & strm) const
01053 {
01054   PreambleEncode(strm);
01055 
01056   m_protocolIdentifier.Encode(strm);
01057   m_callIdentifier.Encode(strm);
01058   if (HasOptionalField(e_tokens))
01059     m_tokens.Encode(strm);
01060   if (HasOptionalField(e_cryptoTokens))
01061     m_cryptoTokens.Encode(strm);
01062 
01063   UnknownExtensionsEncode(strm);
01064 }
01065 
01066 
01067 PObject * H225_Status_UUIE::Clone() const
01068 {
01069 #ifndef PASN_LEANANDMEAN
01070   PAssert(IsClass(H225_Status_UUIE::Class()), PInvalidCast);
01071 #endif
01072   return new H225_Status_UUIE(*this);
01073 }
01074 
01075 
01076 //
01077 // StatusInquiry-UUIE
01078 //
01079 
01080 H225_StatusInquiry_UUIE::H225_StatusInquiry_UUIE(unsigned tag, PASN_Object::TagClass tagClass)
01081   : PASN_Sequence(tag, tagClass, 2, TRUE, 0)
01082 {
01083 }
01084 
01085 
01086 #ifndef PASN_NOPRINTON
01087 void H225_StatusInquiry_UUIE::PrintOn(ostream & strm) const
01088 {
01089   int indent = strm.precision() + 2;
01090   strm << "{\n";
01091   strm << setw(indent+21) << "protocolIdentifier = " << setprecision(indent) << m_protocolIdentifier << '\n';
01092   strm << setw(indent+17) << "callIdentifier = " << setprecision(indent) << m_callIdentifier << '\n';
01093   if (HasOptionalField(e_tokens))
01094     strm << setw(indent+9) << "tokens = " << setprecision(indent) << m_tokens << '\n';
01095   if (HasOptionalField(e_cryptoTokens))
01096     strm << setw(indent+15) << "cryptoTokens = " << setprecision(indent) << m_cryptoTokens << '\n';
01097   strm << setw(indent-1) << setprecision(indent-2) << "}";
01098 }
01099 #endif
01100 
01101 
01102 PObject::Comparison H225_StatusInquiry_UUIE::Compare(const PObject & obj) const
01103 {
01104 #ifndef PASN_LEANANDMEAN
01105   PAssert(PIsDescendant(&obj, H225_StatusInquiry_UUIE), PInvalidCast);
01106 #endif
01107   const H225_StatusInquiry_UUIE & other = (const H225_StatusInquiry_UUIE &)obj;
01108 
01109   Comparison result;
01110 
01111   if ((result = m_protocolIdentifier.Compare(other.m_protocolIdentifier)) != EqualTo)
01112     return result;
01113   if ((result = m_callIdentifier.Compare(other.m_callIdentifier)) != EqualTo)
01114     return result;
01115   if ((result = m_tokens.Compare(other.m_tokens)) != EqualTo)
01116     return result;
01117   if ((result = m_cryptoTokens.Compare(other.m_cryptoTokens)) != EqualTo)
01118     return result;
01119 
01120   return PASN_Sequence::Compare(other);
01121 }
01122 
01123 
01124 PINDEX H225_StatusInquiry_UUIE::GetDataLength() const
01125 {
01126   PINDEX length = 0;
01127   length += m_protocolIdentifier.GetObjectLength();
01128   length += m_callIdentifier.GetObjectLength();
01129   if (HasOptionalField(e_tokens))
01130     length += m_tokens.GetObjectLength();
01131   if (HasOptionalField(e_cryptoTokens))
01132     length += m_cryptoTokens.GetObjectLength();
01133   return length;
01134 }
01135 
01136 
01137 BOOL H225_StatusInquiry_UUIE::Decode(PASN_Stream & strm)
01138 {
01139   if (!PreambleDecode(strm))
01140     return FALSE;
01141 
01142   if (!m_protocolIdentifier.Decode(strm))
01143     return FALSE;
01144   if (!m_callIdentifier.Decode(strm))
01145     return FALSE;
01146   if (HasOptionalField(e_tokens) && !m_tokens.Decode(strm))
01147     return FALSE;
01148   if (HasOptionalField(e_cryptoTokens) && !m_cryptoTokens.Decode(strm))
01149     return FALSE;
01150 
01151   return UnknownExtensionsDecode(strm);
01152 }
01153 
01154 
01155 void H225_StatusInquiry_UUIE::Encode(PASN_Stream & strm) const
01156 {
01157   PreambleEncode(strm);
01158 
01159   m_protocolIdentifier.Encode(strm);
01160   m_callIdentifier.Encode(strm);
01161   if (HasOptionalField(e_tokens))
01162     m_tokens.Encode(strm);
01163   if (HasOptionalField(e_cryptoTokens))
01164     m_cryptoTokens.Encode(strm);
01165 
01166   UnknownExtensionsEncode(strm);
01167 }
01168 
01169 
01170 PObject * H225_StatusInquiry_UUIE::Clone() const
01171 {
01172 #ifndef PASN_LEANANDMEAN
01173   PAssert(IsClass(H225_StatusInquiry_UUIE::Class()), PInvalidCast);
01174 #endif
01175   return new H225_StatusInquiry_UUIE(*this);
01176 }
01177 
01178 
01179 //
01180 // SetupAcknowledge-UUIE
01181 //
01182 
01183 H225_SetupAcknowledge_UUIE::H225_SetupAcknowledge_UUIE(unsigned tag, PASN_Object::TagClass tagClass)
01184   : PASN_Sequence(tag, tagClass, 2, TRUE, 0)
01185 {
01186 }
01187 
01188 
01189 #ifndef PASN_NOPRINTON
01190 void H225_SetupAcknowledge_UUIE::PrintOn(ostream & strm) const
01191 {
01192   int indent = strm.precision() + 2;
01193   strm << "{\n";
01194   strm << setw(indent+21) << "protocolIdentifier = " << setprecision(indent) << m_protocolIdentifier << '\n';
01195   strm << setw(indent+17) << "callIdentifier = " << setprecision(indent) << m_callIdentifier << '\n';
01196   if (HasOptionalField(e_tokens))
01197     strm << setw(indent+9) << "tokens = " << setprecision(indent) << m_tokens << '\n';
01198   if (HasOptionalField(e_cryptoTokens))
01199     strm << setw(indent+15) << "cryptoTokens = " << setprecision(indent) << m_cryptoTokens << '\n';
01200   strm << setw(indent-1) << setprecision(indent-2) << "}";
01201 }
01202 #endif
01203 
01204 
01205 PObject::Comparison H225_SetupAcknowledge_UUIE::Compare(const PObject & obj) const
01206 {
01207 #ifndef PASN_LEANANDMEAN
01208   PAssert(PIsDescendant(&obj, H225_SetupAcknowledge_UUIE), PInvalidCast);
01209 #endif
01210   const H225_SetupAcknowledge_UUIE & other = (const H225_SetupAcknowledge_UUIE &)obj;
01211 
01212   Comparison result;
01213 
01214   if ((result = m_protocolIdentifier.Compare(other.m_protocolIdentifier)) != EqualTo)
01215     return result;
01216   if ((result = m_callIdentifier.Compare(other.m_callIdentifier)) != EqualTo)
01217     return result;
01218   if ((result = m_tokens.Compare(other.m_tokens)) != EqualTo)
01219     return result;
01220   if ((result = m_cryptoTokens.Compare(other.m_cryptoTokens)) != EqualTo)
01221     return result;
01222 
01223   return PASN_Sequence::Compare(other);
01224 }
01225 
01226 
01227 PINDEX H225_SetupAcknowledge_UUIE::GetDataLength() const
01228 {
01229   PINDEX length = 0;
01230   length += m_protocolIdentifier.GetObjectLength();
01231   length += m_callIdentifier.GetObjectLength();
01232   if (HasOptionalField(e_tokens))
01233     length += m_tokens.GetObjectLength();
01234   if (HasOptionalField(e_cryptoTokens))
01235     length += m_cryptoTokens.GetObjectLength();
01236   return length;
01237 }
01238 
01239 
01240 BOOL H225_SetupAcknowledge_UUIE::Decode(PASN_Stream & strm)
01241 {
01242   if (!PreambleDecode(strm))
01243     return FALSE;
01244 
01245   if (!m_protocolIdentifier.Decode(strm))
01246     return FALSE;
01247   if (!m_callIdentifier.Decode(strm))
01248     return FALSE;
01249   if (HasOptionalField(e_tokens) && !m_tokens.Decode(strm))
01250     return FALSE;
01251   if (HasOptionalField(e_cryptoTokens) && !m_cryptoTokens.Decode(strm))
01252     return FALSE;
01253 
01254   return UnknownExtensionsDecode(strm);
01255 }
01256 
01257 
01258 void H225_SetupAcknowledge_UUIE::Encode(PASN_Stream & strm) const
01259 {
01260   PreambleEncode(strm);
01261 
01262   m_protocolIdentifier.Encode(strm);
01263   m_callIdentifier.Encode(strm);
01264   if (HasOptionalField(e_tokens))
01265     m_tokens.Encode(strm);
01266   if (HasOptionalField(e_cryptoTokens))
01267     m_cryptoTokens.Encode(strm);
01268 
01269   UnknownExtensionsEncode(strm);
01270 }
01271 
01272 
01273 PObject * H225_SetupAcknowledge_UUIE::Clone() const
01274 {
01275 #ifndef PASN_LEANANDMEAN
01276   PAssert(IsClass(H225_SetupAcknowledge_UUIE::Class()), PInvalidCast);
01277 #endif
01278   return new H225_SetupAcknowledge_UUIE(*this);
01279 }
01280 
01281 
01282 //
01283 // Notify-UUIE
01284 //
01285 
01286 H225_Notify_UUIE::H225_Notify_UUIE(unsigned tag, PASN_Object::TagClass tagClass)
01287   : PASN_Sequence(tag, tagClass, 2, TRUE, 0)
01288 {
01289 }
01290 
01291 
01292 #ifndef PASN_NOPRINTON
01293 void H225_Notify_UUIE::PrintOn(ostream & strm) const
01294 {
01295   int indent = strm.precision() + 2;
01296   strm << "{\n";
01297   strm << setw(indent+21) << "protocolIdentifier = " << setprecision(indent) << m_protocolIdentifier << '\n';
01298   strm << setw(indent+17) << "callIdentifier = " << setprecision(indent) << m_callIdentifier << '\n';
01299   if (HasOptionalField(e_tokens))
01300     strm << setw(indent+9) << "tokens = " << setprecision(indent) << m_tokens << '\n';
01301   if (HasOptionalField(e_cryptoTokens))
01302     strm << setw(indent+15) << "cryptoTokens = " << setprecision(indent) << m_cryptoTokens << '\n';
01303   strm << setw(indent-1) << setprecision(indent-2) << "}";
01304 }
01305 #endif
01306 
01307 
01308 PObject::Comparison H225_Notify_UUIE::Compare(const PObject & obj) const
01309 {
01310 #ifndef PASN_LEANANDMEAN
01311   PAssert(PIsDescendant(&obj, H225_Notify_UUIE), PInvalidCast);
01312 #endif
01313   const H225_Notify_UUIE & other = (const H225_Notify_UUIE &)obj;
01314 
01315   Comparison result;
01316 
01317   if ((result = m_protocolIdentifier.Compare(other.m_protocolIdentifier)) != EqualTo)
01318     return result;
01319   if ((result = m_callIdentifier.Compare(other.m_callIdentifier)) != EqualTo)
01320     return result;
01321   if ((result = m_tokens.Compare(other.m_tokens)) != EqualTo)
01322     return result;
01323   if ((result = m_cryptoTokens.Compare(other.m_cryptoTokens)) != EqualTo)
01324     return result;
01325 
01326   return PASN_Sequence::Compare(other);
01327 }
01328 
01329 
01330 PINDEX H225_Notify_UUIE::GetDataLength() const
01331 {
01332   PINDEX length = 0;
01333   length += m_protocolIdentifier.GetObjectLength();
01334   length += m_callIdentifier.GetObjectLength();
01335   if (HasOptionalField(e_tokens))
01336     length += m_tokens.GetObjectLength();
01337   if (HasOptionalField(e_cryptoTokens))
01338     length += m_cryptoTokens.GetObjectLength();
01339   return length;
01340 }
01341 
01342 
01343 BOOL H225_Notify_UUIE::Decode(PASN_Stream & strm)
01344 {
01345   if (!PreambleDecode(strm))
01346     return FALSE;
01347 
01348   if (!m_protocolIdentifier.Decode(strm))
01349     return FALSE;
01350   if (!m_callIdentifier.Decode(strm))
01351     return FALSE;
01352   if (HasOptionalField(e_tokens) && !m_tokens.Decode(strm))
01353     return FALSE;
01354   if (HasOptionalField(e_cryptoTokens) && !m_cryptoTokens.Decode(strm))
01355     return FALSE;
01356 
01357   return UnknownExtensionsDecode(strm);
01358 }
01359 
01360 
01361 void H225_Notify_UUIE::Encode(PASN_Stream & strm) const
01362 {
01363   PreambleEncode(strm);
01364 
01365   m_protocolIdentifier.Encode(strm);
01366   m_callIdentifier.Encode(strm);
01367   if (HasOptionalField(e_tokens))
01368     m_tokens.Encode(strm);
01369   if (HasOptionalField(e_cryptoTokens))
01370     m_cryptoTokens.Encode(strm);
01371 
01372   UnknownExtensionsEncode(strm);
01373 }
01374 
01375 
01376 PObject * H225_Notify_UUIE::Clone() const
01377 {
01378 #ifndef PASN_LEANANDMEAN
01379   PAssert(IsClass(H225_Notify_UUIE::Class()), PInvalidCast);
01380 #endif
01381   return new H225_Notify_UUIE(*this);
01382 }
01383 
01384 
01385 //
01386 // VendorIdentifier
01387 //
01388 
01389 H225_VendorIdentifier::H225_VendorIdentifier(unsigned tag, PASN_Object::TagClass tagClass)
01390   : PASN_Sequence(tag, tagClass, 2, TRUE, 1)
01391 {
01392   m_productId.SetConstraints(PASN_Object::FixedConstraint, 1, 256);
01393   m_versionId.SetConstraints(PASN_Object::FixedConstraint, 1, 256);
01394 }
01395 
01396 
01397 #ifndef PASN_NOPRINTON
01398 void H225_VendorIdentifier::PrintOn(ostream & strm) const
01399 {
01400   int indent = strm.precision() + 2;
01401   strm << "{\n";
01402   strm << setw(indent+9) << "vendor = " << setprecision(indent) << m_vendor << '\n';
01403   if (HasOptionalField(e_productId))
01404     strm << setw(indent+12) << "productId = " << setprecision(indent) << m_productId << '\n';
01405   if (HasOptionalField(e_versionId))
01406     strm << setw(indent+12) << "versionId = " << setprecision(indent) << m_versionId << '\n';
01407   if (HasOptionalField(e_enterpriseNumber))
01408     strm << setw(indent+19) << "enterpriseNumber = " << setprecision(indent) << m_enterpriseNumber << '\n';
01409   strm << setw(indent-1) << setprecision(indent-2) << "}";
01410 }
01411 #endif
01412 
01413 
01414 PObject::Comparison H225_VendorIdentifier::Compare(const PObject & obj) const
01415 {
01416 #ifndef PASN_LEANANDMEAN
01417   PAssert(PIsDescendant(&obj, H225_VendorIdentifier), PInvalidCast);
01418 #endif
01419   const H225_VendorIdentifier & other = (const H225_VendorIdentifier &)obj;
01420 
01421   Comparison result;
01422 
01423   if ((result = m_vendor.Compare(other.m_vendor)) != EqualTo)
01424     return result;
01425   if ((result = m_productId.Compare(other.m_productId)) != EqualTo)
01426     return result;
01427   if ((result = m_versionId.Compare(other.m_versionId)) != EqualTo)
01428     return result;
01429 
01430   return PASN_Sequence::Compare(other);
01431 }
01432 
01433 
01434 PINDEX H225_VendorIdentifier::GetDataLength() const
01435 {
01436   PINDEX length = 0;
01437   length += m_vendor.GetObjectLength();
01438   if (HasOptionalField(e_productId))
01439     length += m_productId.GetObjectLength();
01440   if (HasOptionalField(e_versionId))
01441     length += m_versionId.GetObjectLength();
01442   return length;
01443 }
01444 
01445 
01446 BOOL H225_VendorIdentifier::Decode(PASN_Stream & strm)
01447 {
01448   if (!PreambleDecode(strm))
01449     return FALSE;
01450 
01451   if (!m_vendor.Decode(strm))
01452     return FALSE;
01453   if (HasOptionalField(e_productId) && !m_productId.Decode(strm))
01454     return FALSE;
01455   if (HasOptionalField(e_versionId) && !m_versionId.Decode(strm))
01456     return FALSE;
01457   if (!KnownExtensionDecode(strm, e_enterpriseNumber, m_enterpriseNumber))
01458     return FALSE;
01459 
01460   return UnknownExtensionsDecode(strm);
01461 }
01462 
01463 
01464 void H225_VendorIdentifier::Encode(PASN_Stream & strm) const
01465 {
01466   PreambleEncode(strm);
01467 
01468   m_vendor.Encode(strm);
01469   if (HasOptionalField(e_productId))
01470     m_productId.Encode(strm);
01471   if (HasOptionalField(e_versionId))
01472     m_versionId.Encode(strm);
01473   KnownExtensionEncode(strm, e_enterpriseNumber, m_enterpriseNumber);
01474 
01475   UnknownExtensionsEncode(strm);
01476 }
01477 
01478 
01479 PObject * H225_VendorIdentifier::Clone() const
01480 {
01481 #ifndef PASN_LEANANDMEAN
01482   PAssert(IsClass(H225_VendorIdentifier::Class()), PInvalidCast);
01483 #endif
01484   return new H225_VendorIdentifier(*this);
01485 }
01486 
01487 
01488 //
01489 // TunnelledProtocol
01490 //
01491 
01492 H225_TunnelledProtocol::H225_TunnelledProtocol(unsigned tag, PASN_Object::TagClass tagClass)
01493   : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
01494 {
01495   m_subIdentifier.SetConstraints(PASN_Object::FixedConstraint, 1, 64);
01496 }
01497 
01498 
01499 #ifndef PASN_NOPRINTON
01500 void H225_TunnelledProtocol::PrintOn(ostream & strm) const
01501 {
01502   int indent = strm.precision() + 2;
01503   strm << "{\n";
01504   strm << setw(indent+5) << "id = " << setprecision(indent) << m_id << '\n';
01505   if (HasOptionalField(e_subIdentifier))
01506     strm << setw(indent+16) << "subIdentifier = " << setprecision(indent) << m_subIdentifier << '\n';
01507   strm << setw(indent-1) << setprecision(indent-2) << "}";
01508 }
01509 #endif
01510 
01511 
01512 PObject::Comparison H225_TunnelledProtocol::Compare(const PObject & obj) const
01513 {
01514 #ifndef PASN_LEANANDMEAN
01515   PAssert(PIsDescendant(&obj, H225_TunnelledProtocol), PInvalidCast);
01516 #endif
01517   const H225_TunnelledProtocol & other = (const H225_TunnelledProtocol &)obj;
01518 
01519   Comparison result;
01520 
01521   if ((result = m_id.Compare(other.m_id)) != EqualTo)
01522     return result;
01523   if ((result = m_subIdentifier.Compare(other.m_subIdentifier)) != EqualTo)
01524     return result;
01525 
01526   return PASN_Sequence::Compare(other);
01527 }
01528 
01529 
01530 PINDEX H225_TunnelledProtocol::GetDataLength() const
01531 {
01532   PINDEX length = 0;
01533   length += m_id.GetObjectLength();
01534   if (HasOptionalField(e_subIdentifier))
01535     length += m_subIdentifier.GetObjectLength();
01536   return length;
01537 }
01538 
01539 
01540 BOOL H225_TunnelledProtocol::Decode(PASN_Stream & strm)
01541 {
01542   if (!PreambleDecode(strm))
01543     return FALSE;
01544 
01545   if (!m_id.Decode(strm))
01546     return FALSE;
01547   if (HasOptionalField(e_subIdentifier) && !m_subIdentifier.Decode(strm))
01548     return FALSE;
01549 
01550   return UnknownExtensionsDecode(strm);
01551 }
01552 
01553 
01554 void H225_TunnelledProtocol::Encode(PASN_Stream & strm) const
01555 {
01556   PreambleEncode(strm);
01557 
01558   m_id.Encode(strm);
01559   if (HasOptionalField(e_subIdentifier))
01560     m_subIdentifier.Encode(strm);
01561 
01562   UnknownExtensionsEncode(strm);
01563 }
01564 
01565 
01566 PObject * H225_TunnelledProtocol::Clone() const
01567 {
01568 #ifndef PASN_LEANANDMEAN
01569   PAssert(IsClass(H225_TunnelledProtocol::Class()), PInvalidCast);
01570 #endif
01571   return new H225_TunnelledProtocol(*this);
01572 }
01573 
01574 
01575 //
01576 // NonStandardParameter
01577 //
01578 
01579 H225_NonStandardParameter::H225_NonStandardParameter(unsigned tag, PASN_Object::TagClass tagClass)
01580   : PASN_Sequence(tag, tagClass, 0, FALSE, 0)
01581 {
01582 }
01583 
01584 
01585 #ifndef PASN_NOPRINTON
01586 void H225_NonStandardParameter::PrintOn(ostream & strm) const
01587 {
01588   int indent = strm.precision() + 2;
01589   strm << "{\n";
01590   strm << setw(indent+24) << "nonStandardIdentifier = " << setprecision(indent) << m_nonStandardIdentifier << '\n';
01591   strm << setw(indent+7) << "data = " << setprecision(indent) << m_data << '\n';
01592   strm << setw(indent-1) << setprecision(indent-2) << "}";
01593 }
01594 #endif
01595 
01596 
01597 PObject::Comparison H225_NonStandardParameter::Compare(const PObject & obj) const
01598 {
01599 #ifndef PASN_LEANANDMEAN
01600   PAssert(PIsDescendant(&obj, H225_NonStandardParameter), PInvalidCast);
01601 #endif
01602   const H225_NonStandardParameter & other = (const H225_NonStandardParameter &)obj;
01603 
01604   Comparison result;
01605 
01606   if ((result = m_nonStandardIdentifier.Compare(other.m_nonStandardIdentifier)) != EqualTo)
01607     return result;
01608   if ((result = m_data.Compare(other.m_data)) != EqualTo)
01609     return result;
01610 
01611   return PASN_Sequence::Compare(other);
01612 }
01613 
01614 
01615 PINDEX H225_NonStandardParameter::GetDataLength() const
01616 {
01617   PINDEX length = 0;
01618   length += m_nonStandardIdentifier.GetObjectLength();
01619   length += m_data.GetObjectLength();
01620   return length;
01621 }
01622 
01623 
01624 BOOL H225_NonStandardParameter::Decode(PASN_Stream & strm)
01625 {
01626   if (!PreambleDecode(strm))
01627     return FALSE;
01628 
01629   if (!m_nonStandardIdentifier.Decode(strm))
01630     return FALSE;
01631   if (!m_data.Decode(strm))
01632     return FALSE;
01633 
01634   return UnknownExtensionsDecode(strm);
01635 }
01636 
01637 
01638 void H225_NonStandardParameter::Encode(PASN_Stream & strm) const
01639 {
01640   PreambleEncode(strm);
01641 
01642   m_nonStandardIdentifier.Encode(strm);
01643   m_data.Encode(strm);
01644 
01645   UnknownExtensionsEncode(strm);
01646 }
01647 
01648 
01649 PObject * H225_NonStandardParameter::Clone() const
01650 {
01651 #ifndef PASN_LEANANDMEAN
01652   PAssert(IsClass(H225_NonStandardParameter::Class()), PInvalidCast);
01653 #endif
01654   return new H225_NonStandardParameter(*this);
01655 }
01656 
01657 
01658 //
01659 // PublicPartyNumber
01660 //
01661 
01662 H225_PublicPartyNumber::H225_PublicPartyNumber(unsigned tag, PASN_Object::TagClass tagClass)
01663   : PASN_Sequence(tag, tagClass, 0, FALSE, 0)
01664 {
01665 }
01666 
01667 
01668 #ifndef PASN_NOPRINTON
01669 void H225_PublicPartyNumber::PrintOn(ostream & strm) const
01670 {
01671   int indent = strm.precision() + 2;
01672   strm << "{\n";
01673   strm << setw(indent+21) << "publicTypeOfNumber = " << setprecision(indent) << m_publicTypeOfNumber << '\n';
01674   strm << setw(indent+21) << "publicNumberDigits = " << setprecision(indent) << m_publicNumberDigits << '\n';
01675   strm << setw(indent-1) << setprecision(indent-2) << "}";
01676 }
01677 #endif
01678 
01679 
01680 PObject::Comparison H225_PublicPartyNumber::Compare(const PObject & obj) const
01681 {
01682 #ifndef PASN_LEANANDMEAN
01683   PAssert(PIsDescendant(&obj, H225_PublicPartyNumber), PInvalidCast);
01684 #endif
01685   const H225_PublicPartyNumber & other = (const H225_PublicPartyNumber &)obj;
01686 
01687   Comparison result;
01688 
01689   if ((result = m_publicTypeOfNumber.Compare(other.m_publicTypeOfNumber)) != EqualTo)
01690     return result;
01691   if ((result = m_publicNumberDigits.Compare(other.m_publicNumberDigits)) != EqualTo)
01692     return result;
01693 
01694   return PASN_Sequence::Compare(other);
01695 }
01696 
01697 
01698 PINDEX H225_PublicPartyNumber::GetDataLength() const
01699 {
01700   PINDEX length = 0;
01701   length += m_publicTypeOfNumber.GetObjectLength();
01702   length += m_publicNumberDigits.GetObjectLength();
01703   return length;
01704 }
01705 
01706 
01707 BOOL H225_PublicPartyNumber::Decode(PASN_Stream & strm)
01708 {
01709   if (!PreambleDecode(strm))
01710     return FALSE;
01711 
01712   if (!m_publicTypeOfNumber.Decode(strm))
01713     return FALSE;
01714   if (!m_publicNumberDigits.Decode(strm))
01715     return FALSE;
01716 
01717   return UnknownExtensionsDecode(strm);
01718 }
01719 
01720 
01721 void H225_PublicPartyNumber::Encode(PASN_Stream & strm) const
01722 {
01723   PreambleEncode(strm);
01724 
01725   m_publicTypeOfNumber.Encode(strm);
01726   m_publicNumberDigits.Encode(strm);
01727 
01728   UnknownExtensionsEncode(strm);
01729 }
01730 
01731 
01732 PObject * H225_PublicPartyNumber::Clone() const
01733 {
01734 #ifndef PASN_LEANANDMEAN
01735   PAssert(IsClass(H225_PublicPartyNumber::Class()), PInvalidCast);
01736 #endif
01737   return new H225_PublicPartyNumber(*this);
01738 }
01739 
01740 
01741 //
01742 // PrivatePartyNumber
01743 //
01744 
01745 H225_PrivatePartyNumber::H225_PrivatePartyNumber(unsigned tag, PASN_Object::TagClass tagClass)
01746   : PASN_Sequence(tag, tagClass, 0, FALSE, 0)
01747 {
01748 }
01749 
01750 
01751 #ifndef PASN_NOPRINTON
01752 void H225_PrivatePartyNumber::PrintOn(ostream & strm) const
01753 {
01754   int indent = strm.precision() + 2;
01755   strm << "{\n";
01756   strm << setw(indent+22) << "privateTypeOfNumber = " << setprecision(indent) << m_privateTypeOfNumber << '\n';
01757   strm << setw(indent+22) << "privateNumberDigits = " << setprecision(indent) << m_privateNumberDigits << '\n';
01758   strm << setw(indent-1) << setprecision(indent-2) << "}";
01759 }
01760 #endif
01761 
01762 
01763 PObject::Comparison H225_PrivatePartyNumber::Compare(const PObject & obj) const
01764 {
01765 #ifndef PASN_LEANANDMEAN
01766   PAssert(PIsDescendant(&obj, H225_PrivatePartyNumber), PInvalidCast);
01767 #endif
01768   const H225_PrivatePartyNumber & other = (const H225_PrivatePartyNumber &)obj;
01769 
01770   Comparison result;
01771 
01772   if ((result = m_privateTypeOfNumber.Compare(other.m_privateTypeOfNumber)) != EqualTo)
01773     return result;
01774   if ((result = m_privateNumberDigits.Compare(other.m_privateNumberDigits)) != EqualTo)
01775     return result;
01776 
01777   return PASN_Sequence::Compare(other);
01778 }
01779 
01780 
01781 PINDEX H225_PrivatePartyNumber::GetDataLength() const
01782 {
01783   PINDEX length = 0;
01784   length += m_privateTypeOfNumber.GetObjectLength();
01785   length += m_privateNumberDigits.GetObjectLength();
01786   return length;
01787 }
01788 
01789 
01790 BOOL H225_PrivatePartyNumber::Decode(PASN_Stream & strm)
01791 {
01792   if (!PreambleDecode(strm))
01793     return FALSE;
01794 
01795   if (!m_privateTypeOfNumber.Decode(strm))
01796     return FALSE;
01797   if (!m_privateNumberDigits.Decode(strm))
01798     return FALSE;
01799 
01800   return UnknownExtensionsDecode(strm);
01801 }
01802 
01803 
01804 void H225_PrivatePartyNumber::Encode(PASN_Stream & strm) const
01805 {
01806   PreambleEncode(strm);
01807 
01808   m_privateTypeOfNumber.Encode(strm);
01809   m_privateNumberDigits.Encode(strm);
01810 
01811   UnknownExtensionsEncode(strm);
01812 }
01813 
01814 
01815 PObject * H225_PrivatePartyNumber::Clone() const
01816 {
01817 #ifndef PASN_LEANANDMEAN
01818   PAssert(IsClass(H225_PrivatePartyNumber::Class()), PInvalidCast);
01819 #endif
01820   return new H225_PrivatePartyNumber(*this);
01821 }
01822 
01823 
01824 //
01825 // ANSI-41-UIM
01826 //
01827 
01828 H225_ANSI_41_UIM::H225_ANSI_41_UIM(unsigned tag, PASN_Object::TagClass tagClass)
01829   : PASN_Sequence(tag, tagClass, 11, TRUE, 0)
01830 {
01831   m_imsi.SetConstraints(PASN_Object::FixedConstraint, 3, 16);
01832   m_min.SetConstraints(PASN_Object::FixedConstraint, 3, 16);
01833   m_mdn.SetConstraints(PASN_Object::FixedConstraint, 3, 16);
01834   m_msisdn.SetConstraints(PASN_Object::FixedConstraint, 3, 16);
01835   m_esn.SetConstraints(PASN_Object::FixedConstraint, 16);
01836   m_mscid.SetConstraints(PASN_Object::FixedConstraint, 3, 16);
01837   m_systemMyTypeCode.SetConstraints(PASN_Object::FixedConstraint, 1);
01838   m_systemAccessType.SetConstraints(PASN_Object::FixedConstraint, 1);
01839   m_qualificationInformationCode.SetConstraints(PASN_Object::FixedConstraint, 1);
01840   m_sesn.SetConstraints(PASN_Object::FixedConstraint, 16);
01841   m_soc.SetConstraints(PASN_Object::FixedConstraint, 3, 16);
01842 }
01843 
01844 
01845 #ifndef PASN_NOPRINTON
01846 void H225_ANSI_41_UIM::PrintOn(ostream & strm) const
01847 {
01848   int indent = strm.precision() + 2;
01849   strm << "{\n";
01850   if (HasOptionalField(e_imsi))
01851     strm << setw(indent+7) << "imsi = " << setprecision(indent) << m_imsi << '\n';
01852   if (HasOptionalField(e_min))
01853     strm << setw(indent+6) << "min = " << setprecision(indent) << m_min << '\n';
01854   if (HasOptionalField(e_mdn))
01855     strm << setw(indent+6) << "mdn = " << setprecision(indent) << m_mdn << '\n';
01856   if (HasOptionalField(e_msisdn))
01857     strm << setw(indent+9) << "msisdn = " << setprecision(indent) << m_msisdn << '\n';
01858   if (HasOptionalField(e_esn))
01859     strm << setw(indent+6) << "esn = " << setprecision(indent) << m_esn << '\n';
01860   if (HasOptionalField(e_mscid))
01861     strm << setw(indent+8) << "mscid = " << setprecision(indent) << m_mscid << '\n';
01862   strm << setw(indent+12) << "system_id = " << setprecision(indent) << m_system_id << '\n';
01863   if (HasOptionalField(e_systemMyTypeCode))
01864     strm << setw(indent+19) << "systemMyTypeCode = " << setprecision(indent) << m_systemMyTypeCode << '\n';
01865   if (HasOptionalField(e_systemAccessType))
01866     strm << setw(indent+19) << "systemAccessType = " << setprecision(indent) << m_systemAccessType << '\n';
01867   if (HasOptionalField(e_qualificationInformationCode))
01868     strm << setw(indent+31) << "qualificationInformationCode = " << setprecision(indent) << m_qualificationInformationCode << '\n';
01869   if (HasOptionalField(e_sesn))
01870     strm << setw(indent+7) << "sesn = " << setprecision(indent) << m_sesn << '\n';
01871   if (HasOptionalField(e_soc))
01872     strm << setw(indent+6) << "soc = " << setprecision(indent) << m_soc << '\n';
01873   strm << setw(indent-1) << setprecision(indent-2) << "}";
01874 }
01875 #endif
01876 
01877 
01878 PObject::Comparison H225_ANSI_41_UIM::Compare(const PObject & obj) const
01879 {
01880 #ifndef PASN_LEANANDMEAN
01881   PAssert(PIsDescendant(&obj, H225_ANSI_41_UIM), PInvalidCast);
01882 #endif
01883   const H225_ANSI_41_UIM & other = (const H225_ANSI_41_UIM &)obj;
01884 
01885   Comparison result;
01886 
01887   if ((result = m_imsi.Compare(other.m_imsi)) != EqualTo)
01888     return result;
01889   if ((result = m_min.Compare(other.m_min)) != EqualTo)
01890     return result;
01891   if ((result = m_mdn.Compare(other.m_mdn)) != EqualTo)
01892     return result;
01893   if ((result = m_msisdn.Compare(other.m_msisdn)) != EqualTo)
01894     return result;
01895   if ((result = m_esn.Compare(other.m_esn)) != EqualTo)
01896     return result;
01897   if ((result = m_mscid.Compare(other.m_mscid)) != EqualTo)
01898     return result;
01899   if ((result = m_system_id.Compare(other.m_system_id)) != EqualTo)
01900     return result;
01901   if ((result = m_systemMyTypeCode.Compare(other.m_systemMyTypeCode)) != EqualTo)
01902     return result;
01903   if ((result = m_systemAccessType.Compare(other.m_systemAccessType)) != EqualTo)
01904     return result;
01905   if ((result = m_qualificationInformationCode.Compare(other.m_qualificationInformationCode)) != EqualTo)
01906     return result;
01907   if ((result = m_sesn.Compare(other.m_sesn)) != EqualTo)
01908     return result;
01909   if ((result = m_soc.Compare(other.m_soc)) != EqualTo)
01910     return result;
01911 
01912   return PASN_Sequence::Compare(other);
01913 }
01914 
01915 
01916 PINDEX H225_ANSI_41_UIM::GetDataLength() const
01917 {
01918   PINDEX length = 0;
01919   if (HasOptionalField(e_imsi))
01920     length += m_imsi.GetObjectLength();
01921   if (HasOptionalField(e_min))
01922     length += m_min.GetObjectLength();
01923   if (HasOptionalField(e_mdn))
01924     length += m_mdn.GetObjectLength();
01925   if (HasOptionalField(e_msisdn))
01926     length += m_msisdn.GetObjectLength();
01927   if (HasOptionalField(e_esn))
01928     length += m_esn.GetObjectLength();
01929   if (HasOptionalField(e_mscid))
01930     length += m_mscid.GetObjectLength();
01931   length += m_system_id.GetObjectLength();
01932   if (HasOptionalField(e_systemMyTypeCode))
01933     length += m_systemMyTypeCode.GetObjectLength();
01934   if (HasOptionalField(e_systemAccessType))
01935     length += m_systemAccessType.GetObjectLength();
01936   if (HasOptionalField(e_qualificationInformationCode))
01937     length += m_qualificationInformationCode.GetObjectLength();
01938   if (HasOptionalField(e_sesn))
01939     length += m_sesn.GetObjectLength();
01940   if (HasOptionalField(e_soc))
01941     length += m_soc.GetObjectLength();
01942   return length;
01943 }
01944 
01945 
01946 BOOL H225_ANSI_41_UIM::Decode(PASN_Stream & strm)
01947 {
01948   if (!PreambleDecode(strm))
01949     return FALSE;
01950 
01951   if (HasOptionalField(e_imsi) && !m_imsi.Decode(strm))
01952     return FALSE;
01953   if (HasOptionalField(e_min) && !m_min.Decode(strm))
01954     return FALSE;
01955   if (HasOptionalField(e_mdn) && !m_mdn.Decode(strm))
01956     return FALSE;
01957   if (HasOptionalField(e_msisdn) && !m_msisdn.Decode(strm))
01958     return FALSE;
01959   if (HasOptionalField(e_esn) && !m_esn.Decode(strm))
01960     return FALSE;
01961   if (HasOptionalField(e_mscid) && !m_mscid.Decode(strm))
01962     return FALSE;
01963   if (!m_system_id.Decode(strm))
01964     return FALSE;
01965   if (HasOptionalField(e_systemMyTypeCode) && !m_systemMyTypeCode.Decode(strm))
01966     return FALSE;
01967   if (HasOptionalField(e_systemAccessType) && !m_systemAccessType.Decode(strm))
01968     return FALSE;
01969   if (HasOptionalField(e_qualificationInformationCode) && !m_qualificationInformationCode.Decode(strm))
01970     return FALSE;
01971   if (HasOptionalField(e_sesn) && !m_sesn.Decode(strm))
01972     return FALSE;
01973   if (HasOptionalField(e_soc) && !m_soc.Decode(strm))
01974     return FALSE;
01975 
01976   return UnknownExtensionsDecode(strm);
01977 }
01978 
01979 
01980 void H225_ANSI_41_UIM::Encode(PASN_Stream & strm) const
01981 {
01982   PreambleEncode(strm);
01983 
01984   if (HasOptionalField(e_imsi))
01985     m_imsi.Encode(strm);
01986   if (HasOptionalField(e_min))
01987     m_min.Encode(strm);
01988   if (HasOptionalField(e_mdn))
01989     m_mdn.Encode(strm);
01990   if (HasOptionalField(e_msisdn))
01991     m_msisdn.Encode(strm);
01992   if (HasOptionalField(e_esn))
01993     m_esn.Encode(strm);
01994   if (HasOptionalField(e_mscid))
01995     m_mscid.Encode(strm);
01996   m_system_id.Encode(strm);
01997   if (HasOptionalField(e_systemMyTypeCode))
01998     m_systemMyTypeCode.Encode(strm);
01999   if (HasOptionalField(e_systemAccessType))
02000     m_systemAccessType.Encode(strm);
02001   if (HasOptionalField(e_qualificationInformationCode))
02002     m_qualificationInformationCode.Encode(strm);
02003   if (HasOptionalField(e_sesn))
02004     m_sesn.Encode(strm);
02005   if (HasOptionalField(e_soc))
02006     m_soc.Encode(strm);
02007 
02008   UnknownExtensionsEncode(strm);
02009 }
02010 
02011 
02012 PObject * H225_ANSI_41_UIM::Clone() const
02013 {
02014 #ifndef PASN_LEANANDMEAN
02015   PAssert(IsClass(H225_ANSI_41_UIM::Class()), PInvalidCast);
02016 #endif
02017   return new H225_ANSI_41_UIM(*this);
02018 }
02019 
02020 
02021 //
02022 // IsupPublicPartyNumber
02023 //
02024 
02025 H225_IsupPublicPartyNumber::H225_IsupPublicPartyNumber(unsigned tag, PASN_Object::TagClass tagClass)
02026   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
02027 {
02028 }
02029 
02030 
02031 #ifndef PASN_NOPRINTON
02032 void H225_IsupPublicPartyNumber::PrintOn(ostream & strm) const
02033 {
02034   int indent = strm.precision() + 2;
02035   strm << "{\n";
02036   strm << setw(indent+18) << "natureOfAddress = " << setprecision(indent) << m_natureOfAddress << '\n';
02037   strm << setw(indent+10) << "address = " << setprecision(indent) << m_address << '\n';
02038   strm << setw(indent-1) << setprecision(indent-2) << "}";
02039 }
02040 #endif
02041 
02042 
02043 PObject::Comparison H225_IsupPublicPartyNumber::Compare(const PObject & obj) const
02044 {
02045 #ifndef PASN_LEANANDMEAN
02046   PAssert(PIsDescendant(&obj, H225_IsupPublicPartyNumber), PInvalidCast);
02047 #endif
02048   const H225_IsupPublicPartyNumber & other = (const H225_IsupPublicPartyNumber &)obj;
02049 
02050   Comparison result;
02051 
02052   if ((result = m_natureOfAddress.Compare(other.m_natureOfAddress)) != EqualTo)
02053     return result;
02054   if ((result = m_address.Compare(other.m_address)) != EqualTo)
02055     return result;
02056 
02057   return PASN_Sequence::Compare(other);
02058 }
02059 
02060 
02061 PINDEX H225_IsupPublicPartyNumber::GetDataLength() const
02062 {
02063   PINDEX length = 0;
02064   length += m_natureOfAddress.GetObjectLength();
02065   length += m_address.GetObjectLength();
02066   return length;
02067 }
02068 
02069 
02070 BOOL H225_IsupPublicPartyNumber::Decode(PASN_Stream & strm)
02071 {
02072   if (!PreambleDecode(strm))
02073     return FALSE;
02074 
02075   if (!m_natureOfAddress.Decode(strm))
02076     return FALSE;
02077   if (!m_address.Decode(strm))
02078     return FALSE;
02079 
02080   return UnknownExtensionsDecode(strm);
02081 }
02082 
02083 
02084 void H225_IsupPublicPartyNumber::Encode(PASN_Stream & strm) const
02085 {
02086   PreambleEncode(strm);
02087 
02088   m_natureOfAddress.Encode(strm);
02089   m_address.Encode(strm);
02090 
02091   UnknownExtensionsEncode(strm);
02092 }
02093 
02094 
02095 PObject * H225_IsupPublicPartyNumber::Clone() const
02096 {
02097 #ifndef PASN_LEANANDMEAN
02098   PAssert(IsClass(H225_IsupPublicPartyNumber::Class()), PInvalidCast);
02099 #endif
02100   return new H225_IsupPublicPartyNumber(*this);
02101 }
02102 
02103 
02104 //
02105 // IsupPrivatePartyNumber
02106 //
02107 
02108 H225_IsupPrivatePartyNumber::H225_IsupPrivatePartyNumber(unsigned tag, PASN_Object::TagClass tagClass)
02109   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
02110 {
02111 }
02112 
02113 
02114 #ifndef PASN_NOPRINTON
02115 void H225_IsupPrivatePartyNumber::PrintOn(ostream & strm) const
02116 {
02117   int indent = strm.precision() + 2;
02118   strm << "{\n";
02119   strm << setw(indent+22) << "privateTypeOfNumber = " << setprecision(indent) << m_privateTypeOfNumber << '\n';
02120   strm << setw(indent+10) << "address = " << setprecision(indent) << m_address << '\n';
02121   strm << setw(indent-1) << setprecision(indent-2) << "}";
02122 }
02123 #endif
02124 
02125 
02126 PObject::Comparison H225_IsupPrivatePartyNumber::Compare(const PObject & obj) const
02127 {
02128 #ifndef PASN_LEANANDMEAN
02129   PAssert(PIsDescendant(&obj, H225_IsupPrivatePartyNumber), PInvalidCast);
02130 #endif
02131   const H225_IsupPrivatePartyNumber & other = (const H225_IsupPrivatePartyNumber &)obj;
02132 
02133   Comparison result;
02134 
02135   if ((result = m_privateTypeOfNumber.Compare(other.m_privateTypeOfNumber)) != EqualTo)
02136     return result;
02137   if ((result = m_address.Compare(other.m_address)) != EqualTo)
02138     return result;
02139 
02140   return PASN_Sequence::Compare(other);
02141 }
02142 
02143 
02144 PINDEX H225_IsupPrivatePartyNumber::GetDataLength() const
02145 {
02146   PINDEX length = 0;
02147   length += m_privateTypeOfNumber.GetObjectLength();
02148   length += m_address.GetObjectLength();
02149   return length;
02150 }
02151 
02152 
02153 BOOL H225_IsupPrivatePartyNumber::Decode(PASN_Stream & strm)
02154 {
02155   if (!PreambleDecode(strm))
02156     return FALSE;
02157 
02158   if (!m_privateTypeOfNumber.Decode(strm))
02159     return FALSE;
02160   if (!m_address.Decode(strm))
02161     return FALSE;
02162 
02163   return UnknownExtensionsDecode(strm);
02164 }
02165 
02166 
02167 void H225_IsupPrivatePartyNumber::Encode(PASN_Stream & strm) const
02168 {
02169   PreambleEncode(strm);
02170 
02171   m_privateTypeOfNumber.Encode(strm);
02172   m_address.Encode(strm);
02173 
02174   UnknownExtensionsEncode(strm);
02175 }
02176 
02177 
02178 PObject * H225_IsupPrivatePartyNumber::Clone() const
02179 {
02180 #ifndef PASN_LEANANDMEAN
02181   PAssert(IsClass(H225_IsupPrivatePartyNumber::Class()), PInvalidCast);
02182 #endif
02183   return new H225_IsupPrivatePartyNumber(*this);
02184 }
02185 
02186 
02187 //
02188 // AlternateTransportAddresses
02189 //
02190 
02191 H225_AlternateTransportAddresses::H225_AlternateTransportAddresses(unsigned tag, PASN_Object::TagClass tagClass)
02192   : PASN_Sequence(tag, tagClass, 1, TRUE, 1)
02193 {
02194 }
02195 
02196 
02197 #ifndef PASN_NOPRINTON
02198 void H225_AlternateTransportAddresses::PrintOn(ostream & strm) const
02199 {
02200   int indent = strm.precision() + 2;
02201   strm << "{\n";
02202   if (HasOptionalField(e_annexE))
02203     strm << setw(indent+9) << "annexE = " << setprecision(indent) << m_annexE << '\n';
02204   if (HasOptionalField(e_sctp))
02205     strm << setw(indent+7) << "sctp = " << setprecision(indent) << m_sctp << '\n';
02206   strm << setw(indent-1) << setprecision(indent-2) << "}";
02207 }
02208 #endif
02209 
02210 
02211 PObject::Comparison H225_AlternateTransportAddresses::Compare(const PObject & obj) const
02212 {
02213 #ifndef PASN_LEANANDMEAN
02214   PAssert(PIsDescendant(&obj, H225_AlternateTransportAddresses), PInvalidCast);
02215 #endif
02216   const H225_AlternateTransportAddresses & other = (const H225_AlternateTransportAddresses &)obj;
02217 
02218   Comparison result;
02219 
02220   if ((result = m_annexE.Compare(other.m_annexE)) != EqualTo)
02221     return result;
02222 
02223   return PASN_Sequence::Compare(other);
02224 }
02225 
02226 
02227 PINDEX H225_AlternateTransportAddresses::GetDataLength() const
02228 {
02229   PINDEX length = 0;
02230   if (HasOptionalField(e_annexE))
02231     length += m_annexE.GetObjectLength();
02232   return length;
02233 }
02234 
02235 
02236 BOOL H225_AlternateTransportAddresses::Decode(PASN_Stream & strm)
02237 {
02238   if (!PreambleDecode(strm))
02239     return FALSE;
02240 
02241   if (HasOptionalField(e_annexE) && !m_annexE.Decode(strm))
02242     return FALSE;
02243   if (!KnownExtensionDecode(strm, e_sctp, m_sctp))
02244     return FALSE;
02245 
02246   return UnknownExtensionsDecode(strm);
02247 }
02248 
02249 
02250 void H225_AlternateTransportAddresses::Encode(PASN_Stream & strm) const
02251 {
02252   PreambleEncode(strm);
02253 
02254   if (HasOptionalField(e_annexE))
02255     m_annexE.Encode(strm);
02256   KnownExtensionEncode(strm, e_sctp, m_sctp);
02257 
02258   UnknownExtensionsEncode(strm);
02259 }
02260 
02261 
02262 PObject * H225_AlternateTransportAddresses::Clone() const
02263 {
02264 #ifndef PASN_LEANANDMEAN
02265   PAssert(IsClass(H225_AlternateTransportAddresses::Class()), PInvalidCast);
02266 #endif
02267   return new H225_AlternateTransportAddresses(*this);
02268 }
02269 
02270 
02271 //
02272 // AlternateGK
02273 //
02274 
02275 H225_AlternateGK::H225_AlternateGK(unsigned tag, PASN_Object::TagClass tagClass)
02276   : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
02277 {
02278   m_priority.SetConstraints(PASN_Object::FixedConstraint, 0, 127);
02279 }
02280 
02281 
02282 #ifndef PASN_NOPRINTON
02283 void H225_AlternateGK::PrintOn(ostream & strm) const
02284 {
02285   int indent = strm.precision() + 2;
02286   strm << "{\n";
02287   strm << setw(indent+13) << "rasAddress = " << setprecision(indent) << m_rasAddress << '\n';
02288   if (HasOptionalField(e_gatekeeperIdentifier))
02289     strm << setw(indent+23) << "gatekeeperIdentifier = " << setprecision(indent) << m_gatekeeperIdentifier << '\n';
02290   strm << setw(indent+17) << "needToRegister = " << setprecision(indent) << m_needToRegister << '\n';
02291   strm << setw(indent+11) << "priority = " << setprecision(indent) << m_priority << '\n';
02292   strm << setw(indent-1) << setprecision(indent-2) << "}";
02293 }
02294 #endif
02295 
02296 
02297 PObject::Comparison H225_AlternateGK::Compare(const PObject & obj) const
02298 {
02299 #ifndef PASN_LEANANDMEAN
02300   PAssert(PIsDescendant(&obj, H225_AlternateGK), PInvalidCast);
02301 #endif
02302   const H225_AlternateGK & other = (const H225_AlternateGK &)obj;
02303 
02304   Comparison result;
02305 
02306   if ((result = m_rasAddress.Compare(other.m_rasAddress)) != EqualTo)
02307     return result;
02308   if ((result = m_gatekeeperIdentifier.Compare(other.m_gatekeeperIdentifier)) != EqualTo)
02309     return result;
02310   if ((result = m_needToRegister.Compare(other.m_needToRegister)) != EqualTo)
02311     return result;
02312   if ((result = m_priority.Compare(other.m_priority)) != EqualTo)
02313     return result;
02314 
02315   return PASN_Sequence::Compare(other);
02316 }
02317 
02318 
02319 PINDEX H225_AlternateGK::GetDataLength() const
02320 {
02321   PINDEX length = 0;
02322   length += m_rasAddress.GetObjectLength();
02323   if (HasOptionalField(e_gatekeeperIdentifier))
02324     length += m_gatekeeperIdentifier.GetObjectLength();
02325   length += m_needToRegister.GetObjectLength();
02326   length += m_priority.GetObjectLength();
02327   return length;
02328 }
02329 
02330 
02331 BOOL H225_AlternateGK::Decode(PASN_Stream & strm)
02332 {
02333   if (!PreambleDecode(strm))
02334     return FALSE;
02335 
02336   if (!m_rasAddress.Decode(strm))
02337     return FALSE;
02338   if (HasOptionalField(e_gatekeeperIdentifier) && !m_gatekeeperIdentifier.Decode(strm))
02339     return FALSE;
02340   if (!m_needToRegister.Decode(strm))
02341     return FALSE;
02342   if (!m_priority.Decode(strm))
02343     return FALSE;
02344 
02345   return UnknownExtensionsDecode(strm);
02346 }
02347 
02348 
02349 void H225_AlternateGK::Encode(PASN_Stream & strm) const
02350 {
02351   PreambleEncode(strm);
02352 
02353   m_rasAddress.Encode(strm);
02354   if (HasOptionalField(e_gatekeeperIdentifier))
02355     m_gatekeeperIdentifier.Encode(strm);
02356   m_needToRegister.Encode(strm);
02357   m_priority.Encode(strm);
02358 
02359   UnknownExtensionsEncode(strm);
02360 }
02361 
02362 
02363 PObject * H225_AlternateGK::Clone() const
02364 {
02365 #ifndef PASN_LEANANDMEAN
02366   PAssert(IsClass(H225_AlternateGK::Class()), PInvalidCast);
02367 #endif
02368   return new H225_AlternateGK(*this);
02369 }
02370 
02371 
02372 //
02373 // AltGKInfo
02374 //
02375 
02376 H225_AltGKInfo::H225_AltGKInfo(unsigned tag, PASN_Object::TagClass tagClass)
02377   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
02378 {
02379 }
02380 
02381 
02382 #ifndef PASN_NOPRINTON
02383 void H225_AltGKInfo::PrintOn(ostream & strm) const
02384 {
02385   int indent = strm.precision() + 2;
02386   strm << "{\n";
02387   strm << setw(indent+22) << "alternateGatekeeper = " << setprecision(indent) << m_alternateGatekeeper << '\n';
02388   strm << setw(indent+19) << "altGKisPermanent = " << setprecision(indent) << m_altGKisPermanent << '\n';
02389   strm << setw(indent-1) << setprecision(indent-2) << "}";
02390 }
02391 #endif
02392 
02393 
02394 PObject::Comparison H225_AltGKInfo::Compare(const PObject & obj) const
02395 {
02396 #ifndef PASN_LEANANDMEAN
02397   PAssert(PIsDescendant(&obj, H225_AltGKInfo), PInvalidCast);
02398 #endif
02399   const H225_AltGKInfo & other = (const H225_AltGKInfo &)obj;
02400 
02401   Comparison result;
02402 
02403   if ((result = m_alternateGatekeeper.Compare(other.m_alternateGatekeeper)) != EqualTo)
02404     return result;
02405   if ((result = m_altGKisPermanent.Compare(other.m_altGKisPermanent)) != EqualTo)
02406     return result;
02407 
02408   return PASN_Sequence::Compare(other);
02409 }
02410 
02411 
02412 PINDEX H225_AltGKInfo::GetDataLength() const
02413 {
02414   PINDEX length = 0;
02415   length += m_alternateGatekeeper.GetObjectLength();
02416   length += m_altGKisPermanent.GetObjectLength();
02417   return length;
02418 }
02419 
02420 
02421 BOOL H225_AltGKInfo::Decode(PASN_Stream & strm)
02422 {
02423   if (!PreambleDecode(strm))
02424     return FALSE;
02425 
02426   if (!m_alternateGatekeeper.Decode(strm))
02427     return FALSE;
02428   if (!m_altGKisPermanent.Decode(strm))
02429     return FALSE;
02430 
02431   return UnknownExtensionsDecode(strm);
02432 }
02433 
02434 
02435 void H225_AltGKInfo::Encode(PASN_Stream & strm) const
02436 {
02437   PreambleEncode(strm);
02438 
02439   m_alternateGatekeeper.Encode(strm);
02440   m_altGKisPermanent.Encode(strm);
02441 
02442   UnknownExtensionsEncode(strm);
02443 }
02444 
02445 
02446 PObject * H225_AltGKInfo::Clone() const
02447 {
02448 #ifndef PASN_LEANANDMEAN
02449   PAssert(IsClass(H225_AltGKInfo::Class()), PInvalidCast);
02450 #endif
02451   return new H225_AltGKInfo(*this);
02452 }
02453 
02454 
02455 //
02456 // SecurityCapabilities
02457 //
02458 
02459 H225_SecurityCapabilities::H225_SecurityCapabilities(unsigned tag, PASN_Object::TagClass tagClass)
02460   : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
02461 {
02462 }
02463 
02464 
02465 #ifndef PASN_NOPRINTON
02466 void H225_SecurityCapabilities::PrintOn(ostream & strm) const
02467 {
02468   int indent = strm.precision() + 2;
02469   strm << "{\n";
02470   if (HasOptionalField(e_nonStandard))
02471     strm << setw(indent+14) << "nonStandard = " << setprecision(indent) << m_nonStandard << '\n';
02472   strm << setw(indent+13) << "encryption = " << setprecision(indent) << m_encryption << '\n';
02473   strm << setw(indent+16) << "authenticaton = " << setprecision(indent) << m_authenticaton << '\n';
02474   strm << setw(indent+12) << "integrity = " << setprecision(indent) << m_integrity << '\n';
02475   strm << setw(indent-1) << setprecision(indent-2) << "}";
02476 }
02477 #endif
02478 
02479 
02480 PObject::Comparison H225_SecurityCapabilities::Compare(const PObject & obj) const
02481 {
02482 #ifndef PASN_LEANANDMEAN
02483   PAssert(PIsDescendant(&obj, H225_SecurityCapabilities), PInvalidCast);
02484 #endif
02485   const H225_SecurityCapabilities & other = (const H225_SecurityCapabilities &)obj;
02486 
02487   Comparison result;
02488 
02489   if ((result = m_nonStandard.Compare(other.m_nonStandard)) != EqualTo)
02490     return result;
02491   if ((result = m_encryption.Compare(other.m_encryption)) != EqualTo)
02492     return result;
02493   if ((result = m_authenticaton.Compare(other.m_authenticaton)) != EqualTo)
02494     return result;
02495   if ((result = m_integrity.Compare(other.m_integrity)) != EqualTo)
02496     return result;
02497 
02498   return PASN_Sequence::Compare(other);
02499 }
02500 
02501 
02502 PINDEX H225_SecurityCapabilities::GetDataLength() const
02503 {
02504   PINDEX length = 0;
02505   if (HasOptionalField(e_nonStandard))
02506     length += m_nonStandard.GetObjectLength();
02507   length += m_encryption.GetObjectLength();
02508   length += m_authenticaton.GetObjectLength();
02509   length += m_integrity.GetObjectLength();
02510   return length;
02511 }
02512 
02513 
02514 BOOL H225_SecurityCapabilities::Decode(PASN_Stream & strm)
02515 {
02516   if (!PreambleDecode(strm))
02517     return FALSE;
02518 
02519   if (HasOptionalField(e_nonStandard) && !m_nonStandard.Decode(strm))
02520     return FALSE;
02521   if (!m_encryption.Decode(strm))
02522     return FALSE;
02523   if (!m_authenticaton.Decode(strm))
02524     return FALSE;
02525   if (!m_integrity.Decode(strm))
02526     return FALSE;
02527 
02528   return UnknownExtensionsDecode(strm);
02529 }
02530 
02531 
02532 void H225_SecurityCapabilities::Encode(PASN_Stream & strm) const
02533 {
02534   PreambleEncode(strm);
02535 
02536   if (HasOptionalField(e_nonStandard))
02537     m_nonStandard.Encode(strm);
02538   m_encryption.Encode(strm);
02539   m_authenticaton.Encode(strm);
02540   m_integrity.Encode(strm);
02541 
02542   UnknownExtensionsEncode(strm);
02543 }
02544 
02545 
02546 PObject * H225_SecurityCapabilities::Clone() const
02547 {
02548 #ifndef PASN_LEANANDMEAN
02549   PAssert(IsClass(H225_SecurityCapabilities::Class()), PInvalidCast);
02550 #endif
02551   return new H225_SecurityCapabilities(*this);
02552 }
02553 
02554 
02555 //
02556 // QseriesOptions
02557 //
02558 
02559 H225_QseriesOptions::H225_QseriesOptions(unsigned tag, PASN_Object::TagClass tagClass)
02560   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
02561 {
02562 }
02563 
02564 
02565 #ifndef PASN_NOPRINTON
02566 void H225_QseriesOptions::PrintOn(ostream & strm) const
02567 {
02568   int indent = strm.precision() + 2;
02569   strm << "{\n";
02570   strm << setw(indent+11) << "q932Full = " << setprecision(indent) << m_q932Full << '\n';
02571   strm << setw(indent+11) << "q951Full = " << setprecision(indent) << m_q951Full << '\n';
02572   strm << setw(indent+11) << "q952Full = " << setprecision(indent) << m_q952Full << '\n';
02573   strm << setw(indent+11) << "q953Full = " << setprecision(indent) << m_q953Full << '\n';
02574   strm << setw(indent+11) << "q955Full = " << setprecision(indent) << m_q955Full << '\n';
02575   strm << setw(indent+11) << "q956Full = " << setprecision(indent) << m_q956Full << '\n';
02576   strm << setw(indent+11) << "q957Full = " << setprecision(indent) << m_q957Full << '\n';
02577   strm << setw(indent+11) << "q954Info = " << setprecision(indent) << m_q954Info << '\n';
02578   strm << setw(indent-1) << setprecision(indent-2) << "}";
02579 }
02580 #endif
02581 
02582 
02583 PObject::Comparison H225_QseriesOptions::Compare(const PObject & obj) const
02584 {
02585 #ifndef PASN_LEANANDMEAN
02586   PAssert(PIsDescendant(&obj, H225_QseriesOptions), PInvalidCast);
02587 #endif
02588   const H225_QseriesOptions & other = (const H225_QseriesOptions &)obj;
02589 
02590   Comparison result;
02591 
02592   if ((result = m_q932Full.Compare(other.m_q932Full)) != EqualTo)
02593     return result;
02594   if ((result = m_q951Full.Compare(other.m_q951Full)) != EqualTo)
02595     return result;
02596   if ((result = m_q952Full.Compare(other.m_q952Full)) != EqualTo)
02597     return result;
02598   if ((result = m_q953Full.Compare(other.m_q953Full)) != EqualTo)
02599     return result;
02600   if ((result = m_q955Full.Compare(other.m_q955Full)) != EqualTo)
02601     return result;
02602   if ((result = m_q956Full.Compare(other.m_q956Full)) != EqualTo)
02603     return result;
02604   if ((result = m_q957Full.Compare(other.m_q957Full)) != EqualTo)
02605     return result;
02606   if ((result = m_q954Info.Compare(other.m_q954Info)) != EqualTo)
02607     return result;
02608 
02609   return PASN_Sequence::Compare(other);
02610 }
02611 
02612 
02613 PINDEX H225_QseriesOptions::GetDataLength() const
02614 {
02615   PINDEX length = 0;
02616   length += m_q932Full.GetObjectLength();
02617   length += m_q951Full.GetObjectLength();
02618   length += m_q952Full.GetObjectLength();
02619   length += m_q953Full.GetObjectLength();
02620   length += m_q955Full.GetObjectLength();
02621   length += m_q956Full.GetObjectLength();
02622   length += m_q957Full.GetObjectLength();
02623   length += m_q954Info.GetObjectLength();
02624   return length;
02625 }
02626 
02627 
02628 BOOL H225_QseriesOptions::Decode(PASN_Stream & strm)
02629 {
02630   if (!PreambleDecode(strm))
02631     return FALSE;
02632 
02633   if (!m_q932Full.Decode(strm))
02634     return FALSE;
02635   if (!m_q951Full.Decode(strm))
02636     return FALSE;
02637   if (!m_q952Full.Decode(strm))
02638     return FALSE;
02639   if (!m_q953Full.Decode(strm))
02640     return FALSE;
02641   if (!m_q955Full.Decode(strm))
02642     return FALSE;
02643   if (!m_q956Full.Decode(strm))
02644     return FALSE;
02645   if (!m_q957Full.Decode(strm))
02646     return FALSE;
02647   if (!m_q954Info.Decode(strm))
02648     return FALSE;
02649 
02650   return UnknownExtensionsDecode(strm);
02651 }
02652 
02653 
02654 void H225_QseriesOptions::Encode(PASN_Stream & strm) const
02655 {
02656   PreambleEncode(strm);
02657 
02658   m_q932Full.Encode(strm);
02659   m_q951Full.Encode(strm);
02660   m_q952Full.Encode(strm);
02661   m_q953Full.Encode(strm);
02662   m_q955Full.Encode(strm);
02663   m_q956Full.Encode(strm);
02664   m_q957Full.Encode(strm);
02665   m_q954Info.Encode(strm);
02666 
02667   UnknownExtensionsEncode(strm);
02668 }
02669 
02670 
02671 PObject * H225_QseriesOptions::Clone() const
02672 {
02673 #ifndef PASN_LEANANDMEAN
02674   PAssert(IsClass(H225_QseriesOptions::Class()), PInvalidCast);
02675 #endif
02676   return new H225_QseriesOptions(*this);
02677 }
02678 
02679 
02680 //
02681 // DataRate
02682 //
02683 
02684 H225_DataRate::H225_DataRate(unsigned tag, PASN_Object::TagClass tagClass)
02685   : PASN_Sequence(tag, tagClass, 2, TRUE, 0)
02686 {
02687   m_channelMultiplier.SetConstraints(PASN_Object::FixedConstraint, 1, 256);
02688 }
02689 
02690 
02691 #ifndef PASN_NOPRINTON
02692 void H225_DataRate::PrintOn(ostream & strm) const
02693 {
02694   int indent = strm.precision() + 2;
02695   strm << "{\n";
02696   if (HasOptionalField(e_nonStandardData))
02697     strm << setw(indent+18) << "nonStandardData = " << setprecision(indent) << m_nonStandardData << '\n';
02698   strm << setw(indent+14) << "channelRate = " << setprecision(indent) << m_channelRate << '\n';
02699   if (HasOptionalField(e_channelMultiplier))
02700     strm << setw(indent+20) << "channelMultiplier = " << setprecision(indent) << m_channelMultiplier << '\n';
02701   strm << setw(indent-1) << setprecision(indent-2) << "}";
02702 }
02703 #endif
02704 
02705 
02706 PObject::Comparison H225_DataRate::Compare(const PObject & obj) const
02707 {
02708 #ifndef PASN_LEANANDMEAN
02709   PAssert(PIsDescendant(&obj, H225_DataRate), PInvalidCast);
02710 #endif
02711   const H225_DataRate & other = (const H225_DataRate &)obj;
02712 
02713   Comparison result;
02714 
02715   if ((result = m_nonStandardData.Compare(other.m_nonStandardData)) != EqualTo)
02716     return result;
02717   if ((result = m_channelRate.Compare(other.m_channelRate)) != EqualTo)
02718     return result;
02719   if ((result = m_channelMultiplier.Compare(other.m_channelMultiplier)) != EqualTo)
02720     return result;
02721 
02722   return PASN_Sequence::Compare(other);
02723 }
02724 
02725 
02726 PINDEX H225_DataRate::GetDataLength() const
02727 {
02728   PINDEX length = 0;
02729   if (HasOptionalField(e_nonStandardData))
02730     length += m_nonStandardData.GetObjectLength();
02731   length += m_channelRate.GetObjectLength();
02732   if (HasOptionalField(e_channelMultiplier))
02733     length += m_channelMultiplier.GetObjectLength();
02734   return length;
02735 }
02736 
02737 
02738 BOOL H225_DataRate::Decode(PASN_Stream & strm)
02739 {
02740   if (!PreambleDecode(strm))
02741     return FALSE;
02742 
02743   if (HasOptionalField(e_nonStandardData) && !m_nonStandardData.Decode(strm))
02744     return FALSE;
02745   if (!m_channelRate.Decode(strm))
02746     return FALSE;
02747   if (HasOptionalField(e_channelMultiplier) && !m_channelMultiplier.Decode(strm))
02748     return FALSE;
02749 
02750   return UnknownExtensionsDecode(strm);
02751 }
02752 
02753 
02754 void H225_DataRate::Encode(PASN_Stream & strm) const
02755 {
02756   PreambleEncode(strm);
02757 
02758   if (HasOptionalField(e_nonStandardData))
02759     m_nonStandardData.Encode(strm);
02760   m_channelRate.Encode(strm);
02761   if (HasOptionalField(e_channelMultiplier))
02762     m_channelMultiplier.Encode(strm);
02763 
02764   UnknownExtensionsEncode(strm);
02765 }
02766 
02767 
02768 PObject * H225_DataRate::Clone() const
02769 {
02770 #ifndef PASN_LEANANDMEAN
02771   PAssert(IsClass(H225_DataRate::Class()), PInvalidCast);
02772 #endif
02773   return new H225_DataRate(*this);
02774 }
02775 
02776 
02777 //
02778 // SupportedPrefix
02779 //
02780 
02781 H225_SupportedPrefix::H225_SupportedPrefix(unsigned tag, PASN_Object::TagClass tagClass)
02782   : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
02783 {
02784 }
02785 
02786 
02787 #ifndef PASN_NOPRINTON
02788 void H225_SupportedPrefix::PrintOn(ostream & strm) const
02789 {
02790   int indent = strm.precision() + 2;
02791   strm << "{\n";
02792   if (HasOptionalField(e_nonStandardData))
02793     strm << setw(indent+18) << "nonStandardData = " << setprecision(indent) << m_nonStandardData << '\n';
02794   strm << setw(indent+9) << "prefix = " << setprecision(indent) << m_prefix << '\n';
02795   strm << setw(indent-1) << setprecision(indent-2) << "}";
02796 }
02797 #endif
02798 
02799 
02800 PObject::Comparison H225_SupportedPrefix::Compare(const PObject & obj) const
02801 {
02802 #ifndef PASN_LEANANDMEAN
02803   PAssert(PIsDescendant(&obj, H225_SupportedPrefix), PInvalidCast);
02804 #endif
02805   const H225_SupportedPrefix & other = (const H225_SupportedPrefix &)obj;
02806 
02807   Comparison result;
02808 
02809   if ((result = m_nonStandardData.Compare(other.m_nonStandardData)) != EqualTo)
02810     return result;
02811   if ((result = m_prefix.Compare(other.m_prefix)) != EqualTo)
02812     return result;
02813 
02814   return PASN_Sequence::Compare(other);
02815 }
02816 
02817 
02818 PINDEX H225_SupportedPrefix::GetDataLength() const
02819 {
02820   PINDEX length = 0;
02821   if (HasOptionalField(e_nonStandardData))
02822     length += m_nonStandardData.GetObjectLength();
02823   length += m_prefix.GetObjectLength();
02824   return length;
02825 }
02826 
02827 
02828 BOOL H225_SupportedPrefix::Decode(PASN_Stream & strm)
02829 {
02830   if (!PreambleDecode(strm))
02831     return FALSE;
02832 
02833   if (HasOptionalField(e_nonStandardData) && !m_nonStandardData.Decode(strm))
02834     return FALSE;
02835   if (!m_prefix.Decode(strm))
02836     return FALSE;
02837 
02838   return UnknownExtensionsDecode(strm);
02839 }
02840 
02841 
02842 void H225_SupportedPrefix::Encode(PASN_Stream & strm) const
02843 {
02844   PreambleEncode(strm);
02845 
02846   if (HasOptionalField(e_nonStandardData))
02847     m_nonStandardData.Encode(strm);
02848   m_prefix.Encode(strm);
02849 
02850   UnknownExtensionsEncode(strm);
02851 }
02852 
02853 
02854 PObject * H225_SupportedPrefix::Clone() const
02855 {
02856 #ifndef PASN_LEANANDMEAN
02857   PAssert(IsClass(H225_SupportedPrefix::Class()), PInvalidCast);
02858 #endif
02859   return new H225_SupportedPrefix(*this);
02860 }
02861 
02862 
02863 //
02864 // CapacityReportingSpecification
02865 //
02866 
02867 H225_CapacityReportingSpecification::H225_CapacityReportingSpecification(unsigned tag, PASN_Object::TagClass tagClass)
02868   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
02869 {
02870 }
02871 
02872 
02873 #ifndef PASN_NOPRINTON
02874 void H225_CapacityReportingSpecification::PrintOn(ostream & strm) const
02875 {
02876   int indent = strm.precision() + 2;
02877   strm << "{\n";
02878   strm << setw(indent+7) << "when = " << setprecision(indent) << m_when << '\n';
02879   strm << setw(indent-1) << setprecision(indent-2) << "}";
02880 }
02881 #endif
02882 
02883 
02884 PObject::Comparison H225_CapacityReportingSpecification::Compare(const PObject & obj) const
02885 {
02886 #ifndef PASN_LEANANDMEAN
02887   PAssert(PIsDescendant(&obj, H225_CapacityReportingSpecification), PInvalidCast);
02888 #endif
02889   const H225_CapacityReportingSpecification & other = (const H225_CapacityReportingSpecification &)obj;
02890 
02891   Comparison result;
02892 
02893   if ((result = m_when.Compare(other.m_when)) != EqualTo)
02894     return result;
02895 
02896   return PASN_Sequence::Compare(other);
02897 }
02898 
02899 
02900 PINDEX H225_CapacityReportingSpecification::GetDataLength() const
02901 {
02902   PINDEX length = 0;
02903   length += m_when.GetObjectLength();
02904   return length;
02905 }
02906 
02907 
02908 BOOL H225_CapacityReportingSpecification::Decode(PASN_Stream & strm)
02909 {
02910   if (!PreambleDecode(strm))
02911     return FALSE;
02912 
02913   if (!m_when.Decode(strm))
02914     return FALSE;
02915 
02916   return UnknownExtensionsDecode(strm);
02917 }
02918 
02919 
02920 void H225_CapacityReportingSpecification::Encode(PASN_Stream & strm) const
02921 {
02922   PreambleEncode(strm);
02923 
02924   m_when.Encode(strm);
02925 
02926   UnknownExtensionsEncode(strm);
02927 }
02928 
02929 
02930 PObject * H225_CapacityReportingSpecification::Clone() const
02931 {
02932 #ifndef PASN_LEANANDMEAN
02933   PAssert(IsClass(H225_CapacityReportingSpecification::Class()), PInvalidCast);
02934 #endif
02935   return new H225_CapacityReportingSpecification(*this);
02936 }
02937 
02938 
02939 //
02940 // CallCapacityInfo
02941 //
02942 
02943 H225_CallCapacityInfo::H225_CallCapacityInfo(unsigned tag, PASN_Object::TagClass tagClass)
02944   : PASN_Sequence(tag, tagClass, 11, TRUE, 1)
02945 {
02946 }
02947 
02948 
02949 #ifndef PASN_NOPRINTON
02950 void H225_CallCapacityInfo::PrintOn(ostream & strm) const
02951 {
02952   int indent = strm.precision() + 2;
02953   strm << "{\n";
02954   if (HasOptionalField(e_voiceGwCallsAvailable))
02955     strm << setw(indent+24) << "voiceGwCallsAvailable = " << setprecision(indent) << m_voiceGwCallsAvailable << '\n';
02956   if (HasOptionalField(e_h310GwCallsAvailable))
02957     strm << setw(indent+23) << "h310GwCallsAvailable = " << setprecision(indent) << m_h310GwCallsAvailable << '\n';
02958   if (HasOptionalField(e_h320GwCallsAvailable))
02959     strm << setw(indent+23) << "h320GwCallsAvailable = " << setprecision(indent) << m_h320GwCallsAvailable << '\n';
02960   if (HasOptionalField(e_h321GwCallsAvailable))
02961     strm << setw(indent+23) << "h321GwCallsAvailable = " << setprecision(indent) << m_h321GwCallsAvailable << '\n';
02962   if (HasOptionalField(e_h322GwCallsAvailable))
02963     strm << setw(indent+23) << "h322GwCallsAvailable = " << setprecision(indent) << m_h322GwCallsAvailable << '\n';
02964   if (HasOptionalField(e_h323GwCallsAvailable))
02965     strm << setw(indent+23) << "h323GwCallsAvailable = " << setprecision(indent) << m_h323GwCallsAvailable << '\n';
02966   if (HasOptionalField(e_h324GwCallsAvailable))
02967     strm << setw(indent+23) << "h324GwCallsAvailable = " << setprecision(indent) << m_h324GwCallsAvailable << '\n';
02968   if (HasOptionalField(e_t120OnlyGwCallsAvailable))
02969     strm << setw(indent+27) << "t120OnlyGwCallsAvailable = " << setprecision(indent) << m_t120OnlyGwCallsAvailable << '\n';
02970   if (HasOptionalField(e_t38FaxAnnexbOnlyGwCallsAvailable))
02971     strm << setw(indent+35) << "t38FaxAnnexbOnlyGwCallsAvailable = " << setprecision(indent) << m_t38FaxAnnexbOnlyGwCallsAvailable << '\n';
02972   if (HasOptionalField(e_terminalCallsAvailable))
02973     strm << setw(indent+25) << "terminalCallsAvailable = " << setprecision(indent) << m_terminalCallsAvailable << '\n';
02974   if (HasOptionalField(e_mcuCallsAvailable))
02975     strm << setw(indent+20) << "mcuCallsAvailable = " << setprecision(indent) << m_mcuCallsAvailable << '\n';
02976   if (HasOptionalField(e_sipGwCallsAvailable))
02977     strm << setw(indent+22) << "sipGwCallsAvailable = " << setprecision(indent) << m_sipGwCallsAvailable << '\n';
02978   strm << setw(indent-1) << setprecision(indent-2) << "}";
02979 }
02980 #endif
02981 
02982 
02983 PObject::Comparison H225_CallCapacityInfo::Compare(const PObject & obj) const
02984 {
02985 #ifndef PASN_LEANANDMEAN
02986   PAssert(PIsDescendant(&obj, H225_CallCapacityInfo), PInvalidCast);
02987 #endif
02988   const H225_CallCapacityInfo & other = (const H225_CallCapacityInfo &)obj;
02989 
02990   Comparison result;
02991 
02992   if ((result = m_voiceGwCallsAvailable.Compare(other.m_voiceGwCallsAvailable)) != EqualTo)
02993     return result;
02994   if ((result = m_h310GwCallsAvailable.Compare(other.m_h310GwCallsAvailable)) != EqualTo)
02995     return result;
02996   if ((result = m_h320GwCallsAvailable.Compare(other.m_h320GwCallsAvailable)) != EqualTo)
02997     return result;
02998   if ((result = m_h321GwCallsAvailable.Compare(other.m_h321GwCallsAvailable)) != EqualTo)
02999     return result;
03000   if ((result = m_h322GwCallsAvailable.Compare(other.m_h322GwCallsAvailable)) != EqualTo)
03001     return result;
03002   if ((result = m_h323GwCallsAvailable.Compare(other.m_h323GwCallsAvailable)) != EqualTo)
03003     return result;
03004   if ((result = m_h324GwCallsAvailable.Compare(other.m_h324GwCallsAvailable)) != EqualTo)
03005     return result;
03006   if ((result = m_t120OnlyGwCallsAvailable.Compare(other.m_t120OnlyGwCallsAvailable)) != EqualTo)
03007     return result;
03008   if ((result = m_t38FaxAnnexbOnlyGwCallsAvailable.Compare(other.m_t38FaxAnnexbOnlyGwCallsAvailable)) != EqualTo)
03009     return result;
03010   if ((result = m_terminalCallsAvailable.Compare(other.m_terminalCallsAvailable)) != EqualTo)
03011     return result;
03012   if ((result = m_mcuCallsAvailable.Compare(other.m_mcuCallsAvailable)) != EqualTo)
03013     return result;
03014 
03015   return PASN_Sequence::Compare(other);
03016 }
03017 
03018 
03019 PINDEX H225_CallCapacityInfo::GetDataLength() const
03020 {
03021   PINDEX length = 0;
03022   if (HasOptionalField(e_voiceGwCallsAvailable))
03023     length += m_voiceGwCallsAvailable.GetObjectLength();
03024   if (HasOptionalField(e_h310GwCallsAvailable))
03025     length += m_h310GwCallsAvailable.GetObjectLength();
03026   if (HasOptionalField(e_h320GwCallsAvailable))
03027     length += m_h320GwCallsAvailable.GetObjectLength();
03028   if (HasOptionalField(e_h321GwCallsAvailable))
03029     length += m_h321GwCallsAvailable.GetObjectLength();
03030   if (HasOptionalField(e_h322GwCallsAvailable))
03031     length += m_h322GwCallsAvailable.GetObjectLength();
03032   if (HasOptionalField(e_h323GwCallsAvailable))
03033     length += m_h323GwCallsAvailable.GetObjectLength();
03034   if (HasOptionalField(e_h324GwCallsAvailable))
03035     length += m_h324GwCallsAvailable.GetObjectLength();
03036   if (HasOptionalField(e_t120OnlyGwCallsAvailable))
03037     length += m_t120OnlyGwCallsAvailable.GetObjectLength();
03038   if (HasOptionalField(e_t38FaxAnnexbOnlyGwCallsAvailable))
03039     length += m_t38FaxAnnexbOnlyGwCallsAvailable.GetObjectLength();
03040   if (HasOptionalField(e_terminalCallsAvailable))
03041     length += m_terminalCallsAvailable.GetObjectLength();
03042   if (HasOptionalField(e_mcuCallsAvailable))
03043     length += m_mcuCallsAvailable.GetObjectLength();
03044   return length;
03045 }
03046 
03047 
03048 BOOL H225_CallCapacityInfo::Decode(PASN_Stream & strm)
03049 {
03050   if (!PreambleDecode(strm))
03051     return FALSE;
03052 
03053   if (HasOptionalField(e_voiceGwCallsAvailable) && !m_voiceGwCallsAvailable.Decode(strm))
03054     return FALSE;
03055   if (HasOptionalField(e_h310GwCallsAvailable) && !m_h310GwCallsAvailable.Decode(strm))
03056     return FALSE;
03057   if (HasOptionalField(e_h320GwCallsAvailable) && !m_h320GwCallsAvailable.Decode(strm))
03058     return FALSE;
03059   if (HasOptionalField(e_h321GwCallsAvailable) && !m_h321GwCallsAvailable.Decode(strm))
03060     return FALSE;
03061   if (HasOptionalField(e_h322GwCallsAvailable) && !m_h322GwCallsAvailable.Decode(strm))
03062     return FALSE;
03063   if (HasOptionalField(e_h323GwCallsAvailable) && !m_h323GwCallsAvailable.Decode(strm))
03064     return FALSE;
03065   if (HasOptionalField(e_h324GwCallsAvailable) && !m_h324GwCallsAvailable.Decode(strm))
03066     return FALSE;
03067   if (HasOptionalField(e_t120OnlyGwCallsAvailable) && !m_t120OnlyGwCallsAvailable.Decode(strm))
03068     return FALSE;
03069   if (HasOptionalField(e_t38FaxAnnexbOnlyGwCallsAvailable) && !m_t38FaxAnnexbOnlyGwCallsAvailable.Decode(strm))
03070     return FALSE;
03071   if (HasOptionalField(e_terminalCallsAvailable) && !m_terminalCallsAvailable.Decode(strm))
03072     return FALSE;
03073   if (HasOptionalField(e_mcuCallsAvailable) && !m_mcuCallsAvailable.Decode(strm))
03074     return FALSE;
03075   if (!KnownExtensionDecode(strm, e_sipGwCallsAvailable, m_sipGwCallsAvailable))
03076     return FALSE;
03077 
03078   return UnknownExtensionsDecode(strm);
03079 }
03080 
03081 
03082 void H225_CallCapacityInfo::Encode(PASN_Stream & strm) const
03083 {
03084   PreambleEncode(strm);
03085 
03086   if (HasOptionalField(e_voiceGwCallsAvailable))
03087     m_voiceGwCallsAvailable.Encode(strm);
03088   if (HasOptionalField(e_h310GwCallsAvailable))
03089     m_h310GwCallsAvailable.Encode(strm);
03090   if (HasOptionalField(e_h320GwCallsAvailable))
03091     m_h320GwCallsAvailable.Encode(strm);
03092   if (HasOptionalField(e_h321GwCallsAvailable))
03093     m_h321GwCallsAvailable.Encode(strm);
03094   if (HasOptionalField(e_h322GwCallsAvailable))
03095     m_h322GwCallsAvailable.Encode(strm);
03096   if (HasOptionalField(e_h323GwCallsAvailable))
03097     m_h323GwCallsAvailable.Encode(strm);
03098   if (HasOptionalField(e_h324GwCallsAvailable))
03099     m_h324GwCallsAvailable.Encode(strm);
03100   if (HasOptionalField(e_t120OnlyGwCallsAvailable))
03101     m_t120OnlyGwCallsAvailable.Encode(strm);
03102   if (HasOptionalField(e_t38FaxAnnexbOnlyGwCallsAvailable))
03103     m_t38FaxAnnexbOnlyGwCallsAvailable.Encode(strm);
03104   if (HasOptionalField(e_terminalCallsAvailable))
03105     m_terminalCallsAvailable.Encode(strm);
03106   if (HasOptionalField(e_mcuCallsAvailable))
03107     m_mcuCallsAvailable.Encode(strm);
03108   KnownExtensionEncode(strm, e_sipGwCallsAvailable, m_sipGwCallsAvailable);
03109 
03110   UnknownExtensionsEncode(strm);
03111 }
03112 
03113 
03114 PObject * H225_CallCapacityInfo::Clone() const
03115 {
03116 #ifndef PASN_LEANANDMEAN
03117   PAssert(IsClass(H225_CallCapacityInfo::Class()), PInvalidCast);
03118 #endif
03119   return new H225_CallCapacityInfo(*this);
03120 }
03121 
03122 
03123 //
03124 // CallsAvailable
03125 //
03126 
03127 H225_CallsAvailable::H225_CallsAvailable(unsigned tag, PASN_Object::TagClass tagClass)
03128   : PASN_Sequence(tag, tagClass, 1, TRUE, 1)
03129 {
03130   m_calls.SetConstraints(PASN_Object::FixedConstraint, 0, 4294967295U);
03131   m_group.SetConstraints(PASN_Object::FixedConstraint, 1, 128);
03132 }
03133 
03134 
03135 #ifndef PASN_NOPRINTON
03136 void H225_CallsAvailable::PrintOn(ostream & strm) const
03137 {
03138   int indent = strm.precision() + 2;
03139   strm << "{\n";
03140   strm << setw(indent+8) << "calls = " << setprecision(indent) << m_calls << '\n';
03141   if (HasOptionalField(e_group))
03142     strm << setw(indent+8) << "group = " << setprecision(indent) << m_group << '\n';
03143   if (HasOptionalField(e_carrier))
03144     strm << setw(indent+10) << "carrier = " << setprecision(indent) << m_carrier << '\n';
03145   strm << setw(indent-1) << setprecision(indent-2) << "}";
03146 }
03147 #endif
03148 
03149 
03150 PObject::Comparison H225_CallsAvailable::Compare(const PObject & obj) const
03151 {
03152 #ifndef PASN_LEANANDMEAN
03153   PAssert(PIsDescendant(&obj, H225_CallsAvailable), PInvalidCast);
03154 #endif
03155   const H225_CallsAvailable & other = (const H225_CallsAvailable &)obj;
03156 
03157   Comparison result;
03158 
03159   if ((result = m_calls.Compare(other.m_calls)) != EqualTo)
03160     return result;
03161   if ((result = m_group.Compare(other.m_group)) != EqualTo)
03162     return result;
03163 
03164   return PASN_Sequence::Compare(other);
03165 }
03166 
03167 
03168 PINDEX H225_CallsAvailable::GetDataLength() const
03169 {
03170   PINDEX length = 0;
03171   length += m_calls.GetObjectLength();
03172   if (HasOptionalField(e_group))
03173     length += m_group.GetObjectLength();
03174   return length;
03175 }
03176 
03177 
03178 BOOL H225_CallsAvailable::Decode(PASN_Stream & strm)
03179 {
03180   if (!PreambleDecode(strm))
03181     return FALSE;
03182 
03183   if (!m_calls.Decode(strm))
03184     return FALSE;
03185   if (HasOptionalField(e_group) && !m_group.Decode(strm))
03186     return FALSE;
03187   if (!KnownExtensionDecode(strm, e_carrier, m_carrier))
03188     return FALSE;
03189 
03190   return UnknownExtensionsDecode(strm);
03191 }
03192 
03193 
03194 void H225_CallsAvailable::Encode(PASN_Stream & strm) const
03195 {
03196   PreambleEncode(strm);
03197 
03198   m_calls.Encode(strm);
03199   if (HasOptionalField(e_group))
03200     m_group.Encode(strm);
03201   KnownExtensionEncode(strm, e_carrier, m_carrier);
03202 
03203   UnknownExtensionsEncode(strm);
03204 }
03205 
03206 
03207 PObject * H225_CallsAvailable::Clone() const
03208 {
03209 #ifndef PASN_LEANANDMEAN
03210   PAssert(IsClass(H225_CallsAvailable::Class()), PInvalidCast);
03211 #endif
03212   return new H225_CallsAvailable(*this);
03213 }
03214 
03215 
03216 //
03217 // CicInfo
03218 //
03219 
03220 H225_CicInfo::H225_CicInfo(unsigned tag, PASN_Object::TagClass tagClass)
03221   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
03222 {
03223   m_pointCode.SetConstraints(PASN_Object::FixedConstraint, 2, 5);
03224 }
03225 
03226 
03227 #ifndef PASN_NOPRINTON
03228 void H225_CicInfo::PrintOn(ostream & strm) const
03229 {
03230   int indent = strm.precision() + 2;
03231   strm << "{\n";
03232   strm << setw(indent+6) << "cic = " << setprecision(indent) << m_cic << '\n';
03233   strm << setw(indent+12) << "pointCode = " << setprecision(indent) << m_pointCode << '\n';
03234   strm << setw(indent-1) << setprecision(indent-2) << "}";
03235 }
03236 #endif
03237 
03238 
03239 PObject::Comparison H225_CicInfo::Compare(const PObject & obj) const
03240 {
03241 #ifndef PASN_LEANANDMEAN
03242   PAssert(PIsDescendant(&obj, H225_CicInfo), PInvalidCast);
03243 #endif
03244   const H225_CicInfo & other = (const H225_CicInfo &)obj;
03245 
03246   Comparison result;
03247 
03248   if ((result = m_cic.Compare(other.m_cic)) != EqualTo)
03249     return result;
03250   if ((result = m_pointCode.Compare(other.m_pointCode)) != EqualTo)
03251     return result;
03252 
03253   return PASN_Sequence::Compare(other);
03254 }
03255 
03256 
03257 PINDEX H225_CicInfo::GetDataLength() const
03258 {
03259   PINDEX length = 0;
03260   length += m_cic.GetObjectLength();
03261   length += m_pointCode.GetObjectLength();
03262   return length;
03263 }
03264 
03265 
03266 BOOL H225_CicInfo::Decode(PASN_Stream & strm)
03267 {
03268   if (!PreambleDecode(strm))
03269     return FALSE;
03270 
03271   if (!m_cic.Decode(strm))
03272     return FALSE;
03273   if (!m_pointCode.Decode(strm))
03274     return FALSE;
03275 
03276   return UnknownExtensionsDecode(strm);
03277 }
03278 
03279 
03280 void H225_CicInfo::Encode(PASN_Stream & strm) const
03281 {
03282   PreambleEncode(strm);
03283 
03284   m_cic.Encode(strm);
03285   m_pointCode.Encode(strm);
03286 
03287   UnknownExtensionsEncode(strm);
03288 }
03289 
03290 
03291 PObject * H225_CicInfo::Clone() const
03292 {
03293 #ifndef PASN_LEANANDMEAN
03294   PAssert(IsClass(H225_CicInfo::Class()), PInvalidCast);
03295 #endif
03296   return new H225_CicInfo(*this);
03297 }
03298 
03299 
03300 //
03301 // GroupID
03302 //
03303 
03304 H225_GroupID::H225_GroupID(unsigned tag, PASN_Object::TagClass tagClass)
03305   : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
03306 {
03307   m_group.SetConstraints(PASN_Object::FixedConstraint, 1, 128);
03308 }
03309 
03310 
03311 #ifndef PASN_NOPRINTON
03312 void H225_GroupID::PrintOn(ostream & strm) const
03313 {
03314   int indent = strm.precision() + 2;
03315   strm << "{\n";
03316   if (HasOptionalField(e_member))
03317     strm << setw(indent+9) << "member = " << setprecision(indent) << m_member << '\n';
03318   strm << setw(indent+8) << "group = " << setprecision(indent) << m_group << '\n';
03319   strm << setw(indent-1) << setprecision(indent-2) << "}";
03320 }
03321 #endif
03322 
03323 
03324 PObject::Comparison H225_GroupID::Compare(const PObject & obj) const
03325 {
03326 #ifndef PASN_LEANANDMEAN
03327   PAssert(PIsDescendant(&obj, H225_GroupID), PInvalidCast);
03328 #endif
03329   const H225_GroupID & other = (const H225_GroupID &)obj;
03330 
03331   Comparison result;
03332 
03333   if ((result = m_member.Compare(other.m_member)) != EqualTo)
03334     return result;
03335   if ((result = m_group.Compare(other.m_group)) != EqualTo)
03336     return result;
03337 
03338   return PASN_Sequence::Compare(other);
03339 }
03340 
03341 
03342 PINDEX H225_GroupID::GetDataLength() const
03343 {
03344   PINDEX length = 0;
03345   if (HasOptionalField(e_member))
03346     length += m_member.GetObjectLength();
03347   length += m_group.GetObjectLength();
03348   return length;
03349 }
03350 
03351 
03352 BOOL H225_GroupID::Decode(PASN_Stream & strm)
03353 {
03354   if (!PreambleDecode(strm))
03355     return FALSE;
03356 
03357   if (HasOptionalField(e_member) && !m_member.Decode(strm))
03358     return FALSE;
03359   if (!m_group.Decode(strm))
03360     return FALSE;
03361 
03362   return UnknownExtensionsDecode(strm);
03363 }
03364 
03365 
03366 void H225_GroupID::Encode(PASN_Stream & strm) const
03367 {
03368   PreambleEncode(strm);
03369 
03370   if (HasOptionalField(e_member))
03371     m_member.Encode(strm);
03372   m_group.Encode(strm);
03373 
03374   UnknownExtensionsEncode(strm);
03375 }
03376 
03377 
03378 PObject * H225_GroupID::Clone() const
03379 {
03380 #ifndef PASN_LEANANDMEAN
03381   PAssert(IsClass(H225_GroupID::Class()), PInvalidCast);
03382 #endif
03383   return new H225_GroupID(*this);
03384 }
03385 
03386 
03387 //
03388 // ServiceControlSession
03389 //
03390 
03391 H225_ServiceControlSession::H225_ServiceControlSession(unsigned tag, PASN_Object::TagClass tagClass)
03392   : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
03393 {
03394   m_sessionId.SetConstraints(PASN_Object::FixedConstraint, 0, 255);
03395 }
03396 
03397 
03398 #ifndef PASN_NOPRINTON
03399 void H225_ServiceControlSession::PrintOn(ostream & strm) const
03400 {
03401   int indent = strm.precision() + 2;
03402   strm << "{\n";
03403   strm << setw(indent+12) << "sessionId = " << setprecision(indent) << m_sessionId << '\n';
03404   if (HasOptionalField(e_contents))
03405     strm << setw(indent+11) << "contents = " << setprecision(indent) << m_contents << '\n';
03406   strm << setw(indent+9) << "reason = " << setprecision(indent) << m_reason << '\n';
03407   strm << setw(indent-1) << setprecision(indent-2) << "}";
03408 }
03409 #endif
03410 
03411 
03412 PObject::Comparison H225_ServiceControlSession::Compare(const PObject & obj) const
03413 {
03414 #ifndef PASN_LEANANDMEAN
03415   PAssert(PIsDescendant(&obj, H225_ServiceControlSession), PInvalidCast);
03416 #endif
03417   const H225_ServiceControlSession & other = (const H225_ServiceControlSession &)obj;
03418 
03419   Comparison result;
03420 
03421   if ((result = m_sessionId.Compare(other.m_sessionId)) != EqualTo)
03422     return result;
03423   if ((result = m_contents.Compare(other.m_contents)) != EqualTo)
03424     return result;
03425   if ((result = m_reason.Compare(other.m_reason)) != EqualTo)
03426     return result;
03427 
03428   return PASN_Sequence::Compare(other);
03429 }
03430 
03431 
03432 PINDEX H225_ServiceControlSession::GetDataLength() const
03433 {
03434   PINDEX length = 0;
03435   length += m_sessionId.GetObjectLength();
03436   if (HasOptionalField(e_contents))
03437     length += m_contents.GetObjectLength();
03438   length += m_reason.GetObjectLength();
03439   return length;
03440 }
03441 
03442 
03443 BOOL H225_ServiceControlSession::Decode(PASN_Stream & strm)
03444 {
03445   if (!PreambleDecode(strm))
03446     return FALSE;
03447 
03448   if (!m_sessionId.Decode(strm))
03449     return FALSE;
03450   if (HasOptionalField(e_contents) && !m_contents.Decode(strm))
03451     return FALSE;
03452   if (!m_reason.Decode(strm))
03453     return FALSE;
03454 
03455   return UnknownExtensionsDecode(strm);
03456 }
03457 
03458 
03459 void H225_ServiceControlSession::Encode(PASN_Stream & strm) const
03460 {
03461   PreambleEncode(strm);
03462 
03463   m_sessionId.Encode(strm);
03464   if (HasOptionalField(e_contents))
03465     m_contents.Encode(strm);
03466   m_reason.Encode(strm);
03467 
03468   UnknownExtensionsEncode(strm);
03469 }
03470 
03471 
03472 PObject * H225_ServiceControlSession::Clone() const
03473 {
03474 #ifndef PASN_LEANANDMEAN
03475   PAssert(IsClass(H225_ServiceControlSession::Class()), PInvalidCast);
03476 #endif
03477   return new H225_ServiceControlSession(*this);
03478 }
03479 
03480 
03481 //
03482 // RasUsageInfoTypes
03483 //
03484 
03485 H225_RasUsageInfoTypes::H225_RasUsageInfoTypes(unsigned tag, PASN_Object::TagClass tagClass)
03486   : PASN_Sequence(tag, tagClass, 3, TRUE, 0)
03487 {
03488 }
03489 
03490 
03491 #ifndef PASN_NOPRINTON
03492 void H225_RasUsageInfoTypes::PrintOn(ostream & strm) const
03493 {
03494   int indent = strm.precision() + 2;
03495   strm << "{\n";
03496   strm << setw(indent+24) << "nonStandardUsageTypes = " << setprecision(indent) << m_nonStandardUsageTypes << '\n';
03497   if (HasOptionalField(e_startTime))
03498     strm << setw(indent+12) << "startTime = " << setprecision(indent) << m_startTime << '\n';
03499   if (HasOptionalField(e_endTime))
03500     strm << setw(indent+10) << "endTime = " << setprecision(indent) << m_endTime << '\n';
03501   if (HasOptionalField(e_terminationCause))
03502     strm << setw(indent+19) << "terminationCause = " << setprecision(indent) << m_terminationCause << '\n';
03503   strm << setw(indent-1) << setprecision(indent-2) << "}";
03504 }
03505 #endif
03506 
03507 
03508 PObject::Comparison H225_RasUsageInfoTypes::Compare(const PObject & obj) const
03509 {
03510 #ifndef PASN_LEANANDMEAN
03511   PAssert(PIsDescendant(&obj, H225_RasUsageInfoTypes), PInvalidCast);
03512 #endif
03513   const H225_RasUsageInfoTypes & other = (const H225_RasUsageInfoTypes &)obj;
03514 
03515   Comparison result;
03516 
03517   if ((result = m_nonStandardUsageTypes.Compare(other.m_nonStandardUsageTypes)) != EqualTo)
03518     return result;
03519   if ((result = m_startTime.Compare(other.m_startTime)) != EqualTo)
03520     return result;
03521   if ((result = m_endTime.Compare(other.m_endTime)) != EqualTo)
03522     return result;
03523   if ((result = m_terminationCause.Compare(other.m_terminationCause)) != EqualTo)
03524     return result;
03525 
03526   return PASN_Sequence::Compare(other);
03527 }
03528 
03529 
03530 PINDEX H225_RasUsageInfoTypes::GetDataLength() const
03531 {
03532   PINDEX length = 0;
03533   length += m_nonStandardUsageTypes.GetObjectLength();
03534   if (HasOptionalField(e_startTime))
03535     length += m_startTime.GetObjectLength();
03536   if (HasOptionalField(e_endTime))
03537     length += m_endTime.GetObjectLength();
03538   if (HasOptionalField(e_terminationCause))
03539     length += m_terminationCause.GetObjectLength();
03540   return length;
03541 }
03542 
03543 
03544 BOOL H225_RasUsageInfoTypes::Decode(PASN_Stream & strm)
03545 {
03546   if (!PreambleDecode(strm))
03547     return FALSE;
03548 
03549   if (!m_nonStandardUsageTypes.Decode(strm))
03550     return FALSE;
03551   if (HasOptionalField(e_startTime) && !m_startTime.Decode(strm))
03552     return FALSE;
03553   if (HasOptionalField(e_endTime) && !m_endTime.Decode(strm))
03554     return FALSE;
03555   if (HasOptionalField(e_terminationCause) && !m_terminationCause.Decode(strm))
03556     return FALSE;
03557 
03558   return UnknownExtensionsDecode(strm);
03559 }
03560 
03561 
03562 void H225_RasUsageInfoTypes::Encode(PASN_Stream & strm) const
03563 {
03564   PreambleEncode(strm);
03565 
03566   m_nonStandardUsageTypes.Encode(strm);
03567   if (HasOptionalField(e_startTime))
03568     m_startTime.Encode(strm);
03569   if (HasOptionalField(e_endTime))
03570     m_endTime.Encode(strm);
03571   if (HasOptionalField(e_terminationCause))
03572     m_terminationCause.Encode(strm);
03573 
03574   UnknownExtensionsEncode(strm);
03575 }
03576 
03577 
03578 PObject * H225_RasUsageInfoTypes::Clone() const
03579 {
03580 #ifndef PASN_LEANANDMEAN
03581   PAssert(IsClass(H225_RasUsageInfoTypes::Class()), PInvalidCast);
03582 #endif
03583   return new H225_RasUsageInfoTypes(*this);
03584 }
03585 
03586 
03587 //
03588 // RasUsageSpecification
03589 //
03590 
03591 H225_RasUsageSpecification::H225_RasUsageSpecification(unsigned tag, PASN_Object::TagClass tagClass)
03592   : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
03593 {
03594 }
03595 
03596 
03597 #ifndef PASN_NOPRINTON
03598 void H225_RasUsageSpecification::PrintOn(ostream & strm) const
03599 {
03600   int indent = strm.precision() + 2;
03601   strm << "{\n";
03602   strm << setw(indent+7) << "when = " << setprecision(indent) << m_when << '\n';
03603   if (HasOptionalField(e_callStartingPoint))
03604     strm << setw(indent+20) << "callStartingPoint = " << setprecision(indent) << m_callStartingPoint << '\n';
03605   strm << setw(indent+11) << "required = " << setprecision(indent) << m_required << '\n';
03606   strm << setw(indent-1) << setprecision(indent-2) << "}";
03607 }
03608 #endif
03609 
03610 
03611 PObject::Comparison H225_RasUsageSpecification::Compare(const PObject & obj) const
03612 {
03613 #ifndef PASN_LEANANDMEAN
03614   PAssert(PIsDescendant(&obj, H225_RasUsageSpecification), PInvalidCast);
03615 #endif
03616   const H225_RasUsageSpecification & other = (const H225_RasUsageSpecification &)obj;
03617 
03618   Comparison result;
03619 
03620   if ((result = m_when.Compare(other.m_when)) != EqualTo)
03621     return result;
03622   if ((result = m_callStartingPoint.Compare(other.m_callStartingPoint)) != EqualTo)
03623     return result;
03624   if ((result = m_required.Compare(other.m_required)) != EqualTo)
03625     return result;
03626 
03627   return PASN_Sequence::Compare(other);
03628 }
03629 
03630 
03631 PINDEX H225_RasUsageSpecification::GetDataLength() const
03632 {
03633   PINDEX length = 0;
03634   length += m_when.GetObjectLength();
03635   if (HasOptionalField(e_callStartingPoint))
03636     length += m_callStartingPoint.GetObjectLength();
03637   length += m_required.GetObjectLength();
03638   return length;
03639 }
03640 
03641 
03642 BOOL H225_RasUsageSpecification::Decode(PASN_Stream & strm)
03643 {
03644   if (!PreambleDecode(strm))
03645     return FALSE;
03646 
03647   if (!m_when.Decode(strm))
03648     return FALSE;
03649   if (HasOptionalField(e_callStartingPoint) && !m_callStartingPoint.Decode(strm))
03650     return FALSE;
03651   if (!m_required.Decode(strm))
03652     return FALSE;
03653 
03654   return UnknownExtensionsDecode(strm);
03655 }
03656 
03657 
03658 void H225_RasUsageSpecification::Encode(PASN_Stream & strm) const
03659 {
03660   PreambleEncode(strm);
03661 
03662   m_when.Encode(strm);
03663   if (HasOptionalField(e_callStartingPoint))
03664     m_callStartingPoint.Encode(strm);
03665   m_required.Encode(strm);
03666 
03667   UnknownExtensionsEncode(strm);
03668 }
03669 
03670 
03671 PObject * H225_RasUsageSpecification::Clone() const
03672 {
03673 #ifndef PASN_LEANANDMEAN
03674   PAssert(IsClass(H225_RasUsageSpecification::Class()), PInvalidCast);
03675 #endif
03676   return new H225_RasUsageSpecification(*this);
03677 }
03678 
03679 
03680 //
03681 // RasUsageInformation
03682 //
03683 
03684 H225_RasUsageInformation::H225_RasUsageInformation(unsigned tag, PASN_Object::TagClass tagClass)
03685   : PASN_Sequence(tag, tagClass, 3, TRUE, 0)
03686 {
03687 }
03688 
03689 
03690 #ifndef PASN_NOPRINTON
03691 void H225_RasUsageInformation::PrintOn(ostream & strm) const
03692 {
03693   int indent = strm.precision() + 2;
03694   strm << "{\n";
03695   strm << setw(indent+25) << "nonStandardUsageFields = " << setprecision(indent) << m_nonStandardUsageFields << '\n';
03696   if (HasOptionalField(e_alertingTime))
03697     strm << setw(indent+15) << "alertingTime = " << setprecision(indent) << m_alertingTime << '\n';
03698   if (HasOptionalField(e_connectTime))
03699     strm << setw(indent+14) << "connectTime = " << setprecision(indent) << m_connectTime << '\n';
03700   if (HasOptionalField(e_endTime))
03701     strm << setw(indent+10) << "endTime = " << setprecision(indent) << m_endTime << '\n';
03702   strm << setw(indent-1) << setprecision(indent-2) << "}";
03703 }
03704 #endif
03705 
03706 
03707 PObject::Comparison H225_RasUsageInformation::Compare(const PObject & obj) const
03708 {
03709 #ifndef PASN_LEANANDMEAN
03710   PAssert(PIsDescendant(&obj, H225_RasUsageInformation), PInvalidCast);
03711 #endif
03712   const H225_RasUsageInformation & other = (const H225_RasUsageInformation &)obj;
03713 
03714   Comparison result;
03715 
03716   if ((result = m_nonStandardUsageFields.Compare(other.m_nonStandardUsageFields)) != EqualTo)
03717     return result;
03718   if ((result = m_alertingTime.Compare(other.m_alertingTime)) != EqualTo)
03719     return result;
03720   if ((result = m_connectTime.Compare(other.m_connectTime)) != EqualTo)
03721     return result;
03722   if ((result = m_endTime.Compare(other.m_endTime)) != EqualTo)
03723     return result;
03724 
03725   return PASN_Sequence::Compare(other);
03726 }
03727 
03728 
03729 PINDEX H225_RasUsageInformation::GetDataLength() const
03730 {
03731   PINDEX length = 0;
03732   length += m_nonStandardUsageFields.GetObjectLength();
03733   if (HasOptionalField(e_alertingTime))
03734     length += m_alertingTime.GetObjectLength();
03735   if (HasOptionalField(e_connectTime))
03736     length += m_connectTime.GetObjectLength();
03737   if (HasOptionalField(e_endTime))
03738     length += m_endTime.GetObjectLength();
03739   return length;
03740 }
03741 
03742 
03743 BOOL H225_RasUsageInformation::Decode(PASN_Stream & strm)
03744 {
03745   if (!PreambleDecode(strm))
03746     return FALSE;
03747 
03748   if (!m_nonStandardUsageFields.Decode(strm))
03749     return FALSE;
03750   if (HasOptionalField(e_alertingTime) && !m_alertingTime.Decode(strm))
03751     return FALSE;
03752   if (HasOptionalField(e_connectTime) && !m_connectTime.Decode(strm))
03753     return FALSE;
03754   if (HasOptionalField(e_endTime) && !m_endTime.Decode(strm))
03755     return FALSE;
03756 
03757   return UnknownExtensionsDecode(strm);
03758 }
03759 
03760 
03761 void H225_RasUsageInformation::Encode(PASN_Stream & strm) const
03762 {
03763   PreambleEncode(strm);
03764 
03765   m_nonStandardUsageFields.Encode(strm);
03766   if (HasOptionalField(e_alertingTime))
03767     m_alertingTime.Encode(strm);
03768   if (HasOptionalField(e_connectTime))
03769     m_connectTime.Encode(strm);
03770   if (HasOptionalField(e_endTime))
03771     m_endTime.Encode(strm);
03772 
03773   UnknownExtensionsEncode(strm);
03774 }
03775 
03776 
03777 PObject * H225_RasUsageInformation::Clone() const
03778 {
03779 #ifndef PASN_LEANANDMEAN
03780   PAssert(IsClass(H225_RasUsageInformation::Class()), PInvalidCast);
03781 #endif
03782   return new H225_RasUsageInformation(*this);
03783 }
03784 
03785 
03786 //
03787 // BandwidthDetails
03788 //
03789 
03790 H225_BandwidthDetails::H225_BandwidthDetails(unsigned tag, PASN_Object::TagClass tagClass)
03791   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
03792 {
03793 }
03794 
03795 
03796 #ifndef PASN_NOPRINTON
03797 void H225_BandwidthDetails::PrintOn(ostream & strm) const
03798 {
03799   int indent = strm.precision() + 2;
03800   strm << "{\n";
03801   strm << setw(indent+9) << "sender = " << setprecision(indent) << m_sender << '\n';
03802   strm << setw(indent+12) << "multicast = " << setprecision(indent) << m_multicast << '\n';
03803   strm << setw(indent+12) << "bandwidth = " << setprecision(indent) << m_bandwidth << '\n';
03804   strm << setw(indent+16) << "rtcpAddresses = " << setprecision(indent) << m_rtcpAddresses << '\n';
03805   strm << setw(indent-1) << setprecision(indent-2) << "}";
03806 }
03807 #endif
03808 
03809 
03810 PObject::Comparison H225_BandwidthDetails::Compare(const PObject & obj) const
03811 {
03812 #ifndef PASN_LEANANDMEAN
03813   PAssert(PIsDescendant(&obj, H225_BandwidthDetails), PInvalidCast);
03814 #endif
03815   const H225_BandwidthDetails & other = (const H225_BandwidthDetails &)obj;
03816 
03817   Comparison result;
03818 
03819   if ((result = m_sender.Compare(other.m_sender)) != EqualTo)
03820     return result;
03821   if ((result = m_multicast.Compare(other.m_multicast)) != EqualTo)
03822     return result;
03823   if ((result = m_bandwidth.Compare(other.m_bandwidth)) != EqualTo)
03824     return result;
03825   if ((result = m_rtcpAddresses.Compare(other.m_rtcpAddresses)) != EqualTo)
03826     return result;
03827 
03828   return PASN_Sequence::Compare(other);
03829 }
03830 
03831 
03832 PINDEX H225_BandwidthDetails::GetDataLength() const
03833 {
03834   PINDEX length = 0;
03835   length += m_sender.GetObjectLength();
03836   length += m_multicast.GetObjectLength();
03837   length += m_bandwidth.GetObjectLength();
03838   length += m_rtcpAddresses.GetObjectLength();
03839   return length;
03840 }
03841 
03842 
03843 BOOL H225_BandwidthDetails::Decode(PASN_Stream & strm)
03844 {
03845   if (!PreambleDecode(strm))
03846     return FALSE;
03847 
03848   if (!m_sender.Decode(strm))
03849     return FALSE;
03850   if (!m_multicast.Decode(strm))
03851     return FALSE;
03852   if (!m_bandwidth.Decode(strm))
03853     return FALSE;
03854   if (!m_rtcpAddresses.Decode(strm))
03855     return FALSE;
03856 
03857   return UnknownExtensionsDecode(strm);
03858 }
03859 
03860 
03861 void H225_BandwidthDetails::Encode(PASN_Stream & strm) const
03862 {
03863   PreambleEncode(strm);
03864 
03865   m_sender.Encode(strm);
03866   m_multicast.Encode(strm);
03867   m_bandwidth.Encode(strm);
03868   m_rtcpAddresses.Encode(strm);
03869 
03870   UnknownExtensionsEncode(strm);
03871 }
03872 
03873 
03874 PObject * H225_BandwidthDetails::Clone() const
03875 {
03876 #ifndef PASN_LEANANDMEAN
03877   PAssert(IsClass(H225_BandwidthDetails::Class()), PInvalidCast);
03878 #endif
03879   return new H225_BandwidthDetails(*this);
03880 }
03881 
03882 
03883 //
03884 // CallCreditServiceControl
03885 //
03886 
03887 H225_CallCreditServiceControl::H225_CallCreditServiceControl(unsigned tag, PASN_Object::TagClass tagClass)
03888   : PASN_Sequence(tag, tagClass, 5, TRUE, 0)
03889 {
03890   m_amountString.SetConstraints(PASN_Object::FixedConstraint, 1, 512);
03891   m_callDurationLimit.SetConstraints(PASN_Object::FixedConstraint, 1, 4294967295U);
03892 }
03893 
03894 
03895 #ifndef PASN_NOPRINTON
03896 void H225_CallCreditServiceControl::PrintOn(ostream & strm) const
03897 {
03898   int indent = strm.precision() + 2;
03899   strm << "{\n";
03900   if (HasOptionalField(e_amountString))
03901     strm << setw(indent+15) << "amountString = " << setprecision(indent) << m_amountString << '\n';
03902   if (HasOptionalField(e_billingMode))
03903     strm << setw(indent+14) << "billingMode = " << setprecision(indent) << m_billingMode << '\n';
03904   if (HasOptionalField(e_callDurationLimit))
03905     strm << setw(indent+20) << "callDurationLimit = " << setprecision(indent) << m_callDurationLimit << '\n';
03906   if (HasOptionalField(e_enforceCallDurationLimit))
03907     strm << setw(indent+27) << "enforceCallDurationLimit = " << setprecision(indent) << m_enforceCallDurationLimit << '\n';
03908   if (HasOptionalField(e_callStartingPoint))
03909     strm << setw(indent+20) << "callStartingPoint = " << setprecision(indent) << m_callStartingPoint << '\n';
03910   strm << setw(indent-1) << setprecision(indent-2) << "}";
03911 }
03912 #endif
03913 
03914 
03915 PObject::Comparison H225_CallCreditServiceControl::Compare(const PObject & obj) const
03916 {
03917 #ifndef PASN_LEANANDMEAN
03918   PAssert(PIsDescendant(&obj, H225_CallCreditServiceControl), PInvalidCast);
03919 #endif
03920   const H225_CallCreditServiceControl & other = (const H225_CallCreditServiceControl &)obj;
03921 
03922   Comparison result;
03923 
03924   if ((result = m_amountString.Compare(other.m_amountString)) != EqualTo)
03925     return result;
03926   if ((result = m_billingMode.Compare(other.m_billingMode)) != EqualTo)
03927     return result;
03928   if ((result = m_callDurationLimit.Compare(other.m_callDurationLimit)) != EqualTo)
03929     return result;
03930   if ((result = m_enforceCallDurationLimit.Compare(other.m_enforceCallDurationLimit)) != EqualTo)
03931     return result;
03932   if ((result = m_callStartingPoint.Compare(other.m_callStartingPoint)) != EqualTo)
03933     return result;
03934 
03935   return PASN_Sequence::Compare(other);
03936 }
03937 
03938 
03939 PINDEX H225_CallCreditServiceControl::GetDataLength() const
03940 {
03941   PINDEX length = 0;
03942   if (HasOptionalField(e_amountString))
03943     length += m_amountString.GetObjectLength();
03944   if (HasOptionalField(e_billingMode))
03945     length += m_billingMode.GetObjectLength();
03946   if (HasOptionalField(e_callDurationLimit))
03947     length += m_callDurationLimit.GetObjectLength();
03948   if (HasOptionalField(e_enforceCallDurationLimit))
03949     length += m_enforceCallDurationLimit.GetObjectLength();
03950   if (HasOptionalField(e_callStartingPoint))
03951     length += m_callStartingPoint.GetObjectLength();
03952   return length;
03953 }
03954 
03955 
03956 BOOL H225_CallCreditServiceControl::Decode(PASN_Stream & strm)
03957 {
03958   if (!PreambleDecode(strm))
03959     return FALSE;
03960 
03961   if (HasOptionalField(e_amountString) && !m_amountString.Decode(strm))
03962     return FALSE;
03963   if (HasOptionalField(e_billingMode) && !m_billingMode.Decode(strm))
03964     return FALSE;
03965   if (HasOptionalField(e_callDurationLimit) && !m_callDurationLimit.Decode(strm))
03966     return FALSE;
03967   if (HasOptionalField(e_enforceCallDurationLimit) && !m_enforceCallDurationLimit.Decode(strm))
03968     return FALSE;
03969   if (HasOptionalField(e_callStartingPoint) && !m_callStartingPoint.Decode(strm))
03970     return FALSE;
03971 
03972   return UnknownExtensionsDecode(strm);
03973 }
03974 
03975 
03976 void H225_CallCreditServiceControl::Encode(PASN_Stream & strm) const
03977 {
03978   PreambleEncode(strm);
03979 
03980   if (HasOptionalField(e_amountString))
03981     m_amountString.Encode(strm);
03982   if (HasOptionalField(e_billingMode))
03983     m_billingMode.Encode(strm);
03984   if (HasOptionalField(e_callDurationLimit))
03985     m_callDurationLimit.Encode(strm);
03986   if (HasOptionalField(e_enforceCallDurationLimit))
03987     m_enforceCallDurationLimit.Encode(strm);
03988   if (HasOptionalField(e_callStartingPoint))
03989     m_callStartingPoint.Encode(strm);
03990 
03991   UnknownExtensionsEncode(strm);
03992 }
03993 
03994 
03995 PObject * H225_CallCreditServiceControl::Clone() const
03996 {
03997 #ifndef PASN_LEANANDMEAN
03998   PAssert(IsClass(H225_CallCreditServiceControl::Class()), PInvalidCast);
03999 #endif
04000   return new H225_CallCreditServiceControl(*this);
04001 }
04002 
04003 
04004 //
04005 // GenericData
04006 //
04007 
04008 H225_GenericData::H225_GenericData(unsigned tag, PASN_Object::TagClass tagClass)
04009   : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
04010 {
04011   m_parameters.SetConstraints(PASN_Object::FixedConstraint, 1, 512);
04012 }
04013 
04014 
04015 #ifndef PASN_NOPRINTON
04016 void H225_GenericData::PrintOn(ostream & strm) const
04017 {
04018   int indent = strm.precision() + 2;
04019   strm << "{\n";
04020   strm << setw(indent+5) << "id = " << setprecision(indent) << m_id << '\n';
04021   if (HasOptionalField(e_parameters))
04022     strm << setw(indent+13) << "parameters = " << setprecision(indent) << m_parameters << '\n';
04023   strm << setw(indent-1) << setprecision(indent-2) << "}";
04024 }
04025 #endif
04026 
04027 
04028 PObject::Comparison H225_GenericData::Compare(const PObject & obj) const
04029 {
04030 #ifndef PASN_LEANANDMEAN
04031   PAssert(PIsDescendant(&obj, H225_GenericData), PInvalidCast);
04032 #endif
04033   const H225_GenericData & other = (const H225_GenericData &)obj;
04034 
04035   Comparison result;
04036 
04037   if ((result = m_id.Compare(other.m_id)) != EqualTo)
04038     return result;
04039   if ((result = m_parameters.Compare(other.m_parameters)) != EqualTo)
04040     return result;
04041 
04042   return PASN_Sequence::Compare(other);
04043 }
04044 
04045 
04046 PINDEX H225_GenericData::GetDataLength() const
04047 {
04048   PINDEX length = 0;
04049   length += m_id.GetObjectLength();
04050   if (HasOptionalField(e_parameters))
04051     length += m_parameters.GetObjectLength();
04052   return length;
04053 }
04054 
04055 
04056 BOOL H225_GenericData::Decode(PASN_Stream & strm)
04057 {
04058   if (!PreambleDecode(strm))
04059     return FALSE;
04060 
04061   if (!m_id.Decode(strm))
04062     return FALSE;
04063   if (HasOptionalField(e_parameters) && !m_parameters.Decode(strm))
04064     return FALSE;
04065 
04066   return UnknownExtensionsDecode(strm);
04067 }
04068 
04069 
04070 void H225_GenericData::Encode(PASN_Stream & strm) const
04071 {
04072   PreambleEncode(strm);
04073 
04074   m_id.Encode(strm);
04075   if (HasOptionalField(e_parameters))
04076     m_parameters.Encode(strm);
04077 
04078   UnknownExtensionsEncode(strm);
04079 }
04080 
04081 
04082 PObject * H225_GenericData::Clone() const
04083 {
04084 #ifndef PASN_LEANANDMEAN
04085   PAssert(IsClass(H225_GenericData::Class()), PInvalidCast);
04086 #endif
04087   return new H225_GenericData(*this);
04088 }
04089 
04090 
04091 //
04092 // EnumeratedParameter
04093 //
04094 
04095 H225_EnumeratedParameter::H225_EnumeratedParameter(unsigned tag, PASN_Object::TagClass tagClass)
04096   : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
04097 {
04098 }
04099 
04100 
04101 #ifndef PASN_NOPRINTON
04102 void H225_EnumeratedParameter::PrintOn(ostream & strm) const
04103 {
04104   int indent = strm.precision() + 2;
04105   strm << "{\n";
04106   strm << setw(indent+5) << "id = " << setprecision(indent) << m_id << '\n';
04107   if (HasOptionalField(e_content))
04108     strm << setw(indent+10) << "content = " << setprecision(indent) << m_content << '\n';
04109   strm << setw(indent-1) << setprecision(indent-2) << "}";
04110 }
04111 #endif
04112 
04113 
04114 PObject::Comparison H225_EnumeratedParameter::Compare(const PObject & obj) const
04115 {
04116 #ifndef PASN_LEANANDMEAN
04117   PAssert(PIsDescendant(&obj, H225_EnumeratedParameter), PInvalidCast);
04118 #endif
04119   const H225_EnumeratedParameter & other = (const H225_EnumeratedParameter &)obj;
04120 
04121   Comparison result;
04122 
04123   if ((result = m_id.Compare(other.m_id)) != EqualTo)
04124     return result;
04125   if ((result = m_content.Compare(other.m_content)) != EqualTo)
04126     return result;
04127 
04128   return PASN_Sequence::Compare(other);
04129 }
04130 
04131 
04132 PINDEX H225_EnumeratedParameter::GetDataLength() const
04133 {
04134   PINDEX length = 0;
04135   length += m_id.GetObjectLength();
04136   if (HasOptionalField(e_content))
04137     length += m_content.GetObjectLength();
04138   return length;
04139 }
04140 
04141 
04142 BOOL H225_EnumeratedParameter::Decode(PASN_Stream & strm)
04143 {
04144   if (!PreambleDecode(strm))
04145     return FALSE;
04146 
04147   if (!m_id.Decode(strm))
04148     return FALSE;
04149   if (HasOptionalField(e_content) && !m_content.Decode(strm))
04150     return FALSE;
04151 
04152   return UnknownExtensionsDecode(strm);
04153 }
04154 
04155 
04156 void H225_EnumeratedParameter::Encode(PASN_Stream & strm) const
04157 {
04158   PreambleEncode(strm);
04159 
04160   m_id.Encode(strm);
04161   if (HasOptionalField(e_content))
04162     m_content.Encode(strm);
04163 
04164   UnknownExtensionsEncode(strm);
04165 }
04166 
04167 
04168 PObject * H225_EnumeratedParameter::Clone() const
04169 {
04170 #ifndef PASN_LEANANDMEAN
04171   PAssert(IsClass(H225_EnumeratedParameter::Class()), PInvalidCast);
04172 #endif
04173   return new H225_EnumeratedParameter(*this);
04174 }
04175 
04176 
04177 //
04178 // FeatureSet
04179 //
04180 
04181 H225_FeatureSet::H225_FeatureSet(unsigned tag, PASN_Object::TagClass tagClass)
04182   : PASN_Sequence(tag, tagClass, 3, TRUE, 0)
04183 {
04184 }
04185 
04186 
04187 #ifndef PASN_NOPRINTON
04188 void H225_FeatureSet::PrintOn(ostream & strm) const
04189 {
04190   int indent = strm.precision() + 2;
04191   strm << "{\n";
04192   strm << setw(indent+24) << "replacementFeatureSet = " << setprecision(indent) << m_replacementFeatureSet << '\n';
04193   if (HasOptionalField(e_neededFeatures))
04194     strm << setw(indent+17) << "neededFeatures = " << setprecision(indent) << m_neededFeatures << '\n';
04195   if (HasOptionalField(e_desiredFeatures))
04196     strm << setw(indent+18) << "desiredFeatures = " << setprecision(indent) << m_desiredFeatures << '\n';
04197   if (HasOptionalField(e_supportedFeatures))
04198     strm << setw(indent+20) << "supportedFeatures = " << setprecision(indent) << m_supportedFeatures << '\n';
04199   strm << setw(indent-1) << setprecision(indent-2) << "}";
04200 }
04201 #endif
04202 
04203 
04204 PObject::Comparison H225_FeatureSet::Compare(const PObject & obj) const
04205 {
04206 #ifndef PASN_LEANANDMEAN
04207   PAssert(PIsDescendant(&obj, H225_FeatureSet), PInvalidCast);
04208 #endif
04209   const H225_FeatureSet & other = (const H225_FeatureSet &)obj;
04210 
04211   Comparison result;
04212 
04213   if ((result = m_replacementFeatureSet.Compare(other.m_replacementFeatureSet)) != EqualTo)
04214     return result;
04215   if ((result = m_neededFeatures.Compare(other.m_neededFeatures)) != EqualTo)
04216     return result;
04217   if ((result = m_desiredFeatures.Compare(other.m_desiredFeatures)) != EqualTo)
04218     return result;
04219   if ((result = m_supportedFeatures.Compare(other.m_supportedFeatures)) != EqualTo)
04220     return result;
04221 
04222   return PASN_Sequence::Compare(other);
04223 }
04224 
04225 
04226 PINDEX H225_FeatureSet::GetDataLength() const
04227 {
04228   PINDEX length = 0;
04229   length += m_replacementFeatureSet.GetObjectLength();
04230   if (HasOptionalField(e_neededFeatures))
04231     length += m_neededFeatures.GetObjectLength();
04232   if (HasOptionalField(e_desiredFeatures))
04233     length += m_desiredFeatures.GetObjectLength();
04234   if (HasOptionalField(e_supportedFeatures))
04235     length += m_supportedFeatures.GetObjectLength();
04236   return length;
04237 }
04238 
04239 
04240 BOOL H225_FeatureSet::Decode(PASN_Stream & strm)
04241 {
04242   if (!PreambleDecode(strm))
04243     return FALSE;
04244 
04245   if (!m_replacementFeatureSet.Decode(strm))
04246     return FALSE;
04247   if (HasOptionalField(e_neededFeatures) && !m_neededFeatures.Decode(strm))
04248     return FALSE;
04249   if (HasOptionalField(e_desiredFeatures) && !m_desiredFeatures.Decode(strm))
04250     return FALSE;
04251   if (HasOptionalField(e_supportedFeatures) && !m_supportedFeatures.Decode(strm))
04252     return FALSE;
04253 
04254   return UnknownExtensionsDecode(strm);
04255 }
04256 
04257 
04258 void H225_FeatureSet::Encode(PASN_Stream & strm) const
04259 {
04260   PreambleEncode(strm);
04261 
04262   m_replacementFeatureSet.Encode(strm);
04263   if (HasOptionalField(e_neededFeatures))
04264     m_neededFeatures.Encode(strm);
04265   if (HasOptionalField(e_desiredFeatures))
04266     m_desiredFeatures.Encode(strm);
04267   if (HasOptionalField(e_supportedFeatures))
04268     m_supportedFeatures.Encode(strm);
04269 
04270   UnknownExtensionsEncode(strm);
04271 }
04272 
04273 
04274 PObject * H225_FeatureSet::Clone() const
04275 {
04276 #ifndef PASN_LEANANDMEAN
04277   PAssert(IsClass(H225_FeatureSet::Class()), PInvalidCast);
04278 #endif
04279   return new H225_FeatureSet(*this);
04280 }
04281 
04282 
04283 //
04284 // RTPSession
04285 //
04286 
04287 H225_RTPSession::H225_RTPSession(unsigned tag, PASN_Object::TagClass tagClass)
04288   : PASN_Sequence(tag, tagClass, 0, TRUE, 2)
04289 {
04290   m_ssrc.SetConstraints(PASN_Object::FixedConstraint, 1, 4294967295U);
04291   m_sessionId.SetConstraints(PASN_Object::FixedConstraint, 1, 255);
04292 }
04293 
04294 
04295 #ifndef PASN_NOPRINTON
04296 void H225_RTPSession::PrintOn(ostream & strm) const
04297 {
04298   int indent = strm.precision() + 2;
04299   strm << "{\n";
04300   strm << setw(indent+13) << "rtpAddress = " << setprecision(indent) << m_rtpAddress << '\n';
04301   strm << setw(indent+14) << "rtcpAddress = " << setprecision(indent) << m_rtcpAddress << '\n';
04302   strm << setw(indent+8) << "cname = " << setprecision(indent) << m_cname << '\n';
04303   strm << setw(indent+7) << "ssrc = " << setprecision(indent) << m_ssrc << '\n';
04304   strm << setw(indent+12) << "sessionId = " << setprecision(indent) << m_sessionId << '\n';
04305   strm << setw(indent+23) << "associatedSessionIds = " << setprecision(indent) << m_associatedSessionIds << '\n';
04306   if (HasOptionalField(e_multicast))
04307     strm << setw(indent+12) << "multicast = " << setprecision(indent) << m_multicast << '\n';
04308   if (HasOptionalField(e_bandwidth))
04309     strm << setw(indent+12) << "bandwidth = " << setprecision(indent) << m_bandwidth << '\n';
04310   strm << setw(indent-1) << setprecision(indent-2) << "}";
04311 }
04312 #endif
04313 
04314 
04315 PObject::Comparison H225_RTPSession::Compare(const PObject & obj) const
04316 {
04317 #ifndef PASN_LEANANDMEAN
04318   PAssert(PIsDescendant(&obj, H225_RTPSession), PInvalidCast);
04319 #endif
04320   const H225_RTPSession & other = (const H225_RTPSession &)obj;
04321 
04322   Comparison result;
04323 
04324   if ((result = m_rtpAddress.Compare(other.m_rtpAddress)) != EqualTo)
04325     return result;
04326   if ((result = m_rtcpAddress.Compare(other.m_rtcpAddress)) != EqualTo)
04327     return result;
04328   if ((result = m_cname.Compare(other.m_cname)) != EqualTo)
04329     return result;
04330   if ((result = m_ssrc.Compare(other.m_ssrc)) != EqualTo)
04331     return result;
04332   if ((result = m_sessionId.Compare(other.m_sessionId)) != EqualTo)
04333     return result;
04334   if ((result = m_associatedSessionIds.Compare(other.m_associatedSessionIds)) != EqualTo)
04335     return result;
04336 
04337   return PASN_Sequence::Compare(other);
04338 }
04339 
04340 
04341 PINDEX H225_RTPSession::GetDataLength() const
04342 {
04343   PINDEX length = 0;
04344   length +=