DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ T v

⟦c24c8203b⟧ TextFile

    Length: 1384 (0x568)
    Types: TextFile
    Names: »vardeclr.c«

Derivation

└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
    └─ ⟦this⟧ »EUUGD11/euug-87hel/sec1/graph/vardeclr.c« 

TextFile

/*
 * Copyright (C) 1986   Alan Kent
 *
 * Permission is granted to freely distribute part or
 * all of this code as long as it is not for profit
 * and this message is retained in the code.
 *
 * No resposibility is taken for any damage or incorect
 * results this program generates.
 * 
 */


#include <stdio.h>
#include <math.h>
#include "graph.h"


extern double eval ();


#define MAX_DEC		50


static struct declare_st {
    char *name;
    double value;
} dec [ MAX_DEC ];

static int num_dec;



pdef_var ()
{
    var_declare ( "infinity" , HUGE );
}



var_declare ( name , value )
char *name;
double value;
{
    int i;

    for ( i = 0; i < num_dec; i++ ) {
	if ( strcmp ( name , dec[i].name ) == 0 ) {
	    dec[i].value = value;
	    return;
	}
    }
    if ( num_dec >= MAX_DEC )
	abort ( "Internal array overflow - too many variables declared" );
    dec[num_dec].name = name;
    dec[num_dec].value = value;
    num_dec++;
}




double
var_lookup ( name )
char *name;
{
    int i;

    for ( i = 0; i < num_dec; i++ ) {
	if ( strcmp ( dec[i].name , name ) == 0 ) {
	    return ( dec[i].value );
	}
    }
    abort ( "Undefined variable '%s' referenced" , name );
    return ( 0.0 );
}



is_var_ident ( name )
char *name;
{
    int i;

    for ( i = 0; i < num_dec; i++ ) {
	if ( strcmp ( dec[i].name , name ) == 0 ) {
	    return ( 1 );
	}
    }
    return ( 0 );
}