Mercurial > projects > qtd
diff generator/dgenerator.cpp @ 270:49bfc86ff583
true emit of Qt signals.
author | eldar |
---|---|
date | Thu, 24 Sep 2009 12:59:48 +0000 |
parents | 073b9153ed8a |
children | 519befd5a5d1 |
line wrap: on
line diff
--- a/generator/dgenerator.cpp Sun Sep 20 10:23:48 2009 +0000 +++ b/generator/dgenerator.cpp Thu Sep 24 12:59:48 2009 +0000 @@ -984,6 +984,9 @@ option = Option(option | SkipReturnType); writeFunctionAttributes(s, d_function, included_attributes, excluded_attributes, option); + if(d_function->isSignal()) + functionName += "_emit"; + s << functionName << "("; writeFunctionArguments(s, d_function, argument_count, option); s << ")"; @@ -1746,7 +1749,7 @@ if (type->isContainer()) { s << INDENT << translateType(type, signal->implementingClass(), BoxedPrimitive) << " " << arg_name << ";" << endl - << INDENT << fromCppContainerName(d_class, type) << "(" << arg_ptr << ", &" << arg_name << ");" << endl; + << INDENT << cppContainerConversionName(d_class, type, FromCpp) << "(" << arg_ptr << ", &" << arg_name << ");" << endl; } else if (type->isTargetLangString()) { s << INDENT << "auto " << arg_name << "_ptr = " << arg_ptr << ";" << endl << INDENT << "string " << arg_name << " = QString.toNativeString(" << arg_name << "_ptr);"; @@ -2152,7 +2155,11 @@ writeSignalSignatures(s, d_class, signal_funcs); foreach (AbstractMetaFunction *signal, signal_funcs) + { writeSignal(s, signal); + if(!signal->isPrivate()) + writeFunction(s, signal); + } } // Class has subclasses but also only private constructors @@ -2503,6 +2510,18 @@ s << "extern (C) void qtd_" << d_class->name() << "_destructor(void *ptr);" << endl << endl; // qtd + + s << endl << "// C wrappers for signal emitters" << endl; + + if (d_class->isQObject()) + { + AbstractMetaFunctionList signal_funcs = signalFunctions(d_class, false); + + foreach (AbstractMetaFunction *signal, signal_funcs) + if(!signal->isPrivate()) + writePrivateNativeFunction(s, signal); + } + s << endl << "// C wrappers" << endl; d_funcs = d_class->functionsInTargetLang(); if (!d_class->isInterface()) @@ -2802,7 +2821,7 @@ if (sz > 0) { for (int i=0; i<sz; ++i) { - s << ", "; + s << ", "; QString modifiedType = d_function->typeReplaced(i+1);