[Oberon] TextDesc. Another clarification.

peter at easthope.ca peter at easthope.ca
Sun May 13 17:10:06 CEST 2018


In the Project Oberon books, TextDesc is specified twice.  At the 
beginning of section 5 the private fields are omitted.  They appear 
only well into  section 5.2.  

From: Oberon [mailto:oberon-bounces at lists.inf.ethz.ch] On Behalf Of peter at easthope.ca
Sent: Friday, May 04, 2018 4:15 PM
> Martin Reiser's _The Oberon System_, page 139 has this.
> TYPE
>   Text = POINTER TO TextDesc;
>   TextDesc = RECORD
>     len: LONGINT;
>     notify: Notifier
>   END;

Exactly the same in _Project Oberon_, (1992) Edition 2005, 
"5.1, Text as an abstract data type", page 79.

Then in "5.2 Text Management", page 87,
"We shall now illustrate the piece technique at the example of two important but basic operations: Insert
and read. Let us start with an overview of the data types involved. Apart from some auxiliary private
variables marked with an arrow, the types Text, Buffer, and Reader are already familiar to us from the
previous Section. Type Piece is completely private. It is hidden from the clients.
Text = POINTER TO TextDesc;
Notifier = PROCEDURE (T: Text; op: INTEGER; beg, end: LONGINT);
TextDesc = RECORD
   len: LONGINT;
   notify: Notifier;
-> trailer: Piece;
-> org: LONGINT;
-> pce: Piece
END;"

_Project Oberon_, 2013, page 62.
"Text = POINTER TO TextDesc;
Notifier = PROCEDURE (T: Text; op, beg, end: INTEGER);
TextDesc = RECORD
   len: INTEGER;
   notify: Notifier;
-> trailer: Piece;
-> org: INTEGER;
-> pce: Piece
END;"

In S3 and the Oberon subsystem of A2,
"TextDesc* = RECORD (Objects.ObjDesc)
  len*: LONGINT; (** Text consists of characters 0 to T.len - 1. *)
  obs: Objects.Library;     (* Library containing objects located in text. *)
  trailer: Piece;
  org: LONGINT; (*cache*)
  pce: Piece
END;"

>From Peter de Wachter's emulator, 
"MODULE Texts; (*JG 21.11.90 / NW 11.7.90 / 24.12.95 / 22.11.10 / 18.11.2014*)
  ...
    TextDesc* = RECORD
      len*: LONGINT;
      changed*: BOOLEAN;
      notify*: Notifier;
      trailer: Piece;
      pce: Piece;  (*cache*)
      org: LONGINT; (*cache*)
    END;"

From:	"Skulski, Wojciech" <skulski at pas.rochester.edu>
Date:	Fri, 4 May 2018 15:24:40 +0000
> One of the most confusing aspects of Oberon is the multitude of 
> Oberon languages, modules, and systems, all referred to by the same 
> names like Text.

All of these Oberons have the private fields trailer, org and pce. 
Apparently omitted from the TextDesc at the beginning of section 5 as 
an instructional strategy. 

The biggest difference to understand here is TextDesc being an 
extension of ObjDesc in S3 and A2 Oberon, versus notifier usage in 
other Oberons?  

>From chris at cfbsoftware.com  Wed May  9 15:43:27 2018
> I recommend that you use the latest sources of Project Oberon 2013 from Prof
> Wirth's page as the starting point to build your version of the system. 

The jury has conclusively discarded Objects?

Thanks,                         ... Lyall E.

  


-- 
This message was composed and transmitted by software designed to 
avoid the need, overhead and vulnerability of antivirus software.

123456789 123456789 123456789 123456789 123456789 123456789 123456789
Tel: +1 360 639 0202                                                 
http://easthope.ca/Peter.html              Bcc: peter at easthope. ca


More information about the Oberon mailing list