[fpc-devel] Memory consumed by strings
listmember
listmember at letterboxes.org
Sun Nov 23 15:02:16 CET 2008
On 2008-11-23 14:49, Daniël Mantione wrote:
>
> Op Sun, 23 Nov 2008, schreef Jonas Maebe:
>>
>> On 23 Nov 2008, at 13:31, Daniël Mantione wrote:
>>
>>> For an IDE, this is a little bit more complicated. I.e. searching for
>>> a ç in a source file needs to find both the composed and the
>>> decomposed variant, and in the case of UTF-8, this character can be
>>> encoded in 1, 2, 3 or 4 bytes which all need to be found. This is
>>> where UTF-16 and UTF-32 start to make sense.
>>
>> Characters can also be decomposed in UTF-16 and in UTF-32 (for the
>> same reasons as in UTF-8).
>
> I am aware of that, but the combining cedille is not in the "easy to
> process range" of UTF-8. In other words, you cannot do
> "if char[i]=combining_cedille" in UTF-8.
>
> Instead UTF-8, you need to make sure the string has enough characters
> left, and then compare multiple characters. Heck, you even need to take
> care of the fact the the combining cedille can be encoded in 2, 3 or 4
> bytes.
This is one of the million and one small details that one has to keep in
mind while programming.
What I think would more sensible is that, instead of using all these
variable sizes and all, simply use 4-byte/char strings and compose (in
UTF sense) everything into that string.
You do this once, when importing/loading text to your app. And, then on,
everthing is just like the good old string --except that it is a 4-byte
per char string, instead of 1-byte.
Now, my question is this: How would I create a 'FourByteString' type,
reference counted etc. just like the usual 'String'?
How hard is it?
Can someone like me, who does nor speak assembler, do it?
If so, where do I begin copy&pasting from 'string'?
More information about the fpc-devel
mailing list