BTW, the mentioning of C interfaces is a good point. AFAIK, `void *' is the closest thing you can do in C anyway, and there is no parameter that accepts either pointers or integers (barring completely undeclared functions and varargs which have no checking at all, of course). So I could ask heretically, do we want even looser type checking than C? ;-)
Do not we already have a "typeless" parameter that takes anything?
And, it is better than C and the "typeless" parameter in that at least the interface is self-documenting - the function can clearly express what it wants as an input even if it does not enforce it. This is better than the case of using Pointer, void * or typeless parameters in that they do not express any requirement of the parameter and leave it up to documentation (which for most projects inevitably is either written after the fact or is left inaccurately written.
Seriously, I'd really prefer to go for the "acceptably happy" solution (referring to your other mail), in particular if it does not even impede the Apple interfaces (which you can't change at will, I understand).
The only problem with that is that it does not allow for UInt16/SInt16, UInt32/SInt32, or UInt64/SInt64 compatible parameters (such as a function that writes a byte order dependent number to disk).
How about univ Ptr compatible with pointer types, univ Integer compatible with same sized scalar types?
That would get almost all the useful cases, and a Ptr/PtrCard cast could be used explicitly as required for the case where a pointer needs to be stored.
Thanks, Peter.