summaryrefslogtreecommitdiff
path: root/XSUB.h
diff options
context:
space:
mode:
authorLarry Wall <lwall@netlabs.com>1994-10-17 23:00:00 +0000
committerLarry Wall <lwall@netlabs.com>1994-10-17 23:00:00 +0000
commita0d0e21ea6ea90a22318550944fe6cb09ae10cda (patch)
treefaca1018149b736b1142f487e44d1ff2de5cc1fa /XSUB.h
parent85e6fe838fb25b257a1b363debf8691c0992ef71 (diff)
downloadperl-a0d0e21ea6ea90a22318550944fe6cb09ae10cda.tar.gz
perl 5.000perl-5.000
[editor's note: this commit combines approximate 4 months of furious releases of Andy Dougherty and Larry Wall - see pod/perlhist.pod for details. Andy notes that; Alas neither my "Irwin AccuTrack" nor my DC 600A quarter-inch cartridge backup tapes from that era seem to be readable anymore. I guess 13 years exceeds the shelf life for that backup technology :-(. ]
Diffstat (limited to 'XSUB.h')
-rw-r--r--XSUB.h23
1 files changed, 22 insertions, 1 deletions
diff --git a/XSUB.h b/XSUB.h
index a8a193b20f..508ebd72ac 100644
--- a/XSUB.h
+++ b/XSUB.h
@@ -1 +1,22 @@
-#define ST(s) stack_base[ax + s]
+#define ST(off) stack_base[ax + off]
+
+#ifdef CAN_PROTOTYPE
+#define XS(name) void name(CV* cv)
+#else
+#define XS(name) void name(cv) CV* cv;
+#endif
+
+#define dXSARGS \
+ dSP; dMARK; \
+ I32 ax = mark - stack_base + 1; \
+ I32 items = sp - mark
+
+#define XSANY CvXSUBANY(cv)
+
+#define dXSI32 I32 ix = XSANY.any_i32
+
+#define XSRETURN(off) stack_sp = stack_base + ax + ((off) - 1); return
+
+#define XSRETURNNO ST(0)=sv_mortalcopy(&sv_no); XSRETURN(1)
+#define XSRETURNYES ST(0)=sv_mortalcopy(&sv_yes); XSRETURN(1)
+#define XSRETURNUNDEF ST(0)=sv_mortalcopy(&sv_undef); XSRETURN(1)