repos
/
smoke
/ annotate_shade
summary
|
shortlog
|
log
|
tree
|
commit
|
commitdiff
|
headdiff
|
annotate
|
headblob
|
headfilediff
|
filehistory
normal
|
plain
|
shade
|
zebra
Don't dispatch virtual methods for builtin classes (reduces overhead).
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)
2010-02-18 tobias
12
(no-dispatch-binding (null-pointer) :type foreign-pointer)
2009-06-22 tobias
13
12:18:08 '
14
(classes (make-smoke-array) :type smoke-array)
'
15
(methods (make-smoke-array) :type smoke-array)
'
16
(method-maps (make-smoke-array) :type smoke-array)
'
17
(method-names (make-smoke-array) :type smoke-array)
'
18
(types (make-smoke-array) :type smoke-array)
'
19
'
20
(inheritance-list (null-pointer) :type foreign-pointer)
'
21
(argument-list (null-pointer) :type foreign-pointer)
'
22
(ambiguous-method-list (null-pointer) :type foreign-pointer))
'
23
2009-08-02 tobias
24
(defvar *smoke-modules* (make-hash-table)
10:12:41 '
25
"All loaded Smoke modules.")
2009-06-22 tobias
26
2010-01-10 tobias
27
(eval-on-save ()
08:49:36 '
28
(clrhash *smoke-modules*))
'
29
2009-08-27 tobias
30
(defmethod print-object ((smoke-module smoke-module) stream)
11:43:13 '
31
(if (null-pointer-p (smoke-module-pointer smoke-module))
'
32
(call-next-method)
'
33
(print-unreadable-object (smoke-module stream :type t :identity t)
'
34
(princ (smoke-get-module-name (smoke-module-pointer smoke-module))
'
35
stream))))
'
36
2009-06-22 tobias
37
(defun init-smoke-module (module)
12:18:08 '
38
(let ((smoke (smoke-module-pointer module)))
'
39
(setf (gethash (pointer-address smoke) *smoke-modules*)
'
40
module)
'
41
(flet ((mk-array (array)
'
42
(make-smoke-array :pointer (cl-smoke-array smoke array)
'
43
:length (cl-smoke-array-size smoke array))))
'
44
(setf (smoke-module-classes module) (mk-array :classes)
'
45
(smoke-module-methods module) (mk-array :methods)
'
46
(smoke-module-method-maps module) (mk-array :method-maps)
'
47
(smoke-module-method-names module) (mk-array :method-names)
'
48
(smoke-module-types module) (mk-array :types)
'
49
'
50
(smoke-module-inheritance-list module)
'
51
(cl-smoke-array smoke :inheritance-list)
'
52
'
53
(smoke-module-argument-list module)
'
54
(cl-smoke-array smoke :argument-list)
'
55
'
56
(smoke-module-ambiguous-method-list module)
'
57
(cl-smoke-array smoke :ambiguous-method-list)))))
'
58