Sindbad~EG File Manager
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 */
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 maxparameters;
varinf *varinfo;
int nextdefn;
defn *defns;
int maxdefns;
} vardata; /* These are the data manipulated by var.DLL */
MEXPORT_VAR int vaux(term);
MEXPORT_VAR term getnewvar(term t,char *data);
MEXPORT_VAR term getnewintvar(term x, char *s);
MEXPORT_VAR term getnewboundintvar(term x, char *s);
MEXPORT_VAR term index_variable(term t);
MEXPORT_VAR term constant_of_integration(term s,term x);
MEXPORT_VAR void initialize_parameter(int,int);
MEXPORT_VAR int get_index(term);
MEXPORT_VAR int get_eigenindex(void);
MEXPORT_VAR term get_eigenvariable(void);
MEXPORT_VAR int get_nvariables(void);
MEXPORT_VAR void set_nvariables(int);
MEXPORT_VAR int get_nparameters(void);
MEXPORT_VAR void set_nparameters(int);
MEXPORT_VAR void decrement_nparameters(void);
MEXPORT_VAR void set_currentline(int);
MEXPORT_VAR void increment_currentline(void);
MEXPORT_VAR void decrement_currentline(void);
MEXPORT_VAR int get_currentline(void);
MEXPORT_VAR parameter *get_parameters(void);
MEXPORT_VAR int isparameter(term);
MEXPORT_VAR void set_eigenvariable(int);
MEXPORT_VAR void swapvars(int, int);
MEXPORT_VAR term *get_varlist(void);
MEXPORT_VAR varinf *get_varinfo(void);
MEXPORT_VAR term getvar(term, char *);
MEXPORT_VAR int let_aux(term, term,int);
MEXPORT_VAR int let(term,term);
MEXPORT_VAR int reverse_let(term,term);
MEXPORT_VAR int let_permanent(term,term);
MEXPORT_VAR int get_nextdefn(void);
MEXPORT_VAR void set_nextdefn(int);
MEXPORT_VAR defn get_defn(int);
MEXPORT_VAR int undo_letdefns(void);
MEXPORT_VAR defn *get_defns(void);
MEXPORT_VAR term gensym(char);
MEXPORT_VAR 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 */
MEXPORT_VAR void push_parameters(void);
MEXPORT_VAR void clear_parameter_history(void);
MEXPORT_VAR void undo_parameters(int);
MEXPORT_VAR unsigned short string_to_functor( char *, int); /* one or more characters */
MEXPORT_VAR unsigned short string_to_atom(char *);
MEXPORT_VAR void set_cofi_index(int);
MEXPORT_VAR int get_cofi_index(void);
MEXPORT_VAR int deletevar(term);
MEXPORT_VAR term firstdepends(term x); /* return first variable on which variable x depends */
MEXPORT_VAR unsigned short bound_in(term,term);
MEXPORT_VAR void set_valuepointers(term *t);
MEXPORT_VAR void set_dependency_info(term u, term t);
MEXPORT_VAR int contains_free(term, unsigned short);
MEXPORT_VAR void bindvar(term);
MEXPORT_VAR void unbindvar(term);
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists