Prevent cloning of clones
Adde
adde at trialcode.com
Wed Apr 27 01:26:30 PDT 2005
Replying to myself here, the last code snippet should be:
uv@(Pixel baseValue traits) toXML [
(uv value toXML) ; (uv unit abbrev toXML)
].
since you don't wan't to dispatch on that specific object.
/Adde
Adde wrote:
> Brian Rice wrote:
>
>> On Apr 26, 2005, at 1:54 PM, Brian Rice wrote:
>>
>>> On Apr 26, 2005, at 1:37 PM, Adde wrote:
>>>
>>>> It's highly likely that this is just me programming
>>>> over-defensively. I've spent a considerable part of my life trying
>>>> to please C++.
>>>> But, I feel that the only Units that should be used with toXML are
>>>> Units for which someone has specified an XML representation
>>>> (overridden toXML). Lengths counts as SVG units the second someone
>>>> specifies how a Length should be formatted in in an SVG Document.
>>>> This feels like a problem that's bound to come up again, that you
>>>> wan't to add special formatting to specific kinds of Units (instead
>>>> of adding it to BaseUnit).
>>>> I fully agree that the Pixel unit probably belongs in some kind of
>>>> Graphics namespace, though.
>>>
>>>
>>>
>>> Fair enough. I can add Length/other-dimension subtypings for the
>>> various kinds of units for dispatch hooks.
>>
>>
>>
>> I'm going to delay adding this yet, as I'm not sure if it'd work fine
>> in the obvious manner, although there is already TemperatureUnit
>> distinguished from other types. It'll probably happen soon.
>
>
> I can see where it could be useful to have a hierarchy to enable you
> to override behaviour for entire subtrees of Units. In this case I'm
> probably better of overriding individually for each of the units I'm
> interested in (cm, mm, em and px) though.
>
> What I wan't to do is overriding formatting behaviour for UnitValues
> having specific Units.
> As I understand it the only way to dispatch formatting of a UnitValue
> on it's Unit is by overriding the creation of UnitValues for that
> specific Unit and then dispatching on the type of UnitValue as ususal.
> Am I missing something? Is it possible to dispatch on slots of an object?
> One way to make it easier would be if each Unit contained a slot with
> it's own UnitValue that is cloned when creating values, then you could
> dispatch on it like this:
>
> uv@(Pixel baseValue) toXML [
> (uv value toXML) ; (uv unit abbrev toXML)
> ].
>
>>> On a related note, the with: message is supposed to work with
>>> arbitrary objects (e.g. "4 with: lobby" should turn into "4
>>> lobbies"), and doesn't, so I'll fix that while my mind is on it as
>>> well.
>>
>>
>>
>> This is done, although I backed away from the printout style. I also
>> renamed with: to of: since it reads better (and we have other
>> selectors with with: keywords). Now it'll do "4 of: Namespace" for "4
>> of: lobby" - it's not terribly good, just counting things that
>> satisfy isSameAs: but that can be parametrized. I'm sure I won't hear
>> about this feature for a few months at least, though.
>>
> of: is definitely better than with:.
>
>> --
>> Brian T. Rice
>> LOGOS Research and Development
>> http://tunes.org/~water/
>>
> /Adde
>
More information about the Slate
mailing list