コード例 #1
0
ファイル: jri.c プロジェクト: carrot-garden/rp_rJava
jarray jri_putSEXPLArray(JNIEnv *env, SEXP e)
{
    _dbg(rjprintf(" general vector of length %d\n",LENGTH(e)));
    {
        unsigned len=LENGTH(e);
        jlongArray da=(*env)->NewLongArray(env,len);
        jlong *dae;
        
        if (!da) {
            jri_error("newLongArray.new(%d) failed",len);
            return 0;
        }
        
        if (len>0) {
            int i=0;
            
            dae=(*env)->GetLongArrayElements(env, da, 0);
            if (!dae) {
                (*env)->DeleteLocalRef(env,da);
                jri_error("newLongArray.GetLongArrayElements failed");
                return 0;
            }
            while (i<len) {
                dae[i] = SEXP2L(VECTOR_ELT(e, i));
                i++;
            }
            (*env)->ReleaseLongArrayElements(env, da, dae, 0);
        }
        return da;
    }
}
コード例 #2
0
ファイル: Rengine.c プロジェクト: rforge/rserlang
long r_parse(const char *s){

  ParseStatus ps;
  SEXP pstr, cv;

  PROTECT(cv=allocVector(STRSXP,1));
  SET_STRING_ELT(cv, 0, mkChar(s));
  UNPROTECT(1);
  printf("parsing \"%s\"\n", CHAR(STRING_ELT(cv,0)));    
  pstr=R_ParseVector(cv, 1, &ps, R_NilValue);  

  printf("%d\n",TYPEOF(pstr));  
  printf("parse status=%d, result=%x, type=%d\n", ps, (int) pstr, (pstr!=0)?TYPEOF(pstr):0);
  
  return SEXP2L(pstr); 

}
コード例 #3
0
ファイル: Rengine.c プロジェクト: rforge/rserlang
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);

}