lilypond-user
[Top][All Lists]
Advanced

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

Re: type of "location" argument


From: Urs Liska
Subject: Re: type of "location" argument
Date: Wed, 04 Dec 2013 16:41:43 +0100
User-agent: Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Thunderbird/24.0

Am 04.12.2013 16:34, schrieb David Kastrup:
Urs Liska <address@hidden> writes:

Am 04.12.2013 15:00, schrieb Jan-Peter Voigt:
Am 04.12.2013 14:58, schrieb Urs Liska:
Hi,

next helpless question: what Scheme type is the "location" argument used
for Scheme functions?
(write)ing location gives
Hi, its:
ly:input-location?

HTH
Unfortunately not (TH).
Wanna bet?

This is what redirects me to

Input *
unsmob_input (SCM s)
{
   if (SCM_IMP (s))
     return 0;
   if (SCM_CAR (s) == (SCM)input_tag) // ugh.
     return (Input *) SCM_CDR (s);
   else
     return 0;
}

And that's where I get stuck. This function looks like it somehow
munges a Scheme pair or list, so I tried to access it through
(car location)
but that didn't work.
Oh, that's bloody entrails you are dealing with here, the raw C++ code
used for implementing a Scheme type.  You don't want to go there.  Not
even the C++ code wants to go there more than once.

Which isn't surprising because the original (write) would have printed
something like (location "...") if it were a list, isn't it?
#<...> basically means "Uh, I have no way of printing this primitive
type in a way that could be read back in, but here is some information
anyway."

The naming consistency for input locations and their related Scheme and
C++ types and print results is actually screwed up much more than any
other type I can think of.  It was probably implemented before Jan and
Han-Wen figured out how to do things systematically.

You won't learn anything useful from _this_ code.

What are you trying to achieve?


I want to write a function \annotate that (among other things) does
- use the location to write out annotation lists to auxiliary files, for this I need the separate parts of the location - print a message to the console like ly:input-message, but without quoting what is in the input file at the location.

I'm quite sure Jan-Peter's answer will keep me going (until the next obstacle arrives ...)

Thanks
Urs



reply via email to

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