[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: get_property vs internal_get_property
From: |
David Kastrup |
Subject: |
Re: get_property vs internal_get_property |
Date: |
Mon, 18 Aug 2014 10:44:37 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.4.50 (gnu/linux) |
Janek Warchoł <address@hidden> writes:
> Hi,
>
> it's time to ask a n00b question and get the elephant (that was
> bothering me for a couple years) out of the room: why do we have - and
> use! - both get_property and internal_get_property? We ought to use
> get_property everywhere, right?
Correct. (internal_)get_property is analogous to
(internal_)set_property, and at least instrumented_set_property can
receive additional file/line number information for diagnostics from the
set_property macro.
> The more Lily code i read, the more i see that get_property is used
> almost everywhere else... Why not define get_property as a member of
> the Grob class, too?
Because it cannot be made to refer to file/line number information then
or be used for instrumentation in a similar manner as set_property.
> We are also converting property names from strings to symbols
> everywhere - for example
>
> SCM meta = info.grob ()->internal_get_property (ly_symbol2scm ("meta"));
>
> What's the reason for that?
Sloppiness?
I see no compelling reason not to use
info.grob ()->get_property ("meta");
here. However, it's conceivable that any instrumentation of
get_property would try recording the accessed grob type, and finding
that might require looking in "meta". So it's conceivable that some
calls of internal_get_property that dig into internals of the grob
rather than "regular" properties have been written using
internal_grob_property in order to avoid useless info or infinite
lookups.
I am not suggesting that this is done consistently and with a rigid
scheme in mind. I am just pointing out some possible historic
reason to make the difference but have not verified to which degree that
theory is supported by the code.
>> https://codereview.appspot.com/127860043/
--
David Kastrup