From thomas@biostat.washington.edu  Sat May 16 19:04:33 1998
From: thomas@biostat.washington.edu (Thomas Lumley)
Date: Sat, 16 May 1998 11:04:33 -0700 (PDT)
Subject: couldn't find function "print.tframe"
In-Reply-To: <98May15.133522edt.13671@mailgate.bank-banque-canada.ca>
Message-ID: <Pine.SOL.3.95.980516105556.1303A-100000@gorn>

On Fri, 15 May 1998, Paul Gilbert wrote:

> I have an object with an attribute "tframe" for which there is a generic method
> print.tframe and also a method print.tframe.default defined in a library.
> However, when I use attributes(object) I get the message
> 
> $tframe
> Error: couldn't find function "print.tframe"
> 
> It's as if <primitive: attributes> is not looking through the search list?

It's more subtle than this.  If you  do
R> b<-1
R> class(b)<-"foo"
R> print.foo<-function(x) { print("foo\n"); NextMethod()}

Then printing b works perfectly well

R> b
foo
[1] 1
attr(,"class")
[1] "foo"

and the problem arises when you print a list containing b

R> list(b,1)
[[1]]
foo
Error: couldn't find function "print.foo"

The error happens in the NextMethod() call of print.foo(), at line 284 of
objects.c, where do_nextmethod tries to find the function that called it.

	/* set up the arglist */
	s=findFun(CAR(cptr->call), cptr->sysparent);

In the working case, cptr->sysparent is R_GlobalEnv, in the non-working
case it's R_NilValue (ie, NULL)

BTW, the gcc documentation says that if we used gcc -g3 in compiling,
some debuggers would be able to cope with macros like CAR() and TYPEOF().
Does anyone know if gcc is one of them?


Thomas Lumley
------------------------------------------------------+--------
Biostatistics		: "Never attribute to malloc(3) what  :
Uni of Washington	:  can be adequately explained by     :
Box 357232		:  incompetence"                      :
Seattle WA 98195-7232	:				      :
--------------------------------------------------------------


-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._


couldn't find function "print.tframe"
Thomas Lumley