[DQml] Refactored and beautified the code

Removed the int parameter from methods that return a string
This commit is contained in:
Filippo Cucchetto 2015-04-27 19:58:18 +02:00
parent 0b284798bc
commit c9ffaf4f59
14 changed files with 406 additions and 561 deletions

View File

@ -8,7 +8,6 @@ add_library(${PROJECT_NAME} STATIC
qquickview.d qquickview.d
qqmlapplicationengine.d qqmlapplicationengine.d
qqmlcontext.d qqmlcontext.d
chararray.d
qguiapplication.d qguiapplication.d
qapplication.d qapplication.d
qmodelindex.d qmodelindex.d

View File

@ -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;
}

View File

@ -21,18 +21,16 @@ extern(C)
// QQuickView // QQuickView
void dos_qquickview_create(ref void*); void dos_qquickview_create(ref void*);
void dos_qquickview_show(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_set_source(void*, immutable (char)* filename);
void dos_qquickview_rootContext(void*, ref void*); void dos_qquickview_rootContext(void*, ref void*);
void dos_qquickview_delete(void*); void dos_qquickview_delete(void*);
// CharArray // CharArray
void dos_chararray_create(ref char*);
void dos_chararray_create(ref char*, int size);
void dos_chararray_delete(char*); void dos_chararray_delete(char*);
// QQmlContext // 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*); void dos_qqmlcontext_setcontextproperty(void*, immutable (char)*, void*);
// QVariant // QVariant
@ -47,7 +45,7 @@ extern(C)
void dos_qvariant_setInt(void*, int); void dos_qvariant_setInt(void*, int);
void dos_qvariant_toBool(void*, ref bool); void dos_qvariant_toBool(void*, ref bool);
void dos_qvariant_setBool(void*, 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_setString(void*, immutable(char)*);
void dos_qvariant_toFloat(void*, ref float); void dos_qvariant_toFloat(void*, ref float);
void dos_qvariant_setFloat(void*, float); void dos_qvariant_setFloat(void*, float);
@ -60,8 +58,8 @@ extern(C)
// QObject // QObject
void dos_qobject_create(ref void*, void dos_qobject_create(ref void*,
void* dobject, void* dobject,
void function (void*, void*, int , void**)); void function (void*, void*, int , void**));
void dos_qobject_slot_create(void*, void dos_qobject_slot_create(void*,
immutable (char)* name, immutable (char)* name,

View File

@ -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
{}
}

View File

@ -2,23 +2,23 @@ import dothersideinterface;
class QApplication class QApplication
{ {
this() this()
{ {
dos_qapplication_create(); dos_qapplication_create();
} }
~this() ~this()
{ {
dos_qapplication_delete(); dos_qapplication_delete();
} }
void exec() void exec()
{ {
dos_qapplication_exec(); dos_qapplication_exec();
} }
void quit() void quit()
{ {
dos_qapplication_quit(); dos_qapplication_quit();
} }
} }

View File

@ -2,23 +2,23 @@ import dothersideinterface;
class QGuiApplication class QGuiApplication
{ {
this() this()
{ {
dos_qguiapplication_create(); dos_qguiapplication_create();
} }
~this() ~this()
{ {
dos_qguiapplication_delete(); dos_qguiapplication_delete();
} }
void exec() void exec()
{ {
dos_qguiapplication_exec(); dos_qguiapplication_exec();
} }
void quit() void quit()
{ {
dos_qguiapplication_quit(); dos_qguiapplication_quit();
} }
} }

View File

@ -2,66 +2,66 @@ import qobject;
import qvariant; import qvariant;
/* /*
enum Type { enum Type {
UnknownType = 0, Bool = 1, Int = 2, UInt = 3, LongLong = 4, ULongLong = 5, UnknownType = 0, Bool = 1, Int = 2, UInt = 3, LongLong = 4, ULongLong = 5,
Double = 6, Long = 32, Short = 33, Char = 34, ULong = 35, UShort = 36, Double = 6, Long = 32, Short = 33, Char = 34, ULong = 35, UShort = 36,
UChar = 37, Float = 38, UChar = 37, Float = 38,
VoidStar = 31, VoidStar = 31,
QChar = 7, QString = 10, QStringList = 11, QByteArray = 12, QChar = 7, QString = 10, QStringList = 11, QByteArray = 12,
QBitArray = 13, QDate = 14, QTime = 15, QDateTime = 16, QUrl = 17, QBitArray = 13, QDate = 14, QTime = 15, QDateTime = 16, QUrl = 17,
QLocale = 18, QRect = 19, QRectF = 20, QSize = 21, QSizeF = 22, QLocale = 18, QRect = 19, QRectF = 20, QSize = 21, QSizeF = 22,
QLine = 23, QLineF = 24, QPoint = 25, QPointF = 26, QRegExp = 27, QLine = 23, QLineF = 24, QPoint = 25, QPointF = 26, QRegExp = 27,
QEasingCurve = 29, QUuid = 30, QVariant = 41, QModelIndex = 42, QEasingCurve = 29, QUuid = 30, QVariant = 41, QModelIndex = 42,
QRegularExpression = 44, QRegularExpression = 44,
QJsonValue = 45, QJsonObject = 46, QJsonArray = 47, QJsonDocument = 48, QJsonValue = 45, QJsonObject = 46, QJsonArray = 47, QJsonDocument = 48,
QObjectStar = 39, SChar = 40, QObjectStar = 39, SChar = 40,
Void = 43, Void = 43,
QVariantMap = 8, QVariantList = 9, QVariantHash = 28, QVariantMap = 8, QVariantList = 9, QVariantHash = 28,
QFont = 64, QPixmap = 65, QBrush = 66, QColor = 67, QPalette = 68, QFont = 64, QPixmap = 65, QBrush = 66, QColor = 67, QPalette = 68,
QIcon = 69, QImage = 70, QPolygon = 71, QRegion = 72, QBitmap = 73, QIcon = 69, QImage = 70, QPolygon = 71, QRegion = 72, QBitmap = 73,
QCursor = 74, QKeySequence = 75, QPen = 76, QTextLength = 77, QTextFormat = 78, QCursor = 74, QKeySequence = 75, QPen = 76, QTextLength = 77, QTextFormat = 78,
QMatrix = 79, QTransform = 80, QMatrix4x4 = 81, QVector2D = 82, QMatrix = 79, QTransform = 80, QMatrix4x4 = 81, QVector2D = 82,
QVector3D = 83, QVector4D = 84, QQuaternion = 85, QPolygonF = 86, QVector3D = 83, QVector4D = 84, QQuaternion = 85, QPolygonF = 86,
QSizePolicy = 121, QSizePolicy = 121,
User = 1024 User = 1024
}; };
*/ */
public enum QMetaType public enum QMetaType
{ {
Unknown = 0, Unknown = 0,
Bool = 1, Bool = 1,
Int = 2, Int = 2,
String = 10, String = 10,
VoidStr = 31, VoidStr = 31,
QObject = 39, QObject = 39,
QVariant = 41, QVariant = 41,
Void = 43 Void = 43
} }
public QMetaType GetMetaType(T)() public QMetaType GetMetaType(T)()
if (is (T == int) if (is (T == int)
|| is (T == bool) || is (T == bool)
|| is (T == string) || is (T == string)
|| is (T == void) || is (T == void)
|| is (T == QObject) || is (T == QObject)
|| is (T == QVariant) || is (T == QVariant)
|| is (T == void*)) || is (T == void*))
{ {
static if (is (T == bool)) static if (is (T == bool))
return QMetaType.Bool; return QMetaType.Bool;
else if (is (T == int)) else if (is (T == int))
return QMetaType.Int; return QMetaType.Int;
else if (is( T == void)) else if (is( T == void))
return QMetaType.Void; return QMetaType.Void;
else if (is (T == string)) else if (is (T == string))
return QMetaType.String; return QMetaType.String;
else if (is (T == QObject)) else if (is (T == QObject))
return QMetaType.QObject; return QMetaType.QObject;
else if (is (T == QVariant)) else if (is (T == QVariant))
return QMetaType.QVariant; return QMetaType.QVariant;
else if (is (T == void*)) else if (is (T == void*))
return QMetaType.VoidStar; return QMetaType.VoidStar;
else else
return QMetaType.Unknown; return QMetaType.Unknown;
} }

View File

@ -11,101 +11,101 @@ import qvariant;
public class QObject public class QObject
{ {
this() this()
{ {
dos_qobject_create(this.data, cast (void*) this, &staticSlotCallback); 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();
} }
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;
} }

View File

@ -4,27 +4,27 @@ import std.string;
class QQmlApplicationEngine class QQmlApplicationEngine
{ {
public this() public this()
{ {
dos_qqmlapplicationengine_create(data); dos_qqmlapplicationengine_create(data);
} }
public ~this() public ~this()
{ {
dos_qqmlapplicationengine_delete(data); dos_qqmlapplicationengine_delete(data);
} }
public QQmlContext rootContext() public QQmlContext rootContext()
{ {
void* contextData; void* contextData;
dos_qqmlapplicationengine_context(data, contextData); dos_qqmlapplicationengine_context(data, contextData);
return new QQmlContext(contextData); return new QQmlContext(contextData);
} }
public void load(string filename) public void load(string filename)
{ {
dos_qqmlapplicationengine_load(data, filename.toStringz()); dos_qqmlapplicationengine_load(data, filename.toStringz());
} }
private void* data; private void* data;
} }

View File

@ -1,31 +1,32 @@
import dothersideinterface; import dothersideinterface;
import qvariant; import qvariant;
import chararray; import std.string;
class QQmlContext class QQmlContext
{ {
public this(void* data) public this(void* data)
{ {
this.data = data; this.data = data;
} }
public void* rawData() public void* rawData()
{ {
return data; return data;
} }
public string baseUrl() public string baseUrl()
{ {
auto array = new CharArray(); char* array;
scope(exit) destroy(array); dos_qqmlcontext_baseUrl(data, array);
dos_qqmlcontext_baseUrl(data, array.dataRef(), array.sizeRef()); string result = fromStringz(array).dup;
return array.toString(); dos_chararray_delete(array);
} return result;
}
public void setContextProperty(string name, QVariant value) public void setContextProperty(string name, QVariant value)
{ {
dos_qqmlcontext_setcontextproperty(data, name.ptr, value.rawData()); dos_qqmlcontext_setcontextproperty(data, name.ptr, value.rawData());
} }
private void* data; private void* data;
} }

View File

@ -1,45 +1,45 @@
import dothersideinterface; import dothersideinterface;
import qqmlcontext; import qqmlcontext;
import chararray;
import std.string; import std.string;
class QQuickView class QQuickView
{ {
this() this()
{ {
dos_qquickview_create(data); dos_qquickview_create(data);
} }
~this() ~this()
{ {
dos_qquickview_delete(data); dos_qquickview_delete(data);
} }
void show() void show()
{ {
dos_qquickview_show(data); dos_qquickview_show(data);
} }
QQmlContext rootContext() QQmlContext rootContext()
{ {
void* contextData; void* contextData;
dos_qquickview_rootContext(data, contextData); dos_qquickview_rootContext(data, contextData);
return new QQmlContext(contextData); return new QQmlContext(contextData);
} }
string source() string source()
{ {
auto array = new CharArray(); char* array;
scope(exit) destroy(array); dos_qquickview_source(data, array);
dos_qquickview_source(data, array.dataRef(), array.sizeRef()); string result = fromStringz(array).dup;
return array.toString(); dos_chararray_delete(array);
} return result;
}
void setSource(string filename) void setSource(string filename)
{ {
immutable(char)* filenameAsCString = filename.toStringz(); immutable(char)* filenameAsCString = filename.toStringz();
dos_qquickview_set_source(data, filenameAsCString); dos_qquickview_set_source(data, filenameAsCString);
} }
private void* data; private void* data;
} }

View File

@ -1,160 +1,160 @@
import dothersideinterface; import dothersideinterface;
import qobject; import qobject;
import std.string; import std.string;
import chararray;
class QVariant class QVariant
{ {
public this() public this()
{ {
dos_qvariant_create(this.data); dos_qvariant_create(this.data);
} }
public this(int value) public this(int value)
{ {
dos_qvariant_create_int(this.data, value); dos_qvariant_create_int(this.data, value);
} }
public this(bool value) public this(bool value)
{ {
dos_qvariant_create_bool(this.data, value); dos_qvariant_create_bool(this.data, value);
} }
public this(string value) public this(string value)
{ {
dos_qvariant_create_string(this.data, value.toStringz()); dos_qvariant_create_string(this.data, value.toStringz());
} }
public this(float value) public this(float value)
{ {
dos_qvariant_create_float(this.data, value); dos_qvariant_create_float(this.data, value);
} }
public this(double value) public this(double value)
{ {
dos_qvariant_create_double(this.data, value); dos_qvariant_create_double(this.data, value);
} }
public this(QObject value) public this(QObject value)
{ {
dos_qvariant_create_qobject(this.data, value.rawData()); dos_qvariant_create_qobject(this.data, value.rawData());
} }
public this(void* data, bool hasOwnership = false) public this(void* data, bool hasOwnership = false)
{ {
this.data = data; this.data = data;
this.hasOwnership = hasOwnership; this.hasOwnership = hasOwnership;
} }
~this() ~this()
{ {
if (this.hasOwnership) if (this.hasOwnership)
dos_qvariant_delete(this.data); dos_qvariant_delete(this.data);
} }
public void* rawData() public void* rawData()
{ {
return data; return data;
} }
public void setValue(int value) public void setValue(int value)
{ {
dos_qvariant_setInt(this.data, value); dos_qvariant_setInt(this.data, value);
} }
public void setValue(bool value) public void setValue(bool value)
{ {
dos_qvariant_setBool(this.data, value); dos_qvariant_setBool(this.data, value);
} }
public void setValue(string value) public void setValue(string value)
{ {
dos_qvariant_setString(this.data, value.toStringz()); dos_qvariant_setString(this.data, value.toStringz());
} }
public void setValue(QObject value) public void setValue(QObject value)
{ {
dos_qvariant_setQObject(this.data, value.rawData()); dos_qvariant_setQObject(this.data, value.rawData());
} }
public void setValue(float value) public void setValue(float value)
{ {
dos_qvariant_setFloat(this.data, value); dos_qvariant_setFloat(this.data, value);
} }
public void setValue(double value) public void setValue(double value)
{ {
dos_qvariant_setDouble(this.data, value); dos_qvariant_setDouble(this.data, value);
} }
public void getValue(ref int value) public void getValue(ref int value)
{ {
value = toInt(); value = toInt();
} }
public void getValue(ref bool value) public void getValue(ref bool value)
{ {
value = toBool(); value = toBool();
} }
public void getValue(ref string value) public void getValue(ref string value)
{ {
value = toString(); value = toString();
} }
public void getValue(ref float value) public void getValue(ref float value)
{ {
value = toFloat(); value = toFloat();
} }
public void getValue(ref double value) public void getValue(ref double value)
{ {
value = toDouble(); value = toDouble();
} }
public bool isNull() public bool isNull()
{ {
bool result; bool result;
dos_qvariant_isnull(this.data, result); dos_qvariant_isnull(this.data, result);
return result; return result;
} }
public bool toBool() public bool toBool()
{ {
bool result; bool result;
dos_qvariant_toBool(this.data, result); dos_qvariant_toBool(this.data, result);
return result; return result;
} }
public int toInt() public int toInt()
{ {
int result; int result;
dos_qvariant_toInt(this.data, result); dos_qvariant_toInt(this.data, result);
return result; return result;
} }
public float toFloat() public float toFloat()
{ {
float result; float result;
dos_qvariant_toFloat(this.data, result); dos_qvariant_toFloat(this.data, result);
return result; return result;
} }
public double toDouble() public double toDouble()
{ {
double result; double result;
dos_qvariant_toDouble(this.data, result); dos_qvariant_toDouble(this.data, result);
return result; return result;
} }
public override string toString() public override string toString()
{ {
auto result = new CharArray(); char* array;
scope(exit) destroy(result); dos_qvariant_toString(this.data, array);
dos_qvariant_toString(this.data, result.dataRef(), result.sizeRef()); string result = fromStringz(array).dup;
return result.toString(); dos_chararray_delete(array);
} return result;
}
private void* data = null; private void* data = null;
private bool hasOwnership = true; private bool hasOwnership = true;
} }

View File

@ -16,11 +16,10 @@
#include "BaseQAbstractListModel.h" #include "BaseQAbstractListModel.h"
#include "BaseQObject.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(); QByteArray array = source.toUtf8();
*destination = qstrdup(array.data()); *destination = qstrdup(array.data());
*length = qstrlen(array.data());
} }
void dos_qguiapplication_create() void dos_qguiapplication_create()
@ -110,11 +109,11 @@ void dos_qquickview_delete(void* vptr)
delete view; delete view;
} }
void dos_qquickview_source(void* vptr, char** result, int* length) void dos_qquickview_source(void* vptr, char** result)
{ {
QQuickView* view = reinterpret_cast<QQuickView*>(vptr); QQuickView* view = reinterpret_cast<QQuickView*>(vptr);
QUrl url = view->source(); 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) 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(); *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) void dos_chararray_delete(char* ptr)
{ {
if (ptr) delete[] 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<QQmlContext*>(vptr); QQmlContext* context = reinterpret_cast<QQmlContext*>(vptr);
QUrl url = context->baseUrl(); 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) 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(); *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<QVariant*>(vptr); auto variant = reinterpret_cast<QVariant*>(vptr);
convert_to_cstring(variant->toString(), ptr, size); convert_to_cstring(variant->toString(), ptr);
} }
void dos_qvariant_setInt(void* vptr, int value) void dos_qvariant_setInt(void* vptr, int value)

View File

@ -39,17 +39,16 @@ DOS_API void dos_qqmlapplicationengine_delete(void* vptr);
// QQuickView // QQuickView
DOS_API void dos_qquickview_create(void** vptr); DOS_API void dos_qquickview_create(void** vptr);
DOS_API void dos_qquickview_show(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_set_source(void* vptr, const char* filename);
DOS_API void dos_qquickview_delete(void* vptr); 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 // 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); DOS_API void dos_qqmlcontext_setcontextproperty(void* vptr, const char* name, void* value);
// CharArray // CharArray
DOS_API void dos_chararray_create(char** ptr, int size);
DOS_API void dos_chararray_delete(char* ptr); DOS_API void dos_chararray_delete(char* ptr);
// QVariant // 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_float(void** vptr, float value);
DOS_API void dos_qvariant_create_double(void** vptr, double 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_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_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_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_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_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_setString(void* vptr, const char* value);
DOS_API void dos_qvariant_setQObject(void* vptr, void* 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_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_delete(void* vptr);
DOS_API void dos_qvariant_assign(void* vptr, void* other); 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, DOS_API void dos_qobject_create(void** vptr,
void* dObjectPointer, void* dObjectPointer,
DObjectCallback dObjectCallback); DObjectCallback dObjectCallback);
DOS_API void dos_qobject_slot_create(void* vptr, DOS_API void dos_qobject_slot_create(void* vptr,
const char* name, const char* name,
int parametersCount, int parametersCount,
int* parametersMetaTypes, int* parametersMetaTypes,
int* slotIndex); int* slotIndex);
DOS_API void dos_qobject_signal_create(void* vptr, DOS_API void dos_qobject_signal_create(void* vptr,
const char* name, const char* name,
int parametersCount, int parametersCount,
int* parametersMetaTypes, int* parametersMetaTypes,
int* signalIndex); int* signalIndex);
DOS_API void dos_qobject_signal_emit(void* vptr, DOS_API void dos_qobject_signal_emit(void* vptr,
const char* name, const char* name,
int parametersCount, int parametersCount,
void** parameters); void** parameters);
DOS_API void dos_qobject_property_create(void* vptr, DOS_API void dos_qobject_property_create(void* vptr,
const char* name, const char* name,
int propertyMetaType, int propertyMetaType,
@ -136,24 +131,13 @@ DOS_API void dos_qabstractlistmodel_create(void** vptr,
RoleNamesCallback roleNamesCallback, RoleNamesCallback roleNamesCallback,
FlagsCallback flagsCallback, FlagsCallback flagsCallback,
HeaderDataCallback headerDataCallback); HeaderDataCallback headerDataCallback);
DOS_API void dos_qabstractlistmodel_beginInsertRows(void* vptr, DOS_API void dos_qabstractlistmodel_beginInsertRows(void* vptr, void* parent, int first, int last);
QModelIndexVoidPtr parentIndex,
int first,
int last);
DOS_API void dos_qabstractlistmodel_endInsertRows(void* vptr); DOS_API void dos_qabstractlistmodel_endInsertRows(void* vptr);
DOS_API void dos_qabstractlistmodel_beginRemoveRows(void* vptr, DOS_API void dos_qabstractlistmodel_beginRemoveRows(void* vptr, void* parent, int first, int last);
QModelIndexVoidPtr parentIndex,
int first,
int last);
DOS_API void dos_qabstractlistmodel_endRemoveRows(void* vptr); DOS_API void dos_qabstractlistmodel_endRemoveRows(void* vptr);
DOS_API void dos_qabstractlistmodel_beginResetModel(void* vptr); DOS_API void dos_qabstractlistmodel_beginResetModel(void* vptr);
DOS_API void dos_qabstractlistmodel_endResetModel(void* vptr); DOS_API void dos_qabstractlistmodel_endResetModel(void* vptr);
DOS_API void dos_qabstractlistmodel_dataChanged(void* vptr, DOS_API void dos_qabstractlistmodel_dataChanged(void* vptr, void* topLeft, void* bottomRight, int* rolesPtr, int rolesLength);
QModelIndexVoidPtr topLeftIndex,
QModelIndexVoidPtr bottomRightIndex,
int* rolesArrayPtr,
int rolesArrayLength);
DOS_API void dos_qabstractlistmodel_delete(void* vptr); DOS_API void dos_qabstractlistmodel_delete(void* vptr);
#ifdef __cplusplus #ifdef __cplusplus