#include <gstruct/iit-read.h> #include "iit.h" static void R_IIT_free(SEXP iit_R) { IIT_T iit = R_ExternalPtrAddr(iit_R); IIT_free(&iit); } SEXP R_IIT_new(IIT_T iit) { SEXP iit_R; iit_R = R_MakeExternalPtr((void *) iit, R_NilValue, R_NilValue); R_RegisterCFinalizer(iit_R, R_IIT_free); return iit_R; } SEXP R_iit_read(SEXP iitfile_R) { char *iitfile = (char *) CHAR(asChar(iitfile_R)); IIT_T iit = IIT_read(iitfile, /*name*/NULL, /*readonlyp*/true, /*divread*/READ_ALL, /*divstring*/NULL, /*add_iit_p*/false, /*labels_read_p*/true); return R_IIT_new(iit); } /* 'IIT_output_direct' is not included in the libgstruct binary */ /* #include <gstruct/iit-write.h> SEXP R_iit_write(SEXP tally_iit_R, SEXP iitfile_R) { IIT_T tally_iit = (IIT_T) R_ExternalPtrAddr(tally_iit_R); char *iitfile = (char *) CHAR(asChar(iitfile_R)); IIT_output_direct(iitfile, tally_iit, IIT_LATEST_VERSION); return iitfile_R; } */