[Oberon] Re (2): Explaining Texts.
Jörg
joerg.straube at iaeth.ch
Sat Jul 28 08:50:10 CEST 2018
Lyall E
Here an example:
- Texts.Text represents this string "Hi Lyall, this is a text.". The length "len" of this Text is 25, the character positions "pos" can be 0..24.
- character at position pos=0 is "H", character at position pos=8 is "," character at position pos=13 is an "s".
- if this string was stored in contiguous memory (let's call it "mem"), you could easily find these characters with a simply array access like "ch := mem[pos];"
- But the implementation uses pieces instead of one big chunk of contiguous memory. So the easy array access mentioned above is not possible anymore.
- Let's assume the above Text string is broken down in 4 pieces:
piece 1: "Hi Lyal", pce.len=7 (piece holds character pos=0..6 piece's origin org=0)
piece 2: "l, th", pce.len=5 (piece holds character pos=7..11 piece's origin org=7)
piece 3: "is is a t" pce.len=9 (piece holds character pos=12..20 piece's origin org=12)
piece 4: "ext." pce.len=4 (piece holds character pos=21..24 piece's origin org=21)
- As you can see, if you sum up the len of all pieces you get the len of the text = 25. "org" is the position in the overall text of the first character in the piece.
Instead of a simple memory access, you a) need a procedure to locate the right piece "pce" where "pos" is in, and b) locate the character in that piece, that's pos - org.
The first step a) is done by procedure "FindPiece(T, pos, org, pce)", it translates pos to pce/org.
The result of the last call to FIndPiece is stored (or you can call it cached) in "org" and "pce".
What about the following wording?
- pce: found piece of last search for character position "pos"
- org: character position of first character in "pce"
br
Jörg
Am 28.07.18, 00:43 schrieb "oberon-bounces at lists.inf.ethz.ch im Auftrag von peter at easthope.ca" <oberon-bounces at lists.inf.ethz.ch im Auftrag von peter at easthope.ca>:
From: =?UTF-8?B?SsO2cmc=?= <joerg.straube at iaeth.ch>
Date: Thu, 26 Jul 2018 08:53:12 +0200
> BTW: the two fields "pce" and "org" are not "pointers in a translation
> cache", they are the cache.
Is this any better? (Elliminate the preposition. "translation cache" becomes
attributive to piece.)
org: Offset in characters[0,len) of translation cache piece.
Regards, ... Lyall E.
--
Message 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
--
Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related systems
https://lists.inf.ethz.ch/mailman/listinfo/oberon
More information about the Oberon
mailing list