Use SYSTEM.ADDRESS in libraries. Build all with -O2. Support INC(a,b) for any int a,b that support a:=a+b.

This commit is contained in:
David Brown 2016-09-23 13:04:24 +01:00
parent f1cbbdba28
commit 22a4f8e263
92 changed files with 2752 additions and 2695 deletions

View file

@ -1,8 +1,8 @@
/* voc 1.95 [2016/09/23] for gcc LP64 on cygwin xtspaSfF */
#define INTEGER int32
#define LONGINT int64
#define SET uint64
#define INTEGER int16
#define LONGINT int32
#define SET uint32
#include "SYSTEM.h"
@ -11,22 +11,22 @@
export void Strings_Append (CHAR *extra, LONGINT extra__len, CHAR *dest, LONGINT dest__len);
export void Strings_Cap (CHAR *s, LONGINT s__len);
export void Strings_Delete (CHAR *s, LONGINT s__len, int32 pos, int32 n);
export void Strings_Extract (CHAR *source, LONGINT source__len, int32 pos, int32 n, CHAR *dest, LONGINT dest__len);
export void Strings_Insert (CHAR *source, LONGINT source__len, int32 pos, CHAR *dest, LONGINT dest__len);
export int32 Strings_Length (CHAR *s, LONGINT s__len);
export void Strings_Delete (CHAR *s, LONGINT s__len, int16 pos, int16 n);
export void Strings_Extract (CHAR *source, LONGINT source__len, int16 pos, int16 n, CHAR *dest, LONGINT dest__len);
export void Strings_Insert (CHAR *source, LONGINT source__len, int16 pos, CHAR *dest, LONGINT dest__len);
export int16 Strings_Length (CHAR *s, LONGINT s__len);
export BOOLEAN Strings_Match (CHAR *string, LONGINT string__len, CHAR *pattern, LONGINT pattern__len);
export int32 Strings_Pos (CHAR *pattern, LONGINT pattern__len, CHAR *s, LONGINT s__len, int32 pos);
export void Strings_Replace (CHAR *source, LONGINT source__len, int32 pos, CHAR *dest, LONGINT dest__len);
export int16 Strings_Pos (CHAR *pattern, LONGINT pattern__len, CHAR *s, LONGINT s__len, int16 pos);
export void Strings_Replace (CHAR *source, LONGINT source__len, int16 pos, CHAR *dest, LONGINT dest__len);
int32 Strings_Length (CHAR *s, LONGINT s__len)
int16 Strings_Length (CHAR *s, LONGINT s__len)
{
int32 _o_result;
int32 i;
int16 _o_result;
int16 i;
__DUP(s, s__len, CHAR);
i = 0;
while (((int64)i < s__len && s[__X(i, s__len)] != 0x00)) {
while ((i < s__len && s[__X(i, s__len)] != 0x00)) {
i += 1;
}
_o_result = i;
@ -36,24 +36,24 @@ int32 Strings_Length (CHAR *s, LONGINT s__len)
void Strings_Append (CHAR *extra, LONGINT extra__len, CHAR *dest, LONGINT dest__len)
{
int32 n1, n2, i;
int16 n1, n2, i;
__DUP(extra, extra__len, CHAR);
n1 = Strings_Length(dest, dest__len);
n2 = Strings_Length(extra, extra__len);
i = 0;
while ((i < n2 && (int64)(i + n1) < dest__len)) {
while ((i < n2 && (i + n1) < dest__len)) {
dest[__X(i + n1, dest__len)] = extra[__X(i, extra__len)];
i += 1;
}
if ((int64)(i + n1) < dest__len) {
if ((i + n1) < dest__len) {
dest[__X(i + n1, dest__len)] = 0x00;
}
__DEL(extra);
}
void Strings_Insert (CHAR *source, LONGINT source__len, int32 pos, CHAR *dest, LONGINT dest__len)
void Strings_Insert (CHAR *source, LONGINT source__len, int16 pos, CHAR *dest, LONGINT dest__len)
{
int32 n1, n2, i;
int16 n1, n2, i;
__DUP(source, source__len, CHAR);
n1 = Strings_Length(dest, dest__len);
n2 = Strings_Length(source, source__len);
@ -64,10 +64,10 @@ void Strings_Insert (CHAR *source, LONGINT source__len, int32 pos, CHAR *dest, L
Strings_Append(dest, dest__len, (void*)source, source__len);
return;
}
if ((int64)(pos + n2) < dest__len) {
if ((pos + n2) < dest__len) {
i = n1;
while (i >= pos) {
if ((int64)(i + n2) < dest__len) {
if ((i + n2) < dest__len) {
dest[__X(i + n2, dest__len)] = dest[__X(i, dest__len)];
}
i -= 1;
@ -81,9 +81,9 @@ void Strings_Insert (CHAR *source, LONGINT source__len, int32 pos, CHAR *dest, L
__DEL(source);
}
void Strings_Delete (CHAR *s, LONGINT s__len, int32 pos, int32 n)
void Strings_Delete (CHAR *s, LONGINT s__len, int16 pos, int16 n)
{
int32 len, i;
int16 len, i;
len = Strings_Length(s, s__len);
if (pos < 0) {
pos = 0;
@ -96,7 +96,7 @@ void Strings_Delete (CHAR *s, LONGINT s__len, int32 pos, int32 n)
s[__X(i - n, s__len)] = s[__X(i, s__len)];
i += 1;
}
if ((int64)(i - n) < s__len) {
if ((i - n) < s__len) {
s[__X(i - n, s__len)] = 0x00;
}
} else {
@ -104,7 +104,7 @@ void Strings_Delete (CHAR *s, LONGINT s__len, int32 pos, int32 n)
}
}
void Strings_Replace (CHAR *source, LONGINT source__len, int32 pos, CHAR *dest, LONGINT dest__len)
void Strings_Replace (CHAR *source, LONGINT source__len, int16 pos, CHAR *dest, LONGINT dest__len)
{
__DUP(source, source__len, CHAR);
Strings_Delete((void*)dest, dest__len, pos, pos + Strings_Length(source, source__len));
@ -112,12 +112,12 @@ void Strings_Replace (CHAR *source, LONGINT source__len, int32 pos, CHAR *dest,
__DEL(source);
}
void Strings_Extract (CHAR *source, LONGINT source__len, int32 pos, int32 n, CHAR *dest, LONGINT dest__len)
void Strings_Extract (CHAR *source, LONGINT source__len, int16 pos, int16 n, CHAR *dest, LONGINT dest__len)
{
int32 len, destLen, i;
int16 len, destLen, i;
__DUP(source, source__len, CHAR);
len = Strings_Length(source, source__len);
destLen = (int32)dest__len - 1;
destLen = (int16)dest__len - 1;
if (pos < 0) {
pos = 0;
}
@ -126,7 +126,7 @@ void Strings_Extract (CHAR *source, LONGINT source__len, int32 pos, int32 n, CHA
return;
}
i = 0;
while (((((int64)(pos + i) <= source__len && source[__X(pos + i, source__len)] != 0x00)) && i < n)) {
while (((((pos + i) <= source__len && source[__X(pos + i, source__len)] != 0x00)) && i < n)) {
if (i < destLen) {
dest[__X(i, dest__len)] = source[__X(pos + i, source__len)];
}
@ -136,10 +136,10 @@ void Strings_Extract (CHAR *source, LONGINT source__len, int32 pos, int32 n, CHA
__DEL(source);
}
int32 Strings_Pos (CHAR *pattern, LONGINT pattern__len, CHAR *s, LONGINT s__len, int32 pos)
int16 Strings_Pos (CHAR *pattern, LONGINT pattern__len, CHAR *s, LONGINT s__len, int16 pos)
{
int32 _o_result;
int32 n1, n2, i, j;
int16 _o_result;
int16 n1, n2, i, j;
__DUP(pattern, pattern__len, CHAR);
__DUP(s, s__len, CHAR);
n1 = Strings_Length(s, s__len);
@ -174,7 +174,7 @@ int32 Strings_Pos (CHAR *pattern, LONGINT pattern__len, CHAR *s, LONGINT s__len,
void Strings_Cap (CHAR *s, LONGINT s__len)
{
int32 i;
int16 i;
i = 0;
while (s[__X(i, s__len)] != 0x00) {
if (('a' <= s[__X(i, s__len)] && s[__X(i, s__len)] <= 'z')) {
@ -188,9 +188,9 @@ static struct Match__7 {
struct Match__7 *lnk;
} *Match__7_s;
static BOOLEAN M__8 (CHAR *name, LONGINT name__len, CHAR *mask, LONGINT mask__len, int32 n, int32 m);
static BOOLEAN M__8 (CHAR *name, LONGINT name__len, CHAR *mask, LONGINT mask__len, int16 n, int16 m);
static BOOLEAN M__8 (CHAR *name, LONGINT name__len, CHAR *mask, LONGINT mask__len, int32 n, int32 m)
static BOOLEAN M__8 (CHAR *name, LONGINT name__len, CHAR *mask, LONGINT mask__len, int16 n, int16 m)
{
BOOLEAN _o_result;
while ((((n >= 0 && m >= 0)) && mask[__X(m, mask__len)] != '*')) {