Basic class refcounter that will probably break

This commit is contained in:
Daniel Ziltener 2020-09-28 00:11:40 +02:00
parent 9d861f666a
commit c15a7e69ea
3 changed files with 188 additions and 123 deletions

View File

@ -1,48 +1,82 @@
;; -*- geiser-scheme: chicken -*-
(module (qml core) (module (qml core)
* *
(import (scheme base)) (import (scheme base))
(import (chicken gc)) (import (chicken gc))
(import (chicken string)) (import (chicken string))
(import (chicken base))
(import (chicken condition))
(import (qml lowlevel)) (import (qml lowlevel))
(import coops coops-primitive-objects coops-extras) (import coops coops-primitive-objects coops-extras srfi-1 srfi-69)
;; Enums ;; Enums
(define-class <Enum> () (define-class <Enum> ()
((value accessor: value))) ((val accessor: val)))
(define-class <QEventLoopProcessEventFlag> (<Enum>)) (define-class <QEventLoopProcessEventFlag> (<Enum>))
(define (qevent-loop-process-event-flag value) (define (qevent-loop-process-event-flag val)
(case value (case val
((process-all-events:) ((process-all-events:)
(make <QEventLoopProcessEventFlag> 'value DosQEventLoopProcessEventFlagProcessAllEvents)) (make <QEventLoopProcessEventFlag> 'val DosQEventLoopProcessEventFlagProcessAllEvents))
((exclude-user-input-events:) ((exclude-user-input-events:)
(make <QEventLoopProcessEventFlag> 'value DosQEventLoopProcessEventFlagExcludeUserInputEvents)) (make <QEventLoopProcessEventFlag> 'val DosQEventLoopProcessEventFlagExcludeUserInputEvents))
((process-exclude-socket-notifiers:) ((process-exclude-socket-notifiers:)
(make <QEventLoopProcessEventFlag> 'value DosQEventLoopProcessEventFlagProcessExcludeSocketNotifiers)) (make <QEventLoopProcessEventFlag> 'val DosQEventLoopProcessEventFlagProcessExcludeSocketNotifiers))
((process-all-events-wait-for-more-events:) ((process-all-events-wait-for-more-events:)
(make <QEventLoopProcessEventFlag> 'value DosQEventLoopProcessEventFlagProcessAllEventsWaitForMoreEvents)))) (make <QEventLoopProcessEventFlag> 'val DosQEventLoopProcessEventFlagProcessAllEventsWaitForMoreEvents))))
(define-class <QtConnectionType> (<Enum>)) (define-class <QtConnectionType> (<Enum>))
(define (qt-connection-type value) (define (qt-connection-type val)
(case value (case val
((auto:) ((auto:)
(make <QtConnectionType> 'value DosQtConnectionTypeAutoConnection)) (make <QtConnectionType> 'val DosQtConnectionTypeAutoConnection))
((direct:) ((direct:)
(make <QtConnectionType> 'value DosQtConnectionTypeDirectConnection)) (make <QtConnectionType> 'val DosQtConnectionTypeDirectConnection))
((queued:) ((queued:)
(make <QtConnectionType> 'value DosQtConnectionTypeQueuedConnection)) (make <QtConnectionType> 'val DosQtConnectionTypeQueuedConnection))
((blocking:) ((blocking:)
(make <QtConnectionType> 'value DosQtConnectionTypeBlockingConnection)) (make <QtConnectionType> 'val DosQtConnectionTypeBlockingConnection))
((unique:) ((unique:)
(make <QtConnectionType> 'value DosQtConnectionTypeUniqueConnection)))) (make <QtConnectionType> 'val DosQtConnectionTypeUniqueConnection))))
(define-class <QQuickViewResizeMode> (<Enum>))
(define (qquick-view-resize-mode val)
(case val
((size-view-to-root-object:) (make <QQuickViewResizeMode> 'val #x0))
((size-root-object-to-view:) (make <QQuickViewResizeMode> 'val #x1))))
(define-class <QItemDataRole> (<Enum>))
(define (qitem-data-role val)
(case val
((display:) (make <QItemDataRole> 'val 0))
((decoration:) (make <QItemDataRole> 'val 1))
((edit:) (make <QItemDataRole> 'val 2))
((tool-tip:) (make <QItemDataRole> 'val 3))
((status-tip:) (make <QItemDataRole> 'val 4))
((whats-this:) (make <QItemDataRole> 'val 5))
((font:) (make <QItemDataRole> 'val 6))
((text-alignment:) (make <QItemDataRole> 'val 7))
((background:) (make <QItemDataRole> 'val 8))
((foreground:) (make <QItemDataRole> 'val 9))
((check-state:) (make <QItemDataRole> 'val 10))
((accessible-text:) (make <QItemDataRole> 'val 11))
((accessible-description:) (make <QItemDataRole> 'val 12))
((size-hint:) (make <QItemDataRole> 'val 13))
((initial-sort-order:) (make <QItemDataRole> 'val 14))))
(define-class <QtOrientation> (<Enum>))
(define (qt-orientation val)
(case val
((horizontal:) (make <QtOrientation> 'val #x01))
((vertical:) (make <QtOrientation> 'val #x02))))
;; Helpers ;; Helpers
(define (application-dir-path) (define (application-dir-path)
(dos_qcoreapplication_application_dir_path)) (dos_qcoreapplication_application_dir_path))
(define-method (process-events (flag <QEventLoopProcessEventFlag>)) (define-method (process-events (flag <QEventLoopProcessEventFlag>))
(dos_qcoreapplication_process_events (value flag))) (dos_qcoreapplication_process_events (val flag)))
(define-method (process-events-timed (flag <QEventLoopProcessEventFlag>) (timed <integer>)) (define-method (process-events-timed (flag <QEventLoopProcessEventFlag>) (timed <integer>))
(dos_qcoreapplication_process_events_timed (value flag) timed)) (dos_qcoreapplication_process_events_timed (val flag) timed))
(define (gui-application-create) (define (gui-application-create)
(dos_qguiapplication_create)) (dos_qguiapplication_create))
@ -68,26 +102,96 @@
(dos_qquickstyle_set_fallback_style style)) (dos_qquickstyle_set_fallback_style style))
;; Objects ;; Objects
(define-class <QObject> () (define callback-registry
((ptr accessor: ptr))) (make-hash-table))
(define-method (refcount (alist <list>))
(cdr (find (lambda (a) (eq? refcount: (car a))) alist)))
(define-method (refcount (ht <hash-table>) (ptr <pointer>))
(if (hash-table-exists? callback-registry ptr)
(refcount (hash-table-ref ht ptr))
0))
(define-class <QMLBase> ()
((ptr accessor: ptr initform: #f)))
(define-method (delete-pointer (qbase <QMLBase>))
(abort (make-property-condition 'exn 'Message "Please implement the delete method for your subtype.")))
(define-method (add-ptrentry (qbase <QMLBase>))
(hash-table-update! callback-registry (ptr qbase)
(lambda (alist)
(alist-update refcount: (+ 1 (refcount alist)) alist))
(lambda ()
(alist-cons refcount: 1 '()))))
(define-method (remove-ptrentry (qbase <QMLBase>))
(if (eq? 1 (refcount callback-registry (ptr qbase)))
(hash-table-delete! callback-registry (ptr qbase))
(hash-table-update! callback-registry (ptr qbase)
(lambda (alist)
(alist-update refcount: (- (refcount alist) 1) alist)))))
(define-method (initialize-instance (qbase <QMLBase>))
(call-next-method)
(add-ptrentry qbase)
(set-finalizer! qbase (lambda (obj)
(remove-ptrentry qbase)
(when (= 0 (refcount callback-registry (ptr qbase)))
(delete-pointer qbase)))))
(define-class <QObject> (<QMLBase>))
(define-method (signal-emit (qo <QObject>) (name <string>) (paramcount <integer>) (parameters <sequence>)) (define-method (signal-emit (qo <QObject>) (name <string>) (paramcount <integer>) (parameters <sequence>))
(dos_qobject_signal_emit (ptr qo) name paramcount parameters)) (dos_qobject_signal_emit (ptr qo) name paramcount parameters))
(define-method (delete (qo <QObject>)) (define-method (delete-pointer (qo <QObject>))
(dos_qobject_delete (ptr qo))) (dos_qobject_delete (ptr qo)))
(define-method (delete-later (qo <QObject>)) (define-method (delete-pointer-later (qo <QObject>))
(dos_qobject_deleteLater (ptr qo))) (dos_qobject_deleteLater (ptr qo)))
(define-class <QVariant> () (define-class <QVariant> (<QMLBase>)
((ptr accessor: ptr))) ((ptr accessor: ptr)))
(define-method (initialize-instance (qv <QVariant>))
(set! (ptr qv) (dos_qvariant_create))
(call-next-method))
(define-method (qvariant (val <integer>))
(make <QVariant> 'ptr (dos_qvariant_create_int val)))
(define-method (qvariant (val <boolean>))
(make <QVariant> 'ptr (dos_qvariant_create_bool val)))
(define-method (qvariant (val <string>))
(make <QVariant> 'ptr (dos_qvariant_create_string val)))
(define-method (qvariant (val <QObject>))
(make <QVariant> 'ptr (dos_qvariant_create_qobject (ptr val))))
(define-method (qvariant (val <flonum>))
(make <QVariant> 'ptr (dos_qvariant_create_float val)))
(define-method (set (qv <QVariant>) (val <integer>))
(dos_qvariant_setInt (ptr qv) val))
(define-method (set (qv <QVariant>) (val <boolean>))
(dos_qvariant_setBool (ptr qv) val))
(define-method (set (qv <QVariant>) (val <flonum>))
(dos_qvariant_setFloat (ptr qv) val))
(define-method (set (qv <QVariant>) (val <string>))
(dos_qvariant_setString (ptr qv) val))
(define-method (set (qv <QVariant>) (val <QObject>))
(dos_qvariant_setQObject (ptr qv) (ptr val)))
(define-method (to (qv <QVariant>) (target <keyword>))
(case target
((integer:) (dos_qvariant_toInt (ptr qv)))
((boolean:) (dos_qvariant_toBool (ptr qv)))
((string:) (dos_qvariant_toString (ptr qv)))
((flonum:) (dos_qvariant_toFloat (ptr qv)))
((qobject:) (dos_qvariant_toQObject (ptr qv)))))
(define-method (is-null? (qv <QVariant>))
(dos_qvariant_isnull (ptr qv)))
(define-method (assign (qv <QVariant>) (other <QVariant>))
(dos_qvariant_assign (ptr qv) (ptr other)))
(define-method (copy (qv <QVariant>))
(make <QVariant> 'ptr (dos_qvariant_create_qvariant (ptr qv))))
(define-method (delete-pointer (qv <QVariant>))
(dos_qvariant_delete (ptr qv)))
(define-class <QQmlContext> (<QObject>)) (define-class <QQmlContext> (<QObject>))
(define-method (base-url (context <QQmlContext>)) (define-method (base-url (context <QQmlContext>))
(dos_qqmlcontext_baseUrl (ptr context))) (dos_qqmlcontext_baseUrl (ptr context)))
(define-method (set-property (context <QQmlContext>) (name <string>) (value <QVariant>)) (define-method (set-property (context <QQmlContext>) (name <string>) (qvalue <QVariant>))
(dos_qqmlcontext_setcontextproperty (ptr context) name (ptr value))) (dos_qqmlcontext_setcontextproperty (ptr context) name (ptr qvalue)))
(define-class <QUrl> () (define-class <QUrl> (<QMLBase>))
((ptr accessor: ptr)))
(define (new-QUrl url) (define (new-QUrl url)
(let ((qurl (make <QUrl> 'ptr (dos_qurl_create url 0)))) (let ((qurl (make <QUrl> 'ptr (dos_qurl_create url 0))))
qurl)) qurl))
@ -95,13 +199,13 @@
(dos_qurl_to_string (ptr qurl))) (dos_qurl_to_string (ptr qurl)))
(define-method (valid? (qurl <QUrl>)) (define-method (valid? (qurl <QUrl>))
(dos_qurl_isValid (ptr qurl))) (dos_qurl_isValid (ptr qurl)))
(define-method (delete (qurl <QUrl>)) (define-method (delete-pointer (qurl <QUrl>))
(dos_qurl_delete (ptr qurl))) (dos_qurl_delete (ptr qurl)))
(define-class <QPixmap> () (define-class <QPixmap> (<QMLBase>))
((ptr accessor: ptr))) (define-method (initialize-instance (qpx <QPixmap>))
(define (new-QPixmap) (set! (slot-value qpx 'ptr) (dos_qpixmap_create))
(make <QPixmap> 'ptr (dos_qpixmap_create))) (call-next-method))
(define (new-QPixmap width height) (define (new-QPixmap width height)
(make <QPixmap> 'ptr (dos_qpixmap_create_width_and_height width height))) (make <QPixmap> 'ptr (dos_qpixmap_create_width_and_height width height)))
(define-method (copy (qpix <QPixmap>)) (define-method (copy (qpix <QPixmap>))
@ -116,19 +220,19 @@
(dos_qpixmap_assign (ptr qpix) (ptr other))) (dos_qpixmap_assign (ptr qpix) (ptr other)))
(define-method (is-null? (qpix <QPixmap>)) (define-method (is-null? (qpix <QPixmap>))
(dos_qpixmap_isNull (ptr qpix))) (dos_qpixmap_isNull (ptr qpix)))
(define-method (delete (qpix <QPixmap>)) (define-method (delete-pointer (qpix <QPixmap>))
(dos_qpixmap_delete (ptr qpix))) (dos_qpixmap_delete (ptr qpix)))
(define-class <QQuickImageProvider> () (define-class <QQuickImageProvider> (<QMLBase>))
((ptr accessor: ptr)))
(define-method (new-QQuickImageProvider callback) (define-method (new-QQuickImageProvider callback)
(make <QQuickImageProvider> 'ptr (dos_qquickimageprovider_create callback))) (make <QQuickImageProvider> 'ptr (dos_qquickimageprovider_create callback)))
(define-method (delete (qip <QQuickImageProvider>)) (define-method (delete-pointer (qip <QQuickImageProvider>))
(dos_qquickimageprovider_delete (ptr qip))) (dos_qquickimageprovider_delete (ptr qip)))
(define-class <QQmlApplicationEngine> (<QObject>)) (define-class <QQmlApplicationEngine> (<QObject>))
(define (new-QQmlApplicationEngine) (define-method (initialize-instance (qae <QQmlApplicationEngine>))
(make <QQmlApplicationEngine> 'ptr (dos_qqmlapplicationengine_create))) (set! (slot-value qae 'ptr) (dos_qqmlapplicationengine_create))
(call-next-method))
(define-method (load (appengine <QQmlApplicationEngine>) (filePath <string>)) (define-method (load (appengine <QQmlApplicationEngine>) (filePath <string>))
(dos_qqmlapplicationengine_load (ptr appengine) filePath)) (dos_qqmlapplicationengine_load (ptr appengine) filePath))
(define-method (load-url (appengine <QQmlApplicationEngine>) (qurl <QUrl>)) (define-method (load-url (appengine <QQmlApplicationEngine>) (qurl <QUrl>))
@ -141,18 +245,13 @@
(make <QQmlContext> 'ptr (dos_qqmlapplicationengine_context (ptr appengine)))) (make <QQmlContext> 'ptr (dos_qqmlapplicationengine_context (ptr appengine))))
(define-method (add-image-provider (appengine <QQmlApplicationEngine>) (provider-id <string>) (provider <QQuickImageProvider>)) (define-method (add-image-provider (appengine <QQmlApplicationEngine>) (provider-id <string>) (provider <QQuickImageProvider>))
(dos_qqmlapplicationengine_addImageProvider (ptr appengine) provider-id (ptr provider))) (dos_qqmlapplicationengine_addImageProvider (ptr appengine) provider-id (ptr provider)))
(define-method (delete (appengine <QQmlApplicationEngine>)) (define-method (delete-pointer (appengine <QQmlApplicationEngine>))
(dos_qqmlapplicationengine_delete (ptr appengine))) (dos_qqmlapplicationengine_delete (ptr appengine)))
(define-class <QQuickViewResizeMode> (<Enum>))
(define (qquick-view-resize-mode value)
(case value
((size-view-to-root-object:) (make <QQuickViewResizeMode> 'value 0))
((size-root-object-to-view:) (make <QQuickViewResizeMode> 'value 1))))
(define-class <QQuickView> (<QObject>)) (define-class <QQuickView> (<QObject>))
(define (new-QQuickView) (define-method (initialize-instance (qqv <QQuickView>))
(make <QQuickView> 'ptr (dos_qquickview_create))) (set! (slot-value qqv 'ptr) (dos_qquickview_create))
(call-next-method))
(define-method (show (qqv <QQuickView>)) (define-method (show (qqv <QQuickView>))
(dos_qquickview_show (ptr qqv))) (dos_qquickview_show (ptr qqv)))
(define-method (source (qqv <QQuickView>)) (define-method (source (qqv <QQuickView>))
@ -162,90 +261,55 @@
(define-method (set-source (qqv <QQuickView>) (filename <string>)) (define-method (set-source (qqv <QQuickView>) (filename <string>))
(dos_qquickview_set_source (ptr qqv) filename)) (dos_qquickview_set_source (ptr qqv) filename))
(define-method (set-resize-mode (qqv <QQuickView>) (mode <QQuickViewResizeMode>)) (define-method (set-resize-mode (qqv <QQuickView>) (mode <QQuickViewResizeMode>))
(dos_qquickview_set_resize_mode (ptr qqv) (value mode))) (dos_qquickview_set_resize_mode (ptr qqv) (val mode)))
(define-method (root-context (qqv <QQuickView>)) (define-method (root-context (qqv <QQuickView>))
(make <QQmlContext> 'ptr (dos_qquickview_rootContext (ptr qqv)))) (make <QQmlContext> 'ptr (dos_qquickview_rootContext (ptr qqv))))
(define-method (delete (qqv <QQuickView>)) (define-method (delete-pointer (qqv <QQuickView>))
(dos_qquickview_delete (ptr qqv))) (dos_qquickview_delete (ptr qqv)))
(define-class <QVariant> () (define-class <QMetaObject> (<QMLBase>))
((ptr accessor: ptr))) (define (new-QMetaObject superclass classname signal-definitions slot-definitions property-definitions)
(define-method (initialize-instance (qv <QVariant>))
(call-next-method)
(set! (ptr qv) (dos_qvariant_create)))
(define-method (qvariant (value <integer>))
(make <QVariant> 'ptr (dos_qvariant_create_int value)))
(define-method (qvariant (value <boolean>))
(make <QVariant> 'ptr (dos_qvariant_create_bool value)))
(define-method (qvariant (value <string>))
(make <QVariant> 'ptr (dos_qvariant_create_string value)))
(define-method (qvariant (value <QObject>))
(make <QVariant> 'ptr (dos_qvariant_create_qobject (ptr value))))
(define-method (qvariant (value <flonum>))
(make <QVariant> 'ptr (dos_qvariant_create_float value)))
(define-method (set (qv <QVariant>) (value <integer>))
(dos_qvariant_setInt (ptr qv) value))
(define-method (set (qv <QVariant>) (value <boolean>))
(dos_qvariant_setBool (ptr qv) value))
(define-method (set (qv <QVariant>) (value <flonum>))
(dos_qvariant_setFloat (ptr qv) value))
(define-method (set (qv <QVariant>) (value <string>))
(dos_qvariant_setString (ptr qv) value))
(define-method (set (qv <QVariant>) (value <QObject>))
(dos_qvariant_setQObject (ptr qv) (ptr value)))
(define-method (to (qv <QVariant>) (target <keyword>))
(case target
((integer:) (dos_qvariant_toInt (ptr qv)))
((boolean:) (dos_qvariant_toBool (ptr qv)))
((string:) (dos_qvariant_toString (ptr qv)))
((flonum:) (dos_qvariant_toFloat (ptr qv)))
((qobject:) (dos_qvariant_toQObject (ptr qv)))))
(define-method (is-null? (qv <QVariant>))
(dos_qvariant_isnull (ptr qv)))
(define-method (assign (qv <QVariant>) (other <QVariant>))
(dos_qvariant_assign (ptr qv) (ptr other)))
(define-method (copy (qv <QVariant>))
(make <QVariant> 'ptr (dos_qvariant_create_qvariant (ptr qv))))
(define-method (delete (qv <QVariant>))
(dos_qvariant_delete (ptr qv)))
(define-class <QMetaObject> ()
((ptr accessor: ptr)))
(define (new-QMetaObject superclass, classname, signal-definitions, slot-definitions, property-definitions)
(make <QMetaObject> 'ptr (dos_qmetaobject_create (ptr superclass) classname signal-definitions (make <QMetaObject> 'ptr (dos_qmetaobject_create (ptr superclass) classname signal-definitions
slot-definitions property-definitions))) slot-definitions property-definitions)))
(define-method (invoke-method (qmo <QMetaObject>) (callback <procedure>) (data <pointer>) (connection-type <QtConnectionType>)) (define-method (invoke-method (qmo <QMetaObject>) (callback <procedure>) (data <pointer>) (connection-type <QtConnectionType>))
(dos_qmetaobject_invoke_method (ptr qmo) callback data (value connection-type))) (dos_qmetaobject_invoke_method (ptr qmo) callback data (val connection-type)))
(define-method (delete (qmo <QMetaObject>)) (define-method (delete-pointer (qmo <QMetaObject>))
(dos_qmetaobject_delete (ptr qmo))) (dos_qmetaobject_delete (ptr qmo)))
(define-class <QItemDataRole> (<Enum>)) (define-class <QModelIndex> (<QMLBase>))
(define (qitem-data-role value) (define-method (initialize-instance (qmi <QModelIndex>))
(case value (set! (ptr qmi) (dos_qmodelindex_create))
((display:) (make <QItemDataRole> 'value 0)) (call-next-method))
((decoration:) (make <QItemDataRole> 'value 1)) (define-method (copy (qmi <QModelIndex>) (other <QModelIndex>))
((edit:) (make <QItemDataRole> 'value 2)) (make <QModelIndex> 'ptr (dos_qmodelindex_create_qmodelindex (ptr qmi) (ptr other))))
((tool-tip:) (make <QItemDataRole> 'value 3)) (define-method (row (qmi <QModelIndex>))
((status-tip:) (make <QItemDataRole> 'value 4)) (dos_qmodelindex_row (ptr qmi)))
((whats-this:) (make <QItemDataRole> 'value 5)) (define-method (column (qmi <QModelIndex>))
((font:) (make <QItemDataRole> 'value 6)) (dos_qmodelindex_column (ptr qmi)))
((text-alignment:) (make <QItemDataRole> 'value 7)) (define-method (is-valid? (qmi <QModelIndex>))
((background:) (make <QItemDataRole> 'value 8)) (dos_qmodelindex_isValid (ptr qmi)))
((foreground:) (make <QItemDataRole> 'value 9)) (define-method (data (qmi <QModelIndex>) (role <QItemDataRole>))
((check-state:) (make <QItemDataRole> 'value 10)) (dos_qmodelindex_data (ptr qmi) (val role)))
((accessible-text:) (make <QItemDataRole> 'value 11)) (define-method (parent (qmi <QModelIndex>))
((accessible-description:) (make <QItemDataRole> 'value 12)) (make <QModelIndex> 'ptr (dos_qmodelindex_parent (ptr qmi))))
((size-hint:) (make <QItemDataRole> 'value 13)) (define-method (child (qmi <QModelIndex>) (row <integer>) (column <integer>))
((initial-sort-order:) (make <QItemDataRole> 'value 14)))) (make <QModelIndex> 'ptr (dos_qmodelindex_child (ptr qmi) row column)))
(define-method (sibling (qmi <QModelIndex>) (row <integer>) (column <integer>))
(make <QModelIndex> 'ptr (dos_qmodelindex_sibling (ptr qmi) row column)))
(define-method (assign (qmi <QModelIndex>) (other <QModelIndex>))
(dos_qmodelindex_assign (ptr qmi) (ptr other)))
(define-method (delete-pointer (qmi <QModelIndex>))
(dos_qmodelindex_delete (ptr qmi)))
(define-class <QAbstractItemModel> (<QObject>)) (define-class <QAbstractItemModel> (<QObject>))
(define (new-QAbstractItemModel callback meta-object dcallback callbacks) (define (new-QAbstractItemModel callback meta-object dcallback callbacks)
(dos_qabstractitemmodel_create callback (ptr meta-object) dcallback (ptr callbacks))) (dos_qabstractitemmodel_create callback (ptr meta-object) dcallback (ptr callbacks)))
(define-method (set-data (qaim <QAbstractItemModel>) (qmi <QModelIndex>) (qv <QVariant>) (role <QItemDataRole>)) (define-method (set-data (qaim <QAbstractItemModel>) (qmi <QModelIndex>) (qv <QVariant>) (role <QItemDataRole>))
(dos_qabstractitemmodel_setData (ptr qaim) (ptr qmi) (ptr qv) (value role))) (dos_qabstractitemmodel_setData (ptr qaim) (ptr qmi) (ptr qv) (val role)))
(define-method (flags (qaim <QAbstractItemModel>) (qmi <QModelIndex>)) (define-method (flags (qaim <QAbstractItemModel>) (qmi <QModelIndex>))
(dos_qabstractitemmodel_flags (ptr qaim) (ptr qmi))) (dos_qabstractitemmodel_flags (ptr qaim) (ptr qmi)))
(define-method (header-data)) (define-method (header-data (qaim <QAbstractItemModel>) (section <integer>) (orientation <QtOrientation>) (role <integer>))
(dos_qabstractitemmodel_headerData (ptr qaim) section (val orientation) role))
(define-class <QAbstractListModel> (<QObject>)) (define-class <QAbstractListModel> (<QObject>))
(define (new-QAbstractListModel callback qalm dcallback callbacks) (define (new-QAbstractListModel callback qalm dcallback callbacks)

View File

@ -3,7 +3,7 @@
(synopsis "A Chicken wrapper for DOtherSide") (synopsis "A Chicken wrapper for DOtherSide")
(category ui) (category ui)
(license "LGPLv3") (license "LGPLv3")
(dependencies coops coops-utils foreigners utf8) (dependencies coops coops-utils foreigners utf8 srfi-69)
(foreign-dependencies Qt5Core (foreign-dependencies Qt5Core
Qt5Widgets Qt5Widgets
Qt5Gui Qt5Gui
@ -57,7 +57,7 @@
"-L" "-lQt5Network" "-L" "-lQt5Network"
"-L" "-lQt5Test" "-L" "-lQt5Test"
"-L" "-lQt5QuickTest" "-L" "-lQt5QuickTest"
"-L" "-lOpenGL")))) "-L" "-lOpenGL"))
;;(extension qml.core (extension qml.core
;; (component-dependencies qml.lowlevel)) (component-dependencies qml.lowlevel))))

View File

@ -1,3 +1,4 @@
;; -*- geiser-scheme: chicken -*-
(module (qml lowlevel) (module (qml lowlevel)
* *
(import (scheme base)) (import (scheme base))
@ -109,17 +110,17 @@
(define-foreign-type DosQAbstractItemModelCallbacks (struct "DosQAbstractItemModelCallbacks")) (define-foreign-type DosQAbstractItemModelCallbacks (struct "DosQAbstractItemModelCallbacks"))
(define-foreign-type DosQEventLoopProcessEventFlag (enum "DosQEventLoopProcessEventFlag")) (define-foreign-type DosQEventLoopProcessEventFlag (enum "DosQEventLoopProcessEventFlag"))
(define DosQEventLoopProcessEventFlagProcessAllEvents (foreign-value "0x00" byte)) (define DosQEventLoopProcessEventFlagProcessAllEvents #x00)
(define DosQEventLoopProcessEventFlagExcludeUserInputEvents (foreign-value "0x01" byte)) (define DosQEventLoopProcessEventFlagExcludeUserInputEvents #x01)
(define DosQEventLoopProcessEventFlagProcessExcludeSocketNotifiers (foreign-value "0x02" byte)) (define DosQEventLoopProcessEventFlagProcessExcludeSocketNotifiers #x02)
(define DosQEventLoopProcessEventFlagProcessAllEventsWaitForMoreEvents (foreign-value "0x03" byte)) (define DosQEventLoopProcessEventFlagProcessAllEventsWaitForMoreEvents #x03)
(define-foreign-type DosQtConnectionType (enum "DosQtConnectionType")) (define-foreign-type DosQtConnectionType (enum "DosQtConnectionType"))
(define DosQtConnectionTypeAutoConnection 0) (define DosQtConnectionTypeAutoConnection 0)
(define DosQtConnectionTypeDirectConnection 1) (define DosQtConnectionTypeDirectConnection 1)
(define DosQtConnectionTypeQueuedConnection 2) (define DosQtConnectionTypeQueuedConnection 2)
(define DosQtConnectionTypeBlockingConnection 3) (define DosQtConnectionTypeBlockingConnection 3)
(define DosQtConnectionTypeUniqueConnection (foreign-value "0x80" byte)) (define DosQtConnectionTypeUniqueConnection #x80)
;; Functions ;; Functions
;; QCoreApplication ;; QCoreApplication