home *** CD-ROM | disk | FTP | other *** search
/ Carousel Volume 2 #1 / carousel.iso / mactosh / code / microema.sit / src / evar.h < prev    next >
Encoding:
C/C++ Source or Header  |  1989-06-09  |  5.8 KB  |  204 lines  |  [TEXT/Earl]

  1. /*    EVAR.H: Environment and user variable definitions
  2.         for MicroEMACS
  3.  
  4.         written 1986 by Daniel Lawrence
  5. */
  6.  
  7. /*    structure to hold user variables and their definitions    */
  8.  
  9. typedef struct UVAR {
  10.     char u_name[NVSIZE + 1];        /* name of user variable */
  11.     char *u_value;                /* value (string) */
  12. } UVAR;
  13.  
  14. /*    current user variables (This structure will probably change)    */
  15.  
  16. #define MAXVARS     255
  17.  
  18. UVAR uv[MAXVARS + 1];    /* user variables */
  19.  
  20. /*    list of recognized environment variables    */
  21.  
  22. char *envars[] = {
  23.     "fillcol",        /* current fill column */
  24.     "pagelen",        /* number of lines used by editor */
  25.     "curcol",        /* current column pos of cursor */
  26.     "curline",        /* current line in file */
  27.     "ram",            /* ram in use by malloc */
  28.     "flicker",        /* flicker supression */
  29.     "curwidth",        /* current screen width */
  30.     "cbufname",        /* current buffer name */
  31.     "cfname",        /* current file name */
  32.     "sres",         /* current screen resolution */
  33.     "debug",        /* macro debugging */
  34.     "status",        /* returns the status of the last command */
  35.     "palette",        /* current palette string */
  36.     "asave",        /* # of chars between auto-saves */
  37.     "acount",        /* # of chars until next auto-save */
  38.     "lastkey",        /* last keyboard char struck */
  39.     "curchar",        /* current character under the cursor */
  40.     "discmd",        /* display commands on command line */
  41.     "version",        /* current version number */
  42.     "progname",        /* returns current prog name - "MicroEMACS" */
  43.     "seed",         /* current random number seed */
  44.     "disinp",        /* display command line input characters */
  45.     "wline",        /* # of lines in current window */
  46.     "cwline",        /* current screen line in window */
  47.     "target",        /* target for line moves */
  48.     "search",        /* search pattern */
  49.     "replace",        /* replacement pattern */
  50.     "match",        /* last matched magic pattern */
  51.     "kill",         /* kill buffer (read only) */
  52.     "cmode",        /* mode of current buffer */
  53.     "gmode",        /* global modes */
  54.     "tpause",        /* length to pause for paren matching */
  55.     "pending",        /* type ahead pending flag */
  56.     "lwidth",        /* width of current line */
  57.     "line",         /* text of current line */
  58.     "gflags",        /* global internal emacs flags */
  59.     "rval",         /* child process return value */
  60.     "tags",         /* name of tags file */
  61. };
  62.  
  63. #define NEVARS    sizeof(envars) / sizeof(char *)
  64.  
  65. /*    and its preprocesor definitions     */
  66.  
  67. #define EVFILLCOL    0
  68. #define EVPAGELEN    1
  69. #define EVCURCOL    2
  70. #define EVCURLINE    3
  71. #define EVRAM        4
  72. #define EVFLICKER    5
  73. #define EVCURWIDTH    6
  74. #define EVCBUFNAME    7
  75. #define EVCFNAME    8
  76. #define EVSRES        9
  77. #define EVDEBUG     10
  78. #define EVSTATUS    11
  79. #define EVPALETTE    12
  80. #define EVASAVE     13
  81. #define EVACOUNT    14
  82. #define EVLASTKEY    15
  83. #define EVCURCHAR    16
  84. #define EVDISCMD    17
  85. #define EVVERSION    18
  86. #define EVPROGNAME    19
  87. #define EVSEED        20
  88. #define EVDISINP    21
  89. #define EVWLINE     22
  90. #define EVCWLINE    23
  91. #define EVTARGET    24
  92. #define EVSEARCH    25
  93. #define EVREPLACE    26
  94. #define EVMATCH     27
  95. #define EVKILL        28
  96. #define EVCMODE     29
  97. #define EVGMODE     30
  98. #define EVTPAUSE    31
  99. #define EVPENDING    32
  100. #define EVLWIDTH    33
  101. #define EVLINE        34
  102. #define EVGFLAGS    35
  103. #define EVRVAL        36
  104. #define EVTVAL        37
  105. #define EVTABVAL    38
  106.  
  107. /*    list of recognized user functions    */
  108.  
  109. typedef struct UFUNC {
  110.     char *f_name;    /* name of function */
  111.     int f_type;    /* 1 = monamic, 2 = dynamic */
  112. } UFUNC;
  113.  
  114. #define NILNAMIC    0
  115. #define MONAMIC     1
  116. #define DYNAMIC     2
  117. #define TRINAMIC    3
  118.  
  119. UFUNC funcs[] = {
  120.     "add", DYNAMIC,     /* add two numbers together */
  121.     "sub", DYNAMIC,     /* subtraction */
  122.     "tim", DYNAMIC,     /* multiplication */
  123.     "div", DYNAMIC,     /* division */
  124.     "mod", DYNAMIC,     /* mod */
  125.     "neg", MONAMIC,     /* negate */
  126.     "cat", DYNAMIC,     /* concatinate string */
  127.     "lef", DYNAMIC,     /* left string(string, len) */
  128.     "rig", DYNAMIC,     /* right string(string, pos) */
  129.     "mid", TRINAMIC,    /* mid string(string, pos, len) */
  130.     "not", MONAMIC,     /* logical not */
  131.     "equ", DYNAMIC,     /* logical equality check */
  132.     "les", DYNAMIC,     /* logical less than */
  133.     "gre", DYNAMIC,     /* logical greater than */
  134.     "seq", DYNAMIC,     /* string logical equality check */
  135.     "sle", DYNAMIC,     /* string logical less than */
  136.     "sgr", DYNAMIC,     /* string logical greater than */
  137.     "ind", MONAMIC,     /* evaluate indirect value */
  138.     "and", DYNAMIC,     /* logical and */
  139.     "or",  DYNAMIC,     /* logical or */
  140.     "len", MONAMIC,     /* string length */
  141.     "upp", MONAMIC,     /* uppercase string */
  142.     "low", MONAMIC,     /* lower case string */
  143.     "tru", MONAMIC,     /* Truth of the universe logical test */
  144.     "asc", MONAMIC,     /* char to integer conversion */
  145.     "chr", MONAMIC,     /* integer to char conversion */
  146.     "gtk", NILNAMIC,    /* get 1 charater */
  147.     "rnd", MONAMIC,     /* get a random number */
  148.     "abs", MONAMIC,     /* absolute value of a number */
  149.     "sin", DYNAMIC,     /* find the index of one string in another */
  150.     "env", MONAMIC,     /* retrieve a system environment var */
  151.     "bin", MONAMIC,     /* loopup what function name is bound to a key */
  152.     "exi", MONAMIC,     /* check if a file exists */
  153.     "fin", MONAMIC,     /* look for a file on the path... */
  154.     "ban", DYNAMIC,     /* bitwise and     9-10-87  jwm */
  155.     "bor", DYNAMIC,     /* bitwise or     9-10-87  jwm */
  156.     "bxo", DYNAMIC,     /* bitwise xor     9-10-87  jwm */
  157.     "bno", MONAMIC,     /* bitwise not */
  158.     "xla", TRINAMIC,    /* XLATE character string translation */
  159. };
  160.  
  161. #define NFUNCS    sizeof(funcs) / sizeof(UFUNC)
  162.  
  163. /*    and its preprocesor definitions     */
  164.  
  165. #define UFADD        0
  166. #define UFSUB        1
  167. #define UFTIMES     2
  168. #define UFDIV        3
  169. #define UFMOD        4
  170. #define UFNEG        5
  171. #define UFCAT        6
  172. #define UFLEFT        7
  173. #define UFRIGHT     8
  174. #define UFMID        9
  175. #define UFNOT        10
  176. #define UFEQUAL     11
  177. #define UFLESS        12
  178. #define UFGREATER    13
  179. #define UFSEQUAL    14
  180. #define UFSLESS     15
  181. #define UFSGREAT    16
  182. #define UFIND        17
  183. #define UFAND        18
  184. #define UFOR        19
  185. #define UFLENGTH    20
  186. #define UFUPPER     21
  187. #define UFLOWER     22
  188. #define UFTRUTH     23
  189. #define UFASCII     24
  190. #define UFCHR        25
  191. #define UFGTKEY     26
  192. #define UFRND        27
  193. #define UFABS        28
  194. #define UFSINDEX    29
  195. #define UFENV        30
  196. #define UFBIND        31
  197. #define UFEXIST     32
  198. #define UFFIND        33
  199. #define UFBAND        34
  200. #define UFBOR        35
  201. #define UFBXOR        36
  202. #define UFBNOT        37
  203. #define UFXLATE     38
  204.