home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume8 / graph+ / part03 / tabdeclr.c < prev    next >
Encoding:
C/C++ Source or Header  |  1987-03-01  |  1.4 KB  |  95 lines

  1. /*
  2.  * Copyright (C) 1986   Alan Kent
  3.  *
  4.  * Permission is granted to freely distribute part or
  5.  * all of this code as long as it is not for profit
  6.  * and this message is retained in the code.
  7.  *
  8.  * No resposibility is taken for any damage or incorect
  9.  * results this program generates.
  10.  * 
  11.  */
  12.  
  13.  
  14. #include <stdio.h>
  15. #include "graph.h"
  16.  
  17.  
  18. #define MAX_DEC        50
  19.  
  20.  
  21. extern table_st *copy_of_table ();
  22.  
  23.  
  24. static struct declare_st {
  25.     char *name;
  26.     table_st *table;
  27. } dec [ MAX_DEC ];
  28.  
  29. static int num_dec;
  30.  
  31.  
  32.  
  33. pdef_tab ()
  34. {
  35.     return;
  36. }
  37.  
  38.  
  39.  
  40. tab_declare ( name , table )
  41. char *name;
  42. table_st *table;
  43. {
  44.     int i;
  45.  
  46.     for ( i = 0; i < num_dec; i++ ) {
  47.     if ( strcmp ( name , dec[i].name ) == 0 ) {
  48.         free_table ( dec[i].table );
  49.         dec[i].table = table;
  50.         return;
  51.     }
  52.     }
  53.     if ( num_dec >= MAX_DEC )
  54.     abort ( "Internal array overflow - too many tables declared" );
  55.     dec[num_dec].name = name;
  56.     dec[num_dec].table = table;
  57.     num_dec++;
  58. }
  59.  
  60.  
  61.  
  62.  
  63. table_st *
  64. tab_lookup ( name )
  65. char *name;
  66. {
  67.     int i , cols;
  68.     table_st *table , *ftp , *ttp , *p;
  69.  
  70.     for ( i = 0; i < num_dec; i++ ) {
  71.     if ( strcmp ( dec[i].name , name ) == 0 ) {
  72.         return ( copy_of_table ( dec[i].table ) );
  73.     }
  74.     }
  75.     abort ( "Undefined table '%s' referenced" , name );
  76.     return ( NULL );
  77. }
  78.  
  79.  
  80.  
  81. is_tab_ident ( name )
  82. char *name;
  83. {
  84.     int i;
  85.  
  86.     for ( i = 0; i < num_dec; i++ ) {
  87.     if ( strcmp ( dec[i].name , name ) == 0 ) {
  88.         return ( 1 );
  89.     }
  90.     }
  91.     return ( 0 );
  92. }
  93.  
  94.  
  95.