lilypond-user
[Top][All Lists]
Advanced

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

Re: type of "location" argument


From: David Kastrup
Subject: Re: type of "location" argument
Date: Wed, 04 Dec 2013 16:34:15 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux)

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?

-- 
David Kastrup



reply via email to

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