diff --git a/src/spooky_serialize.cpp b/src/spooky_serialize.cpp index 9995718..9756aa1 100644 --- a/src/spooky_serialize.cpp +++ b/src/spooky_serialize.cpp @@ -1,3 +1,4 @@ +// Copyright (C) 2024 Dirk Eddelbuettel // Copyright (C) 2019 Kendon Bell // Copyright (C) 2014 Gabe Becker // @@ -53,10 +54,10 @@ static void OutBytesSpooky(R_outpstream_t stream, void *buf, int length) { static void InitSpookyPStream(R_outpstream_t stream, SpookyHash *spooky, - R_pstream_format_t type, int version, - SEXP (*phook)(SEXP, SEXP), SEXP pdata) { + R_pstream_format_t type, int version, + SEXP (*phook)(SEXP, SEXP), SEXP pdata) { R_InitOutPStream(stream, (R_pstream_data_t) spooky, type, version, - OutCharSpooky, OutBytesSpooky, phook, pdata); + OutCharSpooky, OutBytesSpooky, phook, pdata); } @@ -64,7 +65,7 @@ static void InitSpookyPStream(R_outpstream_t stream, SpookyHash *spooky, /* ought to quote the argument, but it should only be an ENVSXP or STRSXP */ static SEXP CallHook(SEXP x, SEXP fun) { // #nocov start SEXP val, call; - PROTECT(call = LCONS(fun, LCONS(x, R_NilValue))); + PROTECT(call = Rf_lcons(fun, Rf_lcons(x, R_NilValue))); val = Rf_eval(call, R_GlobalEnv); UNPROTECT(1); return val; @@ -73,17 +74,17 @@ static SEXP CallHook(SEXP x, SEXP fun) { // #nocov start extern "C" SEXP spookydigest_impl(SEXP s, SEXP to_skip_r, SEXP seed1_r, SEXP seed2_r, SEXP version_r, SEXP fun) { SpookyHash spooky; - double seed1_d = NUMERIC_VALUE(seed1_r); - double seed2_d = NUMERIC_VALUE(seed2_r); - uint64 seed1 = seed1_d; - uint64 seed2 = seed2_d; + double seed1_d = Rf_asReal(seed1_r); + double seed2_d = Rf_asReal(seed2_r); + uint64_t seed1 = static_cast(seed1_d); + uint64_t seed2 = static_cast(seed2_d); - uint8 to_skip = INTEGER_VALUE(to_skip_r); + uint8_t to_skip = static_cast(Rf_asInteger(to_skip_r)); spooky.Init(seed1, seed2, to_skip); R_outpstream_st spooky_stream; R_pstream_format_t type = R_pstream_binary_format; SEXP (*hook)(SEXP, SEXP); - int version = INTEGER_VALUE(version_r); + int version = Rf_asInteger(version_r); hook = fun != R_NilValue ? CallHook : NULL; InitSpookyPStream(&spooky_stream, &spooky, type, version, hook, fun); R_Serialize(s, &spooky_stream);