From romain.francois at dbmail.com  Wed Dec 16 08:12:10 2009
From: romain.francois at dbmail.com (Romain Francois)
Date: Wed, 16 Dec 2009 08:12:10 +0100
Subject: [Rd] S4 dispatch and S3 "connection" objects
In-Reply-To: <4B28212C.3090302@r-project.org>
References: <4B273C8E.9090802@dbmail.com>
	<acbd1aed0912150634v7695318ch8abaf9732efcd771@mail.gmail.com>
	<4B28212C.3090302@r-project.org>
Message-ID: <4B28884A.8040702@dbmail.com>

On 12/16/2009 12:52 AM, John Chambers wrote:
> We should probably incorporate this information in the pre-defined S4
> versions of the classes, since these are basic S3 classes.

That'd be good.

> Anybody see a
> down side?
>
> Meanwhile, your approach is a reasonable workaround.
>
> John
>
> Michael Lawrence wrote:
>> On Mon, Dec 14, 2009 at 11:36 PM, Romain Francois<
>> romain.francois at dbmail.com>  wrote:
>>
>>
>>> Hello,
>>>
>>> I'm trying to get S4 dispatch on S3 "connection" objects.
>>>
>>> So I do :
>>>
>>> setOldClass( "connection" )
>>>
>>> and then :
>>>
>>> setGeneric( "bling", function(object) standardGeneric( "bling" ) )
>>> setMethod( "bling", "connection", function(object) cat( "gotcha ",
>>> as.integer(object), "\n" ) )
>>>
>>> but I get :
>>>
>>> f<- file( "blabla", open = "rb" )
>>>
>>>
>>>> bling( f )
>>>>
>>> Error in function (classes, fdef, mtable)  :
>>>   unable to find an inherited method for function "bling", for signature
>>> "file"
>>>
>>>> class( f )
>>>>
>>> [1] "file"       "connection"
>>>
>>>
>>> Am I supposed to do :
>>>
>>> setOldClass( c("file", "connection" ) )
>>> setOldClass( c("url", "connection" ) )
>>>
>>> and so on for each potential S3 class, or is there another way.
>>>
>>>
>>>
>> That's the way I've always done it.
>>
>> Michael
>>
>>
>>
>>> Romain

-- 
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30
http://romainfrancois.blog.free.fr
|- http://tr.im/HlX9 : new package : bibtex
|- http://tr.im/Gq7i : ohloh
`- http://tr.im/FtUu : new package : highlight



[Rd] S4 dispatch and S3 "connection" objects
Romain Francois