Beispiel #1
0
SEXP
RecursiveRelease(SEXP obj, SEXP list)
{
  if (!isNull(list)) {
    if (obj == CAR(list))
      return CDR(list);
    else
      SETCDR(list, RecursiveRelease(obj, CDR(list)));
  }
  return list;
}
Beispiel #2
0
/* TODO: This needs implementing as a Ruby destructor for each RObj */
void
Robj_dealloc(VALUE self)
{
  SEXP robj;
  
  Data_Get_Struct(self, struct SEXPREC, robj);
  
  R_References = RecursiveRelease(robj, R_References);
  SET_SYMVALUE(install("R.References"), R_References);
  
  return;
}