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 / h501.cxx < prev    next >
C/C++ Source or Header  |  2004-06-22  |  184KB  |  7,505 lines

  1. //
  2. // h501.cxx
  3. //
  4. // Code automatically generated by asnparse.
  5. //
  6.  
  7. #ifdef __GNUC__
  8. #pragma implementation "h501.h"
  9. #endif
  10.  
  11. #include <ptlib.h>
  12. #include "h501.h"
  13.  
  14. #define new PNEW
  15.  
  16.  
  17. #if ! H323_DISABLE_H501
  18.  
  19.  
  20.  
  21. //
  22. // MessageBody
  23. //
  24.  
  25. H501_MessageBody::H501_MessageBody(unsigned tag, PASN_Object::TagClass tagClass)
  26.   : PASN_Choice(tag, tagClass, 29, TRUE
  27. #ifndef PASN_NOPRINTON
  28.       , "serviceRequest "
  29.         "serviceConfirmation "
  30.         "serviceRejection "
  31.         "serviceRelease "
  32.         "descriptorRequest "
  33.         "descriptorConfirmation "
  34.         "descriptorRejection "
  35.         "descriptorIDRequest "
  36.         "descriptorIDConfirmation "
  37.         "descriptorIDRejection "
  38.         "descriptorUpdate "
  39.         "descriptorUpdateAck "
  40.         "accessRequest "
  41.         "accessConfirmation "
  42.         "accessRejection "
  43.         "requestInProgress "
  44.         "nonStandardRequest "
  45.         "nonStandardConfirmation "
  46.         "nonStandardRejection "
  47.         "unknownMessageResponse "
  48.         "usageRequest "
  49.         "usageConfirmation "
  50.         "usageIndication "
  51.         "usageIndicationConfirmation "
  52.         "usageIndicationRejection "
  53.         "usageRejection "
  54.         "validationRequest "
  55.         "validationConfirmation "
  56.         "validationRejection "
  57.         "authenticationRequest "
  58.         "authenticationConfirmation "
  59.         "authenticationRejection "
  60. #endif
  61.     )
  62. {
  63. }
  64.  
  65.  
  66. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  67. H501_MessageBody::operator H501_ServiceRequest &() const
  68. #else
  69. H501_MessageBody::operator H501_ServiceRequest &()
  70. {
  71. #ifndef PASN_LEANANDMEAN
  72.   PAssert(PAssertNULL(choice)->IsDescendant(H501_ServiceRequest::Class()), PInvalidCast);
  73. #endif
  74.   return *(H501_ServiceRequest *)choice;
  75. }
  76.  
  77.  
  78. H501_MessageBody::operator const H501_ServiceRequest &() const
  79. #endif
  80. {
  81. #ifndef PASN_LEANANDMEAN
  82.   PAssert(PAssertNULL(choice)->IsDescendant(H501_ServiceRequest::Class()), PInvalidCast);
  83. #endif
  84.   return *(H501_ServiceRequest *)choice;
  85. }
  86.  
  87.  
  88. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  89. H501_MessageBody::operator H501_ServiceConfirmation &() const
  90. #else
  91. H501_MessageBody::operator H501_ServiceConfirmation &()
  92. {
  93. #ifndef PASN_LEANANDMEAN
  94.   PAssert(PAssertNULL(choice)->IsDescendant(H501_ServiceConfirmation::Class()), PInvalidCast);
  95. #endif
  96.   return *(H501_ServiceConfirmation *)choice;
  97. }
  98.  
  99.  
  100. H501_MessageBody::operator const H501_ServiceConfirmation &() const
  101. #endif
  102. {
  103. #ifndef PASN_LEANANDMEAN
  104.   PAssert(PAssertNULL(choice)->IsDescendant(H501_ServiceConfirmation::Class()), PInvalidCast);
  105. #endif
  106.   return *(H501_ServiceConfirmation *)choice;
  107. }
  108.  
  109.  
  110. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  111. H501_MessageBody::operator H501_ServiceRejection &() const
  112. #else
  113. H501_MessageBody::operator H501_ServiceRejection &()
  114. {
  115. #ifndef PASN_LEANANDMEAN
  116.   PAssert(PAssertNULL(choice)->IsDescendant(H501_ServiceRejection::Class()), PInvalidCast);
  117. #endif
  118.   return *(H501_ServiceRejection *)choice;
  119. }
  120.  
  121.  
  122. H501_MessageBody::operator const H501_ServiceRejection &() const
  123. #endif
  124. {
  125. #ifndef PASN_LEANANDMEAN
  126.   PAssert(PAssertNULL(choice)->IsDescendant(H501_ServiceRejection::Class()), PInvalidCast);
  127. #endif
  128.   return *(H501_ServiceRejection *)choice;
  129. }
  130.  
  131.  
  132. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  133. H501_MessageBody::operator H501_ServiceRelease &() const
  134. #else
  135. H501_MessageBody::operator H501_ServiceRelease &()
  136. {
  137. #ifndef PASN_LEANANDMEAN
  138.   PAssert(PAssertNULL(choice)->IsDescendant(H501_ServiceRelease::Class()), PInvalidCast);
  139. #endif
  140.   return *(H501_ServiceRelease *)choice;
  141. }
  142.  
  143.  
  144. H501_MessageBody::operator const H501_ServiceRelease &() const
  145. #endif
  146. {
  147. #ifndef PASN_LEANANDMEAN
  148.   PAssert(PAssertNULL(choice)->IsDescendant(H501_ServiceRelease::Class()), PInvalidCast);
  149. #endif
  150.   return *(H501_ServiceRelease *)choice;
  151. }
  152.  
  153.  
  154. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  155. H501_MessageBody::operator H501_DescriptorRequest &() const
  156. #else
  157. H501_MessageBody::operator H501_DescriptorRequest &()
  158. {
  159. #ifndef PASN_LEANANDMEAN
  160.   PAssert(PAssertNULL(choice)->IsDescendant(H501_DescriptorRequest::Class()), PInvalidCast);
  161. #endif
  162.   return *(H501_DescriptorRequest *)choice;
  163. }
  164.  
  165.  
  166. H501_MessageBody::operator const H501_DescriptorRequest &() const
  167. #endif
  168. {
  169. #ifndef PASN_LEANANDMEAN
  170.   PAssert(PAssertNULL(choice)->IsDescendant(H501_DescriptorRequest::Class()), PInvalidCast);
  171. #endif
  172.   return *(H501_DescriptorRequest *)choice;
  173. }
  174.  
  175.  
  176. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  177. H501_MessageBody::operator H501_DescriptorConfirmation &() const
  178. #else
  179. H501_MessageBody::operator H501_DescriptorConfirmation &()
  180. {
  181. #ifndef PASN_LEANANDMEAN
  182.   PAssert(PAssertNULL(choice)->IsDescendant(H501_DescriptorConfirmation::Class()), PInvalidCast);
  183. #endif
  184.   return *(H501_DescriptorConfirmation *)choice;
  185. }
  186.  
  187.  
  188. H501_MessageBody::operator const H501_DescriptorConfirmation &() const
  189. #endif
  190. {
  191. #ifndef PASN_LEANANDMEAN
  192.   PAssert(PAssertNULL(choice)->IsDescendant(H501_DescriptorConfirmation::Class()), PInvalidCast);
  193. #endif
  194.   return *(H501_DescriptorConfirmation *)choice;
  195. }
  196.  
  197.  
  198. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  199. H501_MessageBody::operator H501_DescriptorRejection &() const
  200. #else
  201. H501_MessageBody::operator H501_DescriptorRejection &()
  202. {
  203. #ifndef PASN_LEANANDMEAN
  204.   PAssert(PAssertNULL(choice)->IsDescendant(H501_DescriptorRejection::Class()), PInvalidCast);
  205. #endif
  206.   return *(H501_DescriptorRejection *)choice;
  207. }
  208.  
  209.  
  210. H501_MessageBody::operator const H501_DescriptorRejection &() const
  211. #endif
  212. {
  213. #ifndef PASN_LEANANDMEAN
  214.   PAssert(PAssertNULL(choice)->IsDescendant(H501_DescriptorRejection::Class()), PInvalidCast);
  215. #endif
  216.   return *(H501_DescriptorRejection *)choice;
  217. }
  218.  
  219.  
  220. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  221. H501_MessageBody::operator H501_DescriptorIDRequest &() const
  222. #else
  223. H501_MessageBody::operator H501_DescriptorIDRequest &()
  224. {
  225. #ifndef PASN_LEANANDMEAN
  226.   PAssert(PAssertNULL(choice)->IsDescendant(H501_DescriptorIDRequest::Class()), PInvalidCast);
  227. #endif
  228.   return *(H501_DescriptorIDRequest *)choice;
  229. }
  230.  
  231.  
  232. H501_MessageBody::operator const H501_DescriptorIDRequest &() const
  233. #endif
  234. {
  235. #ifndef PASN_LEANANDMEAN
  236.   PAssert(PAssertNULL(choice)->IsDescendant(H501_DescriptorIDRequest::Class()), PInvalidCast);
  237. #endif
  238.   return *(H501_DescriptorIDRequest *)choice;
  239. }
  240.  
  241.  
  242. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  243. H501_MessageBody::operator H501_DescriptorIDConfirmation &() const
  244. #else
  245. H501_MessageBody::operator H501_DescriptorIDConfirmation &()
  246. {
  247. #ifndef PASN_LEANANDMEAN
  248.   PAssert(PAssertNULL(choice)->IsDescendant(H501_DescriptorIDConfirmation::Class()), PInvalidCast);
  249. #endif
  250.   return *(H501_DescriptorIDConfirmation *)choice;
  251. }
  252.  
  253.  
  254. H501_MessageBody::operator const H501_DescriptorIDConfirmation &() const
  255. #endif
  256. {
  257. #ifndef PASN_LEANANDMEAN
  258.   PAssert(PAssertNULL(choice)->IsDescendant(H501_DescriptorIDConfirmation::Class()), PInvalidCast);
  259. #endif
  260.   return *(H501_DescriptorIDConfirmation *)choice;
  261. }
  262.  
  263.  
  264. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  265. H501_MessageBody::operator H501_DescriptorIDRejection &() const
  266. #else
  267. H501_MessageBody::operator H501_DescriptorIDRejection &()
  268. {
  269. #ifndef PASN_LEANANDMEAN
  270.   PAssert(PAssertNULL(choice)->IsDescendant(H501_DescriptorIDRejection::Class()), PInvalidCast);
  271. #endif
  272.   return *(H501_DescriptorIDRejection *)choice;
  273. }
  274.  
  275.  
  276. H501_MessageBody::operator const H501_DescriptorIDRejection &() const
  277. #endif
  278. {
  279. #ifndef PASN_LEANANDMEAN
  280.   PAssert(PAssertNULL(choice)->IsDescendant(H501_DescriptorIDRejection::Class()), PInvalidCast);
  281. #endif
  282.   return *(H501_DescriptorIDRejection *)choice;
  283. }
  284.  
  285.  
  286. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  287. H501_MessageBody::operator H501_DescriptorUpdate &() const
  288. #else
  289. H501_MessageBody::operator H501_DescriptorUpdate &()
  290. {
  291. #ifndef PASN_LEANANDMEAN
  292.   PAssert(PAssertNULL(choice)->IsDescendant(H501_DescriptorUpdate::Class()), PInvalidCast);
  293. #endif
  294.   return *(H501_DescriptorUpdate *)choice;
  295. }
  296.  
  297.  
  298. H501_MessageBody::operator const H501_DescriptorUpdate &() const
  299. #endif
  300. {
  301. #ifndef PASN_LEANANDMEAN
  302.   PAssert(PAssertNULL(choice)->IsDescendant(H501_DescriptorUpdate::Class()), PInvalidCast);
  303. #endif
  304.   return *(H501_DescriptorUpdate *)choice;
  305. }
  306.  
  307.  
  308. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  309. H501_MessageBody::operator H501_DescriptorUpdateAck &() const
  310. #else
  311. H501_MessageBody::operator H501_DescriptorUpdateAck &()
  312. {
  313. #ifndef PASN_LEANANDMEAN
  314.   PAssert(PAssertNULL(choice)->IsDescendant(H501_DescriptorUpdateAck::Class()), PInvalidCast);
  315. #endif
  316.   return *(H501_DescriptorUpdateAck *)choice;
  317. }
  318.  
  319.  
  320. H501_MessageBody::operator const H501_DescriptorUpdateAck &() const
  321. #endif
  322. {
  323. #ifndef PASN_LEANANDMEAN
  324.   PAssert(PAssertNULL(choice)->IsDescendant(H501_DescriptorUpdateAck::Class()), PInvalidCast);
  325. #endif
  326.   return *(H501_DescriptorUpdateAck *)choice;
  327. }
  328.  
  329.  
  330. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  331. H501_MessageBody::operator H501_AccessRequest &() const
  332. #else
  333. H501_MessageBody::operator H501_AccessRequest &()
  334. {
  335. #ifndef PASN_LEANANDMEAN
  336.   PAssert(PAssertNULL(choice)->IsDescendant(H501_AccessRequest::Class()), PInvalidCast);
  337. #endif
  338.   return *(H501_AccessRequest *)choice;
  339. }
  340.  
  341.  
  342. H501_MessageBody::operator const H501_AccessRequest &() const
  343. #endif
  344. {
  345. #ifndef PASN_LEANANDMEAN
  346.   PAssert(PAssertNULL(choice)->IsDescendant(H501_AccessRequest::Class()), PInvalidCast);
  347. #endif
  348.   return *(H501_AccessRequest *)choice;
  349. }
  350.  
  351.  
  352. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  353. H501_MessageBody::operator H501_AccessConfirmation &() const
  354. #else
  355. H501_MessageBody::operator H501_AccessConfirmation &()
  356. {
  357. #ifndef PASN_LEANANDMEAN
  358.   PAssert(PAssertNULL(choice)->IsDescendant(H501_AccessConfirmation::Class()), PInvalidCast);
  359. #endif
  360.   return *(H501_AccessConfirmation *)choice;
  361. }
  362.  
  363.  
  364. H501_MessageBody::operator const H501_AccessConfirmation &() const
  365. #endif
  366. {
  367. #ifndef PASN_LEANANDMEAN
  368.   PAssert(PAssertNULL(choice)->IsDescendant(H501_AccessConfirmation::Class()), PInvalidCast);
  369. #endif
  370.   return *(H501_AccessConfirmation *)choice;
  371. }
  372.  
  373.  
  374. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  375. H501_MessageBody::operator H501_AccessRejection &() const
  376. #else
  377. H501_MessageBody::operator H501_AccessRejection &()
  378. {
  379. #ifndef PASN_LEANANDMEAN
  380.   PAssert(PAssertNULL(choice)->IsDescendant(H501_AccessRejection::Class()), PInvalidCast);
  381. #endif
  382.   return *(H501_AccessRejection *)choice;
  383. }
  384.  
  385.  
  386. H501_MessageBody::operator const H501_AccessRejection &() const
  387. #endif
  388. {
  389. #ifndef PASN_LEANANDMEAN
  390.   PAssert(PAssertNULL(choice)->IsDescendant(H501_AccessRejection::Class()), PInvalidCast);
  391. #endif
  392.   return *(H501_AccessRejection *)choice;
  393. }
  394.  
  395.  
  396. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  397. H501_MessageBody::operator H501_RequestInProgress &() const
  398. #else
  399. H501_MessageBody::operator H501_RequestInProgress &()
  400. {
  401. #ifndef PASN_LEANANDMEAN
  402.   PAssert(PAssertNULL(choice)->IsDescendant(H501_RequestInProgress::Class()), PInvalidCast);
  403. #endif
  404.   return *(H501_RequestInProgress *)choice;
  405. }
  406.  
  407.  
  408. H501_MessageBody::operator const H501_RequestInProgress &() const
  409. #endif
  410. {
  411. #ifndef PASN_LEANANDMEAN
  412.   PAssert(PAssertNULL(choice)->IsDescendant(H501_RequestInProgress::Class()), PInvalidCast);
  413. #endif
  414.   return *(H501_RequestInProgress *)choice;
  415. }
  416.  
  417.  
  418. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  419. H501_MessageBody::operator H501_NonStandardRequest &() const
  420. #else
  421. H501_MessageBody::operator H501_NonStandardRequest &()
  422. {
  423. #ifndef PASN_LEANANDMEAN
  424.   PAssert(PAssertNULL(choice)->IsDescendant(H501_NonStandardRequest::Class()), PInvalidCast);
  425. #endif
  426.   return *(H501_NonStandardRequest *)choice;
  427. }
  428.  
  429.  
  430. H501_MessageBody::operator const H501_NonStandardRequest &() const
  431. #endif
  432. {
  433. #ifndef PASN_LEANANDMEAN
  434.   PAssert(PAssertNULL(choice)->IsDescendant(H501_NonStandardRequest::Class()), PInvalidCast);
  435. #endif
  436.   return *(H501_NonStandardRequest *)choice;
  437. }
  438.  
  439.  
  440. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  441. H501_MessageBody::operator H501_NonStandardConfirmation &() const
  442. #else
  443. H501_MessageBody::operator H501_NonStandardConfirmation &()
  444. {
  445. #ifndef PASN_LEANANDMEAN
  446.   PAssert(PAssertNULL(choice)->IsDescendant(H501_NonStandardConfirmation::Class()), PInvalidCast);
  447. #endif
  448.   return *(H501_NonStandardConfirmation *)choice;
  449. }
  450.  
  451.  
  452. H501_MessageBody::operator const H501_NonStandardConfirmation &() const
  453. #endif
  454. {
  455. #ifndef PASN_LEANANDMEAN
  456.   PAssert(PAssertNULL(choice)->IsDescendant(H501_NonStandardConfirmation::Class()), PInvalidCast);
  457. #endif
  458.   return *(H501_NonStandardConfirmation *)choice;
  459. }
  460.  
  461.  
  462. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  463. H501_MessageBody::operator H501_NonStandardRejection &() const
  464. #else
  465. H501_MessageBody::operator H501_NonStandardRejection &()
  466. {
  467. #ifndef PASN_LEANANDMEAN
  468.   PAssert(PAssertNULL(choice)->IsDescendant(H501_NonStandardRejection::Class()), PInvalidCast);
  469. #endif
  470.   return *(H501_NonStandardRejection *)choice;
  471. }
  472.  
  473.  
  474. H501_MessageBody::operator const H501_NonStandardRejection &() const
  475. #endif
  476. {
  477. #ifndef PASN_LEANANDMEAN
  478.   PAssert(PAssertNULL(choice)->IsDescendant(H501_NonStandardRejection::Class()), PInvalidCast);
  479. #endif
  480.   return *(H501_NonStandardRejection *)choice;
  481. }
  482.  
  483.  
  484. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  485. H501_MessageBody::operator H501_UnknownMessageResponse &() const
  486. #else
  487. H501_MessageBody::operator H501_UnknownMessageResponse &()
  488. {
  489. #ifndef PASN_LEANANDMEAN
  490.   PAssert(PAssertNULL(choice)->IsDescendant(H501_UnknownMessageResponse::Class()), PInvalidCast);
  491. #endif
  492.   return *(H501_UnknownMessageResponse *)choice;
  493. }
  494.  
  495.  
  496. H501_MessageBody::operator const H501_UnknownMessageResponse &() const
  497. #endif
  498. {
  499. #ifndef PASN_LEANANDMEAN
  500.   PAssert(PAssertNULL(choice)->IsDescendant(H501_UnknownMessageResponse::Class()), PInvalidCast);
  501. #endif
  502.   return *(H501_UnknownMessageResponse *)choice;
  503. }
  504.  
  505.  
  506. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  507. H501_MessageBody::operator H501_UsageRequest &() const
  508. #else
  509. H501_MessageBody::operator H501_UsageRequest &()
  510. {
  511. #ifndef PASN_LEANANDMEAN
  512.   PAssert(PAssertNULL(choice)->IsDescendant(H501_UsageRequest::Class()), PInvalidCast);
  513. #endif
  514.   return *(H501_UsageRequest *)choice;
  515. }
  516.  
  517.  
  518. H501_MessageBody::operator const H501_UsageRequest &() const
  519. #endif
  520. {
  521. #ifndef PASN_LEANANDMEAN
  522.   PAssert(PAssertNULL(choice)->IsDescendant(H501_UsageRequest::Class()), PInvalidCast);
  523. #endif
  524.   return *(H501_UsageRequest *)choice;
  525. }
  526.  
  527.  
  528. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  529. H501_MessageBody::operator H501_UsageConfirmation &() const
  530. #else
  531. H501_MessageBody::operator H501_UsageConfirmation &()
  532. {
  533. #ifndef PASN_LEANANDMEAN
  534.   PAssert(PAssertNULL(choice)->IsDescendant(H501_UsageConfirmation::Class()), PInvalidCast);
  535. #endif
  536.   return *(H501_UsageConfirmation *)choice;
  537. }
  538.  
  539.  
  540. H501_MessageBody::operator const H501_UsageConfirmation &() const
  541. #endif
  542. {
  543. #ifndef PASN_LEANANDMEAN
  544.   PAssert(PAssertNULL(choice)->IsDescendant(H501_UsageConfirmation::Class()), PInvalidCast);
  545. #endif
  546.   return *(H501_UsageConfirmation *)choice;
  547. }
  548.  
  549.  
  550. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  551. H501_MessageBody::operator H501_UsageIndication &() const
  552. #else
  553. H501_MessageBody::operator H501_UsageIndication &()
  554. {
  555. #ifndef PASN_LEANANDMEAN
  556.   PAssert(PAssertNULL(choice)->IsDescendant(H501_UsageIndication::Class()), PInvalidCast);
  557. #endif
  558.   return *(H501_UsageIndication *)choice;
  559. }
  560.  
  561.  
  562. H501_MessageBody::operator const H501_UsageIndication &() const
  563. #endif
  564. {
  565. #ifndef PASN_LEANANDMEAN
  566.   PAssert(PAssertNULL(choice)->IsDescendant(H501_UsageIndication::Class()), PInvalidCast);
  567. #endif
  568.   return *(H501_UsageIndication *)choice;
  569. }
  570.  
  571.  
  572. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  573. H501_MessageBody::operator H501_UsageIndicationConfirmation &() const
  574. #else
  575. H501_MessageBody::operator H501_UsageIndicationConfirmation &()
  576. {
  577. #ifndef PASN_LEANANDMEAN
  578.   PAssert(PAssertNULL(choice)->IsDescendant(H501_UsageIndicationConfirmation::Class()), PInvalidCast);
  579. #endif
  580.   return *(H501_UsageIndicationConfirmation *)choice;
  581. }
  582.  
  583.  
  584. H501_MessageBody::operator const H501_UsageIndicationConfirmation &() const
  585. #endif
  586. {
  587. #ifndef PASN_LEANANDMEAN
  588.   PAssert(PAssertNULL(choice)->IsDescendant(H501_UsageIndicationConfirmation::Class()), PInvalidCast);
  589. #endif
  590.   return *(H501_UsageIndicationConfirmation *)choice;
  591. }
  592.  
  593.  
  594. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  595. H501_MessageBody::operator H501_UsageIndicationRejection &() const
  596. #else
  597. H501_MessageBody::operator H501_UsageIndicationRejection &()
  598. {
  599. #ifndef PASN_LEANANDMEAN
  600.   PAssert(PAssertNULL(choice)->IsDescendant(H501_UsageIndicationRejection::Class()), PInvalidCast);
  601. #endif
  602.   return *(H501_UsageIndicationRejection *)choice;
  603. }
  604.  
  605.  
  606. H501_MessageBody::operator const H501_UsageIndicationRejection &() const
  607. #endif
  608. {
  609. #ifndef PASN_LEANANDMEAN
  610.   PAssert(PAssertNULL(choice)->IsDescendant(H501_UsageIndicationRejection::Class()), PInvalidCast);
  611. #endif
  612.   return *(H501_UsageIndicationRejection *)choice;
  613. }
  614.  
  615.  
  616. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  617. H501_MessageBody::operator H501_UsageRejection &() const
  618. #else
  619. H501_MessageBody::operator H501_UsageRejection &()
  620. {
  621. #ifndef PASN_LEANANDMEAN
  622.   PAssert(PAssertNULL(choice)->IsDescendant(H501_UsageRejection::Class()), PInvalidCast);
  623. #endif
  624.   return *(H501_UsageRejection *)choice;
  625. }
  626.  
  627.  
  628. H501_MessageBody::operator const H501_UsageRejection &() const
  629. #endif
  630. {
  631. #ifndef PASN_LEANANDMEAN
  632.   PAssert(PAssertNULL(choice)->IsDescendant(H501_UsageRejection::Class()), PInvalidCast);
  633. #endif
  634.   return *(H501_UsageRejection *)choice;
  635. }
  636.  
  637.  
  638. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  639. H501_MessageBody::operator H501_ValidationRequest &() const
  640. #else
  641. H501_MessageBody::operator H501_ValidationRequest &()
  642. {
  643. #ifndef PASN_LEANANDMEAN
  644.   PAssert(PAssertNULL(choice)->IsDescendant(H501_ValidationRequest::Class()), PInvalidCast);
  645. #endif
  646.   return *(H501_ValidationRequest *)choice;
  647. }
  648.  
  649.  
  650. H501_MessageBody::operator const H501_ValidationRequest &() const
  651. #endif
  652. {
  653. #ifndef PASN_LEANANDMEAN
  654.   PAssert(PAssertNULL(choice)->IsDescendant(H501_ValidationRequest::Class()), PInvalidCast);
  655. #endif
  656.   return *(H501_ValidationRequest *)choice;
  657. }
  658.  
  659.  
  660. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  661. H501_MessageBody::operator H501_ValidationConfirmation &() const
  662. #else
  663. H501_MessageBody::operator H501_ValidationConfirmation &()
  664. {
  665. #ifndef PASN_LEANANDMEAN
  666.   PAssert(PAssertNULL(choice)->IsDescendant(H501_ValidationConfirmation::Class()), PInvalidCast);
  667. #endif
  668.   return *(H501_ValidationConfirmation *)choice;
  669. }
  670.  
  671.  
  672. H501_MessageBody::operator const H501_ValidationConfirmation &() const
  673. #endif
  674. {
  675. #ifndef PASN_LEANANDMEAN
  676.   PAssert(PAssertNULL(choice)->IsDescendant(H501_ValidationConfirmation::Class()), PInvalidCast);
  677. #endif
  678.   return *(H501_ValidationConfirmation *)choice;
  679. }
  680.  
  681.  
  682. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  683. H501_MessageBody::operator H501_ValidationRejection &() const
  684. #else
  685. H501_MessageBody::operator H501_ValidationRejection &()
  686. {
  687. #ifndef PASN_LEANANDMEAN
  688.   PAssert(PAssertNULL(choice)->IsDescendant(H501_ValidationRejection::Class()), PInvalidCast);
  689. #endif
  690.   return *(H501_ValidationRejection *)choice;
  691. }
  692.  
  693.  
  694. H501_MessageBody::operator const H501_ValidationRejection &() const
  695. #endif
  696. {
  697. #ifndef PASN_LEANANDMEAN
  698.   PAssert(PAssertNULL(choice)->IsDescendant(H501_ValidationRejection::Class()), PInvalidCast);
  699. #endif
  700.   return *(H501_ValidationRejection *)choice;
  701. }
  702.  
  703.  
  704. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  705. H501_MessageBody::operator H501_AuthenticationRequest &() const
  706. #else
  707. H501_MessageBody::operator H501_AuthenticationRequest &()
  708. {
  709. #ifndef PASN_LEANANDMEAN
  710.   PAssert(PAssertNULL(choice)->IsDescendant(H501_AuthenticationRequest::Class()), PInvalidCast);
  711. #endif
  712.   return *(H501_AuthenticationRequest *)choice;
  713. }
  714.  
  715.  
  716. H501_MessageBody::operator const H501_AuthenticationRequest &() const
  717. #endif
  718. {
  719. #ifndef PASN_LEANANDMEAN
  720.   PAssert(PAssertNULL(choice)->IsDescendant(H501_AuthenticationRequest::Class()), PInvalidCast);
  721. #endif
  722.   return *(H501_AuthenticationRequest *)choice;
  723. }
  724.  
  725.  
  726. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  727. H501_MessageBody::operator H501_AuthenticationConfirmation &() const
  728. #else
  729. H501_MessageBody::operator H501_AuthenticationConfirmation &()
  730. {
  731. #ifndef PASN_LEANANDMEAN
  732.   PAssert(PAssertNULL(choice)->IsDescendant(H501_AuthenticationConfirmation::Class()), PInvalidCast);
  733. #endif
  734.   return *(H501_AuthenticationConfirmation *)choice;
  735. }
  736.  
  737.  
  738. H501_MessageBody::operator const H501_AuthenticationConfirmation &() const
  739. #endif
  740. {
  741. #ifndef PASN_LEANANDMEAN
  742.   PAssert(PAssertNULL(choice)->IsDescendant(H501_AuthenticationConfirmation::Class()), PInvalidCast);
  743. #endif
  744.   return *(H501_AuthenticationConfirmation *)choice;
  745. }
  746.  
  747.  
  748. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  749. H501_MessageBody::operator H501_AuthenticationRejection &() const
  750. #else
  751. H501_MessageBody::operator H501_AuthenticationRejection &()
  752. {
  753. #ifndef PASN_LEANANDMEAN
  754.   PAssert(PAssertNULL(choice)->IsDescendant(H501_AuthenticationRejection::Class()), PInvalidCast);
  755. #endif
  756.   return *(H501_AuthenticationRejection *)choice;
  757. }
  758.  
  759.  
  760. H501_MessageBody::operator const H501_AuthenticationRejection &() const
  761. #endif
  762. {
  763. #ifndef PASN_LEANANDMEAN
  764.   PAssert(PAssertNULL(choice)->IsDescendant(H501_AuthenticationRejection::Class()), PInvalidCast);
  765. #endif
  766.   return *(H501_AuthenticationRejection *)choice;
  767. }
  768.  
  769.  
  770. BOOL H501_MessageBody::CreateObject()
  771. {
  772.   switch (tag) {
  773.     case e_serviceRequest :
  774.       choice = new H501_ServiceRequest();
  775.       return TRUE;
  776.     case e_serviceConfirmation :
  777.       choice = new H501_ServiceConfirmation();
  778.       return TRUE;
  779.     case e_serviceRejection :
  780.       choice = new H501_ServiceRejection();
  781.       return TRUE;
  782.     case e_serviceRelease :
  783.       choice = new H501_ServiceRelease();
  784.       return TRUE;
  785.     case e_descriptorRequest :
  786.       choice = new H501_DescriptorRequest();
  787.       return TRUE;
  788.     case e_descriptorConfirmation :
  789.       choice = new H501_DescriptorConfirmation();
  790.       return TRUE;
  791.     case e_descriptorRejection :
  792.       choice = new H501_DescriptorRejection();
  793.       return TRUE;
  794.     case e_descriptorIDRequest :
  795.       choice = new H501_DescriptorIDRequest();
  796.       return TRUE;
  797.     case e_descriptorIDConfirmation :
  798.       choice = new H501_DescriptorIDConfirmation();
  799.       return TRUE;
  800.     case e_descriptorIDRejection :
  801.       choice = new H501_DescriptorIDRejection();
  802.       return TRUE;
  803.     case e_descriptorUpdate :
  804.       choice = new H501_DescriptorUpdate();
  805.       return TRUE;
  806.     case e_descriptorUpdateAck :
  807.       choice = new H501_DescriptorUpdateAck();
  808.       return TRUE;
  809.     case e_accessRequest :
  810.       choice = new H501_AccessRequest();
  811.       return TRUE;
  812.     case e_accessConfirmation :
  813.       choice = new H501_AccessConfirmation();
  814.       return TRUE;
  815.     case e_accessRejection :
  816.       choice = new H501_AccessRejection();
  817.       return TRUE;
  818.     case e_requestInProgress :
  819.       choice = new H501_RequestInProgress();
  820.       return TRUE;
  821.     case e_nonStandardRequest :
  822.       choice = new H501_NonStandardRequest();
  823.       return TRUE;
  824.     case e_nonStandardConfirmation :
  825.       choice = new H501_NonStandardConfirmation();
  826.       return TRUE;
  827.     case e_nonStandardRejection :
  828.       choice = new H501_NonStandardRejection();
  829.       return TRUE;
  830.     case e_unknownMessageResponse :
  831.       choice = new H501_UnknownMessageResponse();
  832.       return TRUE;
  833.     case e_usageRequest :
  834.       choice = new H501_UsageRequest();
  835.       return TRUE;
  836.     case e_usageConfirmation :
  837.       choice = new H501_UsageConfirmation();
  838.       return TRUE;
  839.     case e_usageIndication :
  840.       choice = new H501_UsageIndication();
  841.       return TRUE;
  842.     case e_usageIndicationConfirmation :
  843.       choice = new H501_UsageIndicationConfirmation();
  844.       return TRUE;
  845.     case e_usageIndicationRejection :
  846.       choice = new H501_UsageIndicationRejection();
  847.       return TRUE;
  848.     case e_usageRejection :
  849.       choice = new H501_UsageRejection();
  850.       return TRUE;
  851.     case e_validationRequest :
  852.       choice = new H501_ValidationRequest();
  853.       return TRUE;
  854.     case e_validationConfirmation :
  855.       choice = new H501_ValidationConfirmation();
  856.       return TRUE;
  857.     case e_validationRejection :
  858.       choice = new H501_ValidationRejection();
  859.       return TRUE;
  860.     case e_authenticationRequest :
  861.       choice = new H501_AuthenticationRequest();
  862.       return TRUE;
  863.     case e_authenticationConfirmation :
  864.       choice = new H501_AuthenticationConfirmation();
  865.       return TRUE;
  866.     case e_authenticationRejection :
  867.       choice = new H501_AuthenticationRejection();
  868.       return TRUE;
  869.   }
  870.  
  871.   choice = NULL;
  872.   return FALSE;
  873. }
  874.  
  875.  
  876. PObject * H501_MessageBody::Clone() const
  877. {
  878. #ifndef PASN_LEANANDMEAN
  879.   PAssert(IsClass(H501_MessageBody::Class()), PInvalidCast);
  880. #endif
  881.   return new H501_MessageBody(*this);
  882. }
  883.  
  884.  
  885. //
  886. // ServiceRejectionReason
  887. //
  888.  
  889. H501_ServiceRejectionReason::H501_ServiceRejectionReason(unsigned tag, PASN_Object::TagClass tagClass)
  890.   : PASN_Choice(tag, tagClass, 5, TRUE
  891. #ifndef PASN_NOPRINTON
  892.       , "serviceUnavailable "
  893.         "serviceRedirected "
  894.         "security "
  895.         "continue "
  896.         "undefined "
  897.         "unknownServiceID "
  898.         "cannotSupportUsageSpec "
  899.         "neededFeature "
  900.         "genericDataReason "
  901.         "usageUnavailable "
  902.         "unknownUsageSendTo "
  903. #endif
  904.     )
  905. {
  906. }
  907.  
  908.  
  909. BOOL H501_ServiceRejectionReason::CreateObject()
  910. {
  911.   choice = (tag <= e_unknownUsageSendTo) ? new PASN_Null() : NULL;
  912.   return choice != NULL;
  913. }
  914.  
  915.  
  916. PObject * H501_ServiceRejectionReason::Clone() const
  917. {
  918. #ifndef PASN_LEANANDMEAN
  919.   PAssert(IsClass(H501_ServiceRejectionReason::Class()), PInvalidCast);
  920. #endif
  921.   return new H501_ServiceRejectionReason(*this);
  922. }
  923.  
  924.  
  925. //
  926. // ServiceReleaseReason
  927. //
  928.  
  929. H501_ServiceReleaseReason::H501_ServiceReleaseReason(unsigned tag, PASN_Object::TagClass tagClass)
  930.   : PASN_Choice(tag, tagClass, 4, TRUE
  931. #ifndef PASN_NOPRINTON
  932.       , "outOfService "
  933.         "maintenance "
  934.         "terminated "
  935.         "expired "
  936. #endif
  937.     )
  938. {
  939. }
  940.  
  941.  
  942. BOOL H501_ServiceReleaseReason::CreateObject()
  943. {
  944.   choice = (tag <= e_expired) ? new PASN_Null() : NULL;
  945.   return choice != NULL;
  946. }
  947.  
  948.  
  949. PObject * H501_ServiceReleaseReason::Clone() const
  950. {
  951. #ifndef PASN_LEANANDMEAN
  952.   PAssert(IsClass(H501_ServiceReleaseReason::Class()), PInvalidCast);
  953. #endif
  954.   return new H501_ServiceReleaseReason(*this);
  955. }
  956.  
  957.  
  958. //
  959. // DescriptorRejectionReason
  960. //
  961.  
  962. H501_DescriptorRejectionReason::H501_DescriptorRejectionReason(unsigned tag, PASN_Object::TagClass tagClass)
  963.   : PASN_Choice(tag, tagClass, 6, TRUE
  964. #ifndef PASN_NOPRINTON
  965.       , "packetSizeExceeded "
  966.         "illegalID "
  967.         "security "
  968.         "hopCountExceeded "
  969.         "noServiceRelationship "
  970.         "undefined "
  971.         "neededFeature "
  972.         "genericDataReason "
  973.         "unknownServiceID "
  974. #endif
  975.     )
  976. {
  977. }
  978.  
  979.  
  980. BOOL H501_DescriptorRejectionReason::CreateObject()
  981. {
  982.   choice = (tag <= e_unknownServiceID) ? new PASN_Null() : NULL;
  983.   return choice != NULL;
  984. }
  985.  
  986.  
  987. PObject * H501_DescriptorRejectionReason::Clone() const
  988. {
  989. #ifndef PASN_LEANANDMEAN
  990.   PAssert(IsClass(H501_DescriptorRejectionReason::Class()), PInvalidCast);
  991. #endif
  992.   return new H501_DescriptorRejectionReason(*this);
  993. }
  994.  
  995.  
  996. //
  997. // DescriptorIDRequest
  998. //
  999.  
  1000. H501_DescriptorIDRequest::H501_DescriptorIDRequest(unsigned tag, PASN_Object::TagClass tagClass)
  1001.   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
  1002. {
  1003. }
  1004.  
  1005.  
  1006. #ifndef PASN_NOPRINTON
  1007. void H501_DescriptorIDRequest::PrintOn(ostream & strm) const
  1008. {
  1009.   int indent = strm.precision() + 2;
  1010.   strm << "{\n";
  1011.   strm << setw(indent-1) << "}";
  1012. }
  1013. #endif
  1014.  
  1015.  
  1016. PINDEX H501_DescriptorIDRequest::GetDataLength() const
  1017. {
  1018.   PINDEX length = 0;
  1019.   return length;
  1020. }
  1021.  
  1022.  
  1023. BOOL H501_DescriptorIDRequest::Decode(PASN_Stream & strm)
  1024. {
  1025.   if (!PreambleDecode(strm))
  1026.     return FALSE;
  1027.  
  1028.  
  1029.   return UnknownExtensionsDecode(strm);
  1030. }
  1031.  
  1032.  
  1033. void H501_DescriptorIDRequest::Encode(PASN_Stream & strm) const
  1034. {
  1035.   PreambleEncode(strm);
  1036.  
  1037.  
  1038.   UnknownExtensionsEncode(strm);
  1039. }
  1040.  
  1041.  
  1042. PObject * H501_DescriptorIDRequest::Clone() const
  1043. {
  1044. #ifndef PASN_LEANANDMEAN
  1045.   PAssert(IsClass(H501_DescriptorIDRequest::Class()), PInvalidCast);
  1046. #endif
  1047.   return new H501_DescriptorIDRequest(*this);
  1048. }
  1049.  
  1050.  
  1051. //
  1052. // DescriptorIDRejectionReason
  1053. //
  1054.  
  1055. H501_DescriptorIDRejectionReason::H501_DescriptorIDRejectionReason(unsigned tag, PASN_Object::TagClass tagClass)
  1056.   : PASN_Choice(tag, tagClass, 5, TRUE
  1057. #ifndef PASN_NOPRINTON
  1058.       , "noDescriptors "
  1059.         "security "
  1060.         "hopCountExceeded "
  1061.         "noServiceRelationship "
  1062.         "undefined "
  1063.         "neededFeature "
  1064.         "genericDataReason "
  1065.         "unknownServiceID "
  1066. #endif
  1067.     )
  1068. {
  1069. }
  1070.  
  1071.  
  1072. BOOL H501_DescriptorIDRejectionReason::CreateObject()
  1073. {
  1074.   choice = (tag <= e_unknownServiceID) ? new PASN_Null() : NULL;
  1075.   return choice != NULL;
  1076. }
  1077.  
  1078.  
  1079. PObject * H501_DescriptorIDRejectionReason::Clone() const
  1080. {
  1081. #ifndef PASN_LEANANDMEAN
  1082.   PAssert(IsClass(H501_DescriptorIDRejectionReason::Class()), PInvalidCast);
  1083. #endif
  1084.   return new H501_DescriptorIDRejectionReason(*this);
  1085. }
  1086.  
  1087.  
  1088. //
  1089. // DescriptorUpdateAck
  1090. //
  1091.  
  1092. H501_DescriptorUpdateAck::H501_DescriptorUpdateAck(unsigned tag, PASN_Object::TagClass tagClass)
  1093.   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
  1094. {
  1095. }
  1096.  
  1097.  
  1098. #ifndef PASN_NOPRINTON
  1099. void H501_DescriptorUpdateAck::PrintOn(ostream & strm) const
  1100. {
  1101.   int indent = strm.precision() + 2;
  1102.   strm << "{\n";
  1103.   strm << setw(indent-1) << "}";
  1104. }
  1105. #endif
  1106.  
  1107.  
  1108. PINDEX H501_DescriptorUpdateAck::GetDataLength() const
  1109. {
  1110.   PINDEX length = 0;
  1111.   return length;
  1112. }
  1113.  
  1114.  
  1115. BOOL H501_DescriptorUpdateAck::Decode(PASN_Stream & strm)
  1116. {
  1117.   if (!PreambleDecode(strm))
  1118.     return FALSE;
  1119.  
  1120.  
  1121.   return UnknownExtensionsDecode(strm);
  1122. }
  1123.  
  1124.  
  1125. void H501_DescriptorUpdateAck::Encode(PASN_Stream & strm) const
  1126. {
  1127.   PreambleEncode(strm);
  1128.  
  1129.  
  1130.   UnknownExtensionsEncode(strm);
  1131. }
  1132.  
  1133.  
  1134. PObject * H501_DescriptorUpdateAck::Clone() const
  1135. {
  1136. #ifndef PASN_LEANANDMEAN
  1137.   PAssert(IsClass(H501_DescriptorUpdateAck::Class()), PInvalidCast);
  1138. #endif
  1139.   return new H501_DescriptorUpdateAck(*this);
  1140. }
  1141.  
  1142.  
  1143. //
  1144. // AccessRejectionReason
  1145. //
  1146.  
  1147. H501_AccessRejectionReason::H501_AccessRejectionReason(unsigned tag, PASN_Object::TagClass tagClass)
  1148.   : PASN_Choice(tag, tagClass, 7, TRUE
  1149. #ifndef PASN_NOPRINTON
  1150.       , "noMatch "
  1151.         "packetSizeExceeded "
  1152.         "security "
  1153.         "hopCountExceeded "
  1154.         "needCallInformation "
  1155.         "noServiceRelationship "
  1156.         "undefined "
  1157.         "neededFeature "
  1158.         "genericDataReason "
  1159.         "destinationUnavailable "
  1160.         "aliasesInconsistent "
  1161.         "resourceUnavailable "
  1162.         "incompleteAddress "
  1163.         "unknownServiceID "
  1164.         "usageUnavailable "
  1165.         "cannotSupportUsageSpec "
  1166.         "unknownUsageSendTo "
  1167. #endif
  1168.     )
  1169. {
  1170. }
  1171.  
  1172.  
  1173. BOOL H501_AccessRejectionReason::CreateObject()
  1174. {
  1175.   choice = (tag <= e_unknownUsageSendTo) ? new PASN_Null() : NULL;
  1176.   return choice != NULL;
  1177. }
  1178.  
  1179.  
  1180. PObject * H501_AccessRejectionReason::Clone() const
  1181. {
  1182. #ifndef PASN_LEANANDMEAN
  1183.   PAssert(IsClass(H501_AccessRejectionReason::Class()), PInvalidCast);
  1184. #endif
  1185.   return new H501_AccessRejectionReason(*this);
  1186. }
  1187.  
  1188.  
  1189. //
  1190. // UsageConfirmation
  1191. //
  1192.  
  1193. H501_UsageConfirmation::H501_UsageConfirmation(unsigned tag, PASN_Object::TagClass tagClass)
  1194.   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
  1195. {
  1196. }
  1197.  
  1198.  
  1199. #ifndef PASN_NOPRINTON
  1200. void H501_UsageConfirmation::PrintOn(ostream & strm) const
  1201. {
  1202.   int indent = strm.precision() + 2;
  1203.   strm << "{\n";
  1204.   strm << setw(indent-1) << "}";
  1205. }
  1206. #endif
  1207.  
  1208.  
  1209. PINDEX H501_UsageConfirmation::GetDataLength() const
  1210. {
  1211.   PINDEX length = 0;
  1212.   return length;
  1213. }
  1214.  
  1215.  
  1216. BOOL H501_UsageConfirmation::Decode(PASN_Stream & strm)
  1217. {
  1218.   if (!PreambleDecode(strm))
  1219.     return FALSE;
  1220.  
  1221.  
  1222.   return UnknownExtensionsDecode(strm);
  1223. }
  1224.  
  1225.  
  1226. void H501_UsageConfirmation::Encode(PASN_Stream & strm) const
  1227. {
  1228.   PreambleEncode(strm);
  1229.  
  1230.  
  1231.   UnknownExtensionsEncode(strm);
  1232. }
  1233.  
  1234.  
  1235. PObject * H501_UsageConfirmation::Clone() const
  1236. {
  1237. #ifndef PASN_LEANANDMEAN
  1238.   PAssert(IsClass(H501_UsageConfirmation::Class()), PInvalidCast);
  1239. #endif
  1240.   return new H501_UsageConfirmation(*this);
  1241. }
  1242.  
  1243.  
  1244. //
  1245. // UsageField
  1246. //
  1247.  
  1248. H501_UsageField::H501_UsageField(unsigned tag, PASN_Object::TagClass tagClass)
  1249.   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
  1250. {
  1251. }
  1252.  
  1253.  
  1254. #ifndef PASN_NOPRINTON
  1255. void H501_UsageField::PrintOn(ostream & strm) const
  1256. {
  1257.   int indent = strm.precision() + 2;
  1258.   strm << "{\n";
  1259.   strm << setw(indent+5) << "id = " << setprecision(indent) << m_id << '\n';
  1260.   strm << setw(indent+8) << "value = " << setprecision(indent) << m_value << '\n';
  1261.   strm << setw(indent-1) << "}";
  1262. }
  1263. #endif
  1264.  
  1265.  
  1266. PObject::Comparison H501_UsageField::Compare(const PObject & obj) const
  1267. {
  1268. #ifndef PASN_LEANANDMEAN
  1269.   PAssert(IsDescendant(H501_UsageField::Class()), PInvalidCast);
  1270. #endif
  1271.   const H501_UsageField & other = (const H501_UsageField &)obj;
  1272.  
  1273.   Comparison result;
  1274.  
  1275.   if ((result = m_id.Compare(other.m_id)) != EqualTo)
  1276.     return result;
  1277.   if ((result = m_value.Compare(other.m_value)) != EqualTo)
  1278.     return result;
  1279.  
  1280.   return PASN_Sequence::Compare(other);
  1281. }
  1282.  
  1283.  
  1284. PINDEX H501_UsageField::GetDataLength() const
  1285. {
  1286.   PINDEX length = 0;
  1287.   length += m_id.GetObjectLength();
  1288.   length += m_value.GetObjectLength();
  1289.   return length;
  1290. }
  1291.  
  1292.  
  1293. BOOL H501_UsageField::Decode(PASN_Stream & strm)
  1294. {
  1295.   if (!PreambleDecode(strm))
  1296.     return FALSE;
  1297.  
  1298.   if (!m_id.Decode(strm))
  1299.     return FALSE;
  1300.   if (!m_value.Decode(strm))
  1301.     return FALSE;
  1302.  
  1303.   return UnknownExtensionsDecode(strm);
  1304. }
  1305.  
  1306.  
  1307. void H501_UsageField::Encode(PASN_Stream & strm) const
  1308. {
  1309.   PreambleEncode(strm);
  1310.  
  1311.   m_id.Encode(strm);
  1312.   m_value.Encode(strm);
  1313.  
  1314.   UnknownExtensionsEncode(strm);
  1315. }
  1316.  
  1317.  
  1318. PObject * H501_UsageField::Clone() const
  1319. {
  1320. #ifndef PASN_LEANANDMEAN
  1321.   PAssert(IsClass(H501_UsageField::Class()), PInvalidCast);
  1322. #endif
  1323.   return new H501_UsageField(*this);
  1324. }
  1325.  
  1326.  
  1327. //
  1328. // UsageRejectReason
  1329. //
  1330.  
  1331. H501_UsageRejectReason::H501_UsageRejectReason(unsigned tag, PASN_Object::TagClass tagClass)
  1332.   : PASN_Choice(tag, tagClass, 5, TRUE
  1333. #ifndef PASN_NOPRINTON
  1334.       , "invalidCall "
  1335.         "unavailable "
  1336.         "security "
  1337.         "noServiceRelationship "
  1338.         "undefined "
  1339.         "neededFeature "
  1340.         "genericDataReason "
  1341.         "unknownServiceID "
  1342. #endif
  1343.     )
  1344. {
  1345. }
  1346.  
  1347.  
  1348. BOOL H501_UsageRejectReason::CreateObject()
  1349. {
  1350.   choice = (tag <= e_unknownServiceID) ? new PASN_Null() : NULL;
  1351.   return choice != NULL;
  1352. }
  1353.  
  1354.  
  1355. PObject * H501_UsageRejectReason::Clone() const
  1356. {
  1357. #ifndef PASN_LEANANDMEAN
  1358.   PAssert(IsClass(H501_UsageRejectReason::Class()), PInvalidCast);
  1359. #endif
  1360.   return new H501_UsageRejectReason(*this);
  1361. }
  1362.  
  1363.  
  1364. //
  1365. // UsageIndicationConfirmation
  1366. //
  1367.  
  1368. H501_UsageIndicationConfirmation::H501_UsageIndicationConfirmation(unsigned tag, PASN_Object::TagClass tagClass)
  1369.   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
  1370. {
  1371. }
  1372.  
  1373.  
  1374. #ifndef PASN_NOPRINTON
  1375. void H501_UsageIndicationConfirmation::PrintOn(ostream & strm) const
  1376. {
  1377.   int indent = strm.precision() + 2;
  1378.   strm << "{\n";
  1379.   strm << setw(indent-1) << "}";
  1380. }
  1381. #endif
  1382.  
  1383.  
  1384. PINDEX H501_UsageIndicationConfirmation::GetDataLength() const
  1385. {
  1386.   PINDEX length = 0;
  1387.   return length;
  1388. }
  1389.  
  1390.  
  1391. BOOL H501_UsageIndicationConfirmation::Decode(PASN_Stream & strm)
  1392. {
  1393.   if (!PreambleDecode(strm))
  1394.     return FALSE;
  1395.  
  1396.  
  1397.   return UnknownExtensionsDecode(strm);
  1398. }
  1399.  
  1400.  
  1401. void H501_UsageIndicationConfirmation::Encode(PASN_Stream & strm) const
  1402. {
  1403.   PreambleEncode(strm);
  1404.  
  1405.  
  1406.   UnknownExtensionsEncode(strm);
  1407. }
  1408.  
  1409.  
  1410. PObject * H501_UsageIndicationConfirmation::Clone() const
  1411. {
  1412. #ifndef PASN_LEANANDMEAN
  1413.   PAssert(IsClass(H501_UsageIndicationConfirmation::Class()), PInvalidCast);
  1414. #endif
  1415.   return new H501_UsageIndicationConfirmation(*this);
  1416. }
  1417.  
  1418.  
  1419. //
  1420. // UsageIndicationRejectionReason
  1421. //
  1422.  
  1423. H501_UsageIndicationRejectionReason::H501_UsageIndicationRejectionReason(unsigned tag, PASN_Object::TagClass tagClass)
  1424.   : PASN_Choice(tag, tagClass, 5, TRUE
  1425. #ifndef PASN_NOPRINTON
  1426.       , "unknownCall "
  1427.         "incomplete "
  1428.         "security "
  1429.         "noServiceRelationship "
  1430.         "undefined "
  1431.         "neededFeature "
  1432.         "genericDataReason "
  1433.         "unknownServiceID "
  1434. #endif
  1435.     )
  1436. {
  1437. }
  1438.  
  1439.  
  1440. BOOL H501_UsageIndicationRejectionReason::CreateObject()
  1441. {
  1442.   choice = (tag <= e_unknownServiceID) ? new PASN_Null() : NULL;
  1443.   return choice != NULL;
  1444. }
  1445.  
  1446.  
  1447. PObject * H501_UsageIndicationRejectionReason::Clone() const
  1448. {
  1449. #ifndef PASN_LEANANDMEAN
  1450.   PAssert(IsClass(H501_UsageIndicationRejectionReason::Class()), PInvalidCast);
  1451. #endif
  1452.   return new H501_UsageIndicationRejectionReason(*this);
  1453. }
  1454.  
  1455.  
  1456. //
  1457. // ValidationRejectionReason
  1458. //
  1459.  
  1460. H501_ValidationRejectionReason::H501_ValidationRejectionReason(unsigned tag, PASN_Object::TagClass tagClass)
  1461.   : PASN_Choice(tag, tagClass, 7, TRUE
  1462. #ifndef PASN_NOPRINTON
  1463.       , "tokenNotValid "
  1464.         "security "
  1465.         "hopCountExceeded "
  1466.         "missingSourceInfo "
  1467.         "missingDestInfo "
  1468.         "noServiceRelationship "
  1469.         "undefined "
  1470.         "neededFeature "
  1471.         "genericDataReason "
  1472.         "unknownServiceID "
  1473. #endif
  1474.     )
  1475. {
  1476. }
  1477.  
  1478.  
  1479. BOOL H501_ValidationRejectionReason::CreateObject()
  1480. {
  1481.   choice = (tag <= e_unknownServiceID) ? new PASN_Null() : NULL;
  1482.   return choice != NULL;
  1483. }
  1484.  
  1485.  
  1486. PObject * H501_ValidationRejectionReason::Clone() const
  1487. {
  1488. #ifndef PASN_LEANANDMEAN
  1489.   PAssert(IsClass(H501_ValidationRejectionReason::Class()), PInvalidCast);
  1490. #endif
  1491.   return new H501_ValidationRejectionReason(*this);
  1492. }
  1493.  
  1494.  
  1495. //
  1496. // NonStandardRequest
  1497. //
  1498.  
  1499. H501_NonStandardRequest::H501_NonStandardRequest(unsigned tag, PASN_Object::TagClass tagClass)
  1500.   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
  1501. {
  1502. }
  1503.  
  1504.  
  1505. #ifndef PASN_NOPRINTON
  1506. void H501_NonStandardRequest::PrintOn(ostream & strm) const
  1507. {
  1508.   int indent = strm.precision() + 2;
  1509.   strm << "{\n";
  1510.   strm << setw(indent-1) << "}";
  1511. }
  1512. #endif
  1513.  
  1514.  
  1515. PINDEX H501_NonStandardRequest::GetDataLength() const
  1516. {
  1517.   PINDEX length = 0;
  1518.   return length;
  1519. }
  1520.  
  1521.  
  1522. BOOL H501_NonStandardRequest::Decode(PASN_Stream & strm)
  1523. {
  1524.   if (!PreambleDecode(strm))
  1525.     return FALSE;
  1526.  
  1527.  
  1528.   return UnknownExtensionsDecode(strm);
  1529. }
  1530.  
  1531.  
  1532. void H501_NonStandardRequest::Encode(PASN_Stream & strm) const
  1533. {
  1534.   PreambleEncode(strm);
  1535.  
  1536.  
  1537.   UnknownExtensionsEncode(strm);
  1538. }
  1539.  
  1540.  
  1541. PObject * H501_NonStandardRequest::Clone() const
  1542. {
  1543. #ifndef PASN_LEANANDMEAN
  1544.   PAssert(IsClass(H501_NonStandardRequest::Class()), PInvalidCast);
  1545. #endif
  1546.   return new H501_NonStandardRequest(*this);
  1547. }
  1548.  
  1549.  
  1550. //
  1551. // NonStandardConfirmation
  1552. //
  1553.  
  1554. H501_NonStandardConfirmation::H501_NonStandardConfirmation(unsigned tag, PASN_Object::TagClass tagClass)
  1555.   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
  1556. {
  1557. }
  1558.  
  1559.  
  1560. #ifndef PASN_NOPRINTON
  1561. void H501_NonStandardConfirmation::PrintOn(ostream & strm) const
  1562. {
  1563.   int indent = strm.precision() + 2;
  1564.   strm << "{\n";
  1565.   strm << setw(indent-1) << "}";
  1566. }
  1567. #endif
  1568.  
  1569.  
  1570. PINDEX H501_NonStandardConfirmation::GetDataLength() const
  1571. {
  1572.   PINDEX length = 0;
  1573.   return length;
  1574. }
  1575.  
  1576.  
  1577. BOOL H501_NonStandardConfirmation::Decode(PASN_Stream & strm)
  1578. {
  1579.   if (!PreambleDecode(strm))
  1580.     return FALSE;
  1581.  
  1582.  
  1583.   return UnknownExtensionsDecode(strm);
  1584. }
  1585.  
  1586.  
  1587. void H501_NonStandardConfirmation::Encode(PASN_Stream & strm) const
  1588. {
  1589.   PreambleEncode(strm);
  1590.  
  1591.  
  1592.   UnknownExtensionsEncode(strm);
  1593. }
  1594.  
  1595.  
  1596. PObject * H501_NonStandardConfirmation::Clone() const
  1597. {
  1598. #ifndef PASN_LEANANDMEAN
  1599.   PAssert(IsClass(H501_NonStandardConfirmation::Class()), PInvalidCast);
  1600. #endif
  1601.   return new H501_NonStandardConfirmation(*this);
  1602. }
  1603.  
  1604.  
  1605. //
  1606. // NonStandardRejectionReason
  1607. //
  1608.  
  1609. H501_NonStandardRejectionReason::H501_NonStandardRejectionReason(unsigned tag, PASN_Object::TagClass tagClass)
  1610.   : PASN_Choice(tag, tagClass, 3, TRUE
  1611. #ifndef PASN_NOPRINTON
  1612.       , "notSupported "
  1613.         "noServiceRelationship "
  1614.         "undefined "
  1615.         "neededFeature "
  1616.         "genericDataReason "
  1617.         "unknownServiceID "
  1618. #endif
  1619.     )
  1620. {
  1621. }
  1622.  
  1623.  
  1624. BOOL H501_NonStandardRejectionReason::CreateObject()
  1625. {
  1626.   choice = (tag <= e_unknownServiceID) ? new PASN_Null() : NULL;
  1627.   return choice != NULL;
  1628. }
  1629.  
  1630.  
  1631. PObject * H501_NonStandardRejectionReason::Clone() const
  1632. {
  1633. #ifndef PASN_LEANANDMEAN
  1634.   PAssert(IsClass(H501_NonStandardRejectionReason::Class()), PInvalidCast);
  1635. #endif
  1636.   return new H501_NonStandardRejectionReason(*this);
  1637. }
  1638.  
  1639.  
  1640. //
  1641. // UnknownMessageReason
  1642. //
  1643.  
  1644. H501_UnknownMessageReason::H501_UnknownMessageReason(unsigned tag, PASN_Object::TagClass tagClass)
  1645.   : PASN_Choice(tag, tagClass, 2, TRUE
  1646. #ifndef PASN_NOPRINTON
  1647.       , "notUnderstood "
  1648.         "undefined "
  1649. #endif
  1650.     )
  1651. {
  1652. }
  1653.  
  1654.  
  1655. BOOL H501_UnknownMessageReason::CreateObject()
  1656. {
  1657.   choice = (tag <= e_undefined) ? new PASN_Null() : NULL;
  1658.   return choice != NULL;
  1659. }
  1660.  
  1661.  
  1662. PObject * H501_UnknownMessageReason::Clone() const
  1663. {
  1664. #ifndef PASN_LEANANDMEAN
  1665.   PAssert(IsClass(H501_UnknownMessageReason::Class()), PInvalidCast);
  1666. #endif
  1667.   return new H501_UnknownMessageReason(*this);
  1668. }
  1669.  
  1670.  
  1671. //
  1672. // ApplicationMessage
  1673. //
  1674.  
  1675. H501_ApplicationMessage::H501_ApplicationMessage(unsigned tag, PASN_Object::TagClass tagClass)
  1676.   : PASN_OctetString(tag, tagClass)
  1677. {
  1678. }
  1679.  
  1680.  
  1681. H501_ApplicationMessage::H501_ApplicationMessage(const char * v)
  1682. {
  1683.   SetValue(v);
  1684. }
  1685.  
  1686.  
  1687. H501_ApplicationMessage::H501_ApplicationMessage(const PString & v)
  1688. {
  1689.   SetValue(v);
  1690. }
  1691.  
  1692.  
  1693. H501_ApplicationMessage::H501_ApplicationMessage(const PBYTEArray & v)
  1694. {
  1695.   SetValue(v);
  1696. }
  1697.  
  1698.  
  1699. H501_ApplicationMessage & H501_ApplicationMessage::operator=(const char * v)
  1700. {
  1701.   SetValue(v);
  1702.   return *this;
  1703. }
  1704.  
  1705.  
  1706. H501_ApplicationMessage & H501_ApplicationMessage::operator=(const PString & v)
  1707. {
  1708.   SetValue(v);
  1709.   return *this;
  1710. }
  1711.  
  1712.  
  1713. H501_ApplicationMessage & H501_ApplicationMessage::operator=(const PBYTEArray & v)
  1714. {
  1715.   SetValue(v);
  1716.   return *this;
  1717. }
  1718.  
  1719.  
  1720. PObject * H501_ApplicationMessage::Clone() const
  1721. {
  1722. #ifndef PASN_LEANANDMEAN
  1723.   PAssert(IsClass(H501_ApplicationMessage::Class()), PInvalidCast);
  1724. #endif
  1725.   return new H501_ApplicationMessage(*this);
  1726. }
  1727.  
  1728.  
  1729. //
  1730. // AuthenticationConfirmation
  1731. //
  1732.  
  1733. H501_AuthenticationConfirmation::H501_AuthenticationConfirmation(unsigned tag, PASN_Object::TagClass tagClass)
  1734.   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
  1735. {
  1736. }
  1737.  
  1738.  
  1739. #ifndef PASN_NOPRINTON
  1740. void H501_AuthenticationConfirmation::PrintOn(ostream & strm) const
  1741. {
  1742.   int indent = strm.precision() + 2;
  1743.   strm << "{\n";
  1744.   strm << setw(indent-1) << "}";
  1745. }
  1746. #endif
  1747.  
  1748.  
  1749. PINDEX H501_AuthenticationConfirmation::GetDataLength() const
  1750. {
  1751.   PINDEX length = 0;
  1752.   return length;
  1753. }
  1754.  
  1755.  
  1756. BOOL H501_AuthenticationConfirmation::Decode(PASN_Stream & strm)
  1757. {
  1758.   if (!PreambleDecode(strm))
  1759.     return FALSE;
  1760.  
  1761.  
  1762.   return UnknownExtensionsDecode(strm);
  1763. }
  1764.  
  1765.  
  1766. void H501_AuthenticationConfirmation::Encode(PASN_Stream & strm) const
  1767. {
  1768.   PreambleEncode(strm);
  1769.  
  1770.  
  1771.   UnknownExtensionsEncode(strm);
  1772. }
  1773.  
  1774.  
  1775. PObject * H501_AuthenticationConfirmation::Clone() const
  1776. {
  1777. #ifndef PASN_LEANANDMEAN
  1778.   PAssert(IsClass(H501_AuthenticationConfirmation::Class()), PInvalidCast);
  1779. #endif
  1780.   return new H501_AuthenticationConfirmation(*this);
  1781. }
  1782.  
  1783.  
  1784. //
  1785. // AuthenticationRejectionReason
  1786. //
  1787.  
  1788. H501_AuthenticationRejectionReason::H501_AuthenticationRejectionReason(unsigned tag, PASN_Object::TagClass tagClass)
  1789.   : PASN_Choice(tag, tagClass, 13, TRUE
  1790. #ifndef PASN_NOPRINTON
  1791.       , "security "
  1792.         "hopCountExceeded "
  1793.         "noServiceRelationship "
  1794.         "undefined "
  1795.         "neededFeature "
  1796.         "genericDataReason "
  1797.         "unknownServiceID "
  1798.         "securityWrongSyncTime "
  1799.         "securityReplay "
  1800.         "securityWrongGeneralID "
  1801.         "securityWrongSendersID "
  1802.         "securityIntegrityFailed "
  1803.         "securityWrongOID "
  1804. #endif
  1805.     )
  1806. {
  1807. }
  1808.  
  1809.  
  1810. BOOL H501_AuthenticationRejectionReason::CreateObject()
  1811. {
  1812.   choice = (tag <= e_securityWrongOID) ? new PASN_Null() : NULL;
  1813.   return choice != NULL;
  1814. }
  1815.  
  1816.  
  1817. PObject * H501_AuthenticationRejectionReason::Clone() const
  1818. {
  1819. #ifndef PASN_LEANANDMEAN
  1820.   PAssert(IsClass(H501_AuthenticationRejectionReason::Class()), PInvalidCast);
  1821. #endif
  1822.   return new H501_AuthenticationRejectionReason(*this);
  1823. }
  1824.  
  1825.  
  1826. //
  1827. // Pattern
  1828. //
  1829.  
  1830. H501_Pattern::H501_Pattern(unsigned tag, PASN_Object::TagClass tagClass)
  1831.   : PASN_Choice(tag, tagClass, 3, TRUE
  1832. #ifndef PASN_NOPRINTON
  1833.       , "specific "
  1834.         "wildcard "
  1835.         "range "
  1836. #endif
  1837.     )
  1838. {
  1839. }
  1840.  
  1841.  
  1842. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  1843. H501_Pattern::operator H225_AliasAddress &() const
  1844. #else
  1845. H501_Pattern::operator H225_AliasAddress &()
  1846. {
  1847. #ifndef PASN_LEANANDMEAN
  1848.   PAssert(PAssertNULL(choice)->IsDescendant(H225_AliasAddress::Class()), PInvalidCast);
  1849. #endif
  1850.   return *(H225_AliasAddress *)choice;
  1851. }
  1852.  
  1853.  
  1854. H501_Pattern::operator const H225_AliasAddress &() const
  1855. #endif
  1856. {
  1857. #ifndef PASN_LEANANDMEAN
  1858.   PAssert(PAssertNULL(choice)->IsDescendant(H225_AliasAddress::Class()), PInvalidCast);
  1859. #endif
  1860.   return *(H225_AliasAddress *)choice;
  1861. }
  1862.  
  1863.  
  1864. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  1865. H501_Pattern::operator H501_Pattern_range &() const
  1866. #else
  1867. H501_Pattern::operator H501_Pattern_range &()
  1868. {
  1869. #ifndef PASN_LEANANDMEAN
  1870.   PAssert(PAssertNULL(choice)->IsDescendant(H501_Pattern_range::Class()), PInvalidCast);
  1871. #endif
  1872.   return *(H501_Pattern_range *)choice;
  1873. }
  1874.  
  1875.  
  1876. H501_Pattern::operator const H501_Pattern_range &() const
  1877. #endif
  1878. {
  1879. #ifndef PASN_LEANANDMEAN
  1880.   PAssert(PAssertNULL(choice)->IsDescendant(H501_Pattern_range::Class()), PInvalidCast);
  1881. #endif
  1882.   return *(H501_Pattern_range *)choice;
  1883. }
  1884.  
  1885.  
  1886. BOOL H501_Pattern::CreateObject()
  1887. {
  1888.   switch (tag) {
  1889.     case e_specific :
  1890.     case e_wildcard :
  1891.       choice = new H225_AliasAddress();
  1892.       return TRUE;
  1893.     case e_range :
  1894.       choice = new H501_Pattern_range();
  1895.       return TRUE;
  1896.   }
  1897.  
  1898.   choice = NULL;
  1899.   return FALSE;
  1900. }
  1901.  
  1902.  
  1903. PObject * H501_Pattern::Clone() const
  1904. {
  1905. #ifndef PASN_LEANANDMEAN
  1906.   PAssert(IsClass(H501_Pattern::Class()), PInvalidCast);
  1907. #endif
  1908.   return new H501_Pattern(*this);
  1909. }
  1910.  
  1911.  
  1912. //
  1913. // AccessToken
  1914. //
  1915.  
  1916. H501_AccessToken::H501_AccessToken(unsigned tag, PASN_Object::TagClass tagClass)
  1917.   : PASN_Choice(tag, tagClass, 2, TRUE
  1918. #ifndef PASN_NOPRINTON
  1919.       , "token "
  1920.         "cryptoToken "
  1921.         "genericData "
  1922. #endif
  1923.     )
  1924. {
  1925. }
  1926.  
  1927.  
  1928. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  1929. H501_AccessToken::operator H235_ClearToken &() const
  1930. #else
  1931. H501_AccessToken::operator H235_ClearToken &()
  1932. {
  1933. #ifndef PASN_LEANANDMEAN
  1934.   PAssert(PAssertNULL(choice)->IsDescendant(H235_ClearToken::Class()), PInvalidCast);
  1935. #endif
  1936.   return *(H235_ClearToken *)choice;
  1937. }
  1938.  
  1939.  
  1940. H501_AccessToken::operator const H235_ClearToken &() const
  1941. #endif
  1942. {
  1943. #ifndef PASN_LEANANDMEAN
  1944.   PAssert(PAssertNULL(choice)->IsDescendant(H235_ClearToken::Class()), PInvalidCast);
  1945. #endif
  1946.   return *(H235_ClearToken *)choice;
  1947. }
  1948.  
  1949.  
  1950. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  1951. H501_AccessToken::operator H225_CryptoH323Token &() const
  1952. #else
  1953. H501_AccessToken::operator H225_CryptoH323Token &()
  1954. {
  1955. #ifndef PASN_LEANANDMEAN
  1956.   PAssert(PAssertNULL(choice)->IsDescendant(H225_CryptoH323Token::Class()), PInvalidCast);
  1957. #endif
  1958.   return *(H225_CryptoH323Token *)choice;
  1959. }
  1960.  
  1961.  
  1962. H501_AccessToken::operator const H225_CryptoH323Token &() const
  1963. #endif
  1964. {
  1965. #ifndef PASN_LEANANDMEAN
  1966.   PAssert(PAssertNULL(choice)->IsDescendant(H225_CryptoH323Token::Class()), PInvalidCast);
  1967. #endif
  1968.   return *(H225_CryptoH323Token *)choice;
  1969. }
  1970.  
  1971.  
  1972. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  1973. H501_AccessToken::operator H225_GenericData &() const
  1974. #else
  1975. H501_AccessToken::operator H225_GenericData &()
  1976. {
  1977. #ifndef PASN_LEANANDMEAN
  1978.   PAssert(PAssertNULL(choice)->IsDescendant(H225_GenericData::Class()), PInvalidCast);
  1979. #endif
  1980.   return *(H225_GenericData *)choice;
  1981. }
  1982.  
  1983.  
  1984. H501_AccessToken::operator const H225_GenericData &() const
  1985. #endif
  1986. {
  1987. #ifndef PASN_LEANANDMEAN
  1988.   PAssert(PAssertNULL(choice)->IsDescendant(H225_GenericData::Class()), PInvalidCast);
  1989. #endif
  1990.   return *(H225_GenericData *)choice;
  1991. }
  1992.  
  1993.  
  1994. BOOL H501_AccessToken::CreateObject()
  1995. {
  1996.   switch (tag) {
  1997.     case e_token :
  1998.       choice = new H235_ClearToken();
  1999.       return TRUE;
  2000.     case e_cryptoToken :
  2001.       choice = new H225_CryptoH323Token();
  2002.       return TRUE;
  2003.     case e_genericData :
  2004.       choice = new H225_GenericData();
  2005.       return TRUE;
  2006.   }
  2007.  
  2008.   choice = NULL;
  2009.   return FALSE;
  2010. }
  2011.  
  2012.  
  2013. PObject * H501_AccessToken::Clone() const
  2014. {
  2015. #ifndef PASN_LEANANDMEAN
  2016.   PAssert(IsClass(H501_AccessToken::Class()), PInvalidCast);
  2017. #endif
  2018.   return new H501_AccessToken(*this);
  2019. }
  2020.  
  2021.  
  2022. //
  2023. // CallInformation
  2024. //
  2025.  
  2026. H501_CallInformation::H501_CallInformation(unsigned tag, PASN_Object::TagClass tagClass)
  2027.   : PASN_Sequence(tag, tagClass, 0, TRUE, 1)
  2028. {
  2029. }
  2030.  
  2031.  
  2032. #ifndef PASN_NOPRINTON
  2033. void H501_CallInformation::PrintOn(ostream & strm) const
  2034. {
  2035.   int indent = strm.precision() + 2;
  2036.   strm << "{\n";
  2037.   strm << setw(indent+17) << "callIdentifier = " << setprecision(indent) << m_callIdentifier << '\n';
  2038.   strm << setw(indent+15) << "conferenceID = " << setprecision(indent) << m_conferenceID << '\n';
  2039.   if (HasOptionalField(e_circuitID))
  2040.     strm << setw(indent+12) << "circuitID = " << setprecision(indent) << m_circuitID << '\n';
  2041.   strm << setw(indent-1) << "}";
  2042. }
  2043. #endif
  2044.  
  2045.  
  2046. PObject::Comparison H501_CallInformation::Compare(const PObject & obj) const
  2047. {
  2048. #ifndef PASN_LEANANDMEAN
  2049.   PAssert(IsDescendant(H501_CallInformation::Class()), PInvalidCast);
  2050. #endif
  2051.   const H501_CallInformation & other = (const H501_CallInformation &)obj;
  2052.  
  2053.   Comparison result;
  2054.  
  2055.   if ((result = m_callIdentifier.Compare(other.m_callIdentifier)) != EqualTo)
  2056.     return result;
  2057.   if ((result = m_conferenceID.Compare(other.m_conferenceID)) != EqualTo)
  2058.     return result;
  2059.  
  2060.   return PASN_Sequence::Compare(other);
  2061. }
  2062.  
  2063.  
  2064. PINDEX H501_CallInformation::GetDataLength() const
  2065. {
  2066.   PINDEX length = 0;
  2067.   length += m_callIdentifier.GetObjectLength();
  2068.   length += m_conferenceID.GetObjectLength();
  2069.   return length;
  2070. }
  2071.  
  2072.  
  2073. BOOL H501_CallInformation::Decode(PASN_Stream & strm)
  2074. {
  2075.   if (!PreambleDecode(strm))
  2076.     return FALSE;
  2077.  
  2078.   if (!m_callIdentifier.Decode(strm))
  2079.     return FALSE;
  2080.   if (!m_conferenceID.Decode(strm))
  2081.     return FALSE;
  2082.   if (!KnownExtensionDecode(strm, e_circuitID, m_circuitID))
  2083.     return FALSE;
  2084.  
  2085.   return UnknownExtensionsDecode(strm);
  2086. }
  2087.  
  2088.  
  2089. void H501_CallInformation::Encode(PASN_Stream & strm) const
  2090. {
  2091.   PreambleEncode(strm);
  2092.  
  2093.   m_callIdentifier.Encode(strm);
  2094.   m_conferenceID.Encode(strm);
  2095.   KnownExtensionEncode(strm, e_circuitID, m_circuitID);
  2096.  
  2097.   UnknownExtensionsEncode(strm);
  2098. }
  2099.  
  2100.  
  2101. PObject * H501_CallInformation::Clone() const
  2102. {
  2103. #ifndef PASN_LEANANDMEAN
  2104.   PAssert(IsClass(H501_CallInformation::Class()), PInvalidCast);
  2105. #endif
  2106.   return new H501_CallInformation(*this);
  2107. }
  2108.  
  2109.  
  2110. //
  2111. // UsageCallStatus
  2112. //
  2113.  
  2114. H501_UsageCallStatus::H501_UsageCallStatus(unsigned tag, PASN_Object::TagClass tagClass)
  2115.   : PASN_Choice(tag, tagClass, 3, TRUE
  2116. #ifndef PASN_NOPRINTON
  2117.       , "preConnect "
  2118.         "callInProgress "
  2119.         "callEnded "
  2120.         "registrationLost "
  2121. #endif
  2122.     )
  2123. {
  2124. }
  2125.  
  2126.  
  2127. BOOL H501_UsageCallStatus::CreateObject()
  2128. {
  2129.   choice = (tag <= e_registrationLost) ? new PASN_Null() : NULL;
  2130.   return choice != NULL;
  2131. }
  2132.  
  2133.  
  2134. PObject * H501_UsageCallStatus::Clone() const
  2135. {
  2136. #ifndef PASN_LEANANDMEAN
  2137.   PAssert(IsClass(H501_UsageCallStatus::Class()), PInvalidCast);
  2138. #endif
  2139.   return new H501_UsageCallStatus(*this);
  2140. }
  2141.  
  2142.  
  2143. //
  2144. // Role
  2145. //
  2146.  
  2147. H501_Role::H501_Role(unsigned tag, PASN_Object::TagClass tagClass)
  2148.   : PASN_Choice(tag, tagClass, 3, TRUE
  2149. #ifndef PASN_NOPRINTON
  2150.       , "originator "
  2151.         "destination "
  2152.         "nonStandardData "
  2153. #endif
  2154.     )
  2155. {
  2156. }
  2157.  
  2158.  
  2159. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  2160. H501_Role::operator H225_NonStandardParameter &() const
  2161. #else
  2162. H501_Role::operator H225_NonStandardParameter &()
  2163. {
  2164. #ifndef PASN_LEANANDMEAN
  2165.   PAssert(PAssertNULL(choice)->IsDescendant(H225_NonStandardParameter::Class()), PInvalidCast);
  2166. #endif
  2167.   return *(H225_NonStandardParameter *)choice;
  2168. }
  2169.  
  2170.  
  2171. H501_Role::operator const H225_NonStandardParameter &() const
  2172. #endif
  2173. {
  2174. #ifndef PASN_LEANANDMEAN
  2175.   PAssert(PAssertNULL(choice)->IsDescendant(H225_NonStandardParameter::Class()), PInvalidCast);
  2176. #endif
  2177.   return *(H225_NonStandardParameter *)choice;
  2178. }
  2179.  
  2180.  
  2181. BOOL H501_Role::CreateObject()
  2182. {
  2183.   switch (tag) {
  2184.     case e_originator :
  2185.     case e_destination :
  2186.       choice = new PASN_Null();
  2187.       return TRUE;
  2188.     case e_nonStandardData :
  2189.       choice = new H225_NonStandardParameter();
  2190.       return TRUE;
  2191.   }
  2192.  
  2193.   choice = NULL;
  2194.   return FALSE;
  2195. }
  2196.  
  2197.  
  2198. PObject * H501_Role::Clone() const
  2199. {
  2200. #ifndef PASN_LEANANDMEAN
  2201.   PAssert(IsClass(H501_Role::Class()), PInvalidCast);
  2202. #endif
  2203.   return new H501_Role(*this);
  2204. }
  2205.  
  2206.  
  2207. //
  2208. // TimeZone
  2209. //
  2210.  
  2211. H501_TimeZone::H501_TimeZone(unsigned tag, PASN_Object::TagClass tagClass)
  2212.   : PASN_Integer(tag, tagClass)
  2213. {
  2214.   SetConstraints(PASN_Object::FixedConstraint, -43200, 43200);
  2215. }
  2216.  
  2217.  
  2218. H501_TimeZone & H501_TimeZone::operator=(int v)
  2219. {
  2220.   SetValue(v);
  2221.   return *this;
  2222. }
  2223.  
  2224.  
  2225. H501_TimeZone & H501_TimeZone::operator=(unsigned v)
  2226. {
  2227.   SetValue(v);
  2228.   return *this;
  2229. }
  2230.  
  2231.  
  2232. PObject * H501_TimeZone::Clone() const
  2233. {
  2234. #ifndef PASN_LEANANDMEAN
  2235.   PAssert(IsClass(H501_TimeZone::Class()), PInvalidCast);
  2236. #endif
  2237.   return new H501_TimeZone(*this);
  2238. }
  2239.  
  2240.  
  2241. //
  2242. // TerminationCause
  2243. //
  2244.  
  2245. H501_TerminationCause::H501_TerminationCause(unsigned tag, PASN_Object::TagClass tagClass)
  2246.   : PASN_Sequence(tag, tagClass, 2, TRUE, 0)
  2247. {
  2248.   m_causeIE.SetConstraints(PASN_Object::FixedConstraint, 1, 65535);
  2249. }
  2250.  
  2251.  
  2252. #ifndef PASN_NOPRINTON
  2253. void H501_TerminationCause::PrintOn(ostream & strm) const
  2254. {
  2255.   int indent = strm.precision() + 2;
  2256.   strm << "{\n";
  2257.   strm << setw(indent+24) << "releaseCompleteReason = " << setprecision(indent) << m_releaseCompleteReason << '\n';
  2258.   if (HasOptionalField(e_causeIE))
  2259.     strm << setw(indent+10) << "causeIE = " << setprecision(indent) << m_causeIE << '\n';
  2260.   if (HasOptionalField(e_nonStandardData))
  2261.     strm << setw(indent+18) << "nonStandardData = " << setprecision(indent) << m_nonStandardData << '\n';
  2262.   strm << setw(indent-1) << "}";
  2263. }
  2264. #endif
  2265.  
  2266.  
  2267. PObject::Comparison H501_TerminationCause::Compare(const PObject & obj) const
  2268. {
  2269. #ifndef PASN_LEANANDMEAN
  2270.   PAssert(IsDescendant(H501_TerminationCause::Class()), PInvalidCast);
  2271. #endif
  2272.   const H501_TerminationCause & other = (const H501_TerminationCause &)obj;
  2273.  
  2274.   Comparison result;
  2275.  
  2276.   if ((result = m_releaseCompleteReason.Compare(other.m_releaseCompleteReason)) != EqualTo)
  2277.     return result;
  2278.   if ((result = m_causeIE.Compare(other.m_causeIE)) != EqualTo)
  2279.     return result;
  2280.   if ((result = m_nonStandardData.Compare(other.m_nonStandardData)) != EqualTo)
  2281.     return result;
  2282.  
  2283.   return PASN_Sequence::Compare(other);
  2284. }
  2285.  
  2286.  
  2287. PINDEX H501_TerminationCause::GetDataLength() const
  2288. {
  2289.   PINDEX length = 0;
  2290.   length += m_releaseCompleteReason.GetObjectLength();
  2291.   if (HasOptionalField(e_causeIE))
  2292.     length += m_causeIE.GetObjectLength();
  2293.   if (HasOptionalField(e_nonStandardData))
  2294.     length += m_nonStandardData.GetObjectLength();
  2295.   return length;
  2296. }
  2297.  
  2298.  
  2299. BOOL H501_TerminationCause::Decode(PASN_Stream & strm)
  2300. {
  2301.   if (!PreambleDecode(strm))
  2302.     return FALSE;
  2303.  
  2304.   if (!m_releaseCompleteReason.Decode(strm))
  2305.     return FALSE;
  2306.   if (HasOptionalField(e_causeIE) && !m_causeIE.Decode(strm))
  2307.     return FALSE;
  2308.   if (HasOptionalField(e_nonStandardData) && !m_nonStandardData.Decode(strm))
  2309.     return FALSE;
  2310.  
  2311.   return UnknownExtensionsDecode(strm);
  2312. }
  2313.  
  2314.  
  2315. void H501_TerminationCause::Encode(PASN_Stream & strm) const
  2316. {
  2317.   PreambleEncode(strm);
  2318.  
  2319.   m_releaseCompleteReason.Encode(strm);
  2320.   if (HasOptionalField(e_causeIE))
  2321.     m_causeIE.Encode(strm);
  2322.   if (HasOptionalField(e_nonStandardData))
  2323.     m_nonStandardData.Encode(strm);
  2324.  
  2325.   UnknownExtensionsEncode(strm);
  2326. }
  2327.  
  2328.  
  2329. PObject * H501_TerminationCause::Clone() const
  2330. {
  2331. #ifndef PASN_LEANANDMEAN
  2332.   PAssert(IsClass(H501_TerminationCause::Class()), PInvalidCast);
  2333. #endif
  2334.   return new H501_TerminationCause(*this);
  2335. }
  2336.  
  2337.  
  2338. //
  2339. // ProtocolVersion
  2340. //
  2341.  
  2342. H501_ProtocolVersion::H501_ProtocolVersion(unsigned tag, PASN_Object::TagClass tagClass)
  2343.   : PASN_ObjectId(tag, tagClass)
  2344. {
  2345. }
  2346.  
  2347.  
  2348. PObject * H501_ProtocolVersion::Clone() const
  2349. {
  2350. #ifndef PASN_LEANANDMEAN
  2351.   PAssert(IsClass(H501_ProtocolVersion::Class()), PInvalidCast);
  2352. #endif
  2353.   return new H501_ProtocolVersion(*this);
  2354. }
  2355.  
  2356.  
  2357. //
  2358. // ElementIdentifier
  2359. //
  2360.  
  2361. H501_ElementIdentifier::H501_ElementIdentifier(unsigned tag, PASN_Object::TagClass tagClass)
  2362.   : PASN_BMPString(tag, tagClass)
  2363. {
  2364.   SetConstraints(PASN_Object::FixedConstraint, 1, 128);
  2365. }
  2366.  
  2367.  
  2368. H501_ElementIdentifier & H501_ElementIdentifier::operator=(const char * v)
  2369. {
  2370.   SetValue(v);
  2371.   return *this;
  2372. }
  2373.  
  2374.  
  2375. H501_ElementIdentifier & H501_ElementIdentifier::operator=(const PString & v)
  2376. {
  2377.   SetValue(v);
  2378.   return *this;
  2379. }
  2380.  
  2381.  
  2382. H501_ElementIdentifier & H501_ElementIdentifier::operator=(const PWORDArray & v)
  2383. {
  2384.   SetValue(v);
  2385.   return *this;
  2386. }
  2387.  
  2388.  
  2389. H501_ElementIdentifier & H501_ElementIdentifier::operator=(const PASN_BMPString & v)
  2390. {
  2391.   SetValue(v);
  2392.   return *this;
  2393. }
  2394.  
  2395.  
  2396. PObject * H501_ElementIdentifier::Clone() const
  2397. {
  2398. #ifndef PASN_LEANANDMEAN
  2399.   PAssert(IsClass(H501_ElementIdentifier::Class()), PInvalidCast);
  2400. #endif
  2401.   return new H501_ElementIdentifier(*this);
  2402. }
  2403.  
  2404.  
  2405. //
  2406. // GlobalTimeStamp
  2407. //
  2408.  
  2409. H501_GlobalTimeStamp::H501_GlobalTimeStamp(unsigned tag, PASN_Object::TagClass tagClass)
  2410.   : PASN_IA5String(tag, tagClass)
  2411. {
  2412.   SetConstraints(PASN_Object::FixedConstraint, 14);
  2413. }
  2414.  
  2415.  
  2416. H501_GlobalTimeStamp & H501_GlobalTimeStamp::operator=(const char * v)
  2417. {
  2418.   SetValue(v);
  2419.   return *this;
  2420. }
  2421.  
  2422.  
  2423. H501_GlobalTimeStamp & H501_GlobalTimeStamp::operator=(const PString & v)
  2424. {
  2425.   SetValue(v);
  2426.   return *this;
  2427. }
  2428.  
  2429.  
  2430. PObject * H501_GlobalTimeStamp::Clone() const
  2431. {
  2432. #ifndef PASN_LEANANDMEAN
  2433.   PAssert(IsClass(H501_GlobalTimeStamp::Class()), PInvalidCast);
  2434. #endif
  2435.   return new H501_GlobalTimeStamp(*this);
  2436. }
  2437.  
  2438.  
  2439. //
  2440. // ArrayOf_TransportAddress
  2441. //
  2442.  
  2443. H501_ArrayOf_TransportAddress::H501_ArrayOf_TransportAddress(unsigned tag, PASN_Object::TagClass tagClass)
  2444.   : PASN_Array(tag, tagClass)
  2445. {
  2446. }
  2447.  
  2448.  
  2449. PASN_Object * H501_ArrayOf_TransportAddress::CreateObject() const
  2450. {
  2451.   return new H225_TransportAddress;
  2452. }
  2453.  
  2454.  
  2455. H225_TransportAddress & H501_ArrayOf_TransportAddress::operator[](PINDEX i) const
  2456. {
  2457.   return (H225_TransportAddress &)array[i];
  2458. }
  2459.  
  2460.  
  2461. PObject * H501_ArrayOf_TransportAddress::Clone() const
  2462. {
  2463. #ifndef PASN_LEANANDMEAN
  2464.   PAssert(IsClass(H501_ArrayOf_TransportAddress::Class()), PInvalidCast);
  2465. #endif
  2466.   return new H501_ArrayOf_TransportAddress(*this);
  2467. }
  2468.  
  2469.  
  2470. //
  2471. // ArrayOf_ClearToken
  2472. //
  2473.  
  2474. H501_ArrayOf_ClearToken::H501_ArrayOf_ClearToken(unsigned tag, PASN_Object::TagClass tagClass)
  2475.   : PASN_Array(tag, tagClass)
  2476. {
  2477. }
  2478.  
  2479.  
  2480. PASN_Object * H501_ArrayOf_ClearToken::CreateObject() const
  2481. {
  2482.   return new H235_ClearToken;
  2483. }
  2484.  
  2485.  
  2486. H235_ClearToken & H501_ArrayOf_ClearToken::operator[](PINDEX i) const
  2487. {
  2488.   return (H235_ClearToken &)array[i];
  2489. }
  2490.  
  2491.  
  2492. PObject * H501_ArrayOf_ClearToken::Clone() const
  2493. {
  2494. #ifndef PASN_LEANANDMEAN
  2495.   PAssert(IsClass(H501_ArrayOf_ClearToken::Class()), PInvalidCast);
  2496. #endif
  2497.   return new H501_ArrayOf_ClearToken(*this);
  2498. }
  2499.  
  2500.  
  2501. //
  2502. // ArrayOf_CryptoH323Token
  2503. //
  2504.  
  2505. H501_ArrayOf_CryptoH323Token::H501_ArrayOf_CryptoH323Token(unsigned tag, PASN_Object::TagClass tagClass)
  2506.   : PASN_Array(tag, tagClass)
  2507. {
  2508. }
  2509.  
  2510.  
  2511. PASN_Object * H501_ArrayOf_CryptoH323Token::CreateObject() const
  2512. {
  2513.   return new H225_CryptoH323Token;
  2514. }
  2515.  
  2516.  
  2517. H225_CryptoH323Token & H501_ArrayOf_CryptoH323Token::operator[](PINDEX i) const
  2518. {
  2519.   return (H225_CryptoH323Token &)array[i];
  2520. }
  2521.  
  2522.  
  2523. PObject * H501_ArrayOf_CryptoH323Token::Clone() const
  2524. {
  2525. #ifndef PASN_LEANANDMEAN
  2526.   PAssert(IsClass(H501_ArrayOf_CryptoH323Token::Class()), PInvalidCast);
  2527. #endif
  2528.   return new H501_ArrayOf_CryptoH323Token(*this);
  2529. }
  2530.  
  2531.  
  2532. //
  2533. // ArrayOf_NonStandardParameter
  2534. //
  2535.  
  2536. H501_ArrayOf_NonStandardParameter::H501_ArrayOf_NonStandardParameter(unsigned tag, PASN_Object::TagClass tagClass)
  2537.   : PASN_Array(tag, tagClass)
  2538. {
  2539. }
  2540.  
  2541.  
  2542. PASN_Object * H501_ArrayOf_NonStandardParameter::CreateObject() const
  2543. {
  2544.   return new H225_NonStandardParameter;
  2545. }
  2546.  
  2547.  
  2548. H225_NonStandardParameter & H501_ArrayOf_NonStandardParameter::operator[](PINDEX i) const
  2549. {
  2550.   return (H225_NonStandardParameter &)array[i];
  2551. }
  2552.  
  2553.  
  2554. PObject * H501_ArrayOf_NonStandardParameter::Clone() const
  2555. {
  2556. #ifndef PASN_LEANANDMEAN
  2557.   PAssert(IsClass(H501_ArrayOf_NonStandardParameter::Class()), PInvalidCast);
  2558. #endif
  2559.   return new H501_ArrayOf_NonStandardParameter(*this);
  2560. }
  2561.  
  2562.  
  2563. //
  2564. // ArrayOf_GenericData
  2565. //
  2566.  
  2567. H501_ArrayOf_GenericData::H501_ArrayOf_GenericData(unsigned tag, PASN_Object::TagClass tagClass)
  2568.   : PASN_Array(tag, tagClass)
  2569. {
  2570. }
  2571.  
  2572.  
  2573. PASN_Object * H501_ArrayOf_GenericData::CreateObject() const
  2574. {
  2575.   return new H225_GenericData;
  2576. }
  2577.  
  2578.  
  2579. H225_GenericData & H501_ArrayOf_GenericData::operator[](PINDEX i) const
  2580. {
  2581.   return (H225_GenericData &)array[i];
  2582. }
  2583.  
  2584.  
  2585. PObject * H501_ArrayOf_GenericData::Clone() const
  2586. {
  2587. #ifndef PASN_LEANANDMEAN
  2588.   PAssert(IsClass(H501_ArrayOf_GenericData::Class()), PInvalidCast);
  2589. #endif
  2590.   return new H501_ArrayOf_GenericData(*this);
  2591. }
  2592.  
  2593.  
  2594. //
  2595. // ArrayOf_SecurityMode
  2596. //
  2597.  
  2598. H501_ArrayOf_SecurityMode::H501_ArrayOf_SecurityMode(unsigned tag, PASN_Object::TagClass tagClass)
  2599.   : PASN_Array(tag, tagClass)
  2600. {
  2601. }
  2602.  
  2603.  
  2604. PASN_Object * H501_ArrayOf_SecurityMode::CreateObject() const
  2605. {
  2606.   return new H501_SecurityMode;
  2607. }
  2608.  
  2609.  
  2610. H501_SecurityMode & H501_ArrayOf_SecurityMode::operator[](PINDEX i) const
  2611. {
  2612.   return (H501_SecurityMode &)array[i];
  2613. }
  2614.  
  2615.  
  2616. PObject * H501_ArrayOf_SecurityMode::Clone() const
  2617. {
  2618. #ifndef PASN_LEANANDMEAN
  2619.   PAssert(IsClass(H501_ArrayOf_SecurityMode::Class()), PInvalidCast);
  2620. #endif
  2621.   return new H501_ArrayOf_SecurityMode(*this);
  2622. }
  2623.  
  2624.  
  2625. //
  2626. // ArrayOf_PASN_ObjectId
  2627. //
  2628.  
  2629. H501_ArrayOf_PASN_ObjectId::H501_ArrayOf_PASN_ObjectId(unsigned tag, PASN_Object::TagClass tagClass)
  2630.   : PASN_Array(tag, tagClass)
  2631. {
  2632. }
  2633.  
  2634.  
  2635. PASN_Object * H501_ArrayOf_PASN_ObjectId::CreateObject() const
  2636. {
  2637.   return new PASN_ObjectId;
  2638. }
  2639.  
  2640.  
  2641. PASN_ObjectId & H501_ArrayOf_PASN_ObjectId::operator[](PINDEX i) const
  2642. {
  2643.   return (PASN_ObjectId &)array[i];
  2644. }
  2645.  
  2646.  
  2647. PObject * H501_ArrayOf_PASN_ObjectId::Clone() const
  2648. {
  2649. #ifndef PASN_LEANANDMEAN
  2650.   PAssert(IsClass(H501_ArrayOf_PASN_ObjectId::Class()), PInvalidCast);
  2651. #endif
  2652.   return new H501_ArrayOf_PASN_ObjectId(*this);
  2653. }
  2654.  
  2655.  
  2656. //
  2657. // ArrayOf_GloballyUniqueID
  2658. //
  2659.  
  2660. H501_ArrayOf_GloballyUniqueID::H501_ArrayOf_GloballyUniqueID(unsigned tag, PASN_Object::TagClass tagClass)
  2661.   : PASN_Array(tag, tagClass)
  2662. {
  2663. }
  2664.  
  2665.  
  2666. PASN_Object * H501_ArrayOf_GloballyUniqueID::CreateObject() const
  2667. {
  2668.   return new H225_GloballyUniqueID;
  2669. }
  2670.  
  2671.  
  2672. H225_GloballyUniqueID & H501_ArrayOf_GloballyUniqueID::operator[](PINDEX i) const
  2673. {
  2674.   return (H225_GloballyUniqueID &)array[i];
  2675. }
  2676.  
  2677.  
  2678. PObject * H501_ArrayOf_GloballyUniqueID::Clone() const
  2679. {
  2680. #ifndef PASN_LEANANDMEAN
  2681.   PAssert(IsClass(H501_ArrayOf_GloballyUniqueID::Class()), PInvalidCast);
  2682. #endif
  2683.   return new H501_ArrayOf_GloballyUniqueID(*this);
  2684. }
  2685.  
  2686.  
  2687. //
  2688. // ArrayOf_Descriptor
  2689. //
  2690.  
  2691. H501_ArrayOf_Descriptor::H501_ArrayOf_Descriptor(unsigned tag, PASN_Object::TagClass tagClass)
  2692.   : PASN_Array(tag, tagClass)
  2693. {
  2694. }
  2695.  
  2696.  
  2697. PASN_Object * H501_ArrayOf_Descriptor::CreateObject() const
  2698. {
  2699.   return new H501_Descriptor;
  2700. }
  2701.  
  2702.  
  2703. H501_Descriptor & H501_ArrayOf_Descriptor::operator[](PINDEX i) const
  2704. {
  2705.   return (H501_Descriptor &)array[i];
  2706. }
  2707.  
  2708.  
  2709. PObject * H501_ArrayOf_Descriptor::Clone() const
  2710. {
  2711. #ifndef PASN_LEANANDMEAN
  2712.   PAssert(IsClass(H501_ArrayOf_Descriptor::Class()), PInvalidCast);
  2713. #endif
  2714.   return new H501_ArrayOf_Descriptor(*this);
  2715. }
  2716.  
  2717.  
  2718. //
  2719. // ArrayOf_DescriptorInfo
  2720. //
  2721.  
  2722. H501_ArrayOf_DescriptorInfo::H501_ArrayOf_DescriptorInfo(unsigned tag, PASN_Object::TagClass tagClass)
  2723.   : PASN_Array(tag, tagClass)
  2724. {
  2725. }
  2726.  
  2727.  
  2728. PASN_Object * H501_ArrayOf_DescriptorInfo::CreateObject() const
  2729. {
  2730.   return new H501_DescriptorInfo;
  2731. }
  2732.  
  2733.  
  2734. H501_DescriptorInfo & H501_ArrayOf_DescriptorInfo::operator[](PINDEX i) const
  2735. {
  2736.   return (H501_DescriptorInfo &)array[i];
  2737. }
  2738.  
  2739.  
  2740. PObject * H501_ArrayOf_DescriptorInfo::Clone() const
  2741. {
  2742. #ifndef PASN_LEANANDMEAN
  2743.   PAssert(IsClass(H501_ArrayOf_DescriptorInfo::Class()), PInvalidCast);
  2744. #endif
  2745.   return new H501_ArrayOf_DescriptorInfo(*this);
  2746. }
  2747.  
  2748.  
  2749. //
  2750. // ArrayOf_UpdateInformation
  2751. //
  2752.  
  2753. H501_ArrayOf_UpdateInformation::H501_ArrayOf_UpdateInformation(unsigned tag, PASN_Object::TagClass tagClass)
  2754.   : PASN_Array(tag, tagClass)
  2755. {
  2756. }
  2757.  
  2758.  
  2759. PASN_Object * H501_ArrayOf_UpdateInformation::CreateObject() const
  2760. {
  2761.   return new H501_UpdateInformation;
  2762. }
  2763.  
  2764.  
  2765. H501_UpdateInformation & H501_ArrayOf_UpdateInformation::operator[](PINDEX i) const
  2766. {
  2767.   return (H501_UpdateInformation &)array[i];
  2768. }
  2769.  
  2770.  
  2771. PObject * H501_ArrayOf_UpdateInformation::Clone() const
  2772. {
  2773. #ifndef PASN_LEANANDMEAN
  2774.   PAssert(IsClass(H501_ArrayOf_UpdateInformation::Class()), PInvalidCast);
  2775. #endif
  2776.   return new H501_ArrayOf_UpdateInformation(*this);
  2777. }
  2778.  
  2779.  
  2780. //
  2781. // UpdateInformation_descriptorInfo
  2782. //
  2783.  
  2784. H501_UpdateInformation_descriptorInfo::H501_UpdateInformation_descriptorInfo(unsigned tag, PASN_Object::TagClass tagClass)
  2785.   : PASN_Choice(tag, tagClass, 2, TRUE
  2786. #ifndef PASN_NOPRINTON
  2787.       , "descriptorID "
  2788.         "descriptor "
  2789. #endif
  2790.     )
  2791. {
  2792. }
  2793.  
  2794.  
  2795. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  2796. H501_UpdateInformation_descriptorInfo::operator H225_GloballyUniqueID &() const
  2797. #else
  2798. H501_UpdateInformation_descriptorInfo::operator H225_GloballyUniqueID &()
  2799. {
  2800. #ifndef PASN_LEANANDMEAN
  2801.   PAssert(PAssertNULL(choice)->IsDescendant(H225_GloballyUniqueID::Class()), PInvalidCast);
  2802. #endif
  2803.   return *(H225_GloballyUniqueID *)choice;
  2804. }
  2805.  
  2806.  
  2807. H501_UpdateInformation_descriptorInfo::operator const H225_GloballyUniqueID &() const
  2808. #endif
  2809. {
  2810. #ifndef PASN_LEANANDMEAN
  2811.   PAssert(PAssertNULL(choice)->IsDescendant(H225_GloballyUniqueID::Class()), PInvalidCast);
  2812. #endif
  2813.   return *(H225_GloballyUniqueID *)choice;
  2814. }
  2815.  
  2816.  
  2817. #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
  2818. H501_UpdateInformation_descriptorInfo::operator H501_Descriptor &() const
  2819. #else
  2820. H501_UpdateInformation_descriptorInfo::operator H501_Descriptor &()
  2821. {
  2822. #ifndef PASN_LEANANDMEAN
  2823.   PAssert(PAssertNULL(choice)->IsDescendant(H501_Descriptor::Class()), PInvalidCast);
  2824. #endif
  2825.   return *(H501_Descriptor *)choice;
  2826. }
  2827.  
  2828.  
  2829. H501_UpdateInformation_descriptorInfo::operator const H501_Descriptor &() const
  2830. #endif
  2831. {
  2832. #ifndef PASN_LEANANDMEAN
  2833.   PAssert(PAssertNULL(choice)->IsDescendant(H501_Descriptor::Class()), PInvalidCast);
  2834. #endif
  2835.   return *(H501_Descriptor *)choice;
  2836. }
  2837.  
  2838.  
  2839. BOOL H501_UpdateInformation_descriptorInfo::CreateObject()
  2840. {
  2841.   switch (tag) {
  2842.     case e_descriptorID :
  2843.       choice = new H225_GloballyUniqueID();
  2844.       return TRUE;
  2845.     case e_descriptor :
  2846.       choice = new H501_Descriptor();
  2847.       return TRUE;
  2848.   }
  2849.  
  2850.   choice = NULL;
  2851.   return FALSE;
  2852. }
  2853.  
  2854.  
  2855. PObject * H501_UpdateInformation_descriptorInfo::Clone() const
  2856. {
  2857. #ifndef PASN_LEANANDMEAN
  2858.   PAssert(IsClass(H501_UpdateInformation_descriptorInfo::Class()), PInvalidCast);
  2859. #endif
  2860.   return new H501_UpdateInformation_descriptorInfo(*this);
  2861. }
  2862.  
  2863.  
  2864. //
  2865. // UpdateInformation_updateType
  2866. //
  2867.  
  2868. H501_UpdateInformation_updateType::H501_UpdateInformation_updateType(unsigned tag, PASN_Object::TagClass tagClass)
  2869.   : PASN_Choice(tag, tagClass, 3, TRUE
  2870. #ifndef PASN_NOPRINTON
  2871.       , "added "
  2872.         "deleted "
  2873.         "changed "
  2874. #endif
  2875.     )
  2876. {
  2877. }
  2878.  
  2879.  
  2880. BOOL H501_UpdateInformation_updateType::CreateObject()
  2881. {
  2882.   choice = (tag <= e_changed) ? new PASN_Null() : NULL;
  2883.   return choice != NULL;
  2884. }
  2885.  
  2886.  
  2887. PObject * H501_UpdateInformation_updateType::Clone() const
  2888. {
  2889. #ifndef PASN_LEANANDMEAN
  2890.   PAssert(IsClass(H501_UpdateInformation_updateType::Class()), PInvalidCast);
  2891. #endif
  2892.   return new H501_UpdateInformation_updateType(*this);
  2893. }
  2894.  
  2895.  
  2896. //
  2897. // ArrayOf_SupportedProtocols
  2898. //
  2899.  
  2900. H501_ArrayOf_SupportedProtocols::H501_ArrayOf_SupportedProtocols(unsigned tag, PASN_Object::TagClass tagClass)
  2901.   : PASN_Array(tag, tagClass)
  2902. {
  2903. }
  2904.  
  2905.  
  2906. PASN_Object * H501_ArrayOf_SupportedProtocols::CreateObject() const
  2907. {
  2908.   return new H225_SupportedProtocols;
  2909. }
  2910.  
  2911.  
  2912. H225_SupportedProtocols & H501_ArrayOf_SupportedProtocols::operator[](PINDEX i) const
  2913. {
  2914.   return (H225_SupportedProtocols &)array[i];
  2915. }
  2916.  
  2917.  
  2918. PObject * H501_ArrayOf_SupportedProtocols::Clone() const
  2919. {
  2920. #ifndef PASN_LEANANDMEAN
  2921.   PAssert(IsClass(H501_ArrayOf_SupportedProtocols::Class()), PInvalidCast);
  2922. #endif
  2923.   return new H501_ArrayOf_SupportedProtocols(*this);
  2924. }
  2925.  
  2926.  
  2927. //
  2928. // ArrayOf_AddressTemplate
  2929. //
  2930.  
  2931. H501_ArrayOf_AddressTemplate::H501_ArrayOf_AddressTemplate(unsigned tag, PASN_Object::TagClass tagClass)
  2932.   : PASN_Array(tag, tagClass)
  2933. {
  2934. }
  2935.  
  2936.  
  2937. PASN_Object * H501_ArrayOf_AddressTemplate::CreateObject() const
  2938. {
  2939.   return new H501_AddressTemplate;
  2940. }
  2941.  
  2942.  
  2943. H501_AddressTemplate & H501_ArrayOf_AddressTemplate::operator[](PINDEX i) const
  2944. {
  2945.   return (H501_AddressTemplate &)array[i];
  2946. }
  2947.  
  2948.  
  2949. PObject * H501_ArrayOf_AddressTemplate::Clone() const
  2950. {
  2951. #ifndef PASN_LEANANDMEAN
  2952.   PAssert(IsClass(H501_ArrayOf_AddressTemplate::Class()), PInvalidCast);
  2953. #endif
  2954.   return new H501_ArrayOf_AddressTemplate(*this);
  2955. }
  2956.  
  2957.  
  2958. //
  2959. // ArrayOf_ServiceControlSession
  2960. //
  2961.  
  2962. H501_ArrayOf_ServiceControlSession::H501_ArrayOf_ServiceControlSession(unsigned tag, PASN_Object::TagClass tagClass)
  2963.   : PASN_Array(tag, tagClass)
  2964. {
  2965. }
  2966.  
  2967.  
  2968. PASN_Object * H501_ArrayOf_ServiceControlSession::CreateObject() const
  2969. {
  2970.   return new H225_ServiceControlSession;
  2971. }
  2972.  
  2973.  
  2974. H225_ServiceControlSession & H501_ArrayOf_ServiceControlSession::operator[](PINDEX i) const
  2975. {
  2976.   return (H225_ServiceControlSession &)array[i];
  2977. }
  2978.  
  2979.  
  2980. PObject * H501_ArrayOf_ServiceControlSession::Clone() const
  2981. {
  2982. #ifndef PASN_LEANANDMEAN
  2983.   PAssert(IsClass(H501_ArrayOf_ServiceControlSession::Class()), PInvalidCast);
  2984. #endif
  2985.   return new H501_ArrayOf_ServiceControlSession(*this);
  2986. }
  2987.  
  2988.  
  2989. //
  2990. // ArrayOf_AccessToken
  2991. //
  2992.  
  2993. H501_ArrayOf_AccessToken::H501_ArrayOf_AccessToken(unsigned tag, PASN_Object::TagClass tagClass)
  2994.   : PASN_Array(tag, tagClass)
  2995. {
  2996. }
  2997.  
  2998.  
  2999. PASN_Object * H501_ArrayOf_AccessToken::CreateObject() const
  3000. {
  3001.   return new H501_AccessToken;
  3002. }
  3003.  
  3004.  
  3005. H501_AccessToken & H501_ArrayOf_AccessToken::operator[](PINDEX i) const
  3006. {
  3007.   return (H501_AccessToken &)array[i];
  3008. }
  3009.  
  3010.  
  3011. PObject * H501_ArrayOf_AccessToken::Clone() const
  3012. {
  3013. #ifndef PASN_LEANANDMEAN
  3014.   PAssert(IsClass(H501_ArrayOf_AccessToken::Class()), PInvalidCast);
  3015. #endif
  3016.   return new H501_ArrayOf_AccessToken(*this);
  3017. }
  3018.  
  3019.  
  3020. //
  3021. // ArrayOf_UsageField
  3022. //
  3023.  
  3024. H501_ArrayOf_UsageField::H501_ArrayOf_UsageField(unsigned tag, PASN_Object::TagClass tagClass)
  3025.   : PASN_Array(tag, tagClass)
  3026. {
  3027. }
  3028.  
  3029.  
  3030. PASN_Object * H501_ArrayOf_UsageField::CreateObject() const
  3031. {
  3032.   return new H501_UsageField;
  3033. }
  3034.  
  3035.  
  3036. H501_UsageField & H501_ArrayOf_UsageField::operator[](PINDEX i) const
  3037. {
  3038.   return (H501_UsageField &)array[i];
  3039. }
  3040.  
  3041.  
  3042. PObject * H501_ArrayOf_UsageField::Clone() const
  3043. {
  3044. #ifndef PASN_LEANANDMEAN
  3045.   PAssert(IsClass(H501_ArrayOf_UsageField::Class()), PInvalidCast);
  3046. #endif
  3047.   return new H501_ArrayOf_UsageField(*this);
  3048. }
  3049.  
  3050.  
  3051. //
  3052. // ArrayOf_Pattern
  3053. //
  3054.  
  3055. H501_ArrayOf_Pattern::H501_ArrayOf_Pattern(unsigned tag, PASN_Object::TagClass tagClass)
  3056.   : PASN_Array(tag, tagClass)
  3057. {
  3058. }
  3059.  
  3060.  
  3061. PASN_Object * H501_ArrayOf_Pattern::CreateObject() const
  3062. {
  3063.   return new H501_Pattern;
  3064. }
  3065.  
  3066.  
  3067. H501_Pattern & H501_ArrayOf_Pattern::operator[](PINDEX i) const
  3068. {
  3069.   return (H501_Pattern &)array[i];
  3070. }
  3071.  
  3072.  
  3073. PObject * H501_ArrayOf_Pattern::Clone() const
  3074. {
  3075. #ifndef PASN_LEANANDMEAN
  3076.   PAssert(IsClass(H501_ArrayOf_Pattern::Class()), PInvalidCast);
  3077. #endif
  3078.   return new H501_ArrayOf_Pattern(*this);
  3079. }
  3080.  
  3081.  
  3082. //
  3083. // ArrayOf_RouteInformation
  3084. //
  3085.  
  3086. H501_ArrayOf_RouteInformation::H501_ArrayOf_RouteInformation(unsigned tag, PASN_Object::TagClass tagClass)
  3087.   : PASN_Array(tag, tagClass)
  3088. {
  3089. }
  3090.  
  3091.  
  3092. PASN_Object * H501_ArrayOf_RouteInformation::CreateObject() const
  3093. {
  3094.   return new H501_RouteInformation;
  3095. }
  3096.  
  3097.  
  3098. H501_RouteInformation & H501_ArrayOf_RouteInformation::operator[](PINDEX i) const
  3099. {
  3100.   return (H501_RouteInformation &)array[i];
  3101. }
  3102.  
  3103.  
  3104. PObject * H501_ArrayOf_RouteInformation::Clone() const
  3105. {
  3106. #ifndef PASN_LEANANDMEAN
  3107.   PAssert(IsClass(H501_ArrayOf_RouteInformation::Class()), PInvalidCast);
  3108. #endif
  3109.   return new H501_ArrayOf_RouteInformation(*this);
  3110. }
  3111.  
  3112.  
  3113. //
  3114. // Pattern_range
  3115. //
  3116.  
  3117. H501_Pattern_range::H501_Pattern_range(unsigned tag, PASN_Object::TagClass tagClass)
  3118.   : PASN_Sequence(tag, tagClass, 0, FALSE, 0)
  3119. {
  3120. }
  3121.  
  3122.  
  3123. #ifndef PASN_NOPRINTON
  3124. void H501_Pattern_range::PrintOn(ostream & strm) const
  3125. {
  3126.   int indent = strm.precision() + 2;
  3127.   strm << "{\n";
  3128.   strm << setw(indent+15) << "startOfRange = " << setprecision(indent) << m_startOfRange << '\n';
  3129.   strm << setw(indent+13) << "endOfRange = " << setprecision(indent) << m_endOfRange << '\n';
  3130.   strm << setw(indent-1) << "}";
  3131. }
  3132. #endif
  3133.  
  3134.  
  3135. PObject::Comparison H501_Pattern_range::Compare(const PObject & obj) const
  3136. {
  3137. #ifndef PASN_LEANANDMEAN
  3138.   PAssert(IsDescendant(H501_Pattern_range::Class()), PInvalidCast);
  3139. #endif
  3140.   const H501_Pattern_range & other = (const H501_Pattern_range &)obj;
  3141.  
  3142.   Comparison result;
  3143.  
  3144.   if ((result = m_startOfRange.Compare(other.m_startOfRange)) != EqualTo)
  3145.     return result;
  3146.   if ((result = m_endOfRange.Compare(other.m_endOfRange)) != EqualTo)
  3147.     return result;
  3148.  
  3149.   return PASN_Sequence::Compare(other);
  3150. }
  3151.  
  3152.  
  3153. PINDEX H501_Pattern_range::GetDataLength() const
  3154. {
  3155.   PINDEX length = 0;
  3156.   length += m_startOfRange.GetObjectLength();
  3157.   length += m_endOfRange.GetObjectLength();
  3158.   return length;
  3159. }
  3160.  
  3161.  
  3162. BOOL H501_Pattern_range::Decode(PASN_Stream & strm)
  3163. {
  3164.   if (!PreambleDecode(strm))
  3165.     return FALSE;
  3166.  
  3167.   if (!m_startOfRange.Decode(strm))
  3168.     return FALSE;
  3169.   if (!m_endOfRange.Decode(strm))
  3170.     return FALSE;
  3171.  
  3172.   return UnknownExtensionsDecode(strm);
  3173. }
  3174.  
  3175.  
  3176. void H501_Pattern_range::Encode(PASN_Stream & strm) const
  3177. {
  3178.   PreambleEncode(strm);
  3179.  
  3180.   m_startOfRange.Encode(strm);
  3181.   m_endOfRange.Encode(strm);
  3182.  
  3183.   UnknownExtensionsEncode(strm);
  3184. }
  3185.  
  3186.  
  3187. PObject * H501_Pattern_range::Clone() const
  3188. {
  3189. #ifndef PASN_LEANANDMEAN
  3190.   PAssert(IsClass(H501_Pattern_range::Class()), PInvalidCast);
  3191. #endif
  3192.   return new H501_Pattern_range(*this);
  3193. }
  3194.  
  3195.  
  3196. //
  3197. // RouteInformation_messageType
  3198. //
  3199.  
  3200. H501_RouteInformation_messageType::H501_RouteInformation_messageType(unsigned tag, PASN_Object::TagClass tagClass)
  3201.   : PASN_Choice(tag, tagClass, 3, TRUE
  3202. #ifndef PASN_NOPRINTON
  3203.       , "sendAccessRequest "
  3204.         "sendSetup "
  3205.         "nonExistent "
  3206. #endif
  3207.     )
  3208. {
  3209. }
  3210.  
  3211.  
  3212. BOOL H501_RouteInformation_messageType::CreateObject()
  3213. {
  3214.   choice = (tag <= e_nonExistent) ? new PASN_Null() : NULL;
  3215.   return choice != NULL;
  3216. }
  3217.  
  3218.  
  3219. PObject * H501_RouteInformation_messageType::Clone() const
  3220. {
  3221. #ifndef PASN_LEANANDMEAN
  3222.   PAssert(IsClass(H501_RouteInformation_messageType::Class()), PInvalidCast);
  3223. #endif
  3224.   return new H501_RouteInformation_messageType(*this);
  3225. }
  3226.  
  3227.  
  3228. //
  3229. // ArrayOf_PriceInfoSpec
  3230. //
  3231.  
  3232. H501_ArrayOf_PriceInfoSpec::H501_ArrayOf_PriceInfoSpec(unsigned tag, PASN_Object::TagClass tagClass)
  3233.   : PASN_Array(tag, tagClass)
  3234. {
  3235. }
  3236.  
  3237.  
  3238. PASN_Object * H501_ArrayOf_PriceInfoSpec::CreateObject() const
  3239. {
  3240.   return new H501_PriceInfoSpec;
  3241. }
  3242.  
  3243.  
  3244. H501_PriceInfoSpec & H501_ArrayOf_PriceInfoSpec::operator[](PINDEX i) const
  3245. {
  3246.   return (H501_PriceInfoSpec &)array[i];
  3247. }
  3248.  
  3249.  
  3250. PObject * H501_ArrayOf_PriceInfoSpec::Clone() const
  3251. {
  3252. #ifndef PASN_LEANANDMEAN
  3253.   PAssert(IsClass(H501_ArrayOf_PriceInfoSpec::Class()), PInvalidCast);
  3254. #endif
  3255.   return new H501_ArrayOf_PriceInfoSpec(*this);
  3256. }
  3257.  
  3258.  
  3259. //
  3260. // ArrayOf_ContactInformation
  3261. //
  3262.  
  3263. H501_ArrayOf_ContactInformation::H501_ArrayOf_ContactInformation(unsigned tag, PASN_Object::TagClass tagClass)
  3264.   : PASN_Array(tag, tagClass)
  3265. {
  3266. }
  3267.  
  3268.  
  3269. PASN_Object * H501_ArrayOf_ContactInformation::CreateObject() const
  3270. {
  3271.   return new H501_ContactInformation;
  3272. }
  3273.  
  3274.  
  3275. H501_ContactInformation & H501_ArrayOf_ContactInformation::operator[](PINDEX i) const
  3276. {
  3277.   return (H501_ContactInformation &)array[i];
  3278. }
  3279.  
  3280.  
  3281. PObject * H501_ArrayOf_ContactInformation::Clone() const
  3282. {
  3283. #ifndef PASN_LEANANDMEAN
  3284.   PAssert(IsClass(H501_ArrayOf_ContactInformation::Class()), PInvalidCast);
  3285. #endif
  3286.   return new H501_ArrayOf_ContactInformation(*this);
  3287. }
  3288.  
  3289.  
  3290. //
  3291. // ArrayOf_CircuitIdentifier
  3292. //
  3293.  
  3294. H501_ArrayOf_CircuitIdentifier::H501_ArrayOf_CircuitIdentifier(unsigned tag, PASN_Object::TagClass tagClass)
  3295.   : PASN_Array(tag, tagClass)
  3296. {
  3297. }
  3298.  
  3299.  
  3300. PASN_Object * H501_ArrayOf_CircuitIdentifier::CreateObject() const
  3301. {
  3302.   return new H225_CircuitIdentifier;
  3303. }
  3304.  
  3305.  
  3306. H225_CircuitIdentifier & H501_ArrayOf_CircuitIdentifier::operator[](PINDEX i) const
  3307. {
  3308.   return (H225_CircuitIdentifier &)array[i];
  3309. }
  3310.  
  3311.  
  3312. PObject * H501_ArrayOf_CircuitIdentifier::Clone() const
  3313. {
  3314. #ifndef PASN_LEANANDMEAN
  3315.   PAssert(IsClass(H501_ArrayOf_CircuitIdentifier::Class()), PInvalidCast);
  3316. #endif
  3317.   return new H501_ArrayOf_CircuitIdentifier(*this);
  3318. }
  3319.  
  3320.  
  3321. //
  3322. // ArrayOf_PriceElement
  3323. //
  3324.  
  3325. H501_ArrayOf_PriceElement::H501_ArrayOf_PriceElement(unsigned tag, PASN_Object::TagClass tagClass)
  3326.   : PASN_Array(tag, tagClass)
  3327. {
  3328. }
  3329.  
  3330.  
  3331. PASN_Object * H501_ArrayOf_PriceElement::CreateObject() const
  3332. {
  3333.   return new H501_PriceElement;
  3334. }
  3335.  
  3336.  
  3337. H501_PriceElement & H501_ArrayOf_PriceElement::operator[](PINDEX i) const
  3338. {
  3339.   return (H501_PriceElement &)array[i];
  3340. }
  3341.  
  3342.  
  3343. PObject * H501_ArrayOf_PriceElement::Clone() const
  3344. {
  3345. #ifndef PASN_LEANANDMEAN
  3346.   PAssert(IsClass(H501_ArrayOf_PriceElement::Class()), PInvalidCast);
  3347. #endif
  3348.   return new H501_ArrayOf_PriceElement(*this);
  3349. }
  3350.  
  3351.  
  3352. //
  3353. // PriceElement_units
  3354. //
  3355.  
  3356. H501_PriceElement_units::H501_PriceElement_units(unsigned tag, PASN_Object::TagClass tagClass)
  3357.   : PASN_Choice(tag, tagClass, 6, TRUE
  3358. #ifndef PASN_NOPRINTON
  3359.       , "seconds "
  3360.         "packets "
  3361.         "bytes "
  3362.         "initial "
  3363.         "minimum "
  3364.         "maximum "
  3365. #endif
  3366.     )
  3367. {
  3368. }
  3369.  
  3370.  
  3371. BOOL H501_PriceElement_units::CreateObject()
  3372. {
  3373.   choice = (tag <= e_maximum) ? new PASN_Null() : NULL;
  3374.   return choice != NULL;
  3375. }
  3376.  
  3377.  
  3378. PObject * H501_PriceElement_units::Clone() const
  3379. {
  3380. #ifndef PASN_LEANANDMEAN
  3381.   PAssert(IsClass(H501_PriceElement_units::Class()), PInvalidCast);
  3382. #endif
  3383.   return new H501_PriceElement_units(*this);
  3384. }
  3385.  
  3386.  
  3387. //
  3388. // ArrayOf_AlternatePE
  3389. //
  3390.  
  3391. H501_ArrayOf_AlternatePE::H501_ArrayOf_AlternatePE(unsigned tag, PASN_Object::TagClass tagClass)
  3392.   : PASN_Array(tag, tagClass)
  3393. {
  3394. }
  3395.  
  3396.  
  3397. PASN_Object * H501_ArrayOf_AlternatePE::CreateObject() const
  3398. {
  3399.   return new H501_AlternatePE;
  3400. }
  3401.  
  3402.  
  3403. H501_AlternatePE & H501_ArrayOf_AlternatePE::operator[](PINDEX i) const
  3404. {
  3405.   return (H501_AlternatePE &)array[i];
  3406. }
  3407.  
  3408.  
  3409. PObject * H501_ArrayOf_AlternatePE::Clone() const
  3410. {
  3411. #ifndef PASN_LEANANDMEAN
  3412.   PAssert(IsClass(H501_ArrayOf_AlternatePE::Class()), PInvalidCast);
  3413. #endif
  3414.   return new H501_ArrayOf_AlternatePE(*this);
  3415. }
  3416.  
  3417.  
  3418. //
  3419. // UsageSpecification_when
  3420. //
  3421.  
  3422. H501_UsageSpecification_when::H501_UsageSpecification_when(unsigned tag, PASN_Object::TagClass tagClass)
  3423.   : PASN_Sequence(tag, tagClass, 5, TRUE, 0)
  3424. {
  3425.   m_period.SetConstraints(PASN_Object::FixedConstraint, 1, 65535);
  3426. }
  3427.  
  3428.  
  3429. #ifndef PASN_NOPRINTON
  3430. void H501_UsageSpecification_when::PrintOn(ostream & strm) const
  3431. {
  3432.   int indent = strm.precision() + 2;
  3433.   strm << "{\n";
  3434.   if (HasOptionalField(e_never))
  3435.     strm << setw(indent+8) << "never = " << setprecision(indent) << m_never << '\n';
  3436.   if (HasOptionalField(e_start))
  3437.     strm << setw(indent+8) << "start = " << setprecision(indent) << m_start << '\n';
  3438.   if (HasOptionalField(e_end))
  3439.     strm << setw(indent+6) << "end = " << setprecision(indent) << m_end << '\n';
  3440.   if (HasOptionalField(e_period))
  3441.     strm << setw(indent+9) << "period = " << setprecision(indent) << m_period << '\n';
  3442.   if (HasOptionalField(e_failures))
  3443.     strm << setw(indent+11) << "failures = " << setprecision(indent) << m_failures << '\n';
  3444.   strm << setw(indent-1) << "}";
  3445. }
  3446. #endif
  3447.  
  3448.  
  3449. PObject::Comparison H501_UsageSpecification_when::Compare(const PObject & obj) const
  3450. {
  3451. #ifndef PASN_LEANANDMEAN
  3452.   PAssert(IsDescendant(H501_UsageSpecification_when::Class()), PInvalidCast);
  3453. #endif
  3454.   const H501_UsageSpecification_when & other = (const H501_UsageSpecification_when &)obj;
  3455.  
  3456.   Comparison result;
  3457.  
  3458.   if ((result = m_never.Compare(other.m_never)) != EqualTo)
  3459.     return result;
  3460.   if ((result = m_start.Compare(other.m_start)) != EqualTo)
  3461.     return result;
  3462.   if ((result = m_end.Compare(other.m_end)) != EqualTo)
  3463.     return result;
  3464.   if ((result = m_period.Compare(other.m_period)) != EqualTo)
  3465.     return result;
  3466.   if ((result = m_failures.Compare(other.m_failures)) != EqualTo)
  3467.     return result;
  3468.  
  3469.   return PASN_Sequence::Compare(other);
  3470. }
  3471.  
  3472.  
  3473. PINDEX H501_UsageSpecification_when::GetDataLength() const
  3474. {
  3475.   PINDEX length = 0;
  3476.   if (HasOptionalField(e_never))
  3477.     length += m_never.GetObjectLength();
  3478.   if (HasOptionalField(e_start))
  3479.     length += m_start.GetObjectLength();
  3480.   if (HasOptionalField(e_end))
  3481.     length += m_end.GetObjectLength();
  3482.   if (HasOptionalField(e_period))
  3483.     length += m_period.GetObjectLength();
  3484.   if (HasOptionalField(e_failures))
  3485.     length += m_failures.GetObjectLength();
  3486.   return length;
  3487. }
  3488.  
  3489.  
  3490. BOOL H501_UsageSpecification_when::Decode(PASN_Stream & strm)
  3491. {
  3492.   if (!PreambleDecode(strm))
  3493.     return FALSE;
  3494.  
  3495.   if (HasOptionalField(e_never) && !m_never.Decode(strm))
  3496.     return FALSE;
  3497.   if (HasOptionalField(e_start) && !m_start.Decode(strm))
  3498.     return FALSE;
  3499.   if (HasOptionalField(e_end) && !m_end.Decode(strm))
  3500.     return FALSE;
  3501.   if (HasOptionalField(e_period) && !m_period.Decode(strm))
  3502.     return FALSE;
  3503.   if (HasOptionalField(e_failures) && !m_failures.Decode(strm))
  3504.     return FALSE;
  3505.  
  3506.   return UnknownExtensionsDecode(strm);
  3507. }
  3508.  
  3509.  
  3510. void H501_UsageSpecification_when::Encode(PASN_Stream & strm) const
  3511. {
  3512.   PreambleEncode(strm);
  3513.  
  3514.   if (HasOptionalField(e_never))
  3515.     m_never.Encode(strm);
  3516.   if (HasOptionalField(e_start))
  3517.     m_start.Encode(strm);
  3518.   if (HasOptionalField(e_end))
  3519.     m_end.Encode(strm);
  3520.   if (HasOptionalField(e_period))
  3521.     m_period.Encode(strm);
  3522.   if (HasOptionalField(e_failures))
  3523.     m_failures.Encode(strm);
  3524.  
  3525.   UnknownExtensionsEncode(strm);
  3526. }
  3527.  
  3528.  
  3529. PObject * H501_UsageSpecification_when::Clone() const
  3530. {
  3531. #ifndef PASN_LEANANDMEAN
  3532.   PAssert(IsClass(H501_UsageSpecification_when::Class()), PInvalidCast);
  3533. #endif
  3534.   return new H501_UsageSpecification_when(*this);
  3535. }
  3536.  
  3537.  
  3538. //
  3539. // ArrayOf_AliasAddress
  3540. //
  3541.  
  3542. H501_ArrayOf_AliasAddress::H501_ArrayOf_AliasAddress(unsigned tag, PASN_Object::TagClass tagClass)
  3543.   : PASN_Array(tag, tagClass)
  3544. {
  3545. }
  3546.  
  3547.  
  3548. PASN_Object * H501_ArrayOf_AliasAddress::CreateObject() const
  3549. {
  3550.   return new H225_AliasAddress;
  3551. }
  3552.  
  3553.  
  3554. H225_AliasAddress & H501_ArrayOf_AliasAddress::operator[](PINDEX i) const
  3555. {
  3556.   return (H225_AliasAddress &)array[i];
  3557. }
  3558.  
  3559.  
  3560. PObject * H501_ArrayOf_AliasAddress::Clone() const
  3561. {
  3562. #ifndef PASN_LEANANDMEAN
  3563.   PAssert(IsClass(H501_ArrayOf_AliasAddress::Class()), PInvalidCast);
  3564. #endif
  3565.   return new H501_ArrayOf_AliasAddress(*this);
  3566. }
  3567.  
  3568.  
  3569. //
  3570. // MessageCommonInfo
  3571. //
  3572.  
  3573. H501_MessageCommonInfo::H501_MessageCommonInfo(unsigned tag, PASN_Object::TagClass tagClass)
  3574.   : PASN_Sequence(tag, tagClass, 5, TRUE, 4)
  3575. {
  3576.   m_sequenceNumber.SetConstraints(PASN_Object::FixedConstraint, 0, 65535);
  3577.   m_hopCount.SetConstraints(PASN_Object::FixedConstraint, 1, 255);
  3578.   IncludeOptionalField(e_version);
  3579. }
  3580.  
  3581.  
  3582. #ifndef PASN_NOPRINTON
  3583. void H501_MessageCommonInfo::PrintOn(ostream & strm) const
  3584. {
  3585.   int indent = strm.precision() + 2;
  3586.   strm << "{\n";
  3587.   strm << setw(indent+17) << "sequenceNumber = " << setprecision(indent) << m_sequenceNumber << '\n';
  3588.   strm << setw(indent+16) << "annexGversion = " << setprecision(indent) << m_annexGversion << '\n';
  3589.   strm << setw(indent+11) << "hopCount = " << setprecision(indent) << m_hopCount << '\n';
  3590.   if (HasOptionalField(e_replyAddress))
  3591.     strm << setw(indent+15) << "replyAddress = " << setprecision(indent) << m_replyAddress << '\n';
  3592.   if (HasOptionalField(e_integrityCheckValue))
  3593.     strm << setw(indent+22) << "integrityCheckValue = " << setprecision(indent) << m_integrityCheckValue << '\n';
  3594.   if (HasOptionalField(e_tokens))
  3595.     strm << setw(indent+9) << "tokens = " << setprecision(indent) << m_tokens << '\n';
  3596.   if (HasOptionalField(e_cryptoTokens))
  3597.     strm << setw(indent+15) << "cryptoTokens = " << setprecision(indent) << m_cryptoTokens << '\n';
  3598.   if (HasOptionalField(e_nonStandard))
  3599.     strm << setw(indent+14) << "nonStandard = " << setprecision(indent) << m_nonStandard << '\n';
  3600.   if (HasOptionalField(e_serviceID))
  3601.     strm << setw(indent+12) << "serviceID = " << setprecision(indent) << m_serviceID << '\n';
  3602.   if (HasOptionalField(e_genericData))
  3603.     strm << setw(indent+14) << "genericData = " << setprecision(indent) << m_genericData << '\n';
  3604.   if (HasOptionalField(e_featureSet))
  3605.     strm << setw(indent+13) << "featureSet = " << setprecision(indent) << m_featureSet << '\n';
  3606.   if (HasOptionalField(e_version))
  3607.     strm << setw(indent+10) << "version = " << setprecision(indent) << m_version << '\n';
  3608.   strm << setw(indent-1) << "}";
  3609. }
  3610. #endif
  3611.  
  3612.  
  3613. PObject::Comparison H501_MessageCommonInfo::Compare(const PObject & obj) const
  3614. {
  3615. #ifndef PASN_LEANANDMEAN
  3616.   PAssert(IsDescendant(H501_MessageCommonInfo::Class()), PInvalidCast);
  3617. #endif
  3618.   const H501_MessageCommonInfo & other = (const H501_MessageCommonInfo &)obj;
  3619.  
  3620.   Comparison result;
  3621.  
  3622.   if ((result = m_sequenceNumber.Compare(other.m_sequenceNumber)) != EqualTo)
  3623.     return result;
  3624.   if ((result = m_annexGversion.Compare(other.m_annexGversion)) != EqualTo)
  3625.     return result;
  3626.   if ((result = m_hopCount.Compare(other.m_hopCount)) != EqualTo)
  3627.     return result;
  3628.   if ((result = m_replyAddress.Compare(other.m_replyAddress)) != EqualTo)
  3629.     return result;
  3630.   if ((result = m_integrityCheckValue.Compare(other.m_integrityCheckValue)) != EqualTo)
  3631.     return result;
  3632.   if ((result = m_tokens.Compare(other.m_tokens)) != EqualTo)
  3633.     return result;
  3634.   if ((result = m_cryptoTokens.Compare(other.m_cryptoTokens)) != EqualTo)
  3635.     return result;
  3636.   if ((result = m_nonStandard.Compare(other.m_nonStandard)) != EqualTo)
  3637.     return result;
  3638.  
  3639.   return PASN_Sequence::Compare(other);
  3640. }
  3641.  
  3642.  
  3643. PINDEX H501_MessageCommonInfo::GetDataLength() const
  3644. {
  3645.   PINDEX length = 0;
  3646.   length += m_sequenceNumber.GetObjectLength();
  3647.   length += m_annexGversion.GetObjectLength();
  3648.   length += m_hopCount.GetObjectLength();
  3649.   if (HasOptionalField(e_replyAddress))
  3650.     length += m_replyAddress.GetObjectLength();
  3651.   if (HasOptionalField(e_integrityCheckValue))
  3652.     length += m_integrityCheckValue.GetObjectLength();
  3653.   if (HasOptionalField(e_tokens))
  3654.     length += m_tokens.GetObjectLength();
  3655.   if (HasOptionalField(e_cryptoTokens))
  3656.     length += m_cryptoTokens.GetObjectLength();
  3657.   if (HasOptionalField(e_nonStandard))
  3658.     length += m_nonStandard.GetObjectLength();
  3659.   return length;
  3660. }
  3661.  
  3662.  
  3663. BOOL H501_MessageCommonInfo::Decode(PASN_Stream & strm)
  3664. {
  3665.   if (!PreambleDecode(strm))
  3666.     return FALSE;
  3667.  
  3668.   if (!m_sequenceNumber.Decode(strm))
  3669.     return FALSE;
  3670.   if (!m_annexGversion.Decode(strm))
  3671.     return FALSE;
  3672.   if (!m_hopCount.Decode(strm))
  3673.     return FALSE;
  3674.   if (HasOptionalField(e_replyAddress) && !m_replyAddress.Decode(strm))
  3675.     return FALSE;
  3676.   if (HasOptionalField(e_integrityCheckValue) && !m_integrityCheckValue.Decode(strm))
  3677.     return FALSE;
  3678.   if (HasOptionalField(e_tokens) && !m_tokens.Decode(strm))
  3679.     return FALSE;
  3680.   if (HasOptionalField(e_cryptoTokens) && !m_cryptoTokens.Decode(strm))
  3681.     return FALSE;
  3682.   if (HasOptionalField(e_nonStandard) && !m_nonStandard.Decode(strm))
  3683.     return FALSE;
  3684.   if (!KnownExtensionDecode(strm, e_serviceID, m_serviceID))
  3685.     return FALSE;
  3686.   if (!KnownExtensionDecode(strm, e_genericData, m_genericData))
  3687.     return FALSE;
  3688.   if (!KnownExtensionDecode(strm, e_featureSet, m_featureSet))
  3689.     return FALSE;
  3690.   if (!KnownExtensionDecode(strm, e_version, m_version))
  3691.     return FALSE;
  3692.  
  3693.   return UnknownExtensionsDecode(strm);
  3694. }
  3695.  
  3696.  
  3697. void H501_MessageCommonInfo::Encode(PASN_Stream & strm) const
  3698. {
  3699.   PreambleEncode(strm);
  3700.  
  3701.   m_sequenceNumber.Encode(strm);
  3702.   m_annexGversion.Encode(strm);
  3703.   m_hopCount.Encode(strm);
  3704.   if (HasOptionalField(e_replyAddress))
  3705.     m_replyAddress.Encode(strm);
  3706.   if (HasOptionalField(e_integrityCheckValue))
  3707.     m_integrityCheckValue.Encode(strm);
  3708.   if (HasOptionalField(e_tokens))
  3709.     m_tokens.Encode(strm);
  3710.   if (HasOptionalField(e_cryptoTokens))
  3711.     m_cryptoTokens.Encode(strm);
  3712.   if (HasOptionalField(e_nonStandard))
  3713.     m_nonStandard.Encode(strm);
  3714.   KnownExtensionEncode(strm, e_serviceID, m_serviceID);
  3715.   KnownExtensionEncode(strm, e_genericData, m_genericData);
  3716.   KnownExtensionEncode(strm, e_featureSet, m_featureSet);
  3717.   KnownExtensionEncode(strm, e_version, m_version);
  3718.  
  3719.   UnknownExtensionsEncode(strm);
  3720. }
  3721.  
  3722.  
  3723. PObject * H501_MessageCommonInfo::Clone() const
  3724. {
  3725. #ifndef PASN_LEANANDMEAN
  3726.   PAssert(IsClass(H501_MessageCommonInfo::Class()), PInvalidCast);
  3727. #endif
  3728.   return new H501_MessageCommonInfo(*this);
  3729. }
  3730.  
  3731.  
  3732. //
  3733. // SecurityMode
  3734. //
  3735.  
  3736. H501_SecurityMode::H501_SecurityMode(unsigned tag, PASN_Object::TagClass tagClass)
  3737.   : PASN_Sequence(tag, tagClass, 3, TRUE, 0)
  3738. {
  3739. }
  3740.  
  3741.  
  3742. #ifndef PASN_NOPRINTON
  3743. void H501_SecurityMode::PrintOn(ostream & strm) const
  3744. {
  3745.   int indent = strm.precision() + 2;
  3746.   strm << "{\n";
  3747.   if (HasOptionalField(e_authentication))
  3748.     strm << setw(indent+17) << "authentication = " << setprecision(indent) << m_authentication << '\n';
  3749.   if (HasOptionalField(e_integrity))
  3750.     strm << setw(indent+12) << "integrity = " << setprecision(indent) << m_integrity << '\n';
  3751.   if (HasOptionalField(e_algorithmOIDs))
  3752.     strm << setw(indent+16) << "algorithmOIDs = " << setprecision(indent) << m_algorithmOIDs << '\n';
  3753.   strm << setw(indent-1) << "}";
  3754. }
  3755. #endif
  3756.  
  3757.  
  3758. PObject::Comparison H501_SecurityMode::Compare(const PObject & obj) const
  3759. {
  3760. #ifndef PASN_LEANANDMEAN
  3761.   PAssert(IsDescendant(H501_SecurityMode::Class()), PInvalidCast);
  3762. #endif
  3763.   const H501_SecurityMode & other = (const H501_SecurityMode &)obj;
  3764.  
  3765.   Comparison result;
  3766.  
  3767.   if ((result = m_authentication.Compare(other.m_authentication)) != EqualTo)
  3768.     return result;
  3769.   if ((result = m_integrity.Compare(other.m_integrity)) != EqualTo)
  3770.     return result;
  3771.   if ((result = m_algorithmOIDs.Compare(other.m_algorithmOIDs)) != EqualTo)
  3772.     return result;
  3773.  
  3774.   return PASN_Sequence::Compare(other);
  3775. }
  3776.  
  3777.  
  3778. PINDEX H501_SecurityMode::GetDataLength() const
  3779. {
  3780.   PINDEX length = 0;
  3781.   if (HasOptionalField(e_authentication))
  3782.     length += m_authentication.GetObjectLength();
  3783.   if (HasOptionalField(e_integrity))
  3784.     length += m_integrity.GetObjectLength();
  3785.   if (HasOptionalField(e_algorithmOIDs))
  3786.     length += m_algorithmOIDs.GetObjectLength();
  3787.   return length;
  3788. }
  3789.  
  3790.  
  3791. BOOL H501_SecurityMode::Decode(PASN_Stream & strm)
  3792. {
  3793.   if (!PreambleDecode(strm))
  3794.     return FALSE;
  3795.  
  3796.   if (HasOptionalField(e_authentication) && !m_authentication.Decode(strm))
  3797.     return FALSE;
  3798.   if (HasOptionalField(e_integrity) && !m_integrity.Decode(strm))
  3799.     return FALSE;
  3800.   if (HasOptionalField(e_algorithmOIDs) && !m_algorithmOIDs.Decode(strm))
  3801.     return FALSE;
  3802.  
  3803.   return UnknownExtensionsDecode(strm);
  3804. }
  3805.  
  3806.  
  3807. void H501_SecurityMode::Encode(PASN_Stream & strm) const
  3808. {
  3809.   PreambleEncode(strm);
  3810.  
  3811.   if (HasOptionalField(e_authentication))
  3812.     m_authentication.Encode(strm);
  3813.   if (HasOptionalField(e_integrity))
  3814.     m_integrity.Encode(strm);
  3815.   if (HasOptionalField(e_algorithmOIDs))
  3816.     m_algorithmOIDs.Encode(strm);
  3817.  
  3818.   UnknownExtensionsEncode(strm);
  3819. }
  3820.  
  3821.  
  3822. PObject * H501_SecurityMode::Clone() const
  3823. {
  3824. #ifndef PASN_LEANANDMEAN
  3825.   PAssert(IsClass(H501_SecurityMode::Class()), PInvalidCast);
  3826. #endif
  3827.   return new H501_SecurityMode(*this);
  3828. }
  3829.  
  3830.  
  3831. //
  3832. // DescriptorRequest
  3833. //
  3834.  
  3835. H501_DescriptorRequest::H501_DescriptorRequest(unsigned tag, PASN_Object::TagClass tagClass)
  3836.   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
  3837. {
  3838. }
  3839.  
  3840.  
  3841. #ifndef PASN_NOPRINTON
  3842. void H501_DescriptorRequest::PrintOn(ostream & strm) const
  3843. {
  3844.   int indent = strm.precision() + 2;
  3845.   strm << "{\n";
  3846.   strm << setw(indent+15) << "descriptorID = " << setprecision(indent) << m_descriptorID << '\n';
  3847.   strm << setw(indent-1) << "}";
  3848. }
  3849. #endif
  3850.  
  3851.  
  3852. PObject::Comparison H501_DescriptorRequest::Compare(const PObject & obj) const
  3853. {
  3854. #ifndef PASN_LEANANDMEAN
  3855.   PAssert(IsDescendant(H501_DescriptorRequest::Class()), PInvalidCast);
  3856. #endif
  3857.   const H501_DescriptorRequest & other = (const H501_DescriptorRequest &)obj;
  3858.  
  3859.   Comparison result;
  3860.  
  3861.   if ((result = m_descriptorID.Compare(other.m_descriptorID)) != EqualTo)
  3862.     return result;
  3863.  
  3864.   return PASN_Sequence::Compare(other);
  3865. }
  3866.  
  3867.  
  3868. PINDEX H501_DescriptorRequest::GetDataLength() const
  3869. {
  3870.   PINDEX length = 0;
  3871.   length += m_descriptorID.GetObjectLength();
  3872.   return length;
  3873. }
  3874.  
  3875.  
  3876. BOOL H501_DescriptorRequest::Decode(PASN_Stream & strm)
  3877. {
  3878.   if (!PreambleDecode(strm))
  3879.     return FALSE;
  3880.  
  3881.   if (!m_descriptorID.Decode(strm))
  3882.     return FALSE;
  3883.  
  3884.   return UnknownExtensionsDecode(strm);
  3885. }
  3886.  
  3887.  
  3888. void H501_DescriptorRequest::Encode(PASN_Stream & strm) const
  3889. {
  3890.   PreambleEncode(strm);
  3891.  
  3892.   m_descriptorID.Encode(strm);
  3893.  
  3894.   UnknownExtensionsEncode(strm);
  3895. }
  3896.  
  3897.  
  3898. PObject * H501_DescriptorRequest::Clone() const
  3899. {
  3900. #ifndef PASN_LEANANDMEAN
  3901.   PAssert(IsClass(H501_DescriptorRequest::Class()), PInvalidCast);
  3902. #endif
  3903.   return new H501_DescriptorRequest(*this);
  3904. }
  3905.  
  3906.  
  3907. //
  3908. // DescriptorConfirmation
  3909. //
  3910.  
  3911. H501_DescriptorConfirmation::H501_DescriptorConfirmation(unsigned tag, PASN_Object::TagClass tagClass)
  3912.   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
  3913. {
  3914. }
  3915.  
  3916.  
  3917. #ifndef PASN_NOPRINTON
  3918. void H501_DescriptorConfirmation::PrintOn(ostream & strm) const
  3919. {
  3920.   int indent = strm.precision() + 2;
  3921.   strm << "{\n";
  3922.   strm << setw(indent+13) << "descriptor = " << setprecision(indent) << m_descriptor << '\n';
  3923.   strm << setw(indent-1) << "}";
  3924. }
  3925. #endif
  3926.  
  3927.  
  3928. PObject::Comparison H501_DescriptorConfirmation::Compare(const PObject & obj) const
  3929. {
  3930. #ifndef PASN_LEANANDMEAN
  3931.   PAssert(IsDescendant(H501_DescriptorConfirmation::Class()), PInvalidCast);
  3932. #endif
  3933.   const H501_DescriptorConfirmation & other = (const H501_DescriptorConfirmation &)obj;
  3934.  
  3935.   Comparison result;
  3936.  
  3937.   if ((result = m_descriptor.Compare(other.m_descriptor)) != EqualTo)
  3938.     return result;
  3939.  
  3940.   return PASN_Sequence::Compare(other);
  3941. }
  3942.  
  3943.  
  3944. PINDEX H501_DescriptorConfirmation::GetDataLength() const
  3945. {
  3946.   PINDEX length = 0;
  3947.   length += m_descriptor.GetObjectLength();
  3948.   return length;
  3949. }
  3950.  
  3951.  
  3952. BOOL H501_DescriptorConfirmation::Decode(PASN_Stream & strm)
  3953. {
  3954.   if (!PreambleDecode(strm))
  3955.     return FALSE;
  3956.  
  3957.   if (!m_descriptor.Decode(strm))
  3958.     return FALSE;
  3959.  
  3960.   return UnknownExtensionsDecode(strm);
  3961. }
  3962.  
  3963.  
  3964. void H501_DescriptorConfirmation::Encode(PASN_Stream & strm) const
  3965. {
  3966.   PreambleEncode(strm);
  3967.  
  3968.   m_descriptor.Encode(strm);
  3969.  
  3970.   UnknownExtensionsEncode(strm);
  3971. }
  3972.  
  3973.  
  3974. PObject * H501_DescriptorConfirmation::Clone() const
  3975. {
  3976. #ifndef PASN_LEANANDMEAN
  3977.   PAssert(IsClass(H501_DescriptorConfirmation::Class()), PInvalidCast);
  3978. #endif
  3979.   return new H501_DescriptorConfirmation(*this);
  3980. }
  3981.  
  3982.  
  3983. //
  3984. // DescriptorRejection
  3985. //
  3986.  
  3987. H501_DescriptorRejection::H501_DescriptorRejection(unsigned tag, PASN_Object::TagClass tagClass)
  3988.   : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
  3989. {
  3990. }
  3991.  
  3992.  
  3993. #ifndef PASN_NOPRINTON
  3994. void H501_DescriptorRejection::PrintOn(ostream & strm) const
  3995. {
  3996.   int indent = strm.precision() + 2;
  3997.   strm << "{\n";
  3998.   strm << setw(indent+9) << "reason = " << setprecision(indent) << m_reason << '\n';
  3999.   if (HasOptionalField(e_descriptorID))
  4000.     strm << setw(indent+15) << "descriptorID = " << setprecision(indent) << m_descriptorID << '\n';
  4001.   strm << setw(indent-1) << "}";
  4002. }
  4003. #endif
  4004.  
  4005.  
  4006. PObject::Comparison H501_DescriptorRejection::Compare(const PObject & obj) const
  4007. {
  4008. #ifndef PASN_LEANANDMEAN
  4009.   PAssert(IsDescendant(H501_DescriptorRejection::Class()), PInvalidCast);
  4010. #endif
  4011.   const H501_DescriptorRejection & other = (const H501_DescriptorRejection &)obj;
  4012.  
  4013.   Comparison result;
  4014.  
  4015.   if ((result = m_reason.Compare(other.m_reason)) != EqualTo)
  4016.     return result;
  4017.   if ((result = m_descriptorID.Compare(other.m_descriptorID)) != EqualTo)
  4018.     return result;
  4019.  
  4020.   return PASN_Sequence::Compare(other);
  4021. }
  4022.  
  4023.  
  4024. PINDEX H501_DescriptorRejection::GetDataLength() const
  4025. {
  4026.   PINDEX length = 0;
  4027.   length += m_reason.GetObjectLength();
  4028.   if (HasOptionalField(e_descriptorID))
  4029.     length += m_descriptorID.GetObjectLength();
  4030.   return length;
  4031. }
  4032.  
  4033.  
  4034. BOOL H501_DescriptorRejection::Decode(PASN_Stream & strm)
  4035. {
  4036.   if (!PreambleDecode(strm))
  4037.     return FALSE;
  4038.  
  4039.   if (!m_reason.Decode(strm))
  4040.     return FALSE;
  4041.   if (HasOptionalField(e_descriptorID) && !m_descriptorID.Decode(strm))
  4042.     return FALSE;
  4043.  
  4044.   return UnknownExtensionsDecode(strm);
  4045. }
  4046.  
  4047.  
  4048. void H501_DescriptorRejection::Encode(PASN_Stream & strm) const
  4049. {
  4050.   PreambleEncode(strm);
  4051.  
  4052.   m_reason.Encode(strm);
  4053.   if (HasOptionalField(e_descriptorID))
  4054.     m_descriptorID.Encode(strm);
  4055.  
  4056.   UnknownExtensionsEncode(strm);
  4057. }
  4058.  
  4059.  
  4060. PObject * H501_DescriptorRejection::Clone() const
  4061. {
  4062. #ifndef PASN_LEANANDMEAN
  4063.   PAssert(IsClass(H501_DescriptorRejection::Class()), PInvalidCast);
  4064. #endif
  4065.   return new H501_DescriptorRejection(*this);
  4066. }
  4067.  
  4068.  
  4069. //
  4070. // DescriptorIDConfirmation
  4071. //
  4072.  
  4073. H501_DescriptorIDConfirmation::H501_DescriptorIDConfirmation(unsigned tag, PASN_Object::TagClass tagClass)
  4074.   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
  4075. {
  4076. }
  4077.  
  4078.  
  4079. #ifndef PASN_NOPRINTON
  4080. void H501_DescriptorIDConfirmation::PrintOn(ostream & strm) const
  4081. {
  4082.   int indent = strm.precision() + 2;
  4083.   strm << "{\n";
  4084.   strm << setw(indent+17) << "descriptorInfo = " << setprecision(indent) << m_descriptorInfo << '\n';
  4085.   strm << setw(indent-1) << "}";
  4086. }
  4087. #endif
  4088.  
  4089.  
  4090. PObject::Comparison H501_DescriptorIDConfirmation::Compare(const PObject & obj) const
  4091. {
  4092. #ifndef PASN_LEANANDMEAN
  4093.   PAssert(IsDescendant(H501_DescriptorIDConfirmation::Class()), PInvalidCast);
  4094. #endif
  4095.   const H501_DescriptorIDConfirmation & other = (const H501_DescriptorIDConfirmation &)obj;
  4096.  
  4097.   Comparison result;
  4098.  
  4099.   if ((result = m_descriptorInfo.Compare(other.m_descriptorInfo)) != EqualTo)
  4100.     return result;
  4101.  
  4102.   return PASN_Sequence::Compare(other);
  4103. }
  4104.  
  4105.  
  4106. PINDEX H501_DescriptorIDConfirmation::GetDataLength() const
  4107. {
  4108.   PINDEX length = 0;
  4109.   length += m_descriptorInfo.GetObjectLength();
  4110.   return length;
  4111. }
  4112.  
  4113.  
  4114. BOOL H501_DescriptorIDConfirmation::Decode(PASN_Stream & strm)
  4115. {
  4116.   if (!PreambleDecode(strm))
  4117.     return FALSE;
  4118.  
  4119.   if (!m_descriptorInfo.Decode(strm))
  4120.     return FALSE;
  4121.  
  4122.   return UnknownExtensionsDecode(strm);
  4123. }
  4124.  
  4125.  
  4126. void H501_DescriptorIDConfirmation::Encode(PASN_Stream & strm) const
  4127. {
  4128.   PreambleEncode(strm);
  4129.  
  4130.   m_descriptorInfo.Encode(strm);
  4131.  
  4132.   UnknownExtensionsEncode(strm);
  4133. }
  4134.  
  4135.  
  4136. PObject * H501_DescriptorIDConfirmation::Clone() const
  4137. {
  4138. #ifndef PASN_LEANANDMEAN
  4139.   PAssert(IsClass(H501_DescriptorIDConfirmation::Class()), PInvalidCast);
  4140. #endif
  4141.   return new H501_DescriptorIDConfirmation(*this);
  4142. }
  4143.  
  4144.  
  4145. //
  4146. // DescriptorIDRejection
  4147. //
  4148.  
  4149. H501_DescriptorIDRejection::H501_DescriptorIDRejection(unsigned tag, PASN_Object::TagClass tagClass)
  4150.   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
  4151. {
  4152. }
  4153.  
  4154.  
  4155. #ifndef PASN_NOPRINTON
  4156. void H501_DescriptorIDRejection::PrintOn(ostream & strm) const
  4157. {
  4158.   int indent = strm.precision() + 2;
  4159.   strm << "{\n";
  4160.   strm << setw(indent+9) << "reason = " << setprecision(indent) << m_reason << '\n';
  4161.   strm << setw(indent-1) << "}";
  4162. }
  4163. #endif
  4164.  
  4165.  
  4166. PObject::Comparison H501_DescriptorIDRejection::Compare(const PObject & obj) const
  4167. {
  4168. #ifndef PASN_LEANANDMEAN
  4169.   PAssert(IsDescendant(H501_DescriptorIDRejection::Class()), PInvalidCast);
  4170. #endif
  4171.   const H501_DescriptorIDRejection & other = (const H501_DescriptorIDRejection &)obj;
  4172.  
  4173.   Comparison result;
  4174.  
  4175.   if ((result = m_reason.Compare(other.m_reason)) != EqualTo)
  4176.     return result;
  4177.  
  4178.   return PASN_Sequence::Compare(other);
  4179. }
  4180.  
  4181.  
  4182. PINDEX H501_DescriptorIDRejection::GetDataLength() const
  4183. {
  4184.   PINDEX length = 0;
  4185.   length += m_reason.GetObjectLength();
  4186.   return length;
  4187. }
  4188.  
  4189.  
  4190. BOOL H501_DescriptorIDRejection::Decode(PASN_Stream & strm)
  4191. {
  4192.   if (!PreambleDecode(strm))
  4193.     return FALSE;
  4194.  
  4195.   if (!m_reason.Decode(strm))
  4196.     return FALSE;
  4197.  
  4198.   return UnknownExtensionsDecode(strm);
  4199. }
  4200.  
  4201.  
  4202. void H501_DescriptorIDRejection::Encode(PASN_Stream & strm) const
  4203. {
  4204.   PreambleEncode(strm);
  4205.  
  4206.   m_reason.Encode(strm);
  4207.  
  4208.   UnknownExtensionsEncode(strm);
  4209. }
  4210.  
  4211.  
  4212. PObject * H501_DescriptorIDRejection::Clone() const
  4213. {
  4214. #ifndef PASN_LEANANDMEAN
  4215.   PAssert(IsClass(H501_DescriptorIDRejection::Class()), PInvalidCast);
  4216. #endif
  4217.   return new H501_DescriptorIDRejection(*this);
  4218. }
  4219.  
  4220.  
  4221. //
  4222. // DescriptorUpdate
  4223. //
  4224.  
  4225. H501_DescriptorUpdate::H501_DescriptorUpdate(unsigned tag, PASN_Object::TagClass tagClass)
  4226.   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
  4227. {
  4228. }
  4229.  
  4230.  
  4231. #ifndef PASN_NOPRINTON
  4232. void H501_DescriptorUpdate::PrintOn(ostream & strm) const
  4233. {
  4234.   int indent = strm.precision() + 2;
  4235.   strm << "{\n";
  4236.   strm << setw(indent+9) << "sender = " << setprecision(indent) << m_sender << '\n';
  4237.   strm << setw(indent+13) << "updateInfo = " << setprecision(indent) << m_updateInfo << '\n';
  4238.   strm << setw(indent-1) << "}";
  4239. }
  4240. #endif
  4241.  
  4242.  
  4243. PObject::Comparison H501_DescriptorUpdate::Compare(const PObject & obj) const
  4244. {
  4245. #ifndef PASN_LEANANDMEAN
  4246.   PAssert(IsDescendant(H501_DescriptorUpdate::Class()), PInvalidCast);
  4247. #endif
  4248.   const H501_DescriptorUpdate & other = (const H501_DescriptorUpdate &)obj;
  4249.  
  4250.   Comparison result;
  4251.  
  4252.   if ((result = m_sender.Compare(other.m_sender)) != EqualTo)
  4253.     return result;
  4254.   if ((result = m_updateInfo.Compare(other.m_updateInfo)) != EqualTo)
  4255.     return result;
  4256.  
  4257.   return PASN_Sequence::Compare(other);
  4258. }
  4259.  
  4260.  
  4261. PINDEX H501_DescriptorUpdate::GetDataLength() const
  4262. {
  4263.   PINDEX length = 0;
  4264.   length += m_sender.GetObjectLength();
  4265.   length += m_updateInfo.GetObjectLength();
  4266.   return length;
  4267. }
  4268.  
  4269.  
  4270. BOOL H501_DescriptorUpdate::Decode(PASN_Stream & strm)
  4271. {
  4272.   if (!PreambleDecode(strm))
  4273.     return FALSE;
  4274.  
  4275.   if (!m_sender.Decode(strm))
  4276.     return FALSE;
  4277.   if (!m_updateInfo.Decode(strm))
  4278.     return FALSE;
  4279.  
  4280.   return UnknownExtensionsDecode(strm);
  4281. }
  4282.  
  4283.  
  4284. void H501_DescriptorUpdate::Encode(PASN_Stream & strm) const
  4285. {
  4286.   PreambleEncode(strm);
  4287.  
  4288.   m_sender.Encode(strm);
  4289.   m_updateInfo.Encode(strm);
  4290.  
  4291.   UnknownExtensionsEncode(strm);
  4292. }
  4293.  
  4294.  
  4295. PObject * H501_DescriptorUpdate::Clone() const
  4296. {
  4297. #ifndef PASN_LEANANDMEAN
  4298.   PAssert(IsClass(H501_DescriptorUpdate::Class()), PInvalidCast);
  4299. #endif
  4300.   return new H501_DescriptorUpdate(*this);
  4301. }
  4302.  
  4303.  
  4304. //
  4305. // UpdateInformation
  4306. //
  4307.  
  4308. H501_UpdateInformation::H501_UpdateInformation(unsigned tag, PASN_Object::TagClass tagClass)
  4309.   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
  4310. {
  4311. }
  4312.  
  4313.  
  4314. #ifndef PASN_NOPRINTON
  4315. void H501_UpdateInformation::PrintOn(ostream & strm) const
  4316. {
  4317.   int indent = strm.precision() + 2;
  4318.   strm << "{\n";
  4319.   strm << setw(indent+17) << "descriptorInfo = " << setprecision(indent) << m_descriptorInfo << '\n';
  4320.   strm << setw(indent+13) << "updateType = " << setprecision(indent) << m_updateType << '\n';
  4321.   strm << setw(indent-1) << "}";
  4322. }
  4323. #endif
  4324.  
  4325.  
  4326. PObject::Comparison H501_UpdateInformation::Compare(const PObject & obj) const
  4327. {
  4328. #ifndef PASN_LEANANDMEAN
  4329.   PAssert(IsDescendant(H501_UpdateInformation::Class()), PInvalidCast);
  4330. #endif
  4331.   const H501_UpdateInformation & other = (const H501_UpdateInformation &)obj;
  4332.  
  4333.   Comparison result;
  4334.  
  4335.   if ((result = m_descriptorInfo.Compare(other.m_descriptorInfo)) != EqualTo)
  4336.     return result;
  4337.   if ((result = m_updateType.Compare(other.m_updateType)) != EqualTo)
  4338.     return result;
  4339.  
  4340.   return PASN_Sequence::Compare(other);
  4341. }
  4342.  
  4343.  
  4344. PINDEX H501_UpdateInformation::GetDataLength() const
  4345. {
  4346.   PINDEX length = 0;
  4347.   length += m_descriptorInfo.GetObjectLength();
  4348.   length += m_updateType.GetObjectLength();
  4349.   return length;
  4350. }
  4351.  
  4352.  
  4353. BOOL H501_UpdateInformation::Decode(PASN_Stream & strm)
  4354. {
  4355.   if (!PreambleDecode(strm))
  4356.     return FALSE;
  4357.  
  4358.   if (!m_descriptorInfo.Decode(strm))
  4359.     return FALSE;
  4360.   if (!m_updateType.Decode(strm))
  4361.     return FALSE;
  4362.  
  4363.   return UnknownExtensionsDecode(strm);
  4364. }
  4365.  
  4366.  
  4367. void H501_UpdateInformation::Encode(PASN_Stream & strm) const
  4368. {
  4369.   PreambleEncode(strm);
  4370.  
  4371.   m_descriptorInfo.Encode(strm);
  4372.   m_updateType.Encode(strm);
  4373.  
  4374.   UnknownExtensionsEncode(strm);
  4375. }
  4376.  
  4377.  
  4378. PObject * H501_UpdateInformation::Clone() const
  4379. {
  4380. #ifndef PASN_LEANANDMEAN
  4381.   PAssert(IsClass(H501_UpdateInformation::Class()), PInvalidCast);
  4382. #endif
  4383.   return new H501_UpdateInformation(*this);
  4384. }
  4385.  
  4386.  
  4387. //
  4388. // AccessConfirmation
  4389. //
  4390.  
  4391. H501_AccessConfirmation::H501_AccessConfirmation(unsigned tag, PASN_Object::TagClass tagClass)
  4392.   : PASN_Sequence(tag, tagClass, 0, TRUE, 2)
  4393. {
  4394. }
  4395.  
  4396.  
  4397. #ifndef PASN_NOPRINTON
  4398. void H501_AccessConfirmation::PrintOn(ostream & strm) const
  4399. {
  4400.   int indent = strm.precision() + 2;
  4401.   strm << "{\n";
  4402.   strm << setw(indent+12) << "templates = " << setprecision(indent) << m_templates << '\n';
  4403.   strm << setw(indent+18) << "partialResponse = " << setprecision(indent) << m_partialResponse << '\n';
  4404.   if (HasOptionalField(e_supportedProtocols))
  4405.     strm << setw(indent+21) << "supportedProtocols = " << setprecision(indent) << m_supportedProtocols << '\n';
  4406.   if (HasOptionalField(e_serviceControl))
  4407.     strm << setw(indent+17) << "serviceControl = " << setprecision(indent) << m_serviceControl << '\n';
  4408.   strm << setw(indent-1) << "}";
  4409. }
  4410. #endif
  4411.  
  4412.  
  4413. PObject::Comparison H501_AccessConfirmation::Compare(const PObject & obj) const
  4414. {
  4415. #ifndef PASN_LEANANDMEAN
  4416.   PAssert(IsDescendant(H501_AccessConfirmation::Class()), PInvalidCast);
  4417. #endif
  4418.   const H501_AccessConfirmation & other = (const H501_AccessConfirmation &)obj;
  4419.  
  4420.   Comparison result;
  4421.  
  4422.   if ((result = m_templates.Compare(other.m_templates)) != EqualTo)
  4423.     return result;
  4424.   if ((result = m_partialResponse.Compare(other.m_partialResponse)) != EqualTo)
  4425.     return result;
  4426.  
  4427.   return PASN_Sequence::Compare(other);
  4428. }
  4429.  
  4430.  
  4431. PINDEX H501_AccessConfirmation::GetDataLength() const
  4432. {
  4433.   PINDEX length = 0;
  4434.   length += m_templates.GetObjectLength();
  4435.   length += m_partialResponse.GetObjectLength();
  4436.   return length;
  4437. }
  4438.  
  4439.  
  4440. BOOL H501_AccessConfirmation::Decode(PASN_Stream & strm)
  4441. {
  4442.   if (!PreambleDecode(strm))
  4443.     return FALSE;
  4444.  
  4445.   if (!m_templates.Decode(strm))
  4446.     return FALSE;
  4447.   if (!m_partialResponse.Decode(strm))
  4448.     return FALSE;
  4449.   if (!KnownExtensionDecode(strm, e_supportedProtocols, m_supportedProtocols))
  4450.     return FALSE;
  4451.   if (!KnownExtensionDecode(strm, e_serviceControl, m_serviceControl))
  4452.     return FALSE;
  4453.  
  4454.   return UnknownExtensionsDecode(strm);
  4455. }
  4456.  
  4457.  
  4458. void H501_AccessConfirmation::Encode(PASN_Stream & strm) const
  4459. {
  4460.   PreambleEncode(strm);
  4461.  
  4462.   m_templates.Encode(strm);
  4463.   m_partialResponse.Encode(strm);
  4464.   KnownExtensionEncode(strm, e_supportedProtocols, m_supportedProtocols);
  4465.   KnownExtensionEncode(strm, e_serviceControl, m_serviceControl);
  4466.  
  4467.   UnknownExtensionsEncode(strm);
  4468. }
  4469.  
  4470.  
  4471. PObject * H501_AccessConfirmation::Clone() const
  4472. {
  4473. #ifndef PASN_LEANANDMEAN
  4474.   PAssert(IsClass(H501_AccessConfirmation::Class()), PInvalidCast);
  4475. #endif
  4476.   return new H501_AccessConfirmation(*this);
  4477. }
  4478.  
  4479.  
  4480. //
  4481. // AccessRejection
  4482. //
  4483.  
  4484. H501_AccessRejection::H501_AccessRejection(unsigned tag, PASN_Object::TagClass tagClass)
  4485.   : PASN_Sequence(tag, tagClass, 0, TRUE, 1)
  4486. {
  4487. }
  4488.  
  4489.  
  4490. #ifndef PASN_NOPRINTON
  4491. void H501_AccessRejection::PrintOn(ostream & strm) const
  4492. {
  4493.   int indent = strm.precision() + 2;
  4494.   strm << "{\n";
  4495.   strm << setw(indent+9) << "reason = " << setprecision(indent) << m_reason << '\n';
  4496.   if (HasOptionalField(e_serviceControl))
  4497.     strm << setw(indent+17) << "serviceControl = " << setprecision(indent) << m_serviceControl << '\n';
  4498.   strm << setw(indent-1) << "}";
  4499. }
  4500. #endif
  4501.  
  4502.  
  4503. PObject::Comparison H501_AccessRejection::Compare(const PObject & obj) const
  4504. {
  4505. #ifndef PASN_LEANANDMEAN
  4506.   PAssert(IsDescendant(H501_AccessRejection::Class()), PInvalidCast);
  4507. #endif
  4508.   const H501_AccessRejection & other = (const H501_AccessRejection &)obj;
  4509.  
  4510.   Comparison result;
  4511.  
  4512.   if ((result = m_reason.Compare(other.m_reason)) != EqualTo)
  4513.     return result;
  4514.  
  4515.   return PASN_Sequence::Compare(other);
  4516. }
  4517.  
  4518.  
  4519. PINDEX H501_AccessRejection::GetDataLength() const
  4520. {
  4521.   PINDEX length = 0;
  4522.   length += m_reason.GetObjectLength();
  4523.   return length;
  4524. }
  4525.  
  4526.  
  4527. BOOL H501_AccessRejection::Decode(PASN_Stream & strm)
  4528. {
  4529.   if (!PreambleDecode(strm))
  4530.     return FALSE;
  4531.  
  4532.   if (!m_reason.Decode(strm))
  4533.     return FALSE;
  4534.   if (!KnownExtensionDecode(strm, e_serviceControl, m_serviceControl))
  4535.     return FALSE;
  4536.  
  4537.   return UnknownExtensionsDecode(strm);
  4538. }
  4539.  
  4540.  
  4541. void H501_AccessRejection::Encode(PASN_Stream & strm) const
  4542. {
  4543.   PreambleEncode(strm);
  4544.  
  4545.   m_reason.Encode(strm);
  4546.   KnownExtensionEncode(strm, e_serviceControl, m_serviceControl);
  4547.  
  4548.   UnknownExtensionsEncode(strm);
  4549. }
  4550.  
  4551.  
  4552. PObject * H501_AccessRejection::Clone() const
  4553. {
  4554. #ifndef PASN_LEANANDMEAN
  4555.   PAssert(IsClass(H501_AccessRejection::Class()), PInvalidCast);
  4556. #endif
  4557.   return new H501_AccessRejection(*this);
  4558. }
  4559.  
  4560.  
  4561. //
  4562. // UsageRejection
  4563. //
  4564.  
  4565. H501_UsageRejection::H501_UsageRejection(unsigned tag, PASN_Object::TagClass tagClass)
  4566.   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
  4567. {
  4568. }
  4569.  
  4570.  
  4571. #ifndef PASN_NOPRINTON
  4572. void H501_UsageRejection::PrintOn(ostream & strm) const
  4573. {
  4574.   int indent = strm.precision() + 2;
  4575.   strm << "{\n";
  4576.   strm << setw(indent+9) << "reason = " << setprecision(indent) << m_reason << '\n';
  4577.   strm << setw(indent-1) << "}";
  4578. }
  4579. #endif
  4580.  
  4581.  
  4582. PObject::Comparison H501_UsageRejection::Compare(const PObject & obj) const
  4583. {
  4584. #ifndef PASN_LEANANDMEAN
  4585.   PAssert(IsDescendant(H501_UsageRejection::Class()), PInvalidCast);
  4586. #endif
  4587.   const H501_UsageRejection & other = (const H501_UsageRejection &)obj;
  4588.  
  4589.   Comparison result;
  4590.  
  4591.   if ((result = m_reason.Compare(other.m_reason)) != EqualTo)
  4592.     return result;
  4593.  
  4594.   return PASN_Sequence::Compare(other);
  4595. }
  4596.  
  4597.  
  4598. PINDEX H501_UsageRejection::GetDataLength() const
  4599. {
  4600.   PINDEX length = 0;
  4601.   length += m_reason.GetObjectLength();
  4602.   return length;
  4603. }
  4604.  
  4605.  
  4606. BOOL H501_UsageRejection::Decode(PASN_Stream & strm)
  4607. {
  4608.   if (!PreambleDecode(strm))
  4609.     return FALSE;
  4610.  
  4611.   if (!m_reason.Decode(strm))
  4612.     return FALSE;
  4613.  
  4614.   return UnknownExtensionsDecode(strm);
  4615. }
  4616.  
  4617.  
  4618. void H501_UsageRejection::Encode(PASN_Stream & strm) const
  4619. {
  4620.   PreambleEncode(strm);
  4621.  
  4622.   m_reason.Encode(strm);
  4623.  
  4624.   UnknownExtensionsEncode(strm);
  4625. }
  4626.  
  4627.  
  4628. PObject * H501_UsageRejection::Clone() const
  4629. {
  4630. #ifndef PASN_LEANANDMEAN
  4631.   PAssert(IsClass(H501_UsageRejection::Class()), PInvalidCast);
  4632. #endif
  4633.   return new H501_UsageRejection(*this);
  4634. }
  4635.  
  4636.  
  4637. //
  4638. // UsageIndicationRejection
  4639. //
  4640.  
  4641. H501_UsageIndicationRejection::H501_UsageIndicationRejection(unsigned tag, PASN_Object::TagClass tagClass)
  4642.   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
  4643. {
  4644. }
  4645.  
  4646.  
  4647. #ifndef PASN_NOPRINTON
  4648. void H501_UsageIndicationRejection::PrintOn(ostream & strm) const
  4649. {
  4650.   int indent = strm.precision() + 2;
  4651.   strm << "{\n";
  4652.   strm << setw(indent+9) << "reason = " << setprecision(indent) << m_reason << '\n';
  4653.   strm << setw(indent-1) << "}";
  4654. }
  4655. #endif
  4656.  
  4657.  
  4658. PObject::Comparison H501_UsageIndicationRejection::Compare(const PObject & obj) const
  4659. {
  4660. #ifndef PASN_LEANANDMEAN
  4661.   PAssert(IsDescendant(H501_UsageIndicationRejection::Class()), PInvalidCast);
  4662. #endif
  4663.   const H501_UsageIndicationRejection & other = (const H501_UsageIndicationRejection &)obj;
  4664.  
  4665.   Comparison result;
  4666.  
  4667.   if ((result = m_reason.Compare(other.m_reason)) != EqualTo)
  4668.     return result;
  4669.  
  4670.   return PASN_Sequence::Compare(other);
  4671. }
  4672.  
  4673.  
  4674. PINDEX H501_UsageIndicationRejection::GetDataLength() const
  4675. {
  4676.   PINDEX length = 0;
  4677.   length += m_reason.GetObjectLength();
  4678.   return length;
  4679. }
  4680.  
  4681.  
  4682. BOOL H501_UsageIndicationRejection::Decode(PASN_Stream & strm)
  4683. {
  4684.   if (!PreambleDecode(strm))
  4685.     return FALSE;
  4686.  
  4687.   if (!m_reason.Decode(strm))
  4688.     return FALSE;
  4689.  
  4690.   return UnknownExtensionsDecode(strm);
  4691. }
  4692.  
  4693.  
  4694. void H501_UsageIndicationRejection::Encode(PASN_Stream & strm) const
  4695. {
  4696.   PreambleEncode(strm);
  4697.  
  4698.   m_reason.Encode(strm);
  4699.  
  4700.   UnknownExtensionsEncode(strm);
  4701. }
  4702.  
  4703.  
  4704. PObject * H501_UsageIndicationRejection::Clone() const
  4705. {
  4706. #ifndef PASN_LEANANDMEAN
  4707.   PAssert(IsClass(H501_UsageIndicationRejection::Class()), PInvalidCast);
  4708. #endif
  4709.   return new H501_UsageIndicationRejection(*this);
  4710. }
  4711.  
  4712.  
  4713. //
  4714. // ValidationRejection
  4715. //
  4716.  
  4717. H501_ValidationRejection::H501_ValidationRejection(unsigned tag, PASN_Object::TagClass tagClass)
  4718.   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
  4719. {
  4720. }
  4721.  
  4722.  
  4723. #ifndef PASN_NOPRINTON
  4724. void H501_ValidationRejection::PrintOn(ostream & strm) const
  4725. {
  4726.   int indent = strm.precision() + 2;
  4727.   strm << "{\n";
  4728.   strm << setw(indent+9) << "reason = " << setprecision(indent) << m_reason << '\n';
  4729.   strm << setw(indent-1) << "}";
  4730. }
  4731. #endif
  4732.  
  4733.  
  4734. PObject::Comparison H501_ValidationRejection::Compare(const PObject & obj) const
  4735. {
  4736. #ifndef PASN_LEANANDMEAN
  4737.   PAssert(IsDescendant(H501_ValidationRejection::Class()), PInvalidCast);
  4738. #endif
  4739.   const H501_ValidationRejection & other = (const H501_ValidationRejection &)obj;
  4740.  
  4741.   Comparison result;
  4742.  
  4743.   if ((result = m_reason.Compare(other.m_reason)) != EqualTo)
  4744.     return result;
  4745.  
  4746.   return PASN_Sequence::Compare(other);
  4747. }
  4748.  
  4749.  
  4750. PINDEX H501_ValidationRejection::GetDataLength() const
  4751. {
  4752.   PINDEX length = 0;
  4753.   length += m_reason.GetObjectLength();
  4754.   return length;
  4755. }
  4756.  
  4757.  
  4758. BOOL H501_ValidationRejection::Decode(PASN_Stream & strm)
  4759. {
  4760.   if (!PreambleDecode(strm))
  4761.     return FALSE;
  4762.  
  4763.   if (!m_reason.Decode(strm))
  4764.     return FALSE;
  4765.  
  4766.   return UnknownExtensionsDecode(strm);
  4767. }
  4768.  
  4769.  
  4770. void H501_ValidationRejection::Encode(PASN_Stream & strm) const
  4771. {
  4772.   PreambleEncode(strm);
  4773.  
  4774.   m_reason.Encode(strm);
  4775.  
  4776.   UnknownExtensionsEncode(strm);
  4777. }
  4778.  
  4779.  
  4780. PObject * H501_ValidationRejection::Clone() const
  4781. {
  4782. #ifndef PASN_LEANANDMEAN
  4783.   PAssert(IsClass(H501_ValidationRejection::Class()), PInvalidCast);
  4784. #endif
  4785.   return new H501_ValidationRejection(*this);
  4786. }
  4787.  
  4788.  
  4789. //
  4790. // RequestInProgress
  4791. //
  4792.  
  4793. H501_RequestInProgress::H501_RequestInProgress(unsigned tag, PASN_Object::TagClass tagClass)
  4794.   : PASN_Sequence(tag, tagClass, 0, TRUE, 1)
  4795. {
  4796.   m_delay.SetConstraints(PASN_Object::FixedConstraint, 1, 65535);
  4797. }
  4798.  
  4799.  
  4800. #ifndef PASN_NOPRINTON
  4801. void H501_RequestInProgress::PrintOn(ostream & strm) const
  4802. {
  4803.   int indent = strm.precision() + 2;
  4804.   strm << "{\n";
  4805.   strm << setw(indent+8) << "delay = " << setprecision(indent) << m_delay << '\n';
  4806.   if (HasOptionalField(e_serviceControl))
  4807.     strm << setw(indent+17) << "serviceControl = " << setprecision(indent) << m_serviceControl << '\n';
  4808.   strm << setw(indent-1) << "}";
  4809. }
  4810. #endif
  4811.  
  4812.  
  4813. PObject::Comparison H501_RequestInProgress::Compare(const PObject & obj) const
  4814. {
  4815. #ifndef PASN_LEANANDMEAN
  4816.   PAssert(IsDescendant(H501_RequestInProgress::Class()), PInvalidCast);
  4817. #endif
  4818.   const H501_RequestInProgress & other = (const H501_RequestInProgress &)obj;
  4819.  
  4820.   Comparison result;
  4821.  
  4822.   if ((result = m_delay.Compare(other.m_delay)) != EqualTo)
  4823.     return result;
  4824.  
  4825.   return PASN_Sequence::Compare(other);
  4826. }
  4827.  
  4828.  
  4829. PINDEX H501_RequestInProgress::GetDataLength() const
  4830. {
  4831.   PINDEX length = 0;
  4832.   length += m_delay.GetObjectLength();
  4833.   return length;
  4834. }
  4835.  
  4836.  
  4837. BOOL H501_RequestInProgress::Decode(PASN_Stream & strm)
  4838. {
  4839.   if (!PreambleDecode(strm))
  4840.     return FALSE;
  4841.  
  4842.   if (!m_delay.Decode(strm))
  4843.     return FALSE;
  4844.   if (!KnownExtensionDecode(strm, e_serviceControl, m_serviceControl))
  4845.     return FALSE;
  4846.  
  4847.   return UnknownExtensionsDecode(strm);
  4848. }
  4849.  
  4850.  
  4851. void H501_RequestInProgress::Encode(PASN_Stream & strm) const
  4852. {
  4853.   PreambleEncode(strm);
  4854.  
  4855.   m_delay.Encode(strm);
  4856.   KnownExtensionEncode(strm, e_serviceControl, m_serviceControl);
  4857.  
  4858.   UnknownExtensionsEncode(strm);
  4859. }
  4860.  
  4861.  
  4862. PObject * H501_RequestInProgress::Clone() const
  4863. {
  4864. #ifndef PASN_LEANANDMEAN
  4865.   PAssert(IsClass(H501_RequestInProgress::Class()), PInvalidCast);
  4866. #endif
  4867.   return new H501_RequestInProgress(*this);
  4868. }
  4869.  
  4870.  
  4871. //
  4872. // NonStandardRejection
  4873. //
  4874.  
  4875. H501_NonStandardRejection::H501_NonStandardRejection(unsigned tag, PASN_Object::TagClass tagClass)
  4876.   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
  4877. {
  4878. }
  4879.  
  4880.  
  4881. #ifndef PASN_NOPRINTON
  4882. void H501_NonStandardRejection::PrintOn(ostream & strm) const
  4883. {
  4884.   int indent = strm.precision() + 2;
  4885.   strm << "{\n";
  4886.   strm << setw(indent+9) << "reason = " << setprecision(indent) << m_reason << '\n';
  4887.   strm << setw(indent-1) << "}";
  4888. }
  4889. #endif
  4890.  
  4891.  
  4892. PObject::Comparison H501_NonStandardRejection::Compare(const PObject & obj) const
  4893. {
  4894. #ifndef PASN_LEANANDMEAN
  4895.   PAssert(IsDescendant(H501_NonStandardRejection::Class()), PInvalidCast);
  4896. #endif
  4897.   const H501_NonStandardRejection & other = (const H501_NonStandardRejection &)obj;
  4898.  
  4899.   Comparison result;
  4900.  
  4901.   if ((result = m_reason.Compare(other.m_reason)) != EqualTo)
  4902.     return result;
  4903.  
  4904.   return PASN_Sequence::Compare(other);
  4905. }
  4906.  
  4907.  
  4908. PINDEX H501_NonStandardRejection::GetDataLength() const
  4909. {
  4910.   PINDEX length = 0;
  4911.   length += m_reason.GetObjectLength();
  4912.   return length;
  4913. }
  4914.  
  4915.  
  4916. BOOL H501_NonStandardRejection::Decode(PASN_Stream & strm)
  4917. {
  4918.   if (!PreambleDecode(strm))
  4919.     return FALSE;
  4920.  
  4921.   if (!m_reason.Decode(strm))
  4922.     return FALSE;
  4923.  
  4924.   return UnknownExtensionsDecode(strm);
  4925. }
  4926.  
  4927.  
  4928. void H501_NonStandardRejection::Encode(PASN_Stream & strm) const
  4929. {
  4930.   PreambleEncode(strm);
  4931.  
  4932.   m_reason.Encode(strm);
  4933.  
  4934.   UnknownExtensionsEncode(strm);
  4935. }
  4936.  
  4937.  
  4938. PObject * H501_NonStandardRejection::Clone() const
  4939. {
  4940. #ifndef PASN_LEANANDMEAN
  4941.   PAssert(IsClass(H501_NonStandardRejection::Class()), PInvalidCast);
  4942. #endif
  4943.   return new H501_NonStandardRejection(*this);
  4944. }
  4945.  
  4946.  
  4947. //
  4948. // UnknownMessageResponse
  4949. //
  4950.  
  4951. H501_UnknownMessageResponse::H501_UnknownMessageResponse(unsigned tag, PASN_Object::TagClass tagClass)
  4952.   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
  4953. {
  4954. }
  4955.  
  4956.  
  4957. #ifndef PASN_NOPRINTON
  4958. void H501_UnknownMessageResponse::PrintOn(ostream & strm) const
  4959. {
  4960.   int indent = strm.precision() + 2;
  4961.   strm << "{\n";
  4962.   strm << setw(indent+17) << "unknownMessage = " << setprecision(indent) << m_unknownMessage << '\n';
  4963.   strm << setw(indent+9) << "reason = " << setprecision(indent) << m_reason << '\n';
  4964.   strm << setw(indent-1) << "}";
  4965. }
  4966. #endif
  4967.  
  4968.  
  4969. PObject::Comparison H501_UnknownMessageResponse::Compare(const PObject & obj) const
  4970. {
  4971. #ifndef PASN_LEANANDMEAN
  4972.   PAssert(IsDescendant(H501_UnknownMessageResponse::Class()), PInvalidCast);
  4973. #endif
  4974.   const H501_UnknownMessageResponse & other = (const H501_UnknownMessageResponse &)obj;
  4975.  
  4976.   Comparison result;
  4977.  
  4978.   if ((result = m_unknownMessage.Compare(other.m_unknownMessage)) != EqualTo)
  4979.     return result;
  4980.   if ((result = m_reason.Compare(other.m_reason)) != EqualTo)
  4981.     return result;
  4982.  
  4983.   return PASN_Sequence::Compare(other);
  4984. }
  4985.  
  4986.  
  4987. PINDEX H501_UnknownMessageResponse::GetDataLength() const
  4988. {
  4989.   PINDEX length = 0;
  4990.   length += m_unknownMessage.GetObjectLength();
  4991.   length += m_reason.GetObjectLength();
  4992.   return length;
  4993. }
  4994.  
  4995.  
  4996. BOOL H501_UnknownMessageResponse::Decode(PASN_Stream & strm)
  4997. {
  4998.   if (!PreambleDecode(strm))
  4999.     return FALSE;
  5000.  
  5001.   if (!m_unknownMessage.Decode(strm))
  5002.     return FALSE;
  5003.   if (!m_reason.Decode(strm))
  5004.     return FALSE;
  5005.  
  5006.   return UnknownExtensionsDecode(strm);
  5007. }
  5008.  
  5009.  
  5010. void H501_UnknownMessageResponse::Encode(PASN_Stream & strm) const
  5011. {
  5012.   PreambleEncode(strm);
  5013.  
  5014.   m_unknownMessage.Encode(strm);
  5015.   m_reason.Encode(strm);
  5016.  
  5017.   UnknownExtensionsEncode(strm);
  5018. }
  5019.  
  5020.  
  5021. PObject * H501_UnknownMessageResponse::Clone() const
  5022. {
  5023. #ifndef PASN_LEANANDMEAN
  5024.   PAssert(IsClass(H501_UnknownMessageResponse::Class()), PInvalidCast);
  5025. #endif
  5026.   return new H501_UnknownMessageResponse(*this);
  5027. }
  5028.  
  5029.  
  5030. //
  5031. // AuthenticationRequest
  5032. //
  5033.  
  5034. H501_AuthenticationRequest::H501_AuthenticationRequest(unsigned tag, PASN_Object::TagClass tagClass)
  5035.   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
  5036. {
  5037. }
  5038.  
  5039.  
  5040. #ifndef PASN_NOPRINTON
  5041. void H501_AuthenticationRequest::PrintOn(ostream & strm) const
  5042. {
  5043.   int indent = strm.precision() + 2;
  5044.   strm << "{\n";
  5045.   strm << setw(indent+21) << "applicationMessage = " << setprecision(indent) << m_applicationMessage << '\n';
  5046.   strm << setw(indent-1) << "}";
  5047. }
  5048. #endif
  5049.  
  5050.  
  5051. PObject::Comparison H501_AuthenticationRequest::Compare(const PObject & obj) const
  5052. {
  5053. #ifndef PASN_LEANANDMEAN
  5054.   PAssert(IsDescendant(H501_AuthenticationRequest::Class()), PInvalidCast);
  5055. #endif
  5056.   const H501_AuthenticationRequest & other = (const H501_AuthenticationRequest &)obj;
  5057.  
  5058.   Comparison result;
  5059.  
  5060.   if ((result = m_applicationMessage.Compare(other.m_applicationMessage)) != EqualTo)
  5061.     return result;
  5062.  
  5063.   return PASN_Sequence::Compare(other);
  5064. }
  5065.  
  5066.  
  5067. PINDEX H501_AuthenticationRequest::GetDataLength() const
  5068. {
  5069.   PINDEX length = 0;
  5070.   length += m_applicationMessage.GetObjectLength();
  5071.   return length;
  5072. }
  5073.  
  5074.  
  5075. BOOL H501_AuthenticationRequest::Decode(PASN_Stream & strm)
  5076. {
  5077.   if (!PreambleDecode(strm))
  5078.     return FALSE;
  5079.  
  5080.   if (!m_applicationMessage.Decode(strm))
  5081.     return FALSE;
  5082.  
  5083.   return UnknownExtensionsDecode(strm);
  5084. }
  5085.  
  5086.  
  5087. void H501_AuthenticationRequest::Encode(PASN_Stream & strm) const
  5088. {
  5089.   PreambleEncode(strm);
  5090.  
  5091.   m_applicationMessage.Encode(strm);
  5092.  
  5093.   UnknownExtensionsEncode(strm);
  5094. }
  5095.  
  5096.  
  5097. PObject * H501_AuthenticationRequest::Clone() const
  5098. {
  5099. #ifndef PASN_LEANANDMEAN
  5100.   PAssert(IsClass(H501_AuthenticationRequest::Class()), PInvalidCast);
  5101. #endif
  5102.   return new H501_AuthenticationRequest(*this);
  5103. }
  5104.  
  5105.  
  5106. //
  5107. // AuthenticationRejection
  5108. //
  5109.  
  5110. H501_AuthenticationRejection::H501_AuthenticationRejection(unsigned tag, PASN_Object::TagClass tagClass)
  5111.   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
  5112. {
  5113. }
  5114.  
  5115.  
  5116. #ifndef PASN_NOPRINTON
  5117. void H501_AuthenticationRejection::PrintOn(ostream & strm) const
  5118. {
  5119.   int indent = strm.precision() + 2;
  5120.   strm << "{\n";
  5121.   strm << setw(indent+9) << "reason = " << setprecision(indent) << m_reason << '\n';
  5122.   strm << setw(indent-1) << "}";
  5123. }
  5124. #endif
  5125.  
  5126.  
  5127. PObject::Comparison H501_AuthenticationRejection::Compare(const PObject & obj) const
  5128. {
  5129. #ifndef PASN_LEANANDMEAN
  5130.   PAssert(IsDescendant(H501_AuthenticationRejection::Class()), PInvalidCast);
  5131. #endif
  5132.   const H501_AuthenticationRejection & other = (const H501_AuthenticationRejection &)obj;
  5133.  
  5134.   Comparison result;
  5135.  
  5136.   if ((result = m_reason.Compare(other.m_reason)) != EqualTo)
  5137.     return result;
  5138.  
  5139.   return PASN_Sequence::Compare(other);
  5140. }
  5141.  
  5142.  
  5143. PINDEX H501_AuthenticationRejection::GetDataLength() const
  5144. {
  5145.   PINDEX length = 0;
  5146.   length += m_reason.GetObjectLength();
  5147.   return length;
  5148. }
  5149.  
  5150.  
  5151. BOOL H501_AuthenticationRejection::Decode(PASN_Stream & strm)
  5152. {
  5153.   if (!PreambleDecode(strm))
  5154.     return FALSE;
  5155.  
  5156.   if (!m_reason.Decode(strm))
  5157.     return FALSE;
  5158.  
  5159.   return UnknownExtensionsDecode(strm);
  5160. }
  5161.  
  5162.  
  5163. void H501_AuthenticationRejection::Encode(PASN_Stream & strm) const
  5164. {
  5165.   PreambleEncode(strm);
  5166.  
  5167.   m_reason.Encode(strm);
  5168.  
  5169.   UnknownExtensionsEncode(strm);
  5170. }
  5171.  
  5172.  
  5173. PObject * H501_AuthenticationRejection::Clone() const
  5174. {
  5175. #ifndef PASN_LEANANDMEAN
  5176.   PAssert(IsClass(H501_AuthenticationRejection::Class()), PInvalidCast);
  5177. #endif
  5178.   return new H501_AuthenticationRejection(*this);
  5179. }
  5180.  
  5181.  
  5182. //
  5183. // AddressTemplate
  5184. //
  5185.  
  5186. H501_AddressTemplate::H501_AddressTemplate(unsigned tag, PASN_Object::TagClass tagClass)
  5187.   : PASN_Sequence(tag, tagClass, 0, TRUE, 2)
  5188. {
  5189.   m_timeToLive.SetConstraints(PASN_Object::FixedConstraint, 1, 4294967295U);
  5190. }
  5191.  
  5192.  
  5193. #ifndef PASN_NOPRINTON
  5194. void H501_AddressTemplate::PrintOn(ostream & strm) const
  5195. {
  5196.   int indent = strm.precision() + 2;
  5197.   strm << "{\n";
  5198.   strm << setw(indent+10) << "pattern = " << setprecision(indent) << m_pattern << '\n';
  5199.   strm << setw(indent+12) << "routeInfo = " << setprecision(indent) << m_routeInfo << '\n';
  5200.   strm << setw(indent+13) << "timeToLive = " << setprecision(indent) << m_timeToLive << '\n';
  5201.   if (HasOptionalField(e_supportedProtocols))
  5202.     strm << setw(indent+21) << "supportedProtocols = " << setprecision(indent) << m_supportedProtocols << '\n';
  5203.   if (HasOptionalField(e_featureSet))
  5204.     strm << setw(indent+13) << "featureSet = " << setprecision(indent) << m_featureSet << '\n';
  5205.   strm << setw(indent-1) << "}";
  5206. }
  5207. #endif
  5208.  
  5209.  
  5210. PObject::Comparison H501_AddressTemplate::Compare(const PObject & obj) const
  5211. {
  5212. #ifndef PASN_LEANANDMEAN
  5213.   PAssert(IsDescendant(H501_AddressTemplate::Class()), PInvalidCast);
  5214. #endif
  5215.   const H501_AddressTemplate & other = (const H501_AddressTemplate &)obj;
  5216.  
  5217.   Comparison result;
  5218.  
  5219.   if ((result = m_pattern.Compare(other.m_pattern)) != EqualTo)
  5220.     return result;
  5221.   if ((result = m_routeInfo.Compare(other.m_routeInfo)) != EqualTo)
  5222.     return result;
  5223.   if ((result = m_timeToLive.Compare(other.m_timeToLive)) != EqualTo)
  5224.     return result;
  5225.  
  5226.   return PASN_Sequence::Compare(other);
  5227. }
  5228.  
  5229.  
  5230. PINDEX H501_AddressTemplate::GetDataLength() const
  5231. {
  5232.   PINDEX length = 0;
  5233.   length += m_pattern.GetObjectLength();
  5234.   length += m_routeInfo.GetObjectLength();
  5235.   length += m_timeToLive.GetObjectLength();
  5236.   return length;
  5237. }
  5238.  
  5239.  
  5240. BOOL H501_AddressTemplate::Decode(PASN_Stream & strm)
  5241. {
  5242.   if (!PreambleDecode(strm))
  5243.     return FALSE;
  5244.  
  5245.   if (!m_pattern.Decode(strm))
  5246.     return FALSE;
  5247.   if (!m_routeInfo.Decode(strm))
  5248.     return FALSE;
  5249.   if (!m_timeToLive.Decode(strm))
  5250.     return FALSE;
  5251.   if (!KnownExtensionDecode(strm, e_supportedProtocols, m_supportedProtocols))
  5252.     return FALSE;
  5253.   if (!KnownExtensionDecode(strm, e_featureSet, m_featureSet))
  5254.     return FALSE;
  5255.  
  5256.   return UnknownExtensionsDecode(strm);
  5257. }
  5258.  
  5259.  
  5260. void H501_AddressTemplate::Encode(PASN_Stream & strm) const
  5261. {
  5262.   PreambleEncode(strm);
  5263.  
  5264.   m_pattern.Encode(strm);
  5265.   m_routeInfo.Encode(strm);
  5266.   m_timeToLive.Encode(strm);
  5267.   KnownExtensionEncode(strm, e_supportedProtocols, m_supportedProtocols);
  5268.   KnownExtensionEncode(strm, e_featureSet, m_featureSet);
  5269.  
  5270.   UnknownExtensionsEncode(strm);
  5271. }
  5272.  
  5273.  
  5274. PObject * H501_AddressTemplate::Clone() const
  5275. {
  5276. #ifndef PASN_LEANANDMEAN
  5277.   PAssert(IsClass(H501_AddressTemplate::Class()), PInvalidCast);
  5278. #endif
  5279.   return new H501_AddressTemplate(*this);
  5280. }
  5281.  
  5282.  
  5283. //
  5284. // ContactInformation
  5285. //
  5286.  
  5287. H501_ContactInformation::H501_ContactInformation(unsigned tag, PASN_Object::TagClass tagClass)
  5288.   : PASN_Sequence(tag, tagClass, 3, TRUE, 4)
  5289. {
  5290.   m_priority.SetConstraints(PASN_Object::FixedConstraint, 0, 127);
  5291. }
  5292.  
  5293.  
  5294. #ifndef PASN_NOPRINTON
  5295. void H501_ContactInformation::PrintOn(ostream & strm) const
  5296. {
  5297.   int indent = strm.precision() + 2;
  5298.   strm << "{\n";
  5299.   strm << setw(indent+19) << "transportAddress = " << setprecision(indent) << m_transportAddress << '\n';
  5300.   strm << setw(indent+11) << "priority = " << setprecision(indent) << m_priority << '\n';
  5301.   if (HasOptionalField(e_transportQoS))
  5302.     strm << setw(indent+15) << "transportQoS = " << setprecision(indent) << m_transportQoS << '\n';
  5303.   if (HasOptionalField(e_security))
  5304.     strm << setw(indent+11) << "security = " << setprecision(indent) << m_security << '\n';
  5305.   if (HasOptionalField(e_accessTokens))
  5306.     strm << setw(indent+15) << "accessTokens = " << setprecision(indent) << m_accessTokens << '\n';
  5307.   if (HasOptionalField(e_multipleCalls))
  5308.     strm << setw(indent+16) << "multipleCalls = " << setprecision(indent) << m_multipleCalls << '\n';
  5309.   if (HasOptionalField(e_featureSet))
  5310.     strm << setw(indent+13) << "featureSet = " << setprecision(indent) << m_featureSet << '\n';
  5311.   if (HasOptionalField(e_circuitID))
  5312.     strm << setw(indent+12) << "circuitID = " << setprecision(indent) << m_circuitID << '\n';
  5313.   if (HasOptionalField(e_supportedCircuits))
  5314.     strm << setw(indent+20) << "supportedCircuits = " << setprecision(indent) << m_supportedCircuits << '\n';
  5315.   strm << setw(indent-1) << "}";
  5316. }
  5317. #endif
  5318.  
  5319.  
  5320. PObject::Comparison H501_ContactInformation::Compare(const PObject & obj) const
  5321. {
  5322. #ifndef PASN_LEANANDMEAN
  5323.   PAssert(IsDescendant(H501_ContactInformation::Class()), PInvalidCast);
  5324. #endif
  5325.   const H501_ContactInformation & other = (const H501_ContactInformation &)obj;
  5326.  
  5327.   Comparison result;
  5328.  
  5329.   if ((result = m_transportAddress.Compare(other.m_transportAddress)) != EqualTo)
  5330.     return result;
  5331.   if ((result = m_priority.Compare(other.m_priority)) != EqualTo)
  5332.     return result;
  5333.   if ((result = m_transportQoS.Compare(other.m_transportQoS)) != EqualTo)
  5334.     return result;
  5335.   if ((result = m_security.Compare(other.m_security)) != EqualTo)
  5336.     return result;
  5337.   if ((result = m_accessTokens.Compare(other.m_accessTokens)) != EqualTo)
  5338.     return result;
  5339.  
  5340.   return PASN_Sequence::Compare(other);
  5341. }
  5342.  
  5343.  
  5344. PINDEX H501_ContactInformation::GetDataLength() const
  5345. {
  5346.   PINDEX length = 0;
  5347.   length += m_transportAddress.GetObjectLength();
  5348.   length += m_priority.GetObjectLength();
  5349.   if (HasOptionalField(e_transportQoS))
  5350.     length += m_transportQoS.GetObjectLength();
  5351.   if (HasOptionalField(e_security))
  5352.     length += m_security.GetObjectLength();
  5353.   if (HasOptionalField(e_accessTokens))
  5354.     length += m_accessTokens.GetObjectLength();
  5355.   return length;
  5356. }
  5357.  
  5358.  
  5359. BOOL H501_ContactInformation::Decode(PASN_Stream & strm)
  5360. {
  5361.   if (!PreambleDecode(strm))
  5362.     return FALSE;
  5363.  
  5364.   if (!m_transportAddress.Decode(strm))
  5365.     return FALSE;
  5366.   if (!m_priority.Decode(strm))
  5367.     return FALSE;
  5368.   if (HasOptionalField(e_transportQoS) && !m_transportQoS.Decode(strm))
  5369.     return FALSE;
  5370.   if (HasOptionalField(e_security) && !m_security.Decode(strm))
  5371.     return FALSE;
  5372.   if (HasOptionalField(e_accessTokens) && !m_accessTokens.Decode(strm))
  5373.     return FALSE;
  5374.   if (!KnownExtensionDecode(strm, e_multipleCalls, m_multipleCalls))
  5375.     return FALSE;
  5376.   if (!KnownExtensionDecode(strm, e_featureSet, m_featureSet))
  5377.     return FALSE;
  5378.   if (!KnownExtensionDecode(strm, e_circuitID, m_circuitID))
  5379.     return FALSE;
  5380.   if (!KnownExtensionDecode(strm, e_supportedCircuits, m_supportedCircuits))
  5381.     return FALSE;
  5382.  
  5383.   return UnknownExtensionsDecode(strm);
  5384. }
  5385.  
  5386.  
  5387. void H501_ContactInformation::Encode(PASN_Stream & strm) const
  5388. {
  5389.   PreambleEncode(strm);
  5390.  
  5391.   m_transportAddress.Encode(strm);
  5392.   m_priority.Encode(strm);
  5393.   if (HasOptionalField(e_transportQoS))
  5394.     m_transportQoS.Encode(strm);
  5395.   if (HasOptionalField(e_security))
  5396.     m_security.Encode(strm);
  5397.   if (HasOptionalField(e_accessTokens))
  5398.     m_accessTokens.Encode(strm);
  5399.   KnownExtensionEncode(strm, e_multipleCalls, m_multipleCalls);
  5400.   KnownExtensionEncode(strm, e_featureSet, m_featureSet);
  5401.   KnownExtensionEncode(strm, e_circuitID, m_circuitID);
  5402.   KnownExtensionEncode(strm, e_supportedCircuits, m_supportedCircuits);
  5403.  
  5404.   UnknownExtensionsEncode(strm);
  5405. }
  5406.  
  5407.  
  5408. PObject * H501_ContactInformation::Clone() const
  5409. {
  5410. #ifndef PASN_LEANANDMEAN
  5411.   PAssert(IsClass(H501_ContactInformation::Class()), PInvalidCast);
  5412. #endif
  5413.   return new H501_ContactInformation(*this);
  5414. }
  5415.  
  5416.  
  5417. //
  5418. // PriceInfoSpec
  5419. //
  5420.  
  5421. H501_PriceInfoSpec::H501_PriceInfoSpec(unsigned tag, PASN_Object::TagClass tagClass)
  5422.   : PASN_Sequence(tag, tagClass, 6, TRUE, 0)
  5423. {
  5424.   m_currency.SetConstraints(PASN_Object::FixedConstraint, 3);
  5425.   m_currencyScale.SetConstraints(PASN_Object::FixedConstraint, -127, 127);
  5426.   m_hoursFrom.SetConstraints(PASN_Object::FixedConstraint, 6);
  5427.   m_hoursUntil.SetConstraints(PASN_Object::FixedConstraint, 6);
  5428.   m_priceFormula.SetConstraints(PASN_Object::FixedConstraint, 1, 2048);
  5429. }
  5430.  
  5431.  
  5432. #ifndef PASN_NOPRINTON
  5433. void H501_PriceInfoSpec::PrintOn(ostream & strm) const
  5434. {
  5435.   int indent = strm.precision() + 2;
  5436.   strm << "{\n";
  5437.   strm << setw(indent+11) << "currency = " << setprecision(indent) << m_currency << '\n';
  5438.   strm << setw(indent+16) << "currencyScale = " << setprecision(indent) << m_currencyScale << '\n';
  5439.   if (HasOptionalField(e_validFrom))
  5440.     strm << setw(indent+12) << "validFrom = " << setprecision(indent) << m_validFrom << '\n';
  5441.   if (HasOptionalField(e_validUntil))
  5442.     strm << setw(indent+13) << "validUntil = " << setprecision(indent) << m_validUntil << '\n';
  5443.   if (HasOptionalField(e_hoursFrom))
  5444.     strm << setw(indent+12) << "hoursFrom = " << setprecision(indent) << m_hoursFrom << '\n';
  5445.   if (HasOptionalField(e_hoursUntil))
  5446.     strm << setw(indent+13) << "hoursUntil = " << setprecision(indent) << m_hoursUntil << '\n';
  5447.   if (HasOptionalField(e_priceElement))
  5448.     strm << setw(indent+15) << "priceElement = " << setprecision(indent) << m_priceElement << '\n';
  5449.   if (HasOptionalField(e_priceFormula))
  5450.     strm << setw(indent+15) << "priceFormula = " << setprecision(indent) << m_priceFormula << '\n';
  5451.   strm << setw(indent-1) << "}";
  5452. }
  5453. #endif
  5454.  
  5455.  
  5456. PObject::Comparison H501_PriceInfoSpec::Compare(const PObject & obj) const
  5457. {
  5458. #ifndef PASN_LEANANDMEAN
  5459.   PAssert(IsDescendant(H501_PriceInfoSpec::Class()), PInvalidCast);
  5460. #endif
  5461.   const H501_PriceInfoSpec & other = (const H501_PriceInfoSpec &)obj;
  5462.  
  5463.   Comparison result;
  5464.  
  5465.   if ((result = m_currency.Compare(other.m_currency)) != EqualTo)
  5466.     return result;
  5467.   if ((result = m_currencyScale.Compare(other.m_currencyScale)) != EqualTo)
  5468.     return result;
  5469.   if ((result = m_validFrom.Compare(other.m_validFrom)) != EqualTo)
  5470.     return result;
  5471.   if ((result = m_validUntil.Compare(other.m_validUntil)) != EqualTo)
  5472.     return result;
  5473.   if ((result = m_hoursFrom.Compare(other.m_hoursFrom)) != EqualTo)
  5474.     return result;
  5475.   if ((result = m_hoursUntil.Compare(other.m_hoursUntil)) != EqualTo)
  5476.     return result;
  5477.   if ((result = m_priceElement.Compare(other.m_priceElement)) != EqualTo)
  5478.     return result;
  5479.   if ((result = m_priceFormula.Compare(other.m_priceFormula)) != EqualTo)
  5480.     return result;
  5481.  
  5482.   return PASN_Sequence::Compare(other);
  5483. }
  5484.  
  5485.  
  5486. PINDEX H501_PriceInfoSpec::GetDataLength() const
  5487. {
  5488.   PINDEX length = 0;
  5489.   length += m_currency.GetObjectLength();
  5490.   length += m_currencyScale.GetObjectLength();
  5491.   if (HasOptionalField(e_validFrom))
  5492.     length += m_validFrom.GetObjectLength();
  5493.   if (HasOptionalField(e_validUntil))
  5494.     length += m_validUntil.GetObjectLength();
  5495.   if (HasOptionalField(e_hoursFrom))
  5496.     length += m_hoursFrom.GetObjectLength();
  5497.   if (HasOptionalField(e_hoursUntil))
  5498.     length += m_hoursUntil.GetObjectLength();
  5499.   if (HasOptionalField(e_priceElement))
  5500.     length += m_priceElement.GetObjectLength();
  5501.   if (HasOptionalField(e_priceFormula))
  5502.     length += m_priceFormula.GetObjectLength();
  5503.   return length;
  5504. }
  5505.  
  5506.  
  5507. BOOL H501_PriceInfoSpec::Decode(PASN_Stream & strm)
  5508. {
  5509.   if (!PreambleDecode(strm))
  5510.     return FALSE;
  5511.  
  5512.   if (!m_currency.Decode(strm))
  5513.     return FALSE;
  5514.   if (!m_currencyScale.Decode(strm))
  5515.     return FALSE;
  5516.   if (HasOptionalField(e_validFrom) && !m_validFrom.Decode(strm))
  5517.     return FALSE;
  5518.   if (HasOptionalField(e_validUntil) && !m_validUntil.Decode(strm))
  5519.     return FALSE;
  5520.   if (HasOptionalField(e_hoursFrom) && !m_hoursFrom.Decode(strm))
  5521.     return FALSE;
  5522.   if (HasOptionalField(e_hoursUntil) && !m_hoursUntil.Decode(strm))
  5523.     return FALSE;
  5524.   if (HasOptionalField(e_priceElement) && !m_priceElement.Decode(strm))
  5525.     return FALSE;
  5526.   if (HasOptionalField(e_priceFormula) && !m_priceFormula.Decode(strm))
  5527.     return FALSE;
  5528.  
  5529.   return UnknownExtensionsDecode(strm);
  5530. }
  5531.  
  5532.  
  5533. void H501_PriceInfoSpec::Encode(PASN_Stream & strm) const
  5534. {
  5535.   PreambleEncode(strm);
  5536.  
  5537.   m_currency.Encode(strm);
  5538.   m_currencyScale.Encode(strm);
  5539.   if (HasOptionalField(e_validFrom))
  5540.     m_validFrom.Encode(strm);
  5541.   if (HasOptionalField(e_validUntil))
  5542.     m_validUntil.Encode(strm);
  5543.   if (HasOptionalField(e_hoursFrom))
  5544.     m_hoursFrom.Encode(strm);
  5545.   if (HasOptionalField(e_hoursUntil))
  5546.     m_hoursUntil.Encode(strm);
  5547.   if (HasOptionalField(e_priceElement))
  5548.     m_priceElement.Encode(strm);
  5549.   if (HasOptionalField(e_priceFormula))
  5550.     m_priceFormula.Encode(strm);
  5551.  
  5552.   UnknownExtensionsEncode(strm);
  5553. }
  5554.  
  5555.  
  5556. PObject * H501_PriceInfoSpec::Clone() const
  5557. {
  5558. #ifndef PASN_LEANANDMEAN
  5559.   PAssert(IsClass(H501_PriceInfoSpec::Class()), PInvalidCast);
  5560. #endif
  5561.   return new H501_PriceInfoSpec(*this);
  5562. }
  5563.  
  5564.  
  5565. //
  5566. // PriceElement
  5567. //
  5568.  
  5569. H501_PriceElement::H501_PriceElement(unsigned tag, PASN_Object::TagClass tagClass)
  5570.   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
  5571. {
  5572.   m_amount.SetConstraints(PASN_Object::FixedConstraint, 0, 4294967295U);
  5573.   m_quantum.SetConstraints(PASN_Object::FixedConstraint, 0, 4294967295U);
  5574. }
  5575.  
  5576.  
  5577. #ifndef PASN_NOPRINTON
  5578. void H501_PriceElement::PrintOn(ostream & strm) const
  5579. {
  5580.   int indent = strm.precision() + 2;
  5581.   strm << "{\n";
  5582.   strm << setw(indent+9) << "amount = " << setprecision(indent) << m_amount << '\n';
  5583.   strm << setw(indent+10) << "quantum = " << setprecision(indent) << m_quantum << '\n';
  5584.   strm << setw(indent+8) << "units = " << setprecision(indent) << m_units << '\n';
  5585.   strm << setw(indent-1) << "}";
  5586. }
  5587. #endif
  5588.  
  5589.  
  5590. PObject::Comparison H501_PriceElement::Compare(const PObject & obj) const
  5591. {
  5592. #ifndef PASN_LEANANDMEAN
  5593.   PAssert(IsDescendant(H501_PriceElement::Class()), PInvalidCast);
  5594. #endif
  5595.   const H501_PriceElement & other = (const H501_PriceElement &)obj;
  5596.  
  5597.   Comparison result;
  5598.  
  5599.   if ((result = m_amount.Compare(other.m_amount)) != EqualTo)
  5600.     return result;
  5601.   if ((result = m_quantum.Compare(other.m_quantum)) != EqualTo)
  5602.     return result;
  5603.   if ((result = m_units.Compare(other.m_units)) != EqualTo)
  5604.     return result;
  5605.  
  5606.   return PASN_Sequence::Compare(other);
  5607. }
  5608.  
  5609.  
  5610. PINDEX H501_PriceElement::GetDataLength() const
  5611. {
  5612.   PINDEX length = 0;
  5613.   length += m_amount.GetObjectLength();
  5614.   length += m_quantum.GetObjectLength();
  5615.   length += m_units.GetObjectLength();
  5616.   return length;
  5617. }
  5618.  
  5619.  
  5620. BOOL H501_PriceElement::Decode(PASN_Stream & strm)
  5621. {
  5622.   if (!PreambleDecode(strm))
  5623.     return FALSE;
  5624.  
  5625.   if (!m_amount.Decode(strm))
  5626.     return FALSE;
  5627.   if (!m_quantum.Decode(strm))
  5628.     return FALSE;
  5629.   if (!m_units.Decode(strm))
  5630.     return FALSE;
  5631.  
  5632.   return UnknownExtensionsDecode(strm);
  5633. }
  5634.  
  5635.  
  5636. void H501_PriceElement::Encode(PASN_Stream & strm) const
  5637. {
  5638.   PreambleEncode(strm);
  5639.  
  5640.   m_amount.Encode(strm);
  5641.   m_quantum.Encode(strm);
  5642.   m_units.Encode(strm);
  5643.  
  5644.   UnknownExtensionsEncode(strm);
  5645. }
  5646.  
  5647.  
  5648. PObject * H501_PriceElement::Clone() const
  5649. {
  5650. #ifndef PASN_LEANANDMEAN
  5651.   PAssert(IsClass(H501_PriceElement::Class()), PInvalidCast);
  5652. #endif
  5653.   return new H501_PriceElement(*this);
  5654. }
  5655.  
  5656.  
  5657. //
  5658. // DescriptorInfo
  5659. //
  5660.  
  5661. H501_DescriptorInfo::H501_DescriptorInfo(unsigned tag, PASN_Object::TagClass tagClass)
  5662.   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
  5663. {
  5664. }
  5665.  
  5666.  
  5667. #ifndef PASN_NOPRINTON
  5668. void H501_DescriptorInfo::PrintOn(ostream & strm) const
  5669. {
  5670.   int indent = strm.precision() + 2;
  5671.   strm << "{\n";
  5672.   strm << setw(indent+15) << "descriptorID = " << setprecision(indent) << m_descriptorID << '\n';
  5673.   strm << setw(indent+14) << "lastChanged = " << setprecision(indent) << m_lastChanged << '\n';
  5674.   strm << setw(indent-1) << "}";
  5675. }
  5676. #endif
  5677.  
  5678.  
  5679. PObject::Comparison H501_DescriptorInfo::Compare(const PObject & obj) const
  5680. {
  5681. #ifndef PASN_LEANANDMEAN
  5682.   PAssert(IsDescendant(H501_DescriptorInfo::Class()), PInvalidCast);
  5683. #endif
  5684.   const H501_DescriptorInfo & other = (const H501_DescriptorInfo &)obj;
  5685.  
  5686.   Comparison result;
  5687.  
  5688.   if ((result = m_descriptorID.Compare(other.m_descriptorID)) != EqualTo)
  5689.     return result;
  5690.   if ((result = m_lastChanged.Compare(other.m_lastChanged)) != EqualTo)
  5691.     return result;
  5692.  
  5693.   return PASN_Sequence::Compare(other);
  5694. }
  5695.  
  5696.  
  5697. PINDEX H501_DescriptorInfo::GetDataLength() const
  5698. {
  5699.   PINDEX length = 0;
  5700.   length += m_descriptorID.GetObjectLength();
  5701.   length += m_lastChanged.GetObjectLength();
  5702.   return length;
  5703. }
  5704.  
  5705.  
  5706. BOOL H501_DescriptorInfo::Decode(PASN_Stream & strm)
  5707. {
  5708.   if (!PreambleDecode(strm))
  5709.     return FALSE;
  5710.  
  5711.   if (!m_descriptorID.Decode(strm))
  5712.     return FALSE;
  5713.   if (!m_lastChanged.Decode(strm))
  5714.     return FALSE;
  5715.  
  5716.   return UnknownExtensionsDecode(strm);
  5717. }
  5718.  
  5719.  
  5720. void H501_DescriptorInfo::Encode(PASN_Stream & strm) const
  5721. {
  5722.   PreambleEncode(strm);
  5723.  
  5724.   m_descriptorID.Encode(strm);
  5725.   m_lastChanged.Encode(strm);
  5726.  
  5727.   UnknownExtensionsEncode(strm);
  5728. }
  5729.  
  5730.  
  5731. PObject * H501_DescriptorInfo::Clone() const
  5732. {
  5733. #ifndef PASN_LEANANDMEAN
  5734.   PAssert(IsClass(H501_DescriptorInfo::Class()), PInvalidCast);
  5735. #endif
  5736.   return new H501_DescriptorInfo(*this);
  5737. }
  5738.  
  5739.  
  5740. //
  5741. // AlternatePEInfo
  5742. //
  5743.  
  5744. H501_AlternatePEInfo::H501_AlternatePEInfo(unsigned tag, PASN_Object::TagClass tagClass)
  5745.   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
  5746. {
  5747. }
  5748.  
  5749.  
  5750. #ifndef PASN_NOPRINTON
  5751. void H501_AlternatePEInfo::PrintOn(ostream & strm) const
  5752. {
  5753.   int indent = strm.precision() + 2;
  5754.   strm << "{\n";
  5755.   strm << setw(indent+14) << "alternatePE = " << setprecision(indent) << m_alternatePE << '\n';
  5756.   strm << setw(indent+23) << "alternateIsPermanent = " << setprecision(indent) << m_alternateIsPermanent << '\n';
  5757.   strm << setw(indent-1) << "}";
  5758. }
  5759. #endif
  5760.  
  5761.  
  5762. PObject::Comparison H501_AlternatePEInfo::Compare(const PObject & obj) const
  5763. {
  5764. #ifndef PASN_LEANANDMEAN
  5765.   PAssert(IsDescendant(H501_AlternatePEInfo::Class()), PInvalidCast);
  5766. #endif
  5767.   const H501_AlternatePEInfo & other = (const H501_AlternatePEInfo &)obj;
  5768.  
  5769.   Comparison result;
  5770.  
  5771.   if ((result = m_alternatePE.Compare(other.m_alternatePE)) != EqualTo)
  5772.     return result;
  5773.   if ((result = m_alternateIsPermanent.Compare(other.m_alternateIsPermanent)) != EqualTo)
  5774.     return result;
  5775.  
  5776.   return PASN_Sequence::Compare(other);
  5777. }
  5778.  
  5779.  
  5780. PINDEX H501_AlternatePEInfo::GetDataLength() const
  5781. {
  5782.   PINDEX length = 0;
  5783.   length += m_alternatePE.GetObjectLength();
  5784.   length += m_alternateIsPermanent.GetObjectLength();
  5785.   return length;
  5786. }
  5787.  
  5788.  
  5789. BOOL H501_AlternatePEInfo::Decode(PASN_Stream & strm)
  5790. {
  5791.   if (!PreambleDecode(strm))
  5792.     return FALSE;
  5793.  
  5794.   if (!m_alternatePE.Decode(strm))
  5795.     return FALSE;
  5796.   if (!m_alternateIsPermanent.Decode(strm))
  5797.     return FALSE;
  5798.  
  5799.   return UnknownExtensionsDecode(strm);
  5800. }
  5801.  
  5802.  
  5803. void H501_AlternatePEInfo::Encode(PASN_Stream & strm) const
  5804. {
  5805.   PreambleEncode(strm);
  5806.  
  5807.   m_alternatePE.Encode(strm);
  5808.   m_alternateIsPermanent.Encode(strm);
  5809.  
  5810.   UnknownExtensionsEncode(strm);
  5811. }
  5812.  
  5813.  
  5814. PObject * H501_AlternatePEInfo::Clone() const
  5815. {
  5816. #ifndef PASN_LEANANDMEAN
  5817.   PAssert(IsClass(H501_AlternatePEInfo::Class()), PInvalidCast);
  5818. #endif
  5819.   return new H501_AlternatePEInfo(*this);
  5820. }
  5821.  
  5822.  
  5823. //
  5824. // AlternatePE
  5825. //
  5826.  
  5827. H501_AlternatePE::H501_AlternatePE(unsigned tag, PASN_Object::TagClass tagClass)
  5828.   : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
  5829. {
  5830.   m_priority.SetConstraints(PASN_Object::FixedConstraint, 1, 127);
  5831. }
  5832.  
  5833.  
  5834. #ifndef PASN_NOPRINTON
  5835. void H501_AlternatePE::PrintOn(ostream & strm) const
  5836. {
  5837.   int indent = strm.precision() + 2;
  5838.   strm << "{\n";
  5839.   strm << setw(indent+17) << "contactAddress = " << setprecision(indent) << m_contactAddress << '\n';
  5840.   strm << setw(indent+11) << "priority = " << setprecision(indent) << m_priority << '\n';
  5841.   if (HasOptionalField(e_elementIdentifier))
  5842.     strm << setw(indent+20) << "elementIdentifier = " << setprecision(indent) << m_elementIdentifier << '\n';
  5843.   strm << setw(indent-1) << "}";
  5844. }
  5845. #endif
  5846.  
  5847.  
  5848. PObject::Comparison H501_AlternatePE::Compare(const PObject & obj) const
  5849. {
  5850. #ifndef PASN_LEANANDMEAN
  5851.   PAssert(IsDescendant(H501_AlternatePE::Class()), PInvalidCast);
  5852. #endif
  5853.   const H501_AlternatePE & other = (const H501_AlternatePE &)obj;
  5854.  
  5855.   Comparison result;
  5856.  
  5857.   if ((result = m_contactAddress.Compare(other.m_contactAddress)) != EqualTo)
  5858.     return result;
  5859.   if ((result = m_priority.Compare(other.m_priority)) != EqualTo)
  5860.     return result;
  5861.   if ((result = m_elementIdentifier.Compare(other.m_elementIdentifier)) != EqualTo)
  5862.     return result;
  5863.  
  5864.   return PASN_Sequence::Compare(other);
  5865. }
  5866.  
  5867.  
  5868. PINDEX H501_AlternatePE::GetDataLength() const
  5869. {
  5870.   PINDEX length = 0;
  5871.   length += m_contactAddress.GetObjectLength();
  5872.   length += m_priority.GetObjectLength();
  5873.   if (HasOptionalField(e_elementIdentifier))
  5874.     length += m_elementIdentifier.GetObjectLength();
  5875.   return length;
  5876. }
  5877.  
  5878.  
  5879. BOOL H501_AlternatePE::Decode(PASN_Stream & strm)
  5880. {
  5881.   if (!PreambleDecode(strm))
  5882.     return FALSE;
  5883.  
  5884.   if (!m_contactAddress.Decode(strm))
  5885.     return FALSE;
  5886.   if (!m_priority.Decode(strm))
  5887.     return FALSE;
  5888.   if (HasOptionalField(e_elementIdentifier) && !m_elementIdentifier.Decode(strm))
  5889.     return FALSE;
  5890.  
  5891.   return UnknownExtensionsDecode(strm);
  5892. }
  5893.  
  5894.  
  5895. void H501_AlternatePE::Encode(PASN_Stream & strm) const
  5896. {
  5897.   PreambleEncode(strm);
  5898.  
  5899.   m_contactAddress.Encode(strm);
  5900.   m_priority.Encode(strm);
  5901.   if (HasOptionalField(e_elementIdentifier))
  5902.     m_elementIdentifier.Encode(strm);
  5903.  
  5904.   UnknownExtensionsEncode(strm);
  5905. }
  5906.  
  5907.  
  5908. PObject * H501_AlternatePE::Clone() const
  5909. {
  5910. #ifndef PASN_LEANANDMEAN
  5911.   PAssert(IsClass(H501_AlternatePE::Class()), PInvalidCast);
  5912. #endif
  5913.   return new H501_AlternatePE(*this);
  5914. }
  5915.  
  5916.  
  5917. //
  5918. // UserInformation
  5919. //
  5920.  
  5921. H501_UserInformation::H501_UserInformation(unsigned tag, PASN_Object::TagClass tagClass)
  5922.   : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
  5923. {
  5924. }
  5925.  
  5926.  
  5927. #ifndef PASN_NOPRINTON
  5928. void H501_UserInformation::PrintOn(ostream & strm) const
  5929. {
  5930.   int indent = strm.precision() + 2;
  5931.   strm << "{\n";
  5932.   strm << setw(indent+17) << "userIdentifier = " << setprecision(indent) << m_userIdentifier << '\n';
  5933.   if (HasOptionalField(e_userAuthenticator))
  5934.     strm << setw(indent+20) << "userAuthenticator = " << setprecision(indent) << m_userAuthenticator << '\n';
  5935.   strm << setw(indent-1) << "}";
  5936. }
  5937. #endif
  5938.  
  5939.  
  5940. PObject::Comparison H501_UserInformation::Compare(const PObject & obj) const
  5941. {
  5942. #ifndef PASN_LEANANDMEAN
  5943.   PAssert(IsDescendant(H501_UserInformation::Class()), PInvalidCast);
  5944. #endif
  5945.   const H501_UserInformation & other = (const H501_UserInformation &)obj;
  5946.  
  5947.   Comparison result;
  5948.  
  5949.   if ((result = m_userIdentifier.Compare(other.m_userIdentifier)) != EqualTo)
  5950.     return result;
  5951.   if ((result = m_userAuthenticator.Compare(other.m_userAuthenticator)) != EqualTo)
  5952.     return result;
  5953.  
  5954.   return PASN_Sequence::Compare(other);
  5955. }
  5956.  
  5957.  
  5958. PINDEX H501_UserInformation::GetDataLength() const
  5959. {
  5960.   PINDEX length = 0;
  5961.   length += m_userIdentifier.GetObjectLength();
  5962.   if (HasOptionalField(e_userAuthenticator))
  5963.     length += m_userAuthenticator.GetObjectLength();
  5964.   return length;
  5965. }
  5966.  
  5967.  
  5968. BOOL H501_UserInformation::Decode(PASN_Stream & strm)
  5969. {
  5970.   if (!PreambleDecode(strm))
  5971.     return FALSE;
  5972.  
  5973.   if (!m_userIdentifier.Decode(strm))
  5974.     return FALSE;
  5975.   if (HasOptionalField(e_userAuthenticator) && !m_userAuthenticator.Decode(strm))
  5976.     return FALSE;
  5977.  
  5978.   return UnknownExtensionsDecode(strm);
  5979. }
  5980.  
  5981.  
  5982. void H501_UserInformation::Encode(PASN_Stream & strm) const
  5983. {
  5984.   PreambleEncode(strm);
  5985.  
  5986.   m_userIdentifier.Encode(strm);
  5987.   if (HasOptionalField(e_userAuthenticator))
  5988.     m_userAuthenticator.Encode(strm);
  5989.  
  5990.   UnknownExtensionsEncode(strm);
  5991. }
  5992.  
  5993.  
  5994. PObject * H501_UserInformation::Clone() const
  5995. {
  5996. #ifndef PASN_LEANANDMEAN
  5997.   PAssert(IsClass(H501_UserInformation::Class()), PInvalidCast);
  5998. #endif
  5999.   return new H501_UserInformation(*this);
  6000. }
  6001.  
  6002.  
  6003. //
  6004. // UsageSpecification
  6005. //
  6006.  
  6007. H501_UsageSpecification::H501_UsageSpecification(unsigned tag, PASN_Object::TagClass tagClass)
  6008.   : PASN_Sequence(tag, tagClass, 0, TRUE, 1)
  6009. {
  6010. }
  6011.  
  6012.  
  6013. #ifndef PASN_NOPRINTON
  6014. void H501_UsageSpecification::PrintOn(ostream & strm) const
  6015. {
  6016.   int indent = strm.precision() + 2;
  6017.   strm << "{\n";
  6018.   strm << setw(indent+9) << "sendTo = " << setprecision(indent) << m_sendTo << '\n';
  6019.   strm << setw(indent+7) << "when = " << setprecision(indent) << m_when << '\n';
  6020.   strm << setw(indent+11) << "required = " << setprecision(indent) << m_required << '\n';
  6021.   strm << setw(indent+12) << "preferred = " << setprecision(indent) << m_preferred << '\n';
  6022.   if (HasOptionalField(e_sendToPEAddress))
  6023.     strm << setw(indent+18) << "sendToPEAddress = " << setprecision(indent) << m_sendToPEAddress << '\n';
  6024.   strm << setw(indent-1) << "}";
  6025. }
  6026. #endif
  6027.  
  6028.  
  6029. PObject::Comparison H501_UsageSpecification::Compare(const PObject & obj) const
  6030. {
  6031. #ifndef PASN_LEANANDMEAN
  6032.   PAssert(IsDescendant(H501_UsageSpecification::Class()), PInvalidCast);
  6033. #endif
  6034.   const H501_UsageSpecification & other = (const H501_UsageSpecification &)obj;
  6035.  
  6036.   Comparison result;
  6037.  
  6038.   if ((result = m_sendTo.Compare(other.m_sendTo)) != EqualTo)
  6039.     return result;
  6040.   if ((result = m_when.Compare(other.m_when)) != EqualTo)
  6041.     return result;
  6042.   if ((result = m_required.Compare(other.m_required)) != EqualTo)
  6043.     return result;
  6044.   if ((result = m_preferred.Compare(other.m_preferred)) != EqualTo)
  6045.     return result;
  6046.  
  6047.   return PASN_Sequence::Compare(other);
  6048. }
  6049.  
  6050.  
  6051. PINDEX H501_UsageSpecification::GetDataLength() const
  6052. {
  6053.   PINDEX length = 0;
  6054.   length += m_sendTo.GetObjectLength();
  6055.   length += m_when.GetObjectLength();
  6056.   length += m_required.GetObjectLength();
  6057.   length += m_preferred.GetObjectLength();
  6058.   return length;
  6059. }
  6060.  
  6061.  
  6062. BOOL H501_UsageSpecification::Decode(PASN_Stream & strm)
  6063. {
  6064.   if (!PreambleDecode(strm))
  6065.     return FALSE;
  6066.  
  6067.   if (!m_sendTo.Decode(strm))
  6068.     return FALSE;
  6069.   if (!m_when.Decode(strm))
  6070.     return FALSE;
  6071.   if (!m_required.Decode(strm))
  6072.     return FALSE;
  6073.   if (!m_preferred.Decode(strm))
  6074.     return FALSE;
  6075.   if (!KnownExtensionDecode(strm, e_sendToPEAddress, m_sendToPEAddress))
  6076.     return FALSE;
  6077.  
  6078.   return UnknownExtensionsDecode(strm);
  6079. }
  6080.  
  6081.  
  6082. void H501_UsageSpecification::Encode(PASN_Stream & strm) const
  6083. {
  6084.   PreambleEncode(strm);
  6085.  
  6086.   m_sendTo.Encode(strm);
  6087.   m_when.Encode(strm);
  6088.   m_required.Encode(strm);
  6089.   m_preferred.Encode(strm);
  6090.   KnownExtensionEncode(strm, e_sendToPEAddress, m_sendToPEAddress);
  6091.  
  6092.   UnknownExtensionsEncode(strm);
  6093. }
  6094.  
  6095.  
  6096. PObject * H501_UsageSpecification::Clone() const
  6097. {
  6098. #ifndef PASN_LEANANDMEAN
  6099.   PAssert(IsClass(H501_UsageSpecification::Class()), PInvalidCast);
  6100. #endif
  6101.   return new H501_UsageSpecification(*this);
  6102. }
  6103.  
  6104.  
  6105. //
  6106. // PartyInformation
  6107. //
  6108.  
  6109. H501_PartyInformation::H501_PartyInformation(unsigned tag, PASN_Object::TagClass tagClass)
  6110.   : PASN_Sequence(tag, tagClass, 5, TRUE, 0)
  6111. {
  6112. }
  6113.  
  6114.  
  6115. #ifndef PASN_NOPRINTON
  6116. void H501_PartyInformation::PrintOn(ostream & strm) const
  6117. {
  6118.   int indent = strm.precision() + 2;
  6119.   strm << "{\n";
  6120.   strm << setw(indent+19) << "logicalAddresses = " << setprecision(indent) << m_logicalAddresses << '\n';
  6121.   if (HasOptionalField(e_domainIdentifier))
  6122.     strm << setw(indent+19) << "domainIdentifier = " << setprecision(indent) << m_domainIdentifier << '\n';
  6123.   if (HasOptionalField(e_transportAddress))
  6124.     strm << setw(indent+19) << "transportAddress = " << setprecision(indent) << m_transportAddress << '\n';
  6125.   if (HasOptionalField(e_endpointType))
  6126.     strm << setw(indent+15) << "endpointType = " << setprecision(indent) << m_endpointType << '\n';
  6127.   if (HasOptionalField(e_userInfo))
  6128.     strm << setw(indent+11) << "userInfo = " << setprecision(indent) << m_userInfo << '\n';
  6129.   if (HasOptionalField(e_timeZone))
  6130.     strm << setw(indent+11) << "timeZone = " << setprecision(indent) << m_timeZone << '\n';
  6131.   strm << setw(indent-1) << "}";
  6132. }
  6133. #endif
  6134.  
  6135.  
  6136. PObject::Comparison H501_PartyInformation::Compare(const PObject & obj) const
  6137. {
  6138. #ifndef PASN_LEANANDMEAN
  6139.   PAssert(IsDescendant(H501_PartyInformation::Class()), PInvalidCast);
  6140. #endif
  6141.   const H501_PartyInformation & other = (const H501_PartyInformation &)obj;
  6142.  
  6143.   Comparison result;
  6144.  
  6145.   if ((result = m_logicalAddresses.Compare(other.m_logicalAddresses)) != EqualTo)
  6146.     return result;
  6147.   if ((result = m_domainIdentifier.Compare(other.m_domainIdentifier)) != EqualTo)
  6148.     return result;
  6149.   if ((result = m_transportAddress.Compare(other.m_transportAddress)) != EqualTo)
  6150.     return result;
  6151.   if ((result = m_endpointType.Compare(other.m_endpointType)) != EqualTo)
  6152.     return result;
  6153.   if ((result = m_userInfo.Compare(other.m_userInfo)) != EqualTo)
  6154.     return result;
  6155.   if ((result = m_timeZone.Compare(other.m_timeZone)) != EqualTo)
  6156.     return result;
  6157.  
  6158.   return PASN_Sequence::Compare(other);
  6159. }
  6160.  
  6161.  
  6162. PINDEX H501_PartyInformation::GetDataLength() const
  6163. {
  6164.   PINDEX length = 0;
  6165.   length += m_logicalAddresses.GetObjectLength();
  6166.   if (HasOptionalField(e_domainIdentifier))
  6167.     length += m_domainIdentifier.GetObjectLength();
  6168.   if (HasOptionalField(e_transportAddress))
  6169.     length += m_transportAddress.GetObjectLength();
  6170.   if (HasOptionalField(e_endpointType))
  6171.     length += m_endpointType.GetObjectLength();
  6172.   if (HasOptionalField(e_userInfo))
  6173.     length += m_userInfo.GetObjectLength();
  6174.   if (HasOptionalField(e_timeZone))
  6175.     length += m_timeZone.GetObjectLength();
  6176.   return length;
  6177. }
  6178.  
  6179.  
  6180. BOOL H501_PartyInformation::Decode(PASN_Stream & strm)
  6181. {
  6182.   if (!PreambleDecode(strm))
  6183.     return FALSE;
  6184.  
  6185.   if (!m_logicalAddresses.Decode(strm))
  6186.     return FALSE;
  6187.   if (HasOptionalField(e_domainIdentifier) && !m_domainIdentifier.Decode(strm))
  6188.     return FALSE;
  6189.   if (HasOptionalField(e_transportAddress) && !m_transportAddress.Decode(strm))
  6190.     return FALSE;
  6191.   if (HasOptionalField(e_endpointType) && !m_endpointType.Decode(strm))
  6192.     return FALSE;
  6193.   if (HasOptionalField(e_userInfo) && !m_userInfo.Decode(strm))
  6194.     return FALSE;
  6195.   if (HasOptionalField(e_timeZone) && !m_timeZone.Decode(strm))
  6196.     return FALSE;
  6197.  
  6198.   return UnknownExtensionsDecode(strm);
  6199. }
  6200.  
  6201.  
  6202. void H501_PartyInformation::Encode(PASN_Stream & strm) const
  6203. {
  6204.   PreambleEncode(strm);
  6205.  
  6206.   m_logicalAddresses.Encode(strm);
  6207.   if (HasOptionalField(e_domainIdentifier))
  6208.     m_domainIdentifier.Encode(strm);
  6209.   if (HasOptionalField(e_transportAddress))
  6210.     m_transportAddress.Encode(strm);
  6211.   if (HasOptionalField(e_endpointType))
  6212.     m_endpointType.Encode(strm);
  6213.   if (HasOptionalField(e_userInfo))
  6214.     m_userInfo.Encode(strm);
  6215.   if (HasOptionalField(e_timeZone))
  6216.     m_timeZone.Encode(strm);
  6217.  
  6218.   UnknownExtensionsEncode(strm);
  6219. }
  6220.  
  6221.  
  6222. PObject * H501_PartyInformation::Clone() const
  6223. {
  6224. #ifndef PASN_LEANANDMEAN
  6225.   PAssert(IsClass(H501_PartyInformation::Class()), PInvalidCast);
  6226. #endif
  6227.   return new H501_PartyInformation(*this);
  6228. }
  6229.  
  6230.  
  6231. //
  6232. // Message
  6233. //
  6234.  
  6235. H501_Message::H501_Message(unsigned tag, PASN_Object::TagClass tagClass)
  6236.   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
  6237. {
  6238. }
  6239.  
  6240.  
  6241. #ifndef PASN_NOPRINTON
  6242. void H501_Message::PrintOn(ostream & strm) const
  6243. {
  6244.   int indent = strm.precision() + 2;
  6245.   strm << "{\n";
  6246.   strm << setw(indent+7) << "body = " << setprecision(indent) << m_body << '\n';
  6247.   strm << setw(indent+9) << "common = " << setprecision(indent) << m_common << '\n';
  6248.   strm << setw(indent-1) << "}";
  6249. }
  6250. #endif
  6251.  
  6252.  
  6253. PObject::Comparison H501_Message::Compare(const PObject & obj) const
  6254. {
  6255. #ifndef PASN_LEANANDMEAN
  6256.   PAssert(IsDescendant(H501_Message::Class()), PInvalidCast);
  6257. #endif
  6258.   const H501_Message & other = (const H501_Message &)obj;
  6259.  
  6260.   Comparison result;
  6261.  
  6262.   if ((result = m_body.Compare(other.m_body)) != EqualTo)
  6263.     return result;
  6264.   if ((result = m_common.Compare(other.m_common)) != EqualTo)
  6265.     return result;
  6266.  
  6267.   return PASN_Sequence::Compare(other);
  6268. }
  6269.  
  6270.  
  6271. PINDEX H501_Message::GetDataLength() const
  6272. {
  6273.   PINDEX length = 0;
  6274.   length += m_body.GetObjectLength();
  6275.   length += m_common.GetObjectLength();
  6276.   return length;
  6277. }
  6278.  
  6279.  
  6280. BOOL H501_Message::Decode(PASN_Stream & strm)
  6281. {
  6282.   if (!PreambleDecode(strm))
  6283.     return FALSE;
  6284.  
  6285.   if (!m_body.Decode(strm))
  6286.     return FALSE;
  6287.   if (!m_common.Decode(strm))
  6288.     return FALSE;
  6289.  
  6290.   return UnknownExtensionsDecode(strm);
  6291. }
  6292.  
  6293.  
  6294. void H501_Message::Encode(PASN_Stream & strm) const
  6295. {
  6296.   PreambleEncode(strm);
  6297.  
  6298.   m_body.Encode(strm);
  6299.   m_common.Encode(strm);
  6300.  
  6301.   UnknownExtensionsEncode(strm);
  6302. }
  6303.  
  6304.  
  6305. PObject * H501_Message::Clone() const
  6306. {
  6307. #ifndef PASN_LEANANDMEAN
  6308.   PAssert(IsClass(H501_Message::Class()), PInvalidCast);
  6309. #endif
  6310.   return new H501_Message(*this);
  6311. }
  6312.  
  6313.  
  6314. //
  6315. // ServiceRequest
  6316. //
  6317.  
  6318. H501_ServiceRequest::H501_ServiceRequest(unsigned tag, PASN_Object::TagClass tagClass)
  6319.   : PASN_Sequence(tag, tagClass, 4, TRUE, 1)
  6320. {
  6321.   m_timeToLive.SetConstraints(PASN_Object::FixedConstraint, 1, 4294967295U);
  6322. }
  6323.  
  6324.  
  6325. #ifndef PASN_NOPRINTON
  6326. void H501_ServiceRequest::PrintOn(ostream & strm) const
  6327. {
  6328.   int indent = strm.precision() + 2;
  6329.   strm << "{\n";
  6330.   if (HasOptionalField(e_elementIdentifier))
  6331.     strm << setw(indent+20) << "elementIdentifier = " << setprecision(indent) << m_elementIdentifier << '\n';
  6332.   if (HasOptionalField(e_domainIdentifier))
  6333.     strm << setw(indent+19) << "domainIdentifier = " << setprecision(indent) << m_domainIdentifier << '\n';
  6334.   if (HasOptionalField(e_securityMode))
  6335.     strm << setw(indent+15) << "securityMode = " << setprecision(indent) << m_securityMode << '\n';
  6336.   if (HasOptionalField(e_timeToLive))
  6337.     strm << setw(indent+13) << "timeToLive = " << setprecision(indent) << m_timeToLive << '\n';
  6338.   if (HasOptionalField(e_usageSpec))
  6339.     strm << setw(indent+12) << "usageSpec = " << setprecision(indent) << m_usageSpec << '\n';
  6340.   strm << setw(indent-1) << "}";
  6341. }
  6342. #endif
  6343.  
  6344.  
  6345. PObject::Comparison H501_ServiceRequest::Compare(const PObject & obj) const
  6346. {
  6347. #ifndef PASN_LEANANDMEAN
  6348.   PAssert(IsDescendant(H501_ServiceRequest::Class()), PInvalidCast);
  6349. #endif
  6350.   const H501_ServiceRequest & other = (const H501_ServiceRequest &)obj;
  6351.  
  6352.   Comparison result;
  6353.  
  6354.   if ((result = m_elementIdentifier.Compare(other.m_elementIdentifier)) != EqualTo)
  6355.     return result;
  6356.   if ((result = m_domainIdentifier.Compare(other.m_domainIdentifier)) != EqualTo)
  6357.     return result;
  6358.   if ((result = m_securityMode.Compare(other.m_securityMode)) != EqualTo)
  6359.     return result;
  6360.   if ((result = m_timeToLive.Compare(other.m_timeToLive)) != EqualTo)
  6361.     return result;
  6362.  
  6363.   return PASN_Sequence::Compare(other);
  6364. }
  6365.  
  6366.  
  6367. PINDEX H501_ServiceRequest::GetDataLength() const
  6368. {
  6369.   PINDEX length = 0;
  6370.   if (HasOptionalField(e_elementIdentifier))
  6371.     length += m_elementIdentifier.GetObjectLength();
  6372.   if (HasOptionalField(e_domainIdentifier))
  6373.     length += m_domainIdentifier.GetObjectLength();
  6374.   if (HasOptionalField(e_securityMode))
  6375.     length += m_securityMode.GetObjectLength();
  6376.   if (HasOptionalField(e_timeToLive))
  6377.     length += m_timeToLive.GetObjectLength();
  6378.   return length;
  6379. }
  6380.  
  6381.  
  6382. BOOL H501_ServiceRequest::Decode(PASN_Stream & strm)
  6383. {
  6384.   if (!PreambleDecode(strm))
  6385.     return FALSE;
  6386.  
  6387.   if (HasOptionalField(e_elementIdentifier) && !m_elementIdentifier.Decode(strm))
  6388.     return FALSE;
  6389.   if (HasOptionalField(e_domainIdentifier) && !m_domainIdentifier.Decode(strm))
  6390.     return FALSE;
  6391.   if (HasOptionalField(e_securityMode) && !m_securityMode.Decode(strm))
  6392.     return FALSE;
  6393.   if (HasOptionalField(e_timeToLive) && !m_timeToLive.Decode(strm))
  6394.     return FALSE;
  6395.   if (!KnownExtensionDecode(strm, e_usageSpec, m_usageSpec))
  6396.     return FALSE;
  6397.  
  6398.   return UnknownExtensionsDecode(strm);
  6399. }
  6400.  
  6401.  
  6402. void H501_ServiceRequest::Encode(PASN_Stream & strm) const
  6403. {
  6404.   PreambleEncode(strm);
  6405.  
  6406.   if (HasOptionalField(e_elementIdentifier))
  6407.     m_elementIdentifier.Encode(strm);
  6408.   if (HasOptionalField(e_domainIdentifier))
  6409.     m_domainIdentifier.Encode(strm);
  6410.   if (HasOptionalField(e_securityMode))
  6411.     m_securityMode.Encode(strm);
  6412.   if (HasOptionalField(e_timeToLive))
  6413.     m_timeToLive.Encode(strm);
  6414.   KnownExtensionEncode(strm, e_usageSpec, m_usageSpec);
  6415.  
  6416.   UnknownExtensionsEncode(strm);
  6417. }
  6418.  
  6419.  
  6420. PObject * H501_ServiceRequest::Clone() const
  6421. {
  6422. #ifndef PASN_LEANANDMEAN
  6423.   PAssert(IsClass(H501_ServiceRequest::Class()), PInvalidCast);
  6424. #endif
  6425.   return new H501_ServiceRequest(*this);
  6426. }
  6427.  
  6428.  
  6429. //
  6430. // ServiceConfirmation
  6431. //
  6432.  
  6433. H501_ServiceConfirmation::H501_ServiceConfirmation(unsigned tag, PASN_Object::TagClass tagClass)
  6434.   : PASN_Sequence(tag, tagClass, 3, TRUE, 1)
  6435. {
  6436.   m_timeToLive.SetConstraints(PASN_Object::FixedConstraint, 1, 4294967295U);
  6437. }
  6438.  
  6439.  
  6440. #ifndef PASN_NOPRINTON
  6441. void H501_ServiceConfirmation::PrintOn(ostream & strm) const
  6442. {
  6443.   int indent = strm.precision() + 2;
  6444.   strm << "{\n";
  6445.   strm << setw(indent+20) << "elementIdentifier = " << setprecision(indent) << m_elementIdentifier << '\n';
  6446.   strm << setw(indent+19) << "domainIdentifier = " << setprecision(indent) << m_domainIdentifier << '\n';
  6447.   if (HasOptionalField(e_alternates))
  6448.     strm << setw(indent+13) << "alternates = " << setprecision(indent) << m_alternates << '\n';
  6449.   if (HasOptionalField(e_securityMode))
  6450.     strm << setw(indent+15) << "securityMode = " << setprecision(indent) << m_securityMode << '\n';
  6451.   if (HasOptionalField(e_timeToLive))
  6452.     strm << setw(indent+13) << "timeToLive = " << setprecision(indent) << m_timeToLive << '\n';
  6453.   if (HasOptionalField(e_usageSpec))
  6454.     strm << setw(indent+12) << "usageSpec = " << setprecision(indent) << m_usageSpec << '\n';
  6455.   strm << setw(indent-1) << "}";
  6456. }
  6457. #endif
  6458.  
  6459.  
  6460. PObject::Comparison H501_ServiceConfirmation::Compare(const PObject & obj) const
  6461. {
  6462. #ifndef PASN_LEANANDMEAN
  6463.   PAssert(IsDescendant(H501_ServiceConfirmation::Class()), PInvalidCast);
  6464. #endif
  6465.   const H501_ServiceConfirmation & other = (const H501_ServiceConfirmation &)obj;
  6466.  
  6467.   Comparison result;
  6468.  
  6469.   if ((result = m_elementIdentifier.Compare(other.m_elementIdentifier)) != EqualTo)
  6470.     return result;
  6471.   if ((result = m_domainIdentifier.Compare(other.m_domainIdentifier)) != EqualTo)
  6472.     return result;
  6473.   if ((result = m_alternates.Compare(other.m_alternates)) != EqualTo)
  6474.     return result;
  6475.   if ((result = m_securityMode.Compare(other.m_securityMode)) != EqualTo)
  6476.     return result;
  6477.   if ((result = m_timeToLive.Compare(other.m_timeToLive)) != EqualTo)
  6478.     return result;
  6479.  
  6480.   return PASN_Sequence::Compare(other);
  6481. }
  6482.  
  6483.  
  6484. PINDEX H501_ServiceConfirmation::GetDataLength() const
  6485. {
  6486.   PINDEX length = 0;
  6487.   length += m_elementIdentifier.GetObjectLength();
  6488.   length += m_domainIdentifier.GetObjectLength();
  6489.   if (HasOptionalField(e_alternates))
  6490.     length += m_alternates.GetObjectLength();
  6491.   if (HasOptionalField(e_securityMode))
  6492.     length += m_securityMode.GetObjectLength();
  6493.   if (HasOptionalField(e_timeToLive))
  6494.     length += m_timeToLive.GetObjectLength();
  6495.   return length;
  6496. }
  6497.  
  6498.  
  6499. BOOL H501_ServiceConfirmation::Decode(PASN_Stream & strm)
  6500. {
  6501.   if (!PreambleDecode(strm))
  6502.     return FALSE;
  6503.  
  6504.   if (!m_elementIdentifier.Decode(strm))
  6505.     return FALSE;
  6506.   if (!m_domainIdentifier.Decode(strm))
  6507.     return FALSE;
  6508.   if (HasOptionalField(e_alternates) && !m_alternates.Decode(strm))
  6509.     return FALSE;
  6510.   if (HasOptionalField(e_securityMode) && !m_securityMode.Decode(strm))
  6511.     return FALSE;
  6512.   if (HasOptionalField(e_timeToLive) && !m_timeToLive.Decode(strm))
  6513.     return FALSE;
  6514.   if (!KnownExtensionDecode(strm, e_usageSpec, m_usageSpec))
  6515.     return FALSE;
  6516.  
  6517.   return UnknownExtensionsDecode(strm);
  6518. }
  6519.  
  6520.  
  6521. void H501_ServiceConfirmation::Encode(PASN_Stream & strm) const
  6522. {
  6523.   PreambleEncode(strm);
  6524.  
  6525.   m_elementIdentifier.Encode(strm);
  6526.   m_domainIdentifier.Encode(strm);
  6527.   if (HasOptionalField(e_alternates))
  6528.     m_alternates.Encode(strm);
  6529.   if (HasOptionalField(e_securityMode))
  6530.     m_securityMode.Encode(strm);
  6531.   if (HasOptionalField(e_timeToLive))
  6532.     m_timeToLive.Encode(strm);
  6533.   KnownExtensionEncode(strm, e_usageSpec, m_usageSpec);
  6534.  
  6535.   UnknownExtensionsEncode(strm);
  6536. }
  6537.  
  6538.  
  6539. PObject * H501_ServiceConfirmation::Clone() const
  6540. {
  6541. #ifndef PASN_LEANANDMEAN
  6542.   PAssert(IsClass(H501_ServiceConfirmation::Class()), PInvalidCast);
  6543. #endif
  6544.   return new H501_ServiceConfirmation(*this);
  6545. }
  6546.  
  6547.  
  6548. //
  6549. // ServiceRejection
  6550. //
  6551.  
  6552. H501_ServiceRejection::H501_ServiceRejection(unsigned tag, PASN_Object::TagClass tagClass)
  6553.   : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
  6554. {
  6555. }
  6556.  
  6557.  
  6558. #ifndef PASN_NOPRINTON
  6559. void H501_ServiceRejection::PrintOn(ostream & strm) const
  6560. {
  6561.   int indent = strm.precision() + 2;
  6562.   strm << "{\n";
  6563.   strm << setw(indent+9) << "reason = " << setprecision(indent) << m_reason << '\n';
  6564.   if (HasOptionalField(e_alternates))
  6565.     strm << setw(indent+13) << "alternates = " << setprecision(indent) << m_alternates << '\n';
  6566.   strm << setw(indent-1) << "}";
  6567. }
  6568. #endif
  6569.  
  6570.  
  6571. PObject::Comparison H501_ServiceRejection::Compare(const PObject & obj) const
  6572. {
  6573. #ifndef PASN_LEANANDMEAN
  6574.   PAssert(IsDescendant(H501_ServiceRejection::Class()), PInvalidCast);
  6575. #endif
  6576.   const H501_ServiceRejection & other = (const H501_ServiceRejection &)obj;
  6577.  
  6578.   Comparison result;
  6579.  
  6580.   if ((result = m_reason.Compare(other.m_reason)) != EqualTo)
  6581.     return result;
  6582.   if ((result = m_alternates.Compare(other.m_alternates)) != EqualTo)
  6583.     return result;
  6584.  
  6585.   return PASN_Sequence::Compare(other);
  6586. }
  6587.  
  6588.  
  6589. PINDEX H501_ServiceRejection::GetDataLength() const
  6590. {
  6591.   PINDEX length = 0;
  6592.   length += m_reason.GetObjectLength();
  6593.   if (HasOptionalField(e_alternates))
  6594.     length += m_alternates.GetObjectLength();
  6595.   return length;
  6596. }
  6597.  
  6598.  
  6599. BOOL H501_ServiceRejection::Decode(PASN_Stream & strm)
  6600. {
  6601.   if (!PreambleDecode(strm))
  6602.     return FALSE;
  6603.  
  6604.   if (!m_reason.Decode(strm))
  6605.     return FALSE;
  6606.   if (HasOptionalField(e_alternates) && !m_alternates.Decode(strm))
  6607.     return FALSE;
  6608.  
  6609.   return UnknownExtensionsDecode(strm);
  6610. }
  6611.  
  6612.  
  6613. void H501_ServiceRejection::Encode(PASN_Stream & strm) const
  6614. {
  6615.   PreambleEncode(strm);
  6616.  
  6617.   m_reason.Encode(strm);
  6618.   if (HasOptionalField(e_alternates))
  6619.     m_alternates.Encode(strm);
  6620.  
  6621.   UnknownExtensionsEncode(strm);
  6622. }
  6623.  
  6624.  
  6625. PObject * H501_ServiceRejection::Clone() const
  6626. {
  6627. #ifndef PASN_LEANANDMEAN
  6628.   PAssert(IsClass(H501_ServiceRejection::Class()), PInvalidCast);
  6629. #endif
  6630.   return new H501_ServiceRejection(*this);
  6631. }
  6632.  
  6633.  
  6634. //
  6635. // ServiceRelease
  6636. //
  6637.  
  6638. H501_ServiceRelease::H501_ServiceRelease(unsigned tag, PASN_Object::TagClass tagClass)
  6639.   : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
  6640. {
  6641. }
  6642.  
  6643.  
  6644. #ifndef PASN_NOPRINTON
  6645. void H501_ServiceRelease::PrintOn(ostream & strm) const
  6646. {
  6647.   int indent = strm.precision() + 2;
  6648.   strm << "{\n";
  6649.   strm << setw(indent+9) << "reason = " << setprecision(indent) << m_reason << '\n';
  6650.   if (HasOptionalField(e_alternates))
  6651.     strm << setw(indent+13) << "alternates = " << setprecision(indent) << m_alternates << '\n';
  6652.   strm << setw(indent-1) << "}";
  6653. }
  6654. #endif
  6655.  
  6656.  
  6657. PObject::Comparison H501_ServiceRelease::Compare(const PObject & obj) const
  6658. {
  6659. #ifndef PASN_LEANANDMEAN
  6660.   PAssert(IsDescendant(H501_ServiceRelease::Class()), PInvalidCast);
  6661. #endif
  6662.   const H501_ServiceRelease & other = (const H501_ServiceRelease &)obj;
  6663.  
  6664.   Comparison result;
  6665.  
  6666.   if ((result = m_reason.Compare(other.m_reason)) != EqualTo)
  6667.     return result;
  6668.   if ((result = m_alternates.Compare(other.m_alternates)) != EqualTo)
  6669.     return result;
  6670.  
  6671.   return PASN_Sequence::Compare(other);
  6672. }
  6673.  
  6674.  
  6675. PINDEX H501_ServiceRelease::GetDataLength() const
  6676. {
  6677.   PINDEX length = 0;
  6678.   length += m_reason.GetObjectLength();
  6679.   if (HasOptionalField(e_alternates))
  6680.     length += m_alternates.GetObjectLength();
  6681.   return length;
  6682. }
  6683.  
  6684.  
  6685. BOOL H501_ServiceRelease::Decode(PASN_Stream & strm)
  6686. {
  6687.   if (!PreambleDecode(strm))
  6688.     return FALSE;
  6689.  
  6690.   if (!m_reason.Decode(strm))
  6691.     return FALSE;
  6692.   if (HasOptionalField(e_alternates) && !m_alternates.Decode(strm))
  6693.     return FALSE;
  6694.  
  6695.   return UnknownExtensionsDecode(strm);
  6696. }
  6697.  
  6698.  
  6699. void H501_ServiceRelease::Encode(PASN_Stream & strm) const
  6700. {
  6701.   PreambleEncode(strm);
  6702.  
  6703.   m_reason.Encode(strm);
  6704.   if (HasOptionalField(e_alternates))
  6705.     m_alternates.Encode(strm);
  6706.  
  6707.   UnknownExtensionsEncode(strm);
  6708. }
  6709.  
  6710.  
  6711. PObject * H501_ServiceRelease::Clone() const
  6712. {
  6713. #ifndef PASN_LEANANDMEAN
  6714.   PAssert(IsClass(H501_ServiceRelease::Class()), PInvalidCast);
  6715. #endif
  6716.   return new H501_ServiceRelease(*this);
  6717. }
  6718.  
  6719.  
  6720. //
  6721. // AccessRequest
  6722. //
  6723.  
  6724. H501_AccessRequest::H501_AccessRequest(unsigned tag, PASN_Object::TagClass tagClass)
  6725.   : PASN_Sequence(tag, tagClass, 3, TRUE, 1)
  6726. {
  6727. }
  6728.  
  6729.  
  6730. #ifndef PASN_NOPRINTON
  6731. void H501_AccessRequest::PrintOn(ostream & strm) const
  6732. {
  6733.   int indent = strm.precision() + 2;
  6734.   strm << "{\n";
  6735.   strm << setw(indent+18) << "destinationInfo = " << setprecision(indent) << m_destinationInfo << '\n';
  6736.   if (HasOptionalField(e_sourceInfo))
  6737.     strm << setw(indent+13) << "sourceInfo = " << setprecision(indent) << m_sourceInfo << '\n';
  6738.   if (HasOptionalField(e_callInfo))
  6739.     strm << setw(indent+11) << "callInfo = " << setprecision(indent) << m_callInfo << '\n';
  6740.   if (HasOptionalField(e_usageSpec))
  6741.     strm << setw(indent+12) << "usageSpec = " << setprecision(indent) << m_usageSpec << '\n';
  6742.   if (HasOptionalField(e_desiredProtocols))
  6743.     strm << setw(indent+19) << "desiredProtocols = " << setprecision(indent) << m_desiredProtocols << '\n';
  6744.   strm << setw(indent-1) << "}";
  6745. }
  6746. #endif
  6747.  
  6748.  
  6749. PObject::Comparison H501_AccessRequest::Compare(const PObject & obj) const
  6750. {
  6751. #ifndef PASN_LEANANDMEAN
  6752.   PAssert(IsDescendant(H501_AccessRequest::Class()), PInvalidCast);
  6753. #endif
  6754.   const H501_AccessRequest & other = (const H501_AccessRequest &)obj;
  6755.  
  6756.   Comparison result;
  6757.  
  6758.   if ((result = m_destinationInfo.Compare(other.m_destinationInfo)) != EqualTo)
  6759.     return result;
  6760.   if ((result = m_sourceInfo.Compare(other.m_sourceInfo)) != EqualTo)
  6761.     return result;
  6762.   if ((result = m_callInfo.Compare(other.m_callInfo)) != EqualTo)
  6763.     return result;
  6764.   if ((result = m_usageSpec.Compare(other.m_usageSpec)) != EqualTo)
  6765.     return result;
  6766.  
  6767.   return PASN_Sequence::Compare(other);
  6768. }
  6769.  
  6770.  
  6771. PINDEX H501_AccessRequest::GetDataLength() const
  6772. {
  6773.   PINDEX length = 0;
  6774.   length += m_destinationInfo.GetObjectLength();
  6775.   if (HasOptionalField(e_sourceInfo))
  6776.     length += m_sourceInfo.GetObjectLength();
  6777.   if (HasOptionalField(e_callInfo))
  6778.     length += m_callInfo.GetObjectLength();
  6779.   if (HasOptionalField(e_usageSpec))
  6780.     length += m_usageSpec.GetObjectLength();
  6781.   return length;
  6782. }
  6783.  
  6784.  
  6785. BOOL H501_AccessRequest::Decode(PASN_Stream & strm)
  6786. {
  6787.   if (!PreambleDecode(strm))
  6788.     return FALSE;
  6789.  
  6790.   if (!m_destinationInfo.Decode(strm))
  6791.     return FALSE;
  6792.   if (HasOptionalField(e_sourceInfo) && !m_sourceInfo.Decode(strm))
  6793.     return FALSE;
  6794.   if (HasOptionalField(e_callInfo) && !m_callInfo.Decode(strm))
  6795.     return FALSE;
  6796.   if (HasOptionalField(e_usageSpec) && !m_usageSpec.Decode(strm))
  6797.     return FALSE;
  6798.   if (!KnownExtensionDecode(strm, e_desiredProtocols, m_desiredProtocols))
  6799.     return FALSE;
  6800.  
  6801.   return UnknownExtensionsDecode(strm);
  6802. }
  6803.  
  6804.  
  6805. void H501_AccessRequest::Encode(PASN_Stream & strm) const
  6806. {
  6807.   PreambleEncode(strm);
  6808.  
  6809.   m_destinationInfo.Encode(strm);
  6810.   if (HasOptionalField(e_sourceInfo))
  6811.     m_sourceInfo.Encode(strm);
  6812.   if (HasOptionalField(e_callInfo))
  6813.     m_callInfo.Encode(strm);
  6814.   if (HasOptionalField(e_usageSpec))
  6815.     m_usageSpec.Encode(strm);
  6816.   KnownExtensionEncode(strm, e_desiredProtocols, m_desiredProtocols);
  6817.  
  6818.   UnknownExtensionsEncode(strm);
  6819. }
  6820.  
  6821.  
  6822. PObject * H501_AccessRequest::Clone() const
  6823. {
  6824. #ifndef PASN_LEANANDMEAN
  6825.   PAssert(IsClass(H501_AccessRequest::Class()), PInvalidCast);
  6826. #endif
  6827.   return new H501_AccessRequest(*this);
  6828. }
  6829.  
  6830.  
  6831. //
  6832. // UsageRequest
  6833. //
  6834.  
  6835. H501_UsageRequest::H501_UsageRequest(unsigned tag, PASN_Object::TagClass tagClass)
  6836.   : PASN_Sequence(tag, tagClass, 0, TRUE, 0)
  6837. {
  6838. }
  6839.  
  6840.  
  6841. #ifndef PASN_NOPRINTON
  6842. void H501_UsageRequest::PrintOn(ostream & strm) const
  6843. {
  6844.   int indent = strm.precision() + 2;
  6845.   strm << "{\n";
  6846.   strm << setw(indent+11) << "callInfo = " << setprecision(indent) << m_callInfo << '\n';
  6847.   strm << setw(indent+12) << "usageSpec = " << setprecision(indent) << m_usageSpec << '\n';
  6848.   strm << setw(indent-1) << "}";
  6849. }
  6850. #endif
  6851.  
  6852.  
  6853. PObject::Comparison H501_UsageRequest::Compare(const PObject & obj) const
  6854. {
  6855. #ifndef PASN_LEANANDMEAN
  6856.   PAssert(IsDescendant(H501_UsageRequest::Class()), PInvalidCast);
  6857. #endif
  6858.   const H501_UsageRequest & other = (const H501_UsageRequest &)obj;
  6859.  
  6860.   Comparison result;
  6861.  
  6862.   if ((result = m_callInfo.Compare(other.m_callInfo)) != EqualTo)
  6863.     return result;
  6864.   if ((result = m_usageSpec.Compare(other.m_usageSpec)) != EqualTo)
  6865.     return result;
  6866.  
  6867.   return PASN_Sequence::Compare(other);
  6868. }
  6869.  
  6870.  
  6871. PINDEX H501_UsageRequest::GetDataLength() const
  6872. {
  6873.   PINDEX length = 0;
  6874.   length += m_callInfo.GetObjectLength();
  6875.   length += m_usageSpec.GetObjectLength();
  6876.   return length;
  6877. }
  6878.  
  6879.  
  6880. BOOL H501_UsageRequest::Decode(PASN_Stream & strm)
  6881. {
  6882.   if (!PreambleDecode(strm))
  6883.     return FALSE;
  6884.  
  6885.   if (!m_callInfo.Decode(strm))
  6886.     return FALSE;
  6887.   if (!m_usageSpec.Decode(strm))
  6888.     return FALSE;
  6889.  
  6890.   return UnknownExtensionsDecode(strm);
  6891. }
  6892.  
  6893.  
  6894. void H501_UsageRequest::Encode(PASN_Stream & strm) const
  6895. {
  6896.   PreambleEncode(strm);
  6897.  
  6898.   m_callInfo.Encode(strm);
  6899.   m_usageSpec.Encode(strm);
  6900.  
  6901.   UnknownExtensionsEncode(strm);
  6902. }
  6903.  
  6904.  
  6905. PObject * H501_UsageRequest::Clone() const
  6906. {
  6907. #ifndef PASN_LEANANDMEAN
  6908.   PAssert(IsClass(H501_UsageRequest::Class()), PInvalidCast);
  6909. #endif
  6910.   return new H501_UsageRequest(*this);
  6911. }
  6912.  
  6913.  
  6914. //
  6915. // UsageIndication
  6916. //
  6917.  
  6918. H501_UsageIndication::H501_UsageIndication(unsigned tag, PASN_Object::TagClass tagClass)
  6919.   : PASN_Sequence(tag, tagClass, 5, TRUE, 0)
  6920. {
  6921. }
  6922.  
  6923.  
  6924. #ifndef PASN_NOPRINTON
  6925. void H501_UsageIndication::PrintOn(ostream & strm) const
  6926. {
  6927.   int indent = strm.precision() + 2;
  6928.   strm << "{\n";
  6929.   strm << setw(indent+11) << "callInfo = " << setprecision(indent) << m_callInfo << '\n';
  6930.   if (HasOptionalField(e_accessTokens))
  6931.     strm << setw(indent+15) << "accessTokens = " << setprecision(indent) << m_accessTokens << '\n';
  6932.   strm << setw(indent+13) << "senderRole = " << setprecision(indent) << m_senderRole << '\n';
  6933.   strm << setw(indent+18) << "usageCallStatus = " << setprecision(indent) << m_usageCallStatus << '\n';
  6934.   if (HasOptionalField(e_srcInfo))
  6935.     strm << setw(indent+10) << "srcInfo = " << setprecision(indent) << m_srcInfo << '\n';
  6936.   strm << setw(indent+14) << "destAddress = " << setprecision(indent) << m_destAddress << '\n';
  6937.   if (HasOptionalField(e_startTime))
  6938.     strm << setw(indent+12) << "startTime = " << setprecision(indent) << m_startTime << '\n';
  6939.   if (HasOptionalField(e_endTime))
  6940.     strm << setw(indent+10) << "endTime = " << setprecision(indent) << m_endTime << '\n';
  6941.   if (HasOptionalField(e_terminationCause))
  6942.     strm << setw(indent+19) << "terminationCause = " << setprecision(indent) << m_terminationCause << '\n';
  6943.   strm << setw(indent+14) << "usageFields = " << setprecision(indent) << m_usageFields << '\n';
  6944.   strm << setw(indent-1) << "}";
  6945. }
  6946. #endif
  6947.  
  6948.  
  6949. PObject::Comparison H501_UsageIndication::Compare(const PObject & obj) const
  6950. {
  6951. #ifndef PASN_LEANANDMEAN
  6952.   PAssert(IsDescendant(H501_UsageIndication::Class()), PInvalidCast);
  6953. #endif
  6954.   const H501_UsageIndication & other = (const H501_UsageIndication &)obj;
  6955.  
  6956.   Comparison result;
  6957.  
  6958.   if ((result = m_callInfo.Compare(other.m_callInfo)) != EqualTo)
  6959.     return result;
  6960.   if ((result = m_accessTokens.Compare(other.m_accessTokens)) != EqualTo)
  6961.     return result;
  6962.   if ((result = m_senderRole.Compare(other.m_senderRole)) != EqualTo)
  6963.     return result;
  6964.   if ((result = m_usageCallStatus.Compare(other.m_usageCallStatus)) != EqualTo)
  6965.     return result;
  6966.   if ((result = m_srcInfo.Compare(other.m_srcInfo)) != EqualTo)
  6967.     return result;
  6968.   if ((result = m_destAddress.Compare(other.m_destAddress)) != EqualTo)
  6969.     return result;
  6970.   if ((result = m_startTime.Compare(other.m_startTime)) != EqualTo)
  6971.     return result;
  6972.   if ((result = m_endTime.Compare(other.m_endTime)) != EqualTo)
  6973.     return result;
  6974.   if ((result = m_terminationCause.Compare(other.m_terminationCause)) != EqualTo)
  6975.     return result;
  6976.   if ((result = m_usageFields.Compare(other.m_usageFields)) != EqualTo)
  6977.     return result;
  6978.  
  6979.   return PASN_Sequence::Compare(other);
  6980. }
  6981.  
  6982.  
  6983. PINDEX H501_UsageIndication::GetDataLength() const
  6984. {
  6985.   PINDEX length = 0;
  6986.   length += m_callInfo.GetObjectLength();
  6987.   if (HasOptionalField(e_accessTokens))
  6988.     length += m_accessTokens.GetObjectLength();
  6989.   length += m_senderRole.GetObjectLength();
  6990.   length += m_usageCallStatus.GetObjectLength();
  6991.   if (HasOptionalField(e_srcInfo))
  6992.     length += m_srcInfo.GetObjectLength();
  6993.   length += m_destAddress.GetObjectLength();
  6994.   if (HasOptionalField(e_startTime))
  6995.     length += m_startTime.GetObjectLength();
  6996.   if (HasOptionalField(e_endTime))
  6997.     length += m_endTime.GetObjectLength();
  6998.   if (HasOptionalField(e_terminationCause))
  6999.     length += m_terminationCause.GetObjectLength();
  7000.   length += m_usageFields.GetObjectLength();
  7001.   return length;
  7002. }
  7003.  
  7004.  
  7005. BOOL H501_UsageIndication::Decode(PASN_Stream & strm)
  7006. {
  7007.   if (!PreambleDecode(strm))
  7008.     return FALSE;
  7009.  
  7010.   if (!m_callInfo.Decode(strm))
  7011.     return FALSE;
  7012.   if (HasOptionalField(e_accessTokens) && !m_accessTokens.Decode(strm))
  7013.     return FALSE;
  7014.   if (!m_senderRole.Decode(strm))
  7015.     return FALSE;
  7016.   if (!m_usageCallStatus.Decode(strm))
  7017.     return FALSE;
  7018.   if (HasOptionalField(e_srcInfo) && !m_srcInfo.Decode(strm))
  7019.     return FALSE;
  7020.   if (!m_destAddress.Decode(strm))
  7021.     return FALSE;
  7022.   if (HasOptionalField(e_startTime) && !m_startTime.Decode(strm))
  7023.     return FALSE;
  7024.   if (HasOptionalField(e_endTime) && !m_endTime.Decode(strm))
  7025.     return FALSE;
  7026.   if (HasOptionalField(e_terminationCause) && !m_terminationCause.Decode(strm))
  7027.     return FALSE;
  7028.   if (!m_usageFields.Decode(strm))
  7029.     return FALSE;
  7030.  
  7031.   return UnknownExtensionsDecode(strm);
  7032. }
  7033.  
  7034.  
  7035. void H501_UsageIndication::Encode(PASN_Stream & strm) const
  7036. {
  7037.   PreambleEncode(strm);
  7038.  
  7039.   m_callInfo.Encode(strm);
  7040.   if (HasOptionalField(e_accessTokens))
  7041.     m_accessTokens.Encode(strm);
  7042.   m_senderRole.Encode(strm);
  7043.   m_usageCallStatus.Encode(strm);
  7044.   if (HasOptionalField(e_srcInfo))
  7045.     m_srcInfo.Encode(strm);
  7046.   m_destAddress.Encode(strm);
  7047.   if (HasOptionalField(e_startTime))
  7048.     m_startTime.Encode(strm);
  7049.   if (HasOptionalField(e_endTime))
  7050.     m_endTime.Encode(strm);
  7051.   if (HasOptionalField(e_terminationCause))
  7052.     m_terminationCause.Encode(strm);
  7053.   m_usageFields.Encode(strm);
  7054.  
  7055.   UnknownExtensionsEncode(strm);
  7056. }
  7057.  
  7058.  
  7059. PObject * H501_UsageIndication::Clone() const
  7060. {
  7061. #ifndef PASN_LEANANDMEAN
  7062.   PAssert(IsClass(H501_UsageIndication::Class()), PInvalidCast);
  7063. #endif
  7064.   return new H501_UsageIndication(*this);
  7065. }
  7066.  
  7067.  
  7068. //
  7069. // ValidationRequest
  7070. //
  7071.  
  7072. H501_ValidationRequest::H501_ValidationRequest(unsigned tag, PASN_Object::TagClass tagClass)
  7073.   : PASN_Sequence(tag, tagClass, 4, TRUE, 0)
  7074. {
  7075. }
  7076.  
  7077.  
  7078. #ifndef PASN_NOPRINTON
  7079. void H501_ValidationRequest::PrintOn(ostream & strm) const
  7080. {
  7081.   int indent = strm.precision() + 2;
  7082.   strm << "{\n";
  7083.   if (HasOptionalField(e_accessToken))
  7084.     strm << setw(indent+14) << "accessToken = " << setprecision(indent) << m_accessToken << '\n';
  7085.   if (HasOptionalField(e_destinationInfo))
  7086.     strm << setw(indent+18) << "destinationInfo = " << setprecision(indent) << m_destinationInfo << '\n';
  7087.   if (HasOptionalField(e_sourceInfo))
  7088.     strm << setw(indent+13) << "sourceInfo = " << setprecision(indent) << m_sourceInfo << '\n';
  7089.   strm << setw(indent+11) << "callInfo = " << setprecision(indent) << m_callInfo << '\n';
  7090.   if (HasOptionalField(e_usageSpec))
  7091.     strm << setw(indent+12) << "usageSpec = " << setprecision(indent) << m_usageSpec << '\n';
  7092.   strm << setw(indent-1) << "}";
  7093. }
  7094. #endif
  7095.  
  7096.  
  7097. PObject::Comparison H501_ValidationRequest::Compare(const PObject & obj) const
  7098. {
  7099. #ifndef PASN_LEANANDMEAN
  7100.   PAssert(IsDescendant(H501_ValidationRequest::Class()), PInvalidCast);
  7101. #endif
  7102.   const H501_ValidationRequest & other = (const H501_ValidationRequest &)obj;
  7103.  
  7104.   Comparison result;
  7105.  
  7106.   if ((result = m_accessToken.Compare(other.m_accessToken)) != EqualTo)
  7107.     return result;
  7108.   if ((result = m_destinationInfo.Compare(other.m_destinationInfo)) != EqualTo)
  7109.     return result;
  7110.   if ((result = m_sourceInfo.Compare(other.m_sourceInfo)) != EqualTo)
  7111.     return result;
  7112.   if ((result = m_callInfo.Compare(other.m_callInfo)) != EqualTo)
  7113.     return result;
  7114.   if ((result = m_usageSpec.Compare(other.m_usageSpec)) != EqualTo)
  7115.     return result;
  7116.  
  7117.   return PASN_Sequence::Compare(other);
  7118. }
  7119.  
  7120.  
  7121. PINDEX H501_ValidationRequest::GetDataLength() const
  7122. {
  7123.   PINDEX length = 0;
  7124.   if (HasOptionalField(e_accessToken))
  7125.     length += m_accessToken.GetObjectLength();
  7126.   if (HasOptionalField(e_destinationInfo))
  7127.     length += m_destinationInfo.GetObjectLength();
  7128.   if (HasOptionalField(e_sourceInfo))
  7129.     length += m_sourceInfo.GetObjectLength();
  7130.   length += m_callInfo.GetObjectLength();
  7131.   if (HasOptionalField(e_usageSpec))
  7132.     length += m_usageSpec.GetObjectLength();
  7133.   return length;
  7134. }
  7135.  
  7136.  
  7137. BOOL H501_ValidationRequest::Decode(PASN_Stream & strm)
  7138. {
  7139.   if (!PreambleDecode(strm))
  7140.     return FALSE;
  7141.  
  7142.   if (HasOptionalField(e_accessToken) && !m_accessToken.Decode(strm))
  7143.     return FALSE;
  7144.   if (HasOptionalField(e_destinationInfo) && !m_destinationInfo.Decode(strm))
  7145.     return FALSE;
  7146.   if (HasOptionalField(e_sourceInfo) && !m_sourceInfo.Decode(strm))
  7147.     return FALSE;
  7148.   if (!m_callInfo.Decode(strm))
  7149.     return FALSE;
  7150.   if (HasOptionalField(e_usageSpec) && !m_usageSpec.Decode(strm))
  7151.     return FALSE;
  7152.  
  7153.   return UnknownExtensionsDecode(strm);
  7154. }
  7155.  
  7156.  
  7157. void H501_ValidationRequest::Encode(PASN_Stream & strm) const
  7158. {
  7159.   PreambleEncode(strm);
  7160.  
  7161.   if (HasOptionalField(e_accessToken))
  7162.     m_accessToken.Encode(strm);
  7163.   if (HasOptionalField(e_destinationInfo))
  7164.     m_destinationInfo.Encode(strm);
  7165.   if (HasOptionalField(e_sourceInfo))
  7166.     m_sourceInfo.Encode(strm);
  7167.   m_callInfo.Encode(strm);
  7168.   if (HasOptionalField(e_usageSpec))
  7169.     m_usageSpec.Encode(strm);
  7170.  
  7171.   UnknownExtensionsEncode(strm);
  7172. }
  7173.  
  7174.  
  7175. PObject * H501_ValidationRequest::Clone() const
  7176. {
  7177. #ifndef PASN_LEANANDMEAN
  7178.   PAssert(IsClass(H501_ValidationRequest::Class()), PInvalidCast);
  7179. #endif
  7180.   return new H501_ValidationRequest(*this);
  7181. }
  7182.  
  7183.  
  7184. //
  7185. // ValidationConfirmation
  7186. //
  7187.  
  7188. H501_ValidationConfirmation::H501_ValidationConfirmation(unsigned tag, PASN_Object::TagClass tagClass)
  7189.   : PASN_Sequence(tag, tagClass, 2, TRUE, 0)
  7190. {
  7191. }
  7192.  
  7193.  
  7194. #ifndef PASN_NOPRINTON
  7195. void H501_ValidationConfirmation::PrintOn(ostream & strm) const
  7196. {
  7197.   int indent = strm.precision() + 2;
  7198.   strm << "{\n";
  7199.   if (HasOptionalField(e_destinationInfo))
  7200.     strm << setw(indent+18) << "destinationInfo = " << setprecision(indent) << m_destinationInfo << '\n';
  7201.   if (HasOptionalField(e_usageSpec))
  7202.     strm << setw(indent+12) << "usageSpec = " << setprecision(indent) << m_usageSpec << '\n';
  7203.   strm << setw(indent-1) << "}";
  7204. }
  7205. #endif
  7206.  
  7207.  
  7208. PObject::Comparison H501_ValidationConfirmation::Compare(const PObject & obj) const
  7209. {
  7210. #ifndef PASN_LEANANDMEAN
  7211.   PAssert(IsDescendant(H501_ValidationConfirmation::Class()), PInvalidCast);
  7212. #endif
  7213.   const H501_ValidationConfirmation & other = (const H501_ValidationConfirmation &)obj;
  7214.  
  7215.   Comparison result;
  7216.  
  7217.   if ((result = m_destinationInfo.Compare(other.m_destinationInfo)) != EqualTo)
  7218.     return result;
  7219.   if ((result = m_usageSpec.Compare(other.m_usageSpec)) != EqualTo)
  7220.     return result;
  7221.  
  7222.   return PASN_Sequence::Compare(other);
  7223. }
  7224.  
  7225.  
  7226. PINDEX H501_ValidationConfirmation::GetDataLength() const
  7227. {
  7228.   PINDEX length = 0;
  7229.   if (HasOptionalField(e_destinationInfo))
  7230.     length += m_destinationInfo.GetObjectLength();
  7231.   if (HasOptionalField(e_usageSpec))
  7232.     length += m_usageSpec.GetObjectLength();
  7233.   return length;
  7234. }
  7235.  
  7236.  
  7237. BOOL H501_ValidationConfirmation::Decode(PASN_Stream & strm)
  7238. {
  7239.   if (!PreambleDecode(strm))
  7240.     return FALSE;
  7241.  
  7242.   if (HasOptionalField(e_destinationInfo) && !m_destinationInfo.Decode(strm))
  7243.     return FALSE;
  7244.   if (HasOptionalField(e_usageSpec) && !m_usageSpec.Decode(strm))
  7245.     return FALSE;
  7246.  
  7247.   return UnknownExtensionsDecode(strm);
  7248. }
  7249.  
  7250.  
  7251. void H501_ValidationConfirmation::Encode(PASN_Stream & strm) const
  7252. {
  7253.   PreambleEncode(strm);
  7254.  
  7255.   if (HasOptionalField(e_destinationInfo))
  7256.     m_destinationInfo.Encode(strm);
  7257.   if (HasOptionalField(e_usageSpec))
  7258.     m_usageSpec.Encode(strm);
  7259.  
  7260.   UnknownExtensionsEncode(strm);
  7261. }
  7262.  
  7263.  
  7264. PObject * H501_ValidationConfirmation::Clone() const
  7265. {
  7266. #ifndef PASN_LEANANDMEAN
  7267.   PAssert(IsClass(H501_ValidationConfirmation::Class()), PInvalidCast);
  7268. #endif
  7269.   return new H501_ValidationConfirmation(*this);
  7270. }
  7271.  
  7272.  
  7273. //
  7274. // RouteInformation
  7275. //
  7276.  
  7277. H501_RouteInformation::H501_RouteInformation(unsigned tag, PASN_Object::TagClass tagClass)
  7278.   : PASN_Sequence(tag, tagClass, 3, TRUE, 3)
  7279. {
  7280. }
  7281.  
  7282.  
  7283. #ifndef PASN_NOPRINTON
  7284. void H501_RouteInformation::PrintOn(ostream & strm) const
  7285. {
  7286.   int indent = strm.precision() + 2;
  7287.   strm << "{\n";
  7288.   strm << setw(indent+14) << "messageType = " << setprecision(indent) << m_messageType << '\n';
  7289.   strm << setw(indent+15) << "callSpecific = " << setprecision(indent) << m_callSpecific << '\n';
  7290.   if (HasOptionalField(e_usageSpec))
  7291.     strm << setw(indent+12) << "usageSpec = " << setprecision(indent) << m_usageSpec << '\n';
  7292.   if (HasOptionalField(e_priceInfo))
  7293.     strm << setw(indent+12) << "priceInfo = " << setprecision(indent) << m_priceInfo << '\n';
  7294.   strm << setw(indent+11) << "contacts = " << setprecision(indent) << m_contacts << '\n';
  7295.   if (HasOptionalField(e_type))
  7296.     strm << setw(indent+7) << "type = " << setprecision(indent) << m_type << '\n';
  7297.   if (HasOptionalField(e_featureSet))
  7298.     strm << setw(indent+13) << "featureSet = " << setprecision(indent) << m_featureSet << '\n';
  7299.   if (HasOptionalField(e_circuitID))
  7300.     strm << setw(indent+12) << "circuitID = " << setprecision(indent) << m_circuitID << '\n';
  7301.   if (HasOptionalField(e_supportedCircuits))
  7302.     strm << setw(indent+20) << "supportedCircuits = " << setprecision(indent) << m_supportedCircuits << '\n';
  7303.   strm << setw(indent-1) << "}";
  7304. }
  7305. #endif
  7306.  
  7307.  
  7308. PObject::Comparison H501_RouteInformation::Compare(const PObject & obj) const
  7309. {
  7310. #ifndef PASN_LEANANDMEAN
  7311.   PAssert(IsDescendant(H501_RouteInformation::Class()), PInvalidCast);
  7312. #endif
  7313.   const H501_RouteInformation & other = (const H501_RouteInformation &)obj;
  7314.  
  7315.   Comparison result;
  7316.  
  7317.   if ((result = m_messageType.Compare(other.m_messageType)) != EqualTo)
  7318.     return result;
  7319.   if ((result = m_callSpecific.Compare(other.m_callSpecific)) != EqualTo)
  7320.     return result;
  7321.   if ((result = m_usageSpec.Compare(other.m_usageSpec)) != EqualTo)
  7322.     return result;
  7323.   if ((result = m_priceInfo.Compare(other.m_priceInfo)) != EqualTo)
  7324.     return result;
  7325.   if ((result = m_contacts.Compare(other.m_contacts)) != EqualTo)
  7326.     return result;
  7327.   if ((result = m_type.Compare(other.m_type)) != EqualTo)
  7328.     return result;
  7329.  
  7330.   return PASN_Sequence::Compare(other);
  7331. }
  7332.  
  7333.  
  7334. PINDEX H501_RouteInformation::GetDataLength() const
  7335. {
  7336.   PINDEX length = 0;
  7337.   length += m_messageType.GetObjectLength();
  7338.   length += m_callSpecific.GetObjectLength();
  7339.   if (HasOptionalField(e_usageSpec))
  7340.     length += m_usageSpec.GetObjectLength();
  7341.   if (HasOptionalField(e_priceInfo))
  7342.     length += m_priceInfo.GetObjectLength();
  7343.   length += m_contacts.GetObjectLength();
  7344.   if (HasOptionalField(e_type))
  7345.     length += m_type.GetObjectLength();
  7346.   return length;
  7347. }
  7348.  
  7349.  
  7350. BOOL H501_RouteInformation::Decode(PASN_Stream & strm)
  7351. {
  7352.   if (!PreambleDecode(strm))
  7353.     return FALSE;
  7354.  
  7355.   if (!m_messageType.Decode(strm))
  7356.     return FALSE;
  7357.   if (!m_callSpecific.Decode(strm))
  7358.     return FALSE;
  7359.   if (HasOptionalField(e_usageSpec) && !m_usageSpec.Decode(strm))
  7360.     return FALSE;
  7361.   if (HasOptionalField(e_priceInfo) && !m_priceInfo.Decode(strm))
  7362.     return FALSE;
  7363.   if (!m_contacts.Decode(strm))
  7364.     return FALSE;
  7365.   if (HasOptionalField(e_type) && !m_type.Decode(strm))
  7366.     return FALSE;
  7367.   if (!KnownExtensionDecode(strm, e_featureSet, m_featureSet))
  7368.     return FALSE;
  7369.   if (!KnownExtensionDecode(strm, e_circuitID, m_circuitID))
  7370.     return FALSE;
  7371.   if (!KnownExtensionDecode(strm, e_supportedCircuits, m_supportedCircuits))
  7372.     return FALSE;
  7373.  
  7374.   return UnknownExtensionsDecode(strm);
  7375. }
  7376.  
  7377.  
  7378. void H501_RouteInformation::Encode(PASN_Stream & strm) const
  7379. {
  7380.   PreambleEncode(strm);
  7381.  
  7382.   m_messageType.Encode(strm);
  7383.   m_callSpecific.Encode(strm);
  7384.   if (HasOptionalField(e_usageSpec))
  7385.     m_usageSpec.Encode(strm);
  7386.   if (HasOptionalField(e_priceInfo))
  7387.     m_priceInfo.Encode(strm);
  7388.   m_contacts.Encode(strm);
  7389.   if (HasOptionalField(e_type))
  7390.     m_type.Encode(strm);
  7391.   KnownExtensionEncode(strm, e_featureSet, m_featureSet);
  7392.   KnownExtensionEncode(strm, e_circuitID, m_circuitID);
  7393.   KnownExtensionEncode(strm, e_supportedCircuits, m_supportedCircuits);
  7394.  
  7395.   UnknownExtensionsEncode(strm);
  7396. }
  7397.  
  7398.  
  7399. PObject * H501_RouteInformation::Clone() const
  7400. {
  7401. #ifndef PASN_LEANANDMEAN
  7402.   PAssert(IsClass(H501_RouteInformation::Class()), PInvalidCast);
  7403. #endif
  7404.   return new H501_RouteInformation(*this);
  7405. }
  7406.  
  7407.  
  7408. //
  7409. // Descriptor
  7410. //
  7411.  
  7412. H501_Descriptor::H501_Descriptor(unsigned tag, PASN_Object::TagClass tagClass)
  7413.   : PASN_Sequence(tag, tagClass, 1, TRUE, 0)
  7414. {
  7415. }
  7416.  
  7417.  
  7418. #ifndef PASN_NOPRINTON
  7419. void H501_Descriptor::PrintOn(ostream & strm) const
  7420. {
  7421.   int indent = strm.precision() + 2;
  7422.   strm << "{\n";
  7423.   strm << setw(indent+17) << "descriptorInfo = " << setprecision(indent) << m_descriptorInfo << '\n';
  7424.   strm << setw(indent+12) << "templates = " << setprecision(indent) << m_templates << '\n';
  7425.   if (HasOptionalField(e_gatekeeperID))
  7426.     strm << setw(indent+15) << "gatekeeperID = " << setprecision(indent) << m_gatekeeperID << '\n';
  7427.   strm << setw(indent-1) << "}";
  7428. }
  7429. #endif
  7430.  
  7431.  
  7432. PObject::Comparison H501_Descriptor::Compare(const PObject & obj) const
  7433. {
  7434. #ifndef PASN_LEANANDMEAN
  7435.   PAssert(IsDescendant(H501_Descriptor::Class()), PInvalidCast);
  7436. #endif
  7437.   const H501_Descriptor & other = (const H501_Descriptor &)obj;
  7438.  
  7439.   Comparison result;
  7440.  
  7441.   if ((result = m_descriptorInfo.Compare(other.m_descriptorInfo)) != EqualTo)
  7442.     return result;
  7443.   if ((result = m_templates.Compare(other.m_templates)) != EqualTo)
  7444.     return result;
  7445.   if ((result = m_gatekeeperID.Compare(other.m_gatekeeperID)) != EqualTo)
  7446.     return result;
  7447.  
  7448.   return PASN_Sequence::Compare(other);
  7449. }
  7450.  
  7451.  
  7452. PINDEX H501_Descriptor::GetDataLength() const
  7453. {
  7454.   PINDEX length = 0;
  7455.   length += m_descriptorInfo.GetObjectLength();
  7456.   length += m_templates.GetObjectLength();
  7457.   if (HasOptionalField(e_gatekeeperID))
  7458.     length += m_gatekeeperID.GetObjectLength();
  7459.   return length;
  7460. }
  7461.  
  7462.  
  7463. BOOL H501_Descriptor::Decode(PASN_Stream & strm)
  7464. {
  7465.   if (!PreambleDecode(strm))
  7466.     return FALSE;
  7467.  
  7468.   if (!m_descriptorInfo.Decode(strm))
  7469.     return FALSE;
  7470.   if (!m_templates.Decode(strm))
  7471.     return FALSE;
  7472.   if (HasOptionalField(e_gatekeeperID) && !m_gatekeeperID.Decode(strm))
  7473.     return FALSE;
  7474.  
  7475.   return UnknownExtensionsDecode(strm);
  7476. }
  7477.  
  7478.  
  7479. void H501_Descriptor::Encode(PASN_Stream & strm) const
  7480. {
  7481.   PreambleEncode(strm);
  7482.  
  7483.   m_descriptorInfo.Encode(strm);
  7484.   m_templates.Encode(strm);
  7485.   if (HasOptionalField(e_gatekeeperID))
  7486.     m_gatekeeperID.Encode(strm);
  7487.  
  7488.   UnknownExtensionsEncode(strm);
  7489. }
  7490.  
  7491.  
  7492. PObject * H501_Descriptor::Clone() const
  7493. {
  7494. #ifndef PASN_LEANANDMEAN
  7495.   PAssert(IsClass(H501_Descriptor::Class()), PInvalidCast);
  7496. #endif
  7497.   return new H501_Descriptor(*this);
  7498. }
  7499.  
  7500.  
  7501. #endif // if ! H323_DISABLE_H501
  7502.  
  7503.  
  7504. // End of h501.cxx
  7505.