Um da eventuell weiterzukommen brauchst Du das repository (oder mußt Dich auf die Doku zu ly:assoc-get in der IR verlassen)
Um es mal durchzuexerzieren,
(1)
Im git-repository retourniert
git grep "assoc-get"
sehr viele Treffer, u.a.:
scm/lily-library.scm:(define-public assoc-get ly:assoc-get)
Das ist die komplette Definition, also ein einfacher alias.
(2)
git grep "ly:assoc-get"
retourniert, u.a.:
lily/general-scheme.cc:LY_DEFINE (ly_assoc_get, "ly:assoc-get",
Im C++-file general-scheme.cc kann man dann
LY_DEFINE (ly_assoc_get, "ly:assoc-get",
2, 2, 0,
(SCM key, SCM alist, SCM default_value, SCM strict_checking),
"Return value if @var{key} in @var{alist}, else @var{default-value}"
" (or @code{#f} if not specified). If @var{strict-checking} is set"
" to @code{#t} and @var{key} is not in @var{alist}, a programming_error"
" is output.")
{
LY_ASSERT_TYPE (ly_cheap_is_list, alist, 2);
SCM handle = scm_assoc (key, alist);
if (scm_is_pair (handle))
return scm_cdr (handle);
if (SCM_UNBNDP (default_value))
default_value = SCM_BOOL_F;
if (to_boolean (strict_checking))
{
string key_string = ly_scm2string
(scm_object_to_string (key, SCM_UNDEFINED));
string default_value_string = ly_scm2string
(scm_object_to_string (default_value,
SCM_UNDEFINED));
programming_error ("Cannot find key `"
+ key_string
+ "' in alist, setting to `"
+ default_value_string + "'.");
}
return default_value;
}
finden.
Allerdings brauchst Du git, die C++-files finden sich nicht in den released Versions. Darüberhinaus sind die C++-Sachen nicht durch den user zu beeinflussen. Von einer eigenen Neukompilierung LilyPonds mal abgesehen, was aber natürlich keine gute Idee ist, da letztendlich niemand anderer dann Deine files kompilieren kann. (Ohne Deine Änderungen ebenfalls anzuwenden und welcher user hat schon git, und wieviele davon würden sich dieser Mühe unterziehen ...)
Gruß,
Harm