inline void deleteCols(InIter del, InIter del_end) { Int ncols_new = ncols - (del_end - del); std::set<Int> del_set(del, del_end); std::vector<Float> new_m(nrows * ncols_new); Int j1 = 0; for (Int j = 0; j < ncols; ++j) { if (del_set.find(j) == del_set.end()) { for (Int i = 0; i < nrows; ++i) new_m[i*ncols_new + j1] = at(i,j); ++j1; } } std::swap(m, new_m); ncols = ncols_new; }
inline void deleteRows(InIter del, InIter del_end) { Int nrows_new = nrows - (del_end - del); std::set<Int> del_set(del, del_end); std::vector<Float> new_m(nrows_new * ncols); Int i1 = 0; for (Int i = 0; i < nrows; ++i) { if (del_set.find(i) == del_set.end()) { for (Int j = 0; j < ncols; ++j) new_m[i1*ncols + j] = at(i,j); ++i1; } } std::swap(m, new_m); nrows = nrows_new; }
void finish_ident(void) { obstack_free(&id_obst, NULL); del_set(id_set); id_set = NULL; }
void diff_set(s,t) {register int i,v ; itr(t,i,v,del_set(s,v)); }
void lc_arg_free_env(lc_arg_env_t *env) { del_set(env->args); free(env); }