[Newbies] Tables for WideString?
Алексей
almih99 at mail.ru
Thu Jun 29 18:58:06 UTC 2006
Hello, Yoshiki.
Thanks for detailed answer.
It was in image 3.8 from squeak.org
I fix problem by creating accessors to mentioned tables in String and
overriding them in WideString. Also some small changes in Character
and new class wideCharacterSet.
About "variableWordSubclass" and other.
I have no words... To create class I send message to it superclass!!!
It is beutiful way.
I'd understand how it work only after question was posted. Before I
thought, that it is a kind of 'keyword' :)
Alexei.
>> I have problems with WideString. (realy not with WideString, but
>> debugger brings me to this class). When I send #beginsWith: message to
>> WideString, squeak invokes String>>beginsWith: and this method use
>> String>>findSubstring:in:startingAt:matchTable:
>> For String matchTables (AsciiOrder CaseInsensitiveOrder
>> CaseSensitiveOrder) contains 256 bytes.
>> So when invoked 'matchTable at: myWideChar asciiValue + 1' -- i get
>> error -- 'subscript is out of bounds'.
>>
>> How to fix this?
>> I must create my own huge tables for wide strings?
>
> This must be a bug, I think. It is fixed in Squeakland image, but
> not incorporated into the mainstream yet. What was the version you
> found this?
>
>> And another question.
>> From class definition for WideString
>> 'String variableWordSubclass: #WideString'
>> What means 'variableWordSubclass' and is it restrict me in some way,
>> or I can ignore this?
>
> There is a concept of the "variable class" in Smalltalk. If you
> take an instance of a normal class, its size is fixed (i.e., the
> instance has a number of slots that is defined by the "class shape").
> And, each slot are (usually) named, and the name is used to access
> them in the user code.
>
> For a variable class, its instances can have different size. For
> example, the instances of Array can be different size, but share the
> same behavior provided by the Array class. The slots are index by
> numbers.
>
> A String in Squeak is like an Array. Each (sub-)instance of it can
> have different size. A "variable word class" means that a slot of its
> instance contains a 32-bit word (non-pointer), and a "variable byte
> class" means a slot is 8-bit wide (obviously a non-pointer).
>
> The restriction? You cannot have a named instance variable in
> a non-pointer variable class.
>
> -- Yoshiki
More information about the Beginners
mailing list