chiark
/
gitweb
/
~mdw
/
clg
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added bindings for GtkTooltip
[clg]
/
glib
/
gobject.lisp
diff --git
a/glib/gobject.lisp
b/glib/gobject.lisp
index 115a04ca75cfee7063c39a822c9eca918ac52c67..e9cbffd1b3b9e5122154fe033a949f6c6cf2edfb 100644
(file)
--- a/
glib/gobject.lisp
+++ b/
glib/gobject.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: gobject.lisp,v 1.5
4 2006-08-16 12:09:03
espen Exp $
+;; $Id: gobject.lisp,v 1.5
7 2007-06-01 10:46:15
espen Exp $
(in-package "GLIB")
(in-package "GLIB")
@@
-154,7
+154,7
@@
(defmethod compute-slot-reader-function ((slotd effective-property-slot-definiti
(defmethod compute-slot-writer-function :around ((slotd effective-property-slot-definition))
(if (construct-only-property-p slotd)
#'(lambda (value object)
(defmethod compute-slot-writer-function :around ((slotd effective-property-slot-definition))
(if (construct-only-property-p slotd)
#'(lambda (value object)
- (declare (ignore value
object
))
+ (declare (ignore value))
(unless *ignore-setting-construct-only-property*
(error 'unwritable-slot :name (slot-definition-name slotd) :instance object)))
(call-next-method)))
(unless *ignore-setting-construct-only-property*
(error 'unwritable-slot :name (slot-definition-name slotd) :instance object)))
(call-next-method)))
@@
-271,6
+271,10
@@
(defmethod make-proxy-instance ((class gobject-class) location &rest initargs)
(error "Objects of class ~A has instance slots and should only be created with MAKE-INSTANCE" class)
(call-next-method)))
(error "Objects of class ~A has instance slots and should only be created with MAKE-INSTANCE" class)
(call-next-method)))
+(defparameter +gparameter-gvalue-offset+
+ (max (size-of 'pointer) (type-alignment '(unsigned-byte 64))))
+(defparameter +gparameter-size+
+ (+ +gparameter-gvalue-offset+ +gvalue-size+))
(defmethod allocate-foreign ((object gobject) &rest initargs)
(let ((init-slots ()))
(defmethod allocate-foreign ((object gobject) &rest initargs)
(let ((init-slots ()))
@@
-296,18
+300,17
@@
(defmethod allocate-foreign ((object gobject) &rest initargs)
(cond
(init-slots
(cond
(init-slots
- (let* ((pointer-size (size-of 'pointer))
- (element-size (+ +gvalue-size+ pointer-size))
- (num-slots (length init-slots)))
- (with-memory (params (* num-slots element-size))
+ (let* ((num-slots (length init-slots)))
+ (with-memory (params (* num-slots +gparameter-size+))
(loop
with string-writer = (writer-function 'string)
for (slotd . value) in init-slots
(loop
with string-writer = (writer-function 'string)
for (slotd . value) in init-slots
- as param = params then (pointer+ param
element-size
)
+ as param = params then (pointer+ param
+gparameter-size+
)
as type = (slot-definition-type slotd)
as pname = (slot-definition-pname slotd)
do (funcall string-writer pname param)
as type = (slot-definition-type slotd)
as pname = (slot-definition-pname slotd)
do (funcall string-writer pname param)
- (gvalue-init (pointer+ param pointer-size) type value))
+ (gvalue-init
+ (pointer+ param +gparameter-gvalue-offset+) type value))
(unwind-protect
(%gobject-newv (type-number-of object) num-slots params)
(unwind-protect
(%gobject-newv (type-number-of object) num-slots params)
@@
-315,10
+318,10
@@
(defmethod allocate-foreign ((object gobject) &rest initargs)
(loop
with string-destroy = (destroy-function 'string)
repeat num-slots
(loop
with string-destroy = (destroy-function 'string)
repeat num-slots
- as param = params then (pointer+ param
element-size
)
+ as param = params then (pointer+ param
+gparameter-size+
)
do (funcall string-destroy param)
do (funcall string-destroy param)
- (gvalue-unset (pointer+ param
pointer-size
)))))))
-
+ (gvalue-unset (pointer+ param
+gparameter-gvalue-offset+
)))))))
+
(t (%gobject-new (type-number-of object))))))
(t (%gobject-new (type-number-of object))))))
@@
-391,35
+394,40
@@
(defbinding object-thaw-notify () nil
;;;; User data
;;;; User data
+(defgeneric (setf user-data) (data object key))
+(defgeneric user-data (object key))
+(defgeneric user-data-p (object key))
+(defgeneric unset-user-data (object key))
+
(defbinding %object-set-qdata-full () nil
(object gobject)
(id quark)
(defbinding %object-set-qdata-full () nil
(object gobject)
(id quark)
- (data
unsigned-long
)
+ (data
pointer-data
)
(destroy-marshal callback))
(destroy-marshal callback))
-(define-callback user-data-destroy-callback nil ((id
unsigned-int
))
+(define-callback user-data-destroy-callback nil ((id
pointer-data
))
(destroy-user-data id))
(destroy-user-data id))
-(def
un (setf user-data) (data object
key)
+(def
method (setf user-data) (data (object gobject)
key)
(%object-set-qdata-full object (quark-intern key)
(register-user-data data) user-data-destroy-callback)
data)
(%object-set-qdata-full object (quark-intern key)
(register-user-data data) user-data-destroy-callback)
data)
-(defbinding %object-get-qdata ()
unsigned-long
+(defbinding %object-get-qdata ()
pointer-data
(object gobject)
(id quark))
(object gobject)
(id quark))
-(def
un user-data (object
key)
+(def
method user-data ((object gobject)
key)
(find-user-data (%object-get-qdata object (quark-intern key))))
(find-user-data (%object-get-qdata object (quark-intern key))))
-(def
un user-data-p (object
key)
+(def
method user-data-p ((object gobject)
key)
(user-data-exists-p (%object-get-qdata object (quark-intern key))))
(user-data-exists-p (%object-get-qdata object (quark-intern key))))
-(defbinding %object-steal-qdata ()
unsigned-long
+(defbinding %object-steal-qdata ()
pointer-data
(object gobject)
(id quark))
(object gobject)
(id quark))
-(def
un unset-user-data (object
key)
+(def
method unset-user-data ((object gobject)
key)
(destroy-user-data (%object-steal-qdata object (quark-intern key))))
(destroy-user-data (%object-steal-qdata object (quark-intern key))))