[Python-checkins] r45272 - in python/trunk: Include/Python-ast.h Parser/asdl_c.py Python/Python-ast.c

martin.v.loewis python-checkins at python.org
Tue Apr 11 10:06:50 CEST 2006


Author: martin.v.loewis
Date: Tue Apr 11 10:06:50 2006
New Revision: 45272

Modified:
   python/trunk/Include/Python-ast.h
   python/trunk/Parser/asdl_c.py
   python/trunk/Python/Python-ast.c
Log:
Make _kind types global for C++ compilation.
Explicitly cast void* to int to cmpop_ty.


Modified: python/trunk/Include/Python-ast.h
==============================================================================
--- python/trunk/Include/Python-ast.h	(original)
+++ python/trunk/Include/Python-ast.h	Tue Apr 11 10:06:50 2006
@@ -35,9 +35,10 @@
 typedef struct _alias *alias_ty;
 
 
+enum _mod_kind {Module_kind=1, Interactive_kind=2, Expression_kind=3,
+                 Suite_kind=4};
 struct _mod {
-        enum { Module_kind=1, Interactive_kind=2, Expression_kind=3,
-               Suite_kind=4 } kind;
+        enum _mod_kind kind;
         union {
                 struct {
                         asdl_seq *body;
@@ -58,14 +59,15 @@
         } v;
 };
 
+enum _stmt_kind {FunctionDef_kind=1, ClassDef_kind=2, Return_kind=3,
+                  Delete_kind=4, Assign_kind=5, AugAssign_kind=6, Print_kind=7,
+                  For_kind=8, While_kind=9, If_kind=10, With_kind=11,
+                  Raise_kind=12, TryExcept_kind=13, TryFinally_kind=14,
+                  Assert_kind=15, Import_kind=16, ImportFrom_kind=17,
+                  Exec_kind=18, Global_kind=19, Expr_kind=20, Pass_kind=21,
+                  Break_kind=22, Continue_kind=23};
 struct _stmt {
-        enum { FunctionDef_kind=1, ClassDef_kind=2, Return_kind=3,
-               Delete_kind=4, Assign_kind=5, AugAssign_kind=6, Print_kind=7,
-               For_kind=8, While_kind=9, If_kind=10, With_kind=11,
-               Raise_kind=12, TryExcept_kind=13, TryFinally_kind=14,
-               Assert_kind=15, Import_kind=16, ImportFrom_kind=17,
-               Exec_kind=18, Global_kind=19, Expr_kind=20, Pass_kind=21,
-               Break_kind=22, Continue_kind=23 } kind;
+        enum _stmt_kind kind;
         union {
                 struct {
                         identifier name;
@@ -181,12 +183,14 @@
         int col_offset;
 };
 
+enum _expr_kind {BoolOp_kind=1, BinOp_kind=2, UnaryOp_kind=3, Lambda_kind=4,
+                  IfExp_kind=5, Dict_kind=6, ListComp_kind=7,
+                  GeneratorExp_kind=8, Yield_kind=9, Compare_kind=10,
+                  Call_kind=11, Repr_kind=12, Num_kind=13, Str_kind=14,
+                  Attribute_kind=15, Subscript_kind=16, Name_kind=17,
+                  List_kind=18, Tuple_kind=19};
 struct _expr {
-        enum { BoolOp_kind=1, BinOp_kind=2, UnaryOp_kind=3, Lambda_kind=4,
-               IfExp_kind=5, Dict_kind=6, ListComp_kind=7, GeneratorExp_kind=8,
-               Yield_kind=9, Compare_kind=10, Call_kind=11, Repr_kind=12,
-               Num_kind=13, Str_kind=14, Attribute_kind=15, Subscript_kind=16,
-               Name_kind=17, List_kind=18, Tuple_kind=19 } kind;
+        enum _expr_kind kind;
         union {
                 struct {
                         boolop_ty op;
@@ -292,9 +296,9 @@
         int col_offset;
 };
 
+enum _slice_kind {Ellipsis_kind=1, Slice_kind=2, ExtSlice_kind=3, Index_kind=4};
 struct _slice {
-        enum { Ellipsis_kind=1, Slice_kind=2, ExtSlice_kind=3, Index_kind=4 }
-               kind;
+        enum _slice_kind kind;
         union {
                 struct {
                         expr_ty lower;

Modified: python/trunk/Parser/asdl_c.py
==============================================================================
--- python/trunk/Parser/asdl_c.py	(original)
+++ python/trunk/Parser/asdl_c.py	Tue Apr 11 10:06:50 2006
@@ -155,8 +155,10 @@
             type = sum.types[i]
             enum.append("%s_kind=%d" % (type.name, i + 1))
 
+        emit("enum _%(name)s_kind {" + ", ".join(enum) + "};")
+
         emit("struct _%(name)s {")
-        emit("enum { " + ", ".join(enum) + " } kind;", depth + 1)
+        emit("enum _%(name)s_kind kind;", depth + 1)
         emit("union {", depth + 1)
         for t in sum.types:
             self.visit(t, depth + 2)
@@ -679,8 +681,8 @@
                 self.emit("if (!value) goto failed;", depth+1)
                 self.emit("for(i = 0; i < n; i++)", depth+1)
                 # This cannot fail, so no need for error handling
-                self.emit("PyList_SET_ITEM(value, i, ast2obj_%s((%s_ty)asdl_seq_GET(%s, i)));" %
-                                (field.type, field.type, value), depth+2, reflow=False)
+                self.emit("PyList_SET_ITEM(value, i, ast2obj_cmpop((cmpop_ty)(int)asdl_seq_GET(%s, i)));" % value,
+                          depth+2, reflow=False)
                 self.emit("}", depth)
             else:
                 self.emit("value = ast2obj_list(%s, ast2obj_%s);" % (value, field.type), depth)

Modified: python/trunk/Python/Python-ast.c
==============================================================================
--- python/trunk/Python/Python-ast.c	(original)
+++ python/trunk/Python/Python-ast.c	Tue Apr 11 10:06:50 2006
@@ -2505,7 +2505,7 @@
                         value = PyList_New(n);
                         if (!value) goto failed;
                         for(i = 0; i < n; i++)
-                                PyList_SET_ITEM(value, i, ast2obj_cmpop((cmpop_ty)asdl_seq_GET(o->v.Compare.ops, i)));
+                                PyList_SET_ITEM(value, i, ast2obj_cmpop((cmpop_ty)(int)asdl_seq_GET(o->v.Compare.ops, i)));
                 }
                 if (!value) goto failed;
                 if (PyObject_SetAttrString(result, "ops", value) == -1)


More information about the Python-checkins mailing list