1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
#include <R.h>
#include <Rinternals.h>
#include <R_ext/Rdynload.h>
#include "bit-ops.h"
#define CDEF(name) {#name, (DL_FUNC) &name, sizeof(name ## _typ)/sizeof(name ## _typ[0]), name ##_typ}
#define CALLDEF(name, n) {#name, (DL_FUNC) &name, n}
static R_NativePrimitiveArgType cksum_typ[3] = {
INTSXP, STRSXP, REALSXP
};
static const R_CMethodDef CEntries[] = {
CDEF(cksum),
{NULL, NULL, 0}
};
static R_CallMethodDef CallEntries[] = {
CALLDEF(bitFlip, 2),
CALLDEF(bitAnd, 2),
CALLDEF(bitOr, 2),
CALLDEF(bitXor, 2),
CALLDEF(bitShiftL, 2),
CALLDEF(bitShiftR, 2),
{NULL, NULL, 0}
};
/**
* register routines
* @param dll pointer
* @return none
* @author Martin Maechler
*/
void
#ifdef HAVE_VISIBILITY_ATTRIBUTE
__attribute__ ((visibility ("default")))
#endif
R_init_bitops(DllInfo *dll)
{
R_registerRoutines(dll, CEntries, CallEntries, NULL, NULL);
R_useDynamicSymbols(dll, FALSE);
}
|