On Thu, 15 Dec 2005, Miller Puckette wrote:
How about calling this "class_addv" or, possibly, "class_vmess"?
Why would it be called by either of those names? it doesn't do "addv", it only reminds of addv's syntax, but then so do my functions pd_scanargs, pd_saveargs, sys_mgui, and some future ones too (pd_setargs).
I think it's a much better design than class_addmethod and I should add it, once we figure out the best name, to the "main" API.
I think it should be more polished before being added to any API. Here are the changes that I propose:
f=A_FLOAT F=A_DEFFLOAT s=A_SYMBOL S=A_DEFSYMBOL p=A_POINTER
add "=" meaning DEFAULT (the equal sign is the default-value sign in C++, Python, Ruby) such that all subsequent A_FLOAT and A_SYMBOL and A_POINTER are treated as default. That would introduce a default-pointer feature and would deprecate A_DEFFLOAT, A_DEFSYM, A_DEFSYMBOL.
(there's a default-value feature called ";" in pd_scanargs but it works differently and it mentally conflicts with binbuf's idea of ";". I don't recall why I picked ";" in the first place, but I was inspired by an equivalent mechanism in Ruby)
the problem with that "=" (and A_DEFFLOAT etc) is that it doesn't allow to specify default atom values other than zero and null-symbol, contrary to how the "=" works in C++/Python/Ruby.
*=A_GIMME
A_GIMME would come to work with other specifiers, as long as it is supplied last, so "fs*" would result in args like (t_pd *, t_float, t_symbol*, int argc, t_atom *argv) where argc,argv would only represent the _rest_ of the args. The "=" specifier can be combined so that there can be mandatory-args, optional-args and rest-args in the same message.
That usage of "*" would be consistent with the splat-operator (unary *) in Python and Ruby, and equivalent concepts in other languages: the "&rest" macro in CommonLISP; the "args" keyword in Tcl.
!=A_CANT (e.g. for dsp messages)
I'd like to have more doc on how A_CANT is _meant_ to be used.
_ _ __ ___ _____ ________ _____________ _____________________ ... | Mathieu Bouchard - tél:+1.514.383.3801 - http://artengine.ca/matju | Freelance Digital Arts Engineer, Montréal QC Canada