@@ -13,59 +13,62 @@ ;; ;; ;; Accessors for a dbstruct ;; -(define-inline (dbr:dbstruct-get-main vec) (vector-ref vec 0)) ;; ( db path ) -(define-inline (dbr:dbstruct-get-strdb vec) (vector-ref vec 1)) ;; ( db path ) -(define-inline (dbr:dbstruct-get-path vec) (vector-ref vec 2)) -(define-inline (dbr:dbstruct-get-local vec) (vector-ref vec 3)) -(define-inline (dbr:dbstruct-get-rundb vec) (vector-ref vec 4)) ;; ( db path ) -(define-inline (dbr:dbstruct-get-inmem vec) (vector-ref vec 5)) ;; ( db #f ) -(define-inline (dbr:dbstruct-get-mtime vec) (vector-ref vec 6)) -(define-inline (dbr:dbstruct-get-rtime vec) (vector-ref vec 7)) -(define-inline (dbr:dbstruct-get-stime vec) (vector-ref vec 8)) -(define-inline (dbr:dbstruct-get-inuse vec) (vector-ref vec 9)) -(define-inline (dbr:dbstruct-get-refdb vec) (vector-ref vec 10)) ;; ( db path ) -(define-inline (dbr:dbstruct-get-locdbs vec) (vector-ref vec 11)) -(define-inline (dbr:dbstruct-get-olddb vec) (vector-ref vec 12)) ;; ( db path ) -;; (define-inline (dbr:dbstruct-get-main-path vec) (vector-ref vec 13)) -;; (define-inline (dbr:dbstruct-get-rundb-path vec) (vector-ref vec 14)) -;; (define-inline (dbr:dbstruct-get-run-id vec) (vector-ref vec 13)) - -(define-inline (dbr:dbstruct-set-main! vec val)(vector-set! vec 0 val)) -(define-inline (dbr:dbstruct-set-strdb! vec val)(vector-set! vec 1 val)) -(define-inline (dbr:dbstruct-set-path! vec val)(vector-set! vec 2 val)) -(define-inline (dbr:dbstruct-set-local! vec val)(vector-set! vec 3 val)) -(define-inline (dbr:dbstruct-set-rundb! vec val)(vector-set! vec 4 val)) -(define-inline (dbr:dbstruct-set-inmem! vec val)(vector-set! vec 5 val)) -(define-inline (dbr:dbstruct-set-mtime! vec val)(vector-set! vec 6 val)) -(define-inline (dbr:dbstruct-set-rtime! vec val)(vector-set! vec 7 val)) -(define-inline (dbr:dbstruct-set-stime! vec val)(vector-set! vec 8 val)) -(define-inline (dbr:dbstruct-set-inuse! vec val)(vector-set! vec 9 val)) -(define-inline (dbr:dbstruct-set-refdb! vec val)(vector-set! vec 10 val)) -(define-inline (dbr:dbstruct-set-locdbs! vec val)(vector-set! vec 11 val)) -(define-inline (dbr:dbstruct-set-olddb! vec val)(vector-set! vec 12 val)) -(define-inline (dbr:dbstruct-set-main-path! vec val)(vector-set! vec 13 val)) -(define-inline (dbr:dbstruct-set-rundb-path! vec val)(vector-set! vec 14 val)) +(use defstruct) + +(defstruct dbr:dbstruct main strdb path local rundb inmem mtime rtime stime inuse refdb locdbs olddb rundb-path) +;;; (define d1 (make-dbr:dbstruct)) +;;; (dbr:dbstruct-main d1) ==> retrive value +;;; (dbr:dbstruct-main-set! d1 'def) ==> set value + +;; (define-inline (dbr:dbstruct-get-main vec) (vector-ref vec 0)) ;; ( db path ) +;; (define-inline (dbr:dbstruct-get-strdb vec) (vector-ref vec 1)) ;; ( db path ) +;; (define-inline (dbr:dbstruct-get-path vec) (vector-ref vec 2)) +;; (define-inline (dbr:dbstruct-get-local vec) (vector-ref vec 3)) +;; (define-inline (dbr:dbstruct-get-rundb vec) (vector-ref vec 4)) ;; ( db path ) +;; (define-inline (dbr:dbstruct-get-inmem vec) (vector-ref vec 5)) ;; ( db #f ) +;; (define-inline (dbr:dbstruct-get-mtime vec) (vector-ref vec 6)) +;; (define-inline (dbr:dbstruct-get-rtime vec) (vector-ref vec 7)) +;; (define-inline (dbr:dbstruct-get-stime vec) (vector-ref vec 8)) +;; (define-inline (dbr:dbstruct-get-inuse vec) (vector-ref vec 9)) +;; (define-inline (dbr:dbstruct-get-refdb vec) (vector-ref vec 10)) ;; ( db path ) +;; (define-inline (dbr:dbstruct-get-locdbs vec) (vector-ref vec 11)) +;; (define-inline (dbr:dbstruct-get-olddb vec) (vector-ref vec 12)) ;; ( db path ) +;; ;; (define-inline (dbr:dbstruct-get-main-path vec) (vector-ref vec 13)) +;; ;; (define-inline (dbr:dbstruct-get-rundb-path vec) (vector-ref vec 14)) +;; ;; (define-inline (dbr:dbstruct-get-run-id vec) (vector-ref vec 13)) +;; +;; (define-inline (dbr:dbstruct-set-main! vec val)(vector-set! vec 0 val)) +;; (define-inline (dbr:dbstruct-set-strdb! vec val)(vector-set! vec 1 val)) +;; (define-inline (dbr:dbstruct-set-path! vec val)(vector-set! vec 2 val)) +;; (define-inline (dbr:dbstruct-set-local! vec val)(vector-set! vec 3 val)) +;; (define-inline (dbr:dbstruct-set-rundb! vec val)(vector-set! vec 4 val)) +;; (define-inline (dbr:dbstruct-set-inmem! vec val)(vector-set! vec 5 val)) +;; (define-inline (dbr:dbstruct-set-mtime! vec val)(vector-set! vec 6 val)) +;; (define-inline (dbr:dbstruct-set-rtime! vec val)(vector-set! vec 7 val)) +;; (define-inline (dbr:dbstruct-set-stime! vec val)(vector-set! vec 8 val)) +;; (define-inline (dbr:dbstruct-set-inuse! vec val)(vector-set! vec 9 val)) +;; (define-inline (dbr:dbstruct-set-refdb! vec val)(vector-set! vec 10 val)) +;; (define-inline (dbr:dbstruct-set-locdbs! vec val)(vector-set! vec 11 val)) +;; (define-inline (dbr:dbstruct-set-olddb! vec val)(vector-set! vec 12 val)) +;; (define-inline (dbr:dbstruct-set-main-path! vec val)(vector-set! vec 13 val)) +;; (define-inline (dbr:dbstruct-set-rundb-path! vec val)(vector-set! vec 14 val)) ; (define-inline (dbr:dbstruct-set-run-id! vec val)(vector-set! vec 13 val)) ;; constructor for dbstruct ;; -(define (make-dbr:dbstruct #!key (path #f)(local #f)) - (let ((v (make-vector 15 #f))) - (dbr:dbstruct-set-path! v path) - (dbr:dbstruct-set-local! v local) - (dbr:dbstruct-set-locdbs! v (make-hash-table)) - v)) - -(define (dbr:dbstruct-get-localdb v run-id) - (hash-table-ref/default (dbr:dbstruct-get-locdbs v) run-id #f)) +(define (actual-make-dbr:dbstruct #!key (path #f)(local #f)) + (make-dbr:dbstruct path: path local: local locdbs: (make-hash-table))) + +(define (dbr:dbstruct-get-localdb v run-ids) + (hash-table-ref/default (dbr:dbstruct-locdbs v) run-id #f)) (define (dbr:dbstruct-set-localdb! v run-id db) - (hash-table-set! (dbr:dbstruct-get-locdbs v) run-id db)) + (hash-table-set! (dbr:dbstruct-locdbs v) run-id db)) (define (make-db:test)(make-vector 20)) (define-inline (db:test-get-id vec) (vector-ref vec 0)) (define-inline (db:test-get-run_id vec) (vector-ref vec 1))