/*++ Copyright (c) 2006 Microsoft Corporation Module Name: used_vars.h Abstract: Functor used to collect the set of used variables. Author: Leonardo de Moura (leonardo) 2008-01-14. Revision History: --*/ #ifndef _USED_VARS_H_ #define _USED_VARS_H_ #include"ast.h" #include"expr_delta_pair.h" class used_vars { ptr_vector m_found_vars; typedef hashtable, default_eq > cache; cache m_cache; svector m_todo; void process(expr * n, unsigned delta); public: void operator()(expr * n) { m_found_vars.reset(); process(n, 0); } void reset() { m_found_vars.reset(); } void process(expr * n) { process(n, 0); } unsigned get_max_found_var_idx_plus_1() const { return m_found_vars.size(); } sort * get(unsigned var_idx) const { return m_found_vars[var_idx]; } sort * contains(unsigned var_idx) const { return var_idx < m_found_vars.size() ? m_found_vars[var_idx] : 0; } bool uses_all_vars(unsigned num_decls) const; bool uses_a_var(unsigned num_decls) const; unsigned get_num_vars() const; }; #endif /* _USED_VARS_H_ */