[fpc-pascal]2 questions on ansistrings
Marco van de Voort
marcov at stack.nl
Thu Aug 28 08:49:31 CEST 2003
> 1. If a segment is deleted from an ansistring, e.g. ...
>
> s := 'abcdefghijklmnop';
> delete (s, 5, 6);
>
> yielding s = 'abcdelmnop'
>
> ...does the system "shift" the 'lmnop' to the left, or does the string
> get hooked together with pointers, thus saving much time with long strings?
No shifting, ansistrings are not sparse (at least not in this implementation.
Note that sparse strings save time with this kind of operations, but
cost quite some extra time when parsing them.
> 2. Is there any documentation yet of the ansistring internals? If not,
> what file contains the source?
I don't know, but the file is inc/astrings.inc Maybe there are some
asm parts in <processor>.inc too
The idea is quite simple. Ansistrings essentially are pchars, with
alloocation size, length and reference count prefixed on negative
offsets of variable^.
The fact that it has the length, also means that it can contain any
character.
More information about the fpc-pascal
mailing list