lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: C++ question on wrapper API for setting Guile fluids


From: Jean Abou Samra
Subject: Re: C++ question on wrapper API for setting Guile fluids
Date: Thu, 21 Apr 2022 13:05:29 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0

Le 21/04/2022 à 12:58, David Kastrup a écrit :
My personal take on this would move the magic out of the normal reach of
users.  You get (*start-column*) and (*end-column*) which you can use
for accessing the respective fluids but the function *start-column* does
not merely access %start-column but it also registers the associated
impurity for the sake of caching.


Absolutely, I don't want to make the fluids accessible to
anything outside of the property infrastructure. *start-column*
(or whatever name) is an Assumption object. Assumption is
a smob type defining a call () smob procedure. That way, you
can have

(*start-column*)

and

(under-assumptions ((*start-column* 0))
  ...)

and both of these use the fluid as well as other internal members
of the assumption without ever making them accessible. For the
latter, the under-assumptions macro invocation translates to

(ly:run-under-assumption *start-column* 0 (lambda () ...))

which makes the interface completely opaque/encapsulated.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]