diff --git a/D/DQml/CMakeLists.txt b/D/DQml/CMakeLists.txt index cdee26a..1af989d 100644 --- a/D/DQml/CMakeLists.txt +++ b/D/DQml/CMakeLists.txt @@ -8,7 +8,6 @@ add_library(${PROJECT_NAME} STATIC qquickview.d qqmlapplicationengine.d qqmlcontext.d - chararray.d qguiapplication.d qapplication.d qmodelindex.d diff --git a/D/DQml/chararray.d b/D/DQml/chararray.d deleted file mode 100644 index fb052b8..0000000 --- a/D/DQml/chararray.d +++ /dev/null @@ -1,56 +0,0 @@ -import dothersideinterface; -import std.string; - -class CharArray -{ - this() - { - _size = 0; - dos_chararray_create(_data, _size); - } - - this(int size) - { - _size = size; - dos_chararray_create(_data, _size); - } - - this(char* data, int size) - { - _data = data; - _size = size; - } - - ~this() - { - dos_chararray_delete(_data); - } - - char* data() - { - return _data; - } - - int size() - { - return _size; - } - - ref char* dataRef() - { - return _data; - } - - ref int sizeRef() - { - return _size; - } - - override string toString() - { - return fromStringz(_data).dup; - } - - private char* _data; - private int _size; -} diff --git a/D/DQml/dothersideinterface.di b/D/DQml/dothersideinterface.di index 17ac6d7..77fd484 100644 --- a/D/DQml/dothersideinterface.di +++ b/D/DQml/dothersideinterface.di @@ -21,18 +21,16 @@ extern(C) // QQuickView void dos_qquickview_create(ref void*); void dos_qquickview_show(void*); - void dos_qquickview_source(void*, ref char *, ref int); + void dos_qquickview_source(void*, ref char *); void dos_qquickview_set_source(void*, immutable (char)* filename); void dos_qquickview_rootContext(void*, ref void*); void dos_qquickview_delete(void*); // CharArray - void dos_chararray_create(ref char*); - void dos_chararray_create(ref char*, int size); void dos_chararray_delete(char*); // QQmlContext - void dos_qqmlcontext_baseUrl(void*, ref char*, ref int); + void dos_qqmlcontext_baseUrl(void*, ref char*); void dos_qqmlcontext_setcontextproperty(void*, immutable (char)*, void*); // QVariant @@ -47,7 +45,7 @@ extern(C) void dos_qvariant_setInt(void*, int); void dos_qvariant_toBool(void*, ref bool); void dos_qvariant_setBool(void*, bool); - void dos_qvariant_toString(void*, ref char*, ref int); + void dos_qvariant_toString(void*, ref char*); void dos_qvariant_setString(void*, immutable(char)*); void dos_qvariant_toFloat(void*, ref float); void dos_qvariant_setFloat(void*, float); @@ -60,8 +58,8 @@ extern(C) // QObject void dos_qobject_create(ref void*, - void* dobject, - void function (void*, void*, int , void**)); + void* dobject, + void function (void*, void*, int , void**)); void dos_qobject_slot_create(void*, immutable (char)* name, diff --git a/D/DQml/main.d b/D/DQml/main.d deleted file mode 100644 index 2b4b769..0000000 --- a/D/DQml/main.d +++ /dev/null @@ -1,67 +0,0 @@ -import std.stdio; -import std.string; -import std.traits; -import std.conv; -import std.functional; -import core.memory; -import dotherside; - -class MyObject : QObject -{ - this() - { - foo = registerSlot("foo", &_foo); - bar = registerSlot("bar", &_bar); - nameChanged = registerSignal!(string)("nameChanged"); - tor = registerSlot("tor", &_tor); - } - - public QSlot!(void delegate(int)) foo; - private void _foo(int fooValue) - { - writeln("D: Called foo slot with argument ", fooValue , "!!"); - } - - public QSlot!(int delegate(int)) bar; - private int _bar(int barValue) - { - writeln("D: Called bar slot with argument " , barValue, "!!"); - return 666; - } - - public QSlot!(string delegate(string)) tor; - private string _tor (string torValue) - { - writeln("D: Called tor slot with argument ", torValue, "!!"); - return "2343"; - } - - public QSignal!(string) nameChanged; -} - -void main() -{ - try - { - auto app = new QGuiApplication; - scope(exit) destroy(app); - - auto view = new QQuickView; - scope(exit) destroy(view); - - auto myObject = new MyObject(); - scope(exit) destroy(myObject); - - auto context = view.rootContext(); - context.setContextProperty("myObject", new QVariant(myObject)); - - view.setSource("Test.qml"); - view.show(); - - myObject.nameChanged("prova"); - - app.exec(); - } - catch - {} -} diff --git a/D/DQml/qapplication.d b/D/DQml/qapplication.d index 4c73221..b43e1b2 100644 --- a/D/DQml/qapplication.d +++ b/D/DQml/qapplication.d @@ -2,23 +2,23 @@ import dothersideinterface; class QApplication { - this() - { - dos_qapplication_create(); - } + this() + { + dos_qapplication_create(); + } - ~this() - { - dos_qapplication_delete(); - } + ~this() + { + dos_qapplication_delete(); + } - void exec() - { - dos_qapplication_exec(); - } + void exec() + { + dos_qapplication_exec(); + } - void quit() - { - dos_qapplication_quit(); - } + void quit() + { + dos_qapplication_quit(); + } } diff --git a/D/DQml/qguiapplication.d b/D/DQml/qguiapplication.d index 4dbc8e6..9623f7e 100644 --- a/D/DQml/qguiapplication.d +++ b/D/DQml/qguiapplication.d @@ -2,23 +2,23 @@ import dothersideinterface; class QGuiApplication { - this() - { - dos_qguiapplication_create(); - } + this() + { + dos_qguiapplication_create(); + } - ~this() - { - dos_qguiapplication_delete(); - } + ~this() + { + dos_qguiapplication_delete(); + } - void exec() - { - dos_qguiapplication_exec(); - } + void exec() + { + dos_qguiapplication_exec(); + } - void quit() - { - dos_qguiapplication_quit(); - } + void quit() + { + dos_qguiapplication_quit(); + } } diff --git a/D/DQml/qmetatype.d b/D/DQml/qmetatype.d index 2e62b80..356e828 100644 --- a/D/DQml/qmetatype.d +++ b/D/DQml/qmetatype.d @@ -2,66 +2,66 @@ import qobject; import qvariant; /* -enum Type { - UnknownType = 0, Bool = 1, Int = 2, UInt = 3, LongLong = 4, ULongLong = 5, - Double = 6, Long = 32, Short = 33, Char = 34, ULong = 35, UShort = 36, - UChar = 37, Float = 38, - VoidStar = 31, - QChar = 7, QString = 10, QStringList = 11, QByteArray = 12, - QBitArray = 13, QDate = 14, QTime = 15, QDateTime = 16, QUrl = 17, - QLocale = 18, QRect = 19, QRectF = 20, QSize = 21, QSizeF = 22, - QLine = 23, QLineF = 24, QPoint = 25, QPointF = 26, QRegExp = 27, - QEasingCurve = 29, QUuid = 30, QVariant = 41, QModelIndex = 42, - QRegularExpression = 44, - QJsonValue = 45, QJsonObject = 46, QJsonArray = 47, QJsonDocument = 48, - QObjectStar = 39, SChar = 40, - Void = 43, - QVariantMap = 8, QVariantList = 9, QVariantHash = 28, - QFont = 64, QPixmap = 65, QBrush = 66, QColor = 67, QPalette = 68, - QIcon = 69, QImage = 70, QPolygon = 71, QRegion = 72, QBitmap = 73, - QCursor = 74, QKeySequence = 75, QPen = 76, QTextLength = 77, QTextFormat = 78, - QMatrix = 79, QTransform = 80, QMatrix4x4 = 81, QVector2D = 82, - QVector3D = 83, QVector4D = 84, QQuaternion = 85, QPolygonF = 86, - QSizePolicy = 121, - User = 1024 - }; + enum Type { + UnknownType = 0, Bool = 1, Int = 2, UInt = 3, LongLong = 4, ULongLong = 5, + Double = 6, Long = 32, Short = 33, Char = 34, ULong = 35, UShort = 36, + UChar = 37, Float = 38, + VoidStar = 31, + QChar = 7, QString = 10, QStringList = 11, QByteArray = 12, + QBitArray = 13, QDate = 14, QTime = 15, QDateTime = 16, QUrl = 17, + QLocale = 18, QRect = 19, QRectF = 20, QSize = 21, QSizeF = 22, + QLine = 23, QLineF = 24, QPoint = 25, QPointF = 26, QRegExp = 27, + QEasingCurve = 29, QUuid = 30, QVariant = 41, QModelIndex = 42, + QRegularExpression = 44, + QJsonValue = 45, QJsonObject = 46, QJsonArray = 47, QJsonDocument = 48, + QObjectStar = 39, SChar = 40, + Void = 43, + QVariantMap = 8, QVariantList = 9, QVariantHash = 28, + QFont = 64, QPixmap = 65, QBrush = 66, QColor = 67, QPalette = 68, + QIcon = 69, QImage = 70, QPolygon = 71, QRegion = 72, QBitmap = 73, + QCursor = 74, QKeySequence = 75, QPen = 76, QTextLength = 77, QTextFormat = 78, + QMatrix = 79, QTransform = 80, QMatrix4x4 = 81, QVector2D = 82, + QVector3D = 83, QVector4D = 84, QQuaternion = 85, QPolygonF = 86, + QSizePolicy = 121, + User = 1024 + }; */ public enum QMetaType { - Unknown = 0, - Bool = 1, - Int = 2, - String = 10, - VoidStr = 31, - QObject = 39, - QVariant = 41, - Void = 43 + Unknown = 0, + Bool = 1, + Int = 2, + String = 10, + VoidStr = 31, + QObject = 39, + QVariant = 41, + Void = 43 } public QMetaType GetMetaType(T)() - if (is (T == int) - || is (T == bool) - || is (T == string) - || is (T == void) - || is (T == QObject) - || is (T == QVariant) - || is (T == void*)) -{ - static if (is (T == bool)) - return QMetaType.Bool; - else if (is (T == int)) - return QMetaType.Int; - else if (is( T == void)) - return QMetaType.Void; - else if (is (T == string)) - return QMetaType.String; - else if (is (T == QObject)) - return QMetaType.QObject; - else if (is (T == QVariant)) - return QMetaType.QVariant; - else if (is (T == void*)) - return QMetaType.VoidStar; - else - return QMetaType.Unknown; -} + if (is (T == int) + || is (T == bool) + || is (T == string) + || is (T == void) + || is (T == QObject) + || is (T == QVariant) + || is (T == void*)) + { + static if (is (T == bool)) + return QMetaType.Bool; + else if (is (T == int)) + return QMetaType.Int; + else if (is( T == void)) + return QMetaType.Void; + else if (is (T == string)) + return QMetaType.String; + else if (is (T == QObject)) + return QMetaType.QObject; + else if (is (T == QVariant)) + return QMetaType.QVariant; + else if (is (T == void*)) + return QMetaType.VoidStar; + else + return QMetaType.Unknown; + } diff --git a/D/DQml/qobject.d b/D/DQml/qobject.d index 98d878d..4550949 100644 --- a/D/DQml/qobject.d +++ b/D/DQml/qobject.d @@ -11,101 +11,101 @@ import qvariant; public class QObject { - this() - { - dos_qobject_create(this.data, cast (void*) this, &staticSlotCallback); - } - - ~this() - { - dos_qobject_delete(this.data); - } - - public void* rawData() - { - return this.data; - } - - private extern (C) static void staticSlotCallback(void* qObjectPtr, - void* rawSlotName, - int numParameters, - void** parametersArray) - { - QVariant[] parameters = new QVariant[numParameters]; - for (int i = 0; i < numParameters; ++i) - parameters[i] = new QVariant(parametersArray[i]); - QObject qObject = cast(QObject) qObjectPtr; - QVariant slotName = new QVariant(rawSlotName); - qObject.onSlotCalled(slotName, parameters); - } - - protected void onSlotCalled(QVariant slotName, QVariant[] parameters) - { - } - - protected void registerSlot(string name, QMetaType[] types) - { - int index = -1; - int length = cast(int)types.length; - int[] array = to!(int[])(types); - dos_qobject_slot_create(this.data, - name.toStringz(), - length, - array.ptr, - index); - } - - protected void registerSignal(string name, QMetaType[] types) - { - int index = -1; - int length = cast(int)types.length; - int[] array = length > 0 ? to!(int[])(types) : null; - dos_qobject_signal_create(this.data, - name.toStringz(), - length, - array.ptr, - index); - } - - protected void registerProperty(string name, - QMetaType type, - string readSlotName, - string writeSlotName, - string notifySignalName) - { - dos_qobject_property_create(this.data, - name.toStringz(), - type, - readSlotName.toStringz(), - writeSlotName.toStringz(), - notifySignalName.toStringz()); - } - - protected void emit(T)(string signalName, T t) - { - emit(signalName, new QVariant(t)); - } - - protected void emit(string signalName, QVariant value) - { - QVariant[] array = [value]; - emit(signalName, array); - } - - protected void emit(string signalName, QVariant[] arguments = null) - { - int length = cast(int)arguments.length; - void*[] array = null; - if (length > 0) { - array = new void*[length]; - foreach (int i, QVariant v; arguments) - array[i] = v.rawData(); + this() + { + dos_qobject_create(this.data, cast (void*) this, &staticSlotCallback); } - dos_qobject_signal_emit(this.data, - signalName.toStringz(), - length, - array.ptr); - } - private void* data; + ~this() + { + dos_qobject_delete(this.data); + } + + public void* rawData() + { + return this.data; + } + + private extern (C) static void staticSlotCallback(void* qObjectPtr, + void* rawSlotName, + int numParameters, + void** parametersArray) + { + QVariant[] parameters = new QVariant[numParameters]; + for (int i = 0; i < numParameters; ++i) + parameters[i] = new QVariant(parametersArray[i]); + QObject qObject = cast(QObject) qObjectPtr; + QVariant slotName = new QVariant(rawSlotName); + qObject.onSlotCalled(slotName, parameters); + } + + protected void onSlotCalled(QVariant slotName, QVariant[] parameters) + { + } + + protected void registerSlot(string name, QMetaType[] types) + { + int index = -1; + int length = cast(int)types.length; + int[] array = to!(int[])(types); + dos_qobject_slot_create(this.data, + name.toStringz(), + length, + array.ptr, + index); + } + + protected void registerSignal(string name, QMetaType[] types) + { + int index = -1; + int length = cast(int)types.length; + int[] array = length > 0 ? to!(int[])(types) : null; + dos_qobject_signal_create(this.data, + name.toStringz(), + length, + array.ptr, + index); + } + + protected void registerProperty(string name, + QMetaType type, + string readSlotName, + string writeSlotName, + string notifySignalName) + { + dos_qobject_property_create(this.data, + name.toStringz(), + type, + readSlotName.toStringz(), + writeSlotName.toStringz(), + notifySignalName.toStringz()); + } + + protected void emit(T)(string signalName, T t) + { + emit(signalName, new QVariant(t)); + } + + protected void emit(string signalName, QVariant value) + { + QVariant[] array = [value]; + emit(signalName, array); + } + + protected void emit(string signalName, QVariant[] arguments = null) + { + int length = cast(int)arguments.length; + void*[] array = null; + if (length > 0) { + array = new void*[length]; + foreach (int i, QVariant v; arguments) + array[i] = v.rawData(); + } + dos_qobject_signal_emit(this.data, + signalName.toStringz(), + length, + array.ptr); + } + + private void* data; } diff --git a/D/DQml/qqmlapplicationengine.d b/D/DQml/qqmlapplicationengine.d index f315b3b..4015108 100644 --- a/D/DQml/qqmlapplicationengine.d +++ b/D/DQml/qqmlapplicationengine.d @@ -4,27 +4,27 @@ import std.string; class QQmlApplicationEngine { - public this() - { - dos_qqmlapplicationengine_create(data); - } + public this() + { + dos_qqmlapplicationengine_create(data); + } - public ~this() - { - dos_qqmlapplicationengine_delete(data); - } + public ~this() + { + dos_qqmlapplicationengine_delete(data); + } - public QQmlContext rootContext() - { - void* contextData; - dos_qqmlapplicationengine_context(data, contextData); - return new QQmlContext(contextData); - } + public QQmlContext rootContext() + { + void* contextData; + dos_qqmlapplicationengine_context(data, contextData); + return new QQmlContext(contextData); + } - public void load(string filename) - { - dos_qqmlapplicationengine_load(data, filename.toStringz()); - } + public void load(string filename) + { + dos_qqmlapplicationengine_load(data, filename.toStringz()); + } - private void* data; + private void* data; } diff --git a/D/DQml/qqmlcontext.d b/D/DQml/qqmlcontext.d index 05bdfca..15763d5 100644 --- a/D/DQml/qqmlcontext.d +++ b/D/DQml/qqmlcontext.d @@ -1,31 +1,32 @@ import dothersideinterface; import qvariant; -import chararray; +import std.string; class QQmlContext { - public this(void* data) - { - this.data = data; - } + public this(void* data) + { + this.data = data; + } - public void* rawData() - { - return data; - } + public void* rawData() + { + return data; + } - public string baseUrl() - { - auto array = new CharArray(); - scope(exit) destroy(array); - dos_qqmlcontext_baseUrl(data, array.dataRef(), array.sizeRef()); - return array.toString(); - } + public string baseUrl() + { + char* array; + dos_qqmlcontext_baseUrl(data, array); + string result = fromStringz(array).dup; + dos_chararray_delete(array); + return result; + } - public void setContextProperty(string name, QVariant value) - { - dos_qqmlcontext_setcontextproperty(data, name.ptr, value.rawData()); - } + public void setContextProperty(string name, QVariant value) + { + dos_qqmlcontext_setcontextproperty(data, name.ptr, value.rawData()); + } - private void* data; + private void* data; } diff --git a/D/DQml/qquickview.d b/D/DQml/qquickview.d index bf3a0e2..c5f0b34 100644 --- a/D/DQml/qquickview.d +++ b/D/DQml/qquickview.d @@ -1,45 +1,45 @@ import dothersideinterface; import qqmlcontext; -import chararray; import std.string; class QQuickView { - this() - { - dos_qquickview_create(data); - } + this() + { + dos_qquickview_create(data); + } - ~this() - { - dos_qquickview_delete(data); - } + ~this() + { + dos_qquickview_delete(data); + } - void show() - { - dos_qquickview_show(data); - } + void show() + { + dos_qquickview_show(data); + } - QQmlContext rootContext() - { - void* contextData; - dos_qquickview_rootContext(data, contextData); - return new QQmlContext(contextData); - } + QQmlContext rootContext() + { + void* contextData; + dos_qquickview_rootContext(data, contextData); + return new QQmlContext(contextData); + } - string source() - { - auto array = new CharArray(); - scope(exit) destroy(array); - dos_qquickview_source(data, array.dataRef(), array.sizeRef()); - return array.toString(); - } + string source() + { + char* array; + dos_qquickview_source(data, array); + string result = fromStringz(array).dup; + dos_chararray_delete(array); + return result; + } - void setSource(string filename) - { - immutable(char)* filenameAsCString = filename.toStringz(); - dos_qquickview_set_source(data, filenameAsCString); - } + void setSource(string filename) + { + immutable(char)* filenameAsCString = filename.toStringz(); + dos_qquickview_set_source(data, filenameAsCString); + } - private void* data; + private void* data; } diff --git a/D/DQml/qvariant.d b/D/DQml/qvariant.d index fac1f2d..bf44eba 100644 --- a/D/DQml/qvariant.d +++ b/D/DQml/qvariant.d @@ -1,160 +1,160 @@ import dothersideinterface; import qobject; import std.string; -import chararray; class QVariant { - public this() - { - dos_qvariant_create(this.data); - } + public this() + { + dos_qvariant_create(this.data); + } - public this(int value) - { - dos_qvariant_create_int(this.data, value); - } + public this(int value) + { + dos_qvariant_create_int(this.data, value); + } - public this(bool value) - { - dos_qvariant_create_bool(this.data, value); - } + public this(bool value) + { + dos_qvariant_create_bool(this.data, value); + } - public this(string value) - { - dos_qvariant_create_string(this.data, value.toStringz()); - } + public this(string value) + { + dos_qvariant_create_string(this.data, value.toStringz()); + } - public this(float value) - { - dos_qvariant_create_float(this.data, value); - } + public this(float value) + { + dos_qvariant_create_float(this.data, value); + } - public this(double value) - { - dos_qvariant_create_double(this.data, value); - } + public this(double value) + { + dos_qvariant_create_double(this.data, value); + } - public this(QObject value) - { - dos_qvariant_create_qobject(this.data, value.rawData()); - } + public this(QObject value) + { + dos_qvariant_create_qobject(this.data, value.rawData()); + } - public this(void* data, bool hasOwnership = false) - { - this.data = data; - this.hasOwnership = hasOwnership; - } + public this(void* data, bool hasOwnership = false) + { + this.data = data; + this.hasOwnership = hasOwnership; + } - ~this() - { - if (this.hasOwnership) - dos_qvariant_delete(this.data); - } + ~this() + { + if (this.hasOwnership) + dos_qvariant_delete(this.data); + } - public void* rawData() - { - return data; - } + public void* rawData() + { + return data; + } - public void setValue(int value) - { - dos_qvariant_setInt(this.data, value); - } + public void setValue(int value) + { + dos_qvariant_setInt(this.data, value); + } - public void setValue(bool value) - { - dos_qvariant_setBool(this.data, value); - } + public void setValue(bool value) + { + dos_qvariant_setBool(this.data, value); + } - public void setValue(string value) - { - dos_qvariant_setString(this.data, value.toStringz()); - } + public void setValue(string value) + { + dos_qvariant_setString(this.data, value.toStringz()); + } - public void setValue(QObject value) - { - dos_qvariant_setQObject(this.data, value.rawData()); - } + public void setValue(QObject value) + { + dos_qvariant_setQObject(this.data, value.rawData()); + } - public void setValue(float value) - { - dos_qvariant_setFloat(this.data, value); - } + public void setValue(float value) + { + dos_qvariant_setFloat(this.data, value); + } - public void setValue(double value) - { - dos_qvariant_setDouble(this.data, value); - } + public void setValue(double value) + { + dos_qvariant_setDouble(this.data, value); + } - public void getValue(ref int value) - { - value = toInt(); - } + public void getValue(ref int value) + { + value = toInt(); + } - public void getValue(ref bool value) - { - value = toBool(); - } + public void getValue(ref bool value) + { + value = toBool(); + } - public void getValue(ref string value) - { - value = toString(); - } + public void getValue(ref string value) + { + value = toString(); + } - public void getValue(ref float value) - { - value = toFloat(); - } + public void getValue(ref float value) + { + value = toFloat(); + } - public void getValue(ref double value) - { - value = toDouble(); - } + public void getValue(ref double value) + { + value = toDouble(); + } - public bool isNull() - { - bool result; - dos_qvariant_isnull(this.data, result); - return result; - } + public bool isNull() + { + bool result; + dos_qvariant_isnull(this.data, result); + return result; + } - public bool toBool() - { - bool result; - dos_qvariant_toBool(this.data, result); - return result; - } + public bool toBool() + { + bool result; + dos_qvariant_toBool(this.data, result); + return result; + } - public int toInt() - { - int result; - dos_qvariant_toInt(this.data, result); - return result; - } + public int toInt() + { + int result; + dos_qvariant_toInt(this.data, result); + return result; + } - public float toFloat() - { - float result; - dos_qvariant_toFloat(this.data, result); - return result; - } + public float toFloat() + { + float result; + dos_qvariant_toFloat(this.data, result); + return result; + } - public double toDouble() - { - double result; - dos_qvariant_toDouble(this.data, result); - return result; - } + public double toDouble() + { + double result; + dos_qvariant_toDouble(this.data, result); + return result; + } - public override string toString() - { - auto result = new CharArray(); - scope(exit) destroy(result); - dos_qvariant_toString(this.data, result.dataRef(), result.sizeRef()); - return result.toString(); - } + public override string toString() + { + char* array; + dos_qvariant_toString(this.data, array); + string result = fromStringz(array).dup; + dos_chararray_delete(array); + return result; + } - private void* data = null; - private bool hasOwnership = true; + private void* data = null; + private bool hasOwnership = true; } diff --git a/DOtherSide/DOtherSide/DOtherSide.cpp b/DOtherSide/DOtherSide/DOtherSide.cpp index abde915..459bf32 100644 --- a/DOtherSide/DOtherSide/DOtherSide.cpp +++ b/DOtherSide/DOtherSide/DOtherSide.cpp @@ -16,11 +16,10 @@ #include "BaseQAbstractListModel.h" #include "BaseQObject.h" -void convert_to_cstring(const QString& source, char** destination, int* length) +void convert_to_cstring(const QString& source, char** destination) { QByteArray array = source.toUtf8(); *destination = qstrdup(array.data()); - *length = qstrlen(array.data()); } void dos_qguiapplication_create() @@ -110,11 +109,11 @@ void dos_qquickview_delete(void* vptr) delete view; } -void dos_qquickview_source(void* vptr, char** result, int* length) +void dos_qquickview_source(void* vptr, char** result) { QQuickView* view = reinterpret_cast(vptr); QUrl url = view->source(); - convert_to_cstring(url.toString(), result, length); + convert_to_cstring(url.toString(), result); } void dos_qquickview_set_source(void* vptr, const char* filename) @@ -129,29 +128,16 @@ void dos_qquickview_rootContext(void* vptr, void** context) *context = view->rootContext(); } -void dos_chararray_create(char** ptr) -{ - *ptr = 0; -} - -void dos_chararray_create(char** ptr, int size) -{ - if (size > 0) - *ptr = new char[size]; - else - *ptr = 0; -} - void dos_chararray_delete(char* ptr) { if (ptr) delete[] ptr; } -void dos_qqmlcontext_baseUrl(void* vptr, char** result, int* length) +void dos_qqmlcontext_baseUrl(void* vptr, char** result) { QQmlContext* context = reinterpret_cast(vptr); QUrl url = context->baseUrl(); - convert_to_cstring(url.toString(), result, length); + convert_to_cstring(url.toString(), result); } void dos_qqmlcontext_setcontextproperty(void* vptr, const char* name, void* value) @@ -258,10 +244,10 @@ void dos_qvariant_toDouble(void* vptr, double* value) *value = variant->toDouble(); } -void dos_qvariant_toString(void* vptr, char** ptr, int* size) +void dos_qvariant_toString(void* vptr, char** ptr) { auto variant = reinterpret_cast(vptr); - convert_to_cstring(variant->toString(), ptr, size); + convert_to_cstring(variant->toString(), ptr); } void dos_qvariant_setInt(void* vptr, int value) diff --git a/DOtherSide/DOtherSide/DOtherSide.h b/DOtherSide/DOtherSide/DOtherSide.h index ec67223..b38685e 100644 --- a/DOtherSide/DOtherSide/DOtherSide.h +++ b/DOtherSide/DOtherSide/DOtherSide.h @@ -39,17 +39,16 @@ DOS_API void dos_qqmlapplicationengine_delete(void* vptr); // QQuickView DOS_API void dos_qquickview_create(void** vptr); DOS_API void dos_qquickview_show(void* vptr); -DOS_API void dos_qquickview_source(void* vptr, char** result, int* length); +DOS_API void dos_qquickview_source(void* vptr, char** result); DOS_API void dos_qquickview_set_source(void* vptr, const char* filename); DOS_API void dos_qquickview_delete(void* vptr); -DOS_API void dos_qquickview_rootContext(void* vptr, void** context); +DOS_API void dos_qquickview_rootContext(void* vptr, void** result); // QQmlContext -DOS_API void dos_qqmlcontext_baseUrl(void* vptr, char** result, int* length); +DOS_API void dos_qqmlcontext_baseUrl(void* vptr, char** result); DOS_API void dos_qqmlcontext_setcontextproperty(void* vptr, const char* name, void* value); // CharArray -DOS_API void dos_chararray_create(char** ptr, int size); DOS_API void dos_chararray_delete(char* ptr); // QVariant @@ -62,19 +61,19 @@ DOS_API void dos_qvariant_create_qvariant(void** vptr, void* value); DOS_API void dos_qvariant_create_float(void** vptr, float value); DOS_API void dos_qvariant_create_double(void** vptr, double value); DOS_API void dos_qvariant_create_qabstractlistmodel(void** vptr, void* value); -DOS_API void dos_qvariant_toInt(void* vptr, int* value); +DOS_API void dos_qvariant_toInt(void* vptr, int* result); DOS_API void dos_qvariant_setInt(void* vptr, int value); -DOS_API void dos_qvariant_toBool(void* vptr, bool* value); +DOS_API void dos_qvariant_toBool(void* vptr, bool* result); DOS_API void dos_qvariant_setBool(void* vptr, bool value); -DOS_API void dos_qvariant_toFloat(void* vptr, float* value); +DOS_API void dos_qvariant_toFloat(void* vptr, float* result); DOS_API void dos_qvariant_setFloat(void* vptr, float value); -DOS_API void dos_qvariant_toDouble(void* vptr, double* value); +DOS_API void dos_qvariant_toDouble(void* vptr, double* result); DOS_API void dos_qvariant_setDouble(void* vptr, double value); -DOS_API void dos_qvariant_toString(void* vptr, char** ptr, int* size); +DOS_API void dos_qvariant_toString(void* vptr, char** result); DOS_API void dos_qvariant_setString(void* vptr, const char* value); DOS_API void dos_qvariant_setQObject(void* vptr, void* value); DOS_API void dos_qvariant_setQAbstractListModel(void* vptr, void* value); -DOS_API void dos_qvariant_isnull(void* vptr, bool* isNull); +DOS_API void dos_qvariant_isnull(void* vptr, bool* result); DOS_API void dos_qvariant_delete(void* vptr); DOS_API void dos_qvariant_assign(void* vptr, void* other); @@ -82,24 +81,20 @@ DOS_API void dos_qvariant_assign(void* vptr, void* other); DOS_API void dos_qobject_create(void** vptr, void* dObjectPointer, DObjectCallback dObjectCallback); - DOS_API void dos_qobject_slot_create(void* vptr, const char* name, int parametersCount, int* parametersMetaTypes, int* slotIndex); - DOS_API void dos_qobject_signal_create(void* vptr, const char* name, int parametersCount, int* parametersMetaTypes, int* signalIndex); - DOS_API void dos_qobject_signal_emit(void* vptr, const char* name, int parametersCount, void** parameters); - DOS_API void dos_qobject_property_create(void* vptr, const char* name, int propertyMetaType, @@ -136,24 +131,13 @@ DOS_API void dos_qabstractlistmodel_create(void** vptr, RoleNamesCallback roleNamesCallback, FlagsCallback flagsCallback, HeaderDataCallback headerDataCallback); -DOS_API void dos_qabstractlistmodel_beginInsertRows(void* vptr, - QModelIndexVoidPtr parentIndex, - int first, - int last); +DOS_API void dos_qabstractlistmodel_beginInsertRows(void* vptr, void* parent, int first, int last); DOS_API void dos_qabstractlistmodel_endInsertRows(void* vptr); -DOS_API void dos_qabstractlistmodel_beginRemoveRows(void* vptr, - QModelIndexVoidPtr parentIndex, - int first, - int last); +DOS_API void dos_qabstractlistmodel_beginRemoveRows(void* vptr, void* parent, int first, int last); DOS_API void dos_qabstractlistmodel_endRemoveRows(void* vptr); DOS_API void dos_qabstractlistmodel_beginResetModel(void* vptr); DOS_API void dos_qabstractlistmodel_endResetModel(void* vptr); -DOS_API void dos_qabstractlistmodel_dataChanged(void* vptr, - QModelIndexVoidPtr topLeftIndex, - QModelIndexVoidPtr bottomRightIndex, - int* rolesArrayPtr, - int rolesArrayLength); - +DOS_API void dos_qabstractlistmodel_dataChanged(void* vptr, void* topLeft, void* bottomRight, int* rolesPtr, int rolesLength); DOS_API void dos_qabstractlistmodel_delete(void* vptr); #ifdef __cplusplus