Commit | Line | Data |
---|---|---|
86530b38 AT |
1 | #ifndef _TKGLUE |
2 | #define _TKGLUE | |
3 | ||
4 | #ifndef BASEEXT | |
5 | #define BASEEXT "Tk" | |
6 | #endif | |
7 | ||
8 | #ifndef _TKOPTION | |
9 | #include "pTk/tkOption.h" | |
10 | #include "pTk/tkOption_f.h" | |
11 | #endif | |
12 | ||
13 | typedef struct EventAndKeySym | |
14 | {XEvent event; | |
15 | KeySym keySym; | |
16 | Tcl_Interp *interp; | |
17 | Tk_Window tkwin; | |
18 | SV *window; | |
19 | } EventAndKeySym; | |
20 | ||
21 | typedef struct Lang_CmdInfo | |
22 | {Tcl_CmdInfo Tk; | |
23 | Tcl_Interp *interp; | |
24 | Tk_Window tkwin; | |
25 | SV *image; | |
26 | Tk_Font tkfont; | |
27 | } Lang_CmdInfo; | |
28 | ||
29 | #ifdef WIN32 | |
30 | #define DECLARE_WIN32_VTABLES \ | |
31 | TkwinVtab *TkwinVptr; \ | |
32 | TkwinintVtab * TkwinintVptr; | |
33 | #else | |
34 | #define DECLARE_WIN32_VTABLES | |
35 | #endif | |
36 | ||
37 | #define DECLARE_VTABLES \ | |
38 | TkoptionVtab *TkoptionVptr; \ | |
39 | XlibVtab *XlibVptr ; \ | |
40 | TkVtab *TkVptr ; \ | |
41 | TkintVtab *TkintVptr ; \ | |
42 | LangVtab *LangVptr ; \ | |
43 | TkeventVtab *TkeventVptr ; \ | |
44 | TkglueVtab *TkglueVptr | |
45 | ||
46 | #ifdef WIN32 | |
47 | #define IMPORT_WIN32_VTABLES \ | |
48 | do { \ | |
49 | TkwinVptr = (TkwinVtab *) SvIV(perl_get_sv("Tk::TkwinVtab",GV_ADDWARN|GV_ADD)); \ | |
50 | TkwinintVptr = (TkwinintVtab *) SvIV(perl_get_sv("Tk::TkwinintVtab",GV_ADDWARN|GV_ADD)); \ | |
51 | } while (0); | |
52 | #else | |
53 | #define IMPORT_WIN32_VTABLES | |
54 | #endif | |
55 | ||
56 | #define IMPORT_VTABLES \ | |
57 | do { \ | |
58 | TkoptionVptr = (TkoptionVtab *) SvIV(perl_get_sv("Tk::TkoptionVtab",GV_ADDWARN|GV_ADD)); \ | |
59 | LangVptr = (LangVtab *) SvIV(perl_get_sv("Tk::LangVtab",GV_ADDWARN|GV_ADD)); \ | |
60 | TkeventVptr = (TkeventVtab *) SvIV(perl_get_sv("Tk::TkeventVtab",GV_ADDWARN|GV_ADD)); \ | |
61 | TkVptr = (TkVtab *) SvIV(perl_get_sv("Tk::TkVtab",GV_ADDWARN|GV_ADD)); \ | |
62 | TkintVptr = (TkintVtab *) SvIV(perl_get_sv("Tk::TkintVtab",GV_ADDWARN|GV_ADD)); \ | |
63 | TkglueVptr = (TkglueVtab *) SvIV(perl_get_sv("Tk::TkglueVtab",GV_ADDWARN|GV_ADD)); \ | |
64 | XlibVptr = (XlibVtab *) SvIV(perl_get_sv("Tk::XlibVtab",GV_ADDWARN|GV_ADD)); \ | |
65 | } while (0) | |
66 | ||
67 | #define VTABLE_INIT() IMPORT_VTABLES | |
68 | ||
69 | extern Lang_CmdInfo *WindowCommand _ANSI_ARGS_((SV *win,HV **hptr, int moan)); | |
70 | extern Tk_Window SVtoWindow _ANSI_ARGS_((SV *win)); | |
71 | extern Tk_Font SVtoFont _ANSI_ARGS_((SV *win)); | |
72 | extern int Call_Tk _ANSI_ARGS_((Lang_CmdInfo *info,int argc, SV **args)); | |
73 | extern HV *InterpHv _ANSI_ARGS_((Tcl_Interp *interp,int fatal)); | |
74 | extern SV *WidgetRef _ANSI_ARGS_((Tcl_Interp *interp, char *path)); | |
75 | extern SV *TkToWidget _ANSI_ARGS_((Tk_Window tkwin,Tcl_Interp **pinterp)); | |
76 | extern SV *FindTkVarName _ANSI_ARGS_((char *varName,int flags)); | |
77 | extern void EnterWidgetMethods _ANSI_ARGS_((char *package, ...)); | |
78 | extern SV *MakeReference _ANSI_ARGS_((SV * sv)); | |
79 | extern Tk_Window TkToMainWindow _ANSI_ARGS_((Tk_Window tkwin)); | |
80 | extern void Lang_TkSubCommand _ANSI_ARGS_ ((char *name, Tcl_CmdProc *proc)); | |
81 | extern void Lang_TkCommand _ANSI_ARGS_ ((char *name, Tcl_CmdProc *proc)); | |
82 | extern SV *XEvent_Info _((EventAndKeySym *obj,char *s)); | |
83 | extern EventAndKeySym *SVtoEventAndKeySym _((SV *arg)); | |
84 | extern int XSTkCommand _ANSI_ARGS_((CV *cv, Tcl_CmdProc *proc, int items, SV **args)); | |
85 | ||
86 | extern XS(XStoWidget); | |
87 | ||
88 | EXTERN void ClearErrorInfo _ANSI_ARGS_((SV *interp)); | |
89 | EXTERN Tk_Window mainWindow; | |
90 | EXTERN void DumpStack _ANSI_ARGS_((void)); | |
91 | EXTERN void Boot_Glue _ANSI_ARGS_((void)); | |
92 | EXTERN void Boot_Tix _ANSI_ARGS_((void)); | |
93 | EXTERN void install_vtab _ANSI_ARGS_((char *name, void *table, size_t size)); | |
94 | extern SV *TagIt _((SV *sv, char *type)); | |
95 | extern void Font_DESTROY _((SV *sv)); | |
96 | struct pTkCheckChain; | |
97 | extern void Tk_CheckHash _((SV *sv,struct pTkCheckChain *chain)); | |
98 | ||
99 | ||
100 | #ifndef WIN32 | |
101 | #define HWND void * | |
102 | #endif | |
103 | EXTERN HWND SVtoHWND _ANSI_ARGS_((SV *win)); | |
104 | ||
105 | #endif |