diff --git a/qml.core.scm b/qml.core.scm index 5c9425e..33435ed 100644 --- a/qml.core.scm +++ b/qml.core.scm @@ -275,13 +275,19 @@ (dos_qmetaobject_invoke_method (ptr qmo) callback data (val connection-type))) (define-method (delete-pointer (qmo )) (dos_qmetaobject_delete (ptr qmo))) + (define (qmetaobject kind) + (case kind + ((qobject:) (make 'ptr (dos_qobject_qmetaobject))) + ((qabstractitemmodel:) (make 'ptr (dos_qabstractitemmodel_qmetaobject))) + ((qabstracttablemodel:) (make 'ptr (dos_qabstracttablemodel_qmetaobject))) + ((qabstractlistmodel:) (make 'ptr (dos_qabstractlistmodel_qmetaobject))))) (define-class ()) (define-method (initialize-instance (qmi )) (set! (ptr qmi) (dos_qmodelindex_create)) (call-next-method)) - (define-method (copy (qmi ) (other )) - (make 'ptr (dos_qmodelindex_create_qmodelindex (ptr qmi) (ptr other)))) + (define-method (copy (qmi )) + (make 'ptr (dos_qmodelindex_create_qmodelindex (ptr qmi)))) (define-method (row (qmi )) (dos_qmodelindex_row (ptr qmi))) (define-method (column (qmi )) diff --git a/qml.lowlevel.scm b/qml.lowlevel.scm index e7a010f..ccb3927 100644 --- a/qml.lowlevel.scm +++ b/qml.lowlevel.scm @@ -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"