John Nolan wrote:
I am trying to call a precompiled C function that uses a struct as one of
it's arguments.
I could write a wrapper function in C, but I was hoping there is some way
to
pack fields into an array of type raw that could be passed directly to the
function.
Here is some more detail. The C struct is simple, but has mixed types:
struct STRUCT1 {
long type;
long nx;
double *x;
double a;
double b;
};
typedef struct STRUCT1 STRUCT1_TYPE;
The C function header is
void func1( long method, STRUCT1 my_struct, double *output);
I would like to have an R list mimicking the C struct,
and then use .C to call func1 with this information, e.g.
my.struct <- list(type=3,nx=5,x=1:5,a=2.5,b=8.3)
my.func1( 3, convert2raw( my.struct ), )
It might be possible, but it would be quite tricky, and I'd guess the
"double *x" would be just about impossible. R has no way to see C level
pointers.
Just write the wrapper in C, it will be easier than writing one in R.
Duncan Murdoch
where R function convert2raw would return a vector of type raw with
the fields of my.struct packed into memory just like STRUCT1, and then
I could call func1 with that vector of raws.
Can I write a convert2raw( ) function and then use
my.func1 <- function( method, buf ) {
a <- .C("func1", as.integer(method), as.raw(buf) , output=double(1)
)
return(a$output)
}
John
...........................................................................
John P. Nolan
Math/Stat Department
227 Gray Hall
American University
4400 Massachusetts Avenue, NW
Washington, DC 20016-8050
[EMAIL PROTECTED]
202.885.3140 voice
202.885.3155 fax
http://academic2.american.edu/~jpnolan
...........................................................................
[[alternative HTML version deleted]]
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.