/*++ Copyright (c) 2012 Microsoft Corporation Module Name: tactic_manager.h Abstract: Collection of tactics & probes Author: Leonardo (leonardo) 2012-03-06 Notes: --*/ #ifndef _TACTIC_MANAGER_H_ #define _TACTIC_MANAGER_H_ #include"tactic_cmds.h" #include"dictionary.h" class tactic_manager { protected: dictionary m_name2tactic; dictionary m_name2probe; ptr_vector m_tactics; ptr_vector m_probes; void finalize_tactic_cmds(); void finalize_probes(); public: ~tactic_manager(); void insert(tactic_cmd * c); void insert(probe_info * p); tactic_cmd * find_tactic_cmd(symbol const & s) const; probe_info * find_probe(symbol const & s) const; unsigned num_tactics() const { return m_tactics.size(); } unsigned num_probes() const { return m_probes.size(); } tactic_cmd * get_tactic(unsigned i) const { return m_tactics[i]; } probe_info * get_probe(unsigned i) const { return m_probes[i]; } typedef ptr_vector::const_iterator tactic_cmd_iterator; tactic_cmd_iterator begin_tactic_cmds() const { return m_tactics.begin(); } tactic_cmd_iterator end_tactic_cmds() const { return m_tactics.end(); } typedef ptr_vector::const_iterator probe_iterator; probe_iterator begin_probes() const { return m_probes.begin(); } probe_iterator end_probes() const { return m_probes.end(); } }; #endif