packages feed

inline-r-0.7.0.0: cbits/missing_r.c

// Copyright: (C) 2013 Amgen, Inc.

#include "missing_r.h"
#include <R.h>
#include <R_ext/Rdynload.h>

void freeHsSEXP(SEXP extPtr) {
    hs_free_fun_ptr(R_ExternalPtrAddr(extPtr));
}

SEXP funPtrToSEXP(DL_FUNC pf) {
    SEXP value;
    PROTECT(value = R_MakeExternalPtr(pf, install("native symbol"), R_NilValue));
    R_RegisterCFinalizerEx(value, freeHsSEXP, TRUE);
    UNPROTECT(1);
    return value;
}

// XXX Initializing isRInitialized to 0 here causes GHCi to fail with
// a linking error in Windows x64. But initializing to 2 poses no
// problem!
int isRInitialized = 2;

HsStablePtr rVariables;