annotate bindings/sb-alien/library.lisp @ 770:c54bc2ffbf92 tip

update tags
author convert-repo
date Fri, 16 Dec 2011 11:34:01 +0000
parents e4eae1f59759
children
rev   line source
mas01cr@511 1 (in-package "SB-ADB")
mas01cr@511 2
mas01cr@511 3 (defmacro define-int-checking-function (name arglist llname)
mas01cr@511 4 `(defun ,name ,arglist
mas01cr@511 5 (let ((result (,llname ,@arglist)))
mas01cr@511 6 (unless (eql 0 result)
mas01cr@633 7 (error "~@<~S on ~{~S ~}failed.~@:>" ',name (list ,@arglist))))))
mas01cr@511 8
mas01cr@511 9 (defmacro define-pointer-checking-function (name arglist llname)
mas01cr@511 10 `(defun ,name ,arglist
mas01cr@511 11 (let ((result (,llname ,@arglist)))
mas01cr@511 12 (when (null-alien result)
mas01cr@633 13 (error "~@<~S on ~{~S ~}failed.~@:>" ',name (list ,@arglist)))
mas01cr@511 14 result)))
mas01cr@511 15
mas01cr@511 16 (define-alien-type adb-t
mas01cr@511 17 (struct adb))
mas01cr@511 18
mas01cr@511 19 (define-alien-routine ("audiodb_open" %%open) (* adb-t)
mas01cr@511 20 (path c-string)
mas01cr@511 21 (flags int))
mas01cr@511 22 (define-pointer-checking-function %open (path flags) %%open)
mas01cr@511 23
mas01cr@511 24 (define-alien-routine ("audiodb_create" %%create) (* adb-t)
mas01cr@511 25 (path c-string)
mas01cr@511 26 (datasize (unsigned 32))
mas01cr@511 27 (ntracks (unsigned 32))
mas01cr@511 28 (datadim (unsigned 32)))
mas01cr@511 29 (define-pointer-checking-function %create (path datasize ntracks datadim)
mas01cr@511 30 %%create)
mas01cr@511 31
mas01cr@511 32 (define-alien-routine ("audiodb_l2norm" %%l2norm) int
mas01cr@511 33 (adb (* adb-t)))
mas01cr@511 34 (define-int-checking-function %l2norm (adb) %%l2norm)
mas01cr@511 35
mas01cr@511 36 (define-alien-routine ("audiodb_power" %%power) int
mas01cr@511 37 (adb (* adb-t)))
mas01cr@511 38 (define-int-checking-function %power (adb) %%power)
mas01cr@511 39
mas01cr@511 40 (define-alien-type adb-datum-t
mas01cr@511 41 (struct adb-datum
mas01cr@511 42 (nvectors (unsigned 32))
mas01cr@511 43 (dim (unsigned 32))
mas01cr@511 44 (key c-string)
mas01cr@511 45 (data (* double))
mas01cr@511 46 (power (* double))
mas01cr@511 47 (times (* double))))
mas01cr@511 48
mas01cr@511 49 (define-alien-routine ("audiodb_insert_datum" %%insert-datum) int
mas01cr@511 50 (adb (* adb-t))
mas01cr@511 51 (datum (* adb-datum-t)))
mas01cr@511 52 (define-int-checking-function %insert-datum (adb datum) %%insert-datum)
mas01cr@511 53
mas01cr@580 54 (define-alien-routine ("audiodb_retrieve_datum" %%retrieve-datum) int
mas01cr@580 55 (adb (* adb-t))
mas01cr@580 56 (key c-string)
mas01cr@580 57 (datum (* adb-datum-t)))
mas01cr@580 58 (define-int-checking-function %retrieve-datum (adb key datum) %%retrieve-datum)
mas01cr@580 59
mas01cr@580 60 (define-alien-routine ("audiodb_free_datum" %%free-datum) int
mas01cr@580 61 (adb (* adb-t))
mas01cr@580 62 (datum (* adb-datum-t)))
mas01cr@580 63 (define-int-checking-function %free-datum (adb datum) %%free-datum)
mas01cr@580 64
mas01cr@511 65 (define-alien-type adb-status-t
mas01cr@511 66 (struct adb-status
mas01cr@511 67 (nfiles (unsigned 32))
mas01cr@511 68 (dim (unsigned 32))
mas01cr@511 69 (ignore1 (unsigned 32))
mas01cr@511 70 (ignore2 (unsigned 32))
mas01cr@511 71 (flags (unsigned 32))
mas01cr@511 72 (length (unsigned 64))
mas01cr@511 73 (data-region-size (unsigned 64))))
mas01cr@511 74
mas01cr@511 75 (define-alien-routine ("audiodb_status" %%status) int
mas01cr@511 76 (adb (* adb-t))
mas01cr@511 77 (status (* adb-status-t)))
mas01cr@511 78 (define-int-checking-function %status (adb datum) %%status)
mas01cr@511 79
mas01cr@511 80 (define-alien-type adb-query-id-t
mas01cr@673 81 (struct adb-query-id
mas01cr@511 82 (datum (* adb-datum-t))
mas01cr@511 83 (sequence-length (unsigned 32))
mas01cr@511 84 (flags (unsigned 32))
mas01cr@511 85 (sequence-start (unsigned 32))))
mas01cr@511 86
mas01cr@511 87 (define-alien-type adb-query-parameters-t
mas01cr@673 88 (struct adb-query-parameters
mas01cr@511 89 (accumulation (unsigned 32))
mas01cr@511 90 (distance (unsigned 32))
mas01cr@511 91 (npoints (unsigned 32))
mas01cr@511 92 (ntracks (unsigned 32))))
mas01cr@511 93
mas01cr@511 94 (define-alien-type adb-keylist-t
mas01cr@673 95 (struct adb-key-list
mas01cr@511 96 (nkeys (unsigned 32))
mas01cr@511 97 (keys (* c-string))))
mas01cr@511 98
mas01cr@511 99 (define-alien-type adb-query-refine-t
mas01cr@673 100 (struct adb-query-refine
mas01cr@511 101 (flags (unsigned 32))
mas01cr@511 102 (include adb-keylist-t)
mas01cr@511 103 (exclude adb-keylist-t)
mas01cr@511 104 (radius double)
mas01cr@511 105 (absolute-threshold double)
mas01cr@511 106 (relative-threshold double)
mas01cr@511 107 (duration-ratio double)
mas01cr@677 108 (qhopsize (unsigned 32))
mas01cr@677 109 (ihopsize (unsigned 32))))
mas01cr@511 110
mas01cr@511 111 (define-alien-type adb-query-spec-t
mas01cr@673 112 (struct adb-query-spec
mas01cr@511 113 (qid adb-query-id-t)
mas01cr@511 114 (params adb-query-parameters-t)
mas01cr@511 115 (refine adb-query-refine-t)))
mas01cr@511 116
mas01cr@511 117 (define-alien-type adb-result-t
mas01cr@673 118 (struct adb-result
mas01cr@672 119 (qkey c-string)
mas01cr@672 120 (ikey c-string)
mas01cr@511 121 (qpos (unsigned 32))
mas01cr@672 122 (ipos (unsigned 32))
mas01cr@672 123 (dist double)))
mas01cr@511 124
mas01cr@511 125 (define-alien-type adb-query-results-t
mas01cr@673 126 (struct adb-query-results
mas01cr@511 127 (nresults (unsigned 32))
mas01cr@511 128 (results (* adb-result-t))))
mas01cr@511 129
mas01cr@511 130 (define-alien-routine ("audiodb_query_spec" %%query) (* adb-query-results-t)
mas01cr@511 131 (adb (* adb-t))
mas01cr@511 132 (spec (* adb-query-spec-t)))
mas01cr@511 133 (define-pointer-checking-function %query (adb spec) %%query)
mas01cr@511 134
mas01cr@511 135 (define-alien-routine ("audiodb_query_free_results" %%free-query-results) int
mas01cr@511 136 (adb (* adb-t))
mas01cr@511 137 (spec (* adb-query-spec-t))
mas01cr@511 138 (results (* adb-query-results-t)))
mas01cr@511 139 (define-int-checking-function %free-query-results (adb spec results)
mas01cr@511 140 %%free-query-results)
mas01cr@511 141
mas01cr@646 142 (define-alien-type adb-track-entry-t
mas01cr@673 143 (struct adb-track-entry
mas01cr@646 144 (nvectors (unsigned 32))
mas01cr@646 145 (key c-string)))
mas01cr@646 146
mas01cr@646 147 (define-alien-type adb-liszt-results-t
mas01cr@673 148 (struct adb-liszt-results
mas01cr@646 149 (nresults (unsigned 32))
mas01cr@646 150 (entries (* adb-track-entry-t))))
mas01cr@646 151
mas01cr@646 152 (define-alien-routine ("audiodb_liszt" %%liszt) (* adb-liszt-results-t)
mas01cr@646 153 (adb (* adb-t)))
mas01cr@646 154 (define-pointer-checking-function %liszt (adb) %%liszt)
mas01cr@646 155 (define-alien-routine ("audiodb_liszt_free_results" %%free-liszt-results) int
mas01cr@646 156 (adb (* adb-t))
mas01cr@646 157 (results (* adb-liszt-results-t)))
mas01cr@646 158 (define-int-checking-function %free-liszt-results (adb results)
mas01cr@646 159 %%free-liszt-results)
mas01cr@646 160
mas01cr@511 161 (define-alien-routine ("audiodb_close" %close) void
mas01cr@511 162 (adb (* adb-t)))