00001
00002
00003
00004
00005
00006
00007 #include <opal/buildopts.h>
00008
00009 #if ! H323_DISABLE_H4504
00010
00011 #ifndef __H4504_H
00012 #define __H4504_H
00013
00014 #ifdef P_USE_PRAGMA
00015 #pragma interface
00016 #endif
00017
00018 #include <ptclib/asner.h>
00019
00020 #include "h4501.h"
00021 #include "h4501.h"
00022 #include "h225.h"
00023
00024
00025
00026
00027
00028
00029 class H4504_CallHoldOperation : public PASN_Enumeration
00030 {
00031 #ifndef PASN_LEANANDMEAN
00032 PCLASSINFO(H4504_CallHoldOperation, PASN_Enumeration);
00033 #endif
00034 public:
00035 H4504_CallHoldOperation(unsigned tag = UniversalEnumeration, TagClass tagClass = UniversalTagClass);
00036
00037 enum Enumerations {
00038 e_holdNotific = 101,
00039 e_retrieveNotific,
00040 e_remoteHold,
00041 e_remoteRetrieve
00042 };
00043
00044 H4504_CallHoldOperation & operator=(unsigned v);
00045 PObject * Clone() const;
00046 };
00047
00048
00049
00050
00051
00052
00053 class H4501_Extension;
00054 class H225_NonStandardParameter;
00055
00056 class H4504_MixedExtension : public PASN_Choice
00057 {
00058 #ifndef PASN_LEANANDMEAN
00059 PCLASSINFO(H4504_MixedExtension, PASN_Choice);
00060 #endif
00061 public:
00062 H4504_MixedExtension(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00063
00064 enum Choices {
00065 e_extension,
00066 e_nonStandardData
00067 };
00068
00069 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00070 operator H4501_Extension &() const;
00071 #else
00072 operator H4501_Extension &();
00073 operator const H4501_Extension &() const;
00074 #endif
00075 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00076 operator H225_NonStandardParameter &() const;
00077 #else
00078 operator H225_NonStandardParameter &();
00079 operator const H225_NonStandardParameter &() const;
00080 #endif
00081
00082 PBoolean CreateObject();
00083 PObject * Clone() const;
00084 };
00085
00086
00087
00088
00089
00090
00091 class H4504_Extension : public PASN_Sequence
00092 {
00093 #ifndef PASN_LEANANDMEAN
00094 PCLASSINFO(H4504_Extension, PASN_Sequence);
00095 #endif
00096 public:
00097 H4504_Extension(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00098
00099 PASN_ObjectId m_extensionId;
00100 PASN_OctetString m_argument;
00101
00102 PINDEX GetDataLength() const;
00103 PBoolean Decode(PASN_Stream & strm);
00104 void Encode(PASN_Stream & strm) const;
00105 #ifndef PASN_NOPRINTON
00106 void PrintOn(ostream & strm) const;
00107 #endif
00108 Comparison Compare(const PObject & obj) const;
00109 PObject * Clone() const;
00110 };
00111
00112
00113
00114
00115
00116
00117 class H4504_MixedExtension;
00118
00119 class H4504_ArrayOf_MixedExtension : public PASN_Array
00120 {
00121 #ifndef PASN_LEANANDMEAN
00122 PCLASSINFO(H4504_ArrayOf_MixedExtension, PASN_Array);
00123 #endif
00124 public:
00125 H4504_ArrayOf_MixedExtension(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00126
00127 PASN_Object * CreateObject() const;
00128 H4504_MixedExtension & operator[](PINDEX i) const;
00129 PObject * Clone() const;
00130 };
00131
00132
00133
00134
00135
00136
00137 class H4504_HoldNotificArg : public PASN_Sequence
00138 {
00139 #ifndef PASN_LEANANDMEAN
00140 PCLASSINFO(H4504_HoldNotificArg, PASN_Sequence);
00141 #endif
00142 public:
00143 H4504_HoldNotificArg(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00144
00145 enum OptionalFields {
00146 e_extensionArg
00147 };
00148
00149 H4504_ArrayOf_MixedExtension m_extensionArg;
00150
00151 PINDEX GetDataLength() const;
00152 PBoolean Decode(PASN_Stream & strm);
00153 void Encode(PASN_Stream & strm) const;
00154 #ifndef PASN_NOPRINTON
00155 void PrintOn(ostream & strm) const;
00156 #endif
00157 Comparison Compare(const PObject & obj) const;
00158 PObject * Clone() const;
00159 };
00160
00161
00162
00163
00164
00165
00166 class H4504_RetrieveNotificArg : public PASN_Sequence
00167 {
00168 #ifndef PASN_LEANANDMEAN
00169 PCLASSINFO(H4504_RetrieveNotificArg, PASN_Sequence);
00170 #endif
00171 public:
00172 H4504_RetrieveNotificArg(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00173
00174 enum OptionalFields {
00175 e_extensionArg
00176 };
00177
00178 H4504_ArrayOf_MixedExtension m_extensionArg;
00179
00180 PINDEX GetDataLength() const;
00181 PBoolean Decode(PASN_Stream & strm);
00182 void Encode(PASN_Stream & strm) const;
00183 #ifndef PASN_NOPRINTON
00184 void PrintOn(ostream & strm) const;
00185 #endif
00186 Comparison Compare(const PObject & obj) const;
00187 PObject * Clone() const;
00188 };
00189
00190
00191
00192
00193
00194
00195 class H4504_RemoteHoldArg : public PASN_Sequence
00196 {
00197 #ifndef PASN_LEANANDMEAN
00198 PCLASSINFO(H4504_RemoteHoldArg, PASN_Sequence);
00199 #endif
00200 public:
00201 H4504_RemoteHoldArg(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00202
00203 enum OptionalFields {
00204 e_extensionArg
00205 };
00206
00207 H4504_ArrayOf_MixedExtension m_extensionArg;
00208
00209 PINDEX GetDataLength() const;
00210 PBoolean Decode(PASN_Stream & strm);
00211 void Encode(PASN_Stream & strm) const;
00212 #ifndef PASN_NOPRINTON
00213 void PrintOn(ostream & strm) const;
00214 #endif
00215 Comparison Compare(const PObject & obj) const;
00216 PObject * Clone() const;
00217 };
00218
00219
00220
00221
00222
00223
00224 class H4504_RemoteHoldRes : public PASN_Sequence
00225 {
00226 #ifndef PASN_LEANANDMEAN
00227 PCLASSINFO(H4504_RemoteHoldRes, PASN_Sequence);
00228 #endif
00229 public:
00230 H4504_RemoteHoldRes(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00231
00232 enum OptionalFields {
00233 e_extensionRes
00234 };
00235
00236 H4504_ArrayOf_MixedExtension m_extensionRes;
00237
00238 PINDEX GetDataLength() const;
00239 PBoolean Decode(PASN_Stream & strm);
00240 void Encode(PASN_Stream & strm) const;
00241 #ifndef PASN_NOPRINTON
00242 void PrintOn(ostream & strm) const;
00243 #endif
00244 Comparison Compare(const PObject & obj) const;
00245 PObject * Clone() const;
00246 };
00247
00248
00249
00250
00251
00252
00253 class H4504_RemoteRetrieveArg : public PASN_Sequence
00254 {
00255 #ifndef PASN_LEANANDMEAN
00256 PCLASSINFO(H4504_RemoteRetrieveArg, PASN_Sequence);
00257 #endif
00258 public:
00259 H4504_RemoteRetrieveArg(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00260
00261 enum OptionalFields {
00262 e_extensionArg
00263 };
00264
00265 H4504_ArrayOf_MixedExtension m_extensionArg;
00266
00267 PINDEX GetDataLength() const;
00268 PBoolean Decode(PASN_Stream & strm);
00269 void Encode(PASN_Stream & strm) const;
00270 #ifndef PASN_NOPRINTON
00271 void PrintOn(ostream & strm) const;
00272 #endif
00273 Comparison Compare(const PObject & obj) const;
00274 PObject * Clone() const;
00275 };
00276
00277
00278
00279
00280
00281
00282 class H4504_RemoteRetrieveRes : public PASN_Sequence
00283 {
00284 #ifndef PASN_LEANANDMEAN
00285 PCLASSINFO(H4504_RemoteRetrieveRes, PASN_Sequence);
00286 #endif
00287 public:
00288 H4504_RemoteRetrieveRes(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00289
00290 enum OptionalFields {
00291 e_extensionRes
00292 };
00293
00294 H4504_ArrayOf_MixedExtension m_extensionRes;
00295
00296 PINDEX GetDataLength() const;
00297 PBoolean Decode(PASN_Stream & strm);
00298 void Encode(PASN_Stream & strm) const;
00299 #ifndef PASN_NOPRINTON
00300 void PrintOn(ostream & strm) const;
00301 #endif
00302 Comparison Compare(const PObject & obj) const;
00303 PObject * Clone() const;
00304 };
00305
00306
00307 #endif // __H4504_H
00308
00309 #endif // if ! H323_DISABLE_H4504
00310
00311
00312