X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/9ec578d9fe450b7e7f9030dc9d930185593aa991..54c017728489af16b13e13541e7cc53c985ca436:/src/builtin.lisp diff --git a/src/builtin.lisp b/src/builtin.lisp index 73de860..5aad5f5 100644 --- a/src/builtin.lisp +++ b/src/builtin.lisp @@ -61,7 +61,7 @@ ',name (lambda (,classvar) (make-sod-slot ,classvar ,name (c-type ,type) - (make-property-set :lisp-class 'sod-class-slot + (make-property-set :slot-class 'sod-class-slot :initializer-function (lambda (,class) ,init) @@ -95,7 +95,7 @@ static void *~A__imprint(void *p) { struct ~A *sod__obj = p; - ~:{sod__obj->~A.~A._vt = &~A;~:^~% ~} + ~:{sod__obj->~A.~A._vt = &~A.~A;~:^~% ~} return (p); }~2%" class @@ -105,7 +105,8 @@ static void *~A__imprint(void *p) (tail (ichain-tail ichain))) (list (sod-class-nickname head) (sod-class-nickname tail) - (vtable-name class head)))) + (vtable-name class head) + (sod-class-nickname tail)))) (ilayout-ichains ilayout))))) (define-class-slot "init" (class stream) @@ -227,7 +228,6 @@ static const SodClass *const ~A__cpl[] = { class ;0 (mapcar (lambda (chain) ;1 (let* ((head (sod-class-chain-head (car chain))) - (tail (sod-class-chain-head (car chain))) (chain-nick (sod-class-nickname head))) (list class chain-nick ;0 1 (reverse chain) ;2 @@ -293,9 +293,11 @@ static const SodClass *const ~A__cpl[] = { (finalize-sod-class class) (add-to-module module class)))) +(export '*builtin-module*) (defvar *builtin-module* nil "The builtin module.") +(export 'make-builtin-module) (defun make-builtin-module () "Construct the builtin module. @@ -330,4 +332,7 @@ static const SodClass *const ~A__cpl[] = { (bootstrap-classes module)) (setf *builtin-module* module))) +(define-clear-the-decks builtin-module + (unless *builtin-module* (make-builtin-module))) + ;;;----- That's all, folks --------------------------------------------------