From d1b9393ba5e6dc24d147235c3a78f54bf5ef4a52 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Fri, 20 Jan 1995 16:56:02 +0000 Subject: [PATCH] support "O&" taking an object constructor a void* --- Python/modsupport.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Python/modsupport.c b/Python/modsupport.c index 71bbf6ce1ea..518d4330300 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)