Started working on QMetaObject bindings

This commit is contained in:
Filippo Cucchetto 2016-02-04 23:45:10 +01:00
parent 62c3b32cbb
commit 6f112c9fab
3 changed files with 96 additions and 13 deletions

View File

@ -11,16 +11,18 @@ template debugMsg(typeName: string, procName: string) =
message &= procName message &= procName
debugMsg(message) debugMsg(message)
include private.nimqmltypes include private/qmetaobject.nim
var qobjectRegistry = initTable[ptr QObjectObj, bool]()
include private/qvariant.nim #include private.nimqmltypes
include private/qqmlapplicationengine.nim #var qobjectRegistry = initTable[ptr QObjectObj, bool]()
include private/qqmlcontext.nim #include private/qvariant.nim
include private/qapplication.nim #include private/qqmlapplicationengine.nim
include private/qguiapplication.nim #include private/qqmlcontext.nim
include private/qobject.nim #include private/qapplication.nim
include private/qquickview.nim #include private/qguiapplication.nim
include private/qmodelindex.nim #include private/qobject.nim
include private/qhashintbytearray.nim #include private/qquickview.nim
include private/qabstractlistmodel.nim #include private/qmodelindex.nim
include private.nimqmlmacros #include private/qhashintbytearray.nim
#include private/qabstractlistmodel.nim
#include private.nimqmlmacros

View File

@ -0,0 +1,41 @@
type
CArray* {.unchecked.}[T] = array[0..0, T]
DosSignalDefinition* = object
name*: cstring
parametersCount*: cint
parametersMetaTypes*: pointer
DosSignalDefinitions* = object
count*: cint
definitions*: pointer
DosSlotDefinition* = object
name*: cstring
returnMetaType*: cint
paremetersCount*: cint
parametersMetaTypes*: pointer
DosSlotDefinitions* = object
count*: cint
definitions*: pointer
DosPropertyDefinition* = object
name*: cstring
propertyMetaType*: cint
readSlot*: cstring
writeSlot*: cstring
notifySignal*: cstring
DosPropertyDefinitions* = object
count*: cint
definitions*: pointer
proc dos_qmetaobject_create*(vptr: var pointer,
superclassMetaObject: pointer,
className: cstring,
signalDefinitions: DosSignalDefinitions,
slotDefinitions: DosSlotDefinitions,
propertyDefinitions: DosPropertyDefinitions) {.cdecl, importc.}
proc dos_qmetaobject_delete*(vptr: var pointer) {.cdecl, importc.}

View File

@ -0,0 +1,40 @@
import dotherside
type
QMetaType = int
SignalDefinition* = object
name: string
parametersTypes: seq[QMetaType]
SlotDefinition* = object
name: string
returnType: QMetaType
parametersTypes: seq[QMetaType]
PropertyDefinition* = object
name: string
propertyType: QMetaType
readSlot: string
writeSlot: string
notifySignal: string
QMetaObject = ref object of RootObj
vptr: pointer
signalDefinitions: seq[SignalDefinition]
slotDefinitions: seq[SlotDefinition]
propertyDefinitions: seq[PropertyDefinition]
proc convert(signals: seq[SignalDefinition]): seq[DosSignalDefinition] =
discard()
proc newQMetaObject(superClass: QMetaObject, className: string,
signalDefinitions: seq[SignalDefinition],
slotDefinitions: seq[SlotDefinition],
propertyDefinitions: seq[PropertyDefinition]): QMetaObject =
new(result)
result.signalDefinitions = signalDefinitions
result.slotDefinitions = slotDefinitions
result.propertyDefinitions = propertyDefinitions