summaryrefslogtreecommitdiff
path: root/perl.h
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2006-07-17 12:09:24 +0300
committerRafael Garcia-Suarez <rgarciasuarez@gmail.com>2006-07-18 21:43:52 +0000
commitbc028b6b7f0f25fba45e10fa46e3fe91dbe9a76d (patch)
tree7c8832aa8af9ba27e527ad1c2f640827b68bb4e0 /perl.h
parentf782ee33d0f49cb1ee007e3e83d1f175efc6fdc1 (diff)
downloadperl-bc028b6b7f0f25fba45e10fa46e3fe91dbe9a76d.tar.gz
make magic vtables const if PERL_GLOBAL_STRUCT_PRIVATE
Message-ID: <44BB2994.5090609@iki.fi> p4raw-id: //depot/perl@28599
Diffstat (limited to 'perl.h')
-rw-r--r--perl.h17
1 files changed, 13 insertions, 4 deletions
diff --git a/perl.h b/perl.h
index 949fb51e40..ef558a4b93 100644
--- a/perl.h
+++ b/perl.h
@@ -4460,14 +4460,23 @@ END_EXTERN_C
START_EXTERN_C
+/* PERL_GLOBAL_STRUCT_PRIVATE wants to keep global data like the
+ * magic vtables const, but this is incompatible with SWIG which
+ * does want to modify the vtables. */
+#ifdef PERL_GLOBAL_STRUCT_PRIVATE
+# define EXT_MGVTBL EXTCONST MGVTBL
+#else
+# define EXT_MGVTBL EXT MGVTBL
+#endif
+
#ifdef DOINIT
-# define MGVTBL_SET(var,a,b,c,d,e,f,g,h) EXT MGVTBL var = {a,b,c,d,e,f,g,h}
+# define MGVTBL_SET(var,a,b,c,d,e,f,g,h) EXT_MGVTBL var = {a,b,c,d,e,f,g,h}
/* Like MGVTBL_SET but with the get magic having a const MG* */
-# define MGVTBL_SET_CONST_MAGIC_GET(var,a,b,c,d,e,f,g,h) EXT MGVTBL var \
+# define MGVTBL_SET_CONST_MAGIC_GET(var,a,b,c,d,e,f,g,h) EXT_MGVTBL var \
= {(int (*)(pTHX_ SV *, MAGIC *))a,b,c,d,e,f,g,h}
#else
-# define MGVTBL_SET(var,a,b,c,d,e,f,g,h) EXT MGVTBL var
-# define MGVTBL_SET_CONST_MAGIC_GET(var,a,b,c,d,e,f,g,h) EXT MGVTBL var
+# define MGVTBL_SET(var,a,b,c,d,e,f,g,h) EXT_MGVTBL var
+# define MGVTBL_SET_CONST_MAGIC_GET(var,a,b,c,d,e,f,g,h) EXT_MGVTBL var
#endif
MGVTBL_SET(