]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
support "O&" taking an object constructor a void*
authorGuido van Rossum <guido@python.org>
Fri, 20 Jan 1995 16:56:02 +0000 (16:56 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 20 Jan 1995 16:56:02 +0000 (16:56 +0000)
Python/modsupport.c

index 71bbf6ce1ead82f2b9e6dd20a9588741a7c33c0c..518d433030015a20be7841f8b4a69e19ffa1519d 100644 (file)
@@ -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)