home *** CD-ROM | disk | FTP | other *** search
- #ifndef _var_h
- #define _var_h
-
- enum var_types {
- vart_null, /* Temporary type for un-assigned variables */
- vart_integer, /* 32 bit signed Integer type */
- vart_real, /* 32 bit signed floating point value */
- vart_string, /* NULL terminated string value */
- vart_pointer, /* Pointer to another variable */
- vart_function, /* Function descriptor on an execution thread */
- vart_osvar /* An OS variable */
- };
-
- typedef struct var_str *var;
- typedef struct varlist_str *varlist;
-
- typedef struct var_str {
- var link;
- char type;
- char *name;
- union {
- void *nothing;
- int integer;
- float real;
- char *string;
- void *function;
- void *thread;
- void *stream;
- } value;
- } var_str;
-
- typedef struct varlist_str {
- var head;
- var tail;
- varlist back; /* Link back to other variable chains within scope */
- } varlist_str;
-
-
- int var_extract(char *s);
-
- var var_create_null(varlist list, char *name, int n);
- var var_create_integer(varlist list, char *name, int n, int value);
- var var_create_string(varlist list, char *name, int n, char *value);
- var var_create_osvar(varlist list, char *name, int n, char *value);
- var var_create_function(varlist list, char *name, int n, void *value);
-
- void var_init_osvars(varlist list, int type, char *var);
-
- var var_lookup(varlist list, char *s, int n);
- int var_output(var vp, char *buf, int len);
- int var_translate(varlist list, char *inbuf, int incnt, char *outbuf, int outcnt);
- void var_dispose(varlist list, var vp);
-
- varlist varlist_create(varlist list);
- void varlist_dispose(varlist list);
-
- #endif
-