More lowlevel things

This commit is contained in:
Daniel Ziltener 2020-10-04 02:22:39 +02:00
parent c15a7e69ea
commit 58ad9193cf
2 changed files with 61 additions and 2 deletions

View File

@ -275,13 +275,19 @@
(dos_qmetaobject_invoke_method (ptr qmo) callback data (val connection-type)))
(define-method (delete-pointer (qmo <QMetaObject>))
(dos_qmetaobject_delete (ptr qmo)))
(define (qmetaobject kind)
(case kind
((qobject:) (make <QMetaObject> 'ptr (dos_qobject_qmetaobject)))
((qabstractitemmodel:) (make <QMetaObject> 'ptr (dos_qabstractitemmodel_qmetaobject)))
((qabstracttablemodel:) (make <QMetaObject> 'ptr (dos_qabstracttablemodel_qmetaobject)))
((qabstractlistmodel:) (make <QMetaObject> 'ptr (dos_qabstractlistmodel_qmetaobject)))))
(define-class <QModelIndex> (<QMLBase>))
(define-method (initialize-instance (qmi <QModelIndex>))
(set! (ptr qmi) (dos_qmodelindex_create))
(call-next-method))
(define-method (copy (qmi <QModelIndex>) (other <QModelIndex>))
(make <QModelIndex> 'ptr (dos_qmodelindex_create_qmodelindex (ptr qmi) (ptr other))))
(define-method (copy (qmi <QModelIndex>))
(make <QModelIndex> 'ptr (dos_qmodelindex_create_qmodelindex (ptr qmi))))
(define-method (row (qmi <QModelIndex>))
(dos_qmodelindex_row (ptr qmi)))
(define-method (column (qmi <QModelIndex>))

View File

@ -123,6 +123,36 @@
(define DosQtConnectionTypeUniqueConnection #x80)
;; Functions
;; ParameterDefinition
(define dos_parameterdefinition_create
(foreign-lambda* scheme-object ((c-string name)
(int metaType))
"struct ParameterDefinition pd = {.name = name, .metaType = metaType};"
"C_word* ptr = C_alloc(1);"
"C_return(C_structure(&ptr,C_SIZEOF_STRUCTURE(3),pd));"))
;; SignalDefinition
(define dos_signaldefinition_create
(foreign-lambda* scheme-object ((c-string name)
(int parametersCount)
(pointer-vector parameters))
"struct SignalDefinition sd = {.name = name, .parametersCount = parametersCount, "
".parameters = (ParameterDefinition*) parameters};"
"C_word* ptr = C_alloc(1);"
"C_return(C_structure(&ptr,C_SIZEOF_STRUCTURE(4),sd));"))
;; SignalDefinitions
(define dos_signaldefinitions_create
(foreign-lambda* (c-pointer SignalDefinitions) ((int count)
(pointer-vector definitions))
"struct SignalDefinitions sd = {.count = count, .definitions = (SignalDefinition*) definitions};"
"struct SignalDefinitions* sdptr = (struct SignalDefinitions*) malloc(sizeof(struct SignalDefinitions));"
"*sdptr = sd;"
"C_return(sdptr);"))
(define dos_signaldefinitions_delete
(foreign-lambda* void (((c-pointer SignalDefinitions) definitions))
"free(definitions);"))
;; QCoreApplication
(define dos_qcoreapplication_application_dir_path
(foreign-lambda c-string "dos_qcoreapplication_application_dir_path"))
@ -284,6 +314,14 @@
"dos_chararray_delete(ptr);"))
;; QVariant
(define dos_qvariantarray_create
(foreign-lambda* (c-pointer DosQVariantArray) ((int size)
(pointer-vector data))
"struct DosQVariantArray qva = "
"{.size = size, .data = data};"
"struct DosQVariantArray* qvaptr = (struct DosQVariantArray*) malloc(sizeof(struct DosQVariantArray));"
"*qvaptr = qva;"
"C_return(qvaptr);"))
(define dos_qvariantarray_delete
(foreign-lambda* void (((c-pointer DosQVariantArray) ptr))
"dos_qvariantarray_delete(ptr);"))
@ -708,6 +746,21 @@
(foreign-lambda bool "dos_qurl_isValid"
(c-pointer DosQUrl)))
;; QmlRegisterType
(define dos_qmlregistertype_create
(foreign-lambda* (c-pointer QmlRegisterType) ((int major)
(int minor)
(c-string uri)
(c-string qml)
((c-pointer DosQMetaObject) staticMetaObject)
(CreateDObject createDObject)
(DeleteDObject deleteDObject))
"struct QmlRegisterType qrt = {.major = major, .minor = minor, .uri = uri, .qml = qml,"
".staticMetaObject = staticMetaObject, .createDObject = createDObject, .deleteDObject = deleteDObject};"
"struct QmlRegisterType* qrtptr = (struct QmlRegisterType*) malloc(sizeof(struct QmlRegisterType));"
"*qrtptr = qrt;"
"C_return(qrtptr);"))
;; QDeclarative
(define dos_qdeclarative_qmlregistertype
(foreign-lambda int "dos_qdeclarative_qmlregistertype"