コード例 #1
0
ファイル: eval_utils.c プロジェクト: klugem/S4Vectors
/*
 * --- .Call ENTRY POINT ---
 * Gets the top environment associated with each promise in '...'
 */
SEXP top_prenv_dots(SEXP env)
{
  SEXP dots = findVar(R_DotsSymbol, env);
  SEXP ans = allocVector(VECSXP, length(dots));
  if (TYPEOF(dots) == DOTSXP) {
    int i = 0;
    for (SEXP p = dots; p != R_NilValue; p = CDR(p)) {
      SET_VECTOR_ELT(ans, i++, _top_prenv(CAR(p), env));
    }
  }
  return ans;
}
コード例 #2
0
ファイル: SEXP_utils.c プロジェクト: lawremi/rsolr
/*
 * --- .Call ENTRY POINT ---
 * Gets the top environment associated with each promise in '...'
 */
SEXP top_prenv_dots(SEXP env)
{
  SEXP dots = findVar(R_DotsSymbol, env);
  if (dots == R_MissingArg) {
    return(allocVector(VECSXP, 0));
  }
  SEXP ans = allocVector(VECSXP, length(dots));
  int i = 0;
  for (SEXP p = dots; p != R_NilValue; p = CDR(p)) {
    SET_VECTOR_ELT(ans, i++, _top_prenv(CAR(p), env));
  }
  return ans;
}
コード例 #3
0
ファイル: eval_utils.c プロジェクト: klugem/S4Vectors
/*
 * --- .Call ENTRY POINT ---
 * Gets the top environment associated with a (nested) promise.
 */
SEXP top_prenv(SEXP nm, SEXP env)
{
  SEXP promise = findVar(nm, env);
  return _top_prenv(promise, env);
}