Mercurial > cpython-lru_cache-weakref
diff Python/modsupport.c @ 2202:9894e55468ec legacy-trunk
support "O&" taking an object constructor a void*
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Fri, 20 Jan 1995 16:56:02 +0000 |
| parents | 0728feb1d031 |
| children | b5ce80114416 |
line wrap: on
line diff
--- a/Python/modsupport.c Fri Jan 20 16:55:14 1995 +0000 +++ b/Python/modsupport.c Fri Jan 20 16:56:02 1995 +0000 @@ -110,6 +110,7 @@ level--; break; case '#': + case '&': case ',': case ':': case ' ': @@ -268,7 +269,7 @@ 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 @@ 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)
