home *** CD-ROM | disk | FTP | other *** search
/ ftp.muug.mb.ca / 2014.06.ftp.muug.mb.ca.tar / ftp.muug.mb.ca / pub / openh323.tar.gz / openh323.tar / openh323 / src / h4504.cxx < prev    next >
C/C++ Source or Header  |  2004-06-22  |  16KB  |  736 lines

  1. //
  2. // h4504.cxx
  3. //
  4. // Code automatically generated by asnparse.
  5. //
  6.  
  7. #ifdef __GNUC__
  8. #pragma implementation "h4504.h"
  9. #endif
  10.  
  11. #include <ptlib.h>
  12. #include "h4504.h"
  13.  
  14. #define new PNEW
  15.  
  16.  
  17. #if ! H323_DISABLE_H4504
  18.  
  19.  
  20.  
  21. //
  22. // CallHoldOperation
  23. //
  24.  
  25. H4504_CallHoldOperation::H4504_CallHoldOperation(unsigned tag, PASN_Object::TagClass tagClass)
  26.   : PASN_Enumeration(tag, tagClass, 104, FALSE
  27. #ifndef PASN_NOPRINTON
  28.       , "holdNotific=101 "
  29.         "retrieveNotific "
  30.         "remoteHold "
  31.         "remoteRetrieve "
  32. #endif
  33.     )
  34. {
  35. }
  36.  
  37.  
  38. H4504_CallHoldOperation & H4504_CallHoldOperation::operator=(unsigned v)
  39. {
  40.   SetValue(v);
  41.   return *this;
  42. }
  43.  
  44.  
  45. PObject * H4504_CallHoldOperation::Clone() const
  46. {
  47. #ifndef PASN_LEANANDMEAN
  48.   PAssert(IsClass(H4504_CallHoldOperation::Class()), PInvalidCast);
  49. #endif
  50.   return new H4504_CallHoldOperation(*this);
  51. }
  52.  
  53.  
  54. //
  55. // MixedExtension
  56. //
  57.  
  58. H4504_MixedExtension::H4504_MixedExtension(unsigned tag, PASN_Object::TagClass tagClass)
  59.   : PASN_Choice(tag, tagClass, 2, FALSE
  60. #ifndef PASN_NOPRINTON
  61.       , "extension "
  62.         "nonStandardData "
  63. #endif
  64.     )
  65. {
  66. }
  67.  
  68.  
  69. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  70. H4504_MixedExtension::operator H4501_Extension &() const
  71. #else
  72. H4504_MixedExtension::operator H4501_Extension &()
  73. {
  74. #ifndef PASN_LEANANDMEAN
  75.   PAssert(PAssertNULL(choice)->IsDescendant(H4501_Extension::Class()), PInvalidCast);
  76. #endif
  77.   return *(H4501_Extension *)choice;
  78. }
  79.  
  80.  
  81. H4504_MixedExtension::operator const H4501_Extension &() const
  82. #endif
  83. {
  84. #ifndef PASN_LEANANDMEAN
  85.   PAssert(PAssertNULL(choice)->IsDescendant(H4501_Extension::Class()), PInvalidCast);
  86. #endif
  87.   return *(H4501_Extension *)choice;
  88. }
  89.  
  90.  
  91. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  92. H4504_MixedExtension::operator H225_NonStandardParameter &() const
  93. #else
  94. H4504_MixedExtension::operator H225_NonStandardParameter &()
  95. {
  96. #ifndef PASN_LEANANDMEAN
  97.   PAssert(PAssertNULL(choice)->IsDescendant(H225_NonStandardParameter::Class()), PInvalidCast);
  98. #endif
  99.   return *(H225_NonStandardParameter *)choice;
  100. }
  101.  
  102.  
  103. H4504_MixedExtension::operator const H225_NonStandardParameter &() const
  104. #endif
  105. {
  106. #ifndef PASN_LEANANDMEAN
  107.   PAssert(PAssertNULL(choice)->IsDescendant(H225_NonStandardParameter::Class()), PInvalidCast);
  108. #endif
  109.   return *(H225_NonStandardParameter *)choice;
  110. }
  111.  
  112.  
  113. BOOL H4504_MixedExtension::CreateObject()
  114. {
  115.   switch (tag) {
  116.     case e_extension :
  117.       choice = new H4501_Extension();
  118.       return TRUE;
  119.     case e_nonStandardData :
  120.       choice = new H225_NonStandardParameter();
  121.       return TRUE;
  122.   }
  123.  
  124.   choice = NULL;
  125.   return FALSE;
  126. }
  127.  
  128.  
  129. PObject * H4504_MixedExtension::Clone() const
  130. {
  131. #ifndef PASN_LEANANDMEAN
  132.   PAssert(IsClass(H4504_MixedExtension::Class()), PInvalidCast);
  133. #endif
  134.   return new H4504_MixedExtension(*this);
  135. }
  136.  
  137.  
  138. //
  139. // Extension
  140. //
  141.  
  142. H4504_Extension::H4504_Extension(unsigned tag, PASN_Object::TagClass tagClass)
  143.   : PASN_Sequence(tag, tagClass, 0, FALSE, 0)
  144. {
  145. }
  146.  
  147.  
  148. #ifndef PASN_NOPRINTON
  149. void H4504_Extension::PrintOn(ostream & strm) const
  150. {
  151.   int indent = strm.precision() + 2;
  152.   strm << "{\n";
  153.   strm << setw(indent+14) << "extensionId = " << setprecision(indent) << m_extensionId << '\n';
  154.   strm << setw(indent+11) << "argument = " << setprecision(indent) << m_argument << '\n';
  155.   strm << setw(indent-1) << "}";
  156. }
  157. #endif
  158.  
  159.  
  160. PObject::Comparison H4504_Extension::Compare(const PObject & obj) const
  161. {
  162. #ifndef PASN_LEANANDMEAN
  163.   PAssert(IsDescendant(H4504_Extension::Class()), PInvalidCast);
  164. #endif
  165.   const H4504_Extension & other = (const H4504_Extension &)obj;
  166.  
  167.   Comparison result;
  168.  
  169.   if ((result = m_extensionId.Compare(other.m_extensionId)) != EqualTo)
  170.     return result;
  171.   if ((result = m_argument.Compare(other.m_argument)) != EqualTo)
  172.     return result;
  173.  
  174.   return PASN_Sequence::Compare(other);
  175. }
  176.  
  177.  
  178. PINDEX H4504_Extension::GetDataLength() const
  179. {
  180.   PINDEX length = 0;
  181.   length += m_extensionId.GetObjectLength();
  182.   length += m_argument.GetObjectLength();
  183.   return length;
  184. }
  185.  
  186.  
  187. BOOL H4504_Extension::Decode(PASN_Stream & strm)
  188. {
  189.   if (!PreambleDecode(strm))
  190.     return FALSE;
  191.  
  192.   if (!m_extensionId.Decode(strm))
  193.     return FALSE;
  194.   if (!m_argument.Decode(strm))
  195.     return FALSE;
  196.  
  197.   return UnknownExtensionsDecode(strm);
  198. }
  199.  
  200.  
  201. void H4504_Extension::Encode(PASN_Stream & strm) const
  202. {
  203.   PreambleEncode(strm);
  204.  
  205.   m_extensionId.Encode(strm);
  206.   m_argument.Encode(strm);
  207.  
  208.   UnknownExtensionsEncode(strm);
  209. }
  210.  
  211.  
  212. PObject * H4504_Extension::Clone() const
  213. {
  214. #ifndef PASN_LEANANDMEAN
  215.   PAssert(IsClass(H4504_Extension::Class()), PInvalidCast);
  216. #endif
  217.   return new H4504_Extension(*this);
  218. }
  219.  
  220.  
  221. //
  222. // ArrayOf_MixedExtension
  223. //
  224.  
  225. H4504_ArrayOf_MixedExtension::H4504_ArrayOf_MixedExtension(unsigned tag, PASN_Object::TagClass tagClass)
  226.   : PASN_Array(tag, tagClass)
  227. {
  228. }
  229.  
  230.  
  231. PASN_Object * H4504_ArrayOf_MixedExtension::CreateObject() const
  232. {
  233.   return new H4504_MixedExtension;
  234. }
  235.  
  236.  
  237. H4504_MixedExtension & H4504_ArrayOf_MixedExtension::operator[](PINDEX i) const
  238. {
  239.   return (H4504_MixedExtension &)array[i];
  240. }
  241.  
  242.  
  243. PObject * H4504_ArrayOf_MixedExtension::Clone() const
  244. {
  245. #ifndef PASN_LEANANDMEAN
  246.   PAssert(IsClass(H4504_ArrayOf_MixedExtension::Class()), PInvalidCast);
  247. #endif
  248.   return new H4504_ArrayOf_MixedExtension(*this);
  249. }
  250.  
  251.  
  252. //
  253. // HoldNotificArg
  254. //
  255.  
  256. H4504_HoldNotificArg::H4504_HoldNotificArg(unsigned tag, PASN_Object::TagClass tagClass)
  257.   : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
  258. {
  259.   m_extensionArg.SetConstraints(PASN_Object::FixedConstraint, 0, 255);
  260. }
  261.  
  262.  
  263. #ifndef PASN_NOPRINTON
  264. void H4504_HoldNotificArg::PrintOn(ostream & strm) const
  265. {
  266.   int indent = strm.precision() + 2;
  267.   strm << "{\n";
  268.   if (HasOptionalField(e_extensionArg))
  269.     strm << setw(indent+15) << "extensionArg = " << setprecision(indent) << m_extensionArg << '\n';
  270.   strm << setw(indent-1) << "}";
  271. }
  272. #endif
  273.  
  274.  
  275. PObject::Comparison H4504_HoldNotificArg::Compare(const PObject & obj) const
  276. {
  277. #ifndef PASN_LEANANDMEAN
  278.   PAssert(IsDescendant(H4504_HoldNotificArg::Class()), PInvalidCast);
  279. #endif
  280.   const H4504_HoldNotificArg & other = (const H4504_HoldNotificArg &)obj;
  281.  
  282.   Comparison result;
  283.  
  284.   if ((result = m_extensionArg.Compare(other.m_extensionArg)) != EqualTo)
  285.     return result;
  286.  
  287.   return PASN_Sequence::Compare(other);
  288. }
  289.  
  290.  
  291. PINDEX H4504_HoldNotificArg::GetDataLength() const
  292. {
  293.   PINDEX length = 0;
  294.   if (HasOptionalField(e_extensionArg))
  295.     length += m_extensionArg.GetObjectLength();
  296.   return length;
  297. }
  298.  
  299.  
  300. BOOL H4504_HoldNotificArg::Decode(PASN_Stream & strm)
  301. {
  302.   if (!PreambleDecode(strm))
  303.     return FALSE;
  304.  
  305.   if (HasOptionalField(e_extensionArg) && !m_extensionArg.Decode(strm))
  306.     return FALSE;
  307.  
  308.   return UnknownExtensionsDecode(strm);
  309. }
  310.  
  311.  
  312. void H4504_HoldNotificArg::Encode(PASN_Stream & strm) const
  313. {
  314.   PreambleEncode(strm);
  315.  
  316.   if (HasOptionalField(e_extensionArg))
  317.     m_extensionArg.Encode(strm);
  318.  
  319.   UnknownExtensionsEncode(strm);
  320. }
  321.  
  322.  
  323. PObject * H4504_HoldNotificArg::Clone() const
  324. {
  325. #ifndef PASN_LEANANDMEAN
  326.   PAssert(IsClass(H4504_HoldNotificArg::Class()), PInvalidCast);
  327. #endif
  328.   return new H4504_HoldNotificArg(*this);
  329. }
  330.  
  331.  
  332. //
  333. // RetrieveNotificArg
  334. //
  335.  
  336. H4504_RetrieveNotificArg::H4504_RetrieveNotificArg(unsigned tag, PASN_Object::TagClass tagClass)
  337.   : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
  338. {
  339.   m_extensionArg.SetConstraints(PASN_Object::FixedConstraint, 0, 255);
  340. }
  341.  
  342.  
  343. #ifndef PASN_NOPRINTON
  344. void H4504_RetrieveNotificArg::PrintOn(ostream & strm) const
  345. {
  346.   int indent = strm.precision() + 2;
  347.   strm << "{\n";
  348.   if (HasOptionalField(e_extensionArg))
  349.     strm << setw(indent+15) << "extensionArg = " << setprecision(indent) << m_extensionArg << '\n';
  350.   strm << setw(indent-1) << "}";
  351. }
  352. #endif
  353.  
  354.  
  355. PObject::Comparison H4504_RetrieveNotificArg::Compare(const PObject & obj) const
  356. {
  357. #ifndef PASN_LEANANDMEAN
  358.   PAssert(IsDescendant(H4504_RetrieveNotificArg::Class()), PInvalidCast);
  359. #endif
  360.   const H4504_RetrieveNotificArg & other = (const H4504_RetrieveNotificArg &)obj;
  361.  
  362.   Comparison result;
  363.  
  364.   if ((result = m_extensionArg.Compare(other.m_extensionArg)) != EqualTo)
  365.     return result;
  366.  
  367.   return PASN_Sequence::Compare(other);
  368. }
  369.  
  370.  
  371. PINDEX H4504_RetrieveNotificArg::GetDataLength() const
  372. {
  373.   PINDEX length = 0;
  374.   if (HasOptionalField(e_extensionArg))
  375.     length += m_extensionArg.GetObjectLength();
  376.   return length;
  377. }
  378.  
  379.  
  380. BOOL H4504_RetrieveNotificArg::Decode(PASN_Stream & strm)
  381. {
  382.   if (!PreambleDecode(strm))
  383.     return FALSE;
  384.  
  385.   if (HasOptionalField(e_extensionArg) && !m_extensionArg.Decode(strm))
  386.     return FALSE;
  387.  
  388.   return UnknownExtensionsDecode(strm);
  389. }
  390.  
  391.  
  392. void H4504_RetrieveNotificArg::Encode(PASN_Stream & strm) const
  393. {
  394.   PreambleEncode(strm);
  395.  
  396.   if (HasOptionalField(e_extensionArg))
  397.     m_extensionArg.Encode(strm);
  398.  
  399.   UnknownExtensionsEncode(strm);
  400. }
  401.  
  402.  
  403. PObject * H4504_RetrieveNotificArg::Clone() const
  404. {
  405. #ifndef PASN_LEANANDMEAN
  406.   PAssert(IsClass(H4504_RetrieveNotificArg::Class()), PInvalidCast);
  407. #endif
  408.   return new H4504_RetrieveNotificArg(*this);
  409. }
  410.  
  411.  
  412. //
  413. // RemoteHoldArg
  414. //
  415.  
  416. H4504_RemoteHoldArg::H4504_RemoteHoldArg(unsigned tag, PASN_Object::TagClass tagClass)
  417.   : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
  418. {
  419.   m_extensionArg.SetConstraints(PASN_Object::FixedConstraint, 0, 255);
  420. }
  421.  
  422.  
  423. #ifndef PASN_NOPRINTON
  424. void H4504_RemoteHoldArg::PrintOn(ostream & strm) const
  425. {
  426.   int indent = strm.precision() + 2;
  427.   strm << "{\n";
  428.   if (HasOptionalField(e_extensionArg))
  429.     strm << setw(indent+15) << "extensionArg = " << setprecision(indent) << m_extensionArg << '\n';
  430.   strm << setw(indent-1) << "}";
  431. }
  432. #endif
  433.  
  434.  
  435. PObject::Comparison H4504_RemoteHoldArg::Compare(const PObject & obj) const
  436. {
  437. #ifndef PASN_LEANANDMEAN
  438.   PAssert(IsDescendant(H4504_RemoteHoldArg::Class()), PInvalidCast);
  439. #endif
  440.   const H4504_RemoteHoldArg & other = (const H4504_RemoteHoldArg &)obj;
  441.  
  442.   Comparison result;
  443.  
  444.   if ((result = m_extensionArg.Compare(other.m_extensionArg)) != EqualTo)
  445.     return result;
  446.  
  447.   return PASN_Sequence::Compare(other);
  448. }
  449.  
  450.  
  451. PINDEX H4504_RemoteHoldArg::GetDataLength() const
  452. {
  453.   PINDEX length = 0;
  454.   if (HasOptionalField(e_extensionArg))
  455.     length += m_extensionArg.GetObjectLength();
  456.   return length;
  457. }
  458.  
  459.  
  460. BOOL H4504_RemoteHoldArg::Decode(PASN_Stream & strm)
  461. {
  462.   if (!PreambleDecode(strm))
  463.     return FALSE;
  464.  
  465.   if (HasOptionalField(e_extensionArg) && !m_extensionArg.Decode(strm))
  466.     return FALSE;
  467.  
  468.   return UnknownExtensionsDecode(strm);
  469. }
  470.  
  471.  
  472. void H4504_RemoteHoldArg::Encode(PASN_Stream & strm) const
  473. {
  474.   PreambleEncode(strm);
  475.  
  476.   if (HasOptionalField(e_extensionArg))
  477.     m_extensionArg.Encode(strm);
  478.  
  479.   UnknownExtensionsEncode(strm);
  480. }
  481.  
  482.  
  483. PObject * H4504_RemoteHoldArg::Clone() const
  484. {
  485. #ifndef PASN_LEANANDMEAN
  486.   PAssert(IsClass(H4504_RemoteHoldArg::Class()), PInvalidCast);
  487. #endif
  488.   return new H4504_RemoteHoldArg(*this);
  489. }
  490.  
  491.  
  492. //
  493. // RemoteHoldRes
  494. //
  495.  
  496. H4504_RemoteHoldRes::H4504_RemoteHoldRes(unsigned tag, PASN_Object::TagClass tagClass)
  497.   : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
  498. {
  499.   m_extensionRes.SetConstraints(PASN_Object::FixedConstraint, 0, 255);
  500. }
  501.  
  502.  
  503. #ifndef PASN_NOPRINTON
  504. void H4504_RemoteHoldRes::PrintOn(ostream & strm) const
  505. {
  506.   int indent = strm.precision() + 2;
  507.   strm << "{\n";
  508.   if (HasOptionalField(e_extensionRes))
  509.     strm << setw(indent+15) << "extensionRes = " << setprecision(indent) << m_extensionRes << '\n';
  510.   strm << setw(indent-1) << "}";
  511. }
  512. #endif
  513.  
  514.  
  515. PObject::Comparison H4504_RemoteHoldRes::Compare(const PObject & obj) const
  516. {
  517. #ifndef PASN_LEANANDMEAN
  518.   PAssert(IsDescendant(H4504_RemoteHoldRes::Class()), PInvalidCast);
  519. #endif
  520.   const H4504_RemoteHoldRes & other = (const H4504_RemoteHoldRes &)obj;
  521.  
  522.   Comparison result;
  523.  
  524.   if ((result = m_extensionRes.Compare(other.m_extensionRes)) != EqualTo)
  525.     return result;
  526.  
  527.   return PASN_Sequence::Compare(other);
  528. }
  529.  
  530.  
  531. PINDEX H4504_RemoteHoldRes::GetDataLength() const
  532. {
  533.   PINDEX length = 0;
  534.   if (HasOptionalField(e_extensionRes))
  535.     length += m_extensionRes.GetObjectLength();
  536.   return length;
  537. }
  538.  
  539.  
  540. BOOL H4504_RemoteHoldRes::Decode(PASN_Stream & strm)
  541. {
  542.   if (!PreambleDecode(strm))
  543.     return FALSE;
  544.  
  545.   if (HasOptionalField(e_extensionRes) && !m_extensionRes.Decode(strm))
  546.     return FALSE;
  547.  
  548.   return UnknownExtensionsDecode(strm);
  549. }
  550.  
  551.  
  552. void H4504_RemoteHoldRes::Encode(PASN_Stream & strm) const
  553. {
  554.   PreambleEncode(strm);
  555.  
  556.   if (HasOptionalField(e_extensionRes))
  557.     m_extensionRes.Encode(strm);
  558.  
  559.   UnknownExtensionsEncode(strm);
  560. }
  561.  
  562.  
  563. PObject * H4504_RemoteHoldRes::Clone() const
  564. {
  565. #ifndef PASN_LEANANDMEAN
  566.   PAssert(IsClass(H4504_RemoteHoldRes::Class()), PInvalidCast);
  567. #endif
  568.   return new H4504_RemoteHoldRes(*this);
  569. }
  570.  
  571.  
  572. //
  573. // RemoteRetrieveArg
  574. //
  575.  
  576. H4504_RemoteRetrieveArg::H4504_RemoteRetrieveArg(unsigned tag, PASN_Object::TagClass tagClass)
  577.   : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
  578. {
  579.   m_extensionArg.SetConstraints(PASN_Object::FixedConstraint, 0, 255);
  580. }
  581.  
  582.  
  583. #ifndef PASN_NOPRINTON
  584. void H4504_RemoteRetrieveArg::PrintOn(ostream & strm) const
  585. {
  586.   int indent = strm.precision() + 2;
  587.   strm << "{\n";
  588.   if (HasOptionalField(e_extensionArg))
  589.     strm << setw(indent+15) << "extensionArg = " << setprecision(indent) << m_extensionArg << '\n';
  590.   strm << setw(indent-1) << "}";
  591. }
  592. #endif
  593.  
  594.  
  595. PObject::Comparison H4504_RemoteRetrieveArg::Compare(const PObject & obj) const
  596. {
  597. #ifndef PASN_LEANANDMEAN
  598.   PAssert(IsDescendant(H4504_RemoteRetrieveArg::Class()), PInvalidCast);
  599. #endif
  600.   const H4504_RemoteRetrieveArg & other = (const H4504_RemoteRetrieveArg &)obj;
  601.  
  602.   Comparison result;
  603.  
  604.   if ((result = m_extensionArg.Compare(other.m_extensionArg)) != EqualTo)
  605.     return result;
  606.  
  607.   return PASN_Sequence::Compare(other);
  608. }
  609.  
  610.  
  611. PINDEX H4504_RemoteRetrieveArg::GetDataLength() const
  612. {
  613.   PINDEX length = 0;
  614.   if (HasOptionalField(e_extensionArg))
  615.     length += m_extensionArg.GetObjectLength();
  616.   return length;
  617. }
  618.  
  619.  
  620. BOOL H4504_RemoteRetrieveArg::Decode(PASN_Stream & strm)
  621. {
  622.   if (!PreambleDecode(strm))
  623.     return FALSE;
  624.  
  625.   if (HasOptionalField(e_extensionArg) && !m_extensionArg.Decode(strm))
  626.     return FALSE;
  627.  
  628.   return UnknownExtensionsDecode(strm);
  629. }
  630.  
  631.  
  632. void H4504_RemoteRetrieveArg::Encode(PASN_Stream & strm) const
  633. {
  634.   PreambleEncode(strm);
  635.  
  636.   if (HasOptionalField(e_extensionArg))
  637.     m_extensionArg.Encode(strm);
  638.  
  639.   UnknownExtensionsEncode(strm);
  640. }
  641.  
  642.  
  643. PObject * H4504_RemoteRetrieveArg::Clone() const
  644. {
  645. #ifndef PASN_LEANANDMEAN
  646.   PAssert(IsClass(H4504_RemoteRetrieveArg::Class()), PInvalidCast);
  647. #endif
  648.   return new H4504_RemoteRetrieveArg(*this);
  649. }
  650.  
  651.  
  652. //
  653. // RemoteRetrieveRes
  654. //
  655.  
  656. H4504_RemoteRetrieveRes::H4504_RemoteRetrieveRes(unsigned tag, PASN_Object::TagClass tagClass)
  657.   : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
  658. {
  659.   m_extensionRes.SetConstraints(PASN_Object::FixedConstraint, 0, 255);
  660. }
  661.  
  662.  
  663. #ifndef PASN_NOPRINTON
  664. void H4504_RemoteRetrieveRes::PrintOn(ostream & strm) const
  665. {
  666.   int indent = strm.precision() + 2;
  667.   strm << "{\n";
  668.   if (HasOptionalField(e_extensionRes))
  669.     strm << setw(indent+15) << "extensionRes = " << setprecision(indent) << m_extensionRes << '\n';
  670.   strm << setw(indent-1) << "}";
  671. }
  672. #endif
  673.  
  674.  
  675. PObject::Comparison H4504_RemoteRetrieveRes::Compare(const PObject & obj) const
  676. {
  677. #ifndef PASN_LEANANDMEAN
  678.   PAssert(IsDescendant(H4504_RemoteRetrieveRes::Class()), PInvalidCast);
  679. #endif
  680.   const H4504_RemoteRetrieveRes & other = (const H4504_RemoteRetrieveRes &)obj;
  681.  
  682.   Comparison result;
  683.  
  684.   if ((result = m_extensionRes.Compare(other.m_extensionRes)) != EqualTo)
  685.     return result;
  686.  
  687.   return PASN_Sequence::Compare(other);
  688. }
  689.  
  690.  
  691. PINDEX H4504_RemoteRetrieveRes::GetDataLength() const
  692. {
  693.   PINDEX length = 0;
  694.   if (HasOptionalField(e_extensionRes))
  695.     length += m_extensionRes.GetObjectLength();
  696.   return length;
  697. }
  698.  
  699.  
  700. BOOL H4504_RemoteRetrieveRes::Decode(PASN_Stream & strm)
  701. {
  702.   if (!PreambleDecode(strm))
  703.     return FALSE;
  704.  
  705.   if (HasOptionalField(e_extensionRes) && !m_extensionRes.Decode(strm))
  706.     return FALSE;
  707.  
  708.   return UnknownExtensionsDecode(strm);
  709. }
  710.  
  711.  
  712. void H4504_RemoteRetrieveRes::Encode(PASN_Stream & strm) const
  713. {
  714.   PreambleEncode(strm);
  715.  
  716.   if (HasOptionalField(e_extensionRes))
  717.     m_extensionRes.Encode(strm);
  718.  
  719.   UnknownExtensionsEncode(strm);
  720. }
  721.  
  722.  
  723. PObject * H4504_RemoteRetrieveRes::Clone() const
  724. {
  725. #ifndef PASN_LEANANDMEAN
  726.   PAssert(IsClass(H4504_RemoteRetrieveRes::Class()), PInvalidCast);
  727. #endif
  728.   return new H4504_RemoteRetrieveRes(*this);
  729. }
  730.  
  731.  
  732. #endif // if ! H323_DISABLE_H4504
  733.  
  734.  
  735. // End of h4504.cxx
  736.