diff qt/d2/qt/core/QVariant.d @ 248:7664de4a55e5

Fixed #23. QtD_QObjectEntity is not created dynamically for shell classes any more. Class initialization is now performed by static constructors. When wrapping QObjects returned from functions, their run-time types are now taken into account. QObjects are allocated on GC heap, a doubly-linked list is used to prevent them from been collected (arguably a better solution than allocating on C heap and adding GC ranges) Minor changes (including unnecessary).
author maxter
date Thu, 20 Aug 2009 14:47:17 +0000
parents 7dd099050621
children 37eed70de029
line wrap: on
line diff
--- a/qt/d2/qt/core/QVariant.d	Fri Jul 31 11:05:22 2009 +0000
+++ b/qt/d2/qt/core/QVariant.d	Thu Aug 20 14:47:17 2009 +0000
@@ -1,7 +1,7 @@
 module qt.core.QVariant;
 
 public import qt.QGlobal;
-private import qt.QtDObject;
+private import qt.QtdObject;
 private import qt.core.QMetaType;
 
 // automatic imports-------------
@@ -27,7 +27,7 @@
 import std.string;
 
 
-public class QVariant : QtDObject
+public class QVariant : QtdObject
 {
     enum Type {
         Invalid = 0,
@@ -87,7 +87,7 @@
 
         LastType = 0xffffffff // need this so that gcc >= 3.4 allocates 32 bits for Type
     }
-    
+
 // Functions
 
     private template getMetaId()
@@ -97,7 +97,7 @@
 	    if(i <= 0)
 		i = qRegisterMetaType!(T)(name);";
     }
-	
+
     static public QVariant fromValue(T)(T obj)
     {
 	QVariant var;
@@ -125,7 +125,7 @@
 	}
 	return var;
     }
-    
+
     static public QVariant opCall(T)(T obj)
     {
 	return fromValue(obj);
@@ -138,7 +138,7 @@
 
 
     public this(QDataStream s) {
-        void* __qt_return_value = qtd_QVariant_QVariant_QDataStream(s is null ? null : s.nativeId);
+        void* __qt_return_value = qtd_QVariant_QVariant_QDataStream(s is null ? null : s.__nativeId);
         super(__qt_return_value);
     }
 
@@ -156,25 +156,25 @@
 
 
     public this(QBitArray bitarray) {
-        void* __qt_return_value = qtd_QVariant_QVariant_QBitArray(bitarray is null ? null : bitarray.nativeId);
+        void* __qt_return_value = qtd_QVariant_QVariant_QBitArray(bitarray is null ? null : bitarray.__nativeId);
         super(__qt_return_value);
     }
 
 
     public this(QByteArray bytearray) {
-        void* __qt_return_value = qtd_QVariant_QVariant_QByteArray(bytearray is null ? null : bytearray.nativeId);
+        void* __qt_return_value = qtd_QVariant_QVariant_QByteArray(bytearray is null ? null : bytearray.__nativeId);
         super(__qt_return_value);
     }
 
 
     public this(QDate date) {
-        void* __qt_return_value = qtd_QVariant_QVariant_QDate(date is null ? null : date.nativeId);
+        void* __qt_return_value = qtd_QVariant_QVariant_QDate(date is null ? null : date.__nativeId);
         super(__qt_return_value);
     }
 
 
     public this(QDateTime datetime) {
-        void* __qt_return_value = qtd_QVariant_QVariant_QDateTime(datetime is null ? null : datetime.nativeId);
+        void* __qt_return_value = qtd_QVariant_QVariant_QDateTime(datetime is null ? null : datetime.__nativeId);
         super(__qt_return_value);
     }
 
@@ -198,7 +198,7 @@
 
 
     public this(QLocale locale) {
-        void* __qt_return_value = qtd_QVariant_QVariant_QLocale(locale is null ? null : locale.nativeId);
+        void* __qt_return_value = qtd_QVariant_QVariant_QLocale(locale is null ? null : locale.__nativeId);
         super(__qt_return_value);
     }
 
@@ -228,7 +228,7 @@
 
 
     public this(QRegExp regExp) {
-        void* __qt_return_value = qtd_QVariant_QVariant_QRegExp(regExp is null ? null : regExp.nativeId);
+        void* __qt_return_value = qtd_QVariant_QVariant_QRegExp(regExp is null ? null : regExp.__nativeId);
         super(__qt_return_value);
     }
 
@@ -246,19 +246,19 @@
 
 
     public this(QTime time) {
-        void* __qt_return_value = qtd_QVariant_QVariant_QTime(time is null ? null : time.nativeId);
+        void* __qt_return_value = qtd_QVariant_QVariant_QTime(time is null ? null : time.__nativeId);
         super(__qt_return_value);
     }
 
 
     public this(QUrl url) {
-        void* __qt_return_value = qtd_QVariant_QVariant_QUrl(url is null ? null : url.nativeId);
+        void* __qt_return_value = qtd_QVariant_QVariant_QUrl(url is null ? null : url.__nativeId);
         super(__qt_return_value);
     }
 
 
     public this(QVariant other) {
-        void* __qt_return_value = qtd_QVariant_QVariant_QVariant(other is null ? null : other.nativeId);
+        void* __qt_return_value = qtd_QVariant_QVariant_QVariant(other is null ? null : other.__nativeId);
         super(__qt_return_value);
     }
 
@@ -308,7 +308,7 @@
     {
 	int i = qtd_MetatypeId(toStringz(name));
 	assert(i > 0);
-	return qtd_QVariant_canConvert(nativeId, i);
+	return qtd_QVariant_canConvert(__nativeId, i);
     }
 
     public final bool canConvert(Type)() {
@@ -353,58 +353,58 @@
 	else  static if ( is(Type == QTime) )
 	    return canConvertImpl("QTime");
 	else static if ( is(Type == uint) )
-	    return canConvertImpl("unsigned int"); // TODO: 
+	    return canConvertImpl("unsigned int"); // TODO:
 	else static if ( is(Type == ulong) )
-	    return canConvertImpl("unsigned long long"); // TODO: 
+	    return canConvertImpl("unsigned long long"); // TODO:
 	else static if ( is(Type == QUrl) )
 	    return canConvertImpl("QUrl");
 	else
 	{
 	    static if( is( Type == class ) || is( Type == interface ) )
 	    {
-		Object object = cast(Object)qtd_QVariant_data(nativeId);
+		Object object = cast(Object)qtd_QVariant_data(__nativeId);
 		if(object)
 		    return cast(Type)(object) !is null;
 		return false;
 	    }
 	    else static if (isDynamicArrayType!(Type) || isStaticArrayType!(Type) )
 	    {
-		auto array = cast(DArrayToC*)qtd_QVariant_data(nativeId);
+		auto array = cast(DArrayToC*)qtd_QVariant_data(__nativeId);
 		return cast(Type)(array.array) !is null;
 	    }
 	    else
 	    {
 		int i = qtd_MetatypeId(toStringz(typeid(Type).toString));
-		return qtd_QVariant_canConvert(nativeId, i);
+		return qtd_QVariant_canConvert(__nativeId, i);
 	    }
 	}
     }
 
     public final Type value(Type)() {
 	static if ( is(Type == QBitArray) )
-	    return toBitArra; 
+	    return toBitArra;
 	else static if ( is(Type == bool) )
-	    return toBool; 
+	    return toBool;
 	else static if ( is(Type == QByteArray) )
-	    return toByteArray; 
+	    return toByteArray;
 	else static if ( is(Type == QDate) )
-	    return toDate; 
+	    return toDate;
 	else static if ( is(Type == QDateTime) )
-	    return toDateTime; 
+	    return toDateTime;
 	else static if ( is(Type == double) )
-	    return toDouble; 
+	    return toDouble;
 	else static if ( is(Type == int) )
-	    return toInt; 
+	    return toInt;
 	else static if ( is(Type == QLine) )
-	    return toLine; 
+	    return toLine;
 	else static if ( is(Type == QLineF) )
-	    return toLineF; 
+	    return toLineF;
 	else static if ( is(Type == QLocale) )
-	    return toLocale; 
+	    return toLocale;
 	else static if ( is(Type == long) )
-	    return toLongLong; 
+	    return toLongLong;
 	else static if ( is(Type == QPoint) )
-	    return toPoint; 
+	    return toPoint;
 	else static if ( is(Type == QPointF) )
 	    return toPointF;
 	else static if ( is(Type == QRect) )
@@ -429,194 +429,188 @@
 	    return toUrl;
 	else static if( is( Type == class ) || is( Type == interface ) )
 	{
-	    Object object = cast(Object)qtd_QVariant_data(nativeId);
+	    Object object = cast(Object)qtd_QVariant_data(__nativeId);
 	    if(object)
 		return cast(Type)(object);
 	    return null;
 	}
 	else static if (isDynamicArrayType!(Type) || isStaticArrayType!(Type) )
 	{
-	    auto array = cast(DArrayToC*)qtd_QVariant_data(nativeId);
+	    auto array = cast(DArrayToC*)qtd_QVariant_data(__nativeId);
 	    return cast(Type)(array.array);
 	}
 	else
 	{
-	    return *cast(Type*)qtd_QVariant_data(nativeId);
+	    return *cast(Type*)qtd_QVariant_data(__nativeId);
 	}
     }
 
     public final void clear() {
-        qtd_QVariant_clear(nativeId);
+        qtd_QVariant_clear(__nativeId);
     }
 
     protected final bool cmp(QVariant other) {
-        return qtd_QVariant_cmp_QVariant(nativeId, other is null ? null : other.nativeId);
+        return qtd_QVariant_cmp_QVariant(__nativeId, other is null ? null : other.__nativeId);
     }
 
     protected final void create(int type, void* copy) {
-        qtd_QVariant_create_int_nativepointervoid(nativeId, type, copy);
+        qtd_QVariant_create_int_nativepointervoid(__nativeId, type, copy);
     }
 
     public final bool isNull() {
-        return qtd_QVariant_isNull(nativeId);
+        return qtd_QVariant_isNull(__nativeId);
     }
 
     public final bool isValid() {
-        return qtd_QVariant_isValid(nativeId);
+        return qtd_QVariant_isValid(__nativeId);
     }
 
     public final void load(QDataStream ds) {
-        qtd_QVariant_load_QDataStream(nativeId, ds is null ? null : ds.nativeId);
+        qtd_QVariant_load_QDataStream(__nativeId, ds is null ? null : ds.__nativeId);
     }
 
     public final void writeTo(QDataStream s) {
-        qtd_QVariant_writeTo_QDataStream(nativeId, s is null ? null : s.nativeId);
+        qtd_QVariant_writeTo_QDataStream(__nativeId, s is null ? null : s.__nativeId);
     }
 
     public final QVariant operator_assign(QVariant other) {
-        void* __qt_return_value = qtd_QVariant_operator_assign_QVariant(nativeId, other is null ? null : other.nativeId);
-        return new QVariant(__qt_return_value, true);
+        void* __qt_return_value = qtd_QVariant_operator_assign_QVariant(__nativeId, other is null ? null : other.__nativeId);
+        return new QVariant(__qt_return_value, QtdObjectFlags.nativeOwnership);
     }
 
     private final bool operator_equal(QVariant v) {
-        return qtd_QVariant_operator_equal_QVariant(nativeId, v is null ? null : v.nativeId);
+        return qtd_QVariant_operator_equal_QVariant(__nativeId, v is null ? null : v.__nativeId);
     }
 
     public final void readFrom(QDataStream s) {
-        qtd_QVariant_readFrom_QDataStream(nativeId, s is null ? null : s.nativeId);
+        qtd_QVariant_readFrom_QDataStream(__nativeId, s is null ? null : s.__nativeId);
     }
 
     public final void save(QDataStream ds) {
-        qtd_QVariant_save_QDataStream(nativeId, ds is null ? null : ds.nativeId);
+        qtd_QVariant_save_QDataStream(__nativeId, ds is null ? null : ds.__nativeId);
     }
 
     public final QBitArray toBitArray() {
-        void* __qt_return_value = qtd_QVariant_toBitArray(nativeId);
-        return new QBitArray(__qt_return_value, false);
+        void* __qt_return_value = qtd_QVariant_toBitArray(__nativeId);
+        return new QBitArray(__qt_return_value);
     }
 
     public final bool toBool() {
-        return qtd_QVariant_toBool(nativeId);
+        return qtd_QVariant_toBool(__nativeId);
     }
 
     public final QByteArray toByteArray() {
-        void* __qt_return_value = qtd_QVariant_toByteArray(nativeId);
-        return new QByteArray(__qt_return_value, false);
+        void* __qt_return_value = qtd_QVariant_toByteArray(__nativeId);
+        return new QByteArray(__qt_return_value);
     }
 
     public final QDate toDate() {
-        void* __qt_return_value = qtd_QVariant_toDate(nativeId);
-        return new QDate(__qt_return_value, false);
+        void* __qt_return_value = qtd_QVariant_toDate(__nativeId);
+        return new QDate(__qt_return_value);
     }
 
     public final QDateTime toDateTime() {
-        void* __qt_return_value = qtd_QVariant_toDateTime(nativeId);
-        return new QDateTime(__qt_return_value, false);
+        void* __qt_return_value = qtd_QVariant_toDateTime(__nativeId);
+        return new QDateTime(__qt_return_value);
     }
 
     public final double toDouble(bool* ok = null) {
-        return qtd_QVariant_toDouble_nativepointerbool(nativeId, ok);
+        return qtd_QVariant_toDouble_nativepointerbool(__nativeId, ok);
     }
 
     public final int toInt(bool* ok = null) {
-        return qtd_QVariant_toInt_nativepointerbool(nativeId, ok);
+        return qtd_QVariant_toInt_nativepointerbool(__nativeId, ok);
     }
 
     public final QLine toLine() {
-        return qtd_QVariant_toLine(nativeId);
+        return qtd_QVariant_toLine(__nativeId);
     }
 
     public final QLineF toLineF() {
-        return qtd_QVariant_toLineF(nativeId);
+        return qtd_QVariant_toLineF(__nativeId);
     }
 
     public final QLocale toLocale() {
-        void* __qt_return_value = qtd_QVariant_toLocale(nativeId);
-        return new QLocale(__qt_return_value, false);
+        void* __qt_return_value = qtd_QVariant_toLocale(__nativeId);
+        return new QLocale(__qt_return_value);
     }
 
     public final long toLongLong(bool* ok = null) {
-        return qtd_QVariant_toLongLong_nativepointerbool(nativeId, ok);
+        return qtd_QVariant_toLongLong_nativepointerbool(__nativeId, ok);
     }
 
     public final QPoint toPoint() {
-        return qtd_QVariant_toPoint(nativeId);
+        return qtd_QVariant_toPoint(__nativeId);
     }
 
     public final QPointF toPointF() {
-        return qtd_QVariant_toPointF(nativeId);
+        return qtd_QVariant_toPointF(__nativeId);
     }
 
     public final QRect toRect() {
-        return qtd_QVariant_toRect(nativeId);
+        return qtd_QVariant_toRect(__nativeId);
     }
 
     public final QRectF toRectF() {
-        return qtd_QVariant_toRectF(nativeId);
+        return qtd_QVariant_toRectF(__nativeId);
     }
 
     public final QRegExp toRegExp() {
-        void* __qt_return_value = qtd_QVariant_toRegExp(nativeId);
-        return new QRegExp(__qt_return_value, false);
+        void* __qt_return_value = qtd_QVariant_toRegExp(__nativeId);
+        return new QRegExp(__qt_return_value);
     }
 
     public final QSize toSize() {
-        return qtd_QVariant_toSize(nativeId);
+        return qtd_QVariant_toSize(__nativeId);
     }
 
     public final QSizeF toSizeF() {
-        return qtd_QVariant_toSizeF(nativeId);
+        return qtd_QVariant_toSizeF(__nativeId);
     }
 
     public final string toString() {
         string res;
-        qtd_QVariant_toString(nativeId, &res);
+        qtd_QVariant_toString(__nativeId, &res);
         return res;
     }
 
     public final QTime toTime() {
-        void* __qt_return_value = qtd_QVariant_toTime(nativeId);
-        return new QTime(__qt_return_value, false);
+        void* __qt_return_value = qtd_QVariant_toTime(__nativeId);
+        return new QTime(__qt_return_value);
     }
 
     public final uint toUInt(bool* ok = null) {
-        return qtd_QVariant_toUInt_nativepointerbool(nativeId, ok);
+        return qtd_QVariant_toUInt_nativepointerbool(__nativeId, ok);
     }
 
     public final ulong toULongLong(bool* ok = null) {
-        return qtd_QVariant_toULongLong_nativepointerbool(nativeId, ok);
+        return qtd_QVariant_toULongLong_nativepointerbool(__nativeId, ok);
     }
 
     public final QUrl toUrl() {
-        void* __qt_return_value = qtd_QVariant_toUrl(nativeId);
-        return new QUrl(__qt_return_value, false);
+        void* __qt_return_value = qtd_QVariant_toUrl(__nativeId);
+        return new QUrl(__qt_return_value);
     }
 
     public final char* typeName() {
-        return qtd_QVariant_typeName(nativeId);
+        return qtd_QVariant_typeName(__nativeId);
     }
-    
+
     public final Type type() {
-        return cast(Type)qtd_QVariant_type(nativeId);
+        return cast(Type)qtd_QVariant_type(__nativeId);
     }
 
     public final int userType() {
-        return qtd_QVariant_userType(nativeId);
+        return qtd_QVariant_userType(__nativeId);
     }
 // Field accessors
 
-    public this(void* native_id, bool no_real_delete = false) {
-        super(native_id, no_real_delete);
+    public this(void* native_id, QtdObjectFlags flags = QtdObjectFlags.none) {
+        super(native_id, flags);
     }
 
-
-    ~this() {
-        if(!__no_real_delete)
-            __free_native_resources();
-    }
-
-    protected void __free_native_resources() {
-        qtd_QVariant_destructor(nativeId());
+    protected override void __deleteNative() {
+        qtd_QVariant_destructor(__nativeId);
     }
 
 // Injected code in class