(root)/
Python-3.11.7/
Modules/
clinic/
pyexpat.c.h
       1  /*[clinic input]
       2  preserve
       3  [clinic start generated code]*/
       4  
       5  PyDoc_STRVAR(pyexpat_xmlparser_Parse__doc__,
       6  "Parse($self, data, isfinal=False, /)\n"
       7  "--\n"
       8  "\n"
       9  "Parse XML data.\n"
      10  "\n"
      11  "`isfinal\' should be true at end of input.");
      12  
      13  #define PYEXPAT_XMLPARSER_PARSE_METHODDEF    \
      14      {"Parse", _PyCFunction_CAST(pyexpat_xmlparser_Parse), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, pyexpat_xmlparser_Parse__doc__},
      15  
      16  static PyObject *
      17  pyexpat_xmlparser_Parse_impl(xmlparseobject *self, PyTypeObject *cls,
      18                               PyObject *data, int isfinal);
      19  
      20  static PyObject *
      21  pyexpat_xmlparser_Parse(xmlparseobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
      22  {
      23      PyObject *return_value = NULL;
      24      static const char * const _keywords[] = {"", "", NULL};
      25      static _PyArg_Parser _parser = {NULL, _keywords, "Parse", 0};
      26      PyObject *argsbuf[2];
      27      PyObject *data;
      28      int isfinal = 0;
      29  
      30      args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
      31      if (!args) {
      32          goto exit;
      33      }
      34      data = args[0];
      35      if (nargs < 2) {
      36          goto skip_optional_posonly;
      37      }
      38      isfinal = _PyLong_AsInt(args[1]);
      39      if (isfinal == -1 && PyErr_Occurred()) {
      40          goto exit;
      41      }
      42  skip_optional_posonly:
      43      return_value = pyexpat_xmlparser_Parse_impl(self, cls, data, isfinal);
      44  
      45  exit:
      46      return return_value;
      47  }
      48  
      49  PyDoc_STRVAR(pyexpat_xmlparser_ParseFile__doc__,
      50  "ParseFile($self, file, /)\n"
      51  "--\n"
      52  "\n"
      53  "Parse XML data from file-like object.");
      54  
      55  #define PYEXPAT_XMLPARSER_PARSEFILE_METHODDEF    \
      56      {"ParseFile", _PyCFunction_CAST(pyexpat_xmlparser_ParseFile), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, pyexpat_xmlparser_ParseFile__doc__},
      57  
      58  static PyObject *
      59  pyexpat_xmlparser_ParseFile_impl(xmlparseobject *self, PyTypeObject *cls,
      60                                   PyObject *file);
      61  
      62  static PyObject *
      63  pyexpat_xmlparser_ParseFile(xmlparseobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
      64  {
      65      PyObject *return_value = NULL;
      66      static const char * const _keywords[] = {"", NULL};
      67      static _PyArg_Parser _parser = {NULL, _keywords, "ParseFile", 0};
      68      PyObject *argsbuf[1];
      69      PyObject *file;
      70  
      71      args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
      72      if (!args) {
      73          goto exit;
      74      }
      75      file = args[0];
      76      return_value = pyexpat_xmlparser_ParseFile_impl(self, cls, file);
      77  
      78  exit:
      79      return return_value;
      80  }
      81  
      82  PyDoc_STRVAR(pyexpat_xmlparser_SetBase__doc__,
      83  "SetBase($self, base, /)\n"
      84  "--\n"
      85  "\n"
      86  "Set the base URL for the parser.");
      87  
      88  #define PYEXPAT_XMLPARSER_SETBASE_METHODDEF    \
      89      {"SetBase", (PyCFunction)pyexpat_xmlparser_SetBase, METH_O, pyexpat_xmlparser_SetBase__doc__},
      90  
      91  static PyObject *
      92  pyexpat_xmlparser_SetBase_impl(xmlparseobject *self, const char *base);
      93  
      94  static PyObject *
      95  pyexpat_xmlparser_SetBase(xmlparseobject *self, PyObject *arg)
      96  {
      97      PyObject *return_value = NULL;
      98      const char *base;
      99  
     100      if (!PyUnicode_Check(arg)) {
     101          _PyArg_BadArgument("SetBase", "argument", "str", arg);
     102          goto exit;
     103      }
     104      Py_ssize_t base_length;
     105      base = PyUnicode_AsUTF8AndSize(arg, &base_length);
     106      if (base == NULL) {
     107          goto exit;
     108      }
     109      if (strlen(base) != (size_t)base_length) {
     110          PyErr_SetString(PyExc_ValueError, "embedded null character");
     111          goto exit;
     112      }
     113      return_value = pyexpat_xmlparser_SetBase_impl(self, base);
     114  
     115  exit:
     116      return return_value;
     117  }
     118  
     119  PyDoc_STRVAR(pyexpat_xmlparser_GetBase__doc__,
     120  "GetBase($self, /)\n"
     121  "--\n"
     122  "\n"
     123  "Return base URL string for the parser.");
     124  
     125  #define PYEXPAT_XMLPARSER_GETBASE_METHODDEF    \
     126      {"GetBase", (PyCFunction)pyexpat_xmlparser_GetBase, METH_NOARGS, pyexpat_xmlparser_GetBase__doc__},
     127  
     128  static PyObject *
     129  pyexpat_xmlparser_GetBase_impl(xmlparseobject *self);
     130  
     131  static PyObject *
     132  pyexpat_xmlparser_GetBase(xmlparseobject *self, PyObject *Py_UNUSED(ignored))
     133  {
     134      return pyexpat_xmlparser_GetBase_impl(self);
     135  }
     136  
     137  PyDoc_STRVAR(pyexpat_xmlparser_GetInputContext__doc__,
     138  "GetInputContext($self, /)\n"
     139  "--\n"
     140  "\n"
     141  "Return the untranslated text of the input that caused the current event.\n"
     142  "\n"
     143  "If the event was generated by a large amount of text (such as a start tag\n"
     144  "for an element with many attributes), not all of the text may be available.");
     145  
     146  #define PYEXPAT_XMLPARSER_GETINPUTCONTEXT_METHODDEF    \
     147      {"GetInputContext", (PyCFunction)pyexpat_xmlparser_GetInputContext, METH_NOARGS, pyexpat_xmlparser_GetInputContext__doc__},
     148  
     149  static PyObject *
     150  pyexpat_xmlparser_GetInputContext_impl(xmlparseobject *self);
     151  
     152  static PyObject *
     153  pyexpat_xmlparser_GetInputContext(xmlparseobject *self, PyObject *Py_UNUSED(ignored))
     154  {
     155      return pyexpat_xmlparser_GetInputContext_impl(self);
     156  }
     157  
     158  PyDoc_STRVAR(pyexpat_xmlparser_ExternalEntityParserCreate__doc__,
     159  "ExternalEntityParserCreate($self, context, encoding=<unrepresentable>,\n"
     160  "                           /)\n"
     161  "--\n"
     162  "\n"
     163  "Create a parser for parsing an external entity based on the information passed to the ExternalEntityRefHandler.");
     164  
     165  #define PYEXPAT_XMLPARSER_EXTERNALENTITYPARSERCREATE_METHODDEF    \
     166      {"ExternalEntityParserCreate", _PyCFunction_CAST(pyexpat_xmlparser_ExternalEntityParserCreate), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, pyexpat_xmlparser_ExternalEntityParserCreate__doc__},
     167  
     168  static PyObject *
     169  pyexpat_xmlparser_ExternalEntityParserCreate_impl(xmlparseobject *self,
     170                                                    PyTypeObject *cls,
     171                                                    const char *context,
     172                                                    const char *encoding);
     173  
     174  static PyObject *
     175  pyexpat_xmlparser_ExternalEntityParserCreate(xmlparseobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
     176  {
     177      PyObject *return_value = NULL;
     178      static const char * const _keywords[] = {"", "", NULL};
     179      static _PyArg_Parser _parser = {NULL, _keywords, "ExternalEntityParserCreate", 0};
     180      PyObject *argsbuf[2];
     181      const char *context;
     182      const char *encoding = NULL;
     183  
     184      args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
     185      if (!args) {
     186          goto exit;
     187      }
     188      if (args[0] == Py_None) {
     189          context = NULL;
     190      }
     191      else if (PyUnicode_Check(args[0])) {
     192          Py_ssize_t context_length;
     193          context = PyUnicode_AsUTF8AndSize(args[0], &context_length);
     194          if (context == NULL) {
     195              goto exit;
     196          }
     197          if (strlen(context) != (size_t)context_length) {
     198              PyErr_SetString(PyExc_ValueError, "embedded null character");
     199              goto exit;
     200          }
     201      }
     202      else {
     203          _PyArg_BadArgument("ExternalEntityParserCreate", "argument 1", "str or None", args[0]);
     204          goto exit;
     205      }
     206      if (nargs < 2) {
     207          goto skip_optional_posonly;
     208      }
     209      if (!PyUnicode_Check(args[1])) {
     210          _PyArg_BadArgument("ExternalEntityParserCreate", "argument 2", "str", args[1]);
     211          goto exit;
     212      }
     213      Py_ssize_t encoding_length;
     214      encoding = PyUnicode_AsUTF8AndSize(args[1], &encoding_length);
     215      if (encoding == NULL) {
     216          goto exit;
     217      }
     218      if (strlen(encoding) != (size_t)encoding_length) {
     219          PyErr_SetString(PyExc_ValueError, "embedded null character");
     220          goto exit;
     221      }
     222  skip_optional_posonly:
     223      return_value = pyexpat_xmlparser_ExternalEntityParserCreate_impl(self, cls, context, encoding);
     224  
     225  exit:
     226      return return_value;
     227  }
     228  
     229  PyDoc_STRVAR(pyexpat_xmlparser_SetParamEntityParsing__doc__,
     230  "SetParamEntityParsing($self, flag, /)\n"
     231  "--\n"
     232  "\n"
     233  "Controls parsing of parameter entities (including the external DTD subset).\n"
     234  "\n"
     235  "Possible flag values are XML_PARAM_ENTITY_PARSING_NEVER,\n"
     236  "XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE and\n"
     237  "XML_PARAM_ENTITY_PARSING_ALWAYS. Returns true if setting the flag\n"
     238  "was successful.");
     239  
     240  #define PYEXPAT_XMLPARSER_SETPARAMENTITYPARSING_METHODDEF    \
     241      {"SetParamEntityParsing", (PyCFunction)pyexpat_xmlparser_SetParamEntityParsing, METH_O, pyexpat_xmlparser_SetParamEntityParsing__doc__},
     242  
     243  static PyObject *
     244  pyexpat_xmlparser_SetParamEntityParsing_impl(xmlparseobject *self, int flag);
     245  
     246  static PyObject *
     247  pyexpat_xmlparser_SetParamEntityParsing(xmlparseobject *self, PyObject *arg)
     248  {
     249      PyObject *return_value = NULL;
     250      int flag;
     251  
     252      flag = _PyLong_AsInt(arg);
     253      if (flag == -1 && PyErr_Occurred()) {
     254          goto exit;
     255      }
     256      return_value = pyexpat_xmlparser_SetParamEntityParsing_impl(self, flag);
     257  
     258  exit:
     259      return return_value;
     260  }
     261  
     262  #if (XML_COMBINED_VERSION >= 19505)
     263  
     264  PyDoc_STRVAR(pyexpat_xmlparser_UseForeignDTD__doc__,
     265  "UseForeignDTD($self, flag=True, /)\n"
     266  "--\n"
     267  "\n"
     268  "Allows the application to provide an artificial external subset if one is not specified as part of the document instance.\n"
     269  "\n"
     270  "This readily allows the use of a \'default\' document type controlled by the\n"
     271  "application, while still getting the advantage of providing document type\n"
     272  "information to the parser. \'flag\' defaults to True if not provided.");
     273  
     274  #define PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF    \
     275      {"UseForeignDTD", _PyCFunction_CAST(pyexpat_xmlparser_UseForeignDTD), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, pyexpat_xmlparser_UseForeignDTD__doc__},
     276  
     277  static PyObject *
     278  pyexpat_xmlparser_UseForeignDTD_impl(xmlparseobject *self, PyTypeObject *cls,
     279                                       int flag);
     280  
     281  static PyObject *
     282  pyexpat_xmlparser_UseForeignDTD(xmlparseobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
     283  {
     284      PyObject *return_value = NULL;
     285      static const char * const _keywords[] = {"", NULL};
     286      static _PyArg_Parser _parser = {NULL, _keywords, "UseForeignDTD", 0};
     287      PyObject *argsbuf[1];
     288      int flag = 1;
     289  
     290      args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf);
     291      if (!args) {
     292          goto exit;
     293      }
     294      if (nargs < 1) {
     295          goto skip_optional_posonly;
     296      }
     297      flag = PyObject_IsTrue(args[0]);
     298      if (flag < 0) {
     299          goto exit;
     300      }
     301  skip_optional_posonly:
     302      return_value = pyexpat_xmlparser_UseForeignDTD_impl(self, cls, flag);
     303  
     304  exit:
     305      return return_value;
     306  }
     307  
     308  #endif /* (XML_COMBINED_VERSION >= 19505) */
     309  
     310  PyDoc_STRVAR(pyexpat_ParserCreate__doc__,
     311  "ParserCreate($module, /, encoding=None, namespace_separator=None,\n"
     312  "             intern=<unrepresentable>)\n"
     313  "--\n"
     314  "\n"
     315  "Return a new XML parser object.");
     316  
     317  #define PYEXPAT_PARSERCREATE_METHODDEF    \
     318      {"ParserCreate", _PyCFunction_CAST(pyexpat_ParserCreate), METH_FASTCALL|METH_KEYWORDS, pyexpat_ParserCreate__doc__},
     319  
     320  static PyObject *
     321  pyexpat_ParserCreate_impl(PyObject *module, const char *encoding,
     322                            const char *namespace_separator, PyObject *intern);
     323  
     324  static PyObject *
     325  pyexpat_ParserCreate(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
     326  {
     327      PyObject *return_value = NULL;
     328      static const char * const _keywords[] = {"encoding", "namespace_separator", "intern", NULL};
     329      static _PyArg_Parser _parser = {NULL, _keywords, "ParserCreate", 0};
     330      PyObject *argsbuf[3];
     331      Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
     332      const char *encoding = NULL;
     333      const char *namespace_separator = NULL;
     334      PyObject *intern = NULL;
     335  
     336      args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 3, 0, argsbuf);
     337      if (!args) {
     338          goto exit;
     339      }
     340      if (!noptargs) {
     341          goto skip_optional_pos;
     342      }
     343      if (args[0]) {
     344          if (args[0] == Py_None) {
     345              encoding = NULL;
     346          }
     347          else if (PyUnicode_Check(args[0])) {
     348              Py_ssize_t encoding_length;
     349              encoding = PyUnicode_AsUTF8AndSize(args[0], &encoding_length);
     350              if (encoding == NULL) {
     351                  goto exit;
     352              }
     353              if (strlen(encoding) != (size_t)encoding_length) {
     354                  PyErr_SetString(PyExc_ValueError, "embedded null character");
     355                  goto exit;
     356              }
     357          }
     358          else {
     359              _PyArg_BadArgument("ParserCreate", "argument 'encoding'", "str or None", args[0]);
     360              goto exit;
     361          }
     362          if (!--noptargs) {
     363              goto skip_optional_pos;
     364          }
     365      }
     366      if (args[1]) {
     367          if (args[1] == Py_None) {
     368              namespace_separator = NULL;
     369          }
     370          else if (PyUnicode_Check(args[1])) {
     371              Py_ssize_t namespace_separator_length;
     372              namespace_separator = PyUnicode_AsUTF8AndSize(args[1], &namespace_separator_length);
     373              if (namespace_separator == NULL) {
     374                  goto exit;
     375              }
     376              if (strlen(namespace_separator) != (size_t)namespace_separator_length) {
     377                  PyErr_SetString(PyExc_ValueError, "embedded null character");
     378                  goto exit;
     379              }
     380          }
     381          else {
     382              _PyArg_BadArgument("ParserCreate", "argument 'namespace_separator'", "str or None", args[1]);
     383              goto exit;
     384          }
     385          if (!--noptargs) {
     386              goto skip_optional_pos;
     387          }
     388      }
     389      intern = args[2];
     390  skip_optional_pos:
     391      return_value = pyexpat_ParserCreate_impl(module, encoding, namespace_separator, intern);
     392  
     393  exit:
     394      return return_value;
     395  }
     396  
     397  PyDoc_STRVAR(pyexpat_ErrorString__doc__,
     398  "ErrorString($module, code, /)\n"
     399  "--\n"
     400  "\n"
     401  "Returns string error for given number.");
     402  
     403  #define PYEXPAT_ERRORSTRING_METHODDEF    \
     404      {"ErrorString", (PyCFunction)pyexpat_ErrorString, METH_O, pyexpat_ErrorString__doc__},
     405  
     406  static PyObject *
     407  pyexpat_ErrorString_impl(PyObject *module, long code);
     408  
     409  static PyObject *
     410  pyexpat_ErrorString(PyObject *module, PyObject *arg)
     411  {
     412      PyObject *return_value = NULL;
     413      long code;
     414  
     415      code = PyLong_AsLong(arg);
     416      if (code == -1 && PyErr_Occurred()) {
     417          goto exit;
     418      }
     419      return_value = pyexpat_ErrorString_impl(module, code);
     420  
     421  exit:
     422      return return_value;
     423  }
     424  
     425  #ifndef PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF
     426      #define PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF
     427  #endif /* !defined(PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF) */
     428  /*[clinic end generated code: output=3e333b89da3aa58c input=a9049054013a1b77]*/