Mercurial > projects > qtd
diff generator/dgenerator.cpp @ 293:8627891e4556 signals
QList updates
author | eldar |
---|---|
date | Fri, 13 Nov 2009 19:09:28 +0000 |
parents | 19498f420252 |
children | bb37b0ed94c9 |
line wrap: on
line diff
--- a/generator/dgenerator.cpp Tue Nov 10 19:29:42 2009 +0000 +++ b/generator/dgenerator.cpp Fri Nov 13 19:09:28 2009 +0000 @@ -1716,8 +1716,6 @@ foreach(AbstractMetaFunction *signal, signal_funcs) { QString sigExternName = signalExternName(d_class, signal); - s << "private " << attr << "extern(C) void " << sigExternName << "_connect(void* native_id);" << endl; - s << "private " << attr << "extern(C) void " << sigExternName << "_disconnect(void* native_id);" << endl; /* QString extra_args; @@ -1732,7 +1730,7 @@ */ AbstractMetaArgumentList arguments = signal->arguments(); - s << "private extern(C) void " << sigExternName << "_handle(void* d_entity, void** args) {" << endl; + s << "/*private extern(C) void " << sigExternName << "_handle(void* d_entity, void** args) {" << endl; { Indentation indent(INDENT); s << INDENT << "auto d_object = cast(" << d_class->name() << ") d_entity;" << endl; @@ -1781,7 +1779,7 @@ s << ");" << endl; } - s << "}" << endl; + s << "}*/" << endl; } } @@ -2167,7 +2165,7 @@ } */ - // Enums aliaases + // Enums aliases foreach (AbstractMetaEnum *d_enum, d_class->enums()) writeEnumAlias(s, d_enum); @@ -2224,39 +2222,20 @@ writeFieldAccessors(s, field); } -/* qtd - - // the static fromNativePointer function... - if (!d_class->isNamespace() && !d_class->isInterface() && !fakeClass) { - s << endl - << INDENT << "public static native " << d_class->name() << " fromNativePointer(" - << "QNativePointer nativePointer);" << endl; - } - - if (d_class->isQObject()) { - s << endl; - if (TypeDatabase::instance()->includeEclipseWarnings()) - s << INDENT << "@SuppressWarnings(\"unused\")" << endl; - - s << INDENT << "private static native long originalMetaObject();" << endl; - } - - // The __qt_signalInitialization() function - if (signal_funcs.size() > 0) { - s << endl - << INDENT << "@Override" << endl - << INDENT << "@QtBlockedSlot protected boolean __qt_signalInitialization(String name) {" << endl - << INDENT << " return (__qt_signalInitialization(nativeId(), name)" << endl - << INDENT << " || super.__qt_signalInitialization(name));" << endl - << INDENT << "}" << endl - << endl - << INDENT << "@QtBlockedSlot" << endl - << INDENT << "private native boolean __qt_signalInitialization(long ptr, String name);" << endl; - } -*/ if (d_class->isQObject()) writeQObjectFunctions(s, d_class); + if (ctype->isObject() && !ctype->isQObject()) // conversion function wrapper to be consistent with QObject + { // some code duplication, remove when there is a better mechanism for Object type conversions + QString class_name = ctype->name(); + QString return_type_name = class_name; + if(ctype->designatedInterface()) + return_type_name = ctype->designatedInterface()->name(); + s << " static " << return_type_name << " __getObject(void* nativeId) {" << endl + << " return qtd_" << class_name << "_from_ptr(nativeId);" << endl + << " }" << endl << endl; + } + // flag to mark the type of class (to use in templates to convert arguments) if (d_class->baseClassName().isEmpty()) { @@ -2270,6 +2249,20 @@ s << INDENT << "public alias void __isQtType_" << d_class->name() << ";" << endl << endl; + // construction of a native copy of a Value + if (d_class->typeEntry()->isValue() && d_class->hasCloneOperator()) + { + AbstractMetaFunction *copyCtor = d_class->copyConstructor(); + if(copyCtor) + s << INDENT << "static void* __constructNativeCopy(const void* orig) {" << endl + << INDENT << " return " << copyCtor->marshalledName() << "(cast(void*)orig);" << endl + << INDENT << "}" << endl << endl + + << INDENT << "static void* __constructPlacedNativeCopy(const void* orig, void* place) {" << endl + << INDENT << " return qtd_" << d_class->name() << "_placed_copy(orig, place);" << endl + << INDENT << "}" << endl << endl; + } + // Add dummy constructor for use when constructing subclasses if (!d_class->isNamespace() && !d_class->isInterface() && !fakeClass) { s << endl @@ -2531,6 +2524,12 @@ s << endl << "extern (C) void *__" << d_class->name() << "_entity(void *q_ptr);" << endl << endl; } + if (d_class->typeEntry()->isValue() && d_class->hasCloneOperator()) + { + AbstractMetaFunction *copyCtor = d_class->copyConstructor(); + if(copyCtor) + s << "private extern(C) void* qtd_" << d_class->name() << "_placed_copy(const void* orig, void* place);" << endl << endl; + } // if (d_class->needsConversionFunc) writeConversionFunction(s, d_class);