summaryrefslogtreecommitdiff
path: root/Build/source/utils/xml2pmx/xml2pmx-src/primtab.h
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/utils/xml2pmx/xml2pmx-src/primtab.h')
-rw-r--r--Build/source/utils/xml2pmx/xml2pmx-src/primtab.h60
1 files changed, 60 insertions, 0 deletions
diff --git a/Build/source/utils/xml2pmx/xml2pmx-src/primtab.h b/Build/source/utils/xml2pmx/xml2pmx-src/primtab.h
new file mode 100644
index 00000000000..312488b4e2c
--- /dev/null
+++ b/Build/source/utils/xml2pmx/xml2pmx-src/primtab.h
@@ -0,0 +1,60 @@
+/*
+ * primtab.h
+ *
+ * This file is part of the Oxford Oberon-2 compiler
+ * Copyright (c) 2006--2016 J. M. Spivey
+ * All rights reserved
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "obx.h"
+
+/* Types for arguments */
+typedef int type_C, type_S, type_I;
+typedef longint type_L;
+typedef float type_F;
+typedef double type_D;
+typedef void *type_P, *type_Q, *type_X;
+typedef void type_V;
+
+/* How to fetch each kind of argument */
+#define arg_C(j) align_byte(bp[HEAD+j].i)
+#define arg_I(j) bp[HEAD+j].i
+#define arg_S(j) align_short(bp[HEAD+j].i)
+#define arg_F(j) bp[HEAD+j].f
+#define arg_P(j) pointer(bp[HEAD+j])
+#define arg_L(j) get_long(&bp[HEAD+j])
+#define arg_D(j) get_double(&bp[HEAD+j])
+#define arg_X(j) pointer(bp[HEAD+j])
+#define arg_Q(j) ((void *) (ptrtype) get_long(&bp[HEAD+j]))
+
+/* How to return each kind of result */
+#define res_I(v) (*--sp).i = v
+#define res_S(v) (*--sp).i = v
+#define res_C(v) (*--sp).i = v
+#define res_F(v) (*--sp).f = v
+#define res_L(v) sp -= 2, put_long(sp, v)
+#define res_D(v) sp -= 2, put_double(sp, v)
+#define res_Q(v) sp -= 2, put_long(sp, (ptrtype) v)
+#define res_V(v) v