Hi,

In an effort to learn S4 objects, I am trying to port some  c based tree
code to S4 object.  My immediate goal is to use .Call() interface for
calling my c code from R. My long term goal is to understand how to write c
structs that follows S4 classes and not the other-way-around.

The c struct for the node is :
typedef struct node{
  int c;
  int n;
  inode **nodes;  //length  = n
} inode;

I am trying to define corresponding S4 class. The closest I could come was:
setClassUnion("listOrNULL",members=c("list", "NULL"))
setClass(Class = "Inode", representation(c =
"numeric",n="numeric",nodes="listOrNULL"))

This does not work, as setting an element of the list of nodes in a node
object overwrites the original object. I have read that there are dirty ways
of writing code that gets around this issue. For example, using the assign()
operator.
I am not even sure if it will work.

I would appreciate if someone suggest ways in which this problem is best
approached.
Is it possible to have recursive data-structures within R ?
What is the best way of writing an interface with pre-existing c code?
What are the best practices for deveolping new code in c for such purposes?

Thanks,

Russ

        [[alternative HTML version deleted]]

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to