|
|
1.1 ! root 1: /*************************************************************************** ! 2: * This program is Copyright (C) 1986, 1987, 1988 by Jonathan Payne. JOVE * ! 3: * is provided to you without charge, and with no warranty. You may give * ! 4: * away copies of JOVE, including sources, provided that this notice is * ! 5: * included in all the files. * ! 6: ***************************************************************************/ ! 7: ! 8: #define FUNCTION 1 ! 9: #define VARIABLE 2 ! 10: #define MACRO 3 ! 11: #define KEYMAP 4 ! 12: #ifdef MAC ! 13: # define BUFFER 6 /* menus can point to buffers, too */ ! 14: # define STRING 7 /* a menu string or divider */ ! 15: #endif ! 16: ! 17: #define TYPEMASK 07 ! 18: #define obj_type(o) ((o)->Type & TYPEMASK) ! 19: #define MAJOR_MODE 010 ! 20: #define MINOR_MODE 020 ! 21: #define MODIFIER 040 ! 22: #define MODFUNC (FUNCTION|MODIFIER) ! 23: #define DefMajor(x) (FUNCTION|MAJOR_MODE|((x) << 8)) ! 24: #define DefMinor(x) (FUNCTION|MINOR_MODE|((x) << 8)) ! 25: ! 26: struct macro { ! 27: int Type; /* in this case a macro */ ! 28: char *Name; /* name is always second ... */ ! 29: int m_len, /* length of macro so we can use ^@ */ ! 30: m_buflen, /* memory allocated for it */ ! 31: m_flags; ! 32: char *m_body; /* actual body of the macro */ ! 33: struct macro ! 34: *m_nextm; ! 35: }; ! 36: ! 37: struct cmd { ! 38: int Type; ! 39: char *Name; ! 40: void (*c_proc) proto((void)); ! 41: #ifdef MAC ! 42: char c_map; /* prefix map for About Jove... */ ! 43: char c_key; /* key binding for About Jove... */ ! 44: #endif ! 45: }; ! 46: ! 47: typedef struct data_obj { ! 48: int Type; ! 49: char *Name; ! 50: } data_obj; /* points to cmd, macro, keymap or variable */ ! 51: ! 52: extern data_obj *LastCmd; /* last command invoked */ ! 53: ! 54: extern const struct cmd commands[]; ! 55: extern struct macro *macros; ! 56: ! 57: extern struct macro ! 58: *macstack[], ! 59: KeyMacro; ! 60: ! 61: extern const struct cmd ! 62: *FindCmd proto((void (*proc) proto((void)))); ! 63: ! 64: extern data_obj ! 65: *findcom proto((char *prompt)), ! 66: *findmac proto((char *prompt)), ! 67: *findvar proto((char *prompt));
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.