A vtable can contain more than one entry for the same message. Such
entries are distinguished by their roles. A message always has an entry
- with the `nil role. No other roles are currently defined, though they may
- be introduced by extensions.
+ with the `nil role; in addition, a varargs message also has a `:valist'
+ role, which accepts a `va_list' argument in place of the variable argument
+ listNo other roles are currently defined, though they may be introduced by
+ extensions.
The boundaries between a method entry and the effective method
is (intentionally) somewhat fuzzy. In extreme cases, the effective method
(defgeneric method-entry-slot-name-by-role (entry role name)
(:documentation "Easier implementation for `method-entry-slot-name'.")
- (:method ((entry method-entry) (role (eql nil)) name) name))
+ (:method ((entry method-entry) (role (eql nil)) name) name)
+ (:method ((entry method-entry) (role (eql :valist)) name)
+ (format nil "~A__v" name)))
(export 'effective-method-basic-argument-names)
(defgeneric effective-method-basic-argument-names (method)