예제 #1
0
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;
}
예제 #2
0
 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;
 }
예제 #3
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;
 }
예제 #4
0
 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;
 }