17db96d56Sopenharmony_ci/*[clinic input] 27db96d56Sopenharmony_cipreserve 37db96d56Sopenharmony_ci[clinic start generated code]*/ 47db96d56Sopenharmony_ci 57db96d56Sopenharmony_ciPyDoc_STRVAR(blob_close__doc__, 67db96d56Sopenharmony_ci"close($self, /)\n" 77db96d56Sopenharmony_ci"--\n" 87db96d56Sopenharmony_ci"\n" 97db96d56Sopenharmony_ci"Close the blob."); 107db96d56Sopenharmony_ci 117db96d56Sopenharmony_ci#define BLOB_CLOSE_METHODDEF \ 127db96d56Sopenharmony_ci {"close", (PyCFunction)blob_close, METH_NOARGS, blob_close__doc__}, 137db96d56Sopenharmony_ci 147db96d56Sopenharmony_cistatic PyObject * 157db96d56Sopenharmony_ciblob_close_impl(pysqlite_Blob *self); 167db96d56Sopenharmony_ci 177db96d56Sopenharmony_cistatic PyObject * 187db96d56Sopenharmony_ciblob_close(pysqlite_Blob *self, PyObject *Py_UNUSED(ignored)) 197db96d56Sopenharmony_ci{ 207db96d56Sopenharmony_ci return blob_close_impl(self); 217db96d56Sopenharmony_ci} 227db96d56Sopenharmony_ci 237db96d56Sopenharmony_ciPyDoc_STRVAR(blob_read__doc__, 247db96d56Sopenharmony_ci"read($self, length=-1, /)\n" 257db96d56Sopenharmony_ci"--\n" 267db96d56Sopenharmony_ci"\n" 277db96d56Sopenharmony_ci"Read data at the current offset position.\n" 287db96d56Sopenharmony_ci"\n" 297db96d56Sopenharmony_ci" length\n" 307db96d56Sopenharmony_ci" Read length in bytes.\n" 317db96d56Sopenharmony_ci"\n" 327db96d56Sopenharmony_ci"If the end of the blob is reached, the data up to end of file will be returned.\n" 337db96d56Sopenharmony_ci"When length is not specified, or is negative, Blob.read() will read until the\n" 347db96d56Sopenharmony_ci"end of the blob."); 357db96d56Sopenharmony_ci 367db96d56Sopenharmony_ci#define BLOB_READ_METHODDEF \ 377db96d56Sopenharmony_ci {"read", _PyCFunction_CAST(blob_read), METH_FASTCALL, blob_read__doc__}, 387db96d56Sopenharmony_ci 397db96d56Sopenharmony_cistatic PyObject * 407db96d56Sopenharmony_ciblob_read_impl(pysqlite_Blob *self, int length); 417db96d56Sopenharmony_ci 427db96d56Sopenharmony_cistatic PyObject * 437db96d56Sopenharmony_ciblob_read(pysqlite_Blob *self, PyObject *const *args, Py_ssize_t nargs) 447db96d56Sopenharmony_ci{ 457db96d56Sopenharmony_ci PyObject *return_value = NULL; 467db96d56Sopenharmony_ci int length = -1; 477db96d56Sopenharmony_ci 487db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("read", nargs, 0, 1)) { 497db96d56Sopenharmony_ci goto exit; 507db96d56Sopenharmony_ci } 517db96d56Sopenharmony_ci if (nargs < 1) { 527db96d56Sopenharmony_ci goto skip_optional; 537db96d56Sopenharmony_ci } 547db96d56Sopenharmony_ci length = _PyLong_AsInt(args[0]); 557db96d56Sopenharmony_ci if (length == -1 && PyErr_Occurred()) { 567db96d56Sopenharmony_ci goto exit; 577db96d56Sopenharmony_ci } 587db96d56Sopenharmony_ciskip_optional: 597db96d56Sopenharmony_ci return_value = blob_read_impl(self, length); 607db96d56Sopenharmony_ci 617db96d56Sopenharmony_ciexit: 627db96d56Sopenharmony_ci return return_value; 637db96d56Sopenharmony_ci} 647db96d56Sopenharmony_ci 657db96d56Sopenharmony_ciPyDoc_STRVAR(blob_write__doc__, 667db96d56Sopenharmony_ci"write($self, data, /)\n" 677db96d56Sopenharmony_ci"--\n" 687db96d56Sopenharmony_ci"\n" 697db96d56Sopenharmony_ci"Write data at the current offset.\n" 707db96d56Sopenharmony_ci"\n" 717db96d56Sopenharmony_ci"This function cannot change the blob length. Writing beyond the end of the\n" 727db96d56Sopenharmony_ci"blob will result in an exception being raised."); 737db96d56Sopenharmony_ci 747db96d56Sopenharmony_ci#define BLOB_WRITE_METHODDEF \ 757db96d56Sopenharmony_ci {"write", (PyCFunction)blob_write, METH_O, blob_write__doc__}, 767db96d56Sopenharmony_ci 777db96d56Sopenharmony_cistatic PyObject * 787db96d56Sopenharmony_ciblob_write_impl(pysqlite_Blob *self, Py_buffer *data); 797db96d56Sopenharmony_ci 807db96d56Sopenharmony_cistatic PyObject * 817db96d56Sopenharmony_ciblob_write(pysqlite_Blob *self, PyObject *arg) 827db96d56Sopenharmony_ci{ 837db96d56Sopenharmony_ci PyObject *return_value = NULL; 847db96d56Sopenharmony_ci Py_buffer data = {NULL, NULL}; 857db96d56Sopenharmony_ci 867db96d56Sopenharmony_ci if (PyObject_GetBuffer(arg, &data, PyBUF_SIMPLE) != 0) { 877db96d56Sopenharmony_ci goto exit; 887db96d56Sopenharmony_ci } 897db96d56Sopenharmony_ci if (!PyBuffer_IsContiguous(&data, 'C')) { 907db96d56Sopenharmony_ci _PyArg_BadArgument("write", "argument", "contiguous buffer", arg); 917db96d56Sopenharmony_ci goto exit; 927db96d56Sopenharmony_ci } 937db96d56Sopenharmony_ci return_value = blob_write_impl(self, &data); 947db96d56Sopenharmony_ci 957db96d56Sopenharmony_ciexit: 967db96d56Sopenharmony_ci /* Cleanup for data */ 977db96d56Sopenharmony_ci if (data.obj) { 987db96d56Sopenharmony_ci PyBuffer_Release(&data); 997db96d56Sopenharmony_ci } 1007db96d56Sopenharmony_ci 1017db96d56Sopenharmony_ci return return_value; 1027db96d56Sopenharmony_ci} 1037db96d56Sopenharmony_ci 1047db96d56Sopenharmony_ciPyDoc_STRVAR(blob_seek__doc__, 1057db96d56Sopenharmony_ci"seek($self, offset, origin=0, /)\n" 1067db96d56Sopenharmony_ci"--\n" 1077db96d56Sopenharmony_ci"\n" 1087db96d56Sopenharmony_ci"Set the current access position to offset.\n" 1097db96d56Sopenharmony_ci"\n" 1107db96d56Sopenharmony_ci"The origin argument defaults to os.SEEK_SET (absolute blob positioning).\n" 1117db96d56Sopenharmony_ci"Other values for origin are os.SEEK_CUR (seek relative to the current position)\n" 1127db96d56Sopenharmony_ci"and os.SEEK_END (seek relative to the blob\'s end)."); 1137db96d56Sopenharmony_ci 1147db96d56Sopenharmony_ci#define BLOB_SEEK_METHODDEF \ 1157db96d56Sopenharmony_ci {"seek", _PyCFunction_CAST(blob_seek), METH_FASTCALL, blob_seek__doc__}, 1167db96d56Sopenharmony_ci 1177db96d56Sopenharmony_cistatic PyObject * 1187db96d56Sopenharmony_ciblob_seek_impl(pysqlite_Blob *self, int offset, int origin); 1197db96d56Sopenharmony_ci 1207db96d56Sopenharmony_cistatic PyObject * 1217db96d56Sopenharmony_ciblob_seek(pysqlite_Blob *self, PyObject *const *args, Py_ssize_t nargs) 1227db96d56Sopenharmony_ci{ 1237db96d56Sopenharmony_ci PyObject *return_value = NULL; 1247db96d56Sopenharmony_ci int offset; 1257db96d56Sopenharmony_ci int origin = 0; 1267db96d56Sopenharmony_ci 1277db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("seek", nargs, 1, 2)) { 1287db96d56Sopenharmony_ci goto exit; 1297db96d56Sopenharmony_ci } 1307db96d56Sopenharmony_ci offset = _PyLong_AsInt(args[0]); 1317db96d56Sopenharmony_ci if (offset == -1 && PyErr_Occurred()) { 1327db96d56Sopenharmony_ci goto exit; 1337db96d56Sopenharmony_ci } 1347db96d56Sopenharmony_ci if (nargs < 2) { 1357db96d56Sopenharmony_ci goto skip_optional; 1367db96d56Sopenharmony_ci } 1377db96d56Sopenharmony_ci origin = _PyLong_AsInt(args[1]); 1387db96d56Sopenharmony_ci if (origin == -1 && PyErr_Occurred()) { 1397db96d56Sopenharmony_ci goto exit; 1407db96d56Sopenharmony_ci } 1417db96d56Sopenharmony_ciskip_optional: 1427db96d56Sopenharmony_ci return_value = blob_seek_impl(self, offset, origin); 1437db96d56Sopenharmony_ci 1447db96d56Sopenharmony_ciexit: 1457db96d56Sopenharmony_ci return return_value; 1467db96d56Sopenharmony_ci} 1477db96d56Sopenharmony_ci 1487db96d56Sopenharmony_ciPyDoc_STRVAR(blob_tell__doc__, 1497db96d56Sopenharmony_ci"tell($self, /)\n" 1507db96d56Sopenharmony_ci"--\n" 1517db96d56Sopenharmony_ci"\n" 1527db96d56Sopenharmony_ci"Return the current access position for the blob."); 1537db96d56Sopenharmony_ci 1547db96d56Sopenharmony_ci#define BLOB_TELL_METHODDEF \ 1557db96d56Sopenharmony_ci {"tell", (PyCFunction)blob_tell, METH_NOARGS, blob_tell__doc__}, 1567db96d56Sopenharmony_ci 1577db96d56Sopenharmony_cistatic PyObject * 1587db96d56Sopenharmony_ciblob_tell_impl(pysqlite_Blob *self); 1597db96d56Sopenharmony_ci 1607db96d56Sopenharmony_cistatic PyObject * 1617db96d56Sopenharmony_ciblob_tell(pysqlite_Blob *self, PyObject *Py_UNUSED(ignored)) 1627db96d56Sopenharmony_ci{ 1637db96d56Sopenharmony_ci return blob_tell_impl(self); 1647db96d56Sopenharmony_ci} 1657db96d56Sopenharmony_ci 1667db96d56Sopenharmony_ciPyDoc_STRVAR(blob_enter__doc__, 1677db96d56Sopenharmony_ci"__enter__($self, /)\n" 1687db96d56Sopenharmony_ci"--\n" 1697db96d56Sopenharmony_ci"\n" 1707db96d56Sopenharmony_ci"Blob context manager enter."); 1717db96d56Sopenharmony_ci 1727db96d56Sopenharmony_ci#define BLOB_ENTER_METHODDEF \ 1737db96d56Sopenharmony_ci {"__enter__", (PyCFunction)blob_enter, METH_NOARGS, blob_enter__doc__}, 1747db96d56Sopenharmony_ci 1757db96d56Sopenharmony_cistatic PyObject * 1767db96d56Sopenharmony_ciblob_enter_impl(pysqlite_Blob *self); 1777db96d56Sopenharmony_ci 1787db96d56Sopenharmony_cistatic PyObject * 1797db96d56Sopenharmony_ciblob_enter(pysqlite_Blob *self, PyObject *Py_UNUSED(ignored)) 1807db96d56Sopenharmony_ci{ 1817db96d56Sopenharmony_ci return blob_enter_impl(self); 1827db96d56Sopenharmony_ci} 1837db96d56Sopenharmony_ci 1847db96d56Sopenharmony_ciPyDoc_STRVAR(blob_exit__doc__, 1857db96d56Sopenharmony_ci"__exit__($self, type, val, tb, /)\n" 1867db96d56Sopenharmony_ci"--\n" 1877db96d56Sopenharmony_ci"\n" 1887db96d56Sopenharmony_ci"Blob context manager exit."); 1897db96d56Sopenharmony_ci 1907db96d56Sopenharmony_ci#define BLOB_EXIT_METHODDEF \ 1917db96d56Sopenharmony_ci {"__exit__", _PyCFunction_CAST(blob_exit), METH_FASTCALL, blob_exit__doc__}, 1927db96d56Sopenharmony_ci 1937db96d56Sopenharmony_cistatic PyObject * 1947db96d56Sopenharmony_ciblob_exit_impl(pysqlite_Blob *self, PyObject *type, PyObject *val, 1957db96d56Sopenharmony_ci PyObject *tb); 1967db96d56Sopenharmony_ci 1977db96d56Sopenharmony_cistatic PyObject * 1987db96d56Sopenharmony_ciblob_exit(pysqlite_Blob *self, PyObject *const *args, Py_ssize_t nargs) 1997db96d56Sopenharmony_ci{ 2007db96d56Sopenharmony_ci PyObject *return_value = NULL; 2017db96d56Sopenharmony_ci PyObject *type; 2027db96d56Sopenharmony_ci PyObject *val; 2037db96d56Sopenharmony_ci PyObject *tb; 2047db96d56Sopenharmony_ci 2057db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("__exit__", nargs, 3, 3)) { 2067db96d56Sopenharmony_ci goto exit; 2077db96d56Sopenharmony_ci } 2087db96d56Sopenharmony_ci type = args[0]; 2097db96d56Sopenharmony_ci val = args[1]; 2107db96d56Sopenharmony_ci tb = args[2]; 2117db96d56Sopenharmony_ci return_value = blob_exit_impl(self, type, val, tb); 2127db96d56Sopenharmony_ci 2137db96d56Sopenharmony_ciexit: 2147db96d56Sopenharmony_ci return return_value; 2157db96d56Sopenharmony_ci} 2167db96d56Sopenharmony_ci/*[clinic end generated code: output=382cbf0977bb158a input=a9049054013a1b77]*/ 217