diff options
author | Andy Wingo <wingo@pobox.com> | 2015-01-13 23:16:40 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2015-01-23 16:16:02 +0100 |
commit | 9ae00706e4e13185d7175902a2db4c2e84bf94bb (patch) | |
tree | 0733a110f7eaeeaf6de29d2a02859ea79ece92e5 | |
parent | 9647d3d31840f42a93e67f1b9eafdd08814528af (diff) | |
download | guile-9ae00706e4e13185d7175902a2db4c2e84bf94bb.tar.gz |
Commenting in goops.scm
* module/oop/goops.scm: More narrative cleanup.
-rw-r--r-- | module/oop/goops.scm | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/module/oop/goops.scm b/module/oop/goops.scm index 5fc76daca..7d5b9568c 100644 --- a/module/oop/goops.scm +++ b/module/oop/goops.scm @@ -593,7 +593,6 @@ subclasses of @var{c}." ;;; Now, to build out the class hierarchy. ;;; -;; Applicables and their classes. (define-standard-class <procedure-class> (<class>)) (define-standard-class <applicable-struct-class> (<procedure-class>)) @@ -630,7 +629,6 @@ subclasses of @var{c}." <extended-generic-with-setter>) #:metaclass <applicable-struct-with-setter-class>) -;; Methods (define-standard-class <method> (<object>) generic-function specializers @@ -641,7 +639,6 @@ subclasses of @var{c}." (define-standard-class <accessor-method> (<method>) (slot-definition #:init-keyword #:slot-definition)) -;; Primitive types classes (define-standard-class <boolean> (<top>)) (define-standard-class <char> (<top>)) (define-standard-class <list> (<top>)) @@ -702,6 +699,18 @@ function." (struct-set! <applicable> class-index-direct-subclasses (cons class subclasses))))) + + + +;;; +;;; At this point we have defined the class hierarchy, and it's time to +;;; move on to instance allocation and generics. Once we have generics, +;;; we'll fill out the metaobject protocol. +;;; +;;; Here we define a limited version of `make', so that we can allocate +;;; instances of specific classes. This definition will be replaced +;;; later. +;;; (define (%invalidate-method-cache! gf) (slot-set! gf 'procedure (delayed-compile gf)) (slot-set! gf 'effective-methods '())) @@ -726,12 +735,6 @@ followed by its associated value. If @var{l} does not hold a value for (scm-error 'wrong-type-arg #f "Not a keyword: ~S" (list kw) #f)) (if (eq? kw key) arg (lp l)))))) -;; A simple make which will be redefined later. This version handles -;; only creation of gf, methods and classes (no instances). -;; -;; Since this code will disappear when Goops will be fully booted, -;; no precaution is taken to be efficient. -;; (define (%allocate-instance class) (let ((obj (allocate-struct class (struct-ref class class-index-nfields)))) (%clear-fields! obj) @@ -778,6 +781,13 @@ followed by its associated value. If @var{l} does not hold a value for @code{#f} otherwise." (and (memq class (class-precedence-list (class-of obj))) #t)) + + + +;;; +;;; Slot access. +;;; + ;; In the future, this function will return the effective slot ;; definition associated with SLOT_NAME. Now it just returns some of ;; the information which will be stored in the effective slot |