Mercurial > projects > qtd
diff d2/qt/QObjectDefs.d @ 311:8674fd5f34f4 lifetime
Added d1/d2 top directories
author | maxter <spambox@d-coding.com> |
---|---|
date | Wed, 23 Dec 2009 16:17:22 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/d2/qt/QObjectDefs.d Wed Dec 23 16:17:22 2009 +0200 @@ -0,0 +1,262 @@ +module qt.QObjectDefs; + +//import qt.core.QGlobal; +//import qt.core.Qt; +import QGlobal; + +const byte Q_MOC_OUTPUT_REVISION = 59; + +template QT_TR_FUNCTIONS_NOUTF8() +{ + static QString tr(char[] s, char[] c = null) + { return staticMetaObject.tr(s, c); } + static QString tr(char[] s, char[] c, int n) + { return staticMetaObject.tr(s, c, n); } +} + +template QT_TR_FUNCTIONS_UTF8() +{ + static QString trUtf8(char[] s, char[] c = null) + { return staticMetaObject.trUtf8(s, c); } + static QString trUtf8(char[] s, char[] c, int n) + { return staticMetaObject.trUtf8(s, c, n); } +} + +template QT_TR_FUNCTIONS() +{ + mixin QT_TR_FUNCTIONS_NOUTF8; + mixin QT_TR_FUNCTIONS_UTF8; +} + +template Q_OBJECT_CHECK() +{ + void qt_check_for_QOBJECT_macro(T)(T _q_argument) const + { int i = qYouForgotTheQ_OBJECT_Macro(this, _q_argument); i = i; } +} + +int qYouForgotTheQ_OBJECT_Macro(T)(T, T) { return 0; } + +void qYouForgotTheQ_OBJECT_Macro(T1,T2)(T1, T2) {} + +template Q_OBJECT() +{ + public mixin Q_OBJECT_CHECK; + public static const QMetaObject staticMetaObject; + public const QMetaObject *metaObject() const{} + public void *qt_metacast(const char *){} + public mixin QT_TR_FUNCTIONS; + public int qt_metacall(QMetaObject.Call, int, void **){} +} + +template Q_OBJECT_FAKE() +{ + mixin Q_OBJECT; +} + +template Q_GADGET() +{ + public static const QMetaObject staticMetaObject; +} + +char[] METHOD( char[] a ) { return "0"~a; } +char[] SLOT( char[] a ) { return "1"~a; } +char[] SIGNAL( char[] a ) { return "2"~a; } + +version(QT3_SUPPORT) { + const byte METHOD_CODE = 0; // member type codes + const byte SLOT_CODE = 1; + const byte SIGNAL_CODE = 2; +} + +const byte QMETHOD_CODE = 0; // member type codes +const byte QSLOT_CODE = 1; +const byte QSIGNAL_CODE = 2; + +QArgument!(T) Q_ARG(T)(char [] type, T data) + { return QArgument!(T)(type, data); } + +QReturnArgument!(T) Q_RETURN_ARG(T)(char [] type, T data) + { return QReturnArgument!(T)(type, data); } + +class QGenericArgument +{ +public: + this(char[] aName = null, const void *aData = null) + { _data = aData; _name = aName; } + void *data() const { return cast(void *)(_data); } + char[] name() { return _name; } + +private: + const void *_data; + char[] _name; +}; + +class QGenericReturnArgument : QGenericArgument +{ +}; + +class QArgument(T) : QGenericArgument +{ +public: + this(char[] aName, T aData) + { this(aName, cast(void *)aData); } +}; + +class QReturnArgument(T) : QGenericReturnArgument +{ +public: + this(char[] aName, T aData) + { this(aName, cast(void *)aData); } +}; + +//TODO(katrina) enable this when all the classes it uses are available +/*struct QMetaObject +{ + char[] className() const; + const QMetaObject *superClass() const; + + //TODO(katrina) enable QObject cast(QObject obj) const; + + // ### Qt 4: Merge overloads + QString tr(const char *s, const char *c) const; + QString trUtf8(const char *s, const char *c) const; + QString tr(const char *s, const char *c, int n) const; + QString trUtf8(const char *s, const char *c, int n) const; + + int methodOffset() const; + int enumeratorOffset() const; + int propertyOffset() const; + int classInfoOffset() const; + + int methodCount() const; + int enumeratorCount() const; + int propertyCount() const; + int classInfoCount() const; + + int indexOfMethod(const char *method) const; + int indexOfSignal(const char *signal) const; + int indexOfSlot(const char *slot) const; + int indexOfEnumerator(const char *name) const; + int indexOfProperty(const char *name) const; + int indexOfClassInfo(const char *name) const; + + QMetaMethod method(int index) const; + QMetaEnum enumerator(int index) const; + QMetaProperty property(int index) const; + QMetaClassInfo classInfo(int index) const; + QMetaProperty userProperty() const; + + static bool checkConnectArgs(const char *signal, const char *method); + static QByteArray normalizedSignature(const char *method); + static QByteArray normalizedType(const char *type); + + // internal index-based connect + static bool connect(const QObject *sender, int signal_index, + const QObject *receiver, int method_index, + int type = 0, int *types = 0); + // internal index-based disconnect + static bool disconnect(const QObject *sender, int signal_index, + const QObject *receiver, int method_index); + // internal slot-name based connect + static void connectSlotsByName(QObject *o); + + // internal index-based signal activation + static void activate(QObject *sender, int signal_index, void **argv); + static void activate(QObject *sender, int from_signal_index, int to_signal_index, void **argv); + static void activate(QObject *sender, const QMetaObject *, int local_signal_index, void **argv); + static void activate(QObject *sender, const QMetaObject *, int from_local_signal_index, int to_local_signal_index, void **argv); + // internal guarded pointers + static void addGuard(QObject **ptr); + static void removeGuard(QObject **ptr); + static void changeGuard(QObject **ptr, QObject *o); + + static bool invokeMethod(QObject *obj, const char *member, + qt.core.Qt.ConnectionType, + QGenericReturnArgument ret, + QGenericArgument val0 = QGenericArgument(0), + QGenericArgument val1 = QGenericArgument(), + QGenericArgument val2 = QGenericArgument(), + QGenericArgument val3 = QGenericArgument(), + QGenericArgument val4 = QGenericArgument(), + QGenericArgument val5 = QGenericArgument(), + QGenericArgument val6 = QGenericArgument(), + QGenericArgument val7 = QGenericArgument(), + QGenericArgument val8 = QGenericArgument(), + QGenericArgument val9 = QGenericArgument()); + + static bool invokeMethod(QObject *obj, const char *member, + QGenericReturnArgument ret, + QGenericArgument val0 = QGenericArgument(0), + QGenericArgument val1 = QGenericArgument(), + QGenericArgument val2 = QGenericArgument(), + QGenericArgument val3 = QGenericArgument(), + QGenericArgument val4 = QGenericArgument(), + QGenericArgument val5 = QGenericArgument(), + QGenericArgument val6 = QGenericArgument(), + QGenericArgument val7 = QGenericArgument(), + QGenericArgument val8 = QGenericArgument(), + QGenericArgument val9 = QGenericArgument()) + { + return invokeMethod(obj, member, qt.core.Qt.AutoConnection, ret, val0, val1, val2, val3, + val4, val5, val6, val7, val8, val9); + } + + static bool invokeMethod(QObject *obj, const char *member, + qt.core.Qt.ConnectionType type, + QGenericArgument val0 = QGenericArgument(0), + QGenericArgument val1 = QGenericArgument(), + QGenericArgument val2 = QGenericArgument(), + QGenericArgument val3 = QGenericArgument(), + QGenericArgument val4 = QGenericArgument(), + QGenericArgument val5 = QGenericArgument(), + QGenericArgument val6 = QGenericArgument(), + QGenericArgument val7 = QGenericArgument(), + QGenericArgument val8 = QGenericArgument(), + QGenericArgument val9 = QGenericArgument()) + { + return invokeMethod(obj, member, type, QGenericReturnArgument(), val0, val1, val2, + val3, val4, val5, val6, val7, val8, val9); + } + + + static bool invokeMethod(QObject *obj, const char *member, + QGenericArgument val0 = QGenericArgument(0), + QGenericArgument val1 = QGenericArgument(), + QGenericArgument val2 = QGenericArgument(), + QGenericArgument val3 = QGenericArgument(), + QGenericArgument val4 = QGenericArgument(), + QGenericArgument val5 = QGenericArgument(), + QGenericArgument val6 = QGenericArgument(), + QGenericArgument val7 = QGenericArgument(), + QGenericArgument val8 = QGenericArgument(), + QGenericArgument val9 = QGenericArgument()) + { + return invokeMethod(obj, member, qt.core.Qt.AutoConnection, QGenericReturnArgument(), val0, + val1, val2, val3, val4, val5, val6, val7, val8, val9); + } + + enum Call { + InvokeMetaMethod, + ReadProperty, + WriteProperty, + ResetProperty, + QueryPropertyDesignable, + QueryPropertyScriptable, + QueryPropertyStored, + QueryPropertyEditable, + QueryPropertyUser + }; + +version(QT3_SUPPORT) { + const char *superClassName() const; +} + + struct d_struct{ // private data + const QMetaObject *superdata; + const char *stringdata; + const uint *data; + const QMetaObject **extradata; + }; + d_struct d; +}; +*/