repos
/
smoke
/ annotate_shade
summary
|
shortlog
|
log
|
tree
|
commit
|
commitdiff
|
headdiff
|
annotate
|
headblob
|
headfilediff
|
filehistory
normal
|
plain
|
shade
|
zebra
Support modular smoke & cleanup.
Annotate for file src/bindings.lisp
2009-04-05 tobias
1
(in-package :smoke)
15:36:29 '
2
2009-06-22 tobias
3
(defstruct smoke-array
2009-08-02 tobias
4
"A C array."
2009-06-22 tobias
5
(pointer (null-pointer) :type foreign-pointer)
12:18:08 '
6
(length 0 :type (smoke-index 0)))
'
7
2010-02-19 tobias
8
2009-06-22 tobias
9
(defstruct smoke-module
12:18:08 '
10
(pointer (null-pointer) :type foreign-pointer)
2010-02-19 tobias
11
(binding (null-pointer) :type foreign-pointer)
2009-06-22 tobias
12
12:18:08 '
13
(classes (make-smoke-array) :type smoke-array)
'
14
(methods (make-smoke-array) :type smoke-array)
'
15
(method-maps (make-smoke-array) :type smoke-array)
'
16
(method-names (make-smoke-array) :type smoke-array)
'
17
(types (make-smoke-array) :type smoke-array)
'
18
'
19
(inheritance-list (null-pointer) :type foreign-pointer)
'
20
(argument-list (null-pointer) :type foreign-pointer)
'
21
(ambiguous-method-list (null-pointer) :type foreign-pointer))
'
22
2009-08-02 tobias
23
(defvar *smoke-modules* (make-hash-table)
10:12:41 '
24
"All loaded Smoke modules.")
2009-06-22 tobias
25
2010-01-10 tobias
26
(eval-on-save ()
08:49:36 '
27
(clrhash *smoke-modules*))
'
28
2009-08-27 tobias
29
(defmethod print-object ((smoke-module smoke-module) stream)
11:43:13 '
30
(if (null-pointer-p (smoke-module-pointer smoke-module))
'
31
(call-next-method)
'
32
(print-unreadable-object (smoke-module stream :type t :identity t)
'
33
(princ (smoke-get-module-name (smoke-module-pointer smoke-module))
'
34
stream))))
'
35
2009-06-22 tobias
36
(defun init-smoke-module (module)
12:18:08 '
37
(let ((smoke (smoke-module-pointer module)))
'
38
(setf (gethash (pointer-address smoke) *smoke-modules*)
'
39
module)
'
40
(flet ((mk-array (array)
'
41
(make-smoke-array :pointer (cl-smoke-array smoke array)
'
42
:length (cl-smoke-array-size smoke array))))
'
43
(setf (smoke-module-classes module) (mk-array :classes)
'
44
(smoke-module-methods module) (mk-array :methods)
'
45
(smoke-module-method-maps module) (mk-array :method-maps)
'
46
(smoke-module-method-names module) (mk-array :method-names)
'
47
(smoke-module-types module) (mk-array :types)
'
48
'
49
(smoke-module-inheritance-list module)
'
50
(cl-smoke-array smoke :inheritance-list)
'
51
'
52
(smoke-module-argument-list module)
'
53
(cl-smoke-array smoke :argument-list)
'
54
'
55
(smoke-module-ambiguous-method-list module)
'
56
(cl-smoke-array smoke :ambiguous-method-list)))))
'
57