void lookup(const map_type& Map, const char* str) { cout << str << ": "; pair<map_type::const_iterator, map_type::const_iterator> p = Map.equal_range(str); for (map_type::const_iterator i = p.first; i != p.second; ++i) cout << (*i).second << " "; cout << endl; }
generic_parameter<TypeInfo>* get_first(const Info& info) { std::pair<typename map_type::iterator, typename map_type::iterator> its = equal_range(info); for (typename map_type::iterator current = its.first; current != its.second; ++current) { generic_parameter<TypeInfo>& p = *current->second; if (p.template can_cast<D>()) { return &p; } } return 0; }
bool has(const Info& info) const { std::pair<typename map_type::const_iterator, typename map_type::const_iterator> its = equal_range(info); for (typename map_type::const_iterator current = its.first; current != its.second; ++current) { generic_parameter<TypeInfo>& p = *current->second; if (p.template can_cast<D>()) { return true; } } return false; }
std::vector<generic_parameter<TypeInfo>*> get(const Info& info) { std::vector<generic_parameter<TypeInfo>*> parameters; std::pair<typename map_type::iterator, typename map_type::iterator> its = equal_range(info); for (typename map_type::iterator current = its.first; current != its.second; ++current) { generic_parameter<TypeInfo>& p = *current->second; if (p.template can_cast<D>()) { parameters.push_back(current->second); } } return parameters; }