--- rxvt-unicode/src/rxvtperl.h 2006/01/04 00:09:12 1.6 +++ rxvt-unicode/src/rxvtperl.h 2006/01/25 00:42:21 1.21 @@ -6,66 +6,57 @@ #define RXVTPERL_H_ #if ENABLE_PERL +# define SHOULD_INVOKE(htype) \ + ( (htype) == HOOK_INIT \ + || (htype) == HOOK_DESTROY \ + || (htype) == HOOK_REFRESH_BEGIN \ + || (htype) == HOOK_REFRESH_END \ + || perl.should_invoke [htype]) +# define HOOK_INVOKE(args) rxvt_perl.invoke args #include "rxvt.h" -#define PERL_INVOKE(args) rxvt_perl.invoke args - enum data_type { - DT_END, + DT_END, // no further arguments DT_INT, DT_LONG, - DT_STRING, + DT_STR, // 0-terminates string + DT_STR_LEN, // string + length + DT_WCS_LEN, // wchar_t* + length + DT_LCS_LEN, // long* + length DT_XEVENT, }; enum hook_type { - HOOK_INIT = 0, // special, hardcoded - HOOK_DESTROY = 1, // values in urxvt.pm - HOOK_RESET, - HOOK_START, - - HOOK_SEL_BEGIN, - HOOK_SEL_EXTEND, - HOOK_SEL_MAKE, - HOOK_SEL_GRAB, - - HOOK_SEL_CLICK, - - HOOK_FOCUS_IN, - HOOK_FOCUS_OUT, - - HOOK_VIEW_CHANGE, - HOOK_SCROLL_BACK, - HOOK_TTY_ACTIVITY, - HOOK_OSC_SEQ, - - HOOK_REFRESH_BEGIN, - HOOK_REFRESH_END, - - HOOK_KEYBOARD_COMMAND, - - HOOK_MOUSE_CLICK, - HOOK_MOUSE_MOVE, - +# define def(sym) HOOK_ ## sym, +# include "hookinc.h" +# undef def HOOK_NUM, }; +struct rxvt_perl_term +{ + void *self; + unsigned long grabtime; + uint8_t should_invoke[HOOK_NUM]; +}; + struct rxvt_perl_interp { - rxvt_perl_interp (); - ~rxvt_perl_interp (); + char **perl_environ; - bool should_invoke[HOOK_NUM]; + ~rxvt_perl_interp (); - void init (); + void init (rxvt_term *term); bool invoke (rxvt_term *term, hook_type htype, ...); + void line_update (rxvt_term *term); }; extern struct rxvt_perl_interp rxvt_perl; #else -# define PERL_INVOKE(args) false +# define SHOULD_INVOKE(htype) false +# define HOOK_INVOKE(args) false #endif #endif