// This is the SIP interface definition for TQByteArray. // // Copyright (c) 2007 // Riverbank Computing Limited // // This file is part of PyTQt. // // This copy of PyTQt is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License as published by the Free // Software Foundation; either version 2, or (at your option) any later // version. // // PyTQt is supplied in the hope that it will be useful, but WITHOUT ANY // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS // FOR A PARTICULAR PURPOSE. See the GNU General Public License for more // details. // // You should have received a copy of the GNU General Public License along with // PyTQt; see the file LICENSE. If not, write to the Free Software Foundation, // Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. %ExportedDoc TQByteArray A Python string can be used whenever a TQByteArray can be used. A TQByteArray can be converted to a Python string using the Python str() function. TQByteArray &assign const char *data uint size Not implemented. char &at uint i Not yet implemented. int contains const char &d Not yet implemented. bool fill const char &d int size = -1 Not yet implemented. int find const char &d uint i = 0 Not yet implemented. void resetRawData const char *data uintsize Not implemented. TQByteArray &setRawData const char *data uintsize Not implemented. %End class TQByteArray { %TypeHeaderCode #include %End %TypeCode // Convert a TQByteArray to a Python string or Py_None if there's // no data static PyObject* TQByteArray_To_String(TQByteArray *ba) { // TQByteArrays aren't '\0' terminated so set the size // explicitly. char *data; uint len; Py_BEGIN_ALLOW_THREADS data = ba->data(); len = ba->size(); Py_END_ALLOW_THREADS if (data) { #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromStringAndSize(data, len); #else return SIPBytes_FromStringAndSize(data, len); #endif } else { return Py_None; } } %End public: TQByteArray(); TQByteArray(int); TQByteArray(const TQByteArray &); SIP_PYOBJECT data() const; %MethodCode PyObject* res = TQByteArray_To_String(sipCpp); if (res == Py_None) { Py_INCREF(Py_None); } else if (res == NULL) { sipIsErr = 1; } else { sipRes = res; } %End // These are actually in TQMemArray, which isn't implemented so pretend // they are here. uint nrefs() const; bool isEmpty() const; bool isNull() const; bool resize(uint); bool truncate(uint); // bool fill(const char &,int = -1); void detach(); TQByteArray copy() const; TQByteArray &assign(const TQByteArray &); // TQByteArray &assign(const char *,uint); TQByteArray &duplicate(const TQByteArray &); TQByteArray &duplicate(const char *,uint); // TQByteArray &setRawData(const char *,uint); // void resetRawData(const char *,uint); // int find(const char &,uint = 0) const; // int contains(const char &) const; // char &at(uint) const; SIP_PYOBJECT __str__(); %MethodCode PyObject* res = TQByteArray_To_String(sipCpp); if (res == Py_None) { sipRes = SIPBytes_FromString(""); } else { sipRes = res; } %End %ConvertToTypeCode // Allow a Python string whenever a TQByteArray is expected. if (sipIsErr == NULL) return (SIPBytes_Check(sipPy) || PyUnicode_Check(sipPy) || sipCanConvertToInstance(sipPy,sipClass_TQByteArray,SIP_NO_CONVERTORS)); if (PyUnicode_Check(sipPy)) { Py_BEGIN_ALLOW_THREADS TQByteArray *ba = new TQByteArray(); #if PY_VERSION_HEX >= 0x03030000 ba -> duplicate((char *)PyUnicode_1BYTE_DATA(sipPy),PyUnicode_GET_SIZE(sipPy)); #else ba -> duplicate((char *)PyUnicode_AS_DATA(sipPy),PyUnicode_GET_SIZE(sipPy)); #endif *sipCppPtr = ba; Py_END_ALLOW_THREADS return sipGetState(sipTransferObj); } #if PY_VERSION_HEX >= 0x02060000 else if (PyByteArray_Check(sipPy)) { Py_BEGIN_ALLOW_THREADS TQByteArray *ba = new TQByteArray(); ba -> duplicate(PyByteArray_AS_STRING(sipPy),PyByteArray_GET_SIZE(sipPy)); *sipCppPtr = ba; Py_END_ALLOW_THREADS return sipGetState(sipTransferObj); } #endif else if (SIPBytes_Check(sipPy)) { Py_BEGIN_ALLOW_THREADS TQByteArray *ba = new TQByteArray(); ba -> duplicate(SIPBytes_AS_STRING(sipPy),SIPBytes_GET_SIZE(sipPy)); *sipCppPtr = ba; Py_END_ALLOW_THREADS return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToInstance(sipPy,sipClass_TQByteArray,sipTransferObj,SIP_NO_CONVERTORS,0,sipIsErr)); return 0; %End }; TQByteArray tqCompress(const uchar * /Array/,int /ArraySize/); TQByteArray tqCompress(const TQByteArray &); TQByteArray tqUncompress(const uchar * /Array/,int /ArraySize/); TQByteArray tqUncompress(const TQByteArray &);