twebenv.c
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:69k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: twebenv.c,v $
  4.  * PRODUCTION Revision 1000.0  2003/10/29 17:59:36  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.3
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #include <ncbiconf.h>
  10. #if HAVE_NCBI_C
  11. #include <asn.h>
  12. #define NLM_GENERATED_CODE_PROTO
  13. #include "twebenv.h"
  14. static Boolean loaded = FALSE;
  15. #include "twebenvasn.h"
  16. #ifndef NLM_EXTERN_LOADS
  17. #define NLM_EXTERN_LOADS {}
  18. #endif
  19. NLM_EXTERN Boolean LIBCALL
  20. twebenvAsnLoad(void)
  21. {
  22.    if ( ! loaded) {
  23.       NLM_EXTERN_LOADS
  24.       if ( ! AsnLoad ())
  25.       return FALSE;
  26.       loaded = TRUE;
  27.    }
  28.    return TRUE;
  29. }
  30. /**************************************************
  31. *    Generated object loaders for Module NCBI-Env
  32. *    Generated using ASNCODE Revision: 6.0 at Oct 4, 1999  4:26 PM
  33. *
  34. **************************************************/
  35. /**************************************************
  36. *
  37. *    WebEnvNew()
  38. *
  39. **************************************************/
  40. NLM_EXTERN 
  41. WebEnvPtr LIBCALL
  42. WebEnvNew(void)
  43. {
  44.    WebEnvPtr ptr = MemNew((size_t) sizeof(WebEnv));
  45.    return ptr;
  46. }
  47. /**************************************************
  48. *
  49. *    WebEnvFree()
  50. *
  51. **************************************************/
  52. NLM_EXTERN 
  53. WebEnvPtr LIBCALL
  54. WebEnvFree(WebEnvPtr ptr)
  55. {
  56.    if(ptr == NULL) {
  57.       return NULL;
  58.    }
  59.    AsnGenericUserSeqOfFree(ptr -> arguments, (AsnOptFreeFunc) ArgumentFree);
  60.    AsnGenericUserSeqOfFree(ptr -> db_Env, (AsnOptFreeFunc) DbEnvFree);
  61.    AsnGenericUserSeqOfFree(ptr -> queries, (AsnOptFreeFunc) QueryHistoryFree);
  62.    return MemFree(ptr);
  63. }
  64. /**************************************************
  65. *
  66. *    WebEnvAsnRead()
  67. *
  68. **************************************************/
  69. NLM_EXTERN 
  70. WebEnvPtr LIBCALL
  71. WebEnvAsnRead(AsnIoPtr aip, AsnTypePtr orig)
  72. {
  73.    DataVal av;
  74.    AsnTypePtr atp;
  75.    Boolean isError = FALSE;
  76.    AsnReadFunc func;
  77.    WebEnvPtr ptr;
  78.    if (! loaded)
  79.    {
  80.       if (! twebenvAsnLoad()) {
  81.          return NULL;
  82.       }
  83.    }
  84.    if (aip == NULL) {
  85.       return NULL;
  86.    }
  87.    if (orig == NULL) {         /* WebEnv ::= (self contained) */
  88.       atp = AsnReadId(aip, amp, WEB_ENV);
  89.    } else {
  90.       atp = AsnLinkType(orig, WEB_ENV);
  91.    }
  92.    /* link in local tree */
  93.    if (atp == NULL) {
  94.       return NULL;
  95.    }
  96.    ptr = WebEnvNew();
  97.    if (ptr == NULL) {
  98.       goto erret;
  99.    }
  100.    if (AsnReadVal(aip, atp, &av) <= 0) { /* read the start struct */
  101.       goto erret;
  102.    }
  103.    atp = AsnReadId(aip,amp, atp);
  104.    func = NULL;
  105.    if (atp == WEB_ENV_arguments) {
  106.       ptr -> arguments = AsnGenericUserSeqOfAsnRead(aip, amp, atp, &isError, (AsnReadFunc) ArgumentAsnRead, (AsnOptFreeFunc) ArgumentFree);
  107.       if (isError && ptr -> arguments == NULL) {
  108.          goto erret;
  109.       }
  110.       atp = AsnReadId(aip,amp, atp);
  111.    }
  112.    if (atp == WEB_ENV_db_Env) {
  113.       ptr -> db_Env = AsnGenericUserSeqOfAsnRead(aip, amp, atp, &isError, (AsnReadFunc) DbEnvAsnRead, (AsnOptFreeFunc) DbEnvFree);
  114.       if (isError && ptr -> db_Env == NULL) {
  115.          goto erret;
  116.       }
  117.       atp = AsnReadId(aip,amp, atp);
  118.    }
  119.    if (atp == WEB_ENV_queries) {
  120.       ptr -> queries = AsnGenericUserSeqOfAsnRead(aip, amp, atp, &isError, (AsnReadFunc) QueryHistoryAsnRead, (AsnOptFreeFunc) QueryHistoryFree);
  121.       if (isError && ptr -> queries == NULL) {
  122.          goto erret;
  123.       }
  124.       atp = AsnReadId(aip,amp, atp);
  125.    }
  126.    if (AsnReadVal(aip, atp, &av) <= 0) {
  127.       goto erret;
  128.    }
  129.    /* end struct */
  130. ret:
  131.    AsnUnlinkType(orig);       /* unlink local tree */
  132.    return ptr;
  133. erret:
  134.    aip -> io_failure = TRUE;
  135.    ptr = WebEnvFree(ptr);
  136.    goto ret;
  137. }
  138. /**************************************************
  139. *
  140. *    WebEnvAsnWrite()
  141. *
  142. **************************************************/
  143. NLM_EXTERN Boolean LIBCALL 
  144. WebEnvAsnWrite(WebEnvPtr ptr, AsnIoPtr aip, AsnTypePtr orig)
  145. {
  146.    DataVal av;
  147.    AsnTypePtr atp;
  148.    Boolean retval = FALSE;
  149.    if (! loaded)
  150.    {
  151.       if (! twebenvAsnLoad()) {
  152.          return FALSE;
  153.       }
  154.    }
  155.    if (aip == NULL) {
  156.       return FALSE;
  157.    }
  158.    atp = AsnLinkType(orig, WEB_ENV);   /* link local tree */
  159.    if (atp == NULL) {
  160.       return FALSE;
  161.    }
  162.    if (ptr == NULL) { AsnNullValueMsg(aip, atp); goto erret; }
  163.    if (! AsnOpenStruct(aip, atp, (Pointer) ptr)) {
  164.       goto erret;
  165.    }
  166.    AsnGenericUserSeqOfAsnWrite(ptr -> arguments, (AsnWriteFunc) ArgumentAsnWrite, aip, WEB_ENV_arguments, WEB_ENV_arguments_E);
  167.    AsnGenericUserSeqOfAsnWrite(ptr -> db_Env, (AsnWriteFunc) DbEnvAsnWrite, aip, WEB_ENV_db_Env, WEB_ENV_db_Env_E);
  168.    AsnGenericUserSeqOfAsnWrite(ptr -> queries, (AsnWriteFunc) QueryHistoryAsnWrite, aip, WEB_ENV_queries, WEB_ENV_queries_E);
  169.    if (! AsnCloseStruct(aip, atp, (Pointer)ptr)) {
  170.       goto erret;
  171.    }
  172.    retval = TRUE;
  173. erret:
  174.    AsnUnlinkType(orig);       /* unlink local tree */
  175.    return retval;
  176. }
  177. /**************************************************
  178. *
  179. *    ArgumentNew()
  180. *
  181. **************************************************/
  182. NLM_EXTERN 
  183. ArgumentPtr LIBCALL
  184. ArgumentNew(void)
  185. {
  186.    ArgumentPtr ptr = MemNew((size_t) sizeof(Argument));
  187.    return ptr;
  188. }
  189. /**************************************************
  190. *
  191. *    ArgumentFree()
  192. *
  193. **************************************************/
  194. NLM_EXTERN 
  195. ArgumentPtr LIBCALL
  196. ArgumentFree(ArgumentPtr ptr)
  197. {
  198.    if(ptr == NULL) {
  199.       return NULL;
  200.    }
  201.    MemFree(ptr -> name);
  202.    MemFree(ptr -> value);
  203.    return MemFree(ptr);
  204. }
  205. /**************************************************
  206. *
  207. *    ArgumentAsnRead()
  208. *
  209. **************************************************/
  210. NLM_EXTERN 
  211. ArgumentPtr LIBCALL
  212. ArgumentAsnRead(AsnIoPtr aip, AsnTypePtr orig)
  213. {
  214.    DataVal av;
  215.    AsnTypePtr atp;
  216.    Boolean isError = FALSE;
  217.    AsnReadFunc func;
  218.    ArgumentPtr ptr;
  219.    if (! loaded)
  220.    {
  221.       if (! twebenvAsnLoad()) {
  222.          return NULL;
  223.       }
  224.    }
  225.    if (aip == NULL) {
  226.       return NULL;
  227.    }
  228.    if (orig == NULL) {         /* Argument ::= (self contained) */
  229.       atp = AsnReadId(aip, amp, ARGUMENT);
  230.    } else {
  231.       atp = AsnLinkType(orig, ARGUMENT);
  232.    }
  233.    /* link in local tree */
  234.    if (atp == NULL) {
  235.       return NULL;
  236.    }
  237.    ptr = ArgumentNew();
  238.    if (ptr == NULL) {
  239.       goto erret;
  240.    }
  241.    if (AsnReadVal(aip, atp, &av) <= 0) { /* read the start struct */
  242.       goto erret;
  243.    }
  244.    atp = AsnReadId(aip,amp, atp);
  245.    func = NULL;
  246.    if (atp == ARGUMENT_name) {
  247.       if ( AsnReadVal(aip, atp, &av) <= 0) {
  248.          goto erret;
  249.       }
  250.       ptr -> name = av.ptrvalue;
  251.       atp = AsnReadId(aip,amp, atp);
  252.    }
  253.    if (atp == ARGUMENT_value) {
  254.       if ( AsnReadVal(aip, atp, &av) <= 0) {
  255.          goto erret;
  256.       }
  257.       ptr -> value = av.ptrvalue;
  258.       atp = AsnReadId(aip,amp, atp);
  259.    }
  260.    if (AsnReadVal(aip, atp, &av) <= 0) {
  261.       goto erret;
  262.    }
  263.    /* end struct */
  264. ret:
  265.    AsnUnlinkType(orig);       /* unlink local tree */
  266.    return ptr;
  267. erret:
  268.    aip -> io_failure = TRUE;
  269.    ptr = ArgumentFree(ptr);
  270.    goto ret;
  271. }
  272. /**************************************************
  273. *
  274. *    ArgumentAsnWrite()
  275. *
  276. **************************************************/
  277. NLM_EXTERN Boolean LIBCALL 
  278. ArgumentAsnWrite(ArgumentPtr ptr, AsnIoPtr aip, AsnTypePtr orig)
  279. {
  280.    DataVal av;
  281.    AsnTypePtr atp;
  282.    Boolean retval = FALSE;
  283.    if (! loaded)
  284.    {
  285.       if (! twebenvAsnLoad()) {
  286.          return FALSE;
  287.       }
  288.    }
  289.    if (aip == NULL) {
  290.       return FALSE;
  291.    }
  292.    atp = AsnLinkType(orig, ARGUMENT);   /* link local tree */
  293.    if (atp == NULL) {
  294.       return FALSE;
  295.    }
  296.    if (ptr == NULL) { AsnNullValueMsg(aip, atp); goto erret; }
  297.    if (! AsnOpenStruct(aip, atp, (Pointer) ptr)) {
  298.       goto erret;
  299.    }
  300.    if (ptr -> name != NULL) {
  301.       av.ptrvalue = ptr -> name;
  302.       retval = AsnWrite(aip, ARGUMENT_name,  &av);
  303.    }
  304.    if (ptr -> value != NULL) {
  305.       av.ptrvalue = ptr -> value;
  306.       retval = AsnWrite(aip, ARGUMENT_value,  &av);
  307.    }
  308.    if (! AsnCloseStruct(aip, atp, (Pointer)ptr)) {
  309.       goto erret;
  310.    }
  311.    retval = TRUE;
  312. erret:
  313.    AsnUnlinkType(orig);       /* unlink local tree */
  314.    return retval;
  315. }
  316. /**************************************************
  317. *
  318. *    DbEnvNew()
  319. *
  320. **************************************************/
  321. NLM_EXTERN 
  322. DbEnvPtr LIBCALL
  323. DbEnvNew(void)
  324. {
  325.    DbEnvPtr ptr = MemNew((size_t) sizeof(DbEnv));
  326.    return ptr;
  327. }
  328. /**************************************************
  329. *
  330. *    DbEnvFree()
  331. *
  332. **************************************************/
  333. NLM_EXTERN 
  334. DbEnvPtr LIBCALL
  335. DbEnvFree(DbEnvPtr ptr)
  336. {
  337.    if(ptr == NULL) {
  338.       return NULL;
  339.    }
  340.    MemFree(ptr -> name);
  341.    AsnGenericUserSeqOfFree(ptr -> arguments, (AsnOptFreeFunc) ArgumentFree);
  342.    AsnGenericUserSeqOfFree(ptr -> filters, (AsnOptFreeFunc) FilterValueFree);
  343.    AsnGenericUserSeqOfFree(ptr -> clipboard, (AsnOptFreeFunc) DbClipboardFree);
  344.    return MemFree(ptr);
  345. }
  346. /**************************************************
  347. *
  348. *    DbEnvAsnRead()
  349. *
  350. **************************************************/
  351. NLM_EXTERN 
  352. DbEnvPtr LIBCALL
  353. DbEnvAsnRead(AsnIoPtr aip, AsnTypePtr orig)
  354. {
  355.    DataVal av;
  356.    AsnTypePtr atp;
  357.    Boolean isError = FALSE;
  358.    AsnReadFunc func;
  359.    DbEnvPtr ptr;
  360.    if (! loaded)
  361.    {
  362.       if (! twebenvAsnLoad()) {
  363.          return NULL;
  364.       }
  365.    }
  366.    if (aip == NULL) {
  367.       return NULL;
  368.    }
  369.    if (orig == NULL) {         /* DbEnv ::= (self contained) */
  370.       atp = AsnReadId(aip, amp, DB_ENV);
  371.    } else {
  372.       atp = AsnLinkType(orig, DB_ENV);
  373.    }
  374.    /* link in local tree */
  375.    if (atp == NULL) {
  376.       return NULL;
  377.    }
  378.    ptr = DbEnvNew();
  379.    if (ptr == NULL) {
  380.       goto erret;
  381.    }
  382.    if (AsnReadVal(aip, atp, &av) <= 0) { /* read the start struct */
  383.       goto erret;
  384.    }
  385.    atp = AsnReadId(aip,amp, atp);
  386.    func = NULL;
  387.    if (atp == DB_ENV_name) {
  388.       if ( AsnReadVal(aip, atp, &av) <= 0) {
  389.          goto erret;
  390.       }
  391.       ptr -> name = av.ptrvalue;
  392.       atp = AsnReadId(aip,amp, atp);
  393.    }
  394.    if (atp == DB_ENV_arguments) {
  395.       ptr -> arguments = AsnGenericUserSeqOfAsnRead(aip, amp, atp, &isError, (AsnReadFunc) ArgumentAsnRead, (AsnOptFreeFunc) ArgumentFree);
  396.       if (isError && ptr -> arguments == NULL) {
  397.          goto erret;
  398.       }
  399.       atp = AsnReadId(aip,amp, atp);
  400.    }
  401.    if (atp == DB_ENV_filters) {
  402.       ptr -> filters = AsnGenericUserSeqOfAsnRead(aip, amp, atp, &isError, (AsnReadFunc) FilterValueAsnRead, (AsnOptFreeFunc) FilterValueFree);
  403.       if (isError && ptr -> filters == NULL) {
  404.          goto erret;
  405.       }
  406.       atp = AsnReadId(aip,amp, atp);
  407.    }
  408.    if (atp == DB_ENV_clipboard) {
  409.       ptr -> clipboard = AsnGenericUserSeqOfAsnRead(aip, amp, atp, &isError, (AsnReadFunc) DbClipboardAsnRead, (AsnOptFreeFunc) DbClipboardFree);
  410.       if (isError && ptr -> clipboard == NULL) {
  411.          goto erret;
  412.       }
  413.       atp = AsnReadId(aip,amp, atp);
  414.    }
  415.    if (AsnReadVal(aip, atp, &av) <= 0) {
  416.       goto erret;
  417.    }
  418.    /* end struct */
  419. ret:
  420.    AsnUnlinkType(orig);       /* unlink local tree */
  421.    return ptr;
  422. erret:
  423.    aip -> io_failure = TRUE;
  424.    ptr = DbEnvFree(ptr);
  425.    goto ret;
  426. }
  427. /**************************************************
  428. *
  429. *    DbEnvAsnWrite()
  430. *
  431. **************************************************/
  432. NLM_EXTERN Boolean LIBCALL 
  433. DbEnvAsnWrite(DbEnvPtr ptr, AsnIoPtr aip, AsnTypePtr orig)
  434. {
  435.    DataVal av;
  436.    AsnTypePtr atp;
  437.    Boolean retval = FALSE;
  438.    if (! loaded)
  439.    {
  440.       if (! twebenvAsnLoad()) {
  441.          return FALSE;
  442.       }
  443.    }
  444.    if (aip == NULL) {
  445.       return FALSE;
  446.    }
  447.    atp = AsnLinkType(orig, DB_ENV);   /* link local tree */
  448.    if (atp == NULL) {
  449.       return FALSE;
  450.    }
  451.    if (ptr == NULL) { AsnNullValueMsg(aip, atp); goto erret; }
  452.    if (! AsnOpenStruct(aip, atp, (Pointer) ptr)) {
  453.       goto erret;
  454.    }
  455.    if (ptr -> name != NULL) {
  456.       av.ptrvalue = ptr -> name;
  457.       retval = AsnWrite(aip, DB_ENV_name,  &av);
  458.    }
  459.    AsnGenericUserSeqOfAsnWrite(ptr -> arguments, (AsnWriteFunc) ArgumentAsnWrite, aip, DB_ENV_arguments, DB_ENV_arguments_E);
  460.    AsnGenericUserSeqOfAsnWrite(ptr -> filters, (AsnWriteFunc) FilterValueAsnWrite, aip, DB_ENV_filters, DB_ENV_filters_E);
  461.    AsnGenericUserSeqOfAsnWrite(ptr -> clipboard, (AsnWriteFunc) DbClipboardAsnWrite, aip, DB_ENV_clipboard, DB_ENV_clipboard_E);
  462.    if (! AsnCloseStruct(aip, atp, (Pointer)ptr)) {
  463.       goto erret;
  464.    }
  465.    retval = TRUE;
  466. erret:
  467.    AsnUnlinkType(orig);       /* unlink local tree */
  468.    return retval;
  469. }
  470. /**************************************************
  471. *
  472. *    QueryHistoryNew()
  473. *
  474. **************************************************/
  475. NLM_EXTERN 
  476. QueryHistoryPtr LIBCALL
  477. QueryHistoryNew(void)
  478. {
  479.    QueryHistoryPtr ptr = MemNew((size_t) sizeof(QueryHistory));
  480.    return ptr;
  481. }
  482. /**************************************************
  483. *
  484. *    QueryHistoryFree()
  485. *
  486. **************************************************/
  487. NLM_EXTERN 
  488. QueryHistoryPtr LIBCALL
  489. QueryHistoryFree(QueryHistoryPtr ptr)
  490. {
  491.    if(ptr == NULL) {
  492.       return NULL;
  493.    }
  494.    MemFree(ptr -> name);
  495.    TimeFree(ptr -> time);
  496.    QueryCommandFree(ptr -> command);
  497.    return MemFree(ptr);
  498. }
  499. /**************************************************
  500. *
  501. *    QueryHistoryAsnRead()
  502. *
  503. **************************************************/
  504. NLM_EXTERN 
  505. QueryHistoryPtr LIBCALL
  506. QueryHistoryAsnRead(AsnIoPtr aip, AsnTypePtr orig)
  507. {
  508.    DataVal av;
  509.    AsnTypePtr atp;
  510.    Boolean isError = FALSE;
  511.    AsnReadFunc func;
  512.    QueryHistoryPtr ptr;
  513.    if (! loaded)
  514.    {
  515.       if (! twebenvAsnLoad()) {
  516.          return NULL;
  517.       }
  518.    }
  519.    if (aip == NULL) {
  520.       return NULL;
  521.    }
  522.    if (orig == NULL) {         /* QueryHistory ::= (self contained) */
  523.       atp = AsnReadId(aip, amp, QUERY_HISTORY);
  524.    } else {
  525.       atp = AsnLinkType(orig, QUERY_HISTORY);
  526.    }
  527.    /* link in local tree */
  528.    if (atp == NULL) {
  529.       return NULL;
  530.    }
  531.    ptr = QueryHistoryNew();
  532.    if (ptr == NULL) {
  533.       goto erret;
  534.    }
  535.    if (AsnReadVal(aip, atp, &av) <= 0) { /* read the start struct */
  536.       goto erret;
  537.    }
  538.    atp = AsnReadId(aip,amp, atp);
  539.    func = NULL;
  540.    if (atp == QUERY_HISTORY_name) {
  541.       if ( AsnReadVal(aip, atp, &av) <= 0) {
  542.          goto erret;
  543.       }
  544.       ptr -> name = av.ptrvalue;
  545.       atp = AsnReadId(aip,amp, atp);
  546.    }
  547.    if (atp == QUERY_HISTORY_seqNumber) {
  548.       if ( AsnReadVal(aip, atp, &av) <= 0) {
  549.          goto erret;
  550.       }
  551.       ptr -> seqNumber = av.intvalue;
  552.       atp = AsnReadId(aip,amp, atp);
  553.    }
  554.    if (atp == QUERY_HISTORY_time) {
  555.       ptr -> time = TimeAsnRead(aip, atp);
  556.       if (aip -> io_failure) {
  557.          goto erret;
  558.       }
  559.       atp = AsnReadId(aip,amp, atp);
  560.    }
  561.    if (atp == QUERY_HISTORY_command) {
  562.       ptr -> command = QueryCommandAsnRead(aip, atp);
  563.       if (aip -> io_failure) {
  564.          goto erret;
  565.       }
  566.       atp = AsnReadId(aip,amp, atp);
  567.    }
  568.    if (AsnReadVal(aip, atp, &av) <= 0) {
  569.       goto erret;
  570.    }
  571.    /* end struct */
  572. ret:
  573.    AsnUnlinkType(orig);       /* unlink local tree */
  574.    return ptr;
  575. erret:
  576.    aip -> io_failure = TRUE;
  577.    ptr = QueryHistoryFree(ptr);
  578.    goto ret;
  579. }
  580. /**************************************************
  581. *
  582. *    QueryHistoryAsnWrite()
  583. *
  584. **************************************************/
  585. NLM_EXTERN Boolean LIBCALL 
  586. QueryHistoryAsnWrite(QueryHistoryPtr ptr, AsnIoPtr aip, AsnTypePtr orig)
  587. {
  588.    DataVal av;
  589.    AsnTypePtr atp;
  590.    Boolean retval = FALSE;
  591.    if (! loaded)
  592.    {
  593.       if (! twebenvAsnLoad()) {
  594.          return FALSE;
  595.       }
  596.    }
  597.    if (aip == NULL) {
  598.       return FALSE;
  599.    }
  600.    atp = AsnLinkType(orig, QUERY_HISTORY);   /* link local tree */
  601.    if (atp == NULL) {
  602.       return FALSE;
  603.    }
  604.    if (ptr == NULL) { AsnNullValueMsg(aip, atp); goto erret; }
  605.    if (! AsnOpenStruct(aip, atp, (Pointer) ptr)) {
  606.       goto erret;
  607.    }
  608.    if (ptr -> name != NULL) {
  609.       av.ptrvalue = ptr -> name;
  610.       retval = AsnWrite(aip, QUERY_HISTORY_name,  &av);
  611.    }
  612.    av.intvalue = ptr -> seqNumber;
  613.    retval = AsnWrite(aip, QUERY_HISTORY_seqNumber,  &av);
  614.    if (ptr -> time != NULL) {
  615.       if ( ! TimeAsnWrite(ptr -> time, aip, QUERY_HISTORY_time)) {
  616.          goto erret;
  617.       }
  618.    }
  619.    if (ptr -> command != NULL) {
  620.       if ( ! QueryCommandAsnWrite(ptr -> command, aip, QUERY_HISTORY_command)) {
  621.          goto erret;
  622.       }
  623.    }
  624.    if (! AsnCloseStruct(aip, atp, (Pointer)ptr)) {
  625.       goto erret;
  626.    }
  627.    retval = TRUE;
  628. erret:
  629.    AsnUnlinkType(orig);       /* unlink local tree */
  630.    return retval;
  631. }
  632. /**************************************************
  633. *
  634. *    WebSettingsNew()
  635. *
  636. **************************************************/
  637. NLM_EXTERN 
  638. WebSettingsPtr LIBCALL
  639. WebSettingsNew(void)
  640. {
  641.    WebSettingsPtr ptr = MemNew((size_t) sizeof(WebSettings));
  642.    return ptr;
  643. }
  644. /**************************************************
  645. *
  646. *    WebSettingsFree()
  647. *
  648. **************************************************/
  649. NLM_EXTERN 
  650. WebSettingsPtr LIBCALL
  651. WebSettingsFree(WebSettingsPtr ptr)
  652. {
  653.    if(ptr == NULL) {
  654.       return NULL;
  655.    }
  656.    AsnGenericUserSeqOfFree(ptr -> arguments, (AsnOptFreeFunc) ArgumentFree);
  657.    AsnGenericUserSeqOfFree(ptr -> db_Env, (AsnOptFreeFunc) DbEnvFree);
  658.    return MemFree(ptr);
  659. }
  660. /**************************************************
  661. *
  662. *    WebSettingsAsnRead()
  663. *
  664. **************************************************/
  665. NLM_EXTERN 
  666. WebSettingsPtr LIBCALL
  667. WebSettingsAsnRead(AsnIoPtr aip, AsnTypePtr orig)
  668. {
  669.    DataVal av;
  670.    AsnTypePtr atp;
  671.    Boolean isError = FALSE;
  672.    AsnReadFunc func;
  673.    WebSettingsPtr ptr;
  674.    if (! loaded)
  675.    {
  676.       if (! twebenvAsnLoad()) {
  677.          return NULL;
  678.       }
  679.    }
  680.    if (aip == NULL) {
  681.       return NULL;
  682.    }
  683.    if (orig == NULL) {         /* WebSettings ::= (self contained) */
  684.       atp = AsnReadId(aip, amp, WEB_SETTINGS);
  685.    } else {
  686.       atp = AsnLinkType(orig, WEB_SETTINGS);
  687.    }
  688.    /* link in local tree */
  689.    if (atp == NULL) {
  690.       return NULL;
  691.    }
  692.    ptr = WebSettingsNew();
  693.    if (ptr == NULL) {
  694.       goto erret;
  695.    }
  696.    if (AsnReadVal(aip, atp, &av) <= 0) { /* read the start struct */
  697.       goto erret;
  698.    }
  699.    atp = AsnReadId(aip,amp, atp);
  700.    func = NULL;
  701.    if (atp == WEB_SETTINGS_arguments) {
  702.       ptr -> arguments = AsnGenericUserSeqOfAsnRead(aip, amp, atp, &isError, (AsnReadFunc) ArgumentAsnRead, (AsnOptFreeFunc) ArgumentFree);
  703.       if (isError && ptr -> arguments == NULL) {
  704.          goto erret;
  705.       }
  706.       atp = AsnReadId(aip,amp, atp);
  707.    }
  708.    if (atp == WEB_SETTINGS_db_Env) {
  709.       ptr -> db_Env = AsnGenericUserSeqOfAsnRead(aip, amp, atp, &isError, (AsnReadFunc) DbEnvAsnRead, (AsnOptFreeFunc) DbEnvFree);
  710.       if (isError && ptr -> db_Env == NULL) {
  711.          goto erret;
  712.       }
  713.       atp = AsnReadId(aip,amp, atp);
  714.    }
  715.    if (AsnReadVal(aip, atp, &av) <= 0) {
  716.       goto erret;
  717.    }
  718.    /* end struct */
  719. ret:
  720.    AsnUnlinkType(orig);       /* unlink local tree */
  721.    return ptr;
  722. erret:
  723.    aip -> io_failure = TRUE;
  724.    ptr = WebSettingsFree(ptr);
  725.    goto ret;
  726. }
  727. /**************************************************
  728. *
  729. *    WebSettingsAsnWrite()
  730. *
  731. **************************************************/
  732. NLM_EXTERN Boolean LIBCALL 
  733. WebSettingsAsnWrite(WebSettingsPtr ptr, AsnIoPtr aip, AsnTypePtr orig)
  734. {
  735.    DataVal av;
  736.    AsnTypePtr atp;
  737.    Boolean retval = FALSE;
  738.    if (! loaded)
  739.    {
  740.       if (! twebenvAsnLoad()) {
  741.          return FALSE;
  742.       }
  743.    }
  744.    if (aip == NULL) {
  745.       return FALSE;
  746.    }
  747.    atp = AsnLinkType(orig, WEB_SETTINGS);   /* link local tree */
  748.    if (atp == NULL) {
  749.       return FALSE;
  750.    }
  751.    if (ptr == NULL) { AsnNullValueMsg(aip, atp); goto erret; }
  752.    if (! AsnOpenStruct(aip, atp, (Pointer) ptr)) {
  753.       goto erret;
  754.    }
  755.    AsnGenericUserSeqOfAsnWrite(ptr -> arguments, (AsnWriteFunc) ArgumentAsnWrite, aip, WEB_SETTINGS_arguments, WEB_SETTINGS_arguments_E);
  756.    AsnGenericUserSeqOfAsnWrite(ptr -> db_Env, (AsnWriteFunc) DbEnvAsnWrite, aip, WEB_SETTINGS_db_Env, WEB_SETTINGS_db_Env_E);
  757.    if (! AsnCloseStruct(aip, atp, (Pointer)ptr)) {
  758.       goto erret;
  759.    }
  760.    retval = TRUE;
  761. erret:
  762.    AsnUnlinkType(orig);       /* unlink local tree */
  763.    return retval;
  764. }
  765. /**************************************************
  766. *
  767. *    WebSavedNew()
  768. *
  769. **************************************************/
  770. NLM_EXTERN 
  771. WebSavedPtr LIBCALL
  772. WebSavedNew(void)
  773. {
  774.    WebSavedPtr ptr = MemNew((size_t) sizeof(WebSaved));
  775.    return ptr;
  776. }
  777. /**************************************************
  778. *
  779. *    WebSavedFree()
  780. *
  781. **************************************************/
  782. NLM_EXTERN 
  783. WebSavedPtr LIBCALL
  784. WebSavedFree(WebSavedPtr ptr)
  785. {
  786.    if(ptr == NULL) {
  787.       return NULL;
  788.    }
  789.    AsnGenericUserSeqOfFree(ptr -> queries, (AsnOptFreeFunc) NamedQueryFree);
  790.    AsnGenericUserSeqOfFree(ptr -> item_Sets, (AsnOptFreeFunc) NamedItemSetFree);
  791.    return MemFree(ptr);
  792. }
  793. /**************************************************
  794. *
  795. *    WebSavedAsnRead()
  796. *
  797. **************************************************/
  798. NLM_EXTERN 
  799. WebSavedPtr LIBCALL
  800. WebSavedAsnRead(AsnIoPtr aip, AsnTypePtr orig)
  801. {
  802.    DataVal av;
  803.    AsnTypePtr atp;
  804.    Boolean isError = FALSE;
  805.    AsnReadFunc func;
  806.    WebSavedPtr ptr;
  807.    if (! loaded)
  808.    {
  809.       if (! twebenvAsnLoad()) {
  810.          return NULL;
  811.       }
  812.    }
  813.    if (aip == NULL) {
  814.       return NULL;
  815.    }
  816.    if (orig == NULL) {         /* WebSaved ::= (self contained) */
  817.       atp = AsnReadId(aip, amp, WEB_SAVED);
  818.    } else {
  819.       atp = AsnLinkType(orig, WEB_SAVED);
  820.    }
  821.    /* link in local tree */
  822.    if (atp == NULL) {
  823.       return NULL;
  824.    }
  825.    ptr = WebSavedNew();
  826.    if (ptr == NULL) {
  827.       goto erret;
  828.    }
  829.    if (AsnReadVal(aip, atp, &av) <= 0) { /* read the start struct */
  830.       goto erret;
  831.    }
  832.    atp = AsnReadId(aip,amp, atp);
  833.    func = NULL;
  834.    if (atp == WEB_SAVED_queries) {
  835.       ptr -> queries = AsnGenericUserSeqOfAsnRead(aip, amp, atp, &isError, (AsnReadFunc) NamedQueryAsnRead, (AsnOptFreeFunc) NamedQueryFree);
  836.       if (isError && ptr -> queries == NULL) {
  837.          goto erret;
  838.       }
  839.       atp = AsnReadId(aip,amp, atp);
  840.    }
  841.    if (atp == WEB_SAVED_item_Sets) {
  842.       ptr -> item_Sets = AsnGenericUserSeqOfAsnRead(aip, amp, atp, &isError, (AsnReadFunc) NamedItemSetAsnRead, (AsnOptFreeFunc) NamedItemSetFree);
  843.       if (isError && ptr -> item_Sets == NULL) {
  844.          goto erret;
  845.       }
  846.       atp = AsnReadId(aip,amp, atp);
  847.    }
  848.    if (AsnReadVal(aip, atp, &av) <= 0) {
  849.       goto erret;
  850.    }
  851.    /* end struct */
  852. ret:
  853.    AsnUnlinkType(orig);       /* unlink local tree */
  854.    return ptr;
  855. erret:
  856.    aip -> io_failure = TRUE;
  857.    ptr = WebSavedFree(ptr);
  858.    goto ret;
  859. }
  860. /**************************************************
  861. *
  862. *    WebSavedAsnWrite()
  863. *
  864. **************************************************/
  865. NLM_EXTERN Boolean LIBCALL 
  866. WebSavedAsnWrite(WebSavedPtr ptr, AsnIoPtr aip, AsnTypePtr orig)
  867. {
  868.    DataVal av;
  869.    AsnTypePtr atp;
  870.    Boolean retval = FALSE;
  871.    if (! loaded)
  872.    {
  873.       if (! twebenvAsnLoad()) {
  874.          return FALSE;
  875.       }
  876.    }
  877.    if (aip == NULL) {
  878.       return FALSE;
  879.    }
  880.    atp = AsnLinkType(orig, WEB_SAVED);   /* link local tree */
  881.    if (atp == NULL) {
  882.       return FALSE;
  883.    }
  884.    if (ptr == NULL) { AsnNullValueMsg(aip, atp); goto erret; }
  885.    if (! AsnOpenStruct(aip, atp, (Pointer) ptr)) {
  886.       goto erret;
  887.    }
  888.    AsnGenericUserSeqOfAsnWrite(ptr -> queries, (AsnWriteFunc) NamedQueryAsnWrite, aip, WEB_SAVED_queries, WEB_SAVED_queries_E);
  889.    AsnGenericUserSeqOfAsnWrite(ptr -> item_Sets, (AsnWriteFunc) NamedItemSetAsnWrite, aip, WEB_SAVED_item_Sets, WEB_SAVED_item_Sets_E);
  890.    if (! AsnCloseStruct(aip, atp, (Pointer)ptr)) {
  891.       goto erret;
  892.    }
  893.    retval = TRUE;
  894. erret:
  895.    AsnUnlinkType(orig);       /* unlink local tree */
  896.    return retval;
  897. }
  898. /**************************************************
  899. *
  900. *    NamedQueryNew()
  901. *
  902. **************************************************/
  903. NLM_EXTERN 
  904. NamedQueryPtr LIBCALL
  905. NamedQueryNew(void)
  906. {
  907.    NamedQueryPtr ptr = MemNew((size_t) sizeof(NamedQuery));
  908.    return ptr;
  909. }
  910. /**************************************************
  911. *
  912. *    NamedQueryFree()
  913. *
  914. **************************************************/
  915. NLM_EXTERN 
  916. NamedQueryPtr LIBCALL
  917. NamedQueryFree(NamedQueryPtr ptr)
  918. {
  919.    if(ptr == NULL) {
  920.       return NULL;
  921.    }
  922.    NameFree(ptr -> name);
  923.    TimeFree(ptr -> time);
  924.    QueryCommandFree(ptr -> command);
  925.    return MemFree(ptr);
  926. }
  927. /**************************************************
  928. *
  929. *    NamedQueryAsnRead()
  930. *
  931. **************************************************/
  932. NLM_EXTERN 
  933. NamedQueryPtr LIBCALL
  934. NamedQueryAsnRead(AsnIoPtr aip, AsnTypePtr orig)
  935. {
  936.    DataVal av;
  937.    AsnTypePtr atp;
  938.    Boolean isError = FALSE;
  939.    AsnReadFunc func;
  940.    NamedQueryPtr ptr;
  941.    if (! loaded)
  942.    {
  943.       if (! twebenvAsnLoad()) {
  944.          return NULL;
  945.       }
  946.    }
  947.    if (aip == NULL) {
  948.       return NULL;
  949.    }
  950.    if (orig == NULL) {         /* NamedQuery ::= (self contained) */
  951.       atp = AsnReadId(aip, amp, NAMED_QUERY);
  952.    } else {
  953.       atp = AsnLinkType(orig, NAMED_QUERY);
  954.    }
  955.    /* link in local tree */
  956.    if (atp == NULL) {
  957.       return NULL;
  958.    }
  959.    ptr = NamedQueryNew();
  960.    if (ptr == NULL) {
  961.       goto erret;
  962.    }
  963.    if (AsnReadVal(aip, atp, &av) <= 0) { /* read the start struct */
  964.       goto erret;
  965.    }
  966.    atp = AsnReadId(aip,amp, atp);
  967.    func = NULL;
  968.    if (atp == NAMED_QUERY_name) {
  969.       ptr -> name = NameAsnRead(aip, atp);
  970.       if (aip -> io_failure) {
  971.          goto erret;
  972.       }
  973.       atp = AsnReadId(aip,amp, atp);
  974.    }
  975.    if (atp == NAMED_QUERY_time) {
  976.       ptr -> time = TimeAsnRead(aip, atp);
  977.       if (aip -> io_failure) {
  978.          goto erret;
  979.       }
  980.       atp = AsnReadId(aip,amp, atp);
  981.    }
  982.    if (atp == NAMED_QUERY_command) {
  983.       ptr -> command = QueryCommandAsnRead(aip, atp);
  984.       if (aip -> io_failure) {
  985.          goto erret;
  986.       }
  987.       atp = AsnReadId(aip,amp, atp);
  988.    }
  989.    if (AsnReadVal(aip, atp, &av) <= 0) {
  990.       goto erret;
  991.    }
  992.    /* end struct */
  993. ret:
  994.    AsnUnlinkType(orig);       /* unlink local tree */
  995.    return ptr;
  996. erret:
  997.    aip -> io_failure = TRUE;
  998.    ptr = NamedQueryFree(ptr);
  999.    goto ret;
  1000. }
  1001. /**************************************************
  1002. *
  1003. *    NamedQueryAsnWrite()
  1004. *
  1005. **************************************************/
  1006. NLM_EXTERN Boolean LIBCALL 
  1007. NamedQueryAsnWrite(NamedQueryPtr ptr, AsnIoPtr aip, AsnTypePtr orig)
  1008. {
  1009.    DataVal av;
  1010.    AsnTypePtr atp;
  1011.    Boolean retval = FALSE;
  1012.    if (! loaded)
  1013.    {
  1014.       if (! twebenvAsnLoad()) {
  1015.          return FALSE;
  1016.       }
  1017.    }
  1018.    if (aip == NULL) {
  1019.       return FALSE;
  1020.    }
  1021.    atp = AsnLinkType(orig, NAMED_QUERY);   /* link local tree */
  1022.    if (atp == NULL) {
  1023.       return FALSE;
  1024.    }
  1025.    if (ptr == NULL) { AsnNullValueMsg(aip, atp); goto erret; }
  1026.    if (! AsnOpenStruct(aip, atp, (Pointer) ptr)) {
  1027.       goto erret;
  1028.    }
  1029.    if (ptr -> name != NULL) {
  1030.       if ( ! NameAsnWrite(ptr -> name, aip, NAMED_QUERY_name)) {
  1031.          goto erret;
  1032.       }
  1033.    }
  1034.    if (ptr -> time != NULL) {
  1035.       if ( ! TimeAsnWrite(ptr -> time, aip, NAMED_QUERY_time)) {
  1036.          goto erret;
  1037.       }
  1038.    }
  1039.    if (ptr -> command != NULL) {
  1040.       if ( ! QueryCommandAsnWrite(ptr -> command, aip, NAMED_QUERY_command)) {
  1041.          goto erret;
  1042.       }
  1043.    }
  1044.    if (! AsnCloseStruct(aip, atp, (Pointer)ptr)) {
  1045.       goto erret;
  1046.    }
  1047.    retval = TRUE;
  1048. erret:
  1049.    AsnUnlinkType(orig);       /* unlink local tree */
  1050.    return retval;
  1051. }
  1052. /**************************************************
  1053. *
  1054. *    NamedItemSetNew()
  1055. *
  1056. **************************************************/
  1057. NLM_EXTERN 
  1058. NamedItemSetPtr LIBCALL
  1059. NamedItemSetNew(void)
  1060. {
  1061.    NamedItemSetPtr ptr = MemNew((size_t) sizeof(NamedItemSet));
  1062.    return ptr;
  1063. }
  1064. /**************************************************
  1065. *
  1066. *    NamedItemSetFree()
  1067. *
  1068. **************************************************/
  1069. NLM_EXTERN 
  1070. NamedItemSetPtr LIBCALL
  1071. NamedItemSetFree(NamedItemSetPtr ptr)
  1072. {
  1073.    if(ptr == NULL) {
  1074.       return NULL;
  1075.    }
  1076.    NameFree(ptr -> name);
  1077.    MemFree(ptr -> db);
  1078.    ItemSetFree(ptr -> item_Set);
  1079.    return MemFree(ptr);
  1080. }
  1081. /**************************************************
  1082. *
  1083. *    NamedItemSetAsnRead()
  1084. *
  1085. **************************************************/
  1086. NLM_EXTERN 
  1087. NamedItemSetPtr LIBCALL
  1088. NamedItemSetAsnRead(AsnIoPtr aip, AsnTypePtr orig)
  1089. {
  1090.    DataVal av;
  1091.    AsnTypePtr atp;
  1092.    Boolean isError = FALSE;
  1093.    AsnReadFunc func;
  1094.    NamedItemSetPtr ptr;
  1095.    if (! loaded)
  1096.    {
  1097.       if (! twebenvAsnLoad()) {
  1098.          return NULL;
  1099.       }
  1100.    }
  1101.    if (aip == NULL) {
  1102.       return NULL;
  1103.    }
  1104.    if (orig == NULL) {         /* NamedItemSet ::= (self contained) */
  1105.       atp = AsnReadId(aip, amp, NAMED_ITEM_SET);
  1106.    } else {
  1107.       atp = AsnLinkType(orig, NAMED_ITEM_SET);
  1108.    }
  1109.    /* link in local tree */
  1110.    if (atp == NULL) {
  1111.       return NULL;
  1112.    }
  1113.    ptr = NamedItemSetNew();
  1114.    if (ptr == NULL) {
  1115.       goto erret;
  1116.    }
  1117.    if (AsnReadVal(aip, atp, &av) <= 0) { /* read the start struct */
  1118.       goto erret;
  1119.    }
  1120.    atp = AsnReadId(aip,amp, atp);
  1121.    func = NULL;
  1122.    if (atp == NAMED_ITEM_SET_name) {
  1123.       ptr -> name = NameAsnRead(aip, atp);
  1124.       if (aip -> io_failure) {
  1125.          goto erret;
  1126.       }
  1127.       atp = AsnReadId(aip,amp, atp);
  1128.    }
  1129.    if (atp == NAMED_ITEM_SET_db) {
  1130.       if ( AsnReadVal(aip, atp, &av) <= 0) {
  1131.          goto erret;
  1132.       }
  1133.       ptr -> db = av.ptrvalue;
  1134.       atp = AsnReadId(aip,amp, atp);
  1135.    }
  1136.    if (atp == NAMED_ITEM_SET_item_Set) {
  1137.       ptr -> item_Set = ItemSetAsnRead(aip, atp);
  1138.       if (aip -> io_failure) {
  1139.          goto erret;
  1140.       }
  1141.       atp = AsnReadId(aip,amp, atp);
  1142.    }
  1143.    if (AsnReadVal(aip, atp, &av) <= 0) {
  1144.       goto erret;
  1145.    }
  1146.    /* end struct */
  1147. ret:
  1148.    AsnUnlinkType(orig);       /* unlink local tree */
  1149.    return ptr;
  1150. erret:
  1151.    aip -> io_failure = TRUE;
  1152.    ptr = NamedItemSetFree(ptr);
  1153.    goto ret;
  1154. }
  1155. /**************************************************
  1156. *
  1157. *    NamedItemSetAsnWrite()
  1158. *
  1159. **************************************************/
  1160. NLM_EXTERN Boolean LIBCALL 
  1161. NamedItemSetAsnWrite(NamedItemSetPtr ptr, AsnIoPtr aip, AsnTypePtr orig)
  1162. {
  1163.    DataVal av;
  1164.    AsnTypePtr atp;
  1165.    Boolean retval = FALSE;
  1166.    if (! loaded)
  1167.    {
  1168.       if (! twebenvAsnLoad()) {
  1169.          return FALSE;
  1170.       }
  1171.    }
  1172.    if (aip == NULL) {
  1173.       return FALSE;
  1174.    }
  1175.    atp = AsnLinkType(orig, NAMED_ITEM_SET);   /* link local tree */
  1176.    if (atp == NULL) {
  1177.       return FALSE;
  1178.    }
  1179.    if (ptr == NULL) { AsnNullValueMsg(aip, atp); goto erret; }
  1180.    if (! AsnOpenStruct(aip, atp, (Pointer) ptr)) {
  1181.       goto erret;
  1182.    }
  1183.    if (ptr -> name != NULL) {
  1184.       if ( ! NameAsnWrite(ptr -> name, aip, NAMED_ITEM_SET_name)) {
  1185.          goto erret;
  1186.       }
  1187.    }
  1188.    if (ptr -> db != NULL) {
  1189.       av.ptrvalue = ptr -> db;
  1190.       retval = AsnWrite(aip, NAMED_ITEM_SET_db,  &av);
  1191.    }
  1192.    if (ptr -> item_Set != NULL) {
  1193.       if ( ! ItemSetAsnWrite(ptr -> item_Set, aip, NAMED_ITEM_SET_item_Set)) {
  1194.          goto erret;
  1195.       }
  1196.    }
  1197.    if (! AsnCloseStruct(aip, atp, (Pointer)ptr)) {
  1198.       goto erret;
  1199.    }
  1200.    retval = TRUE;
  1201. erret:
  1202.    AsnUnlinkType(orig);       /* unlink local tree */
  1203.    return retval;
  1204. }
  1205. /**************************************************
  1206. *
  1207. *    FilterValueNew()
  1208. *
  1209. **************************************************/
  1210. NLM_EXTERN 
  1211. FilterValuePtr LIBCALL
  1212. FilterValueNew(void)
  1213. {
  1214.    FilterValuePtr ptr = MemNew((size_t) sizeof(FilterValue));
  1215.    return ptr;
  1216. }
  1217. /**************************************************
  1218. *
  1219. *    FilterValueFree()
  1220. *
  1221. **************************************************/
  1222. NLM_EXTERN 
  1223. FilterValuePtr LIBCALL
  1224. FilterValueFree(FilterValuePtr ptr)
  1225. {
  1226.    if(ptr == NULL) {
  1227.       return NULL;
  1228.    }
  1229.    MemFree(ptr -> name);
  1230.    MemFree(ptr -> value);
  1231.    return MemFree(ptr);
  1232. }
  1233. /**************************************************
  1234. *
  1235. *    FilterValueAsnRead()
  1236. *
  1237. **************************************************/
  1238. NLM_EXTERN 
  1239. FilterValuePtr LIBCALL
  1240. FilterValueAsnRead(AsnIoPtr aip, AsnTypePtr orig)
  1241. {
  1242.    DataVal av;
  1243.    AsnTypePtr atp;
  1244.    Boolean isError = FALSE;
  1245.    AsnReadFunc func;
  1246.    FilterValuePtr ptr;
  1247.    if (! loaded)
  1248.    {
  1249.       if (! twebenvAsnLoad()) {
  1250.          return NULL;
  1251.       }
  1252.    }
  1253.    if (aip == NULL) {
  1254.       return NULL;
  1255.    }
  1256.    if (orig == NULL) {         /* FilterValue ::= (self contained) */
  1257.       atp = AsnReadId(aip, amp, FILTER_VALUE);
  1258.    } else {
  1259.       atp = AsnLinkType(orig, FILTER_VALUE);
  1260.    }
  1261.    /* link in local tree */
  1262.    if (atp == NULL) {
  1263.       return NULL;
  1264.    }
  1265.    ptr = FilterValueNew();
  1266.    if (ptr == NULL) {
  1267.       goto erret;
  1268.    }
  1269.    if (AsnReadVal(aip, atp, &av) <= 0) { /* read the start struct */
  1270.       goto erret;
  1271.    }
  1272.    atp = AsnReadId(aip,amp, atp);
  1273.    func = NULL;
  1274.    if (atp == FILTER_VALUE_name) {
  1275.       if ( AsnReadVal(aip, atp, &av) <= 0) {
  1276.          goto erret;
  1277.       }
  1278.       ptr -> name = av.ptrvalue;
  1279.       atp = AsnReadId(aip,amp, atp);
  1280.    }
  1281.    if (atp == FILTER_VALUE_value) {
  1282.       if ( AsnReadVal(aip, atp, &av) <= 0) {
  1283.          goto erret;
  1284.       }
  1285.       ptr -> value = av.ptrvalue;
  1286.       atp = AsnReadId(aip,amp, atp);
  1287.    }
  1288.    if (AsnReadVal(aip, atp, &av) <= 0) {
  1289.       goto erret;
  1290.    }
  1291.    /* end struct */
  1292. ret:
  1293.    AsnUnlinkType(orig);       /* unlink local tree */
  1294.    return ptr;
  1295. erret:
  1296.    aip -> io_failure = TRUE;
  1297.    ptr = FilterValueFree(ptr);
  1298.    goto ret;
  1299. }
  1300. /**************************************************
  1301. *
  1302. *    FilterValueAsnWrite()
  1303. *
  1304. **************************************************/
  1305. NLM_EXTERN Boolean LIBCALL 
  1306. FilterValueAsnWrite(FilterValuePtr ptr, AsnIoPtr aip, AsnTypePtr orig)
  1307. {
  1308.    DataVal av;
  1309.    AsnTypePtr atp;
  1310.    Boolean retval = FALSE;
  1311.    if (! loaded)
  1312.    {
  1313.       if (! twebenvAsnLoad()) {
  1314.          return FALSE;
  1315.       }
  1316.    }
  1317.    if (aip == NULL) {
  1318.       return FALSE;
  1319.    }
  1320.    atp = AsnLinkType(orig, FILTER_VALUE);   /* link local tree */
  1321.    if (atp == NULL) {
  1322.       return FALSE;
  1323.    }
  1324.    if (ptr == NULL) { AsnNullValueMsg(aip, atp); goto erret; }
  1325.    if (! AsnOpenStruct(aip, atp, (Pointer) ptr)) {
  1326.       goto erret;
  1327.    }
  1328.    if (ptr -> name != NULL) {
  1329.       av.ptrvalue = ptr -> name;
  1330.       retval = AsnWrite(aip, FILTER_VALUE_name,  &av);
  1331.    }
  1332.    if (ptr -> value != NULL) {
  1333.       av.ptrvalue = ptr -> value;
  1334.       retval = AsnWrite(aip, FILTER_VALUE_value,  &av);
  1335.    }
  1336.    if (! AsnCloseStruct(aip, atp, (Pointer)ptr)) {
  1337.       goto erret;
  1338.    }
  1339.    retval = TRUE;
  1340. erret:
  1341.    AsnUnlinkType(orig);       /* unlink local tree */
  1342.    return retval;
  1343. }
  1344. /**************************************************
  1345. *
  1346. *    DbClipboardNew()
  1347. *
  1348. **************************************************/
  1349. NLM_EXTERN 
  1350. DbClipboardPtr LIBCALL
  1351. DbClipboardNew(void)
  1352. {
  1353.    DbClipboardPtr ptr = MemNew((size_t) sizeof(DbClipboard));
  1354.    return ptr;
  1355. }
  1356. /**************************************************
  1357. *
  1358. *    DbClipboardFree()
  1359. *
  1360. **************************************************/
  1361. NLM_EXTERN 
  1362. DbClipboardPtr LIBCALL
  1363. DbClipboardFree(DbClipboardPtr ptr)
  1364. {
  1365.    if(ptr == NULL) {
  1366.       return NULL;
  1367.    }
  1368.    MemFree(ptr -> name);
  1369.    ItemSetFree(ptr -> items);
  1370.    return MemFree(ptr);
  1371. }
  1372. /**************************************************
  1373. *
  1374. *    DbClipboardAsnRead()
  1375. *
  1376. **************************************************/
  1377. NLM_EXTERN 
  1378. DbClipboardPtr LIBCALL
  1379. DbClipboardAsnRead(AsnIoPtr aip, AsnTypePtr orig)
  1380. {
  1381.    DataVal av;
  1382.    AsnTypePtr atp;
  1383.    Boolean isError = FALSE;
  1384.    AsnReadFunc func;
  1385.    DbClipboardPtr ptr;
  1386.    if (! loaded)
  1387.    {
  1388.       if (! twebenvAsnLoad()) {
  1389.          return NULL;
  1390.       }
  1391.    }
  1392.    if (aip == NULL) {
  1393.       return NULL;
  1394.    }
  1395.    if (orig == NULL) {         /* DbClipboard ::= (self contained) */
  1396.       atp = AsnReadId(aip, amp, DB_CLIPBOARD);
  1397.    } else {
  1398.       atp = AsnLinkType(orig, DB_CLIPBOARD);
  1399.    }
  1400.    /* link in local tree */
  1401.    if (atp == NULL) {
  1402.       return NULL;
  1403.    }
  1404.    ptr = DbClipboardNew();
  1405.    if (ptr == NULL) {
  1406.       goto erret;
  1407.    }
  1408.    if (AsnReadVal(aip, atp, &av) <= 0) { /* read the start struct */
  1409.       goto erret;
  1410.    }
  1411.    atp = AsnReadId(aip,amp, atp);
  1412.    func = NULL;
  1413.    if (atp == DB_CLIPBOARD_name) {
  1414.       if ( AsnReadVal(aip, atp, &av) <= 0) {
  1415.          goto erret;
  1416.       }
  1417.       ptr -> name = av.ptrvalue;
  1418.       atp = AsnReadId(aip,amp, atp);
  1419.    }
  1420.    if (atp == DB_CLIPBOARD_count) {
  1421.       if ( AsnReadVal(aip, atp, &av) <= 0) {
  1422.          goto erret;
  1423.       }
  1424.       ptr -> count = av.intvalue;
  1425.       atp = AsnReadId(aip,amp, atp);
  1426.    }
  1427.    if (atp == DB_CLIPBOARD_items) {
  1428.       ptr -> items = ItemSetAsnRead(aip, atp);
  1429.       if (aip -> io_failure) {
  1430.          goto erret;
  1431.       }
  1432.       atp = AsnReadId(aip,amp, atp);
  1433.    }
  1434.    if (AsnReadVal(aip, atp, &av) <= 0) {
  1435.       goto erret;
  1436.    }
  1437.    /* end struct */
  1438. ret:
  1439.    AsnUnlinkType(orig);       /* unlink local tree */
  1440.    return ptr;
  1441. erret:
  1442.    aip -> io_failure = TRUE;
  1443.    ptr = DbClipboardFree(ptr);
  1444.    goto ret;
  1445. }
  1446. /**************************************************
  1447. *
  1448. *    DbClipboardAsnWrite()
  1449. *
  1450. **************************************************/
  1451. NLM_EXTERN Boolean LIBCALL 
  1452. DbClipboardAsnWrite(DbClipboardPtr ptr, AsnIoPtr aip, AsnTypePtr orig)
  1453. {
  1454.    DataVal av;
  1455.    AsnTypePtr atp;
  1456.    Boolean retval = FALSE;
  1457.    if (! loaded)
  1458.    {
  1459.       if (! twebenvAsnLoad()) {
  1460.          return FALSE;
  1461.       }
  1462.    }
  1463.    if (aip == NULL) {
  1464.       return FALSE;
  1465.    }
  1466.    atp = AsnLinkType(orig, DB_CLIPBOARD);   /* link local tree */
  1467.    if (atp == NULL) {
  1468.       return FALSE;
  1469.    }
  1470.    if (ptr == NULL) { AsnNullValueMsg(aip, atp); goto erret; }
  1471.    if (! AsnOpenStruct(aip, atp, (Pointer) ptr)) {
  1472.       goto erret;
  1473.    }
  1474.    if (ptr -> name != NULL) {
  1475.       av.ptrvalue = ptr -> name;
  1476.       retval = AsnWrite(aip, DB_CLIPBOARD_name,  &av);
  1477.    }
  1478.    av.intvalue = ptr -> count;
  1479.    retval = AsnWrite(aip, DB_CLIPBOARD_count,  &av);
  1480.    if (ptr -> items != NULL) {
  1481.       if ( ! ItemSetAsnWrite(ptr -> items, aip, DB_CLIPBOARD_items)) {
  1482.          goto erret;
  1483.       }
  1484.    }
  1485.    if (! AsnCloseStruct(aip, atp, (Pointer)ptr)) {
  1486.       goto erret;
  1487.    }
  1488.    retval = TRUE;
  1489. erret:
  1490.    AsnUnlinkType(orig);       /* unlink local tree */
  1491.    return retval;
  1492. }
  1493. /**************************************************
  1494. *
  1495. *    TimeFree()
  1496. *
  1497. **************************************************/
  1498. NLM_EXTERN 
  1499. TimePtr LIBCALL
  1500. TimeFree(ValNodePtr anp)
  1501. {
  1502.    Pointer pnt;
  1503.    if (anp == NULL) {
  1504.       return NULL;
  1505.    }
  1506.    pnt = anp->data.ptrvalue;
  1507.    switch (anp->choice)
  1508.    {
  1509.    default:
  1510.       break;
  1511.    case Time_full:
  1512.       FullTimeFree(anp -> data.ptrvalue);
  1513.       break;
  1514.    }
  1515.    return MemFree(anp);
  1516. }
  1517. /**************************************************
  1518. *
  1519. *    TimeAsnRead()
  1520. *
  1521. **************************************************/
  1522. NLM_EXTERN 
  1523. TimePtr LIBCALL
  1524. TimeAsnRead(AsnIoPtr aip, AsnTypePtr orig)
  1525. {
  1526.    DataVal av;
  1527.    AsnTypePtr atp;
  1528.    ValNodePtr anp;
  1529.    Uint1 choice;
  1530.    Boolean isError = FALSE;
  1531.    Boolean nullIsError = FALSE;
  1532.    AsnReadFunc func;
  1533.    if (! loaded)
  1534.    {
  1535.       if (! twebenvAsnLoad()) {
  1536.          return NULL;
  1537.       }
  1538.    }
  1539.    if (aip == NULL) {
  1540.       return NULL;
  1541.    }
  1542.    if (orig == NULL) {         /* Time ::= (self contained) */
  1543.       atp = AsnReadId(aip, amp, TIME);
  1544.    } else {
  1545.       atp = AsnLinkType(orig, TIME);    /* link in local tree */
  1546.    }
  1547.    if (atp == NULL) {
  1548.       return NULL;
  1549.    }
  1550.    anp = ValNodeNew(NULL);
  1551.    if (anp == NULL) {
  1552.       goto erret;
  1553.    }
  1554.    if (AsnReadVal(aip, atp, &av) <= 0) { /* read the CHOICE or OpenStruct value (nothing) */
  1555.       goto erret;
  1556.    }
  1557.    func = NULL;
  1558.    atp = AsnReadId(aip, amp, atp);  /* find the choice */
  1559.    if (atp == NULL) {
  1560.       goto erret;
  1561.    }
  1562.    if (atp == TIME_unix) {
  1563.       choice = Time_unix;
  1564.       if (AsnReadVal(aip, atp, &av) <= 0) {
  1565.          goto erret;
  1566.       }
  1567.       anp->data.intvalue = av.intvalue;
  1568.    }
  1569.    else if (atp == TIME_full) {
  1570.       choice = Time_full;
  1571.       func = (AsnReadFunc) FullTimeAsnRead;
  1572.    }
  1573.    anp->choice = choice;
  1574.    if (func != NULL)
  1575.    {
  1576.       anp->data.ptrvalue = (* func)(aip, atp);
  1577.       if (aip -> io_failure) goto erret;
  1578.       if (nullIsError && anp->data.ptrvalue == NULL) {
  1579.          goto erret;
  1580.       }
  1581.    }
  1582. ret:
  1583.    AsnUnlinkType(orig);       /* unlink local tree */
  1584.    return anp;
  1585. erret:
  1586.    anp = MemFree(anp);
  1587.    aip -> io_failure = TRUE;
  1588.    goto ret;
  1589. }
  1590. /**************************************************
  1591. *
  1592. *    TimeAsnWrite()
  1593. *
  1594. **************************************************/
  1595. NLM_EXTERN Boolean LIBCALL 
  1596. TimeAsnWrite(TimePtr anp, AsnIoPtr aip, AsnTypePtr orig)
  1597. {
  1598.    DataVal av;
  1599.    AsnTypePtr atp, writetype = NULL;
  1600.    Pointer pnt;
  1601.    AsnWriteFunc func = NULL;
  1602.    Boolean retval = FALSE;
  1603.    if (! loaded)
  1604.    {
  1605.       if (! twebenvAsnLoad())
  1606.       return FALSE;
  1607.    }
  1608.    if (aip == NULL)
  1609.    return FALSE;
  1610.    atp = AsnLinkType(orig, TIME);   /* link local tree */
  1611.    if (atp == NULL) {
  1612.       return FALSE;
  1613.    }
  1614.    if (anp == NULL) { AsnNullValueMsg(aip, atp); goto erret; }
  1615.    av.ptrvalue = (Pointer)anp;
  1616.    if (! AsnWriteChoice(aip, atp, (Int2)anp->choice, &av)) {
  1617.       goto erret;
  1618.    }
  1619.    pnt = anp->data.ptrvalue;
  1620.    switch (anp->choice)
  1621.    {
  1622.    case Time_unix:
  1623.       av.intvalue = anp->data.intvalue;
  1624.       retval = AsnWrite(aip, TIME_unix, &av);
  1625.       break;
  1626.    case Time_full:
  1627.       writetype = TIME_full;
  1628.       func = (AsnWriteFunc) FullTimeAsnWrite;
  1629.       break;
  1630.    }
  1631.    if (writetype != NULL) {
  1632.       retval = (* func)(pnt, aip, writetype);   /* write it out */
  1633.    }
  1634.    if (!retval) {
  1635.       goto erret;
  1636.    }
  1637.    retval = TRUE;
  1638. erret:
  1639.    AsnUnlinkType(orig);       /* unlink local tree */
  1640.    return retval;
  1641. }
  1642. /**************************************************
  1643. *
  1644. *    QueryCommandFree()
  1645. *
  1646. **************************************************/
  1647. NLM_EXTERN 
  1648. QueryCommandPtr LIBCALL
  1649. QueryCommandFree(ValNodePtr anp)
  1650. {
  1651.    Pointer pnt;
  1652.    if (anp == NULL) {
  1653.       return NULL;
  1654.    }
  1655.    pnt = anp->data.ptrvalue;
  1656.    switch (anp->choice)
  1657.    {
  1658.    default:
  1659.       break;
  1660.    case QueryCommand_search:
  1661.       QuerySearchFree(anp -> data.ptrvalue);
  1662.       break;
  1663.    case QueryCommand_select:
  1664.       QuerySelectFree(anp -> data.ptrvalue);
  1665.       break;
  1666.    case QueryCommand_related:
  1667.       QueryRelatedFree(anp -> data.ptrvalue);
  1668.       break;
  1669.    }
  1670.    return MemFree(anp);
  1671. }
  1672. /**************************************************
  1673. *
  1674. *    QueryCommandAsnRead()
  1675. *
  1676. **************************************************/
  1677. NLM_EXTERN 
  1678. QueryCommandPtr LIBCALL
  1679. QueryCommandAsnRead(AsnIoPtr aip, AsnTypePtr orig)
  1680. {
  1681.    DataVal av;
  1682.    AsnTypePtr atp;
  1683.    ValNodePtr anp;
  1684.    Uint1 choice;
  1685.    Boolean isError = FALSE;
  1686.    Boolean nullIsError = FALSE;
  1687.    AsnReadFunc func;
  1688.    if (! loaded)
  1689.    {
  1690.       if (! twebenvAsnLoad()) {
  1691.          return NULL;
  1692.       }
  1693.    }
  1694.    if (aip == NULL) {
  1695.       return NULL;
  1696.    }
  1697.    if (orig == NULL) {         /* QueryCommand ::= (self contained) */
  1698.       atp = AsnReadId(aip, amp, QUERY_COMMAND);
  1699.    } else {
  1700.       atp = AsnLinkType(orig, QUERY_COMMAND);    /* link in local tree */
  1701.    }
  1702.    if (atp == NULL) {
  1703.       return NULL;
  1704.    }
  1705.    anp = ValNodeNew(NULL);
  1706.    if (anp == NULL) {
  1707.       goto erret;
  1708.    }
  1709.    if (AsnReadVal(aip, atp, &av) <= 0) { /* read the CHOICE or OpenStruct value (nothing) */
  1710.       goto erret;
  1711.    }
  1712.    func = NULL;
  1713.    atp = AsnReadId(aip, amp, atp);  /* find the choice */
  1714.    if (atp == NULL) {
  1715.       goto erret;
  1716.    }
  1717.    if (atp == QUERY_COMMAND_search) {
  1718.       choice = QueryCommand_search;
  1719.       func = (AsnReadFunc) QuerySearchAsnRead;
  1720.    }
  1721.    else if (atp == QUERY_COMMAND_select) {
  1722.       choice = QueryCommand_select;
  1723.       func = (AsnReadFunc) QuerySelectAsnRead;
  1724.    }
  1725.    else if (atp == QUERY_COMMAND_related) {
  1726.       choice = QueryCommand_related;
  1727.       func = (AsnReadFunc) QueryRelatedAsnRead;
  1728.    }
  1729.    anp->choice = choice;
  1730.    if (func != NULL)
  1731.    {
  1732.       anp->data.ptrvalue = (* func)(aip, atp);
  1733.       if (aip -> io_failure) goto erret;
  1734.       if (nullIsError && anp->data.ptrvalue == NULL) {
  1735.          goto erret;
  1736.       }
  1737.    }
  1738. ret:
  1739.    AsnUnlinkType(orig);       /* unlink local tree */
  1740.    return anp;
  1741. erret:
  1742.    anp = MemFree(anp);
  1743.    aip -> io_failure = TRUE;
  1744.    goto ret;
  1745. }
  1746. /**************************************************
  1747. *
  1748. *    QueryCommandAsnWrite()
  1749. *
  1750. **************************************************/
  1751. NLM_EXTERN Boolean LIBCALL 
  1752. QueryCommandAsnWrite(QueryCommandPtr anp, AsnIoPtr aip, AsnTypePtr orig)
  1753. {
  1754.    DataVal av;
  1755.    AsnTypePtr atp, writetype = NULL;
  1756.    Pointer pnt;
  1757.    AsnWriteFunc func = NULL;
  1758.    Boolean retval = FALSE;
  1759.    if (! loaded)
  1760.    {
  1761.       if (! twebenvAsnLoad())
  1762.       return FALSE;
  1763.    }
  1764.    if (aip == NULL)
  1765.    return FALSE;
  1766.    atp = AsnLinkType(orig, QUERY_COMMAND);   /* link local tree */
  1767.    if (atp == NULL) {
  1768.       return FALSE;
  1769.    }
  1770.    if (anp == NULL) { AsnNullValueMsg(aip, atp); goto erret; }
  1771.    av.ptrvalue = (Pointer)anp;
  1772.    if (! AsnWriteChoice(aip, atp, (Int2)anp->choice, &av)) {
  1773.       goto erret;
  1774.    }
  1775.    pnt = anp->data.ptrvalue;
  1776.    switch (anp->choice)
  1777.    {
  1778.    case QueryCommand_search:
  1779.       writetype = QUERY_COMMAND_search;
  1780.       func = (AsnWriteFunc) QuerySearchAsnWrite;
  1781.       break;
  1782.    case QueryCommand_select:
  1783.       writetype = QUERY_COMMAND_select;
  1784.       func = (AsnWriteFunc) QuerySelectAsnWrite;
  1785.       break;
  1786.    case QueryCommand_related:
  1787.       writetype = QUERY_COMMAND_related;
  1788.       func = (AsnWriteFunc) QueryRelatedAsnWrite;
  1789.       break;
  1790.    }
  1791.    if (writetype != NULL) {
  1792.       retval = (* func)(pnt, aip, writetype);   /* write it out */
  1793.    }
  1794.    if (!retval) {
  1795.       goto erret;
  1796.    }
  1797.    retval = TRUE;
  1798. erret:
  1799.    AsnUnlinkType(orig);       /* unlink local tree */
  1800.    return retval;
  1801. }
  1802. /**************************************************
  1803. *
  1804. *    QuerySearchNew()
  1805. *
  1806. **************************************************/
  1807. NLM_EXTERN 
  1808. QuerySearchPtr LIBCALL
  1809. QuerySearchNew(void)
  1810. {
  1811.    QuerySearchPtr ptr = MemNew((size_t) sizeof(QuerySearch));
  1812.    return ptr;
  1813. }
  1814. /**************************************************
  1815. *
  1816. *    QuerySearchFree()
  1817. *
  1818. **************************************************/
  1819. NLM_EXTERN 
  1820. QuerySearchPtr LIBCALL
  1821. QuerySearchFree(QuerySearchPtr ptr)
  1822. {
  1823.    if(ptr == NULL) {
  1824.       return NULL;
  1825.    }
  1826.    MemFree(ptr -> db);
  1827.    MemFree(ptr -> term);
  1828.    MemFree(ptr -> field);
  1829.    AsnGenericUserSeqOfFree(ptr -> filters, (AsnOptFreeFunc) FilterValueFree);
  1830.    return MemFree(ptr);
  1831. }
  1832. /**************************************************
  1833. *
  1834. *    QuerySearchAsnRead()
  1835. *
  1836. **************************************************/
  1837. NLM_EXTERN 
  1838. QuerySearchPtr LIBCALL
  1839. QuerySearchAsnRead(AsnIoPtr aip, AsnTypePtr orig)
  1840. {
  1841.    DataVal av;
  1842.    AsnTypePtr atp;
  1843.    Boolean isError = FALSE;
  1844.    AsnReadFunc func;
  1845.    QuerySearchPtr ptr;
  1846.    if (! loaded)
  1847.    {
  1848.       if (! twebenvAsnLoad()) {
  1849.          return NULL;
  1850.       }
  1851.    }
  1852.    if (aip == NULL) {
  1853.       return NULL;
  1854.    }
  1855.    if (orig == NULL) {         /* QuerySearch ::= (self contained) */
  1856.       atp = AsnReadId(aip, amp, QUERY_SEARCH);
  1857.    } else {
  1858.       atp = AsnLinkType(orig, QUERY_SEARCH);
  1859.    }
  1860.    /* link in local tree */
  1861.    if (atp == NULL) {
  1862.       return NULL;
  1863.    }
  1864.    ptr = QuerySearchNew();
  1865.    if (ptr == NULL) {
  1866.       goto erret;
  1867.    }
  1868.    if (AsnReadVal(aip, atp, &av) <= 0) { /* read the start struct */
  1869.       goto erret;
  1870.    }
  1871.    atp = AsnReadId(aip,amp, atp);
  1872.    func = NULL;
  1873.    if (atp == QUERY_SEARCH_db) {
  1874.       if ( AsnReadVal(aip, atp, &av) <= 0) {
  1875.          goto erret;
  1876.       }
  1877.       ptr -> db = av.ptrvalue;
  1878.       atp = AsnReadId(aip,amp, atp);
  1879.    }
  1880.    if (atp == QUERY_SEARCH_term) {
  1881.       if ( AsnReadVal(aip, atp, &av) <= 0) {
  1882.          goto erret;
  1883.       }
  1884.       ptr -> term = av.ptrvalue;
  1885.       atp = AsnReadId(aip,amp, atp);
  1886.    }
  1887.    if (atp == QUERY_SEARCH_field) {
  1888.       if ( AsnReadVal(aip, atp, &av) <= 0) {
  1889.          goto erret;
  1890.       }
  1891.       ptr -> field = av.ptrvalue;
  1892.       atp = AsnReadId(aip,amp, atp);
  1893.    }
  1894.    if (atp == QUERY_SEARCH_filters) {
  1895.       ptr -> filters = AsnGenericUserSeqOfAsnRead(aip, amp, atp, &isError, (AsnReadFunc) FilterValueAsnRead, (AsnOptFreeFunc) FilterValueFree);
  1896.       if (isError && ptr -> filters == NULL) {
  1897.          goto erret;
  1898.       }
  1899.       atp = AsnReadId(aip,amp, atp);
  1900.    }
  1901.    if (atp == QUERY_SEARCH_count) {
  1902.       if ( AsnReadVal(aip, atp, &av) <= 0) {
  1903.          goto erret;
  1904.       }
  1905.       ptr -> count = av.intvalue;
  1906.       atp = AsnReadId(aip,amp, atp);
  1907.    }
  1908.    if (atp == QUERY_SEARCH_flags) {
  1909.       if ( AsnReadVal(aip, atp, &av) <= 0) {
  1910.          goto erret;
  1911.       }
  1912.       ptr -> flags = av.intvalue;
  1913.       atp = AsnReadId(aip,amp, atp);
  1914.    }
  1915.    if (AsnReadVal(aip, atp, &av) <= 0) {
  1916.       goto erret;
  1917.    }
  1918.    /* end struct */
  1919. ret:
  1920.    AsnUnlinkType(orig);       /* unlink local tree */
  1921.    return ptr;
  1922. erret:
  1923.    aip -> io_failure = TRUE;
  1924.    ptr = QuerySearchFree(ptr);
  1925.    goto ret;
  1926. }
  1927. /**************************************************
  1928. *
  1929. *    QuerySearchAsnWrite()
  1930. *
  1931. **************************************************/
  1932. NLM_EXTERN Boolean LIBCALL 
  1933. QuerySearchAsnWrite(QuerySearchPtr ptr, AsnIoPtr aip, AsnTypePtr orig)
  1934. {
  1935.    DataVal av;
  1936.    AsnTypePtr atp;
  1937.    Boolean retval = FALSE;
  1938.    if (! loaded)
  1939.    {
  1940.       if (! twebenvAsnLoad()) {
  1941.          return FALSE;
  1942.       }
  1943.    }
  1944.    if (aip == NULL) {
  1945.       return FALSE;
  1946.    }
  1947.    atp = AsnLinkType(orig, QUERY_SEARCH);   /* link local tree */
  1948.    if (atp == NULL) {
  1949.       return FALSE;
  1950.    }
  1951.    if (ptr == NULL) { AsnNullValueMsg(aip, atp); goto erret; }
  1952.    if (! AsnOpenStruct(aip, atp, (Pointer) ptr)) {
  1953.       goto erret;
  1954.    }
  1955.    if (ptr -> db != NULL) {
  1956.       av.ptrvalue = ptr -> db;
  1957.       retval = AsnWrite(aip, QUERY_SEARCH_db,  &av);
  1958.    }
  1959.    if (ptr -> term != NULL) {
  1960.       av.ptrvalue = ptr -> term;
  1961.       retval = AsnWrite(aip, QUERY_SEARCH_term,  &av);
  1962.    }
  1963.    if (ptr -> field != NULL) {
  1964.       av.ptrvalue = ptr -> field;
  1965.       retval = AsnWrite(aip, QUERY_SEARCH_field,  &av);
  1966.    }
  1967.    AsnGenericUserSeqOfAsnWrite(ptr -> filters, (AsnWriteFunc) FilterValueAsnWrite, aip, QUERY_SEARCH_filters, QUERY_SEARCH_filters_E);
  1968.    av.intvalue = ptr -> count;
  1969.    retval = AsnWrite(aip, QUERY_SEARCH_count,  &av);
  1970.    av.intvalue = ptr -> flags;
  1971.    retval = AsnWrite(aip, QUERY_SEARCH_flags,  &av);
  1972.    if (! AsnCloseStruct(aip, atp, (Pointer)ptr)) {
  1973.       goto erret;
  1974.    }
  1975.    retval = TRUE;
  1976. erret:
  1977.    AsnUnlinkType(orig);       /* unlink local tree */
  1978.    return retval;
  1979. }
  1980. /**************************************************
  1981. *
  1982. *    QuerySelectNew()
  1983. *
  1984. **************************************************/
  1985. NLM_EXTERN 
  1986. QuerySelectPtr LIBCALL
  1987. QuerySelectNew(void)
  1988. {
  1989.    QuerySelectPtr ptr = MemNew((size_t) sizeof(QuerySelect));
  1990.    return ptr;
  1991. }
  1992. /**************************************************
  1993. *
  1994. *    QuerySelectFree()
  1995. *
  1996. **************************************************/
  1997. NLM_EXTERN 
  1998. QuerySelectPtr LIBCALL
  1999. QuerySelectFree(QuerySelectPtr ptr)
  2000. {
  2001.    if(ptr == NULL) {
  2002.       return NULL;
  2003.    }
  2004.    MemFree(ptr -> db);
  2005.    ItemSetFree(ptr -> items);
  2006.    return MemFree(ptr);
  2007. }
  2008. /**************************************************
  2009. *
  2010. *    QuerySelectAsnRead()
  2011. *
  2012. **************************************************/
  2013. NLM_EXTERN 
  2014. QuerySelectPtr LIBCALL
  2015. QuerySelectAsnRead(AsnIoPtr aip, AsnTypePtr orig)
  2016. {
  2017.    DataVal av;
  2018.    AsnTypePtr atp;
  2019.    Boolean isError = FALSE;
  2020.    AsnReadFunc func;
  2021.    QuerySelectPtr ptr;
  2022.    if (! loaded)
  2023.    {
  2024.       if (! twebenvAsnLoad()) {
  2025.          return NULL;
  2026.       }
  2027.    }
  2028.    if (aip == NULL) {
  2029.       return NULL;
  2030.    }
  2031.    if (orig == NULL) {         /* QuerySelect ::= (self contained) */
  2032.       atp = AsnReadId(aip, amp, QUERY_SELECT);
  2033.    } else {
  2034.       atp = AsnLinkType(orig, QUERY_SELECT);
  2035.    }
  2036.    /* link in local tree */
  2037.    if (atp == NULL) {
  2038.       return NULL;
  2039.    }
  2040.    ptr = QuerySelectNew();
  2041.    if (ptr == NULL) {
  2042.       goto erret;
  2043.    }
  2044.    if (AsnReadVal(aip, atp, &av) <= 0) { /* read the start struct */
  2045.       goto erret;
  2046.    }
  2047.    atp = AsnReadId(aip,amp, atp);
  2048.    func = NULL;
  2049.    if (atp == QUERY_SELECT_db) {
  2050.       if ( AsnReadVal(aip, atp, &av) <= 0) {
  2051.          goto erret;
  2052.       }
  2053.       ptr -> db = av.ptrvalue;
  2054.       atp = AsnReadId(aip,amp, atp);
  2055.    }
  2056.    if (atp == QUERY_SELECT_items) {
  2057.       ptr -> items = ItemSetAsnRead(aip, atp);
  2058.       if (aip -> io_failure) {
  2059.          goto erret;
  2060.       }
  2061.       atp = AsnReadId(aip,amp, atp);
  2062.    }
  2063.    if (AsnReadVal(aip, atp, &av) <= 0) {
  2064.       goto erret;
  2065.    }
  2066.    /* end struct */
  2067. ret:
  2068.    AsnUnlinkType(orig);       /* unlink local tree */
  2069.    return ptr;
  2070. erret:
  2071.    aip -> io_failure = TRUE;
  2072.    ptr = QuerySelectFree(ptr);
  2073.    goto ret;
  2074. }
  2075. /**************************************************
  2076. *
  2077. *    QuerySelectAsnWrite()
  2078. *
  2079. **************************************************/
  2080. NLM_EXTERN Boolean LIBCALL 
  2081. QuerySelectAsnWrite(QuerySelectPtr ptr, AsnIoPtr aip, AsnTypePtr orig)
  2082. {
  2083.    DataVal av;
  2084.    AsnTypePtr atp;
  2085.    Boolean retval = FALSE;
  2086.    if (! loaded)
  2087.    {
  2088.       if (! twebenvAsnLoad()) {
  2089.          return FALSE;
  2090.       }
  2091.    }
  2092.    if (aip == NULL) {
  2093.       return FALSE;
  2094.    }
  2095.    atp = AsnLinkType(orig, QUERY_SELECT);   /* link local tree */
  2096.    if (atp == NULL) {
  2097.       return FALSE;
  2098.    }
  2099.    if (ptr == NULL) { AsnNullValueMsg(aip, atp); goto erret; }
  2100.    if (! AsnOpenStruct(aip, atp, (Pointer) ptr)) {
  2101.       goto erret;
  2102.    }
  2103.    if (ptr -> db != NULL) {
  2104.       av.ptrvalue = ptr -> db;
  2105.       retval = AsnWrite(aip, QUERY_SELECT_db,  &av);
  2106.    }
  2107.    if (ptr -> items != NULL) {
  2108.       if ( ! ItemSetAsnWrite(ptr -> items, aip, QUERY_SELECT_items)) {
  2109.          goto erret;
  2110.       }
  2111.    }
  2112.    if (! AsnCloseStruct(aip, atp, (Pointer)ptr)) {
  2113.       goto erret;
  2114.    }
  2115.    retval = TRUE;
  2116. erret:
  2117.    AsnUnlinkType(orig);       /* unlink local tree */
  2118.    return retval;
  2119. }
  2120. /**************************************************
  2121. *
  2122. *    QueryRelatedNew()
  2123. *
  2124. **************************************************/
  2125. NLM_EXTERN 
  2126. QueryRelatedPtr LIBCALL
  2127. QueryRelatedNew(void)
  2128. {
  2129.    QueryRelatedPtr ptr = MemNew((size_t) sizeof(QueryRelated));
  2130.    return ptr;
  2131. }
  2132. /**************************************************
  2133. *
  2134. *    QueryRelatedFree()
  2135. *
  2136. **************************************************/
  2137. NLM_EXTERN 
  2138. QueryRelatedPtr LIBCALL
  2139. QueryRelatedFree(QueryRelatedPtr ptr)
  2140. {
  2141.    if(ptr == NULL) {
  2142.       return NULL;
  2143.    }
  2144.    QueryCommandFree(ptr -> base);
  2145.    MemFree(ptr -> relation);
  2146.    MemFree(ptr -> db);
  2147.    Items_itemsFree(ptr -> Items_items);
  2148.    return MemFree(ptr);
  2149. }
  2150. /**************************************************
  2151. *
  2152. *    Items_itemsFree()
  2153. *
  2154. **************************************************/
  2155. static 
  2156. Items_itemsPtr LIBCALL
  2157. Items_itemsFree(ValNodePtr anp)
  2158. {
  2159.    Pointer pnt;
  2160.    if (anp == NULL) {
  2161.       return NULL;
  2162.    }
  2163.    pnt = anp->data.ptrvalue;
  2164.    switch (anp->choice)
  2165.    {
  2166.    default:
  2167.       break;
  2168.    case Items_items_items:
  2169.       ItemSetFree(anp -> data.ptrvalue);
  2170.       break;
  2171.    }
  2172.    return MemFree(anp);
  2173. }
  2174. /**************************************************
  2175. *
  2176. *    QueryRelatedAsnRead()
  2177. *
  2178. **************************************************/
  2179. NLM_EXTERN 
  2180. QueryRelatedPtr LIBCALL
  2181. QueryRelatedAsnRead(AsnIoPtr aip, AsnTypePtr orig)
  2182. {
  2183.    DataVal av;
  2184.    AsnTypePtr atp;
  2185.    Boolean isError = FALSE;
  2186.    AsnReadFunc func;
  2187.    QueryRelatedPtr ptr;
  2188.    if (! loaded)
  2189.    {
  2190.       if (! twebenvAsnLoad()) {
  2191.          return NULL;
  2192.       }
  2193.    }
  2194.    if (aip == NULL) {
  2195.       return NULL;
  2196.    }
  2197.    if (orig == NULL) {         /* QueryRelated ::= (self contained) */
  2198.       atp = AsnReadId(aip, amp, QUERY_RELATED);
  2199.    } else {
  2200.       atp = AsnLinkType(orig, QUERY_RELATED);
  2201.    }
  2202.    /* link in local tree */
  2203.    if (atp == NULL) {
  2204.       return NULL;
  2205.    }
  2206.    ptr = QueryRelatedNew();
  2207.    if (ptr == NULL) {
  2208.       goto erret;
  2209.    }
  2210.    if (AsnReadVal(aip, atp, &av) <= 0) { /* read the start struct */
  2211.       goto erret;
  2212.    }
  2213.    atp = AsnReadId(aip,amp, atp);
  2214.    func = NULL;
  2215.    if (atp == QUERY_RELATED_base) {
  2216.       ptr -> base = QueryCommandAsnRead(aip, atp);
  2217.       if (aip -> io_failure) {
  2218.          goto erret;
  2219.       }
  2220.       atp = AsnReadId(aip,amp, atp);
  2221.    }
  2222.    if (atp == QUERY_RELATED_relation) {
  2223.       if ( AsnReadVal(aip, atp, &av) <= 0) {
  2224.          goto erret;
  2225.       }
  2226.       ptr -> relation = av.ptrvalue;
  2227.       atp = AsnReadId(aip,amp, atp);
  2228.    }
  2229.    if (atp == QUERY_RELATED_db) {
  2230.       if ( AsnReadVal(aip, atp, &av) <= 0) {
  2231.          goto erret;
  2232.       }
  2233.       ptr -> db = av.ptrvalue;
  2234.       atp = AsnReadId(aip,amp, atp);
  2235.    }
  2236.    if (atp == QUERY_RELATED_items) {
  2237.       ptr -> Items_items = Items_itemsAsnRead(aip, atp);
  2238.       if (aip -> io_failure) {
  2239.          goto erret;
  2240.       }
  2241.       atp = AsnReadId(aip,amp, atp);
  2242.    }
  2243.    if (AsnReadVal(aip, atp, &av) <= 0) {
  2244.       goto erret;
  2245.    }
  2246.    /* end struct */
  2247. ret:
  2248.    AsnUnlinkType(orig);       /* unlink local tree */
  2249.    return ptr;
  2250. erret:
  2251.    aip -> io_failure = TRUE;
  2252.    ptr = QueryRelatedFree(ptr);
  2253.    goto ret;
  2254. }
  2255. /**************************************************
  2256. *
  2257. *    Items_itemsAsnRead()
  2258. *
  2259. **************************************************/
  2260. static 
  2261. Items_itemsPtr LIBCALL
  2262. Items_itemsAsnRead(AsnIoPtr aip, AsnTypePtr orig)
  2263. {
  2264.    DataVal av;
  2265.    AsnTypePtr atp;
  2266.    ValNodePtr anp;
  2267.    Uint1 choice;
  2268.    Boolean isError = FALSE;
  2269.    Boolean nullIsError = FALSE;
  2270.    AsnReadFunc func;
  2271.    if (! loaded)
  2272.    {
  2273.       if (! twebenvAsnLoad()) {
  2274.          return NULL;
  2275.       }
  2276.    }
  2277.    if (aip == NULL) {
  2278.       return NULL;
  2279.    }
  2280.    if (orig == NULL) {         /* Items_items ::= (self contained) */
  2281.       atp = AsnReadId(aip, amp, QUERY_RELATED_items);
  2282.    } else {
  2283.       atp = AsnLinkType(orig, QUERY_RELATED_items);    /* link in local tree */
  2284.    }
  2285.    if (atp == NULL) {
  2286.       return NULL;
  2287.    }
  2288.    anp = ValNodeNew(NULL);
  2289.    if (anp == NULL) {
  2290.       goto erret;
  2291.    }
  2292.    if (AsnReadVal(aip, atp, &av) <= 0) { /* read the CHOICE or OpenStruct value (nothing) */
  2293.       goto erret;
  2294.    }
  2295.    func = NULL;
  2296.    atp = AsnReadId(aip, amp, atp);  /* find the choice */
  2297.    if (atp == NULL) {
  2298.       goto erret;
  2299.    }
  2300.    if (atp == QUERY_RELATED_items_items) {
  2301.       choice = Items_items_items;
  2302.       func = (AsnReadFunc) ItemSetAsnRead;
  2303.    }
  2304.    else if (atp == QUERY_RELATED_items_itemCount) {
  2305.       choice = Items_items_itemCount;
  2306.       if (AsnReadVal(aip, atp, &av) <= 0) {
  2307.          goto erret;
  2308.       }
  2309.       anp->data.intvalue = av.intvalue;
  2310.    }
  2311.    anp->choice = choice;
  2312.    if (func != NULL)
  2313.    {
  2314.       anp->data.ptrvalue = (* func)(aip, atp);
  2315.       if (aip -> io_failure) goto erret;
  2316.       if (nullIsError && anp->data.ptrvalue == NULL) {
  2317.          goto erret;
  2318.       }
  2319.    }
  2320. ret:
  2321.    AsnUnlinkType(orig);       /* unlink local tree */
  2322.    return anp;
  2323. erret:
  2324.    anp = MemFree(anp);
  2325.    aip -> io_failure = TRUE;
  2326.    goto ret;
  2327. }
  2328. /**************************************************
  2329. *
  2330. *    QueryRelatedAsnWrite()
  2331. *
  2332. **************************************************/
  2333. NLM_EXTERN Boolean LIBCALL 
  2334. QueryRelatedAsnWrite(QueryRelatedPtr ptr, AsnIoPtr aip, AsnTypePtr orig)
  2335. {
  2336.    DataVal av;
  2337.    AsnTypePtr atp;
  2338.    Boolean retval = FALSE;
  2339.    if (! loaded)
  2340.    {
  2341.       if (! twebenvAsnLoad()) {
  2342.          return FALSE;
  2343.       }
  2344.    }
  2345.    if (aip == NULL) {
  2346.       return FALSE;
  2347.    }
  2348.    atp = AsnLinkType(orig, QUERY_RELATED);   /* link local tree */
  2349.    if (atp == NULL) {
  2350.       return FALSE;
  2351.    }
  2352.    if (ptr == NULL) { AsnNullValueMsg(aip, atp); goto erret; }
  2353.    if (! AsnOpenStruct(aip, atp, (Pointer) ptr)) {
  2354.       goto erret;
  2355.    }
  2356.    if (ptr -> base != NULL) {
  2357.       if ( ! QueryCommandAsnWrite(ptr -> base, aip, QUERY_RELATED_base)) {
  2358.          goto erret;
  2359.       }
  2360.    }
  2361.    if (ptr -> relation != NULL) {
  2362.       av.ptrvalue = ptr -> relation;
  2363.       retval = AsnWrite(aip, QUERY_RELATED_relation,  &av);
  2364.    }
  2365.    if (ptr -> db != NULL) {
  2366.       av.ptrvalue = ptr -> db;
  2367.       retval = AsnWrite(aip, QUERY_RELATED_db,  &av);
  2368.    }
  2369.    if (ptr -> Items_items != NULL) {
  2370.       if ( ! Items_itemsAsnWrite(ptr -> Items_items, aip, QUERY_RELATED_items)) {
  2371.          goto erret;
  2372.       }
  2373.    }
  2374.    if (! AsnCloseStruct(aip, atp, (Pointer)ptr)) {
  2375.       goto erret;
  2376.    }
  2377.    retval = TRUE;
  2378. erret:
  2379.    AsnUnlinkType(orig);       /* unlink local tree */
  2380.    return retval;
  2381. }
  2382. /**************************************************
  2383. *
  2384. *    Items_itemsAsnWrite()
  2385. *
  2386. **************************************************/
  2387. static Boolean LIBCALL 
  2388. Items_itemsAsnWrite(Items_itemsPtr anp, AsnIoPtr aip, AsnTypePtr orig)
  2389. {
  2390.    DataVal av;
  2391.    AsnTypePtr atp, writetype = NULL;
  2392.    Pointer pnt;
  2393.    AsnWriteFunc func = NULL;
  2394.    Boolean retval = FALSE;
  2395.    if (! loaded)
  2396.    {
  2397.       if (! twebenvAsnLoad())
  2398.       return FALSE;
  2399.    }
  2400.    if (aip == NULL)
  2401.    return FALSE;
  2402.    atp = AsnLinkType(orig, QUERY_RELATED_items);   /* link local tree */
  2403.    if (atp == NULL) {
  2404.       return FALSE;
  2405.    }
  2406.    if (anp == NULL) { AsnNullValueMsg(aip, atp); goto erret; }
  2407.    av.ptrvalue = (Pointer)anp;
  2408.    if (! AsnWriteChoice(aip, atp, (Int2)anp->choice, &av)) {
  2409.       goto erret;
  2410.    }
  2411.    pnt = anp->data.ptrvalue;
  2412.    switch (anp->choice)
  2413.    {
  2414.    case Items_items_items:
  2415.       writetype = QUERY_RELATED_items_items;
  2416.       func = (AsnWriteFunc) ItemSetAsnWrite;
  2417.       break;
  2418.    case Items_items_itemCount:
  2419.       av.intvalue = anp->data.intvalue;
  2420.       retval = AsnWrite(aip, QUERY_RELATED_items_itemCount, &av);
  2421.       break;
  2422.    }
  2423.    if (writetype != NULL) {
  2424.       retval = (* func)(pnt, aip, writetype);   /* write it out */
  2425.    }
  2426.    if (!retval) {
  2427.       goto erret;
  2428.    }
  2429.    retval = TRUE;
  2430. erret:
  2431.    AsnUnlinkType(orig);       /* unlink local tree */
  2432.    return retval;
  2433. }
  2434. /**************************************************
  2435. *
  2436. *    ItemSetNew()
  2437. *
  2438. **************************************************/
  2439. NLM_EXTERN 
  2440. ItemSetPtr LIBCALL
  2441. ItemSetNew(void)
  2442. {
  2443.    ItemSetPtr ptr = MemNew((size_t) sizeof(ItemSet));
  2444.    return ptr;
  2445. }
  2446. /**************************************************
  2447. *
  2448. *    ItemSetFree()
  2449. *
  2450. **************************************************/
  2451. NLM_EXTERN 
  2452. ItemSetPtr LIBCALL
  2453. ItemSetFree(ItemSetPtr ptr)
  2454. {
  2455.    if(ptr == NULL) {
  2456.       return NULL;
  2457.    }
  2458.    BSFree(ptr -> items);
  2459.    return MemFree(ptr);
  2460. }
  2461. /**************************************************
  2462. *
  2463. *    ItemSetAsnRead()
  2464. *
  2465. **************************************************/
  2466. NLM_EXTERN 
  2467. ItemSetPtr LIBCALL
  2468. ItemSetAsnRead(AsnIoPtr aip, AsnTypePtr orig)
  2469. {
  2470.    DataVal av;
  2471.    AsnTypePtr atp;
  2472.    Boolean isError = FALSE;
  2473.    AsnReadFunc func;
  2474.    ItemSetPtr ptr;
  2475.    if (! loaded)
  2476.    {
  2477.       if (! twebenvAsnLoad()) {
  2478.          return NULL;
  2479.       }
  2480.    }
  2481.    if (aip == NULL) {
  2482.       return NULL;
  2483.    }
  2484.    if (orig == NULL) {         /* ItemSet ::= (self contained) */
  2485.       atp = AsnReadId(aip, amp, ITEM_SET);
  2486.    } else {
  2487.       atp = AsnLinkType(orig, ITEM_SET);
  2488.    }
  2489.    /* link in local tree */
  2490.    if (atp == NULL) {
  2491.       return NULL;
  2492.    }
  2493.    ptr = ItemSetNew();
  2494.    if (ptr == NULL) {
  2495.       goto erret;
  2496.    }
  2497.    if (AsnReadVal(aip, atp, &av) <= 0) { /* read the start struct */
  2498.       goto erret;
  2499.    }
  2500.    atp = AsnReadId(aip,amp, atp);
  2501.    func = NULL;
  2502.    if (atp == ITEM_SET_items) {
  2503.       if ( AsnReadVal(aip, atp, &av) <= 0) {
  2504.          goto erret;
  2505.       }
  2506.       ptr -> items = av.ptrvalue;
  2507.       atp = AsnReadId(aip,amp, atp);
  2508.    }
  2509.    if (atp == ITEM_SET_count) {
  2510.       if ( AsnReadVal(aip, atp, &av) <= 0) {
  2511.          goto erret;
  2512.       }
  2513.       ptr -> count = av.intvalue;
  2514.       atp = AsnReadId(aip,amp, atp);
  2515.    }
  2516.    if (AsnReadVal(aip, atp, &av) <= 0) {
  2517.       goto erret;
  2518.    }
  2519.    /* end struct */
  2520. ret:
  2521.    AsnUnlinkType(orig);       /* unlink local tree */
  2522.    return ptr;
  2523. erret:
  2524.    aip -> io_failure = TRUE;
  2525.    ptr = ItemSetFree(ptr);
  2526.    goto ret;
  2527. }
  2528. /**************************************************
  2529. *
  2530. *    ItemSetAsnWrite()
  2531. *
  2532. **************************************************/
  2533. NLM_EXTERN Boolean LIBCALL 
  2534. ItemSetAsnWrite(ItemSetPtr ptr, AsnIoPtr aip, AsnTypePtr orig)
  2535. {
  2536.    DataVal av;
  2537.    AsnTypePtr atp;
  2538.    Boolean retval = FALSE;
  2539.    if (! loaded)
  2540.    {
  2541.       if (! twebenvAsnLoad()) {
  2542.          return FALSE;
  2543.       }
  2544.    }
  2545.    if (aip == NULL) {
  2546.       return FALSE;
  2547.    }
  2548.    atp = AsnLinkType(orig, ITEM_SET);   /* link local tree */
  2549.    if (atp == NULL) {
  2550.       return FALSE;
  2551.    }
  2552.    if (ptr == NULL) { AsnNullValueMsg(aip, atp); goto erret; }
  2553.    if (! AsnOpenStruct(aip, atp, (Pointer) ptr)) {
  2554.       goto erret;
  2555.    }
  2556.    if (ptr -> items != NULL) {
  2557.       av.ptrvalue = ptr -> items;
  2558.       retval = AsnWrite(aip, ITEM_SET_items,  &av);
  2559.    }
  2560.    av.intvalue = ptr -> count;
  2561.    retval = AsnWrite(aip, ITEM_SET_count,  &av);
  2562.    if (! AsnCloseStruct(aip, atp, (Pointer)ptr)) {
  2563.       goto erret;
  2564.    }
  2565.    retval = TRUE;
  2566. erret:
  2567.    AsnUnlinkType(orig);       /* unlink local tree */
  2568.    return retval;
  2569. }
  2570. /**************************************************
  2571. *
  2572. *    FullTimeNew()
  2573. *
  2574. **************************************************/
  2575. NLM_EXTERN 
  2576. FullTimePtr LIBCALL
  2577. FullTimeNew(void)
  2578. {
  2579.    FullTimePtr ptr = MemNew((size_t) sizeof(FullTime));
  2580.    return ptr;
  2581. }
  2582. /**************************************************
  2583. *
  2584. *    FullTimeFree()
  2585. *
  2586. **************************************************/
  2587. NLM_EXTERN 
  2588. FullTimePtr LIBCALL
  2589. FullTimeFree(FullTimePtr ptr)
  2590. {
  2591.    if(ptr == NULL) {
  2592.       return NULL;
  2593.    }
  2594.    return MemFree(ptr);
  2595. }
  2596. /**************************************************
  2597. *
  2598. *    FullTimeAsnRead()
  2599. *
  2600. **************************************************/
  2601. NLM_EXTERN 
  2602. FullTimePtr LIBCALL
  2603. FullTimeAsnRead(AsnIoPtr aip, AsnTypePtr orig)
  2604. {
  2605.    DataVal av;
  2606.    AsnTypePtr atp;
  2607.    Boolean isError = FALSE;
  2608.    AsnReadFunc func;
  2609.    FullTimePtr ptr;
  2610.    if (! loaded)
  2611.    {
  2612.       if (! twebenvAsnLoad()) {
  2613.          return NULL;
  2614.       }
  2615.    }
  2616.    if (aip == NULL) {
  2617.       return NULL;
  2618.    }
  2619.    if (orig == NULL) {         /* FullTime ::= (self contained) */
  2620.       atp = AsnReadId(aip, amp, FULL_TIME);
  2621.    } else {
  2622.       atp = AsnLinkType(orig, FULL_TIME);
  2623.    }
  2624.    /* link in local tree */
  2625.    if (atp == NULL) {
  2626.       return NULL;
  2627.    }
  2628.    ptr = FullTimeNew();
  2629.    if (ptr == NULL) {
  2630.       goto erret;
  2631.    }
  2632.    if (AsnReadVal(aip, atp, &av) <= 0) { /* read the start struct */
  2633.       goto erret;
  2634.    }
  2635.    atp = AsnReadId(aip,amp, atp);
  2636.    func = NULL;
  2637.    if (atp == FULL_TIME_year) {
  2638.       if ( AsnReadVal(aip, atp, &av) <= 0) {
  2639.          goto erret;
  2640.       }
  2641.       ptr -> year = av.intvalue;
  2642.       atp = AsnReadId(aip,amp, atp);
  2643.    }
  2644.    if (atp == FULL_TIME_month) {
  2645.       if ( AsnReadVal(aip, atp, &av) <= 0) {
  2646.          goto erret;
  2647.       }
  2648.       ptr -> month = av.intvalue;
  2649.       atp = AsnReadId(aip,amp, atp);
  2650.    }
  2651.    if (atp == FULL_TIME_day) {
  2652.       if ( AsnReadVal(aip, atp, &av) <= 0) {
  2653.          goto erret;
  2654.       }
  2655.       ptr -> day = av.intvalue;
  2656.       atp = AsnReadId(aip,amp, atp);
  2657.    }
  2658.    if (atp == FULL_TIME_hour) {
  2659.       if ( AsnReadVal(aip, atp, &av) <= 0) {
  2660.          goto erret;
  2661.       }
  2662.       ptr -> hour = av.intvalue;
  2663.       atp = AsnReadId(aip,amp, atp);
  2664.    }
  2665.    if (atp == FULL_TIME_minute) {
  2666.       if ( AsnReadVal(aip, atp, &av) <= 0) {
  2667.          goto erret;
  2668.       }
  2669.       ptr -> minute = av.intvalue;
  2670.       atp = AsnReadId(aip,amp, atp);
  2671.    }
  2672.    if (atp == FULL_TIME_second) {
  2673.       if ( AsnReadVal(aip, atp, &av) <= 0) {
  2674.          goto erret;
  2675.       }
  2676.       ptr -> second = av.intvalue;
  2677.       atp = AsnReadId(aip,amp, atp);
  2678.    }
  2679.    if (AsnReadVal(aip, atp, &av) <= 0) {
  2680.       goto erret;
  2681.    }
  2682.    /* end struct */
  2683. ret:
  2684.    AsnUnlinkType(orig);       /* unlink local tree */
  2685.    return ptr;
  2686. erret:
  2687.    aip -> io_failure = TRUE;
  2688.    ptr = FullTimeFree(ptr);
  2689.    goto ret;
  2690. }
  2691. /**************************************************
  2692. *
  2693. *    FullTimeAsnWrite()
  2694. *
  2695. **************************************************/
  2696. NLM_EXTERN Boolean LIBCALL 
  2697. FullTimeAsnWrite(FullTimePtr ptr, AsnIoPtr aip, AsnTypePtr orig)
  2698. {
  2699.    DataVal av;
  2700.    AsnTypePtr atp;
  2701.    Boolean retval = FALSE;
  2702.    if (! loaded)
  2703.    {
  2704.       if (! twebenvAsnLoad()) {
  2705.          return FALSE;
  2706.       }
  2707.    }
  2708.    if (aip == NULL) {
  2709.       return FALSE;
  2710.    }
  2711.    atp = AsnLinkType(orig, FULL_TIME);   /* link local tree */
  2712.    if (atp == NULL) {
  2713.       return FALSE;
  2714.    }
  2715.    if (ptr == NULL) { AsnNullValueMsg(aip, atp); goto erret; }
  2716.    if (! AsnOpenStruct(aip, atp, (Pointer) ptr)) {
  2717.       goto erret;
  2718.    }
  2719.    av.intvalue = ptr -> year;
  2720.    retval = AsnWrite(aip, FULL_TIME_year,  &av);
  2721.    av.intvalue = ptr -> month;
  2722.    retval = AsnWrite(aip, FULL_TIME_month,  &av);
  2723.    av.intvalue = ptr -> day;
  2724.    retval = AsnWrite(aip, FULL_TIME_day,  &av);
  2725.    av.intvalue = ptr -> hour;
  2726.    retval = AsnWrite(aip, FULL_TIME_hour,  &av);
  2727.    av.intvalue = ptr -> minute;
  2728.    retval = AsnWrite(aip, FULL_TIME_minute,  &av);
  2729.    av.intvalue = ptr -> second;
  2730.    retval = AsnWrite(aip, FULL_TIME_second,  &av);
  2731.    if (! AsnCloseStruct(aip, atp, (Pointer)ptr)) {
  2732.       goto erret;
  2733.    }
  2734.    retval = TRUE;
  2735. erret:
  2736.    AsnUnlinkType(orig);       /* unlink local tree */
  2737.    return retval;
  2738. }
  2739. /**************************************************
  2740. *
  2741. *    NameNew()
  2742. *
  2743. **************************************************/
  2744. NLM_EXTERN 
  2745. NamePtr LIBCALL
  2746. NameNew(void)
  2747. {
  2748.    NamePtr ptr = MemNew((size_t) sizeof(Name));
  2749.    return ptr;
  2750. }
  2751. /**************************************************
  2752. *
  2753. *    NameFree()
  2754. *
  2755. **************************************************/
  2756. NLM_EXTERN 
  2757. NamePtr LIBCALL
  2758. NameFree(NamePtr ptr)
  2759. {
  2760.    if(ptr == NULL) {
  2761.       return NULL;
  2762.    }
  2763.    MemFree(ptr -> name);
  2764.    MemFree(ptr -> description);
  2765.    return MemFree(ptr);
  2766. }
  2767. /**************************************************
  2768. *
  2769. *    NameAsnRead()
  2770. *
  2771. **************************************************/
  2772. NLM_EXTERN 
  2773. NamePtr LIBCALL
  2774. NameAsnRead(AsnIoPtr aip, AsnTypePtr orig)
  2775. {
  2776.    DataVal av;
  2777.    AsnTypePtr atp;
  2778.    Boolean isError = FALSE;
  2779.    AsnReadFunc func;
  2780.    NamePtr ptr;
  2781.    if (! loaded)
  2782.    {
  2783.       if (! twebenvAsnLoad()) {
  2784.          return NULL;
  2785.       }
  2786.    }
  2787.    if (aip == NULL) {
  2788.       return NULL;
  2789.    }
  2790.    if (orig == NULL) {         /* Name ::= (self contained) */
  2791.       atp = AsnReadId(aip, amp, NAME);
  2792.    } else {
  2793.       atp = AsnLinkType(orig, NAME);
  2794.    }
  2795.    /* link in local tree */
  2796.    if (atp == NULL) {
  2797.       return NULL;
  2798.    }
  2799.    ptr = NameNew();
  2800.    if (ptr == NULL) {
  2801.       goto erret;
  2802.    }
  2803.    if (AsnReadVal(aip, atp, &av) <= 0) { /* read the start struct */
  2804.       goto erret;
  2805.    }
  2806.    atp = AsnReadId(aip,amp, atp);
  2807.    func = NULL;
  2808.    if (atp == NAME_name) {
  2809.       if ( AsnReadVal(aip, atp, &av) <= 0) {
  2810.          goto erret;
  2811.       }
  2812.       ptr -> name = av.ptrvalue;
  2813.       atp = AsnReadId(aip,amp, atp);
  2814.    }
  2815.    if (atp == NAME_description) {
  2816.       if ( AsnReadVal(aip, atp, &av) <= 0) {
  2817.          goto erret;
  2818.       }
  2819.       ptr -> description = av.ptrvalue;
  2820.       atp = AsnReadId(aip,amp, atp);
  2821.    }
  2822.    if (AsnReadVal(aip, atp, &av) <= 0) {
  2823.       goto erret;
  2824.    }
  2825.    /* end struct */
  2826. ret:
  2827.    AsnUnlinkType(orig);       /* unlink local tree */
  2828.    return ptr;
  2829. erret:
  2830.    aip -> io_failure = TRUE;
  2831.    ptr = NameFree(ptr);
  2832.    goto ret;
  2833. }
  2834. /**************************************************
  2835. *
  2836. *    NameAsnWrite()
  2837. *
  2838. **************************************************/
  2839. NLM_EXTERN Boolean LIBCALL 
  2840. NameAsnWrite(NamePtr ptr, AsnIoPtr aip, AsnTypePtr orig)
  2841. {
  2842.    DataVal av;
  2843.    AsnTypePtr atp;
  2844.    Boolean retval = FALSE;
  2845.    if (! loaded)
  2846.    {
  2847.       if (! twebenvAsnLoad()) {
  2848.          return FALSE;
  2849.       }
  2850.    }
  2851.    if (aip == NULL) {
  2852.       return FALSE;
  2853.    }
  2854.    atp = AsnLinkType(orig, NAME);   /* link local tree */
  2855.    if (atp == NULL) {
  2856.       return FALSE;
  2857.    }
  2858.    if (ptr == NULL) { AsnNullValueMsg(aip, atp); goto erret; }
  2859.    if (! AsnOpenStruct(aip, atp, (Pointer) ptr)) {
  2860.       goto erret;
  2861.    }
  2862.    if (ptr -> name != NULL) {
  2863.       av.ptrvalue = ptr -> name;
  2864.       retval = AsnWrite(aip, NAME_name,  &av);
  2865.    }
  2866.    if (ptr -> description != NULL) {
  2867.       av.ptrvalue = ptr -> description;
  2868.       retval = AsnWrite(aip, NAME_description,  &av);
  2869.    }
  2870.    if (! AsnCloseStruct(aip, atp, (Pointer)ptr)) {
  2871.       goto erret;
  2872.    }
  2873.    retval = TRUE;
  2874. erret:
  2875.    AsnUnlinkType(orig);       /* unlink local tree */
  2876.    return retval;
  2877. }
  2878. #endif