home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume8 / graph+ / part03 / vardeclr.c < prev   
Encoding:
C/C++ Source or Header  |  1987-03-01  |  1.4 KB  |  94 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 <math.h>
  16. #include "graph.h"
  17.  
  18.  
  19. extern double eval ();
  20.  
  21.  
  22. #define MAX_DEC        50
  23.  
  24.  
  25. static struct declare_st {
  26.     char *name;
  27.     double value;
  28. } dec [ MAX_DEC ];
  29.  
  30. static int num_dec;
  31.  
  32.  
  33.  
  34. pdef_var ()
  35. {
  36.     var_declare ( "infinity" , HUGE );
  37. }
  38.  
  39.  
  40.  
  41. var_declare ( name , value )
  42. char *name;
  43. double value;
  44. {
  45.     int i;
  46.  
  47.     for ( i = 0; i < num_dec; i++ ) {
  48.     if ( strcmp ( name , dec[i].name ) == 0 ) {
  49.         dec[i].value = value;
  50.         return;
  51.     }
  52.     }
  53.     if ( num_dec >= MAX_DEC )
  54.     abort ( "Internal array overflow - too many variables declared" );
  55.     dec[num_dec].name = name;
  56.     dec[num_dec].value = value;
  57.     num_dec++;
  58. }
  59.  
  60.  
  61.  
  62.  
  63. double
  64. var_lookup ( name )
  65. char *name;
  66. {
  67.     int i;
  68.  
  69.     for ( i = 0; i < num_dec; i++ ) {
  70.     if ( strcmp ( dec[i].name , name ) == 0 ) {
  71.         return ( dec[i].value );
  72.     }
  73.     }
  74.     abort ( "Undefined variable '%s' referenced" , name );
  75.     return ( 0.0 );
  76. }
  77.  
  78.  
  79.  
  80. is_var_ident ( name )
  81. char *name;
  82. {
  83.     int i;
  84.  
  85.     for ( i = 0; i < num_dec; i++ ) {
  86.     if ( strcmp ( dec[i].name , name ) == 0 ) {
  87.         return ( 1 );
  88.     }
  89.     }
  90.     return ( 0 );
  91. }
  92.  
  93.  
  94.