- r = group_l_arr ()[i]->find_existing_translator_l (n,id);
- }
-
- return r;
-}
-
-Link_array<Translator_group>
-Translator_group::path_to_acceptable_translator (String type) const
-{
- Link_array<Translator_group> accepted_arr;
- for (int i=0; i < accepts_str_arr_.size (); i++)
- {
- Translator *t = output_def_l ()->find_translator_l (accepts_str_arr_[i]);
- if (!t || !t->group_l ())
- continue;
- accepted_arr.push (t->group_l());
- }
-
-
- 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);