David Kastrup <[email protected]> writes:

> Dan Eble <[email protected]> writes:
>
>> On Feb 10, 2020, at 17:47, David Kastrup <[email protected]> wrote:
>>> It will look a bit redundant either way with
>>> 
>>> grob->Get (Grob, "color");
>>> or
>>> grob->grob_set ("stencil", SCM_BOOL_F);
>>
>> "Yuck" either way.  Removing "property" to shorten the name is not a
>> good course of action.
>>
>> My brainstorming without knowing your reasons does not seem likely to
>> help, but what the hey ...
>>
>>     grob->set<Grob_property> ("stencil", SCM_BOOL_F);
>>
>>     grob->set (Grob_property ("stencil"), SCM_BOOL_F);
>>
>>     grob->properties["stencil"] = SCM_BOOL_F; // Too much to ask?
>
> Don't work.  It has to be a macro, and it has to know the type (so it
> cannot figure it out by overloaded or something).

Well...

property_set (grob, "stencil", SCM_BOOL_F);

and

property_get (grob, "color")

In that manner, the macro gets enough of a hold on the type of the
pointer to make this work.  I'll not rule out that one can shimmy enough
of type madness around this to make

property (grob, "stencil") = SCM_BOOL_F;

work but I think that the payoff in relation for the complexity would
not likely be worth it.

-- 
David Kastrup
My replies have a tendency to cause friction.  To help mitigating
damage, feel free to forward problematic posts to me adding a subject
like "timeout 1d" (for a suggested timeout of 1 day) or "offensive".

Reply via email to