Lyle asked: > Because the format string for rb_scan_args() only uses single > digits to determine the number of required and optional > arguments this means that you can't have more than nine > of either, right? I guess I've seen somewhere limit of 17 arguments, or so. I guess you're unable to check directly with rb_scan_args for more than 9 args. But: 1) you can gather the args by specifying '*' and examining the array on your own 2) you could try to persuade matz to change if (ISDIGIT(*p)) { n = *p - '0'; to if (ISHEXDIGIT(*p)){ n = hexDigit(*p); I know I know nothing about this, but I wonder if those 9 params are really needed, and there's no room of grouping/combining several parameters into specific objects. Or even group whole parameter list into parameter object. Of course it's not possible to change the C++ interface... - Aleksi