Formatted source through nimpretty

This commit is contained in:
Filippo Cucchetto 2019-10-01 22:40:12 +02:00
parent 013d54c87e
commit 3c11dbd0ac
7 changed files with 52 additions and 51 deletions

View File

@ -79,18 +79,18 @@ type
DosQObjectCallBack = proc(nimobject: NimQObject, slotName: DosQVariant, numArguments: cint, arguments: ptr DosQVariantArray) {.cdecl.}
DosRowCountCallback = proc(nimmodel: NimQAbstractItemModel, rawIndex: DosQModelIndex, result: var cint) {.cdecl.}
DosColumnCountCallback = proc(nimmodel: NimQAbstractItemModel, rawIndex: DosQModelIndex, result: var cint) {.cdecl.}
DosDataCallback = proc(nimmodel: NimQAbstractItemModel, rawIndex: DosQModelIndex, role: cint, result: DosQVariant) {.cdecl.}
DosSetDataCallback = proc(nimmodel: NimQAbstractItemModel, rawIndex: DosQModelIndex, value: DosQVariant, role: cint, result: var bool) {.cdecl.}
DosRoleNamesCallback = proc(nimmodel: NimQAbstractItemModel, result: DosQHashIntByteArray) {.cdecl.}
DosFlagsCallback = proc(nimmodel: NimQAbstractItemModel, index: DosQModelIndex, result: var cint) {.cdecl.}
DosHeaderDataCallback = proc(nimmodel: NimQAbstractItemModel, section: cint, orientation: cint, role: cint, result: DosQVariant) {.cdecl.}
DosIndexCallback = proc(nimmodel: NimQAbstractItemModel, row: cint, column: cint, parent: DosQModelIndex, result: DosQModelIndex) {.cdecl.}
DosParentCallback = proc(nimmodel: NimQAbstractItemModel, child: DosQModelIndex, result: DosQModelIndex) {.cdecl.}
DosHasChildrenCallback = proc(nimmodel: NimQAbstractItemModel, parent: DosQModelIndex, result: var bool) {.cdecl.}
DosRowCountCallback = proc(nimmodel: NimQAbstractItemModel, rawIndex: DosQModelIndex, result: var cint) {.cdecl.}
DosColumnCountCallback = proc(nimmodel: NimQAbstractItemModel, rawIndex: DosQModelIndex, result: var cint) {.cdecl.}
DosDataCallback = proc(nimmodel: NimQAbstractItemModel, rawIndex: DosQModelIndex, role: cint, result: DosQVariant) {.cdecl.}
DosSetDataCallback = proc(nimmodel: NimQAbstractItemModel, rawIndex: DosQModelIndex, value: DosQVariant, role: cint, result: var bool) {.cdecl.}
DosRoleNamesCallback = proc(nimmodel: NimQAbstractItemModel, result: DosQHashIntByteArray) {.cdecl.}
DosFlagsCallback = proc(nimmodel: NimQAbstractItemModel, index: DosQModelIndex, result: var cint) {.cdecl.}
DosHeaderDataCallback = proc(nimmodel: NimQAbstractItemModel, section: cint, orientation: cint, role: cint, result: DosQVariant) {.cdecl.}
DosIndexCallback = proc(nimmodel: NimQAbstractItemModel, row: cint, column: cint, parent: DosQModelIndex, result: DosQModelIndex) {.cdecl.}
DosParentCallback = proc(nimmodel: NimQAbstractItemModel, child: DosQModelIndex, result: DosQModelIndex) {.cdecl.}
DosHasChildrenCallback = proc(nimmodel: NimQAbstractItemModel, parent: DosQModelIndex, result: var bool) {.cdecl.}
DosCanFetchMoreCallback = proc(nimmodel: NimQAbstractItemModel, parent: DosQModelIndex, result: var bool) {.cdecl.}
DosFetchMoreCallback = proc(nimmodel: NimQAbstractItemModel, parent: DosQModelIndex) {.cdecl.}
DosFetchMoreCallback = proc(nimmodel: NimQAbstractItemModel, parent: DosQModelIndex) {.cdecl.}
DosQAbstractItemModelCallbacks = object
rowCount: DosRowCountCallback
@ -168,7 +168,7 @@ proc dos_qvariant_setInt(variant: DosQVariant, value: cint) {.cdecl, dynlib: dyn
proc dos_qvariant_setBool(variant: DosQVariant, value: bool) {.cdecl, dynlib: dynLibName, importc.}
proc dos_qvariant_setString(variant: DosQVariant, value: cstring) {.cdecl, dynlib: dynLibName, importc.}
proc dos_qvariant_assign(leftValue: DosQVariant, rightValue: DosQVariant) {.cdecl, dynlib: dynLibName, importc.}
proc dos_qvariant_setFloat(variant: DosQVariant, value: float) {.cdecl, dynlib: dynLibName, importc.}
proc dos_qvariant_setFloat(variant: DosQVariant, value: float) {.cdecl, dynlib: dynLibName, importc.}
proc dos_qvariant_setDouble(variant: DosQVariant, value: cdouble) {.cdecl, dynlib: dynLibName, importc.}
proc dos_qvariant_setQObject(variant: DosQVariant, value: DosQObject) {.cdecl, dynlib: dynLibName, importc.}

View File

@ -8,8 +8,8 @@ import typetraits
type
FindQObjectTypeResult = tuple
typeIdent: NimNode
superTypeIdent: NimNode
typeIdent: NimNode
superTypeIdent: NimNode
ProcInfo = object
name: string
@ -74,8 +74,8 @@ proc display(info: PropertyInfo) {.compiletime.} =
proc toString(info: QObjectInfo): string {.compiletime.} =
## Convert a QObjectInfo to string
let slots = info.slots.map(proc (x: auto): auto = x.toString)
let signals = info.signals.map(proc(x:auto): auto = x.toString)
let properties = info.properties.map(proc(x:auto): auto = x.toString)
let signals = info.signals.map(proc(x: auto): auto = x.toString)
let properties = info.properties.map(proc(x: auto): auto = x.toString)
"QObjectInfo {\"$1\", \"$2\", [\"$3\"], [\"$4\"], [\"$5\"]}" % [info.name, info.superType, slots.join(", "), signals.join(", "), properties.join(", ")]
@ -169,7 +169,7 @@ proc extractQObjectTypeDef(head: NimNode): FindQObjectTypeResult {.compiletime.}
var name = def[0] # type Object = ... <---
let pragma = def[1] # type Object {.something.} = ... <---
let typeKind = def[2] # .. = ref/distinct/object ..
let typeKind = def[2] # .. = ref/distinct/object ..
if name.kind == nnkPostFix:
if name.len != 2: error("Expected two children in nnkPostFix node")
@ -243,22 +243,22 @@ proc extractPropertyInfo(node: NimNode): tuple[ok: bool, info: PropertyInfo] {.c
bracketExpr[0].kind != nnkIdent or
bracketExpr[1].kind != nnkIdent or
$(bracketExpr[0]) != "QtProperty":
return
return
let stmtList = node[2]
if stmtList.len >= 1:
if stmtList[0].kind != nnkAsgn or stmtList[0].len != 2 or
stmtList[0][0].kind != nnkIdent or
(stmtList[0][1].kind != nnkIdent and stmtList[0][1].kind != nnkAccQuoted):
(stmtList[0][1].kind != nnkIdent and stmtList[0][1].kind != nnkAccQuoted):
error("QtProperty parsing error")
if stmtList.len >= 2:
if stmtList[1].kind != nnkAsgn or stmtList[1].len != 2 or
stmtList[1][0].kind != nnkIdent or
(stmtList[1][1].kind != nnkIdent and stmtList[1][1].kind != nnkAccQuoted):
(stmtList[1][1].kind != nnkIdent and stmtList[1][1].kind != nnkAccQuoted):
error("QtProperty parsing error")
if stmtList.len >= 3:
if stmtList[2].kind != nnkAsgn or stmtList[2].len != 2 or
stmtList[2][0].kind != nnkIdent or
(stmtList[2][1].kind != nnkIdent and stmtList[2][1].kind != nnkAccQuoted):
(stmtList[2][1].kind != nnkIdent and stmtList[2][1].kind != nnkAccQuoted):
error("QtProperty parsing error")
result.info.name = $(node[1])
@ -315,7 +315,7 @@ proc isProperty(node: NimNode): bool {.compiletime.} =
bracketExpr[0].kind != nnkIdent or
bracketExpr[1].kind != nnkIdent or
$(bracketExpr[0]) != "QtProperty":
return false
return false
return true
proc extractQObjectInfo(node: NimNode): QObjectInfo {.compiletime.} =
@ -336,8 +336,8 @@ proc extractQObjectInfo(node: NimNode): QObjectInfo {.compiletime.} =
error("Slot $1 must have at least an argument" % info.name)
if info.parametersTypes[0] != $typeNode:
error("Slot $1 first arguments must be $2" % [info.name, $typeNode])
info.parametersTypes.delete(0,0)
info.parametersNames.delete(0,0)
info.parametersTypes.delete(0, 0)
info.parametersNames.delete(0, 0)
result.slots.add(info)
# Extract signal
if c.isSignal:
@ -346,12 +346,12 @@ proc extractQObjectInfo(node: NimNode): QObjectInfo {.compiletime.} =
error("Signal $1 must have at least an argument" % info.name)
if info.parametersTypes[0] != $typeNode:
error("Signal $1 first arguments must be $2" % [info.name, $typeNode])
info.parametersTypes.delete(0,0)
info.parametersNames.delete(0,0)
info.parametersTypes.delete(0, 0)
info.parametersNames.delete(0, 0)
result.signals.add(info)
# Extract properties infos and remove them
var toRemove: seq[NimNode]= @[]
var toRemove: seq[NimNode] = @[]
for c in node:
let (ok, info) = extractPropertyInfo(c)
if not ok: continue
@ -400,10 +400,10 @@ proc generateMetaObjectInitializer(info: QObjectInfo): NimNode {.compiletime.} =
let slots = generateMetaObjectSlotsDefinitions(info.slots)
let properties = generateMetaObjectPropertiesDefinitions(info.properties)
var lines = @[ "proc initializeMetaObjectInstance(): QMetaObject ="
, " var signals: seq[SignalDefinition] = @[]"
, " var slots: seq[SlotDefinition] = @[]"
, " var properties: seq[PropertyDefinition] = @[]"]
var lines = @["proc initializeMetaObjectInstance(): QMetaObject ="
, " var signals: seq[SignalDefinition] = @[]"
, " var slots: seq[SlotDefinition] = @[]"
, " var properties: seq[PropertyDefinition] = @[]"]
lines = lines.concat(signals.concat(slots.concat(properties)))
let newStmt = " newQMetaObject($2.staticMetaObject, \"$1\", signals, slots, properties)".format([info.name, info.superType])
lines = lines.concat(@[newStmt])
@ -413,10 +413,10 @@ proc generateMetaObjectInitializer(info: QObjectInfo): NimNode {.compiletime.} =
proc generateMetaObjectAccessors(info: QObjectInfo): NimNode {.compiletime.} =
## Generate the metaObject instance and accessors
let str = [ "let staticMetaObjectInstance: QMetaObject = initializeMetaObjectInstance()"
, "proc staticMetaObject*(c: type $1): QMetaObject = staticMetaObjectInstance"
, "proc staticMetaObject*(self: $1): QMetaObject = staticMetaObjectInstance"
, "method metaObject*(self: $1): QMetaObject = staticMetaObjectInstance"].join("\n")
let str = ["let staticMetaObjectInstance: QMetaObject = initializeMetaObjectInstance()"
, "proc staticMetaObject*(c: type $1): QMetaObject = staticMetaObjectInstance"
, "proc staticMetaObject*(self: $1): QMetaObject = staticMetaObjectInstance"
, "method metaObject*(self: $1): QMetaObject = staticMetaObjectInstance"].join("\n")
result = parseStmt(str % info.name)
@ -486,7 +486,7 @@ macro signal*(s: untyped): untyped =
let format = "$1.emit(\"$2\", [$3])"
let str = format % [info.parametersNames[0], info.name, parametersNames.join(", ")]
s[s.len - 1 ] = parseStmt(str)
s[s.len - 1] = parseStmt(str)
s

View File

@ -44,7 +44,7 @@ type
QResource* = ref object of RootObj ## \
# A QResource
QtItemFlag* {.pure, size: sizeof(cint).} = enum ## \
QtItemFlag*{.pure, size: sizeof(cint).} = enum ## \
## Item flags
##
## This enum mimic the Qt::itemFlag C++ enum
@ -58,14 +58,14 @@ type
IsTristate = 64.cint,
NeverHasChildren = 128.cint
QtOrientation* {.pure, size: sizeof(cint).} = enum ## \
QtOrientation*{.pure, size: sizeof(cint).} = enum ## \
## Define orientation
##
## This enum mimic the Qt::Orientation C++ enum
Horizontal = 1.cint,
Vertical = 2.cint
QMetaType* {.pure, size: sizeof(cint).} = enum ## \
QMetaType*{.pure, size: sizeof(cint).} = enum ## \
## Qt metatypes values used for specifing the
## signals and slots argument and return types.
##
@ -78,7 +78,7 @@ type
Float = 38.cint,
QObjectStar = 39.cint,
QVariant = 41.cint,
Void = 43.cint,
Void = 43.cint
ParameterDefinition* = object
name*: string
@ -109,14 +109,14 @@ type
QUrl* = ref object of RootObj
vptr: DosQUrl
QUrlParsingMode* {.pure, size: sizeof(cint).} = enum
QUrlParsingMode*{.pure, size: sizeof(cint).} = enum
Tolerant = 0.cint
Strict = 1.cint
Ownership {.pure.} = enum ## \
## Specify the ownership of a pointer
Take, # The ownership is passed to the wrapper
Clone # The node should be cloned
Take, # The ownership is passed to the wrapper
Clone # The node should be cloned
const
UserRole* = 0x100
UserRole* = 0x100

View File

@ -51,14 +51,14 @@ method setData*(self: QAbstractItemModel, index: QModelIndex, value: QVariant, r
## Sets the data at the given index and role. Return true on success, false otherwise
false
proc setDataCallback(modelPtr: pointer, rawIndex: DosQModelIndex, rawQVariant: DosQVariant, role: cint, result: var bool) {.cdecl, exportc.} =
proc setDataCallback(modelPtr: pointer, rawIndex: DosQModelIndex, rawQVariant: DosQVariant, role: cint, result: var bool) {.cdecl, exportc.} =
debugMsg("QAbstractItemModel", "setDataCallback")
let model = cast[QAbstractItemModel](modelPtr)
let index = newQModelIndex(rawIndex, Ownership.Clone)
let variant = newQVariant(rawQVariant, Ownership.Clone)
result = model.setData(index, variant, role.int)
method roleNames*(self: QAbstractItemModel): Table[int,string] {.base.} =
method roleNames*(self: QAbstractItemModel): Table[int, string] {.base.} =
## Return the model role names
nil
@ -138,6 +138,7 @@ proc fetchMoreCallback(modelPtr: pointer, parent: DosQModelIndex) {.cdecl, expor
method onSlotCalled*(self: QAbstractItemModel, slotName: string, arguments: openarray[QVariant]) =
## Called from the dotherside library when a slot is called from Qml.
discard
proc setup*(self: QAbstractItemModel) =
## Setup a new QAbstractItemModel

View File

@ -1,6 +1,6 @@
import tables
var ctorTable = initTable[cint, proc():QObject]()
var ctorTable = initTable[cint, proc(): QObject]()
proc creator(id: cint, wrapper: DosQObjectWrapper, nimQObject: var NimQObject, dosQObject: var DosQObject) {.cdecl.} =
let qobject: QObject = ctorTable[id]()

View File

@ -2,7 +2,7 @@ proc setup*(self: QQmlApplicationEngine) =
## Setup a QQmlApplicationEngine
self.vptr = dos_qqmlapplicationengine_create()
proc loadData*(self:QQmlApplicationEngine, data: string) =
proc loadData*(self: QQmlApplicationEngine, data: string) =
## Load the given data
dos_qqmlapplicationengine_load_data(self.vptr, data.cstring)

View File

@ -54,17 +54,17 @@ proc newQVariant*(value: int): QVariant =
new(result, delete)
result.setup(value)
proc newQVariant*(value: bool): QVariant =
proc newQVariant*(value: bool): QVariant =
## Return a new QVariant given a bool
new(result, delete)
result.setup(value)
proc newQVariant*(value: string): QVariant =
proc newQVariant*(value: string): QVariant =
## Return a new QVariant given a string
new(result, delete)
result.setup(value)
proc newQVariant*(value: QObject): QVariant =
proc newQVariant*(value: QObject): QVariant =
## Return a new QVariant given a QObject
new(result, delete)
result.setup(value)