home *** CD-ROM | disk | FTP | other *** search
/ Power Programming / powerprogramming1994.iso / progtool / editor / j414src.arc / DATAOBJ.H < prev    next >
C/C++ Source or Header  |  1989-10-10  |  2KB  |  68 lines

  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));
  68.