diff R/rdyncall/R/pack.R @ 0:0cfcc391201f

initial from svn dyncall-1745
author Daniel Adler
date Thu, 19 Mar 2015 22:26:28 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/R/rdyncall/R/pack.R	Thu Mar 19 22:26:28 2015 +0100
@@ -0,0 +1,23 @@
+# Package: rdyncall
+# File: R/pack.R
+# Description: (un-)packing functions for access to C aggregate (struct/union) data types. 
+
+.pack   <- function(x, offset, sigchar, value)
+{
+  char1 <- substr(sigchar,1,1)
+  if (char1 == "*") char1 <- "p"
+  .Call("pack", x, as.integer(offset), char1, value, PACKAGE="rdyncall" )
+}
+
+.unpack <- function(x, offset, sigchar)
+{
+  sigchar <- char1 <- substr(sigchar,1,1)
+  if (char1 == "*") sigchar <- "p"
+  x <- .Call("unpack", x, as.integer(offset), sigchar, PACKAGE="rdyncall" )
+  if (char1 == "*")
+  {
+    attr(x,"basetype") <- substr(sigchar,2,nchar(sigchar))
+  }
+  return(x)
+}
+