summaryrefslogtreecommitdiff
path: root/Build/source/utils/xml2pmx/xml2pmx-src/Builtin.c
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/utils/xml2pmx/xml2pmx-src/Builtin.c')
-rw-r--r--Build/source/utils/xml2pmx/xml2pmx-src/Builtin.c160
1 files changed, 0 insertions, 160 deletions
diff --git a/Build/source/utils/xml2pmx/xml2pmx-src/Builtin.c b/Build/source/utils/xml2pmx/xml2pmx-src/Builtin.c
deleted file mode 100644
index f74e3c0ea6b..00000000000
--- a/Build/source/utils/xml2pmx/xml2pmx-src/Builtin.c
+++ /dev/null
@@ -1,160 +0,0 @@
-
-#include "obx.h"
-#include <ctype.h>
-#include <math.h>
-#include <string.h>
-
-char *lib_version =
- "Oxford Oberon-2 library version 3.2beta1 [build hg-f2fdbc915d42]";
-
-value *NEW(value *bp) {
- word desc = bp[HEAD+0].a;
- int size = bp[HEAD+1].i+4;
- value *sp = bp;
- word p = gc_alloc(size, bp);
- value *q = ptrcast(value, p);
- q[0].a = desc;
- (*--sp).a = p+4;
- return sp;
-}
-
-/*
-Layout for flexible arrays:
-
-q: desc
-
- element 0
- ...
- element n-1
-
-desc: map desc = q + align(n*elsize) + 4
- dim 1
- ...
- dim k
-
-map: -4
- desc-(q+4)
-[ GC_REPEAT if elmap != 0
- 0
- n
- elsize
- GC_MAP
- elmap
- GC_END ]
- GC_END
-
-size = align(n*elsize) + 4*k + 20 + (28 if elmap != 0)
-
-Parameters NEWFLEX(elmap, elsize, k: INTEGER;
- dim_0, ..., dim_{k-1}: INTEGER): SYSTEM.PTR
-*/
-
-value *NEWFLEX(value *bp) {
- word elmap = bp[HEAD+0].a;
- int elsize = bp[HEAD+1].i;
- int k = bp[HEAD+2].i;
- value *dim = &bp[HEAD+3]; /* Array of bounds */
- value *sp = bp;
-
- int size, arsize, i, n;
- word p, desc, map;
- value *q, *pdesc, *pmap;
-
- /* Compute no. of elements */
- n = 1;
- for (i = 0; i < k; i++) n *= dim[i].i;
- if (n < 0) liberror("allocating negative size");
- arsize = align(n * elsize, 4);
- if (n == 0) elmap = 0;
-
- /* Allocate the space */
- size = arsize + 4*k + 20;
- if (elmap != 0) size += 28;
-
- p = gc_alloc(size, bp);
- desc = p + arsize + 4;
- map = desc + 4*k + 4;
-
- q = ptrcast(value, p);
- pdesc = ptrcast(value, desc);
- pmap = ptrcast(value, map);
- q[0].a = desc;
-
- /* Fill in the descriptor */
- pdesc[DESC_MAP].a = map;
- for (i = 0; i < k; i++) pdesc[DESC_BOUND+i].i = dim[i].i;
-
- /* Fill in the map */
- pmap[0].i = -4;
- pmap[1].i = desc-(p+4);
- if (elmap == 0)
- pmap[2].i = GC_END;
- else {
- pmap[2].i = GC_REPEAT;
- pmap[3].i = 0;
- pmap[4].i = n;
- pmap[5].i = elsize;
- pmap[6].i = GC_MAP;
- pmap[7].i = elmap;
- pmap[8].i = GC_END;
- pmap[9].i = GC_END;
- }
-
- (*--sp).a = p+4;
- return sp;
-}
-
-value *COMPARE(value *bp) {
- uchar *s1 = pointer(bp[HEAD+0]), *s2 = pointer(bp[HEAD+2]);
- int i = 0, n = min(bp[HEAD+1].i, bp[HEAD+3].i);
- value *sp = bp;
-
- while (i < n && s1[i] != '\0' && s1[i] == s2[i]) i++;
- if (i >= n) liberror("string is not null-terminated");
- (*--sp).i = s1[i] - s2[i];
- return sp;
-}
-
-value *COPY(value *bp) {
- obcopy((char * ) pointer(bp[HEAD+2]), bp[HEAD+3].i,
- (char * ) pointer(bp[HEAD+0]), bp[HEAD+1].i, bp);
- return bp;
-}
-
-value *FLEXASSIGN(value *bp) {
- int size = bp[HEAD+0].i;
- int dim = bp[HEAD+1].i;
- uchar *src = pointer(bp[HEAD+2]), *dst = pointer(bp[HEAD+dim+3]);
- value *sbound = &bp[HEAD+3], *dbound = &bp[HEAD+dim+4];
- int i;
-
- for (i = 0; i < dim; i++) {
- int sb = sbound[i].i, db = dbound[i].i;
- if (sb > db || (i > 0 && sb < db))
- liberror("bound mismatch in open array assignment");
- size *= sb;
- }
-
- memmove(dst, src, size);
- return bp;
-}
-
-value *sys_move(value *bp) {
- memmove(pointer(bp[HEAD+1]), pointer(bp[HEAD+0]), bp[HEAD+2].i);
- return bp;
-}
-
-value *sys_liberror(value *bp) {
- value *bp1 = valptr(bp[BP]);
- error_stop((char * ) pointer(bp[HEAD+0]), 0, 0, bp1, NULL);
- return bp;
-}
-
-value *EASSERT(value *bp) {
- int line = bp[HEAD+0].i;
- int arg = bp[HEAD+1].i;
- value *bp1 = valptr(bp[BP]);
- uchar *pc = pointer(bp[PC]);
- error_stop("assertion failed (%d)", arg, line, bp1, pc);
- return bp;
-}