chiark / gitweb /
lib/keyword.c (kw_parseempty): Use correct variable scanning `kwval' list.
[sod] / src / method-proto.lisp
index 048837439a1e1ace9b2aacdb230358a71062835b..0a20f39aa4729fd687af011ed414bbbc05820237 100644 (file)
@@ -49,6 +49,13 @@ (defclass effective-method ()
    will be a list of applicable methods sorted in most-to-least specific
    order."))
 
    will be a list of applicable methods sorted in most-to-least specific
    order."))
 
+(export 'sod-message-receiver-type)
+(defgeneric sod-message-receiver-type (message class)
+  (:documentation
+   "Return the type of the `me' argument in a MESSAGE received by CLASS.
+
+   Typically this will just be `CLASS *' or `const CLASS *'."))
+
 (export 'sod-message-applicable-methods)
 (defgeneric sod-message-applicable-methods (message class)
   (:documentation
 (export 'sod-message-applicable-methods)
 (defgeneric sod-message-applicable-methods (message class)
   (:documentation
@@ -340,6 +347,15 @@ (defgeneric simple-method-body (method codegen target)
 
 (definst convert-to-ilayout (stream :export t)
     (%class chain-head %expr)
 
 (definst convert-to-ilayout (stream :export t)
     (%class chain-head %expr)
+  "Expression to convert EXPR to point to its enclosing `ilayout'.
+
+   Given a pointer EXPR which points into a direct instance of CLASS,
+   specifically to the `ichain' whose head class is CHAIN-HEAD, evaluate the
+   base address of the enclosing `ilayout' structure.
+
+   The output looks like:
+
+       SOD_ILAYOUT(CLASS, NICK, EXPR)"
   (format stream "SOD_ILAYOUT(~@<~A, ~_~A, ~_~A~:>)"
          class (sod-class-nickname chain-head) expr))
 
   (format stream "SOD_ILAYOUT(~@<~A, ~_~A, ~_~A~:>)"
          class (sod-class-nickname chain-head) expr))