From 797ea84f14c09ffbe4ac4b2499d4f556a1a58aaa Mon Sep 17 00:00:00 2001 From: Norayr Chilingarian Date: Wed, 28 Jan 2015 19:36:22 +0400 Subject: [PATCH] ulmIntOperatins ported. x11 modules moved to separate directory and won't be compiled by default. x11 test cases updated. -- noch --- makefile | 6 +- makefile.darwin.clang.x86_64 | 5 +- makefile.freebsd.clang.x86_64 | 4 +- makefile.linux.clang.powerpc | 6 +- makefile.linux.clang.x86_64 | 6 +- makefile.linux.gcc.armv6j | 6 +- makefile.linux.gcc.armv6j_hardfp | 6 +- makefile.linux.gcc.armv7a_hardfp | 6 +- makefile.linux.gcc.powerpc | 6 +- makefile.linux.gcc.x86 | 6 +- makefile.linux.gcc.x86_64 | 6 +- src/lib/{ooc => oocX11}/oocX11.Mod | 0 src/lib/{ooc => oocX11}/oocXYplane.Mod | 0 src/lib/{ooc => oocX11}/oocXutil.Mod | 0 src/lib/ulm/ulmIntOperations.Mod | 353 +++++++++++++++++++++++++ src/test/x11/0/makefile | 7 +- src/test/x11/IFS/makefile | 4 +- src/test/x11/mines/makefile | 4 +- src/test/x11/pacman/makefile | 4 +- src/test/x11/tetris/makefile | 4 +- src/test/x11/tron/makefile | 4 +- src/test/x11/vier/makefile | 4 +- 22 files changed, 395 insertions(+), 52 deletions(-) rename src/lib/{ooc => oocX11}/oocX11.Mod (100%) rename src/lib/{ooc => oocX11}/oocXYplane.Mod (100%) rename src/lib/{ooc => oocX11}/oocXutil.Mod (100%) create mode 100644 src/lib/ulm/ulmIntOperations.Mod diff --git a/makefile b/makefile index b12dd440..3d2af03c 100644 --- a/makefile +++ b/makefile @@ -29,7 +29,7 @@ CCOPT = -fPIC $(INCLUDEPATH) -g SHRLIBEXT = so CC = $(CCOMP) $(CCOPT) -c CL = $(CCOMP) $(CCOPT) -LD = $(CCOMP) -shared -lX11 -o $(LIBRARY).$(SHRLIBEXT) +LD = $(CCOMP) -shared -o $(LIBRARY).$(SHRLIBEXT) # s is necessary to create index inside a archive ARCHIVE = ar rcs $(LIBRARY).a @@ -164,9 +164,6 @@ stage6: $(VOCSTATIC) -sP oocFilenames.Mod $(VOCSTATIC) -sP oocwrapperlibc.Mod $(VOCSTATIC) -sP oocC.Mod - $(VOCSTATIC) -sP oocX11.Mod - $(VOCSTATIC) -sP oocXutil.Mod - $(VOCSTATIC) -sP oocXYplane.Mod #Ulm's Oberon system libs $(VOCSTATIC) -sP ulmSys.Mod @@ -223,6 +220,7 @@ stage6: $(VOCSTATIC) -sP ulmConclusions.Mod $(VOCSTATIC) -sP ulmRandomGenerators.Mod $(VOCSTATIC) -sP ulmTCrypt.Mod + $(VOCSTATIC) -sP ulmIntOperations.Mod #pow32 libs $(VOCSTATIC) -sP powStrings.Mod diff --git a/makefile.darwin.clang.x86_64 b/makefile.darwin.clang.x86_64 index ae42f938..fef4068d 100644 --- a/makefile.darwin.clang.x86_64 +++ b/makefile.darwin.clang.x86_64 @@ -165,10 +165,6 @@ stage6: $(VOCSTATIC) -sP oocFilenames.Mod $(VOCSTATIC) -sP oocwrapperlibc.Mod $(VOCSTATIC) -sP oocC.Mod - #no X11 on macosx - #$(VOCSTATIC) -sP oocX11.Mod - #$(VOCSTATIC) -sP oocXutil.Mod - #$(VOCSTATIC) -sP oocXYplane.Mod #Ulm's Oberon system libs $(VOCSTATIC) -sP ulmSys.Mod @@ -225,6 +221,7 @@ stage6: $(VOCSTATIC) -sP ulmConclusions.Mod $(VOCSTATIC) -sP ulmRandomGenerators.Mod $(VOCSTATIC) -sP ulmTCrypt.Mod + $(VOCSTATIC) -sP ulmIntOperations.Mod #pow32 libs $(VOCSTATIC) -sP powStrings.Mod diff --git a/makefile.freebsd.clang.x86_64 b/makefile.freebsd.clang.x86_64 index a6ecf136..852bf706 100644 --- a/makefile.freebsd.clang.x86_64 +++ b/makefile.freebsd.clang.x86_64 @@ -164,9 +164,6 @@ stage6: $(VOCSTATIC) -sP oocFilenames.Mod $(VOCSTATIC) -sP oocwrapperlibc.Mod $(VOCSTATIC) -sP oocC.Mod -# $(VOCSTATIC) -sP oocX11.Mod -# $(VOCSTATIC) -sP oocXutil.Mod -# $(VOCSTATIC) -sP oocXYplane.Mod #Ulm's Oberon system libs $(VOCSTATIC) -sP ulmSys.Mod @@ -223,6 +220,7 @@ stage6: $(VOCSTATIC) -sP ulmConclusions.Mod $(VOCSTATIC) -sP ulmRandomGenerators.Mod $(VOCSTATIC) -sP ulmTCrypt.Mod + $(VOCSTATIC) -sP ulmIntOperations.Mod #pow32 libs $(VOCSTATIC) -sP powStrings.Mod diff --git a/makefile.linux.clang.powerpc b/makefile.linux.clang.powerpc index 72456fe6..8f4a78b2 100644 --- a/makefile.linux.clang.powerpc +++ b/makefile.linux.clang.powerpc @@ -29,7 +29,7 @@ CCOPT = -fPIC $(INCLUDEPATH) -g SHRLIBEXT = so CC = $(CCOMP) $(CCOPT) -c CL = $(CCOMP) $(CCOPT) -LD = $(CCOMP) -shared -lX11 -o $(LIBRARY).$(SHRLIBEXT) +LD = $(CCOMP) -shared -o $(LIBRARY).$(SHRLIBEXT) # s is necessary to create index inside a archive ARCHIVE = ar rcs $(LIBRARY).a @@ -164,9 +164,6 @@ stage6: $(VOCSTATIC) -sP oocFilenames.Mod $(VOCSTATIC) -sP oocwrapperlibc.Mod $(VOCSTATIC) -sP oocC.Mod - $(VOCSTATIC) -sP oocX11.Mod - $(VOCSTATIC) -sP oocXutil.Mod - $(VOCSTATIC) -sP oocXYplane.Mod #Ulm's Oberon system libs $(VOCSTATIC) -sP ulmSys.Mod @@ -223,6 +220,7 @@ stage6: $(VOCSTATIC) -sP ulmConclusions.Mod $(VOCSTATIC) -sP ulmRandomGenerators.Mod $(VOCSTATIC) -sP ulmTCrypt.Mod + $(VOCSTATIC) -sP ulmIntOperations.Mod #pow32 libs $(VOCSTATIC) -sP powStrings.Mod diff --git a/makefile.linux.clang.x86_64 b/makefile.linux.clang.x86_64 index 93c292e6..8dbe2714 100644 --- a/makefile.linux.clang.x86_64 +++ b/makefile.linux.clang.x86_64 @@ -29,7 +29,7 @@ CCOPT = -fPIC $(INCLUDEPATH) -g SHRLIBEXT = so CC = $(CCOMP) $(CCOPT) -c CL = $(CCOMP) $(CCOPT) -LD = $(CCOMP) -shared -lX11 -o $(LIBRARY).$(SHRLIBEXT) +LD = $(CCOMP) -shared -o $(LIBRARY).$(SHRLIBEXT) # s is necessary to create index inside a archive ARCHIVE = ar rcs $(LIBRARY).a @@ -164,9 +164,6 @@ stage6: $(VOCSTATIC) -sP oocFilenames.Mod $(VOCSTATIC) -sP oocwrapperlibc.Mod $(VOCSTATIC) -sP oocC.Mod - $(VOCSTATIC) -sP oocX11.Mod - $(VOCSTATIC) -sP oocXutil.Mod - $(VOCSTATIC) -sP oocXYplane.Mod #Ulm's Oberon system libs $(VOCSTATIC) -sP ulmSys.Mod @@ -223,6 +220,7 @@ stage6: $(VOCSTATIC) -sP ulmConclusions.Mod $(VOCSTATIC) -sP ulmRandomGenerators.Mod $(VOCSTATIC) -sP ulmTCrypt.Mod + $(VOCSTATIC) -sP ulmIntOperations.Mod #pow32 libs $(VOCSTATIC) -sP powStrings.Mod diff --git a/makefile.linux.gcc.armv6j b/makefile.linux.gcc.armv6j index 05d16a1c..d4d5e6ab 100644 --- a/makefile.linux.gcc.armv6j +++ b/makefile.linux.gcc.armv6j @@ -29,7 +29,7 @@ CCOPT = -fPIC $(INCLUDEPATH) -g SHRLIBEXT = so CC = $(CCOMP) $(CCOPT) -c CL = $(CCOMP) $(CCOPT) -LD = $(CCOMP) -shared -lX11 -o $(LIBRARY).$(SHRLIBEXT) +LD = $(CCOMP) -shared -o $(LIBRARY).$(SHRLIBEXT) # s is necessary to create index inside a archive ARCHIVE = ar rcs $(LIBRARY).a @@ -164,9 +164,6 @@ stage6: $(VOCSTATIC) -sP oocFilenames.Mod $(VOCSTATIC) -sP oocwrapperlibc.Mod $(VOCSTATIC) -sP oocC.Mod - $(VOCSTATIC) -sP oocX11.Mod - $(VOCSTATIC) -sP oocXutil.Mod - $(VOCSTATIC) -sP oocXYplane.Mod #Ulm's Oberon system libs $(VOCSTATIC) -sP ulmSys.Mod @@ -223,6 +220,7 @@ stage6: $(VOCSTATIC) -sP ulmConclusions.Mod $(VOCSTATIC) -sP ulmRandomGenerators.Mod $(VOCSTATIC) -sP ulmTCrypt.Mod + $(VOCSTATIC) -sP ulmIntOperations.Mod #pow32 libs $(VOCSTATIC) -sP powStrings.Mod diff --git a/makefile.linux.gcc.armv6j_hardfp b/makefile.linux.gcc.armv6j_hardfp index ecd54f8a..6b178c1c 100644 --- a/makefile.linux.gcc.armv6j_hardfp +++ b/makefile.linux.gcc.armv6j_hardfp @@ -29,7 +29,7 @@ CCOPT = -fPIC $(INCLUDEPATH) -g SHRLIBEXT = so CC = $(CCOMP) $(CCOPT) -c CL = $(CCOMP) $(CCOPT) -LD = $(CCOMP) -shared -lX11 -o $(LIBRARY).$(SHRLIBEXT) +LD = $(CCOMP) -shared -o $(LIBRARY).$(SHRLIBEXT) # s is necessary to create index inside a archive ARCHIVE = ar rcs $(LIBRARY).a @@ -164,9 +164,6 @@ stage6: $(VOCSTATIC) -sP oocFilenames.Mod $(VOCSTATIC) -sP oocwrapperlibc.Mod $(VOCSTATIC) -sP oocC.Mod - $(VOCSTATIC) -sP oocX11.Mod - $(VOCSTATIC) -sP oocXutil.Mod - $(VOCSTATIC) -sP oocXYplane.Mod #Ulm's Oberon system libs $(VOCSTATIC) -sP ulmSys.Mod @@ -223,6 +220,7 @@ stage6: $(VOCSTATIC) -sP ulmConclusions.Mod $(VOCSTATIC) -sP ulmRandomGenerators.Mod $(VOCSTATIC) -sP ulmTCrypt.Mod + $(VOCSTATIC) -sP ulmIntOperations.Mod #pow32 libs $(VOCSTATIC) -sP powStrings.Mod diff --git a/makefile.linux.gcc.armv7a_hardfp b/makefile.linux.gcc.armv7a_hardfp index c3f872c3..316d17c5 100644 --- a/makefile.linux.gcc.armv7a_hardfp +++ b/makefile.linux.gcc.armv7a_hardfp @@ -29,7 +29,7 @@ CCOPT = -fPIC $(INCLUDEPATH) -g SHRLIBEXT = so CC = $(CCOMP) $(CCOPT) -c CL = $(CCOMP) $(CCOPT) -LD = $(CCOMP) -shared -lX11 -o $(LIBRARY).$(SHRLIBEXT) +LD = $(CCOMP) -shared -o $(LIBRARY).$(SHRLIBEXT) # s is necessary to create index inside a archive ARCHIVE = ar rcs $(LIBRARY).a @@ -164,9 +164,6 @@ stage6: $(VOCSTATIC) -sP oocFilenames.Mod $(VOCSTATIC) -sP oocwrapperlibc.Mod $(VOCSTATIC) -sP oocC.Mod - $(VOCSTATIC) -sP oocX11.Mod - $(VOCSTATIC) -sP oocXutil.Mod - $(VOCSTATIC) -sP oocXYplane.Mod #Ulm's Oberon system libs $(VOCSTATIC) -sP ulmSys.Mod @@ -223,6 +220,7 @@ stage6: $(VOCSTATIC) -sP ulmConclusions.Mod $(VOCSTATIC) -sP ulmRandomGenerators.Mod $(VOCSTATIC) -sP ulmTCrypt.Mod + $(VOCSTATIC) -sP ulmIntOperations.Mod #pow32 libs $(VOCSTATIC) -sP powStrings.Mod diff --git a/makefile.linux.gcc.powerpc b/makefile.linux.gcc.powerpc index 36959e0c..2516e380 100644 --- a/makefile.linux.gcc.powerpc +++ b/makefile.linux.gcc.powerpc @@ -29,7 +29,7 @@ CCOPT = -fPIC $(INCLUDEPATH) -g SHRLIBEXT = so CC = $(CCOMP) $(CCOPT) -c CL = $(CCOMP) $(CCOPT) -LD = $(CCOMP) -shared -lX11 -o $(LIBRARY).$(SHRLIBEXT) +LD = $(CCOMP) -shared -o $(LIBRARY).$(SHRLIBEXT) # s is necessary to create index inside a archive ARCHIVE = ar rcs $(LIBRARY).a @@ -164,9 +164,6 @@ stage6: $(VOCSTATIC) -sP oocFilenames.Mod $(VOCSTATIC) -sP oocwrapperlibc.Mod $(VOCSTATIC) -sP oocC.Mod - $(VOCSTATIC) -sP oocX11.Mod - $(VOCSTATIC) -sP oocXutil.Mod - $(VOCSTATIC) -sP oocXYplane.Mod #Ulm's Oberon system libs $(VOCSTATIC) -sP ulmSys.Mod @@ -223,6 +220,7 @@ stage6: $(VOCSTATIC) -sP ulmConclusions.Mod $(VOCSTATIC) -sP ulmRandomGenerators.Mod $(VOCSTATIC) -sP ulmTCrypt.Mod + $(VOCSTATIC) -sP ulmIntOperations.Mod #pow32 libs $(VOCSTATIC) -sP powStrings.Mod diff --git a/makefile.linux.gcc.x86 b/makefile.linux.gcc.x86 index 7a03a73c..23bd6356 100644 --- a/makefile.linux.gcc.x86 +++ b/makefile.linux.gcc.x86 @@ -29,7 +29,7 @@ CCOPT = -fPIC $(INCLUDEPATH) -g SHRLIBEXT = so CC = $(CCOMP) $(CCOPT) -c CL = $(CCOMP) $(CCOPT) -LD = $(CCOMP) -shared -lX11 -o $(LIBRARY).$(SHRLIBEXT) +LD = $(CCOMP) -shared -o $(LIBRARY).$(SHRLIBEXT) # s is necessary to create index inside a archive ARCHIVE = ar rcs $(LIBRARY).a @@ -164,9 +164,6 @@ stage6: $(VOCSTATIC) -sP oocFilenames.Mod $(VOCSTATIC) -sP oocwrapperlibc.Mod $(VOCSTATIC) -sP oocC.Mod - $(VOCSTATIC) -sP oocX11.Mod - $(VOCSTATIC) -sP oocXutil.Mod - $(VOCSTATIC) -sP oocXYplane.Mod #Ulm's Oberon system libs $(VOCSTATIC) -sP ulmSys.Mod @@ -223,6 +220,7 @@ stage6: $(VOCSTATIC) -sP ulmConclusions.Mod $(VOCSTATIC) -sP ulmRandomGenerators.Mod $(VOCSTATIC) -sP ulmTCrypt.Mod + $(VOCSTATIC) -sP ulmIntOperations.Mod #pow32 libs $(VOCSTATIC) -sP powStrings.Mod diff --git a/makefile.linux.gcc.x86_64 b/makefile.linux.gcc.x86_64 index 66282a59..068dc11a 100644 --- a/makefile.linux.gcc.x86_64 +++ b/makefile.linux.gcc.x86_64 @@ -29,7 +29,7 @@ CCOPT = -fPIC $(INCLUDEPATH) -g SHRLIBEXT = so CC = $(CCOMP) $(CCOPT) -c CL = $(CCOMP) $(CCOPT) -LD = $(CCOMP) -shared -lX11 -o $(LIBRARY).$(SHRLIBEXT) +LD = $(CCOMP) -shared -o $(LIBRARY).$(SHRLIBEXT) # s is necessary to create index inside a archive ARCHIVE = ar rcs $(LIBRARY).a @@ -164,9 +164,6 @@ stage6: $(VOCSTATIC) -sP oocFilenames.Mod $(VOCSTATIC) -sP oocwrapperlibc.Mod $(VOCSTATIC) -sP oocC.Mod - $(VOCSTATIC) -sP oocX11.Mod - $(VOCSTATIC) -sP oocXutil.Mod - $(VOCSTATIC) -sP oocXYplane.Mod #Ulm's Oberon system libs $(VOCSTATIC) -sP ulmSys.Mod @@ -223,6 +220,7 @@ stage6: $(VOCSTATIC) -sP ulmConclusions.Mod $(VOCSTATIC) -sP ulmRandomGenerators.Mod $(VOCSTATIC) -sP ulmTCrypt.Mod + $(VOCSTATIC) -sP ulmIntOperations.Mod #pow32 libs $(VOCSTATIC) -sP powStrings.Mod diff --git a/src/lib/ooc/oocX11.Mod b/src/lib/oocX11/oocX11.Mod similarity index 100% rename from src/lib/ooc/oocX11.Mod rename to src/lib/oocX11/oocX11.Mod diff --git a/src/lib/ooc/oocXYplane.Mod b/src/lib/oocX11/oocXYplane.Mod similarity index 100% rename from src/lib/ooc/oocXYplane.Mod rename to src/lib/oocX11/oocXYplane.Mod diff --git a/src/lib/ooc/oocXutil.Mod b/src/lib/oocX11/oocXutil.Mod similarity index 100% rename from src/lib/ooc/oocXutil.Mod rename to src/lib/oocX11/oocXutil.Mod diff --git a/src/lib/ulm/ulmIntOperations.Mod b/src/lib/ulm/ulmIntOperations.Mod new file mode 100644 index 00000000..33ec3161 --- /dev/null +++ b/src/lib/ulm/ulmIntOperations.Mod @@ -0,0 +1,353 @@ +(* Ulm's Oberon Library + Copyright (C) 1989-1997 by University of Ulm, SAI, D-89069 Ulm, Germany + ---------------------------------------------------------------------------- + Ulm's Oberon Library is free software; you can redistribute it + and/or modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either version + 2 of the License, or (at your option) any later version. + + Ulm's Oberon Library is distributed in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied warranty + of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + ---------------------------------------------------------------------------- + E-mail contact: oberon@mathematik.uni-ulm.de + ---------------------------------------------------------------------------- + $Id: IntOperatio.om,v 1.1 1997/04/03 09:38:51 borchert Exp $ + ---------------------------------------------------------------------------- + $Log: IntOperatio.om,v $ + Revision 1.1 1997/04/03 09:38:51 borchert + Initial revision + + ---------------------------------------------------------------------------- +*) + +MODULE ulmIntOperations; (* Frank B.J. Fischer *) + + IMPORT Operations := ulmOperations, PersistentObjects := ulmPersistentObjects, Services := ulmServices, Streams := ulmStreams, Types := ulmTypes, SYSTEM; + +(* SYSTEM added to make casts necessary to port ulm library because ulm compiler is not as strict (read it's wrong) as it had to be --noch *) + + CONST + mod* = 5; pow* = 6; inc* = 7; dec* = 8; mmul* = 9; mpow* = 10; + odd* = 11; shift* = 12; + + TYPE + Operation* = Operations.Operation; (* Operations.add..mpow *) + Operand* = POINTER TO OperandRec; + + TYPE + CapabilitySet* = Operations.CapabilitySet; + (* SET of [Operations.add..shift] *) + IsLargeEnoughForProc* = PROCEDURE (op: Operations.Operand; + n: LONGINT): BOOLEAN; + UnsignedProc* = PROCEDURE (op: Operations.Operand): BOOLEAN; + IntToOpProc* = PROCEDURE (int32: Types.Int32; VAR op: Operations.Operand); + OpToIntProc* = PROCEDURE (op: Operations.Operand; VAR int32: Types.Int32); + Log2Proc* = PROCEDURE (op: Operations.Operand): LONGINT; + OddProc* = PROCEDURE (op: Operations.Operand): BOOLEAN; + ShiftProc* = PROCEDURE (op: Operations.Operand; + n: INTEGER): Operations.Operand; + IntOperatorProc* = PROCEDURE(op: Operation; + op1, op2, op3: Operations.Operand; + VAR result: Operations.Operand); + Interface* = POINTER TO InterfaceRec; + InterfaceRec* = RECORD + (Operations.InterfaceRec) + isLargeEnoughFor*: IsLargeEnoughForProc; + unsigned* : UnsignedProc; + intToOp* : IntToOpProc; + opToInt* : OpToIntProc; + log2* : Log2Proc; + odd* : OddProc; + shift* : ShiftProc; + intOp* : IntOperatorProc; + END; + + TYPE + OperandRec* = RECORD + (Operations.OperandRec); + (* private components *) + if : Interface; + caps: CapabilitySet; + END; + + VAR + operandType: Services.Type; + + + PROCEDURE Init*(op: Operand; if: Interface; caps: CapabilitySet); + BEGIN + Operations.Init(op, if, caps); + op.if := if; + op.caps := caps; + END Init; + + + PROCEDURE Capabilities*(op: Operand): CapabilitySet; + BEGIN + RETURN op.caps + END Capabilities; + + + PROCEDURE IsLargeEnoughFor*(op: Operations.Operand; n: LONGINT): BOOLEAN; + BEGIN + WITH op: Operand DO + RETURN op.if.isLargeEnoughFor(op, n) + END; + END IsLargeEnoughFor; + + + PROCEDURE Unsigned*(op: Operations.Operand): BOOLEAN; + BEGIN + WITH op: Operand DO + RETURN op.if.unsigned(op) + END; + END Unsigned; + + + PROCEDURE IntToOp*(int32: Types.Int32; VAR op: Operations.Operand); + (* converts int32 into operand type, and stores result in already + initialized op + *) + BEGIN + (*WITH op: Operand DO*) + (* + with original ulm source we were getting: + + WITH op: Operand DO + ^ + pos 4101 err 245 guarded pointer variable may be manipulated by non-local operations; use auxiliary pointer variable + + thus we considered changing WITH op: Operand by op(Operand) + + -- noch + + *) + (*ASSERT(op.if # NIL);*) + ASSERT(op(Operand).if # NIL); + (*op.if.intToOp(int32, op);*) + op(Operand).if.intToOp(int32, op(Operations.Operand)); + (*END;*) + END IntToOp; + + + PROCEDURE OpToInt*(op: Operations.Operand; VAR int32: Types.Int32); + (* converts op into int32 *) + BEGIN + WITH op: Operand DO + op.if.opToInt(op, int32); + END; + END OpToInt; + + + PROCEDURE Log2*(op: Operations.Operand): LONGINT; + BEGIN + WITH op: Operand DO + RETURN op.if.log2(op) + END; + END Log2; + + + PROCEDURE Odd*(op: Operations.Operand): BOOLEAN; + BEGIN + WITH op: Operand DO + ASSERT(odd IN op.caps); + RETURN op.if.odd(op) + END; + END Odd; + + + PROCEDURE Op(op: Operation; op1, op2, op3: Operations.Operand; + VAR result: Operations.Operand); + VAR + tmpresult: Operations.Operand; + BEGIN + WITH op1: Operand DO + IF (op2#NIL) & (op3#NIL) THEN + ASSERT((op1.if = op2(Operand).if) & + (op2(Operand).if = op3(Operand).if)); + ELSIF (op2#NIL) THEN + ASSERT(op1.if = op2(Operand).if); + END; + ASSERT(op IN op1.caps); + op1.if.create(tmpresult); + op1.if.intOp(op, op1, op2, op3, tmpresult); + result := tmpresult; + END; + END Op; + + + PROCEDURE Shift*(op1: Operations.Operand; n: INTEGER): Operations.Operand; + BEGIN + WITH op1: Operand DO + ASSERT(shift IN op1.caps); + RETURN op1.if.shift(op1,n); + END; + END Shift; + + + PROCEDURE Shift2*(VAR op1: Operations.Operand; n: INTEGER); + BEGIN + op1 := Shift(op1, n); + END Shift2; + + + PROCEDURE Shift3*(VAR result: Operations.Operand; op1: Operations.Operand; + n : INTEGER); + VAR + tmpresult: Operations.Operand; + BEGIN + WITH op1: Operand DO + op1.if.create(tmpresult); + tmpresult := Shift(op1, n); + result := tmpresult; + END; + END Shift3; + + + PROCEDURE Inc*(op1: Operations.Operand): Operations.Operand; + VAR + result: Operations.Operand; + BEGIN + result := NIL; + Op(inc,op1,NIL,NIL,result); + RETURN result + END Inc; + + + PROCEDURE Inc2*(VAR op1: Operations.Operand); + BEGIN + Op(inc,op1,NIL,NIL,op1); + END Inc2; + + + PROCEDURE Inc3*(VAR result: Operations.Operand; op1: Operations.Operand); + BEGIN + Op(inc,op1,NIL,NIL,result); + END Inc3; + + + PROCEDURE Dec*(op1: Operations.Operand): Operations.Operand; + VAR + result: Operations.Operand; + BEGIN + result := NIL; + Op(dec,op1,NIL,NIL,result); + RETURN result + END Dec; + + + PROCEDURE Dec2*(VAR op1: Operations.Operand); + BEGIN + Op(dec,op1,NIL,NIL,op1); + END Dec2; + + + PROCEDURE Dec3*(VAR result: Operations.Operand; op1: Operations.Operand); + BEGIN + Op(dec,op1,NIL,NIL,result); + END Dec3; + + + PROCEDURE Mod*(op1, op2: Operations.Operand): Operations.Operand; + VAR + result: Operations.Operand; + BEGIN + result := NIL; + Op(mod, op1, op2, NIL, result); + RETURN result + END Mod; + + + PROCEDURE Mod2*(VAR op1: Operations.Operand; op2: Operations.Operand); + BEGIN + Op(mod, op1, op2, NIL, op1); + END Mod2; + + + PROCEDURE Mod3*(VAR result: Operations.Operand; op1, op2: Operations.Operand); + BEGIN + Op(mod, op1, op2, NIL, result); + END Mod3; + + + PROCEDURE Pow*(op1, op2: Operations.Operand): Operations.Operand; + VAR + result : Operand; + BEGIN + result := NIL; + (*Op(pow, op1, op2, NIL, result);*) + Op(pow, op1, op2, NIL, SYSTEM.VAL(Operations.Operand, result)); (* -- noch *) + RETURN result + END Pow; + + + PROCEDURE Pow2*(VAR op1: Operations.Operand; op2: Operations.Operand); + BEGIN + Op(pow, op1, op2, NIL, op1); + END Pow2; + + + PROCEDURE Pow3*(VAR result: Operations.Operand; op1, op2: Operations.Operand); + BEGIN + Op(pow, op1, op2, NIL, result); + END Pow3; + + + PROCEDURE MMul*(op1, op2, op3: Operations.Operand): Operations.Operand; + VAR + result : Operand; + BEGIN + result := NIL; + (*Op(mmul, op1, op2, op3, result); *) + Op(mmul, op1, op2, op3, SYSTEM.VAL(Operations.Operand, result)); (* --noch*) + RETURN result + END MMul; + + + PROCEDURE MMul2*(VAR op1: Operations.Operand; op2, op3: Operations.Operand); + BEGIN + Op(mmul, op1, op2, op3, op1); + END MMul2; + + + PROCEDURE MMul3*(VAR result: Operations.Operand; + op1, op2, op3: Operations.Operand); + BEGIN + Op(mmul, op1, op2, op3, result); + END MMul3; + + + PROCEDURE MPow*(op1, op2, op3: Operations.Operand): Operations.Operand; + VAR + result : Operand; + BEGIN + result := NIL; + (*Op(mpow, op1, op2, op3, result); *) + Op(mpow, op1, op2, op3, SYSTEM.VAL(Operations.Operand, result)); (* -- noch*) + RETURN result + END MPow; + + + PROCEDURE MPow2*(VAR op1: Operations.Operand; op2, op3: Operations.Operand); + BEGIN + Op(mpow, op1, op2, op3, op1); + END MPow2; + + + PROCEDURE MPow3*(VAR result: Operations.Operand; + op1, op2, op3: Operations.Operand); + BEGIN + Op(mpow, op1, op2, op3, result); + END MPow3; + + +BEGIN + PersistentObjects.RegisterType(operandType,"IntOperations.Operand", + "Operations.Operand", NIL); +END ulmIntOperations. diff --git a/src/test/x11/0/makefile b/src/test/x11/0/makefile index 69ca6f0b..67bf3938 100644 --- a/src/test/x11/0/makefile +++ b/src/test/x11/0/makefile @@ -2,14 +2,15 @@ #CFLAGS=-L/usr/X11R6/lib -lX11 CFLAGS=-lX11 export CFLAGS - -VOC = $(SETPATH) /opt/voc/bin/voc +MOD = MODULES="../../../lib/oocX11" +VOC = $(MOD) /opt/voc/bin/voc all: - $(VOC) -m test.Mod + $(VOC) -s oocX11.Mod oocXutil.Mod oocXYplane.Mod test.Mod -m #$(VOC) -Cm test.Mod #gcc -o test test.o -fPIC -g -I /opt/voc-1.0/src/lib/system/gcc/x86_64 -I /opt/voc-1.0/lib/voc/obj -lVishapOberon -L. -L/opt/voc-1.0/lib -lX11 clean: rm *.c + rm *.h rm *.o diff --git a/src/test/x11/IFS/makefile b/src/test/x11/IFS/makefile index 609ae393..d05ad8f9 100644 --- a/src/test/x11/IFS/makefile +++ b/src/test/x11/IFS/makefile @@ -1,9 +1,11 @@ CFLAGS=-lX11 export CFLAGS -VOC = $(SETPATH) /opt/voc/bin/voc +MOD = MODULES="../../../lib/oocX11" +VOC = $(MOD) /opt/voc/bin/voc all: + $(VOC) -s oocX11.Mod oocXutil.Mod oocXYplane.Mod $(VOC) -s IFS.Mod IFStest.Mod -m #$(VOC) -Cm test.Mod #gcc -o test test.o -fPIC -g -I /opt/voc-1.0/src/lib/system/gcc/x86_64 -I /opt/voc-1.0/lib/voc/obj -lVishapOberon -L. -L/opt/voc-1.0/lib -lX11 diff --git a/src/test/x11/mines/makefile b/src/test/x11/mines/makefile index 41f63d7f..f0c03002 100644 --- a/src/test/x11/mines/makefile +++ b/src/test/x11/mines/makefile @@ -3,9 +3,11 @@ CFLAGS=-lX11 export CFLAGS -VOC = $(SETPATH) /opt/voc/bin/voc +MOD = MODULES="../../../lib/oocX11" +VOC = $(MOD) /opt/voc/bin/voc all: + $(VOC) -s oocX11.Mod oocXutil.Mod oocXYplane.Mod $(VOC) -s compatIn.Mod Linie.Mod Minesweeper.Mod -m #$(VOC) -Cm test.Mod #gcc -o test test.o -fPIC -g -I /opt/voc-1.0/src/lib/system/gcc/x86_64 -I /opt/voc-1.0/lib/voc/obj -lVishapOberon -L. -L/opt/voc-1.0/lib -lX11 diff --git a/src/test/x11/pacman/makefile b/src/test/x11/pacman/makefile index ae28d8a8..59f90e30 100644 --- a/src/test/x11/pacman/makefile +++ b/src/test/x11/pacman/makefile @@ -3,9 +3,11 @@ CFLAGS=-lX11 export CFLAGS -VOC = $(SETPATH) /opt/voc/bin/voc +MOD = MODULES="../../../lib/oocX11" +VOC = $(MOD) /opt/voc/bin/voc all: + $(VOC) -s oocX11.Mod oocXutil.Mod oocXYplane.Mod $(VOC) -s Grafik.Mod PacMan.Mod -m #$(VOC) -Cm test.Mod #gcc -o test test.o -fPIC -g -I /opt/voc-1.0/src/lib/system/gcc/x86_64 -I /opt/voc-1.0/lib/voc/obj -lVishapOberon -L. -L/opt/voc-1.0/lib -lX11 diff --git a/src/test/x11/tetris/makefile b/src/test/x11/tetris/makefile index adf9bc81..466b17f2 100644 --- a/src/test/x11/tetris/makefile +++ b/src/test/x11/tetris/makefile @@ -3,9 +3,11 @@ CFLAGS=-lX11 export CFLAGS -VOC = $(SETPATH) /opt/voc/bin/voc +MOD = MODULES="../../../lib/oocX11" +VOC = $(MOD) /opt/voc/bin/voc all: + $(VOC) -s oocX11.Mod oocXutil.Mod oocXYplane.Mod $(VOC) -s compatIn.Mod Linie.Mod Ziffer.Mod Tetris.Mod -m #$(VOC) -Cm test.Mod #gcc -o test test.o -fPIC -g -I /opt/voc-1.0/src/lib/system/gcc/x86_64 -I /opt/voc-1.0/lib/voc/obj -lVishapOberon -L. -L/opt/voc-1.0/lib -lX11 diff --git a/src/test/x11/tron/makefile b/src/test/x11/tron/makefile index 24c667e3..26bee138 100644 --- a/src/test/x11/tron/makefile +++ b/src/test/x11/tron/makefile @@ -3,9 +3,11 @@ CFLAGS=-lX11 export CFLAGS -VOC = $(SETPATH) /opt/voc/bin/voc +MOD = MODULES="../../../lib/oocX11" +VOC = $(MOD) /opt/voc/bin/voc all: + $(VOC) -s oocX11.Mod oocXutil.Mod oocXYplane.Mod $(VOC) compatIn.Mod Tron.Mod -m #$(VOC) -Cm test.Mod #gcc -o test test.o -fPIC -g -I /opt/voc-1.0/src/lib/system/gcc/x86_64 -I /opt/voc-1.0/lib/voc/obj -lVishapOberon -L. -L/opt/voc-1.0/lib -lX11 diff --git a/src/test/x11/vier/makefile b/src/test/x11/vier/makefile index 3738cd68..06cdaf00 100644 --- a/src/test/x11/vier/makefile +++ b/src/test/x11/vier/makefile @@ -3,9 +3,11 @@ CFLAGS=-lX11 export CFLAGS -VOC = $(SETPATH) /opt/voc/bin/voc +MOD = MODULES="../../../lib/oocX11" +VOC = $(MOD) /opt/voc/bin/voc all: + $(VOC) -s oocX11.Mod oocXutil.Mod oocXYplane.Mod $(VOC) -s compatIn.Mod Ausgabe.Mod Vier.Mod -m #$(VOC) -Cm test.Mod #gcc -o test test.o -fPIC -g -I /opt/voc-1.0/src/lib/system/gcc/x86_64 -I /opt/voc-1.0/lib/voc/obj -lVishapOberon -L. -L/opt/voc-1.0/lib -lX11