~ubuntu-branches/ubuntu/lucid/python2.6/lucid

« back to all changes in this revision

Viewing changes to Parser/asdl_c.py

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2010-03-11 13:30:19 UTC
  • mto: (10.1.13 sid)
  • mto: This revision was merged to the branch mainline in revision 44.
  • Revision ID: james.westby@ubuntu.com-20100311133019-sblbooa3uqrkoe70
Tags: upstream-2.6.5~rc2
ImportĀ upstreamĀ versionĀ 2.6.5~rc2

Show diffs side-by-side

added added

removed removed

Lines of Context:
367
367
        self.emit("obj2ast_%s(PyObject* obj, %s* out, PyArena* arena)" % (name, ctype), 0)
368
368
        self.emit("{", 0)
369
369
        self.emit("PyObject* tmp = NULL;", 1)
 
370
        self.emit("int isinstance;", 1)
370
371
        self.emit("", 0)
371
372
 
372
373
    def sumTrailer(self, name):
386
387
    def simpleSum(self, sum, name):
387
388
        self.funcHeader(name)
388
389
        for t in sum.types:
389
 
            self.emit("if (PyObject_IsInstance(obj, (PyObject*)%s_type)) {" % t.name, 1)
 
390
            line = ("isinstance = PyObject_IsInstance(obj, "
 
391
                    "(PyObject *)%s_type);")
 
392
            self.emit(line % (t.name,), 1)
 
393
            self.emit("if (isinstance == -1) {", 1)
 
394
            self.emit("return 1;", 2)
 
395
            self.emit("}", 1)
 
396
            self.emit("if (isinstance) {", 1)
390
397
            self.emit("*out = %s;" % t.name, 2)
391
398
            self.emit("return 0;", 2)
392
399
            self.emit("}", 1)
408
415
        for a in sum.attributes:
409
416
            self.visitField(a, name, sum=sum, depth=1)
410
417
        for t in sum.types:
411
 
            self.emit("if (PyObject_IsInstance(obj, (PyObject*)%s_type)) {" % t.name, 1)
 
418
            line = "isinstance = PyObject_IsInstance(obj, (PyObject*)%s_type);"
 
419
            self.emit(line % (t.name,), 1)
 
420
            self.emit("if (isinstance == -1) {", 1)
 
421
            self.emit("return 1;", 2)
 
422
            self.emit("}", 1)
 
423
            self.emit("if (isinstance) {", 1)
412
424
            for f in t.fields:
413
425
                self.visitFieldDeclaration(f, t.name, sum=sum, depth=2)
414
426
            self.emit("", 0)
907
919
        self.emit('if (PyDict_SetItemString(d, "AST", (PyObject*)&AST_type) < 0) return;', 1)
908
920
        self.emit('if (PyModule_AddIntConstant(m, "PyCF_ONLY_AST", PyCF_ONLY_AST) < 0)', 1)
909
921
        self.emit("return;", 2)
910
 
        # Value of version: "$Revision: 67146 $"
 
922
        # Value of version: "$Revision: 76775 $"
911
923
        self.emit('if (PyModule_AddStringConstant(m, "__version__", "%s") < 0)'
912
924
                % parse_version(mod), 1)
913
925
        self.emit("return;", 2)
1093
1105
    PyObject *req_type[] = {(PyObject*)Module_type, (PyObject*)Expression_type,
1094
1106
                            (PyObject*)Interactive_type};
1095
1107
    char *req_name[] = {"Module", "Expression", "Interactive"};
 
1108
    int isinstance;
1096
1109
    assert(0 <= mode && mode <= 2);
1097
1110
 
1098
1111
    init_types();
1099
1112
 
1100
 
    if (!PyObject_IsInstance(ast, req_type[mode])) {
 
1113
    isinstance = PyObject_IsInstance(ast, req_type[mode]);
 
1114
    if (isinstance == -1)
 
1115
        return NULL;
 
1116
    if (!isinstance) {
1101
1117
        PyErr_Format(PyExc_TypeError, "expected %s node, got %.400s",
1102
1118
                     req_name[mode], Py_TYPE(ast)->tp_name);
1103
1119
        return NULL;