QPy
Python-Qt dynamic bindings
|
00001 #pragma once 00002 // QPy - Copyright (c) 2012,2013 Ugo Varetto 00003 // All rights reserved. 00004 // 00005 // Redistribution and use in source and binary forms, with or without 00006 // modification, are permitted provided that the following conditions are met: 00007 // * Redistributions of source code must retain the above copyright 00008 // notice, this list of conditions and the following disclaimer. 00009 // * Redistributions in binary form must reproduce the above copyright 00010 // notice, this list of conditions and the following disclaimer in the 00011 // documentation and/or other materials provided with the distribution. 00012 // * Neither the name of the author and copyright holder nor the 00013 // names of contributors to the project may be used to endorse or promote products 00014 // derived from this software without specific prior written permission. 00015 // 00016 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 00017 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 00018 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00019 // DISCLAIMED. IN NO EVENT SHALL UGO VARETTO BE LIABLE FOR ANY 00020 // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 00021 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 00022 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 00023 // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 00024 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00025 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00026 00029 00030 #include <QVariant> 00031 #include <QString> 00032 #include "../PyQVariantToPyObject.h" 00033 #include "../PyObjectToQVariant.h" 00034 00035 namespace qpy { 00036 00038 struct IntQVariantToPyObject : QVariantToPyObject { 00039 IntQVariantToPyObject( bool f ) : QVariantToPyObject( f ) {} 00040 PyObject* Create( const QVariant& v ) const { 00041 return PyInt_FromLong( v.toInt() ); 00042 } 00043 }; 00045 struct DoubleQVariantToPyObject : QVariantToPyObject { 00046 DoubleQVariantToPyObject( bool f ) : QVariantToPyObject( f ) {} 00047 PyObject* Create( const QVariant& v ) const { 00048 return PyFloat_FromDouble( v.toDouble() ); 00049 } 00050 }; 00052 struct StringQVariantToPyObject : QVariantToPyObject { 00053 StringQVariantToPyObject( bool f ) : QVariantToPyObject( f ) {} 00054 PyObject* Create( const QVariant& v ) const { 00055 return PyString_FromString( qPrintable( v.toString() ) ); 00056 } 00057 }; 00058 00060 struct IntPyObjectToQVariant : PyObjectToQVariant { 00061 IntPyObjectToQVariant( bool f ) : PyObjectToQVariant( f ) {} 00062 QVariant Create( PyObject* obj ) const { 00063 return QVariant( int( PyInt_AsLong( obj ) ) ); 00064 } 00065 }; 00067 struct DoublePyObjectToQVariant : PyObjectToQVariant { 00068 DoublePyObjectToQVariant( bool f ) : PyObjectToQVariant( f ) {} 00069 QVariant Create( PyObject* obj ) const { 00070 return QVariant( PyFloat_AsDouble( obj ) ); 00071 } 00072 }; 00074 struct StringPyObjectToQVariant : PyObjectToQVariant { 00075 StringPyObjectToQVariant( bool f ) : PyObjectToQVariant( f ) {} 00076 QVariant Create( PyObject* obj ) const { 00077 return QVariant( PyString_AsString( obj ) ); 00078 } 00079 }; 00080 00081 }