LCOV - code coverage report
Current view: top level - libreoffice/workdir/unxlngi6.pro/UnpackedTarball/python3/Modules - symtablemodule.c (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 0 47 0.0 %
Date: 2012-12-17 Functions: 0 2 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : #include "Python.h"
       2             : 
       3             : #include "code.h"
       4             : #include "Python-ast.h"
       5             : #include "symtable.h"
       6             : 
       7             : static PyObject *
       8           0 : symtable_symtable(PyObject *self, PyObject *args)
       9             : {
      10             :     struct symtable *st;
      11             :     PyObject *t;
      12             : 
      13             :     char *str;
      14             :     char *filename;
      15             :     char *startstr;
      16             :     int start;
      17             : 
      18           0 :     if (!PyArg_ParseTuple(args, "sss:symtable", &str, &filename,
      19             :                           &startstr))
      20           0 :         return NULL;
      21           0 :     if (strcmp(startstr, "exec") == 0)
      22           0 :         start = Py_file_input;
      23           0 :     else if (strcmp(startstr, "eval") == 0)
      24           0 :         start = Py_eval_input;
      25           0 :     else if (strcmp(startstr, "single") == 0)
      26           0 :         start = Py_single_input;
      27             :     else {
      28           0 :         PyErr_SetString(PyExc_ValueError,
      29             :            "symtable() arg 3 must be 'exec' or 'eval' or 'single'");
      30           0 :         return NULL;
      31             :     }
      32           0 :     st = Py_SymtableString(str, filename, start);
      33           0 :     if (st == NULL)
      34           0 :         return NULL;
      35           0 :     t = st->st_blocks;
      36           0 :     Py_INCREF(t);
      37           0 :     PyMem_Free((void *)st->st_future);
      38           0 :     PySymtable_Free(st);
      39           0 :     return t;
      40             : }
      41             : 
      42             : static PyMethodDef symtable_methods[] = {
      43             :     {"symtable",        symtable_symtable,      METH_VARARGS,
      44             :      PyDoc_STR("Return symbol and scope dictionaries"
      45             :                " used internally by compiler.")},
      46             :     {NULL,              NULL}           /* sentinel */
      47             : };
      48             : 
      49             : static struct PyModuleDef symtablemodule = {
      50             :     PyModuleDef_HEAD_INIT,
      51             :     "_symtable",
      52             :     NULL,
      53             :     -1,
      54             :     symtable_methods,
      55             :     NULL,
      56             :     NULL,
      57             :     NULL,
      58             :     NULL
      59             : };
      60             : 
      61             : PyMODINIT_FUNC
      62           0 : PyInit__symtable(void)
      63             : {
      64             :     PyObject *m;
      65             : 
      66           0 :     m = PyModule_Create(&symtablemodule);
      67           0 :     if (m == NULL)
      68           0 :         return NULL;
      69           0 :     PyModule_AddIntConstant(m, "USE", USE);
      70           0 :     PyModule_AddIntConstant(m, "DEF_GLOBAL", DEF_GLOBAL);
      71           0 :     PyModule_AddIntConstant(m, "DEF_LOCAL", DEF_LOCAL);
      72           0 :     PyModule_AddIntConstant(m, "DEF_PARAM", DEF_PARAM);
      73           0 :     PyModule_AddIntConstant(m, "DEF_FREE", DEF_FREE);
      74           0 :     PyModule_AddIntConstant(m, "DEF_FREE_CLASS", DEF_FREE_CLASS);
      75           0 :     PyModule_AddIntConstant(m, "DEF_IMPORT", DEF_IMPORT);
      76           0 :     PyModule_AddIntConstant(m, "DEF_BOUND", DEF_BOUND);
      77             : 
      78           0 :     PyModule_AddIntConstant(m, "TYPE_FUNCTION", FunctionBlock);
      79           0 :     PyModule_AddIntConstant(m, "TYPE_CLASS", ClassBlock);
      80           0 :     PyModule_AddIntConstant(m, "TYPE_MODULE", ModuleBlock);
      81             : 
      82           0 :     PyModule_AddIntConstant(m, "OPT_IMPORT_STAR", OPT_IMPORT_STAR);
      83           0 :     PyModule_AddIntConstant(m, "OPT_TOPLEVEL", OPT_TOPLEVEL);
      84             : 
      85           0 :     PyModule_AddIntConstant(m, "LOCAL", LOCAL);
      86           0 :     PyModule_AddIntConstant(m, "GLOBAL_EXPLICIT", GLOBAL_EXPLICIT);
      87           0 :     PyModule_AddIntConstant(m, "GLOBAL_IMPLICIT", GLOBAL_IMPLICIT);
      88           0 :     PyModule_AddIntConstant(m, "FREE", FREE);
      89           0 :     PyModule_AddIntConstant(m, "CELL", CELL);
      90             : 
      91           0 :     PyModule_AddIntConstant(m, "SCOPE_OFF", SCOPE_OFFSET);
      92           0 :     PyModule_AddIntConstant(m, "SCOPE_MASK", SCOPE_MASK);
      93             : 
      94           0 :     if (PyErr_Occurred()) {
      95           0 :         Py_DECREF(m);
      96           0 :         m = 0;
      97             :     }
      98           0 :     return m;
      99             : }

Generated by: LCOV version 1.10