up patchlevel &c
[p5sagit/p5-mst-13.2.git] / XSUB.h
diff --git a/XSUB.h b/XSUB.h
index dbe0c39..9e82530 100644 (file)
--- a/XSUB.h
+++ b/XSUB.h
@@ -4,7 +4,11 @@
 #  ifdef PERL_OBJECT
 #    define XS(name) void name(CV* cv, CPerlObj* pPerl)
 #  else
-#    define XS(name) void name(CV* cv)
+#    if defined(CYGWIN32) && defined(USE_DYNAMIC_LOADING)
+#      define XS(name) __declspec(dllexport) void name(CV* cv)
+#    else
+#      define XS(name) void name(CV* cv)
+#    endif
 #  endif
 #else
 #  define XS(name) void name(cv) CV* cv;
@@ -40,6 +44,7 @@
 #define XST_mIV(i,v)  (ST(i) = sv_2mortal(newSViv(v))  )
 #define XST_mNV(i,v)  (ST(i) = sv_2mortal(newSVnv(v))  )
 #define XST_mPV(i,v)  (ST(i) = sv_2mortal(newSVpv(v,0)))
+#define XST_mPVN(i,v,n)  (ST(i) = sv_2mortal(newSVpvn(v,n)))
 #define XST_mNO(i)    (ST(i) = &PL_sv_no   )
 #define XST_mYES(i)   (ST(i) = &PL_sv_yes  )
 #define XST_mUNDEF(i) (ST(i) = &PL_sv_undef)
@@ -47,6 +52,7 @@
 #define XSRETURN_IV(v) STMT_START { XST_mIV(0,v);  XSRETURN(1); } STMT_END
 #define XSRETURN_NV(v) STMT_START { XST_mNV(0,v);  XSRETURN(1); } STMT_END
 #define XSRETURN_PV(v) STMT_START { XST_mPV(0,v);  XSRETURN(1); } STMT_END
+#define XSRETURN_PVN(v) STMT_START { XST_mPVN(0,v,n);  XSRETURN(1); } STMT_END
 #define XSRETURN_NO    STMT_START { XST_mNO(0);    XSRETURN(1); } STMT_END
 #define XSRETURN_YES   STMT_START { XST_mYES(0);   XSRETURN(1); } STMT_END
 #define XSRETURN_UNDEF STMT_START { XST_mUNDEF(0); XSRETURN(1); } STMT_END
 #  ifdef USE_LOCALE_COLLATE
 #    define VTBL_collxfrm      get_vtbl(want_vtbl_collxfrm)
 #  endif
-#  ifdef OVERLOAD
-#    define VTBL_amagic                get_vtbl(want_vtbl_amagic)
-#    define VTBL_amagicelem    get_vtbl(want_vtbl_amagicelem)
-#  endif
+#  define VTBL_amagic          get_vtbl(want_vtbl_amagic)
+#  define VTBL_amagicelem      get_vtbl(want_vtbl_amagicelem)
 #else
 #  define VTBL_sv              &PL_vtbl_sv
 #  define VTBL_env             &PL_vtbl_env
 #  ifdef USE_LOCALE_COLLATE
 #    define VTBL_collxfrm      &PL_vtbl_collxfrm
 #  endif
-#  ifdef OVERLOAD
-#    define VTBL_amagic                &PL_vtbl_amagic
-#    define VTBL_amagicelem    &PL_vtbl_amagicelem
-#  endif
+#  define VTBL_amagic          &PL_vtbl_amagic
+#  define VTBL_amagicelem      &PL_vtbl_amagicelem
 #endif
 
 #ifdef PERL_OBJECT
 #    define telldir            PerlDir_tell
 #    define putenv             PerlEnv_putenv
 #    define getenv             PerlEnv_getenv
+#    define uname              PerlEnv_uname
 #    define stdin              PerlIO_stdin()
 #    define stdout             PerlIO_stdout()
 #    define stderr             PerlIO_stderr()