changed PascalIO.Get behaviour and used Allocate instead of ALLOCATE
authorceriel <none@none>
Mon, 28 Mar 1988 18:15:50 +0000 (18:15 +0000)
committerceriel <none@none>
Mon, 28 Mar 1988 18:15:50 +0000 (18:15 +0000)
lang/m2/libm2/CSP.mod
lang/m2/libm2/PascalIO.mod
lang/m2/libm2/Processes.mod
lang/m2/libm2/Semaphores.mod
lang/m2/libm2/Streams.mod

index 74fdd98..46ee0b4 100644 (file)
@@ -13,7 +13,7 @@ IMPLEMENTATION MODULE CSP;
 
   FROM random  IMPORT  Uniform;
   FROM SYSTEM  IMPORT  BYTE, ADDRESS, NEWPROCESS, TRANSFER;
-  FROM Storage IMPORT  ALLOCATE, DEALLOCATE;
+  FROM Storage IMPORT  Allocate, Deallocate;
   IMPORT       Traps;
 
   CONST        WorkSpaceSize = 1000;
@@ -163,8 +163,8 @@ IMPLEMENTATION MODULE CSP;
   BEGIN
        Pop(free, newprocess);
        IF newprocess = NIL THEN
-               ALLOCATE(newprocess,SIZE(ProcessDescriptor));
-               ALLOCATE(newprocess^.wsp, WorkSpaceSize)
+               Allocate(newprocess,SIZE(ProcessDescriptor));
+               Allocate(newprocess^.wsp, WorkSpaceSize)
        END;
        WITH newprocess^ DO
                father := cp;
@@ -198,7 +198,7 @@ IMPLEMENTATION MODULE CSP;
   PROCEDURE InitChannel(VAR ch: Channel);
   (* Initialize the channel ch *)
   BEGIN
-       ALLOCATE(ch, SIZE(ChannelDescriptor));
+       Allocate(ch, SIZE(ChannelDescriptor));
        WITH ch^ DO
                InitQueue(senders);
                owner := NIL;
@@ -227,7 +227,7 @@ IMPLEMENTATION MODULE CSP;
   BEGIN
        WITH ch^ DO
                Push(cp, senders);
-               ALLOCATE(cp^.msgadr, SIZE(data));
+               Allocate(cp^.msgadr, SIZE(data));
                m := cp^.msgadr;
                cp^.msglen := HIGH(data);
                FOR i := 0 TO HIGH(data) DO
@@ -276,7 +276,7 @@ IMPLEMENTATION MODULE CSP;
                        Push(cp, ready);
                        Push(aux, ready)
                END;
-               DEALLOCATE(aux^.msgadr, aux^.msglen+1);
+               Deallocate(aux^.msgadr, aux^.msglen+1);
                DoTransfer
        END
   END Receive;
@@ -338,7 +338,7 @@ IMPLEMENTATION MODULE CSP;
 BEGIN
        InitQueue(free);
        InitQueue(ready);
-       ALLOCATE(cp,SIZE(ProcessDescriptor));
+       Allocate(cp,SIZE(ProcessDescriptor));
        WITH cp^ DO
                sons := 0;
                father := NIL
index 07703a7..418315b 100644 (file)
@@ -17,7 +17,7 @@ IMPLEMENTATION MODULE PascalIO;
   FROM Streams IMPORT Stream, StreamKind, StreamMode, StreamResult,
                      InputStream, OutputStream, OpenStream, CloseStream, 
                      EndOfStream, Read, Write, StreamBuffering;
-  FROM Storage IMPORT ALLOCATE;
+  FROM Storage IMPORT Allocate;
   FROM SYSTEM IMPORT ADR;
 
   TYPE charset = SET OF CHAR;
@@ -98,7 +98,7 @@ IMPLEMENTATION MODULE PascalIO;
                Xtext := Xtext^.next;
        END;
        IF Xtext = NIL THEN
-               ALLOCATE(Xtext,SIZE(IOstream));
+               Allocate(Xtext,SIZE(IOstream));
                Xtext^.next := head;
                head := Xtext;
        END;
@@ -125,14 +125,20 @@ IMPLEMENTATION MODULE PascalIO;
        WITH InputText^ DO
                IF type # Preading THEN Error(Preading); END;
                IF NOT done THEN
-                       Get(InputText);
-                       done := TRUE;
+                       IF EndOfStream(stream, result) THEN
+                               eof := TRUE;
+                               ch := 0C;
+                       ELSE
+                               Read(stream, ch, result);
+                               done := TRUE;
+                       END;
                END;
                RETURN ch;
        END;
   END NextChar;
 
   PROCEDURE Get(InputText: Text);
+  VAR dummy: CHAR;
   BEGIN
        WITH InputText^ DO
                IF type # Preading THEN Error(Preading); END;
@@ -140,11 +146,8 @@ IMPLEMENTATION MODULE PascalIO;
                        Traps.Message("unexpected EOF");
                        HALT;
                END;
-               IF EndOfStream(stream, result) THEN
-                       eof := TRUE;
-                       ch := 0C;
-               ELSE
-                       Read(stream, ch, result);
+               IF done THEN done := FALSE;
+               ELSE dummy := NextChar(InputText);
                END;
        END;
   END Get;
index 18b28a6..594cf0b 100644 (file)
@@ -8,7 +8,7 @@ IMPLEMENTATION MODULE Processes [1];
 
   FROM SYSTEM IMPORT ADDRESS, TSIZE, NEWPROCESS, TRANSFER;
 
-  FROM Storage IMPORT ALLOCATE;
+  FROM Storage IMPORT Allocate;
 
   FROM Traps IMPORT Message;
 
@@ -28,8 +28,8 @@ IMPLEMENTATION MODULE Processes [1];
        wsp: ADDRESS;
   BEGIN
        s0 := cp;
-       ALLOCATE(wsp, n);
-       ALLOCATE(cp, TSIZE(ProcessDescriptor));
+       Allocate(wsp, n);
+       Allocate(cp, TSIZE(ProcessDescriptor));
        WITH cp^ DO
                next := s0^.next;
                s0^.next := cp;
@@ -94,7 +94,7 @@ IMPLEMENTATION MODULE Processes [1];
   END Init;
 
 BEGIN
-       ALLOCATE(cp, TSIZE(ProcessDescriptor));
+       Allocate(cp, TSIZE(ProcessDescriptor));
        WITH cp^ DO
                next := cp;
                ready := TRUE;
index 7767225..c39473c 100644 (file)
@@ -14,7 +14,7 @@ IMPLEMENTATION MODULE Semaphores [1];
 *)
 
   FROM SYSTEM IMPORT ADDRESS, NEWPROCESS, TRANSFER;
-  FROM Storage IMPORT ALLOCATE;
+  FROM Storage IMPORT Allocate;
   FROM random IMPORT Uniform;
   FROM Traps IMPORT Message;
 
@@ -37,8 +37,8 @@ IMPLEMENTATION MODULE Semaphores [1];
        wsp: ADDRESS;
   BEGIN
        s0 := cp;
-       ALLOCATE(wsp, n);
-       ALLOCATE(cp, SIZE(Process));
+       Allocate(wsp, n);
+       Allocate(cp, SIZE(Process));
        WITH cp^ DO
                next := s0^.next;
                s0^.next := cp;
@@ -67,7 +67,7 @@ IMPLEMENTATION MODULE Semaphores [1];
   PROCEDURE NewSema(n: CARDINAL): Sema;
   VAR  s: Sema;
   BEGIN
-       ALLOCATE(s, SIZE(Semaphore));
+       Allocate(s, SIZE(Semaphore));
        s^.level := n;
        RETURN s;
   END NewSema;
@@ -110,7 +110,7 @@ IMPLEMENTATION MODULE Semaphores [1];
        RETURN FALSE;
   END Runnable;
 BEGIN
-       ALLOCATE(cp, SIZE(Process));
+       Allocate(cp, SIZE(Process));
        WITH cp^ DO
                next := cp;
                waiting := NIL;
index fff8b30..01d938e 100644 (file)
@@ -44,7 +44,7 @@ IMPLEMENTATION MODULE Streams;
                IF NOT Storage.Available(SIZE(IOB)) THEN
                        RETURN;
                END;
-                Storage.ALLOCATE(stream,SIZE(IOB));
+                Storage.Allocate(stream,SIZE(IOB));
                 stream^.next := head;
                 head := stream;
         END;