In response to Winfried's questions about route:
if a a string is for example "int", a used symbol, than route_symbol(...)
seg_faults, because pd_float is used for calling route_symbol(..) with wrong arguments, because the route_symbol(...) is registered as c_floatmethod.
... so you always have to write the "float", etc, methods as special cases. As a first cut, you can just have the "float" and "bang" method call the "anything" method with the arguments re-assigned, as in
route_float(t_route *x, t_float f) { t_atom arg; atom_setfloat(&arg, f); route_anything(x, &s_float, 1, &arg); }
So the string "int" or "float" matches all numbers. Lists, which in
fact are lists beginning with numbers not strings, are handled correctly. Lists with beginning strings are handled as methods --- is this correct ?
Yep. In a message box, you have to say "list" explicitly if the list starts with a symbol; otherwise the symbol is taken as a selector instead of "list".
So the my idea of route (to be compatible in future with real route)
could be that "float", "int" routes all integers and floats, which are not in a list,
(route should be fast, since, in my experience with max, it is often used for sending synthesis parameters and has to handle high data-rates)
I think you don't have to treat numbers and symbols in the same object; it just complicates the thing and you can always put a "number" route on the "list" output of a "symbol" route if that's what you need.
Cheers Miller