chiark / gitweb /
Added reader/writer functions for type integer
[clg] / glib / glib.lisp
CommitLineData
0d07716f 1;; Common Lisp bindings for GTK+ v1.2.x
2;; Copyright (C) 1999 Espen S. Johnsen <espejohn@online.no>
3;;
4;; This library is free software; you can redistribute it and/or
5;; modify it under the terms of the GNU Lesser General Public
6;; License as published by the Free Software Foundation; either
7;; version 2 of the License, or (at your option) any later version.
8;;
9;; This library is distributed in the hope that it will be useful,
10;; but WITHOUT ANY WARRANTY; without even the implied warranty of
11;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12;; Lesser General Public License for more details.
13;;
14;; You should have received a copy of the GNU Lesser General Public
15;; License along with this library; if not, write to the Free Software
16;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
4683056f 18;; $Id: glib.lisp,v 1.18 2004/11/07 16:03:55 espen Exp $
0d07716f 19
20
21(in-package "GLIB")
b467f3d0 22
0d07716f 23(use-prefix "g")
24
25
26;;;; Memory management
27
1c99696e 28(defbinding (allocate-memory "g_malloc0") () pointer
0d07716f 29 (size unsigned-long))
30
1c99696e 31(defbinding (reallocate-memory "g_realloc") () pointer
0d07716f 32 (address pointer)
33 (size unsigned-long))
34
3fa4f6bd 35(defbinding (deallocate-memory "g_free") () nil
36 (address pointer))
6baf860c 37;; (defun deallocate-memory (address)
38;; (declare (ignore address)))
0d07716f 39
40(defun copy-memory (from length &optional (to (allocate-memory length)))
41 (kernel:system-area-copy from 0 to 0 (* 8 length))
42 to)
43
44
b467f3d0 45;;;; User data mechanism
46
47(internal *user-data* *user-data-count*)
48
49(declaim (fixnum *user-data-count*))
50
b467f3d0 51(defvar *user-data* (make-hash-table))
52(defvar *user-data-count* 0)
53
54(defun register-user-data (object &optional destroy-function)
55 (check-type destroy-function (or null symbol function))
56 (incf *user-data-count*)
57 (setf
58 (gethash *user-data-count* *user-data*)
59 (cons object destroy-function))
60 *user-data-count*)
61
62(defun find-user-data (id)
63 (check-type id fixnum)
64 (multiple-value-bind (user-data p) (gethash id *user-data*)
65 (values (car user-data) p)))
66
67(defun destroy-user-data (id)
68 (check-type id fixnum)
69 (let ((user-data (gethash id *user-data*)))
70 (when (cdr user-data)
71 (funcall (cdr user-data) (car user-data))))
72 (remhash id *user-data*))
73
0d07716f 74
6755fdad 75;;;; Quarks
76
b467f3d0 77(internal *quark-counter* *quark-from-object* *quark-to-object*)
78
6755fdad 79(deftype quark () 'unsigned)
80
cb816364 81;(defbinding %quark-get-reserved () quark)
e5b6173a 82
cb816364 83(defbinding %quark-from-string () quark
e5b6173a 84 (string string))
85
b467f3d0 86(defvar *quark-counter* 0)
e5b6173a 87
88(defun %quark-get-reserved ()
b467f3d0 89 ;; The string is just a dummy
90