/* * Copyright (C) 2005-2018 Team Kodi * This file is part of Kodi - https://kodi.tv * * SPDX-License-Identifier: GPL-2.0-or-later * See LICENSES/README.md for more information. */ // ************************************************************************ // This file was generated by xbmc compile process. DO NOT EDIT!! // It was created by running the code generator on the spec file for // the module "xbmcvfs" on the template file PythonSwig.template.cpp // ************************************************************************ #include #include #include "interfaces/python/LanguageHook.h" #include "interfaces/python/swig.h" #include "interfaces/python/PyContext.h" #if defined(TARGET_WINDOWS) # include #endif #include "interfaces/legacy/ModuleXbmcvfs.h" #include "interfaces/legacy/File.h" #include "interfaces/legacy/Stat.h" #include "utils/log.h" using namespace XBMCAddon; using namespace xbmcvfs; #if defined(__GNUG__) #pragma GCC diagnostic ignored "-Wstrict-aliasing" #endif namespace PythonBindings { //========================================================================= // These variables will hold the Python Type information for XBMCAddon::xbmcvfs::File TypeInfo TyXBMCAddon_xbmcvfs_File_Type(typeid(XBMCAddon::xbmcvfs::File)); //========================================================================= //========================================================================= // These variables will hold the Python Type information for XBMCAddon::xbmcvfs::Stat TypeInfo TyXBMCAddon_xbmcvfs_Stat_Type(typeid(XBMCAddon::xbmcvfs::Stat)); //========================================================================= static PyObject* xbmcvfs_XBMCAddon_xbmcvfs_File_New (PyTypeObject* pytype , PyObject *args, PyObject *kwds ) { XBMC_TRACE; static const char *keywords[] = { "filepath", "mode", NULL}; std::string filepath ; PyObject* pyfilepath = NULL; char * mode = NULL; if (!PyArg_ParseTupleAndKeywords( args, kwds, "O|s", const_cast(keywords), &pyfilepath, &mode )) { return NULL; } XBMCAddon::xbmcvfs::File * apiResult; try { if (pyfilepath) PyXBMCGetUnicodeString(filepath,pyfilepath,false,"filepath","File"); XBMCAddon::SetLanguageHookGuard slhg(XBMCAddon::Python::PythonLanguageHook::GetIfExists(PyThreadState_Get()->interp).get()); apiResult = new XBMCAddon::xbmcvfs::File( filepath, mode ); prepareForReturn(apiResult); } catch (const XBMCAddon::WrongTypeException& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_TypeError, e.GetMessage()); return NULL; } catch (const XbmcCommons::Exception& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_RuntimeError, e.GetMessage()); return NULL; } catch (...) { CLog::Log(LOGERROR,"EXCEPTION: Unknown exception thrown from the call \"new XBMCAddon::xbmcvfs::File\""); PyErr_SetString(PyExc_RuntimeError, "Unknown exception thrown from the call \"new XBMCAddon::xbmcvfs::File\""); return NULL; } PyObject* result = Py_None; // transform the result result = makePythonInstance(apiResult,pytype,false); return result; } static PyObject* xbmcvfs_XBMCAddon_xbmcvfs_File_read (PyHolder* self , PyObject *args, PyObject *kwds ) { XBMC_TRACE; static const char *keywords[] = { "numBytes", NULL}; unsigned long numBytes = 0; if (!PyArg_ParseTupleAndKeywords( args, kwds, "|k", const_cast(keywords), &numBytes )) { return NULL; } XBMCAddon::String apiResult; try { apiResult = ((XBMCAddon::xbmcvfs::File*)retrieveApiInstance((PyObject*)self,&TyXBMCAddon_xbmcvfs_File_Type,"read","XBMCAddon::xbmcvfs::File"))-> read( numBytes ); } catch (const XBMCAddon::WrongTypeException& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_TypeError, e.GetMessage()); return NULL; } catch (const XbmcCommons::Exception& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_RuntimeError, e.GetMessage()); return NULL; } catch (...) { CLog::Log(LOGERROR,"EXCEPTION: Unknown exception thrown from the call \"read\""); PyErr_SetString(PyExc_RuntimeError, "Unknown exception thrown from the call \"read\""); return NULL; } PyObject* result = Py_None; // transform the result result = PyString_FromStringAndSize(apiResult.c_str(), apiResult.length()); return result; } static PyObject* xbmcvfs_XBMCAddon_xbmcvfs_File_readBytes (PyHolder* self , PyObject *args, PyObject *kwds ) { XBMC_TRACE; static const char *keywords[] = { "numBytes", NULL}; unsigned long numBytes = 0; if (!PyArg_ParseTupleAndKeywords( args, kwds, "|k", const_cast(keywords), &numBytes )) { return NULL; } XbmcCommons::Buffer apiResult; try { apiResult = ((XBMCAddon::xbmcvfs::File*)retrieveApiInstance((PyObject*)self,&TyXBMCAddon_xbmcvfs_File_Type,"readBytes","XBMCAddon::xbmcvfs::File"))-> readBytes( numBytes ); } catch (const XBMCAddon::WrongTypeException& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_TypeError, e.GetMessage()); return NULL; } catch (const XbmcCommons::Exception& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_RuntimeError, e.GetMessage()); return NULL; } catch (...) { CLog::Log(LOGERROR,"EXCEPTION: Unknown exception thrown from the call \"readBytes\""); PyErr_SetString(PyExc_RuntimeError, "Unknown exception thrown from the call \"readBytes\""); return NULL; } PyObject* result = Py_None; // transform the result result = PyByteArray_FromStringAndSize((char*)apiResult.curPosition(),apiResult.remaining()); return result; } static PyObject* xbmcvfs_XBMCAddon_xbmcvfs_File_write (PyHolder* self , PyObject *args, PyObject *kwds ) { XBMC_TRACE; static const char *keywords[] = { "buffer", NULL}; XbmcCommons::Buffer buffer ; PyObject* pybuffer = NULL; if (!PyArg_ParseTupleAndKeywords( args, kwds, "O", const_cast(keywords), &pybuffer )) { return NULL; } bool apiResult; try { if (PyString_Check(pybuffer)) { const char* str = PyString_AsString(pybuffer); size_t size = (size_t)PyString_Size(pybuffer); buffer.allocate(size); buffer.put(str,size); buffer.flip(); // prepare the buffer for reading from } else if (PyByteArray_Check(pybuffer)) { size_t size = PyByteArray_Size(pybuffer); buffer.allocate(size); buffer.put(PyByteArray_AsString(pybuffer),size); buffer.flip(); // prepare the buffer for reading from } else throw XBMCAddon::WrongTypeException("argument \"%s\" for \"%s\" must be a string or a bytearray", "buffer", "write"); apiResult = ((XBMCAddon::xbmcvfs::File*)retrieveApiInstance((PyObject*)self,&TyXBMCAddon_xbmcvfs_File_Type,"write","XBMCAddon::xbmcvfs::File"))-> write( buffer ); } catch (const XBMCAddon::WrongTypeException& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_TypeError, e.GetMessage()); return NULL; } catch (const XbmcCommons::Exception& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_RuntimeError, e.GetMessage()); return NULL; } catch (...) { CLog::Log(LOGERROR,"EXCEPTION: Unknown exception thrown from the call \"write\""); PyErr_SetString(PyExc_RuntimeError, "Unknown exception thrown from the call \"write\""); return NULL; } PyObject* result = Py_None; // transform the result result = Py_BuildValue("b", apiResult); return result; } static PyObject* xbmcvfs_XBMCAddon_xbmcvfs_File_size (PyHolder* self , PyObject *args, PyObject *kwds ) { XBMC_TRACE; long long apiResult; try { apiResult = ((XBMCAddon::xbmcvfs::File*)retrieveApiInstance((PyObject*)self,&TyXBMCAddon_xbmcvfs_File_Type,"size","XBMCAddon::xbmcvfs::File"))-> size( ); } catch (const XBMCAddon::WrongTypeException& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_TypeError, e.GetMessage()); return NULL; } catch (const XbmcCommons::Exception& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_RuntimeError, e.GetMessage()); return NULL; } catch (...) { CLog::Log(LOGERROR,"EXCEPTION: Unknown exception thrown from the call \"size\""); PyErr_SetString(PyExc_RuntimeError, "Unknown exception thrown from the call \"size\""); return NULL; } PyObject* result = Py_None; // transform the result result = Py_BuildValue("L", apiResult); return result; } static PyObject* xbmcvfs_XBMCAddon_xbmcvfs_File_seek (PyHolder* self , PyObject *args, PyObject *kwds ) { XBMC_TRACE; static const char *keywords[] = { "seekBytes", "iWhence", NULL}; long long seekBytes ; int iWhence ; if (!PyArg_ParseTupleAndKeywords( args, kwds, "Li", const_cast(keywords), &seekBytes, &iWhence )) { return NULL; } long long apiResult; try { apiResult = ((XBMCAddon::xbmcvfs::File*)retrieveApiInstance((PyObject*)self,&TyXBMCAddon_xbmcvfs_File_Type,"seek","XBMCAddon::xbmcvfs::File"))-> seek( seekBytes, iWhence ); } catch (const XBMCAddon::WrongTypeException& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_TypeError, e.GetMessage()); return NULL; } catch (const XbmcCommons::Exception& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_RuntimeError, e.GetMessage()); return NULL; } catch (...) { CLog::Log(LOGERROR,"EXCEPTION: Unknown exception thrown from the call \"seek\""); PyErr_SetString(PyExc_RuntimeError, "Unknown exception thrown from the call \"seek\""); return NULL; } PyObject* result = Py_None; // transform the result result = Py_BuildValue("L", apiResult); return result; } static PyObject* xbmcvfs_XBMCAddon_xbmcvfs_File_close (PyHolder* self , PyObject *args, PyObject *kwds ) { XBMC_TRACE; try { ((XBMCAddon::xbmcvfs::File*)retrieveApiInstance((PyObject*)self,&TyXBMCAddon_xbmcvfs_File_Type,"close","XBMCAddon::xbmcvfs::File"))-> close( ); } catch (const XBMCAddon::WrongTypeException& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_TypeError, e.GetMessage()); return NULL; } catch (const XbmcCommons::Exception& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_RuntimeError, e.GetMessage()); return NULL; } catch (...) { CLog::Log(LOGERROR,"EXCEPTION: Unknown exception thrown from the call \"close\""); PyErr_SetString(PyExc_RuntimeError, "Unknown exception thrown from the call \"close\""); return NULL; } PyObject* result = Py_None; // transform the result Py_INCREF(Py_None); result = Py_None; return result; } static PyObject* xbmcvfs_XBMCAddon_xbmcvfs_Stat_New (PyTypeObject* pytype , PyObject *args, PyObject *kwds ) { XBMC_TRACE; static const char *keywords[] = { "path", NULL}; std::string path ; PyObject* pypath = NULL; if (!PyArg_ParseTupleAndKeywords( args, kwds, "O", const_cast(keywords), &pypath )) { return NULL; } XBMCAddon::xbmcvfs::Stat * apiResult; try { if (pypath) PyXBMCGetUnicodeString(path,pypath,false,"path","Stat"); XBMCAddon::SetLanguageHookGuard slhg(XBMCAddon::Python::PythonLanguageHook::GetIfExists(PyThreadState_Get()->interp).get()); apiResult = new XBMCAddon::xbmcvfs::Stat( path ); prepareForReturn(apiResult); } catch (const XBMCAddon::WrongTypeException& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_TypeError, e.GetMessage()); return NULL; } catch (const XbmcCommons::Exception& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_RuntimeError, e.GetMessage()); return NULL; } catch (...) { CLog::Log(LOGERROR,"EXCEPTION: Unknown exception thrown from the call \"new XBMCAddon::xbmcvfs::Stat\""); PyErr_SetString(PyExc_RuntimeError, "Unknown exception thrown from the call \"new XBMCAddon::xbmcvfs::Stat\""); return NULL; } PyObject* result = Py_None; // transform the result result = makePythonInstance(apiResult,pytype,false); return result; } static PyObject* xbmcvfs_XBMCAddon_xbmcvfs_Stat_st_mode (PyHolder* self , PyObject *args, PyObject *kwds ) { XBMC_TRACE; long long apiResult; try { apiResult = ((XBMCAddon::xbmcvfs::Stat*)retrieveApiInstance((PyObject*)self,&TyXBMCAddon_xbmcvfs_Stat_Type,"st_mode","XBMCAddon::xbmcvfs::Stat"))-> st_mode( ); } catch (const XBMCAddon::WrongTypeException& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_TypeError, e.GetMessage()); return NULL; } catch (const XbmcCommons::Exception& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_RuntimeError, e.GetMessage()); return NULL; } catch (...) { CLog::Log(LOGERROR,"EXCEPTION: Unknown exception thrown from the call \"st_mode\""); PyErr_SetString(PyExc_RuntimeError, "Unknown exception thrown from the call \"st_mode\""); return NULL; } PyObject* result = Py_None; // transform the result result = Py_BuildValue("L", apiResult); return result; } static PyObject* xbmcvfs_XBMCAddon_xbmcvfs_Stat_st_ino (PyHolder* self , PyObject *args, PyObject *kwds ) { XBMC_TRACE; long long apiResult; try { apiResult = ((XBMCAddon::xbmcvfs::Stat*)retrieveApiInstance((PyObject*)self,&TyXBMCAddon_xbmcvfs_Stat_Type,"st_ino","XBMCAddon::xbmcvfs::Stat"))-> st_ino( ); } catch (const XBMCAddon::WrongTypeException& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_TypeError, e.GetMessage()); return NULL; } catch (const XbmcCommons::Exception& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_RuntimeError, e.GetMessage()); return NULL; } catch (...) { CLog::Log(LOGERROR,"EXCEPTION: Unknown exception thrown from the call \"st_ino\""); PyErr_SetString(PyExc_RuntimeError, "Unknown exception thrown from the call \"st_ino\""); return NULL; } PyObject* result = Py_None; // transform the result result = Py_BuildValue("L", apiResult); return result; } static PyObject* xbmcvfs_XBMCAddon_xbmcvfs_Stat_st_dev (PyHolder* self , PyObject *args, PyObject *kwds ) { XBMC_TRACE; long long apiResult; try { apiResult = ((XBMCAddon::xbmcvfs::Stat*)retrieveApiInstance((PyObject*)self,&TyXBMCAddon_xbmcvfs_Stat_Type,"st_dev","XBMCAddon::xbmcvfs::Stat"))-> st_dev( ); } catch (const XBMCAddon::WrongTypeException& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_TypeError, e.GetMessage()); return NULL; } catch (const XbmcCommons::Exception& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_RuntimeError, e.GetMessage()); return NULL; } catch (...) { CLog::Log(LOGERROR,"EXCEPTION: Unknown exception thrown from the call \"st_dev\""); PyErr_SetString(PyExc_RuntimeError, "Unknown exception thrown from the call \"st_dev\""); return NULL; } PyObject* result = Py_None; // transform the result result = Py_BuildValue("L", apiResult); return result; } static PyObject* xbmcvfs_XBMCAddon_xbmcvfs_Stat_st_nlink (PyHolder* self , PyObject *args, PyObject *kwds ) { XBMC_TRACE; long long apiResult; try { apiResult = ((XBMCAddon::xbmcvfs::Stat*)retrieveApiInstance((PyObject*)self,&TyXBMCAddon_xbmcvfs_Stat_Type,"st_nlink","XBMCAddon::xbmcvfs::Stat"))-> st_nlink( ); } catch (const XBMCAddon::WrongTypeException& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_TypeError, e.GetMessage()); return NULL; } catch (const XbmcCommons::Exception& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_RuntimeError, e.GetMessage()); return NULL; } catch (...) { CLog::Log(LOGERROR,"EXCEPTION: Unknown exception thrown from the call \"st_nlink\""); PyErr_SetString(PyExc_RuntimeError, "Unknown exception thrown from the call \"st_nlink\""); return NULL; } PyObject* result = Py_None; // transform the result result = Py_BuildValue("L", apiResult); return result; } static PyObject* xbmcvfs_XBMCAddon_xbmcvfs_Stat_st_uid (PyHolder* self , PyObject *args, PyObject *kwds ) { XBMC_TRACE; long long apiResult; try { apiResult = ((XBMCAddon::xbmcvfs::Stat*)retrieveApiInstance((PyObject*)self,&TyXBMCAddon_xbmcvfs_Stat_Type,"st_uid","XBMCAddon::xbmcvfs::Stat"))-> st_uid( ); } catch (const XBMCAddon::WrongTypeException& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_TypeError, e.GetMessage()); return NULL; } catch (const XbmcCommons::Exception& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_RuntimeError, e.GetMessage()); return NULL; } catch (...) { CLog::Log(LOGERROR,"EXCEPTION: Unknown exception thrown from the call \"st_uid\""); PyErr_SetString(PyExc_RuntimeError, "Unknown exception thrown from the call \"st_uid\""); return NULL; } PyObject* result = Py_None; // transform the result result = Py_BuildValue("L", apiResult); return result; } static PyObject* xbmcvfs_XBMCAddon_xbmcvfs_Stat_st_gid (PyHolder* self , PyObject *args, PyObject *kwds ) { XBMC_TRACE; long long apiResult; try { apiResult = ((XBMCAddon::xbmcvfs::Stat*)retrieveApiInstance((PyObject*)self,&TyXBMCAddon_xbmcvfs_Stat_Type,"st_gid","XBMCAddon::xbmcvfs::Stat"))-> st_gid( ); } catch (const XBMCAddon::WrongTypeException& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_TypeError, e.GetMessage()); return NULL; } catch (const XbmcCommons::Exception& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_RuntimeError, e.GetMessage()); return NULL; } catch (...) { CLog::Log(LOGERROR,"EXCEPTION: Unknown exception thrown from the call \"st_gid\""); PyErr_SetString(PyExc_RuntimeError, "Unknown exception thrown from the call \"st_gid\""); return NULL; } PyObject* result = Py_None; // transform the result result = Py_BuildValue("L", apiResult); return result; } static PyObject* xbmcvfs_XBMCAddon_xbmcvfs_Stat_st_size (PyHolder* self , PyObject *args, PyObject *kwds ) { XBMC_TRACE; long long apiResult; try { apiResult = ((XBMCAddon::xbmcvfs::Stat*)retrieveApiInstance((PyObject*)self,&TyXBMCAddon_xbmcvfs_Stat_Type,"st_size","XBMCAddon::xbmcvfs::Stat"))-> st_size( ); } catch (const XBMCAddon::WrongTypeException& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_TypeError, e.GetMessage()); return NULL; } catch (const XbmcCommons::Exception& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_RuntimeError, e.GetMessage()); return NULL; } catch (...) { CLog::Log(LOGERROR,"EXCEPTION: Unknown exception thrown from the call \"st_size\""); PyErr_SetString(PyExc_RuntimeError, "Unknown exception thrown from the call \"st_size\""); return NULL; } PyObject* result = Py_None; // transform the result result = Py_BuildValue("L", apiResult); return result; } static PyObject* xbmcvfs_XBMCAddon_xbmcvfs_Stat_st_atime (PyHolder* self , PyObject *args, PyObject *kwds ) { XBMC_TRACE; long long apiResult; try { apiResult = ((XBMCAddon::xbmcvfs::Stat*)retrieveApiInstance((PyObject*)self,&TyXBMCAddon_xbmcvfs_Stat_Type,"atime","XBMCAddon::xbmcvfs::Stat"))-> atime( ); } catch (const XBMCAddon::WrongTypeException& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_TypeError, e.GetMessage()); return NULL; } catch (const XbmcCommons::Exception& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_RuntimeError, e.GetMessage()); return NULL; } catch (...) { CLog::Log(LOGERROR,"EXCEPTION: Unknown exception thrown from the call \"atime\""); PyErr_SetString(PyExc_RuntimeError, "Unknown exception thrown from the call \"atime\""); return NULL; } PyObject* result = Py_None; // transform the result result = Py_BuildValue("L", apiResult); return result; } static PyObject* xbmcvfs_XBMCAddon_xbmcvfs_Stat_st_mtime (PyHolder* self , PyObject *args, PyObject *kwds ) { XBMC_TRACE; long long apiResult; try { apiResult = ((XBMCAddon::xbmcvfs::Stat*)retrieveApiInstance((PyObject*)self,&TyXBMCAddon_xbmcvfs_Stat_Type,"mtime","XBMCAddon::xbmcvfs::Stat"))-> mtime( ); } catch (const XBMCAddon::WrongTypeException& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_TypeError, e.GetMessage()); return NULL; } catch (const XbmcCommons::Exception& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_RuntimeError, e.GetMessage()); return NULL; } catch (...) { CLog::Log(LOGERROR,"EXCEPTION: Unknown exception thrown from the call \"mtime\""); PyErr_SetString(PyExc_RuntimeError, "Unknown exception thrown from the call \"mtime\""); return NULL; } PyObject* result = Py_None; // transform the result result = Py_BuildValue("L", apiResult); return result; } static PyObject* xbmcvfs_XBMCAddon_xbmcvfs_Stat_st_ctime (PyHolder* self , PyObject *args, PyObject *kwds ) { XBMC_TRACE; long long apiResult; try { apiResult = ((XBMCAddon::xbmcvfs::Stat*)retrieveApiInstance((PyObject*)self,&TyXBMCAddon_xbmcvfs_Stat_Type,"ctime","XBMCAddon::xbmcvfs::Stat"))-> ctime( ); } catch (const XBMCAddon::WrongTypeException& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_TypeError, e.GetMessage()); return NULL; } catch (const XbmcCommons::Exception& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_RuntimeError, e.GetMessage()); return NULL; } catch (...) { CLog::Log(LOGERROR,"EXCEPTION: Unknown exception thrown from the call \"ctime\""); PyErr_SetString(PyExc_RuntimeError, "Unknown exception thrown from the call \"ctime\""); return NULL; } PyObject* result = Py_None; // transform the result result = Py_BuildValue("L", apiResult); return result; } static PyObject* xbmcvfs_copy (PyObject* self , PyObject *args, PyObject *kwds ) { XBMC_TRACE; static const char *keywords[] = { "strSource", "strDestination", NULL}; std::string strSource ; PyObject* pystrSource = NULL; std::string strDestination ; PyObject* pystrDestination = NULL; if (!PyArg_ParseTupleAndKeywords( args, kwds, "OO", const_cast(keywords), &pystrSource, &pystrDestination )) { return NULL; } bool apiResult; try { if (pystrSource) PyXBMCGetUnicodeString(strSource,pystrSource,false,"strSource","XBMCAddon::xbmcvfs::copy"); if (pystrDestination) PyXBMCGetUnicodeString(strDestination,pystrDestination,false,"strDestination","XBMCAddon::xbmcvfs::copy"); XBMCAddon::SetLanguageHookGuard slhg(XBMCAddon::Python::PythonLanguageHook::GetIfExists(PyThreadState_Get()->interp).get()); apiResult = XBMCAddon::xbmcvfs::copy( strSource, strDestination ); } catch (const XBMCAddon::WrongTypeException& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_TypeError, e.GetMessage()); return NULL; } catch (const XbmcCommons::Exception& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_RuntimeError, e.GetMessage()); return NULL; } catch (...) { CLog::Log(LOGERROR,"EXCEPTION: Unknown exception thrown from the call \"XBMCAddon::xbmcvfs::copy\""); PyErr_SetString(PyExc_RuntimeError, "Unknown exception thrown from the call \"XBMCAddon::xbmcvfs::copy\""); return NULL; } PyObject* result = Py_None; // transform the result result = Py_BuildValue("b", apiResult); return result; } static PyObject* xbmcvfs_delete (PyObject* self , PyObject *args, PyObject *kwds ) { XBMC_TRACE; static const char *keywords[] = { "file", NULL}; std::string file ; PyObject* pyfile = NULL; if (!PyArg_ParseTupleAndKeywords( args, kwds, "O", const_cast(keywords), &pyfile )) { return NULL; } bool apiResult; try { if (pyfile) PyXBMCGetUnicodeString(file,pyfile,false,"file","XBMCAddon::xbmcvfs::deleteFile"); XBMCAddon::SetLanguageHookGuard slhg(XBMCAddon::Python::PythonLanguageHook::GetIfExists(PyThreadState_Get()->interp).get()); apiResult = XBMCAddon::xbmcvfs::deleteFile( file ); } catch (const XBMCAddon::WrongTypeException& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_TypeError, e.GetMessage()); return NULL; } catch (const XbmcCommons::Exception& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_RuntimeError, e.GetMessage()); return NULL; } catch (...) { CLog::Log(LOGERROR,"EXCEPTION: Unknown exception thrown from the call \"XBMCAddon::xbmcvfs::deleteFile\""); PyErr_SetString(PyExc_RuntimeError, "Unknown exception thrown from the call \"XBMCAddon::xbmcvfs::deleteFile\""); return NULL; } PyObject* result = Py_None; // transform the result result = Py_BuildValue("b", apiResult); return result; } static PyObject* xbmcvfs_rename (PyObject* self , PyObject *args, PyObject *kwds ) { XBMC_TRACE; static const char *keywords[] = { "file", "newFile", NULL}; std::string file ; PyObject* pyfile = NULL; std::string newFile ; PyObject* pynewFile = NULL; if (!PyArg_ParseTupleAndKeywords( args, kwds, "OO", const_cast(keywords), &pyfile, &pynewFile )) { return NULL; } bool apiResult; try { if (pyfile) PyXBMCGetUnicodeString(file,pyfile,false,"file","XBMCAddon::xbmcvfs::rename"); if (pynewFile) PyXBMCGetUnicodeString(newFile,pynewFile,false,"newFile","XBMCAddon::xbmcvfs::rename"); XBMCAddon::SetLanguageHookGuard slhg(XBMCAddon::Python::PythonLanguageHook::GetIfExists(PyThreadState_Get()->interp).get()); apiResult = XBMCAddon::xbmcvfs::rename( file, newFile ); } catch (const XBMCAddon::WrongTypeException& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_TypeError, e.GetMessage()); return NULL; } catch (const XbmcCommons::Exception& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_RuntimeError, e.GetMessage()); return NULL; } catch (...) { CLog::Log(LOGERROR,"EXCEPTION: Unknown exception thrown from the call \"XBMCAddon::xbmcvfs::rename\""); PyErr_SetString(PyExc_RuntimeError, "Unknown exception thrown from the call \"XBMCAddon::xbmcvfs::rename\""); return NULL; } PyObject* result = Py_None; // transform the result result = Py_BuildValue("b", apiResult); return result; } static PyObject* xbmcvfs_exists (PyObject* self , PyObject *args, PyObject *kwds ) { XBMC_TRACE; static const char *keywords[] = { "path", NULL}; std::string path ; PyObject* pypath = NULL; if (!PyArg_ParseTupleAndKeywords( args, kwds, "O", const_cast(keywords), &pypath )) { return NULL; } bool apiResult; try { if (pypath) PyXBMCGetUnicodeString(path,pypath,false,"path","XBMCAddon::xbmcvfs::exists"); XBMCAddon::SetLanguageHookGuard slhg(XBMCAddon::Python::PythonLanguageHook::GetIfExists(PyThreadState_Get()->interp).get()); apiResult = XBMCAddon::xbmcvfs::exists( path ); } catch (const XBMCAddon::WrongTypeException& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_TypeError, e.GetMessage()); return NULL; } catch (const XbmcCommons::Exception& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_RuntimeError, e.GetMessage()); return NULL; } catch (...) { CLog::Log(LOGERROR,"EXCEPTION: Unknown exception thrown from the call \"XBMCAddon::xbmcvfs::exists\""); PyErr_SetString(PyExc_RuntimeError, "Unknown exception thrown from the call \"XBMCAddon::xbmcvfs::exists\""); return NULL; } PyObject* result = Py_None; // transform the result result = Py_BuildValue("b", apiResult); return result; } static PyObject* xbmcvfs_mkdir (PyObject* self , PyObject *args, PyObject *kwds ) { XBMC_TRACE; static const char *keywords[] = { "path", NULL}; std::string path ; PyObject* pypath = NULL; if (!PyArg_ParseTupleAndKeywords( args, kwds, "O", const_cast(keywords), &pypath )) { return NULL; } bool apiResult; try { if (pypath) PyXBMCGetUnicodeString(path,pypath,false,"path","XBMCAddon::xbmcvfs::mkdir"); XBMCAddon::SetLanguageHookGuard slhg(XBMCAddon::Python::PythonLanguageHook::GetIfExists(PyThreadState_Get()->interp).get()); apiResult = XBMCAddon::xbmcvfs::mkdir( path ); } catch (const XBMCAddon::WrongTypeException& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_TypeError, e.GetMessage()); return NULL; } catch (const XbmcCommons::Exception& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_RuntimeError, e.GetMessage()); return NULL; } catch (...) { CLog::Log(LOGERROR,"EXCEPTION: Unknown exception thrown from the call \"XBMCAddon::xbmcvfs::mkdir\""); PyErr_SetString(PyExc_RuntimeError, "Unknown exception thrown from the call \"XBMCAddon::xbmcvfs::mkdir\""); return NULL; } PyObject* result = Py_None; // transform the result result = Py_BuildValue("b", apiResult); return result; } static PyObject* xbmcvfs_mkdirs (PyObject* self , PyObject *args, PyObject *kwds ) { XBMC_TRACE; static const char *keywords[] = { "path", NULL}; std::string path ; PyObject* pypath = NULL; if (!PyArg_ParseTupleAndKeywords( args, kwds, "O", const_cast(keywords), &pypath )) { return NULL; } bool apiResult; try { if (pypath) PyXBMCGetUnicodeString(path,pypath,false,"path","XBMCAddon::xbmcvfs::mkdirs"); XBMCAddon::SetLanguageHookGuard slhg(XBMCAddon::Python::PythonLanguageHook::GetIfExists(PyThreadState_Get()->interp).get()); apiResult = XBMCAddon::xbmcvfs::mkdirs( path ); } catch (const XBMCAddon::WrongTypeException& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_TypeError, e.GetMessage()); return NULL; } catch (const XbmcCommons::Exception& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_RuntimeError, e.GetMessage()); return NULL; } catch (...) { CLog::Log(LOGERROR,"EXCEPTION: Unknown exception thrown from the call \"XBMCAddon::xbmcvfs::mkdirs\""); PyErr_SetString(PyExc_RuntimeError, "Unknown exception thrown from the call \"XBMCAddon::xbmcvfs::mkdirs\""); return NULL; } PyObject* result = Py_None; // transform the result result = Py_BuildValue("b", apiResult); return result; } static PyObject* xbmcvfs_rmdir (PyObject* self , PyObject *args, PyObject *kwds ) { XBMC_TRACE; static const char *keywords[] = { "path", "force", NULL}; std::string path ; PyObject* pypath = NULL; bool force = false; if (!PyArg_ParseTupleAndKeywords( args, kwds, "O|b", const_cast(keywords), &pypath, &force )) { return NULL; } bool apiResult; try { if (pypath) PyXBMCGetUnicodeString(path,pypath,false,"path","XBMCAddon::xbmcvfs::rmdir"); XBMCAddon::SetLanguageHookGuard slhg(XBMCAddon::Python::PythonLanguageHook::GetIfExists(PyThreadState_Get()->interp).get()); apiResult = XBMCAddon::xbmcvfs::rmdir( path, force ); } catch (const XBMCAddon::WrongTypeException& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_TypeError, e.GetMessage()); return NULL; } catch (const XbmcCommons::Exception& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_RuntimeError, e.GetMessage()); return NULL; } catch (...) { CLog::Log(LOGERROR,"EXCEPTION: Unknown exception thrown from the call \"XBMCAddon::xbmcvfs::rmdir\""); PyErr_SetString(PyExc_RuntimeError, "Unknown exception thrown from the call \"XBMCAddon::xbmcvfs::rmdir\""); return NULL; } PyObject* result = Py_None; // transform the result result = Py_BuildValue("b", apiResult); return result; } static PyObject* xbmcvfs_listdir (PyObject* self , PyObject *args, PyObject *kwds ) { XBMC_TRACE; static const char *keywords[] = { "path", NULL}; std::string path ; PyObject* pypath = NULL; if (!PyArg_ParseTupleAndKeywords( args, kwds, "O", const_cast(keywords), &pypath )) { return NULL; } Tuple< std::vector< XBMCAddon::String > ,std::vector< XBMCAddon::String > > apiResult; try { if (pypath) PyXBMCGetUnicodeString(path,pypath,false,"path","XBMCAddon::xbmcvfs::listdir"); XBMCAddon::SetLanguageHookGuard slhg(XBMCAddon::Python::PythonLanguageHook::GetIfExists(PyThreadState_Get()->interp).get()); apiResult = XBMCAddon::xbmcvfs::listdir( path ); } catch (const XBMCAddon::WrongTypeException& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_TypeError, e.GetMessage()); return NULL; } catch (const XbmcCommons::Exception& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_RuntimeError, e.GetMessage()); return NULL; } catch (...) { CLog::Log(LOGERROR,"EXCEPTION: Unknown exception thrown from the call \"XBMCAddon::xbmcvfs::listdir\""); PyErr_SetString(PyExc_RuntimeError, "Unknown exception thrown from the call \"XBMCAddon::xbmcvfs::listdir\""); return NULL; } PyObject* result = Py_None; // transform the result int vecSize = apiResult.GetNumValuesSet(); result = PyTuple_New(vecSize); { PyObject* pyentry1; if (vecSize > 0) { std::vector< XBMCAddon::String > & entry1 = apiResult.first(); { pyentry1 = PyList_New(0); for (std::vector::iterator iter = entry1.begin(); iter != entry1.end(); ++iter) { std::string & entry2 = *iter; PyObject* pyentry2; pyentry2 = PyString_FromStringAndSize(entry2.c_str(), entry2.length()); PyList_Append(pyentry1, pyentry2); Py_DECREF(pyentry2); } } PyTuple_SetItem(result, 0, pyentry1); } if (vecSize > 1) { std::vector< XBMCAddon::String > & entry1 = apiResult.second(); { pyentry1 = PyList_New(0); for (std::vector::iterator iter = entry1.begin(); iter != entry1.end(); ++iter) { std::string & entry3 = *iter; PyObject* pyentry3; pyentry3 = PyString_FromStringAndSize(entry3.c_str(), entry3.length()); PyList_Append(pyentry1, pyentry3); Py_DECREF(pyentry3); } } PyTuple_SetItem(result, 1, pyentry1); } } return result; } static void xbmcvfs_XBMCAddon_xbmcvfs_File_Dealloc (PyHolder* self ) { XBMC_TRACE; try { XBMCAddon::xbmcvfs::File* theObj = (XBMCAddon::xbmcvfs::File*)retrieveApiInstance((PyObject*)self,&TyXBMCAddon_xbmcvfs_File_Type,"~XBMCAddon::xbmcvfs::File","XBMCAddon::xbmcvfs::File"); cleanForDealloc(theObj); } catch (const XBMCAddon::WrongTypeException& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_TypeError, e.GetMessage()); } catch (const XbmcCommons::Exception& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_RuntimeError, e.GetMessage()); } catch (...) { CLog::Log(LOGERROR,"EXCEPTION: Unknown exception thrown from the call \"XBMCAddon::xbmcvfs::File\""); PyErr_SetString(PyExc_RuntimeError, "Unknown exception thrown from the call \"XBMCAddon::xbmcvfs::File\""); } self->ob_type->tp_free((PyObject*)self); } static void xbmcvfs_XBMCAddon_xbmcvfs_Stat_Dealloc (PyHolder* self ) { XBMC_TRACE; try { XBMCAddon::xbmcvfs::Stat* theObj = (XBMCAddon::xbmcvfs::Stat*)retrieveApiInstance((PyObject*)self,&TyXBMCAddon_xbmcvfs_Stat_Type,"~XBMCAddon::xbmcvfs::Stat","XBMCAddon::xbmcvfs::Stat"); cleanForDealloc(theObj); } catch (const XBMCAddon::WrongTypeException& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_TypeError, e.GetMessage()); } catch (const XbmcCommons::Exception& e) { CLog::Log(LOGERROR,"EXCEPTION: %s",e.GetMessage()); PyErr_SetString(PyExc_RuntimeError, e.GetMessage()); } catch (...) { CLog::Log(LOGERROR,"EXCEPTION: Unknown exception thrown from the call \"XBMCAddon::xbmcvfs::Stat\""); PyErr_SetString(PyExc_RuntimeError, "Unknown exception thrown from the call \"XBMCAddon::xbmcvfs::Stat\""); } self->ob_type->tp_free((PyObject*)self); } //========================================================================= // This section contains the initialization for the // Python extension for the Api class XBMCAddon::xbmcvfs::File //========================================================================= // All of the methods on this class static PyMethodDef XBMCAddon_xbmcvfs_File_methods[] = { {"read", (PyCFunction)xbmcvfs_XBMCAddon_xbmcvfs_File_read, METH_VARARGS|METH_KEYWORDS, NULL }, {"readBytes", (PyCFunction)xbmcvfs_XBMCAddon_xbmcvfs_File_readBytes, METH_VARARGS|METH_KEYWORDS, NULL }, {"write", (PyCFunction)xbmcvfs_XBMCAddon_xbmcvfs_File_write, METH_VARARGS|METH_KEYWORDS, NULL }, {"size", (PyCFunction)xbmcvfs_XBMCAddon_xbmcvfs_File_size, METH_VARARGS|METH_KEYWORDS, NULL }, {"seek", (PyCFunction)xbmcvfs_XBMCAddon_xbmcvfs_File_seek, METH_VARARGS|METH_KEYWORDS, NULL }, {"close", (PyCFunction)xbmcvfs_XBMCAddon_xbmcvfs_File_close, METH_VARARGS|METH_KEYWORDS, NULL }, {NULL, NULL, 0, NULL} }; // This method initializes the above mentioned Python Type structure static void initPyXBMCAddon_xbmcvfs_File_Type() { PyTypeObject& pythonType = TyXBMCAddon_xbmcvfs_File_Type.pythonType; pythonType.tp_name = "xbmcvfs.File"; pythonType.tp_basicsize = sizeof(PyHolder); pythonType.tp_dealloc = (destructor)xbmcvfs_XBMCAddon_xbmcvfs_File_Dealloc; pythonType.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE; pythonType.tp_doc = NULL; pythonType.tp_methods = XBMCAddon_xbmcvfs_File_methods; pythonType.tp_base = NULL; pythonType.tp_new = xbmcvfs_XBMCAddon_xbmcvfs_File_New; TyXBMCAddon_xbmcvfs_File_Type.swigType="p.XBMCAddon::xbmcvfs::File"; registerAddonClassTypeInformation(&TyXBMCAddon_xbmcvfs_File_Type); } //========================================================================= //========================================================================= // This section contains the initialization for the // Python extension for the Api class XBMCAddon::xbmcvfs::Stat //========================================================================= // All of the methods on this class static PyMethodDef XBMCAddon_xbmcvfs_Stat_methods[] = { {"st_mode", (PyCFunction)xbmcvfs_XBMCAddon_xbmcvfs_Stat_st_mode, METH_VARARGS|METH_KEYWORDS, NULL }, {"st_ino", (PyCFunction)xbmcvfs_XBMCAddon_xbmcvfs_Stat_st_ino, METH_VARARGS|METH_KEYWORDS, NULL }, {"st_dev", (PyCFunction)xbmcvfs_XBMCAddon_xbmcvfs_Stat_st_dev, METH_VARARGS|METH_KEYWORDS, NULL }, {"st_nlink", (PyCFunction)xbmcvfs_XBMCAddon_xbmcvfs_Stat_st_nlink, METH_VARARGS|METH_KEYWORDS, NULL }, {"st_uid", (PyCFunction)xbmcvfs_XBMCAddon_xbmcvfs_Stat_st_uid, METH_VARARGS|METH_KEYWORDS, NULL }, {"st_gid", (PyCFunction)xbmcvfs_XBMCAddon_xbmcvfs_Stat_st_gid, METH_VARARGS|METH_KEYWORDS, NULL }, {"st_size", (PyCFunction)xbmcvfs_XBMCAddon_xbmcvfs_Stat_st_size, METH_VARARGS|METH_KEYWORDS, NULL }, {"st_atime", (PyCFunction)xbmcvfs_XBMCAddon_xbmcvfs_Stat_st_atime, METH_VARARGS|METH_KEYWORDS, NULL }, {"st_mtime", (PyCFunction)xbmcvfs_XBMCAddon_xbmcvfs_Stat_st_mtime, METH_VARARGS|METH_KEYWORDS, NULL }, {"st_ctime", (PyCFunction)xbmcvfs_XBMCAddon_xbmcvfs_Stat_st_ctime, METH_VARARGS|METH_KEYWORDS, NULL }, {NULL, NULL, 0, NULL} }; // This method initializes the above mentioned Python Type structure static void initPyXBMCAddon_xbmcvfs_Stat_Type() { PyTypeObject& pythonType = TyXBMCAddon_xbmcvfs_Stat_Type.pythonType; pythonType.tp_name = "xbmcvfs.Stat"; pythonType.tp_basicsize = sizeof(PyHolder); pythonType.tp_dealloc = (destructor)xbmcvfs_XBMCAddon_xbmcvfs_Stat_Dealloc; pythonType.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE; pythonType.tp_doc = NULL; pythonType.tp_methods = XBMCAddon_xbmcvfs_Stat_methods; pythonType.tp_base = NULL; pythonType.tp_new = xbmcvfs_XBMCAddon_xbmcvfs_Stat_New; TyXBMCAddon_xbmcvfs_Stat_Type.swigType="p.XBMCAddon::xbmcvfs::Stat"; registerAddonClassTypeInformation(&TyXBMCAddon_xbmcvfs_Stat_Type); } //========================================================================= static PyMethodDef xbmcvfs_methods[] = { {"copy", (PyCFunction)xbmcvfs_copy, METH_VARARGS|METH_KEYWORDS, NULL }, {"delete", (PyCFunction)xbmcvfs_delete, METH_VARARGS|METH_KEYWORDS, NULL }, {"rename", (PyCFunction)xbmcvfs_rename, METH_VARARGS|METH_KEYWORDS, NULL }, {"exists", (PyCFunction)xbmcvfs_exists, METH_VARARGS|METH_KEYWORDS, NULL }, {"mkdir", (PyCFunction)xbmcvfs_mkdir, METH_VARARGS|METH_KEYWORDS, NULL }, {"mkdirs", (PyCFunction)xbmcvfs_mkdirs, METH_VARARGS|METH_KEYWORDS, NULL }, {"rmdir", (PyCFunction)xbmcvfs_rmdir, METH_VARARGS|METH_KEYWORDS, NULL }, {"listdir", (PyCFunction)xbmcvfs_listdir, METH_VARARGS|METH_KEYWORDS, NULL }, {NULL, NULL, 0, NULL} }; // This is the call that will call all of the other initializes // for all of the classes in this module static void initTypes() { static bool typesAlreadyInitialized = false; if (!typesAlreadyInitialized) { typesAlreadyInitialized = true; initPyXBMCAddon_xbmcvfs_File_Type(); initPyXBMCAddon_xbmcvfs_Stat_Type(); if (PyType_Ready(&(TyXBMCAddon_xbmcvfs_File_Type.pythonType)) < 0) return; if (PyType_Ready(&(TyXBMCAddon_xbmcvfs_Stat_Type.pythonType)) < 0) return; } } void initModule_xbmcvfs() { initTypes(); // init general xbmcvfs modules PyObject* module; Py_INCREF(&(TyXBMCAddon_xbmcvfs_File_Type.pythonType)); Py_INCREF(&(TyXBMCAddon_xbmcvfs_Stat_Type.pythonType)); module = Py_InitModule("xbmcvfs", xbmcvfs_methods); if (module == NULL) return; PyModule_AddObject(module, "File", (PyObject*)(&(TyXBMCAddon_xbmcvfs_File_Type.pythonType))); PyModule_AddObject(module, "Stat", (PyObject*)(&(TyXBMCAddon_xbmcvfs_Stat_Type.pythonType))); // constants PyModule_AddStringConstant(module, "__author__", "Team Kodi "); PyModule_AddStringConstant(module, "__date__", "Mon Apr 22 18:48:11 GMT 2019"); PyModule_AddStringConstant(module, "__version__", "2.26.0"); PyModule_AddStringConstant(module, "__credits__", "Team Kodi"); PyModule_AddStringConstant(module, "__platform__", "ALL"); // need to handle constants } } // end PythonBindings namespace for python type definitions