home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / CSAPE32.ARJ / SOURCE / CSSRC / MENUDEST.C < prev    next >
C/C++ Source or Header  |  1990-12-19  |  2KB  |  96 lines

  1. /*
  2.       menudest.c
  3.  
  4.     % menu_Destroy
  5.  
  6.     Menu destruction routine.
  7.  
  8.     C-scape 3.2
  9.     Copyright (c) 1986, 1987, by Oakland Group, Inc.
  10.     ALL RIGHTS RESERVED.
  11.  
  12.     Revision History:
  13.     -----------------
  14.      6/24/88 jmd    converted to new xarray/iarray calls
  15.      8/16/88 jmd    added calls to omalloc
  16.      8/20/88 jmd    add list of screen objects
  17.      9/19/88 jmd    added field name support
  18.     10/05/88 jmd    added sedptr
  19.     11/05/88 jmd    renamed to menu_Destroy
  20.      4/29/89 jdc    added and fixed ofree(CSA_VARBLOCK, menu->varblock)
  21.      5/29/89 jdc    added varnamea for LNF
  22.  
  23.      3/28/90 jmd    ansi-fied
  24.     12/18/90 jdc    fixed realloced menu->fa->array == NULL bug
  25.     12/19/90 jdc    fixed realloced menu->token_buf == NULL free
  26. */
  27.  
  28. #include "menu.h"
  29.  
  30. void menu_Destroy(menu_type menu)
  31. /*
  32.     DESCRIPTION
  33.     This function closes a menu and frees the memory taken up by it.
  34.     You must not use the menu after it has been closed.
  35.     RETURNS
  36.     There is no return value.
  37. */
  38. {
  39.     int i;
  40.     field_type field;
  41.  
  42.     cs_Assert(menu_Ok(menu), CS_M_C_MENU, 0);
  43.  
  44.     menu_Flush(menu);
  45.  
  46.      for (i = 0; i < menu->fieldcount; i++) {
  47.         if ((field = menu_GetField(menu, i)) != NULL) {
  48.             field_Close(field);
  49.         }
  50.     }
  51.  
  52.     tb_Close(menu->textbuf);
  53.  
  54.     /* Insurance against closed menus. */
  55.     menu->rowcount = menu->colcount = -555;
  56.     menu->fieldcount = -555;
  57.  
  58.     ia_Close(menu->fgrid);
  59.     xa_Close(menu->fa);
  60.  
  61.     if (menu->boba != NULL) {
  62.         ia_Close(menu->boba);
  63.     }
  64.  
  65.     if (menu->namelist != NULL) {
  66.         oslist_Close(menu->namelist);
  67.     }
  68.  
  69.     if (menu->dptrlist != NULL) {
  70.         oslist_Close(menu->dptrlist);
  71.     }
  72.  
  73.     if (menu->funcnamea != NULL) {
  74.         ia_Close(menu->funcnamea);
  75.     }
  76.  
  77.     if (menu->functypea != NULL) {
  78.         ia_Close(menu->functypea);
  79.     }
  80.  
  81.     if (menu->varnamea != NULL) {
  82.         ia_Close(menu->varnamea);
  83.     }
  84.  
  85.     if (menu->varblock != NULL) {
  86.         ofree(CSA_VARBLOCK, (VOID *) menu->varblock);
  87.     }
  88.  
  89.     if (menu->token_buf != NULL) {
  90.         ofree(CSA_TOKBUF, (VOID *) menu->token_buf);
  91.     }
  92.  
  93.     ofree(CSA_MENU, (VOID *) menu);
  94. }
  95.  
  96.