diff options
Diffstat (limited to 'omegalib/omega/src/pres_subs.cc')
| -rw-r--r-- | omegalib/omega/src/pres_subs.cc | 131 | 
1 files changed, 0 insertions, 131 deletions
diff --git a/omegalib/omega/src/pres_subs.cc b/omegalib/omega/src/pres_subs.cc deleted file mode 100644 index 9854b09..0000000 --- a/omegalib/omega/src/pres_subs.cc +++ /dev/null @@ -1,131 +0,0 @@ -#include <omega/pres_subs.h> - -namespace omega { - -Substitutions::Substitutions(Relation &input_R, Conjunct *input_c) { -  int i; -  r = new Relation(input_R,input_c); -  c = r->single_conjunct(); -  c->reorder_for_print(); -  c->ordered_elimination(r->global_decls()->length()); -  int num_subs = c->problem->nSUBs;  -  subs = new eqn[num_subs]; -  for(i = 0; i < num_subs; i++) -    subs[i] = SUBs[i]; -  subbed_vars.reallocate(num_subs); -  /* Go through and categorize variables as: -     1) substituted, 2) not substituted, 3) wildcard -     Safevars number of variables were not able to be substituted. -     nVars number of total variables, including wildcards. -     nSUBs is the number of substitutions. -     nSUBs + nVars == the number of variables that went in.  -     Then reset var and forwardingAddress arrays in the problem, -     so that they will correctly refer to the reconstructed -     mappedVars. */ -  Variable_ID_Tuple unsubbed_vars(c->problem->safeVars); -  for(i = 1; i <= c->mappedVars.size(); i++)  -    if(c->mappedVars[i]->kind() != Wildcard_Var) { -      int addr = c->problem->forwardingAddress[i]; -      assert(addr == c->find_column(c->mappedVars[i]) && addr != 0); -      if(addr < 0) { -        assert(-addr <= subbed_vars.size()); -        subbed_vars[-addr] = c->mappedVars[i]; -      } -      else { -        assert(addr <= unsubbed_vars.size()); -        unsubbed_vars[addr] = c->mappedVars[i]; -      } -    } -    else { -      // Here we don't redeclare wildcards, just re-use them. -      unsubbed_vars.append(c->mappedVars[i]); -    } -  assert(unsubbed_vars.size() + subbed_vars.size() == c->mappedVars.size()); -  c->mappedVars = unsubbed_vars; /* These are the variables that remain */ -      -  for(int col = 1; col <= c->problem->nVars; col++) { -    c->problem->var[col] = col; -    c->problem->forwardingAddress[col] = col; -  } -} - -Substitutions::~Substitutions() { -  delete [] subs; -  delete r; -} - -bool Substitutions::substituted(Variable_ID v) { -  return (subbed_vars.index(v) > 0); -} - -Sub_Handle Substitutions::get_sub(Variable_ID v) { -  assert(substituted(v) && "No substitution for variable"); -  return Sub_Handle(this,subbed_vars.index(v)-1,v); -} - -bool Substitutions::sub_involves(Variable_ID v, Var_Kind kind) { -  assert(substituted(v)); -  for(Constr_Vars_Iter i = get_sub(v); i; i++) -    if ((*i).var->kind() == kind) -      return true; -  return false; -} - - -//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: - - -int Sub_Iterator::live() const { -  return current <= last; -} - -void Sub_Iterator::operator++() { this->operator++(0); } - -void Sub_Iterator::operator++(int) { -  current++; -} - -Sub_Handle Sub_Iterator::operator*() { -  assert(s && current <= last && "Sub_Iterator::operator*: bad call"); -  return Sub_Handle(s,current,s->subbed_vars[current+1]); -}  - -Sub_Handle Sub_Iterator::operator*() const { -  assert(s && current <= last && "Sub_Iterator::operator*: bad call"); -  return Sub_Handle(s,current,s->subbed_vars[current+1]); -}  - - -//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: - - - -Sub_Handle::Sub_Handle(Substitutions *_s, int _e, Variable_ID _v) : -Constraint_Handle(_s->c,&(_s->subs),_e), v(_v) {} - -std::string Sub_Handle::print_to_string() const { -  relation()->setup_names(); -  return v->name() + " = " +  this->print_term_to_string(); -} - -std::string Sub_Handle::print_term_to_string() const { -  /* The horrible truth is that print_term_to_string is a member -     function of Conjunct, (and then Problem below it) but uses -     nothing from there but the names, so you can pass it a pointer to -     an equation that isn't even part of the conjunct. */ -  relation()->setup_names(); -  return c->print_term_to_string(&((*eqns)[e])); -} - - -/* -  String Sub_Handle::print_to_string() const { -  return c->problem->print_EQ_to_string(&((*eqns)[e])); -  } - -  String Sub_Handle::print_term_to_string() const { -  return c->print_term_to_string(&(*eqns[e])); -  } -*/ - -} // namespace  | 
