예제 #1
0
파일: splines.c 프로젝트: csilles/cxxr
void
R_init_splines(DllInfo *dll)
{
    R_registerRoutines(dll, NULL, R_CallDef, NULL, NULL);
    R_useDynamicSymbols(dll, FALSE);
//    R_forceSymbols(dll, TRUE); // too few to worry about, used in cobs*
}
예제 #2
0
파일: gtools_load.c 프로젝트: cran/gtools
void R_init_gtools(DllInfo *info)
{
  /* Register C routines */
  R_registerRoutines (info, cMethods, NULL, NULL, NULL);
  R_useDynamicSymbols(info, FALSE);
  R_forceSymbols     (info, TRUE);
}
예제 #3
0
void R_init_xlsReadWrite(DllInfo *dll)
{
    R_registerRoutines(dll, NULL, R_CallDef, NULL, NULL);
    R_useDynamicSymbols(dll, FALSE);
    Rprintf(crmsg);
    Rprintf(cranmsg);
}
예제 #4
0
파일: init.c 프로젝트: corwinjoy/xts
void R_init_xts(DllInfo *info)
{
  SymbolShortcuts();
  R_registerRoutines(info,
                     NULL,
                     callMethods,
                     NULL,
                     externalMethods);

  R_useDynamicSymbols(info, TRUE);

  /* used by external packages linking to internal xts code from C */
  R_RegisterCCallable("xts","do_is_ordered",(DL_FUNC) &do_is_ordered);
  R_RegisterCCallable("xts","coredata_xts", (DL_FUNC) &coredata_xts);
  R_RegisterCCallable("xts","isXts",        (DL_FUNC) &isXts);
  R_RegisterCCallable("xts","tryXts",       (DL_FUNC) &tryXts);
  R_RegisterCCallable("xts","do_rbind_xts", (DL_FUNC) &do_rbind_xts);
  R_RegisterCCallable("xts","naCheck",      (DL_FUNC) &naCheck);
  R_RegisterCCallable("xts","lagXts",       (DL_FUNC) &lagXts);

  R_RegisterCCallable("xts","make_index_unique", (DL_FUNC) &make_index_unique);
  R_RegisterCCallable("xts","make_unique",       (DL_FUNC) &make_unique);
  R_RegisterCCallable("xts","endpoints",         (DL_FUNC) &endpoints);
  R_RegisterCCallable("xts","do_merge_xts",      (DL_FUNC) &do_merge_xts);
  R_RegisterCCallable("xts","na_omit_xts",       (DL_FUNC) &na_omit_xts);
  R_RegisterCCallable("xts","na_locf",           (DL_FUNC) &na_locf);

  /* used by xts (functions moved from xts to zoo) */
  zoo_lag      = (SEXP(*)(SEXP,SEXP,SEXP)) R_GetCCallable("zoo","zoo_lag");
  zoo_coredata = (SEXP(*)(SEXP,SEXP))      R_GetCCallable("zoo","zoo_coredata");
}
예제 #5
0
파일: register.c 프로젝트: Vladimir84/rcc
void R_init_grid(DllInfo *dll) 
{
    /* No .C, .Fortran, or .External routines => NULL
     */
    R_registerRoutines(dll, NULL, callMethods, NULL, NULL);
    R_useDynamicSymbols(dll, FALSE);
}
예제 #6
0
파일: init.c 프로젝트: Bgods/r-source
R_init_graphics(DllInfo *dll)
{
    R_registerRoutines(dll, NULL, CallEntries, NULL, ExtEntries);
    R_useDynamicSymbols(dll, FALSE);
    R_forceSymbols(dll, TRUE);
    registerBase();
}
예제 #7
0
파일: init.c 프로젝트: csilles/cxxr
void R_init_foreign(DllInfo *dll)
{
    R_registerRoutines(dll, CEntries, CallEntries, NULL, ExtEntries);
    R_useDynamicSymbols(dll, FALSE);
#if defined(R_VERSION) && R_VERSION >= R_Version(3, 0, 0)
    R_forceSymbols(dll, TRUE);
#endif
}
예제 #8
0
파일: init.cpp 프로젝트: rforge/lme4
void R_init_lme4a(DllInfo *dll)
{
    R_registerRoutines(dll, NULL, CallEntries, NULL, NULL);
    R_useDynamicSymbols(dll, (Rboolean)FALSE);

    M_R_cholmod_start(&c);
    c.final_ll = 1;	    /* LL' form of simplicial factorization */
}
예제 #9
0
파일: init.c 프로젝트: cran/frailtypack
void 
attribute_visible 
R_init_frailtypack(DllInfo *dll)
{
    R_registerRoutines(dll, NULL, NULL, FortEntries, NULL);
    R_useDynamicSymbols(dll, FALSE);
	  R_forceSymbols(dll, TRUE);
}
예제 #10
0
파일: init.c 프로젝트: rforge/blme
void R_init_blme(DllInfo *dll)
{
    R_registerRoutines(dll, NULL, CallEntries, NULL, NULL);
    R_useDynamicSymbols(dll, FALSE);


    M_R_cholmod_start(&cholmodCommon);
    cholmodCommon.final_ll = 1;	    /* LL' form of simplicial factorization */

    lme4_ASym = install("A");
    lme4_CmSym = install("Cm");
    lme4_CxSym = install("Cx");
    lme4_DimSym = install("Dim");
    lme4_GpSym = install("Gp");
    lme4_LSym = install("L");
    lme4_RXSym = install("RX");
    lme4_RZXSym = install("RZX");
    lme4_STSym = install("ST");
    lme4_VSym = install("V");
    lme4_XSym = install("X");
    lme4_XstSym = install("Xst");
    lme4_ZtSym = install("Zt");
    lme4_devianceSym = install("deviance");
    lme4_dimsSym = install("dims");
    lme4_envSym = install("env");
    lme4_etaSym = install("eta");
    lme4_fixefSym = install("fixef");
    lme4_flistSym = install("flist");
    lme4_ghwSym = install("ghw");
    lme4_ghxSym = install("ghx");
    lme4_gradientSym = install("gradient");
    lme4_iSym = install("i");
    lme4_ncSym = install("nc");
    lme4_nlmodelSym = install("nlmodel");
    lme4_muEtaSym = install("muEta");
    lme4_muSym = install("mu");
    lme4_offsetSym = install("offset");
    lme4_pSym = install("p");
    lme4_permSym = install("perm");
    lme4_pWtSym = install("pWt");
    lme4_ranefSym = install("ranef");
    lme4_residSym = install("resid");
    lme4_sigmaSym = install("sigma");
    lme4_sqrtrWtSym = install("sqrtrWt");
    lme4_sqrtXWtSym = install("sqrtXWt");
    lme4_uSym = install("u");
    lme4_varSym = install("var");
    lme4_xSym = install("x");
    lme4_ySym = install("y");
    blme_covariancePriorSym           = install("cov.prior");
    blme_unmodeledCoefficientPriorSym = install("fixef.prior");
    blme_commonScalePriorSym          = install("var.prior");
    
    blme_prior_typeSym            = install("type");
    blme_prior_familiesSym        = install("families");
    blme_prior_scalesSym          = install("scales");
    blme_prior_hyperparametersSym = install("hyperparameters");
}
예제 #11
0
void
R_init_causalTree(DllInfo * dll)
{
    R_registerRoutines(dll, NULL, CallEntries, NULL, NULL);
    R_useDynamicSymbols(dll, FALSE);
#if defined(R_VERSION) && R_VERSION >= R_Version(2, 16, 0)
    R_forceSymbols(dll, TRUE);
#endif
}
예제 #12
0
void R_init_myRoutines(DllInfo *info)
{
	/* Register the .Call routines.
	No .C  .Fortran() or .External() routines,
	so pass those arrays as NULL.
	*/
	R_registerRoutines(info, NULL, callMethods, NULL, NULL);
	R_useDynamicSymbols(info, TRUE);
}
예제 #13
0
파일: init.c 프로젝트: cran/aster
void attribute_visible R_init_aster(DllInfo *info)
{
    R_registerRoutines(info, cMethods, callMethods, NULL, NULL);
    R_useDynamicSymbols(info, FALSE);
    R_forceSymbols(info, TRUE);
    R_RegisterCCallable("aster", "aster_mlogl_sat_unco",
        (DL_FUNC) aster_mlogl_sat_unco);
    R_RegisterCCallable("aster", "aster_mlogl_sat_cond",
        (DL_FUNC) aster_mlogl_sat_cond);
}
예제 #14
0
R_init_rgeos(DllInfo *dll) {

//    SEXP INIT;

    R_registerRoutines(dll, CEntries, CallEntries, NULL, NULL); // RSB FIXME
    R_useDynamicSymbols(dll, FALSE);

//    INIT = rgeos_Init();

}
예제 #15
0
파일: init.c 프로젝트: Bgods/r-source
void attribute_visible R_init_stats(DllInfo *dll)
{
    R_registerRoutines(dll, CEntries, CallEntries, FortEntries, ExtEntries);
    R_useDynamicSymbols(dll, FALSE);
    R_forceSymbols(dll, TRUE);

    R_RegisterCCallable("stats", "nlminb_iterate", (DL_FUNC) nlminb_iterate);
    R_RegisterCCallable("stats", "nlsb_iterate", (DL_FUNC) nlsb_iterate);
    R_RegisterCCallable("stats", "Rf_divset", (DL_FUNC) Rf_divset);
}
예제 #16
0
/* returns DllInfo used by the embedding application.
   the underlying "(embedding)" entry is created if not present */
DllInfo *R_getEmbeddingDllInfo()
{
    DllInfo *dll = R_getDllInfo("(embedding)");
    if (dll == NULL) {
	int which = addDLL(strdup("(embedding)"), "(embedding)", NULL);
	dll = &LoadedDLL[which];
	/* make sure we don't attempt dynamic lookup */
	R_useDynamicSymbols(dll, FALSE);
    }
    return dll;
}
예제 #17
0
파일: Rinit.c 프로젝트: cran/networkDynamic
void R_init_networkDynamic(DllInfo *dll)
{
   R_registerRoutines(dll,CEntries,CallEntries, NULL, NULL);
   R_useDynamicSymbols(dll, FALSE);

   /* Callable functions from other packages' C code */
#define RREGDEF(name) R_RegisterCCallable("network", #name, (DL_FUNC) name)

  /* Register network functions */
   netRegisterFunctions();
}
예제 #18
0
파일: init.c 프로젝트: cran/expm
void R_init_expm(DllInfo *dll)
{
    R_registerRoutines(dll, NULL, CallEntries, FortEntries, NULL);
    R_useDynamicSymbols(dll, FALSE);
    /* callable C code from other packages C code :*/
    R_RegisterCCallable("expm",        "expm",        (DL_FUNC) expm);
    R_RegisterCCallable("matpow",      "matpow",      (DL_FUNC) matpow);
    R_RegisterCCallable("expm_eigen",  "expm_eigen",  (DL_FUNC) expm_eigen);
    R_RegisterCCallable("logm_eigen",  "logm_eigen",  (DL_FUNC) logm_eigen);
    R_RegisterCCallable("matexp_MH09", "matexp_MH09", (DL_FUNC) matexp_MH09);
}
예제 #19
0
파일: init.c 프로젝트: rforge/lme4
void R_init_lme4(DllInfo *dll)
{
    R_registerRoutines(dll, NULL, CallEntries, NULL, NULL);
    R_useDynamicSymbols(dll, FALSE);


    M_R_cholmod_start(&c);
    c.final_ll = 1;	    /* LL' form of simplicial factorization */

    /* need own error handler, that resets  final_ll (after *_defaults()) : */
    c.error_handler = lme4_R_cholmod_error;

    lme4_ASym = install("A");
    lme4_CmSym = install("Cm");
    lme4_CxSym = install("Cx");
    lme4_DimSym = install("Dim");
    lme4_GpSym = install("Gp");
    lme4_LSym = install("L");
    lme4_RXSym = install("RX");
    lme4_RZXSym = install("RZX");
    lme4_STSym = install("ST");
    lme4_VSym = install("V");
    lme4_XSym = install("X");
    lme4_XstSym = install("Xst");
    lme4_ZtSym = install("Zt");
    lme4_devianceSym = install("deviance");
    lme4_dimsSym = install("dims");
    lme4_envSym = install("env");
    lme4_etaSym = install("eta");
    lme4_fixefSym = install("fixef");
    lme4_flistSym = install("flist");
    lme4_ghwSym = install("ghw");
    lme4_ghxSym = install("ghx");
    lme4_gradientSym = install("gradient");
    lme4_iSym = install("i");
    lme4_ncSym = install("nc");
    lme4_nlmodelSym = install("nlmodel");
    lme4_muEtaSym = install("muEta");
    lme4_muSym = install("mu");
    lme4_offsetSym = install("offset");
    lme4_pSym = install("p");
    lme4_permSym = install("perm");
    lme4_pWtSym = install("pWt");
    lme4_ranefSym = install("ranef");
    lme4_residSym = install("resid");
    lme4_sigmaSym = install("sigma");
    lme4_sqrtrWtSym = install("sqrtrWt");
    lme4_sqrtXWtSym = install("sqrtXWt");
    lme4_uSym = install("u");
    lme4_varSym = install("var");
    lme4_xSym = install("x");
    lme4_ySym = install("y");
}
예제 #20
0
파일: init.c 프로젝트: Maxsl/r-source
void R_init_grDevices(DllInfo *dll)
{
    initPalette();
    R_registerRoutines(dll, NULL, CallEntries, NULL, ExtEntries);
    R_useDynamicSymbols(dll, FALSE);
    R_forceSymbols(dll, TRUE);

#ifdef HAVE_AQUA
/* R.app will run event loop, so if we are running under that we don't
   need to run one here */
    if(useaqua) setup_RdotApp();
#endif
}
예제 #21
0
파일: init.c 프로젝트: njxisang/jiebaR
void R_init_jiebaR(DllInfo *info)
{
    R_registerRoutines(info,
                     NULL,
                     callMethods,
                     NULL,
                     NULL);

    R_useDynamicSymbols(info, TRUE);

  /* used by external packages linking to internal xts code from C */    
  // v4
  // // 
    _RJ(_jiebaR_jiebaclass_ptr)
    _RJ(_jiebaR_jiebaclass_ptr_v2)
    _RJ(_jiebaR_jiebaclass_mix_cut)
    _RJ(_jiebaR_jiebaclass_mp_cut)
    _RJ(_jiebaR_jiebaclass_hmm_cut)
    _RJ(_jiebaR_jiebaclass_full_cut)
    _RJ(_jiebaR_jiebaclass_query_cut)
    _RJ(_jiebaR_jiebaclass_tag_tag)
    _RJ(_jiebaR_jiebaclass_tag_file)
    _RJ(_jiebaR_jiebaclass_tag_vec)  
    _RJ(_jiebaR_add_user_word)
    _RJ(_jiebaR_u64tobin)
      
  // v3
  // 
    R_RegisterCCallable("jiebaR", "_jiebaR_file_coding",  (DL_FUNC) &_jiebaR_file_coding    );
    R_RegisterCCallable("jiebaR", "_jiebaR_mp_ptr",      (DL_FUNC) &_jiebaR_mp_ptr        );
    R_RegisterCCallable("jiebaR", "_jiebaR_mp_cut",      (DL_FUNC) &_jiebaR_mp_cut        );
    R_RegisterCCallable("jiebaR", "_jiebaR_mix_ptr",     (DL_FUNC) &_jiebaR_mix_ptr       );
    R_RegisterCCallable("jiebaR", "_jiebaR_mix_cut",     (DL_FUNC) &_jiebaR_mix_cut       );
    R_RegisterCCallable("jiebaR", "_jiebaR_query_ptr",   (DL_FUNC) &_jiebaR_query_ptr     );
    R_RegisterCCallable("jiebaR", "_jiebaR_query_cut",   (DL_FUNC) &_jiebaR_query_cut     );
    R_RegisterCCallable("jiebaR", "_jiebaR_hmm_ptr",     (DL_FUNC) &_jiebaR_hmm_ptr       );
    R_RegisterCCallable("jiebaR", "_jiebaR_hmm_cut",     (DL_FUNC) &_jiebaR_hmm_cut       );
    R_RegisterCCallable("jiebaR", "_jiebaR_tag_ptr",     (DL_FUNC) &_jiebaR_tag_ptr       );
    R_RegisterCCallable("jiebaR", "_jiebaR_tag_tag",     (DL_FUNC) &_jiebaR_tag_tag       );
    R_RegisterCCallable("jiebaR", "_jiebaR_tag_file",    (DL_FUNC) &_jiebaR_tag_file      );
    R_RegisterCCallable("jiebaR", "_jiebaR_key_ptr",     (DL_FUNC) &_jiebaR_key_ptr       );
    R_RegisterCCallable("jiebaR", "_jiebaR_key_tag",     (DL_FUNC) &_jiebaR_key_tag       );
    R_RegisterCCallable("jiebaR", "_jiebaR_key_cut",     (DL_FUNC) &_jiebaR_key_cut       );
    R_RegisterCCallable("jiebaR", "_jiebaR_key_keys",    (DL_FUNC) &_jiebaR_key_keys      );
    R_RegisterCCallable("jiebaR", "_jiebaR_sim_ptr",     (DL_FUNC) &_jiebaR_sim_ptr       );
    R_RegisterCCallable("jiebaR", "_jiebaR_sim_sim",     (DL_FUNC) &_jiebaR_sim_sim       );
    R_RegisterCCallable("jiebaR", "_jiebaR_sim_distance",(DL_FUNC) &_jiebaR_sim_distance  );
    R_RegisterCCallable("jiebaR", "_jiebaR_words_freq",  (DL_FUNC) &_jiebaR_words_freq    );

}
예제 #22
0
파일: onload.c 프로젝트: cran/openssl
void R_init_openssl(DllInfo *info) {
  R_registerRoutines(info, NULL, NULL, NULL, NULL);
  R_useDynamicSymbols(info, TRUE);
#ifdef _WIN32
  WSADATA wsaData;
  WSAStartup(MAKEWORD(2, 2), &wsaData);
#endif
  OpenSSL_add_all_digests();
  OpenSSL_add_all_algorithms();
  OpenSSL_add_all_ciphers();
  ERR_load_crypto_strings();
  SSL_load_error_strings();
  SSL_library_init();
}
예제 #23
0
파일: top.c 프로젝트: NavamiK/C5.0
// Initialization function for this shared object
void R_init_C50(DllInfo *dll)
{
    // Announce ourselves for testing
    // Rprintf("R_init_C50 called\n");

    // Register the functions "c50" and "predictions"
    R_registerRoutines(dll, cEntries, NULL, NULL, NULL);

    // This should help prevent people from accidentally accessing
    // any of our global variables, or any functions that are not
    // intended to be called from R.  Only the functions "c50"
    // and "predictions" can be accessed, since they're the only ones
    // we registered.
    R_useDynamicSymbols(dll, FALSE);
}
예제 #24
0
파일: tracks.c 프로젝트: maressyl/R.Rgb
// Routine registration (executed at package loading)
void attribute_visible R_init_Rgb(DllInfo *info) {
	// External() calls
	R_ExternalMethodDef externalMethods[] = {
		{"track", (DL_FUNC) &track, -1},
		{"checktrack", (DL_FUNC) &checktrack, -1},
		{NULL, NULL, 0}
	};
	
	// Register all entry points
	R_registerRoutines(info, NULL, NULL, NULL, externalMethods);
	
	// Prevent access to all non-registered entry points on Linux, except "attribute_visible" ones
	// Remember to update "src/Rgb-win.def" file for Windows !
	R_useDynamicSymbols(info, FALSE);
}
예제 #25
0
파일: init.c 프로젝트: GTaneja/R-zoo
void R_init_zoo(DllInfo *info)
{
  R_registerRoutines(info,
                     NULL,
                     callMethods,
                     NULL,
                     NULL);

  R_useDynamicSymbols(info, TRUE);
#define RegisterZoo(routine) R_RegisterCCallable("zoo",#routine,(DL_FUNC) &routine)

  /* used by external packages linking to internal xts code from C */
  R_RegisterCCallable("zoo","zoo_lag",(DL_FUNC) &zoo_lag);
  R_RegisterCCallable("zoo","zoo_coredata",(DL_FUNC) &zoo_coredata);
}
예제 #26
0
파일: init.cpp 프로젝트: jrnold/rstan
void attribute_visible R_init_rstan(DllInfo *dll) {
    R_registerRoutines(dll, NULL, CallEntries, NULL, NULL);
    R_useDynamicSymbols(dll, FALSE);
    // The call to R_useDynamicSymbols indicates that if the correct C
    // entry point is not found in the shared library, then an error
    // should be signaled.  Currently, the default
    // behavior in R is to search all other loaded shared libraries for the
    // symbol, which is fairly dangerous behavior.  If you have registered
    // all routines in your library, then you should set this to FALSE
    // as done in the stats package. [copied from `R Programming for
    // Bioinformatics' // by Robert Gentleman]
#if defined(R_VERSION) && R_VERSION >= R_Version(2, 16, 0)
    R_forceSymbols(dll, TRUE); // copied from package stats, don't know what it does.
#endif
}
예제 #27
0
extern "C" void R_init_smoothSurv(DllInfo *dll){
    R_registerRoutines(dll, Centries, NULL,  NULL,     NULL);
    /*                      .C        .Call  .Fortran  .External             
    
    /* The following line makes only those routines defined above
       available to outside packages, i.e., internal C++ things
       are now invisible.
    */
    R_useDynamicSymbols(dll, FALSE);
 
    /*
    ** This line makes them only be available via the symbols above
    **  i.e., .C("bayesBisurvreg", ) won't work but .C(C_bayesBisurvreg, )  will
    */
    R_forceSymbols(dll, TRUE);
}
예제 #28
0
파일: init.c 프로젝트: cran/survival
void R_init_survival(DllInfo *dll){
    R_registerRoutines(dll, Centries, Callentries, NULL, NULL);

    /* The following line makes only those routines defined above
       available to outside packages, i.e., internal things like
       dmatrix() are now invisible.
    */
    R_useDynamicSymbols(dll, FALSE); 
    /*
    ** This line makes them only be available via the symbols above
    **  i.e., .Call("tmerge", ) won't work but .Call(Ctmerge, )  will
    ** This feature was added in version 2.16
    */
#if defined(R_VERSION) && R_VERSION >= R_Version(2, 16, 0)
    R_forceSymbols(dll, TRUE);
#endif
}
예제 #29
0
void R_init_cubature(DllInfo *dll) {
  R_registerRoutines(dll, NULL, CallEntries, NULL, NULL);
  R_useDynamicSymbols(dll, FALSE);

  R_RegisterCCallable("cubature", "adapt_integrate", (DL_FUNC) hcubature);
  R_RegisterCCallable("cubature", "adapt_integrate_v", (DL_FUNC) hcubature_v);
  R_RegisterCCallable("cubature", "hcubature", (DL_FUNC) hcubature);
  R_RegisterCCallable("cubature", "hcubature_v", (DL_FUNC) hcubature_v);
  R_RegisterCCallable("cubature", "pcubature", (DL_FUNC) pcubature);
  R_RegisterCCallable("cubature", "pcubature_v", (DL_FUNC) pcubature_v);

  /* For future if people need it */
  /* R_RegisterCCallable("cubature", "Cuhre", (DL_FUNC) Cuhre); */
  /* R_RegisterCCallable("cubature", "Divonne", (DL_FUNC) Divonne); */
  /* R_RegisterCCallable("cubature", "Suave", (DL_FUNC) Suave); */
  /* R_RegisterCCallable("cubature", "Vegas", (DL_FUNC) Vegas); */

}
예제 #30
0
void attribute_visible R_init_datatable(DllInfo *info)
// relies on pkg/src/Makevars to mv data.table.so to datatable.so
{
    R_registerRoutines(info, NULL, callMethods, NULL, externalMethods);
    R_useDynamicSymbols(info, FALSE);
    setSizes();
    const char *msg = "... failed. Please forward this message to maintainer('data.table') or datatable-help.";
    if (NA_INTEGER != INT_MIN) error("Checking NA_INTEGER [%d] == INT_MIN [%d] %s", NA_INTEGER, INT_MIN, msg);
    if (NA_INTEGER != NA_LOGICAL) error("Checking NA_INTEGER [%d] == NA_LOGICAL [%d] %s", NA_INTEGER, NA_LOGICAL, msg);
    if (sizeof(int) != 4) error("Checking sizeof(int) [%d] is 4 %s", sizeof(int), msg);
    if (sizeof(double) != 8) error("Checking sizeof(double) [%d] is 8 %s", sizeof(double), msg);  // 8 on both 32bit and 64bit.
    if (sizeof(long long) != 8) error("Checking sizeof(long long) [%d] is 8 %s", sizeof(long long), msg);
    if (sizeof(char *) != 4 && sizeof(char *) != 8) error("Checking sizeof(pointer) [%d] is 4 or 8 %s", sizeof(char *), msg);
    if (sizeof(SEXP) != sizeof(char *)) error("Checking sizeof(SEXP) [%d] == sizeof(pointer) [%d] %s", sizeof(SEXP), sizeof(char *), msg);
    
    SEXP tmp = PROTECT(allocVector(INTSXP,2));
    if (LENGTH(tmp)!=2) error("Checking LENGTH(allocVector(INTSXP,2)) [%d] is 2 %s", LENGTH(tmp), msg);
    if (TRUELENGTH(tmp)!=0) error("Checking TRUELENGTH(allocVector(INTSXP,2)) [%d] is 0 %s", TRUELENGTH(tmp), msg);
    UNPROTECT(1);

    // According to IEEE (http://en.wikipedia.org/wiki/IEEE_754-1985#Zero) we can rely on 0.0 being all 0 bits.
    // But check here anyway just to be sure, just in case this answer is right (http://stackoverflow.com/a/2952680/403310).
    int i = 314;
    memset(&i, 0, sizeof(int));
    if (i != 0) error("Checking memset(&i,0,sizeof(int)); i == (int)0 %s", msg);
    unsigned int ui = 314;
    memset(&ui, 0, sizeof(unsigned int));
    if (ui != 0) error("Checking memset(&ui, 0, sizeof(unsigned int)); ui == (unsigned int)0 %s", msg);
    double d = 3.14;
    memset(&d, 0, sizeof(double));
    if (d != 0.0) error("Checking memset(&d, 0, sizeof(double)); d == (double)0.0 %s", msg);
    long double ld = 3.14;
    memset(&ld, 0, sizeof(long double));
    if (ld != 0.0) error("Checking memset(&ld, 0, sizeof(long double)); ld == (long double)0.0 %s", msg);
    
    setNumericRounding(ScalarInteger(2));
    
    char_integer64 = mkChar("integer64");  // for speed, similar to R_*Symbol.
}