From 9a969935ccc866804574480ac41ec004646f104c Mon Sep 17 00:00:00 2001 From: Hugo Parente Lima Date: Tue, 17 Aug 2010 10:44:48 -0300 Subject: Fix bug 294 addind a converter specific for QFlags. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewer: Luciano Wolf Renato Araújo --- libpyside/pysideconversions.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/libpyside/pysideconversions.h b/libpyside/pysideconversions.h index 32d5f34b9..c7fdcb516 100644 --- a/libpyside/pysideconversions.h +++ b/libpyside/pysideconversions.h @@ -37,6 +37,7 @@ #include #include +#include template struct QtDictConverter @@ -222,4 +223,34 @@ struct QSequenceConverter } }; +template +struct QFlagsConverter +{ + static inline bool checkType(PyObject* pyObj) + { + return PyObject_TypeCheck(pyObj, Shiboken::SbkType()); + } + + static inline bool isConvertible(PyObject* pyObj) + { + return PyObject_TypeCheck(pyObj, Shiboken::SbkType()) + || PyObject_TypeCheck(pyObj, Shiboken::SbkType()); + } + + static inline PyObject* toPython(void* cppobj) + { + return toPython(*reinterpret_cast(cppobj)); + } + + static inline PyObject* toPython(T cppenum) + { + return Shiboken::SbkEnumObject_New(Shiboken::SbkType(), (long) cppenum); + } + + static inline T toCpp(PyObject* pyobj) + { + return T(QFlag(reinterpret_cast(pyobj)->ob_ival)); + } +}; + #endif -- cgit v1.2.3