From: Guido van Rossum Date: Fri, 20 Jan 1995 16:56:02 +0000 (+0000) Subject: support "O&" taking an object constructor a void* X-Git-Tag: v1.2b3~134 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d1b9393ba5e6dc24d147235c3a78f54bf5ef4a52;p=thirdparty%2FPython%2Fcpython.git support "O&" taking an object constructor a void* --- diff --git a/Python/modsupport.c b/Python/modsupport.c index 71bbf6ce1ead..518d43303001 100644 --- a/Python/modsupport.c +++ b/Python/modsupport.c @@ -110,6 +110,7 @@ static int countformat(format, endchar) level--; break; case '#': + case '&': case ',': case ':': case ' ': @@ -268,7 +269,7 @@ do_mkvalue(p_format, p_va) case 'f': case 'd': - return newfloatobject((double)va_arg(*p_va, double)); + return newfloatobject((double)va_arg(*p_va, va_double)); case 'c': { @@ -303,7 +304,14 @@ do_mkvalue(p_format, p_va) case 'S': case 'O': - { + if (**p_format == '&') { + typedef object *(*converter)(void *); + converter func = va_arg(*p_va, converter); + void *arg = va_arg(*p_va, void *); + ++*p_format; + return (*func)(arg); + } + else { object *v; v = va_arg(*p_va, object *); if (v != NULL)