home *** CD-ROM | disk | FTP | other *** search
- #define IMPORT_VTABLE(ptr,type,name) do { \
- ptr = INT2PTR(type *,SvIV(get_sv(name,GV_ADDWARN|GV_ADD))); \
- if ((*ptr->tabSize)() != sizeof(type)) { \
- Perl_warn(aTHX_ "%s wrong size for %s",name,#type); \
- } \
- } while (0)
-
- #ifdef WIN32
- #define DECLARE_VTABLES \
- LangVtab *LangVptr; \
- TcldeclsVtab *TcldeclsVptr; \
- TkVtab *TkVptr; \
- TkdeclsVtab *TkdeclsVptr; \
- TkeventVtab *TkeventVptr; \
- TkglueVtab *TkglueVptr; \
- TkintVtab *TkintVptr; \
- TkintdeclsVtab *TkintdeclsVptr; \
- TkintplatdeclsVtab *TkintplatdeclsVptr;\
- TkintxlibdeclsVtab *TkintxlibdeclsVptr;\
- TkoptionVtab *TkoptionVptr; \
- TkplatdeclsVtab *TkplatdeclsVptr
-
- #define IMPORT_VTABLES do { \
- IMPORT_VTABLE(LangVptr , LangVtab,"Tk::LangVtab"); \
- IMPORT_VTABLE(TcldeclsVptr , TcldeclsVtab,"Tk::TcldeclsVtab"); \
- IMPORT_VTABLE(TkVptr , TkVtab,"Tk::TkVtab"); \
- IMPORT_VTABLE(TkdeclsVptr , TkdeclsVtab,"Tk::TkdeclsVtab"); \
- IMPORT_VTABLE(TkeventVptr , TkeventVtab,"Tk::TkeventVtab"); \
- IMPORT_VTABLE(TkglueVptr , TkglueVtab,"Tk::TkglueVtab"); \
- IMPORT_VTABLE(TkintVptr , TkintVtab,"Tk::TkintVtab"); \
- IMPORT_VTABLE(TkintdeclsVptr , TkintdeclsVtab,"Tk::TkintdeclsVtab"); \
- IMPORT_VTABLE(TkintplatdeclsVptr,TkintplatdeclsVtab,"Tk::TkintplatdeclsVtab"); \
- IMPORT_VTABLE(TkintxlibdeclsVptr,TkintxlibdeclsVtab,"Tk::TkintxlibdeclsVtab"); \
- IMPORT_VTABLE(TkoptionVptr , TkoptionVtab,"Tk::TkoptionVtab"); \
- IMPORT_VTABLE(TkplatdeclsVptr , TkplatdeclsVtab,"Tk::TkplatdeclsVtab"); \
- } while (0)
- #else
- #define DECLARE_VTABLES \
- LangVtab *LangVptr; \
- TcldeclsVtab *TcldeclsVptr; \
- TkVtab *TkVptr; \
- TkdeclsVtab *TkdeclsVptr; \
- TkeventVtab *TkeventVptr; \
- TkglueVtab *TkglueVptr; \
- TkintVtab *TkintVptr; \
- TkintdeclsVtab *TkintdeclsVptr; \
- TkoptionVtab *TkoptionVptr; \
- XlibVtab *XlibVptr
-
- #define IMPORT_VTABLES do { \
- IMPORT_VTABLE(LangVptr , LangVtab,"Tk::LangVtab"); \
- IMPORT_VTABLE(TcldeclsVptr , TcldeclsVtab,"Tk::TcldeclsVtab"); \
- IMPORT_VTABLE(TkVptr , TkVtab,"Tk::TkVtab"); \
- IMPORT_VTABLE(TkdeclsVptr , TkdeclsVtab,"Tk::TkdeclsVtab"); \
- IMPORT_VTABLE(TkeventVptr , TkeventVtab,"Tk::TkeventVtab"); \
- IMPORT_VTABLE(TkglueVptr , TkglueVtab,"Tk::TkglueVtab"); \
- IMPORT_VTABLE(TkintVptr , TkintVtab,"Tk::TkintVtab"); \
- IMPORT_VTABLE(TkintdeclsVptr , TkintdeclsVtab,"Tk::TkintdeclsVtab"); \
- IMPORT_VTABLE(TkoptionVptr , TkoptionVtab,"Tk::TkoptionVtab"); \
- IMPORT_VTABLE(XlibVptr , XlibVtab,"Tk::XlibVtab"); \
- } while (0)
- #endif
- #define DECLARE_TIX \
- TixVtab *TixVptr; \
- TixintVtab *TixintVptr
-
- #define IMPORT_TIX do { \
- IMPORT_VTABLE(TixVptr , TixVtab,"Tk::TixVtab"); \
- IMPORT_VTABLE(TixintVptr , TixintVtab,"Tk::TixintVtab"); \
- } while (0)
- #define DECLARE_PHOTO \
- ImgintVtab *ImgintVptr; \
- TkimgphotoVtab *TkimgphotoVptr
-
- #define IMPORT_PHOTO do { \
- IMPORT_VTABLE(ImgintVptr , ImgintVtab,"Tk::ImgintVtab"); \
- IMPORT_VTABLE(TkimgphotoVptr , TkimgphotoVtab,"Tk::TkimgphotoVtab"); \
- } while (0)
- #define DECLARE_EVENT \
- TkeventVtab *TkeventVptr
-
- #define IMPORT_EVENT do { \
- IMPORT_VTABLE(TkeventVptr , TkeventVtab,"Tk::TkeventVtab"); \
- } while (0)
- #define DECLARE_TIXXPM \
- TiximgxpmVtab *TiximgxpmVptr
-
- #define IMPORT_TIXXPM do { \
- IMPORT_VTABLE(TiximgxpmVptr , TiximgxpmVtab,"Tk::TiximgxpmVtab"); \
- } while (0)
-