Sindbad~EG File Manager
#ifndef vaux_h
#define vaux_h
typedef struct { unsigned scope:2; /* UNIVERSAL, EXISTENTIAL, BOUND, HALFBOUND */
unsigned multorder: 1; /* use the first variable it depends on to
decide its multiplicative order */
unsigned type: 8; /* #-defined values in terms.h */
unsigned long dp; /* which other variables it depends on;
bit i tells if it depends on varlist[i] */
term locus; /* term at which this variable is bound,
if its .scope field is BOUND */
int linenumber; /* line at which this variable was
introduced--this field needed by undo;
gets value 0 for variables in the original
problem; set by vaux */
double realpart; /* numerical value of the variable, used in graphing */
double imagpart; /* used for variables of type DCOMPLEX */
char name[4]; /* print name of subscripted variable */
} varinf;
/*______________________________________________________________________*/
typedef struct dl { double data;
struct dl *next;
} dlist; /* linked list of doubles */
/*______________________________________________________________________*/
/* Parameters are used in graph and in symbol documents (for solving
equations); the same parameters apply to all graphs in a graph document. */
typedef struct
{ double *addr; /* address of the value */
double increment; /* how much to change it by when +/- is pressed */
double rangemin; /* slider range */
double rangemax;
int index; /* varlist[index] is the term corresponding to this parameter */
unsigned functor;
int linenumber; /* value of currentline when initialize_parameter
creates this parameter; used by undo */
char *name; /* be sure to allocate space */
dlist *history; /* past values pushed here when 'draw' is called,
if any parameters have changed */
} parameter;
/*__________________________________________________________________*/
typedef struct
{ term *varlist;
int nvariables;
int maxvariables;
int eigenvariable;
int currentline;
parameter *parameters;
int nparameters;
int activeparameter;
int maxparameters;
varinf *varinfo;
int nextdefn;
defn *defns;
int maxdefns;
int gensym_counter;
int cofi_counter;
} vardata; /* These are the data manipulated by var.DLL */
int vaux(term);
term getnewvar(term t,char *data);
term getnewintvar(term x, char *s);
term getnewboundintvar(term x, char *s);
term index_variable(term t);
term constant_of_integration(term s,term x);
void initialize_parameter(int,int,double);
int get_index(term);
int get_eigenindex(void);
term get_eigenvariable(void);
int get_nvariables(void);
void set_nvariables(int);
int get_nparameters(void);
void set_nparameters(int);
void decrement_nparameters(void);
void set_currentline(int);
void increment_currentline(void);
void decrement_currentline(void);
int get_currentline(void);
parameter *get_parameters(void);
int isparameter(term);
void set_eigenvariable(int);
void swapvars(int, int);
term *get_varlist(void);
varinf *get_varinfo(void);
term getvar(term, char *);
int let_aux(term, term,int);
int let(term,term);
int reverse_let(term,term);
int let_permanent(term,term);
int get_nextdefn(void);
void set_nextdefn(int);
defn get_defn(int);
int undo_letdefns(void);
defn *get_defns(void);
term gensym(char);
int is_letdefined(term, term *);
#define MAXATOMS 16
#define MAXFUNCTORS 16
#define MAXVARIABLES (8*sizeof(long)) /* maximum number of variables on
which other variables can depend */
/* the total number of variables has no limit, but dependency information
is stored in a long, so nothing can depend on variables stored in varlist
past MAXVARIABLES */
void push_parameters(void);
void clear_parameter_history(void);
void undo_parameters(int);
unsigned short string_to_functor( char *, int); /* one or more characters */
unsigned short string_to_atom(char *);
void set_cofi_index(int);
int get_cofi_index(void);
int deletevar(term);
term firstdepends(term x); /* return first variable on which variable x depends */
unsigned short bound_in(term,term);
void set_valuepointers(term *t);
void set_dependency_info(term u, term t);
int contains_free(term, unsigned short);
void bindvar(term);
void init_varDLL(vardata *pData);
void unbindvar(term);
term getnewboundvar(term x, char *s);
void invent_new_independent_variable(term t, int problemtype);
#endif
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists