Fixes for AMD64
authorespen <espen>
Fri, 23 Jun 2006 12:25:37 +0000 (12:25 +0000)
committerespen <espen>
Fri, 23 Jun 2006 12:25:37 +0000 (12:25 +0000)
gtk/gtktree.lisp
gtk/gtktypes.lisp

index e67e26f..15c9a56 100644 (file)
@@ -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.
 
-;; $Id: gtktree.lisp,v 1.20 2006-04-26 20:31:12 espen Exp $
+;; $Id: gtktree.lisp,v 1.21 2006-06-23 12:25:37 espen Exp $
 
 
 (in-package "GTK")
   (location pointer))
 
 (defun %make-tree-path (path)
-  (let ((c-vector (make-c-vector 'int (length path) :content path))
-       (location (allocate-memory (+ (size-of 'int) (size-of 'pointer)))))
+  (let* ((c-vector (make-c-vector 'int (length path) :content path))
+        (pointer-offset (adjust-offset (size-of 'int) 'pointer))
+        (location (allocate-memory (+ pointer-offset (size-of 'pointer)))))
     (funcall (writer-function 'int) (length path) location)
-    (funcall (writer-function 'pointer) c-vector location (size-of 'int))
+    (funcall (writer-function 'pointer) c-vector location pointer-offset)
     location))
 
 (defun %tree-path-to-vector (location)
       (map-c-vector 'vector #'identity indices 'int depth))))
 
 (defmacro %with-tree-path ((var path) &body body)
-  (let ((vector-offset (+ (size-of 'int) (size-of 'pointer))))
-    `(with-memory (,var (+ ,(size-of 'int) ,(size-of 'pointer) (* ,(size-of 'int) (length ,path))))
+  (let* ((pointer-offset (adjust-offset (size-of 'int) 'pointer))
+        (vector-offset (adjust-offset (+ pointer-offset (size-of 'pointer)) 'int)))
+    `(with-memory (,var (+ ,vector-offset (* ,(size-of 'int) (length ,path))))
       (funcall (writer-function 'int) (length ,path) ,var)
-      (setf (ref-pointer ,var ,(size-of 'int)) (pointer+ ,var ,vector-offset))
+      (setf (ref-pointer ,var ,pointer-offset) (pointer+ ,var ,vector-offset))
       (make-c-vector 'int (length ,path) :content ,path :location (pointer+ ,var ,vector-offset))
       ,@body)))
 
index cce4e9a..c762663 100644 (file)
@@ -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.
 
-;; $Id: gtktypes.lisp,v 1.47 2006-04-26 20:31:12 espen Exp $
+;; $Id: gtktypes.lisp,v 1.48 2006-06-23 12:25:38 espen Exp $
 
 (in-package "GTK")
 
   (:ref stock-item-copy)
   (:unref stock-item-free))
 
-;; We don't really need to access any slots in this class, so we just
-;; specify the total size
 (defclass tree-iter (boxed)  
-  (
-;;    (stamp :allocation :alien :type int)
-;;    (user-data :allocation :alien :type pointer)
-;;    (user-data2 :allocation :alien :type pointer)
-;;    (user-data3 :allocation :alien :type pointer)
-   )
-  (:metaclass boxed-class)
-  (:size #.(+ (size-of 'int) (* 3 (size-of 'pointer)))))
+  ((stamp :allocation :alien :type int)
+   (user-data :allocation :alien :type pointer)
+   (user-data2 :allocation :alien :type pointer)
+   (user-data3 :allocation :alien :type pointer))
+  (:metaclass boxed-class))
 
 
 ;; (defclass tree-path (boxed)