package water.rapids.ast.prims.assign; import water.DKV; import water.Key; import water.Keyed; import water.Value; import water.fvec.Frame; import water.rapids.Env; import water.rapids.vals.ValNum; import water.rapids.ast.AstPrimitive; import water.rapids.ast.AstRoot; /** * Remove by ID. Removing a Frame updates refcnts. Returns 1 for removing, 0 if id does not exist. */ public class AstRm extends AstPrimitive { @Override public String[] args() { return new String[]{"id"}; } @Override public int nargs() { return 1 + 1; } // (rm id) @Override public String str() { return "rm"; } @Override public ValNum apply(Env env, Env.StackHelp stk, AstRoot[] asts) { Key id = Key.make(env.expand(asts[1].str())); Value val = DKV.get(id); if (val == null) return new ValNum(0); if (val.isFrame()) env._ses.remove(val.<Frame>get()); // Remove unshared Vecs else Keyed.remove(id); // Normal (e.g. Model) remove return new ValNum(1); } }