- Translator *t = output_def_l ()->find_translator_l (accepts_str_arr_[i]);
- if (!t || !dynamic_cast <Translator_group *> (t))
- continue;
- accepted_arr.push (dynamic_cast <Translator_group *> (t));
- }
-
-
- for (int i=0; i < accepted_arr.size (); i++)
- if (accepted_arr[i]->type_str_ == type)
- {
- Link_array<Translator_group> retval;
- retval.push (accepted_arr[i]);
- return retval;
- }
-
- Link_array<Translator_group> best_result;
- int best_depth= INT_MAX;
- for (int i=0; i < accepted_arr.size (); i++)
- {
- Translator_group * g = accepted_arr[i];
-
- Link_array<Translator_group> result
- = g->path_to_acceptable_translator (type);
- if (result.size () && result.size () < best_depth)
- {
- result.insert (g,0);
- best_result = result;
- }
+ Translator *tr = unsmob_translator (scm_car (s));
+ if (translator_accepts_any_of (tr, ifaces))
+ l = scm_cons (tr->self_scm (), l);