Beispiel #1
0
SEXP jri_getSEXPLArray(JNIEnv *env, jarray o) {
    SEXP ar;
    int l,i=0;
    jlong *ap;
    
    profStart();
    _dbg(rjprintf(" jarray %d\n",o));
    if (!o) return R_NilValue;
    l=(int)(*env)->GetArrayLength(env, o);
    _dbg(rjprintf("convert SEXPL array of length %d\n",l));
    if (l<1) return R_NilValue;
    ap=(jlong*)(*env)->GetLongArrayElements(env, o, 0);
    if (!ap) {
        jri_error("getSEXPLArray: can't fetch array contents");
        return 0;
    }
    PROTECT(ar=allocVector(VECSXP,l));
    while (i<l) {
        SET_VECTOR_ELT(ar, i, L2SEXP(ap[i]));
        i++;
    }
    UNPROTECT(1);
    (*env)->ReleaseLongArrayElements(env, o, ap, 0);
    _prof(profReport("jri_getSEXPLArray[%d]:",o));
    return ar;
}
Beispiel #2
0
long r_eval(long exp, int *er){  

  SEXP es, exps=L2SEXP(exp);
  int i=0, l; 

  
  if (TYPEOF(exps)==EXPRSXP) { /* if the object is a list of exps, eval them one by one */
    l=LENGTH(exps);
    while (i<l) {
      es=R_tryEval(VECTOR_ELT(exps,i), R_GlobalEnv, er);
      i++;
    }
  } else
    es=R_tryEval(exps, R_GlobalEnv, er); 

  return SEXP2L(es);

}