chiark
/
gitweb
/
~mdw
/
clg
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Changed to use of settable FOREIGN-LOCATION
[clg]
/
glib
/
genums.lisp
diff --git
a/glib/genums.lisp
b/glib/genums.lisp
index c49baf8018616322ea2bc9e521515d5453d8767d..224f48cf378c1f18e84e618e8e5ad36fd31db51d 100644
(file)
--- a/
glib/genums.lisp
+++ b/
glib/genums.lisp
@@
-20,7
+20,7
@@
;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-;; $Id: genums.lisp,v 1.1
3 2005-04-23 16:48:50
espen Exp $
+;; $Id: genums.lisp,v 1.1
7 2006-02-06 18:12:19
espen Exp $
(in-package "GLIB")
(in-package "GLIB")
@@
-87,7
+87,8
@@
(defmethod reader-function ((type (eql 'enum)) &rest args)
(declare (ignore type))
(let ((reader (reader-function 'signed))
(function (apply #'from-alien-function 'enum args)))
(declare (ignore type))
(let ((reader (reader-function 'signed))
(function (apply #'from-alien-function 'enum args)))
- #'(lambda (location &optional (offset 0))
+ #'(lambda (location &optional (offset 0) weak-p)
+ (declare (ignore weak-p))
(funcall function (funcall reader location offset)))))
(defun enum-int (enum type)
(funcall function (funcall reader location offset)))))
(defun enum-int (enum type)
@@
-134,7
+135,8
@@
(defmethod writer-function ((type (eql ',name)) &rest args)
(defmethod reader-function ((type (eql ',name)) &rest args)
(declare (ignore type args))
(let ((reader (reader-function 'signed)))
(defmethod reader-function ((type (eql ',name)) &rest args)
(declare (ignore type args))
(let ((reader (reader-function 'signed)))
- #'(lambda (location &optional (offset 0))
+ #'(lambda (location &optional (offset 0) weak-p)
+ (declare (ignore weak-p))
(,int-enum (funcall reader location offset))))))))
(,int-enum (funcall reader location offset))))))))
@@
-171,12
+173,12
@@
(defmethod to-alien-form (flags (type (eql 'flags)) &rest args)
(t (error 'type-error :datum ,flags
:expected-type '(,type ,@args)))))))
(t (error 'type-error :datum ,flags
:expected-type '(,type ,@args)))))))
-(defmethod from-alien-form (
int
(type (eql 'flags)) &rest args)
+(defmethod from-alien-form (
value
(type (eql 'flags)) &rest args)
(declare (ignore type))
`(loop
(declare (ignore type))
`(loop
- for
mapping
in ',(%map-flags args :int-symbol)
-
unless (zerop (logand ,int (first mapping))
)
- collect
(second mapping)
))
+ for
(int symbol)
in ',(%map-flags args :int-symbol)
+
when (= (logand ,value int) int
)
+ collect
symbol
))
(defmethod to-alien-function ((type (eql 'flags)) &rest args)
(declare (ignore type))
(defmethod to-alien-function ((type (eql 'flags)) &rest args)
(declare (ignore type))
@@
-192,11
+194,11
@@
(defmethod to-alien-function ((type (eql 'flags)) &rest args)
(defmethod from-alien-function ((type (eql 'flags)) &rest args)
(declare (ignore type))
(let ((mappings (%map-flags args :int-symbol)))
(defmethod from-alien-function ((type (eql 'flags)) &rest args)
(declare (ignore type))
(let ((mappings (%map-flags args :int-symbol)))
- #'(lambda (
int
)
+ #'(lambda (
value
)
(loop
(loop
- for
mapping
in mappings
-
unless (zerop (logand int (first mapping))
)
- collect
(second mapping)
))))
+ for
(int symbol)
in mappings
+
when (= (logand value int) int
)
+ collect
symbol
))))
(defmethod writer-function ((type (eql 'flags)) &rest args)
(declare (ignore type))
(defmethod writer-function ((type (eql 'flags)) &rest args)
(declare (ignore type))
@@
-209,7
+211,8
@@
(defmethod reader-function ((type (eql 'flags)) &rest args)
(declare (ignore type))
(let ((reader (reader-function 'unsigned))
(function (apply #'from-alien-function 'flags args)))
(declare (ignore type))
(let ((reader (reader-function 'unsigned))
(function (apply #'from-alien-function 'flags args)))
- #'(lambda (location &optional (offset 0))
+ #'(lambda (location &optional (offset 0) weak-p)
+ (declare (ignore weak-p))
(funcall function (funcall reader location offset)))))
(funcall function (funcall reader location offset)))))
@@
-236,9
+239,9
@@
(defun ,flags-int (flags)
:expected-type ',name))))))
(defun ,int-flags (value)
(loop
:expected-type ',name))))))
(defun ,int-flags (value)
(loop
- for
mapping
in ',(%map-flags args :int-symbol)
-
unless (zerop (logand value (first mapping))
)
- collect
(second mapping)
))
+ for
(int symbol)
in ',(%map-flags args :int-symbol)
+
when(= (logand value int) int
)
+ collect
symbol
))
(defmethod alien-type ((type (eql ',name)) &rest args)
(declare (ignore type args))
(alien-type 'flags))
(defmethod alien-type ((type (eql ',name)) &rest args)
(declare (ignore type args))
(alien-type 'flags))
@@
-265,7
+268,8
@@
(defmethod writer-function ((type (eql ',name)) &rest args)
(defmethod reader-function ((type (eql ',name)) &rest args)
(declare (ignore type args))
(let ((reader (reader-function 'signed)))
(defmethod reader-function ((type (eql ',name)) &rest args)
(declare (ignore type args))
(let ((reader (reader-function 'signed)))
- #'(lambda (location &optional (offset 0))
+ #'(lambda (location &optional (offset 0) weak-p)
+ (declare (ignore weak-p))
(,int-flags (funcall reader location offset))))))))
(,int-flags (funcall reader location offset))))))))
@@
-276,8
+280,8
@@
(defun %query-enum-or-flags-values (query-function class type)
(multiple-value-bind (sap length)
(funcall query-function (type-class-ref type))
(let ((values nil)
(multiple-value-bind (sap length)
(funcall query-function (type-class-ref type))
(let ((values nil)
- (size (
proxy-instance
-size (find-class class)))
- (proxy (
make-instance class :location
sap)))
+ (size (
foreign
-size (find-class class)))
+ (proxy (
ensure-proxy-instance class
sap)))
(dotimes (i length)
(with-slots (location nickname value) proxy
(setf location sap)
(dotimes (i length)
(with-slots (location nickname value) proxy
(setf location sap)