aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHugo Lima <hugo.lima@openbossa.org>2009-11-18 16:47:12 -0200
committerHugo Lima <hugo.lima@openbossa.org>2009-11-18 16:47:12 -0200
commit5521bb2fd048be3cd74c427f7965926b816f82d8 (patch)
treeac691be83628a715607d5942823b966d3e1ed804
parentb8a07a9e0eca74ebdbd1d4e1537d47764f494c15 (diff)
Added inject codes for methods like QString::toDouble, QByteArray::toFloat, etc.
-rw-r--r--CMakeLists.txt2
-rw-r--r--PySide/CMakeLists.txt3
-rw-r--r--PySide/QtCore/typesystem_core.xml84
-rw-r--r--PySide/typesystem_templates.xml12
4 files changed, 88 insertions, 13 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 312898da7..99e19315d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,7 +1,5 @@
include(icecc.cmake) # this must be the first line!
-project(pyside)
-
cmake_minimum_required(VERSION 2.6)
set(CMAKE_CXX_FLAGS_RELEASE "-Wall -DNDEBUG -Os -Wl,-O1 -Wl,--hash-style=gnu -Wno-strict-aliasing")
diff --git a/PySide/CMakeLists.txt b/PySide/CMakeLists.txt
index 1d7c38006..08cc795ee 100644
--- a/PySide/CMakeLists.txt
+++ b/PySide/CMakeLists.txt
@@ -1,3 +1,4 @@
+project(pyside)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/__init__.py
DESTINATION ${SITE_PACKAGE}/${BINDING_NAME})
@@ -6,7 +7,7 @@ add_custom_command(OUTPUT ${${sources}}
COMMAND ${GENERATOR} ${GENERATOR_EXTRA_FLAGS}
${CMAKE_CURRENT_SOURCE_DIR}/../global.h
--include-paths=${QT_INCLUDE_DIR}
- --typesystem-paths=${typesystem_SOURCE_DIR}
+ --typesystem-paths=${pyside_SOURCE_DIR}
--output-directory=${CMAKE_CURRENT_BINARY_DIR}
--license-file=${CMAKE_CURRENT_SOURCE_DIR}/../licensecomment.txt
${CMAKE_CURRENT_SOURCE_DIR}/typesystem_${module}.xml
diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml
index e210d527e..d165ed29f 100644
--- a/PySide/QtCore/typesystem_core.xml
+++ b/PySide/QtCore/typesystem_core.xml
@@ -1,5 +1,6 @@
<?xml version="1.0"?>
<typesystem package="PySide.QtCore">
+ <load-typesystem name="typesystem_templates.xml" generate="no"/>
<!--
Stream manipulators does not fits into python language,
so we need to do a lot of inject code to handle them.
@@ -907,10 +908,24 @@
<modify-function signature="fromStdString(std::string)" remove="all"/>
<modify-function signature="toStdString()const" remove="all"/>
<modify-function signature="toStdWString()const" remove="all"/>
-<!-- <modify-function signature="operator+=(char)" remove="all"/> -->
+ <modify-function signature="operator+=(char)" remove="all"/>
<modify-function signature="toUShort(bool*,int)const" remove="all" />
- <modify-function signature="toDouble(bool*)const" remove="all" />
- <modify-function signature="toFloat(bool*)const" remove="all" />
+ <modify-function signature="toDouble(bool*)const">
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="only_bool*_fix"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="toFloat(bool*)const">
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="only_bool*_fix"/>
+ </inject-code>
+ </modify-function>
<modify-function signature="toInt(bool*,int)const" remove="all" />
<modify-function signature="toLong(bool*,int)const" remove="all" />
<modify-function signature="toLongLong(bool*,int)const" remove="all" />
@@ -1215,11 +1230,46 @@
<modify-function signature="QVariant(const QUrl&amp;)" remove="all"/>
<modify-function signature="QVariant(const QLocale&amp;)" remove="all"/>
<modify-function signature="QVariant(const QRegExp&amp;)" remove="all"/>
- <modify-function signature="toDouble(bool*)const" remove="all" />
- <modify-function signature="toInt(bool*)const" remove="all" />
- <modify-function signature="toLongLong(bool*)const" remove="all" />
- <modify-function signature="toUInt(bool*)const" remove="all" />
- <modify-function signature="toULongLong(bool*)const" remove="all" />
+ <modify-function signature="toDouble(bool*)const">
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="only_bool*_fix"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="toInt(bool*)const">
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="only_bool*_fix"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="toLongLong(bool*)const">
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="only_bool*_fix"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="toUInt(bool*)const">
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="only_bool*_fix"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="toULongLong(bool*)const">
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="only_bool*_fix"/>
+ </inject-code>
+ </modify-function>
</value-type>
<value-type name="QStringList">
<modify-function signature="fromVector(QVector&lt;QString>)" remove="all" />
@@ -1415,8 +1465,22 @@
<modify-argument index="0" replace-value="this"/>
<rename to="setFloat"/>
</modify-function>
- <modify-function signature="toDouble(bool*)const" remove="all" />
- <modify-function signature="toFloat(bool*)const" remove="all" />
+ <modify-function signature="toDouble(bool*)const">
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="only_bool*_fix"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="toFloat(bool*)const">
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="only_bool*_fix"/>
+ </inject-code>
+ </modify-function>
<modify-function signature="toInt(bool*,int)const" remove="all" />
<modify-function signature="toUShort(bool*,int)const" remove="all" />
<add-function signature="__len__">
diff --git a/PySide/typesystem_templates.xml b/PySide/typesystem_templates.xml
new file mode 100644
index 000000000..a7e209738
--- /dev/null
+++ b/PySide/typesystem_templates.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<typesystem>
+ <!-- Templates to fix bool* parameters -->
+
+ <template name="only_bool*_fix">
+ bool ok_;
+ %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&amp;ok_);
+ %0 = PyTuple_Pack(2, %CONVERTTOPYTHON[%RETURN_TYPE](retval_), %CONVERTTOPYTHON[%RETURN_TYPE](ok_));
+ </template>
+
+</typesystem>
+