aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cppgenerator.cpp7
-rw-r--r--headergenerator.cpp7
-rw-r--r--shibokengenerator.cpp5
-rw-r--r--tests/libsample/injectcode.h2
-rw-r--r--tests/samplebinding/typesystem_sample.xml3
5 files changed, 16 insertions, 8 deletions
diff --git a/cppgenerator.cpp b/cppgenerator.cpp
index a41a60a5d..d8b5fab44 100644
--- a/cppgenerator.cpp
+++ b/cppgenerator.cpp
@@ -341,7 +341,8 @@ void CppGenerator::writeVirtualMethodNative(QTextStream &s, const AbstractMetaFu
const TypeEntry* type = func->type() ? func->type()->typeEntry() : 0;
QString prefix = wrapperName(func->ownerClass()) + "::";
- s << functionSignature(func, prefix, "", Generator::SkipDefaultValues) << endl << "{" << endl;
+ s << functionSignature(func, prefix, "", Generator::SkipDefaultValues|Generator::OriginalTypeDescription) << endl;
+ s << "{" << endl;
Indentation indentation(INDENT);
@@ -953,9 +954,9 @@ void CppGenerator::writeTypeCheck(QTextStream& s, const OverloadData* overloadDa
if (isPairContainer)
s << '(';
- if (overloadData->hasArgumentTypeReplace()) {
+ if (overloadData->hasArgumentTypeReplace())
s << guessCPythonCheckFunction(overloadData->argumentTypeReplaced());
- } else if (argType->typeEntry()->isFlags())
+ else if (argType->typeEntry()->isFlags())
s << cpythonCheckFunction(((FlagsTypeEntry*) argType->typeEntry())->originator(), true);
else if (argType->isEnum())
s << cpythonCheckFunction(argType, false, true);
diff --git a/headergenerator.cpp b/headergenerator.cpp
index ba87317d6..ad22353d1 100644
--- a/headergenerator.cpp
+++ b/headergenerator.cpp
@@ -128,9 +128,12 @@ void HeaderGenerator::writeFunction(QTextStream& s, const AbstractMetaFunction*
if (func->isConstructor() || func->isAbstract() || func->isVirtual()) {
s << INDENT;
- if (func->isVirtual() || func->isAbstract())
+ Options virtualOption = Generator::NoOption;
+ if (func->isVirtual() || func->isAbstract()) {
+ virtualOption = Generator::OriginalTypeDescription;
s << "virtual ";
- s << functionSignature(func) << ';' << endl;
+ }
+ s << functionSignature(func, "", "", virtualOption) << ';' << endl;
// TODO: when modified an abstract method ceases to be virtual but stays abstract
//if (func->isModifiedRemoved() && func->isAbstract()) {
diff --git a/shibokengenerator.cpp b/shibokengenerator.cpp
index 8a4a4eba0..cc0f48a82 100644
--- a/shibokengenerator.cpp
+++ b/shibokengenerator.cpp
@@ -364,7 +364,6 @@ QString ShibokenGenerator::getFormatUnitString(const AbstractMetaFunction* func)
} else if (arg->type()->isNativePointer() && arg->type()->name() == "char") {
result += 'z';
} else {
- Q_ASSERT(false);
ReportHandler::warning("Unknown type used in ShibokenGenerator::getFormatUnitString!");
result += '?';
}
@@ -600,7 +599,9 @@ QString ShibokenGenerator::argumentString(const AbstractMetaFunction *func,
const AbstractMetaArgument *argument,
Options options) const
{
- QString modified_type = func->typeReplaced(argument->argumentIndex() + 1);
+ QString modified_type;
+ if (!(options & OriginalTypeDescription))
+ modified_type = func->typeReplaced(argument->argumentIndex() + 1);
QString arg;
if (modified_type.isEmpty())
diff --git a/tests/libsample/injectcode.h b/tests/libsample/injectcode.h
index dfac5b672..0335ff425 100644
--- a/tests/libsample/injectcode.h
+++ b/tests/libsample/injectcode.h
@@ -53,7 +53,7 @@ public:
const char* overloadedMethod(int arg0, double arg1);
const char* overloadedMethod(int arg0, bool arg1);
- int arrayMethod(int count, int* values) const;
+ virtual int arrayMethod(int count, int* values) const;
virtual const char* virtualMethod(int arg);
private:
// This attr is just to retain the memory pointed by all return values,
diff --git a/tests/samplebinding/typesystem_sample.xml b/tests/samplebinding/typesystem_sample.xml
index 292f6f10b..af48b085d 100644
--- a/tests/samplebinding/typesystem_sample.xml
+++ b/tests/samplebinding/typesystem_sample.xml
@@ -607,6 +607,9 @@
cppItems[i] = %CONVERTTOCPP[int](PySequence_GetItem(%PYARG_1, i));
%PYARG_0 = %CONVERTTOPYTHON[int](%CPPSELF.%FUNCTION_NAME(numItems, cppItems));
</inject-code>
+ <inject-code class="native" position="beginning">
+ // TODO
+ </inject-code>
</modify-function>
<!--