D:/Storage/CVS_Head/h323plus/include/h225.h

00001 //
00002 // h225.h
00003 //
00004 // Code automatically generated by asnparse.
00005 //
00006 
00007 #if ! H323_DISABLE_H225
00008 
00009 #ifndef __H225_H
00010 #define __H225_H
00011 
00012 #ifdef P_USE_PRAGMA
00013 #pragma interface
00014 #endif
00015 
00016 #include <ptclib/asner.h>
00017 
00018 #include "h235.h"
00019 #include "h245.h"
00020 
00021 
00022 //
00023 // ReleaseCompleteReason
00024 //
00025 
00026 class H225_NonStandardParameter;
00027 class H225_ConferenceIdentifier;
00028 class H225_SecurityErrors;
00029 
00030 class H225_ReleaseCompleteReason : public PASN_Choice
00031 {
00032 #ifndef PASN_LEANANDMEAN
00033     PCLASSINFO(H225_ReleaseCompleteReason, PASN_Choice);
00034 #endif
00035   public:
00036     H225_ReleaseCompleteReason(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00037 
00038     enum Choices {
00039       e_noBandwidth,
00040       e_gatekeeperResources,
00041       e_unreachableDestination,
00042       e_destinationRejection,
00043       e_invalidRevision,
00044       e_noPermission,
00045       e_unreachableGatekeeper,
00046       e_gatewayResources,
00047       e_badFormatAddress,
00048       e_adaptiveBusy,
00049       e_inConf,
00050       e_undefinedReason,
00051       e_facilityCallDeflection,
00052       e_securityDenied,
00053       e_calledPartyNotRegistered,
00054       e_callerNotRegistered,
00055       e_newConnectionNeeded,
00056       e_nonStandardReason,
00057       e_replaceWithConferenceInvite,
00058       e_genericDataReason,
00059       e_neededFeatureNotSupported,
00060       e_tunnelledSignallingRejected,
00061       e_invalidCID,
00062       e_securityError,
00063       e_hopCountExceeded
00064     };
00065 
00066 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00067     operator H225_NonStandardParameter &() const;
00068 #else
00069     operator H225_NonStandardParameter &();
00070     operator const H225_NonStandardParameter &() const;
00071 #endif
00072 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00073     operator H225_ConferenceIdentifier &() const;
00074 #else
00075     operator H225_ConferenceIdentifier &();
00076     operator const H225_ConferenceIdentifier &() const;
00077 #endif
00078 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00079     operator H225_SecurityErrors &() const;
00080 #else
00081     operator H225_SecurityErrors &();
00082     operator const H225_SecurityErrors &() const;
00083 #endif
00084 
00085     BOOL CreateObject();
00086     PObject * Clone() const;
00087 };
00088 
00089 
00090 //
00091 // ScnConnectionType
00092 //
00093 
00094 class H225_ScnConnectionType : public PASN_Choice
00095 {
00096 #ifndef PASN_LEANANDMEAN
00097     PCLASSINFO(H225_ScnConnectionType, PASN_Choice);
00098 #endif
00099   public:
00100     H225_ScnConnectionType(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00101 
00102     enum Choices {
00103       e_unknown,
00104       e_bChannel,
00105       e_hybrid2x64,
00106       e_hybrid384,
00107       e_hybrid1536,
00108       e_hybrid1920,
00109       e_multirate
00110     };
00111 
00112     BOOL CreateObject();
00113     PObject * Clone() const;
00114 };
00115 
00116 
00117 //
00118 // ScnConnectionAggregation
00119 //
00120 
00121 class H225_ScnConnectionAggregation : public PASN_Choice
00122 {
00123 #ifndef PASN_LEANANDMEAN
00124     PCLASSINFO(H225_ScnConnectionAggregation, PASN_Choice);
00125 #endif
00126   public:
00127     H225_ScnConnectionAggregation(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00128 
00129     enum Choices {
00130       e_auto,
00131       e_none,
00132       e_h221,
00133       e_bonded_mode1,
00134       e_bonded_mode2,
00135       e_bonded_mode3
00136     };
00137 
00138     BOOL CreateObject();
00139     PObject * Clone() const;
00140 };
00141 
00142 
00143 //
00144 // PresentationIndicator
00145 //
00146 
00147 class H225_PresentationIndicator : public PASN_Choice
00148 {
00149 #ifndef PASN_LEANANDMEAN
00150     PCLASSINFO(H225_PresentationIndicator, PASN_Choice);
00151 #endif
00152   public:
00153     H225_PresentationIndicator(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00154 
00155     enum Choices {
00156       e_presentationAllowed,
00157       e_presentationRestricted,
00158       e_addressNotAvailable
00159     };
00160 
00161     BOOL CreateObject();
00162     PObject * Clone() const;
00163 };
00164 
00165 
00166 //
00167 // ScreeningIndicator
00168 //
00169 
00170 class H225_ScreeningIndicator : public PASN_Enumeration
00171 {
00172 #ifndef PASN_LEANANDMEAN
00173     PCLASSINFO(H225_ScreeningIndicator, PASN_Enumeration);
00174 #endif
00175   public:
00176     H225_ScreeningIndicator(unsigned tag = UniversalEnumeration, TagClass tagClass = UniversalTagClass);
00177 
00178     enum Enumerations {
00179       e_userProvidedNotScreened,
00180       e_userProvidedVerifiedAndPassed,
00181       e_userProvidedVerifiedAndFailed,
00182       e_networkProvided
00183     };
00184 
00185     H225_ScreeningIndicator & operator=(unsigned v);
00186     PObject * Clone() const;
00187 };
00188 
00189 
00190 //
00191 // FacilityReason
00192 //
00193 
00194 class H225_FacilityReason : public PASN_Choice
00195 {
00196 #ifndef PASN_LEANANDMEAN
00197     PCLASSINFO(H225_FacilityReason, PASN_Choice);
00198 #endif
00199   public:
00200     H225_FacilityReason(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00201 
00202     enum Choices {
00203       e_routeCallToGatekeeper,
00204       e_callForwarded,
00205       e_routeCallToMC,
00206       e_undefinedReason,
00207       e_conferenceListChoice,
00208       e_startH245,
00209       e_noH245,
00210       e_newTokens,
00211       e_featureSetUpdate,
00212       e_forwardedElements,
00213       e_transportedInformation
00214     };
00215 
00216     BOOL CreateObject();
00217     PObject * Clone() const;
00218 };
00219 
00220 
00221 //
00222 // TransportAddress
00223 //
00224 
00225 class H225_TransportAddress_ipAddress;
00226 class H225_TransportAddress_ipSourceRoute;
00227 class H225_TransportAddress_ipxAddress;
00228 class H225_TransportAddress_ip6Address;
00229 class H225_NonStandardParameter;
00230 
00231 class H225_TransportAddress : public PASN_Choice
00232 {
00233 #ifndef PASN_LEANANDMEAN
00234     PCLASSINFO(H225_TransportAddress, PASN_Choice);
00235 #endif
00236   public:
00237     H225_TransportAddress(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00238 
00239     enum Choices {
00240       e_ipAddress,
00241       e_ipSourceRoute,
00242       e_ipxAddress,
00243       e_ip6Address,
00244       e_netBios,
00245       e_nsap,
00246       e_nonStandardAddress
00247     };
00248 
00249 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00250     operator H225_TransportAddress_ipAddress &() const;
00251 #else
00252     operator H225_TransportAddress_ipAddress &();
00253     operator const H225_TransportAddress_ipAddress &() const;
00254 #endif
00255 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00256     operator H225_TransportAddress_ipSourceRoute &() const;
00257 #else
00258     operator H225_TransportAddress_ipSourceRoute &();
00259     operator const H225_TransportAddress_ipSourceRoute &() const;
00260 #endif
00261 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00262     operator H225_TransportAddress_ipxAddress &() const;
00263 #else
00264     operator H225_TransportAddress_ipxAddress &();
00265     operator const H225_TransportAddress_ipxAddress &() const;
00266 #endif
00267 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00268     operator H225_TransportAddress_ip6Address &() const;
00269 #else
00270     operator H225_TransportAddress_ip6Address &();
00271     operator const H225_TransportAddress_ip6Address &() const;
00272 #endif
00273 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00274     operator H225_NonStandardParameter &() const;
00275 #else
00276     operator H225_NonStandardParameter &();
00277     operator const H225_NonStandardParameter &() const;
00278 #endif
00279 
00280     BOOL CreateObject();
00281     PObject * Clone() const;
00282 };
00283 
00284 
00285 //
00286 // SupportedProtocols
00287 //
00288 
00289 class H225_NonStandardParameter;
00290 class H225_H310Caps;
00291 class H225_H320Caps;
00292 class H225_H321Caps;
00293 class H225_H322Caps;
00294 class H225_H323Caps;
00295 class H225_H324Caps;
00296 class H225_VoiceCaps;
00297 class H225_T120OnlyCaps;
00298 class H225_NonStandardProtocol;
00299 class H225_T38FaxAnnexbOnlyCaps;
00300 class H225_SIPCaps;
00301 
00302 class H225_SupportedProtocols : public PASN_Choice
00303 {
00304 #ifndef PASN_LEANANDMEAN
00305     PCLASSINFO(H225_SupportedProtocols, PASN_Choice);
00306 #endif
00307   public:
00308     H225_SupportedProtocols(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00309 
00310     enum Choices {
00311       e_nonStandardData,
00312       e_h310,
00313       e_h320,
00314       e_h321,
00315       e_h322,
00316       e_h323,
00317       e_h324,
00318       e_voice,
00319       e_t120_only,
00320       e_nonStandardProtocol,
00321       e_t38FaxAnnexbOnly,
00322       e_sip
00323     };
00324 
00325 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00326     operator H225_NonStandardParameter &() const;
00327 #else
00328     operator H225_NonStandardParameter &();
00329     operator const H225_NonStandardParameter &() const;
00330 #endif
00331 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00332     operator H225_H310Caps &() const;
00333 #else
00334     operator H225_H310Caps &();
00335     operator const H225_H310Caps &() const;
00336 #endif
00337 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00338     operator H225_H320Caps &() const;
00339 #else
00340     operator H225_H320Caps &();
00341     operator const H225_H320Caps &() const;
00342 #endif
00343 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00344     operator H225_H321Caps &() const;
00345 #else
00346     operator H225_H321Caps &();
00347     operator const H225_H321Caps &() const;
00348 #endif
00349 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00350     operator H225_H322Caps &() const;
00351 #else
00352     operator H225_H322Caps &();
00353     operator const H225_H322Caps &() const;
00354 #endif
00355 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00356     operator H225_H323Caps &() const;
00357 #else
00358     operator H225_H323Caps &();
00359     operator const H225_H323Caps &() const;
00360 #endif
00361 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00362     operator H225_H324Caps &() const;
00363 #else
00364     operator H225_H324Caps &();
00365     operator const H225_H324Caps &() const;
00366 #endif
00367 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00368     operator H225_VoiceCaps &() const;
00369 #else
00370     operator H225_VoiceCaps &();
00371     operator const H225_VoiceCaps &() const;
00372 #endif
00373 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00374     operator H225_T120OnlyCaps &() const;
00375 #else
00376     operator H225_T120OnlyCaps &();
00377     operator const H225_T120OnlyCaps &() const;
00378 #endif
00379 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00380     operator H225_NonStandardProtocol &() const;
00381 #else
00382     operator H225_NonStandardProtocol &();
00383     operator const H225_NonStandardProtocol &() const;
00384 #endif
00385 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00386     operator H225_T38FaxAnnexbOnlyCaps &() const;
00387 #else
00388     operator H225_T38FaxAnnexbOnlyCaps &();
00389     operator const H225_T38FaxAnnexbOnlyCaps &() const;
00390 #endif
00391 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00392     operator H225_SIPCaps &() const;
00393 #else
00394     operator H225_SIPCaps &();
00395     operator const H225_SIPCaps &() const;
00396 #endif
00397 
00398     BOOL CreateObject();
00399     PObject * Clone() const;
00400 };
00401 
00402 
00403 //
00404 // H221NonStandard
00405 //
00406 
00407 class H225_H221NonStandard : public PASN_Sequence
00408 {
00409 #ifndef PASN_LEANANDMEAN
00410     PCLASSINFO(H225_H221NonStandard, PASN_Sequence);
00411 #endif
00412   public:
00413     H225_H221NonStandard(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00414 
00415     PASN_Integer m_t35CountryCode;
00416     PASN_Integer m_t35Extension;
00417     PASN_Integer m_manufacturerCode;
00418 
00419     PINDEX GetDataLength() const;
00420     BOOL Decode(PASN_Stream & strm);
00421     void Encode(PASN_Stream & strm) const;
00422 #ifndef PASN_NOPRINTON
00423     void PrintOn(ostream & strm) const;
00424 #endif
00425     Comparison Compare(const PObject & obj) const;
00426     PObject * Clone() const;
00427 };
00428 
00429 
00430 //
00431 // TunnelledProtocolAlternateIdentifier
00432 //
00433 
00434 class H225_TunnelledProtocolAlternateIdentifier : public PASN_Sequence
00435 {
00436 #ifndef PASN_LEANANDMEAN
00437     PCLASSINFO(H225_TunnelledProtocolAlternateIdentifier, PASN_Sequence);
00438 #endif
00439   public:
00440     H225_TunnelledProtocolAlternateIdentifier(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00441 
00442     enum OptionalFields {
00443       e_protocolVariant
00444     };
00445 
00446     PASN_IA5String m_protocolType;
00447     PASN_IA5String m_protocolVariant;
00448 
00449     PINDEX GetDataLength() const;
00450     BOOL Decode(PASN_Stream & strm);
00451     void Encode(PASN_Stream & strm) const;
00452 #ifndef PASN_NOPRINTON
00453     void PrintOn(ostream & strm) const;
00454 #endif
00455     Comparison Compare(const PObject & obj) const;
00456     PObject * Clone() const;
00457 };
00458 
00459 
00460 //
00461 // NonStandardIdentifier
00462 //
00463 
00464 class H225_H221NonStandard;
00465 
00466 class H225_NonStandardIdentifier : public PASN_Choice
00467 {
00468 #ifndef PASN_LEANANDMEAN
00469     PCLASSINFO(H225_NonStandardIdentifier, PASN_Choice);
00470 #endif
00471   public:
00472     H225_NonStandardIdentifier(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00473 
00474     enum Choices {
00475       e_object,
00476       e_h221NonStandard
00477     };
00478 
00479 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00480     operator H225_H221NonStandard &() const;
00481 #else
00482     operator H225_H221NonStandard &();
00483     operator const H225_H221NonStandard &() const;
00484 #endif
00485 
00486     BOOL CreateObject();
00487     PObject * Clone() const;
00488 };
00489 
00490 
00491 //
00492 // AliasAddress
00493 //
00494 
00495 class H225_TransportAddress;
00496 class H225_PartyNumber;
00497 class H225_MobileUIM;
00498 class H225_IsupNumber;
00499 
00500 class H225_AliasAddress : public PASN_Choice
00501 {
00502 #ifndef PASN_LEANANDMEAN
00503     PCLASSINFO(H225_AliasAddress, PASN_Choice);
00504 #endif
00505   public:
00506     H225_AliasAddress(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00507 
00508     enum Choices {
00509       e_dialedDigits,
00510       e_h323_ID,
00511       e_url_ID,
00512       e_transportID,
00513       e_email_ID,
00514       e_partyNumber,
00515       e_mobileUIM,
00516       e_isupNumber
00517     };
00518 
00519 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00520     operator H225_TransportAddress &() const;
00521 #else
00522     operator H225_TransportAddress &();
00523     operator const H225_TransportAddress &() const;
00524 #endif
00525 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00526     operator H225_PartyNumber &() const;
00527 #else
00528     operator H225_PartyNumber &();
00529     operator const H225_PartyNumber &() const;
00530 #endif
00531 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00532     operator H225_MobileUIM &() const;
00533 #else
00534     operator H225_MobileUIM &();
00535     operator const H225_MobileUIM &() const;
00536 #endif
00537 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00538     operator H225_IsupNumber &() const;
00539 #else
00540     operator H225_IsupNumber &();
00541     operator const H225_IsupNumber &() const;
00542 #endif
00543 
00544     BOOL CreateObject();
00545     PObject * Clone() const;
00546 };
00547 
00548 
00549 //
00550 // AddressPattern
00551 //
00552 
00553 class H225_AliasAddress;
00554 class H225_AddressPattern_range;
00555 
00556 class H225_AddressPattern : public PASN_Choice
00557 {
00558 #ifndef PASN_LEANANDMEAN
00559     PCLASSINFO(H225_AddressPattern, PASN_Choice);
00560 #endif
00561   public:
00562     H225_AddressPattern(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00563 
00564     enum Choices {
00565       e_wildcard,
00566       e_range
00567     };
00568 
00569 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00570     operator H225_AliasAddress &() const;
00571 #else
00572     operator H225_AliasAddress &();
00573     operator const H225_AliasAddress &() const;
00574 #endif
00575 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00576     operator H225_AddressPattern_range &() const;
00577 #else
00578     operator H225_AddressPattern_range &();
00579     operator const H225_AddressPattern_range &() const;
00580 #endif
00581 
00582     BOOL CreateObject();
00583     PObject * Clone() const;
00584 };
00585 
00586 
00587 //
00588 // PartyNumber
00589 //
00590 
00591 class H225_PublicPartyNumber;
00592 class H225_NumberDigits;
00593 class H225_PrivatePartyNumber;
00594 
00595 class H225_PartyNumber : public PASN_Choice
00596 {
00597 #ifndef PASN_LEANANDMEAN
00598     PCLASSINFO(H225_PartyNumber, PASN_Choice);
00599 #endif
00600   public:
00601     H225_PartyNumber(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00602 
00603     enum Choices {
00604       e_e164Number,
00605       e_dataPartyNumber,
00606       e_telexPartyNumber,
00607       e_privateNumber,
00608       e_nationalStandardPartyNumber
00609     };
00610 
00611 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00612     operator H225_PublicPartyNumber &() const;
00613 #else
00614     operator H225_PublicPartyNumber &();
00615     operator const H225_PublicPartyNumber &() const;
00616 #endif
00617 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00618     operator H225_NumberDigits &() const;
00619 #else
00620     operator H225_NumberDigits &();
00621     operator const H225_NumberDigits &() const;
00622 #endif
00623 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00624     operator H225_PrivatePartyNumber &() const;
00625 #else
00626     operator H225_PrivatePartyNumber &();
00627     operator const H225_PrivatePartyNumber &() const;
00628 #endif
00629 
00630     BOOL CreateObject();
00631     PObject * Clone() const;
00632 };
00633 
00634 
00635 //
00636 // NumberDigits
00637 //
00638 
00639 class H225_NumberDigits : public PASN_IA5String
00640 {
00641 #ifndef PASN_LEANANDMEAN
00642     PCLASSINFO(H225_NumberDigits, PASN_IA5String);
00643 #endif
00644   public:
00645     H225_NumberDigits(unsigned tag = UniversalIA5String, TagClass tagClass = UniversalTagClass);
00646 
00647     H225_NumberDigits & operator=(const char * v);
00648     H225_NumberDigits & operator=(const PString & v);
00649     PObject * Clone() const;
00650 };
00651 
00652 
00653 //
00654 // PublicTypeOfNumber
00655 //
00656 
00657 class H225_PublicTypeOfNumber : public PASN_Choice
00658 {
00659 #ifndef PASN_LEANANDMEAN
00660     PCLASSINFO(H225_PublicTypeOfNumber, PASN_Choice);
00661 #endif
00662   public:
00663     H225_PublicTypeOfNumber(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00664 
00665     enum Choices {
00666       e_unknown,
00667       e_internationalNumber,
00668       e_nationalNumber,
00669       e_networkSpecificNumber,
00670       e_subscriberNumber,
00671       e_abbreviatedNumber
00672     };
00673 
00674     BOOL CreateObject();
00675     PObject * Clone() const;
00676 };
00677 
00678 
00679 //
00680 // PrivateTypeOfNumber
00681 //
00682 
00683 class H225_PrivateTypeOfNumber : public PASN_Choice
00684 {
00685 #ifndef PASN_LEANANDMEAN
00686     PCLASSINFO(H225_PrivateTypeOfNumber, PASN_Choice);
00687 #endif
00688   public:
00689     H225_PrivateTypeOfNumber(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00690 
00691     enum Choices {
00692       e_unknown,
00693       e_level2RegionalNumber,
00694       e_level1RegionalNumber,
00695       e_pISNSpecificNumber,
00696       e_localNumber,
00697       e_abbreviatedNumber
00698     };
00699 
00700     BOOL CreateObject();
00701     PObject * Clone() const;
00702 };
00703 
00704 
00705 //
00706 // MobileUIM
00707 //
00708 
00709 class H225_ANSI_41_UIM;
00710 class H225_GSM_UIM;
00711 
00712 class H225_MobileUIM : public PASN_Choice
00713 {
00714 #ifndef PASN_LEANANDMEAN
00715     PCLASSINFO(H225_MobileUIM, PASN_Choice);
00716 #endif
00717   public:
00718     H225_MobileUIM(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00719 
00720     enum Choices {
00721       e_ansi_41_uim,
00722       e_gsm_uim
00723     };
00724 
00725 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00726     operator H225_ANSI_41_UIM &() const;
00727 #else
00728     operator H225_ANSI_41_UIM &();
00729     operator const H225_ANSI_41_UIM &() const;
00730 #endif
00731 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00732     operator H225_GSM_UIM &() const;
00733 #else
00734     operator H225_GSM_UIM &();
00735     operator const H225_GSM_UIM &() const;
00736 #endif
00737 
00738     BOOL CreateObject();
00739     PObject * Clone() const;
00740 };
00741 
00742 
00743 //
00744 // TBCD-STRING
00745 //
00746 
00747 class H225_TBCD_STRING : public PASN_IA5String
00748 {
00749 #ifndef PASN_LEANANDMEAN
00750     PCLASSINFO(H225_TBCD_STRING, PASN_IA5String);
00751 #endif
00752   public:
00753     H225_TBCD_STRING(unsigned tag = UniversalIA5String, TagClass tagClass = UniversalTagClass);
00754 
00755     H225_TBCD_STRING & operator=(const char * v);
00756     H225_TBCD_STRING & operator=(const PString & v);
00757     PObject * Clone() const;
00758 };
00759 
00760 
00761 //
00762 // GSM-UIM
00763 //
00764 
00765 class H225_GSM_UIM : public PASN_Sequence
00766 {
00767 #ifndef PASN_LEANANDMEAN
00768     PCLASSINFO(H225_GSM_UIM, PASN_Sequence);
00769 #endif
00770   public:
00771     H225_GSM_UIM(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00772 
00773     enum OptionalFields {
00774       e_imsi,
00775       e_tmsi,
00776       e_msisdn,
00777       e_imei,
00778       e_hplmn,
00779       e_vplmn
00780     };
00781 
00782     PASN_IA5String m_imsi;
00783     PASN_OctetString m_tmsi;
00784     PASN_IA5String m_msisdn;
00785     PASN_IA5String m_imei;
00786     PASN_IA5String m_hplmn;
00787     PASN_IA5String m_vplmn;
00788 
00789     PINDEX GetDataLength() const;
00790     BOOL Decode(PASN_Stream & strm);
00791     void Encode(PASN_Stream & strm) const;
00792 #ifndef PASN_NOPRINTON
00793     void PrintOn(ostream & strm) const;
00794 #endif
00795     Comparison Compare(const PObject & obj) const;
00796     PObject * Clone() const;
00797 };
00798 
00799 
00800 //
00801 // IsupNumber
00802 //
00803 
00804 class H225_IsupPublicPartyNumber;
00805 class H225_IsupDigits;
00806 class H225_IsupPrivatePartyNumber;
00807 
00808 class H225_IsupNumber : public PASN_Choice
00809 {
00810 #ifndef PASN_LEANANDMEAN
00811     PCLASSINFO(H225_IsupNumber, PASN_Choice);
00812 #endif
00813   public:
00814     H225_IsupNumber(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00815 
00816     enum Choices {
00817       e_e164Number,
00818       e_dataPartyNumber,
00819       e_telexPartyNumber,
00820       e_privateNumber,
00821       e_nationalStandardPartyNumber
00822     };
00823 
00824 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00825     operator H225_IsupPublicPartyNumber &() const;
00826 #else
00827     operator H225_IsupPublicPartyNumber &();
00828     operator const H225_IsupPublicPartyNumber &() const;
00829 #endif
00830 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00831     operator H225_IsupDigits &() const;
00832 #else
00833     operator H225_IsupDigits &();
00834     operator const H225_IsupDigits &() const;
00835 #endif
00836 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00837     operator H225_IsupPrivatePartyNumber &() const;
00838 #else
00839     operator H225_IsupPrivatePartyNumber &();
00840     operator const H225_IsupPrivatePartyNumber &() const;
00841 #endif
00842 
00843     BOOL CreateObject();
00844     PObject * Clone() const;
00845 };
00846 
00847 
00848 //
00849 // NatureOfAddress
00850 //
00851 
00852 class H225_NatureOfAddress : public PASN_Choice
00853 {
00854 #ifndef PASN_LEANANDMEAN
00855     PCLASSINFO(H225_NatureOfAddress, PASN_Choice);
00856 #endif
00857   public:
00858     H225_NatureOfAddress(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00859 
00860     enum Choices {
00861       e_unknown,
00862       e_subscriberNumber,
00863       e_nationalNumber,
00864       e_internationalNumber,
00865       e_networkSpecificNumber,
00866       e_routingNumberNationalFormat,
00867       e_routingNumberNetworkSpecificFormat,
00868       e_routingNumberWithCalledDirectoryNumber
00869     };
00870 
00871     BOOL CreateObject();
00872     PObject * Clone() const;
00873 };
00874 
00875 
00876 //
00877 // IsupDigits
00878 //
00879 
00880 class H225_IsupDigits : public PASN_IA5String
00881 {
00882 #ifndef PASN_LEANANDMEAN
00883     PCLASSINFO(H225_IsupDigits, PASN_IA5String);
00884 #endif
00885   public:
00886     H225_IsupDigits(unsigned tag = UniversalIA5String, TagClass tagClass =