SDSVarInfo *sds_delete_vars(SDSVarInfo *var, const char **names, int n_names) { SDSVarInfo *keep = NULL, *del = NULL; while (var) { SDSVarInfo *next = var->next; if (name_in_list(var->name, names, n_names)) { var->next = del; del = var; } else { var->next = keep; keep = var; } var = next; } sds_free_vars(del); return keep; }
SDSAttInfo *sds_delete_atts(SDSAttInfo *att, const char **names, int n_names) { SDSAttInfo *keep = NULL, *del = NULL; while (att) { SDSAttInfo *next = att->next; if (name_in_list(att->name, names, n_names)) { att->next = del; del = att; } else { att->next = keep; keep = att; } att = next; } sds_free_atts(del); return keep; }
SDSDimInfo *sds_delete_dims(SDSDimInfo *dim, const char **names, int n_names) { SDSDimInfo *keep = NULL, *del = NULL; while (dim) { SDSDimInfo *next = dim->next; if (name_in_list(dim->name, names, n_names)) { dim->next = del; del = dim; } else { dim->next = keep; keep = dim; } dim = next; } sds_free_dims(del); return keep; }
static Name_list * find_elix(void) { struct name_list *el; if ((el = name_in_list(cpi_name,wild_lst)) != NULL) { elix = el_ix(wild_lst,el) - bscroller.top_name; if (elix >= 0 & elix < 12) /* it's visible */ { ely = brw_list_sel.y + (elix/4) * BRO_DY; elx = brw_list_sel.x + (elix%4) * BRO_DX; } else elix = -1; /* offscreen */ } return(el); }