From jmc at r-project.org  Thu Mar 10 18:47:29 2011
From: jmc at r-project.org (John Chambers)
Date: Thu, 10 Mar 2011 09:47:29 -0800
Subject: [Rd] Testing for a reference class object
In-Reply-To: <AANLkTin4x5a3mWFqQBvcBgBmS5EFpi61uVet-Zda_rsZ@mail.gmail.com>
References: <AANLkTin4x5a3mWFqQBvcBgBmS5EFpi61uVet-Zda_rsZ@mail.gmail.com>
Message-ID: <4D790EB1.9020205@r-project.org>

There is a virtual class "refClass" that all reference classes subclass, 
so is(x, "refClass") is the natural test, as in:

 > foo <- setRefClass("foo", fields = "bar")
 > x <- foo$new()
 > is(x, "refClass")
[1] TRUE


On 3/10/11 7:40 AM, Jeffrey Horner wrote:
> Hi all,
>
> I've constructed the following function to test whether or not an
> object was created from a reference class:
>
> isRefClassObject<- function(x) isS4(x)&&
> is.environment(attr(x,'.xData'))&&
> exists('.refClassDef',attr(x,'.xData'))
>
> but I'm unsure if it's a complete test or if there's a better way to
> test. Regardless, It would be nice to have such a function in the
> methods package.
>
> I have a case where I'd like to ensure that an object is constructed
> from a reference class AND that it implements a certain method:
>
> if (isRefClassObject(x)&&  'run' %in% getRefClass(x)$methods())
>      x$run()
>
> Thanks,
>
> Jeff



[Rd] Testing for a reference class object
John Chambers