home *** CD-ROM | disk | FTP | other *** search
/ Netrunner 2004 October / NETRUNNER0410.ISO / regular / ActivePerl-5.8.4.810-MSWin32-x86.msi / _4d5c591bda93142266ea1fe8bade5a2d < prev    next >
Text File  |  2004-06-01  |  4KB  |  91 lines

  1. #define IMPORT_VTABLE(ptr,type,name) do {                       \
  2.   ptr = INT2PTR(type *,SvIV(get_sv(name,GV_ADDWARN|GV_ADD)));   \
  3.   if ((*ptr->tabSize)() != sizeof(type)) {                      \
  4.     Perl_warn(aTHX_ "%s wrong size for %s",name,#type);         \
  5.   }                                                             \
  6.  } while (0)
  7.  
  8. #ifdef WIN32
  9. #define DECLARE_VTABLES    \
  10. LangVtab           *LangVptr;          \
  11. TcldeclsVtab       *TcldeclsVptr;      \
  12. TkVtab             *TkVptr;            \
  13. TkdeclsVtab        *TkdeclsVptr;       \
  14. TkeventVtab        *TkeventVptr;       \
  15. TkglueVtab         *TkglueVptr;        \
  16. TkintVtab          *TkintVptr;         \
  17. TkintdeclsVtab     *TkintdeclsVptr;    \
  18. TkintplatdeclsVtab *TkintplatdeclsVptr;\
  19. TkintxlibdeclsVtab *TkintxlibdeclsVptr;\
  20. TkoptionVtab       *TkoptionVptr;      \
  21. TkplatdeclsVtab    *TkplatdeclsVptr
  22.  
  23. #define IMPORT_VTABLES    do { \
  24. IMPORT_VTABLE(LangVptr          ,          LangVtab,"Tk::LangVtab");           \
  25. IMPORT_VTABLE(TcldeclsVptr      ,      TcldeclsVtab,"Tk::TcldeclsVtab");       \
  26. IMPORT_VTABLE(TkVptr            ,            TkVtab,"Tk::TkVtab");             \
  27. IMPORT_VTABLE(TkdeclsVptr       ,       TkdeclsVtab,"Tk::TkdeclsVtab");        \
  28. IMPORT_VTABLE(TkeventVptr       ,       TkeventVtab,"Tk::TkeventVtab");        \
  29. IMPORT_VTABLE(TkglueVptr        ,        TkglueVtab,"Tk::TkglueVtab");         \
  30. IMPORT_VTABLE(TkintVptr         ,         TkintVtab,"Tk::TkintVtab");          \
  31. IMPORT_VTABLE(TkintdeclsVptr    ,    TkintdeclsVtab,"Tk::TkintdeclsVtab");     \
  32. IMPORT_VTABLE(TkintplatdeclsVptr,TkintplatdeclsVtab,"Tk::TkintplatdeclsVtab"); \
  33. IMPORT_VTABLE(TkintxlibdeclsVptr,TkintxlibdeclsVtab,"Tk::TkintxlibdeclsVtab"); \
  34. IMPORT_VTABLE(TkoptionVptr      ,      TkoptionVtab,"Tk::TkoptionVtab");       \
  35. IMPORT_VTABLE(TkplatdeclsVptr   ,   TkplatdeclsVtab,"Tk::TkplatdeclsVtab");    \
  36. } while (0)
  37. #else
  38. #define DECLARE_VTABLES    \
  39. LangVtab           *LangVptr;          \
  40. TcldeclsVtab       *TcldeclsVptr;      \
  41. TkVtab             *TkVptr;            \
  42. TkdeclsVtab        *TkdeclsVptr;       \
  43. TkeventVtab        *TkeventVptr;       \
  44. TkglueVtab         *TkglueVptr;        \
  45. TkintVtab          *TkintVptr;         \
  46. TkintdeclsVtab     *TkintdeclsVptr;    \
  47. TkoptionVtab       *TkoptionVptr;      \
  48. XlibVtab           *XlibVptr
  49.  
  50. #define IMPORT_VTABLES    do { \
  51. IMPORT_VTABLE(LangVptr          ,          LangVtab,"Tk::LangVtab");           \
  52. IMPORT_VTABLE(TcldeclsVptr      ,      TcldeclsVtab,"Tk::TcldeclsVtab");       \
  53. IMPORT_VTABLE(TkVptr            ,            TkVtab,"Tk::TkVtab");             \
  54. IMPORT_VTABLE(TkdeclsVptr       ,       TkdeclsVtab,"Tk::TkdeclsVtab");        \
  55. IMPORT_VTABLE(TkeventVptr       ,       TkeventVtab,"Tk::TkeventVtab");        \
  56. IMPORT_VTABLE(TkglueVptr        ,        TkglueVtab,"Tk::TkglueVtab");         \
  57. IMPORT_VTABLE(TkintVptr         ,         TkintVtab,"Tk::TkintVtab");          \
  58. IMPORT_VTABLE(TkintdeclsVptr    ,    TkintdeclsVtab,"Tk::TkintdeclsVtab");     \
  59. IMPORT_VTABLE(TkoptionVptr      ,      TkoptionVtab,"Tk::TkoptionVtab");       \
  60. IMPORT_VTABLE(XlibVptr          ,          XlibVtab,"Tk::XlibVtab");           \
  61. } while (0)
  62. #endif
  63. #define DECLARE_TIX    \
  64. TixVtab            *TixVptr;           \
  65. TixintVtab         *TixintVptr
  66.  
  67. #define IMPORT_TIX    do { \
  68. IMPORT_VTABLE(TixVptr           ,           TixVtab,"Tk::TixVtab");            \
  69. IMPORT_VTABLE(TixintVptr        ,        TixintVtab,"Tk::TixintVtab");         \
  70. } while (0)
  71. #define DECLARE_PHOTO    \
  72. ImgintVtab         *ImgintVptr;        \
  73. TkimgphotoVtab     *TkimgphotoVptr
  74.  
  75. #define IMPORT_PHOTO    do { \
  76. IMPORT_VTABLE(ImgintVptr        ,        ImgintVtab,"Tk::ImgintVtab");         \
  77. IMPORT_VTABLE(TkimgphotoVptr    ,    TkimgphotoVtab,"Tk::TkimgphotoVtab");     \
  78. } while (0)
  79. #define DECLARE_EVENT    \
  80. TkeventVtab        *TkeventVptr
  81.  
  82. #define IMPORT_EVENT    do { \
  83. IMPORT_VTABLE(TkeventVptr       ,       TkeventVtab,"Tk::TkeventVtab");        \
  84. } while (0)
  85. #define DECLARE_TIXXPM    \
  86. TiximgxpmVtab      *TiximgxpmVptr
  87.  
  88. #define IMPORT_TIXXPM    do { \
  89. IMPORT_VTABLE(TiximgxpmVptr     ,     TiximgxpmVtab,"Tk::TiximgxpmVtab");      \
  90. } while (0)
  91.