view qt/core/QString.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 5173835bb372
line wrap: on
line source

module qt.core.QString;

import qt.QGlobal;

version (Tango)
{
    public import tango.text.convert.Utf : toUTF8 = toString;
}
else
{
    public import std.utf : toUTF8;
}

struct QString
{
    public static QString opCall(void* ptr, bool proxy) {
        QString str;
        str.native_id = ptr;
        return str;
    }
    
    private void* native_id;
    
    public static final string toNativeString(void* qstring) {
        wchar* arr = __qtd_QString_utf16(qstring);
        int size = __qtd_QString_size(qstring);
        return .toUTF8(arr[0..size]);
    }
    
    public final string toNativeString() {
        return toNativeString(native_id);
    }
    
    public void assign(string text) {
        __qtd_QString_operatorAssign(native_id, text);
    }
    
    public static string fromUtf8(string source) {
        return source;
    }
/*    
    public static string fromUtf16(wstring src) {
        version(Tango)
    }*/
}

private extern (C) wchar* __qtd_QString_utf16(void* __this_nativeId);
private extern (C) int __qtd_QString_size(void* __this_nativeId);
private extern (C) void __qtd_QString_operatorAssign(void* __this_nativeId, string text);