I have to agree with Anton on this approach. This is also the direction we are taking. It allows for easy extension and keeps things contained better.
I also like the use of the undef for vec_type_hint.
I'll comment on the rest of Guy's patch separately.
-Tanya