The fmcs Reference Manual

This is the fmcs Reference Manual, version 2.4.0, generated automatically by Declt version 4.0 beta 2 "William Riker" on Mon Feb 26 16:26:10 2024 GMT+0.

Table of Contents


1 Introduction


2 Systems

The main system appears first, followed by any subsystem dependency.


2.1 fmcs

Flavors Meta-Class System (FMCS) for Demonic Metaprogramming in Common Lisp, an alternative to CLOS+MOP, restored from the CMU AI Repository.

Maintainer

"the Phoeron" Colin J.E. Lupton <>

Authors

"the Phoeron" Colin J.E. Lupton <>
Jürgen Walther <>
Pierre Cointe
Thomas Christaller
Harry Bretthauer
Jürgen Kopp

Contact

Home Page

https://thephoeron.github.io/fmcs/

Source Control

(GIT https://github.com/thephoeron/fmcs.git)

Bug Tracker

https://github.com/thephoeron/fmcs/issues

License

MIT

Version

2.4.0

Dependency

fare-quasiquote-extras (system)., for feature :sbcl

Source

fmcs.asd.

Child Components

3 Files

Files are sorted by type and then listed depth-first from the systems components trees.


3.1 Lisp


3.1.1 fmcs/fmcs.asd

Source

fmcs.asd.

Parent Component

fmcs (system).

ASDF Systems

fmcs.

Packages

fmcs/asdf.


3.1.2 fmcs/package.lisp

Source

fmcs.asd.

Parent Component

fmcs (system).

Packages

fmcs.


3.1.3 fmcs/core.lisp

Dependency

package.lisp (file).

Source

fmcs.asd.

Parent Component

fmcs (system).

Public Interface

print-object (method).

Internals

3.1.4 fmcs/root.lisp

Dependency

core.lisp (file).

Source

fmcs.asd.

Parent Component

fmcs (system).


3.1.5 fmcs/methods.lisp

Dependency

root.lisp (file).

Source

fmcs.asd.

Parent Component

fmcs (system).


3.1.6 fmcs/util.lisp

Dependency

methods.lisp (file).

Source

fmcs.asd.

Parent Component

fmcs (system).

Public Interface
Internals

3.1.7 fmcs/map.lisp

Dependency

util.lisp (file).

Source

fmcs.asd.

Parent Component

fmcs (system).

Public Interface
Internals

3.1.8 fmcs/fmcs.lisp

Dependency

map.lisp (file).

Source

fmcs.asd.

Parent Component

fmcs (system).


4 Packages

Packages are listed by definition order.


4.1 fmcs

Source

package.lisp.

Nicknames
  • flavors-metaclass-system
  • flavors
Use List

common-lisp.

Public Interface
Internals

4.2 fmcs/asdf

Source

fmcs.asd.

Nickname

fmcs/sys

Use List
  • asdf/interface.
  • common-lisp.
  • uiop/driver.

5 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


5.1 Public Interface


5.1.1 Special variables

Special Variable: *redefine-warnings*
Package

fmcs.

Source

map.lisp.


5.1.2 Macros

Macro: $send (object message &rest args)
Package

fmcs.

Source

map.lisp.

Macro: $slot (slot-name)
Package

fmcs.

Source

map.lisp.

Macro: compile-$flavor-$methods (&rest flavors)
Package

fmcs.

Source

map.lisp.

Macro: continue-whopper (&rest changed-args)
Package

fmcs.

Source

map.lisp.

Macro: def$behavior ((name . type&selector) varlist . body)
Package

fmcs.

Source

map.lisp.

Macro: def$flavor (a_class a_list-of-instance-variables a_list-of-superclasses &rest options)
Package

fmcs.

Source

map.lisp.

Macro: def$frame (name instance-vars components &rest options)
Package

fmcs.

Source

map.lisp.

Macro: def$method ((name . type&selector) varlist . body)
Package

fmcs.

Source

map.lisp.

Macro: defwhopper ((flavor-name operation) arglist &body body)
Package

fmcs.

Source

map.lisp.

Macro: is-traced$method ((flav-name selector))

untraces a method

Package

fmcs.

Source

map.lisp.

Macro: lexpr-$send (object message &rest args)
Package

fmcs.

Source

map.lisp.

Macro: make-$instance (flavor &rest initializations)
Package

fmcs.

Source

map.lisp.

Macro: make-window-or-instance (flavor &rest initializations)
Package

fmcs.

Source

map.lisp.

Macro: symbol-value-in-$instance (instance slot-name)
Package

fmcs.

Source

map.lisp.

Macro: trace$method ((flav-name selector))

traces a method on *trace-output*

Package

fmcs.

Source

map.lisp.

Macro: undef$method ((name . type&selector))
Package

fmcs.

Source

map.lisp.

Macro: untrace$method ((flav-name selector))

untraces a method

Package

fmcs.

Source

map.lisp.


5.1.3 Ordinary functions

Function: flavor-instancep (object)
Package

fmcs.

Source

map.lisp.

Function: flavor-type-of (object)
Package

fmcs.

Source

map.lisp.

Function: flavor-typep (object type)
Package

fmcs.

Source

map.lisp.

Function: flavorp (object)
Package

fmcs.

Source

map.lisp.

Function: get-flavor-instance-slots (instance)
Package

fmcs.

Source

map.lisp.

Function: mcs-is-traced (a_class selector)
Package

fmcs.

Source

util.lisp.

Function: mcs-trace (a_class selector)
Package

fmcs.

Source

util.lisp.

Function: mcs-untrace (a_class selector)
Package

fmcs.

Source

util.lisp.


5.1.4 Standalone methods

Method: print-object ((object mcsobject) stream)
Source

core.lisp.


5.2 Internals


5.2.1 Special variables

Special Variable: *indent-for-methods-trace*
Package

fmcs.

Source

util.lisp.

Special Variable: *save-combined-methods*
Package

fmcs.

Source

core.lisp.

Special Variable: flavor-class
Package

fmcs.

Source

map.lisp.

Special Variable: standard-accessors
Package

fmcs.

Source

core.lisp.

Special Variable: standard-class
Package

fmcs.

Source

core.lisp.

Special Variable: standard-object
Package

fmcs.

Source

core.lisp.


5.2.2 Macros

Macro: add-qualified-method (qualifier method-entry new-fn)
Package

fmcs.

Source

core.lisp.

Macro: after-of (applicable-methods)
Package

fmcs.

Source

core.lisp.

Macro: around-of (applicable-methods)
Package

fmcs.

Source

core.lisp.

Macro: before-of (applicable-methods)
Package

fmcs.

Source

core.lisp.

Macro: call-next-method (&rest changed-args)
Package

fmcs.

Source

core.lisp.

Macro: combine-class-methods (&rest classes)
Package

fmcs.

Source

core.lisp.

Macro: defclass (a_class a_list-of-instance-variables a_list-of-superclasses &key metaclass)
Package

fmcs.

Source

core.lisp.

Macro: defmetaclass (a_class a_list-of-instance-variables a_list-of-superclasses &key metaclass)
Package

fmcs.

Source

core.lisp.

Macro: defmethod ((a_class . qualifier-and-selector) parameter-list &rest body)
Package

fmcs.

Source

core.lisp.

Macro: demons-of (applicable-methods)
Package

fmcs.

Source

core.lisp.

Macro: generate-standard-accessors (nr)
Package

fmcs.

Source

core.lisp.

Macro: get-class ()
Package

fmcs.

Source

core.lisp.

Macro: get-class-slot (slot)
Package

fmcs.

Source

core.lisp.

Macro: get-combined-method (a_selector)
Package

fmcs.

Source

core.lisp.

Macro: get-qualified-method (qualifier list-of-methods)
Package

fmcs.

Source

core.lisp.

Macro: get-selector-entry (a_selector)
Package

fmcs.

Source

core.lisp.

Macro: get-slot (slot)
Package

fmcs.

Source

core.lisp.

Macro: index-of-all-slot-defaults ()
Package

fmcs.

Source

core.lisp.

Macro: index-of-all-slots ()
Package

fmcs.

Source

core.lisp.

Macro: index-of-basicnew-fn ()
Package

fmcs.

Source

core.lisp.

Macro: index-of-cplist ()
Package

fmcs.

Source

core.lisp.

Macro: index-of-isit ()
Package

fmcs.

Source

core.lisp.

Macro: index-of-methods ()
Package

fmcs.

Source

core.lisp.

Macro: index-of-name ()
Package

fmcs.

Source

core.lisp.

Macro: index-of-own-slots ()
Package

fmcs.

Source

core.lisp.

Macro: index-of-slot-accessor-fn ()
Package

fmcs.

Source

core.lisp.

Macro: index-of-subclasses ()
Package

fmcs.

Source

core.lisp.

Macro: index-of-supers ()
Package

fmcs.

Source

core.lisp.

Macro: lambda-expr-of (method)
Package

fmcs.

Source

core.lisp.

Macro: make-instance (a_class &rest initializations)
Package

fmcs.

Source

core.lisp.

Macro: mcs-get-slot (vector slot-position)
Package

fmcs.

Source

core.lisp.

Macro: mcs-slot-value (object slot-position)
Package

fmcs.

Source

core.lisp.

Macro: primary-of (applicable-methods)
Package

fmcs.

Source

core.lisp.

Macro: qualifier-of (method)
Package

fmcs.

Source

core.lisp.

Macro: send-self (sel &rest args)
Package

fmcs.

Source

core.lisp.


5.2.3 Setf expanders

Setf Expander: (setf slot-value) (object slot)
Package

fmcs.

Source

core.lisp.

Reader

slot-value (function).

Writer

set-slot-value (function).


5.2.4 Ordinary functions

Function: adjust-standard-accessors (array nr)
Package

fmcs.

Source

core.lisp.

Function: call-next-method-fn (self class-env inst-env caller next-methods args)
Package

fmcs.

Source

core.lisp.

Function: combine-class-method (a_class a_selector)
Package

fmcs.

Source

core.lisp.

Function: compile-slot-references (slot-names lambda-body &optional slot-access-fn)
Package

fmcs.

Source

map.lisp.

Function: copy-mcsobject (instance)
Package

fmcs.

Source

core.lisp.

Function: copy-method-entry (instance)
Package

fmcs.

Source

core.lisp.

Function: decrement-indent-for-methods-trace ()
Package

fmcs.

Source

util.lisp.

Function: demon-method-combination (self class-env inst-env selector applicable-methods args)
Package

fmcs.

Source

core.lisp.

Function: describe-mcs (object &optional stream)
Package

fmcs.

Source

core.lisp.

Function: gen-get-slot-closure (index)
Package

fmcs.

Source

core.lisp.

Function: gen-get-slot-method (index)
Package

fmcs.

Source

core.lisp.

Function: gen-set-slot-closure (index)
Package

fmcs.

Source

core.lisp.

Function: gen-set-slot-method (index)
Package

fmcs.

Source

core.lisp.

Function: get-all-required-slot-names (class)
Package

fmcs.

Source

map.lisp.

Function: get-method-entry (a_class a_selector)
Package

fmcs.

Source

core.lisp.

Function: increment-indent-for-methods-trace ()
Package

fmcs.

Source

util.lisp.

Function: make-lambda-expr (qualifier parameter-list body)
Package

fmcs.

Source

core.lisp.

Function: make-mcsobject (&key env)
Package

fmcs.

Source

core.lisp.

Function: make-method-entry (&key type methods-list combined-method)
Package

fmcs.

Source

core.lisp.

Reader: mcs-env (instance)
Writer: (setf mcs-env) (instance)
Package

fmcs.

Source

core.lisp.

Target Slot

env.

Function: mcsobject-p (object)
Package

fmcs.

Source

core.lisp.

Reader: method-entry-combined-method (instance)
Writer: (setf method-entry-combined-method) (instance)
Package

fmcs.

Source

core.lisp.

Target Slot

combined-method.

Reader: method-entry-methods-list (instance)
Writer: (setf method-entry-methods-list) (instance)
Package

fmcs.

Source

core.lisp.

Target Slot

methods-list.

Function: method-entry-p (object)
Package

fmcs.

Source

core.lisp.

Reader: method-entry-type (instance)
Writer: (setf method-entry-type) (instance)
Package

fmcs.

Source

core.lisp.

Target Slot

type.

Function: modify-body (body add-parameter-list &optional result)
Package

fmcs.

Source

core.lisp.

Function: print-mcs (object stream depth)
Package

fmcs.

Source

core.lisp.

Function: redefine-class (old-class new-class)
Package

fmcs.

Source

map.lisp.

Function: redefine-subclasses (list-of-classes)
Package

fmcs.

Source

map.lisp.

Function: remove-invalid-combined-methods (a_class selector)
Package

fmcs.

Source

core.lisp.

Function: remove-subclass (class superclasses)
Package

fmcs.

Source

map.lisp.

Function: required-instance-variables (options)
Package

fmcs.

Source

map.lisp.

Function: save-combined-method (class-env selector method-combination-fn applicable-methods)
Package

fmcs.

Source

core.lisp.

Function: send-fast (self sel &rest args)
Package

fmcs.

Source

core.lisp.

Function: send-message (self selector &rest args)
Package

fmcs.

Source

core.lisp.

Function: set-slot-value (object slot value)
Package

fmcs.

Source

core.lisp.

Setf expanders to this function

(setf slot-value).

Function: simple-method-combination (self class-env inst-env selector applicable-methods args)
Package

fmcs.

Source

core.lisp.

Function: slot-value (object slot)
Package

fmcs.

Source

core.lisp.

Setf expander for this function

(setf slot-value).

Function: standard-message-handler (self class-env inst-env selector args)
Package

fmcs.

Source

core.lisp.

Function: standard-method-combination (self class-env inst-env selector applicable-methods args)
Package

fmcs.

Source

core.lisp.

Function: standard-method-lookup (class-env a_selector)
Package

fmcs.

Source

core.lisp.

Function: sublis-select (a_list tree &optional test filter)
Package

fmcs.

Source

map.lisp.

Function: subst-$send-self (form)
Package

fmcs.

Source

map.lisp.

Function: traced-demon-combination (self class-env inst-env selector applicable-methods args)
Package

fmcs.

Source

util.lisp.

Function: traced-simple-combination (self class-env inst-env selector applicable-methods args)
Package

fmcs.

Source

util.lisp.

Function: where-method-lookup (class-env a_selector)
Package

fmcs.

Source

util.lisp.


5.2.5 Structures

Structure: mcsobject
Package

fmcs.

Source

core.lisp.

Direct superclasses

structure-object.

Direct methods

print-object.

Direct slots
Slot: env
Readers

mcs-env.

Writers

(setf mcs-env).

Structure: method-entry
Package

fmcs.

Source

core.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: type
Package

common-lisp.

Readers

method-entry-type.

Writers

(setf method-entry-type).

Slot: methods-list
Readers

method-entry-methods-list.

Writers

(setf method-entry-methods-list).

Slot: combined-method
Readers

method-entry-combined-method.

Writers

(setf method-entry-combined-method).


Appendix A Indexes


A.1 Concepts


A.2 Functions

Jump to:   $   (  
A   B   C   D   F   G   I   L   M   P   Q   R   S   T   U   W  
Index Entry  Section

$
$send: Public macros
$slot: Public macros

(
(setf mcs-env): Private ordinary functions
(setf method-entry-combined-method): Private ordinary functions
(setf method-entry-methods-list): Private ordinary functions
(setf method-entry-type): Private ordinary functions
(setf slot-value): Private setf expanders

A
add-qualified-method: Private macros
adjust-standard-accessors: Private ordinary functions
after-of: Private macros
around-of: Private macros

B
before-of: Private macros

C
call-next-method: Private macros
call-next-method-fn: Private ordinary functions
combine-class-method: Private ordinary functions
combine-class-methods: Private macros
compile-$flavor-$methods: Public macros
compile-slot-references: Private ordinary functions
continue-whopper: Public macros
copy-mcsobject: Private ordinary functions
copy-method-entry: Private ordinary functions

D
decrement-indent-for-methods-trace: Private ordinary functions
def$behavior: Public macros
def$flavor: Public macros
def$frame: Public macros
def$method: Public macros
defclass: Private macros
defmetaclass: Private macros
defmethod: Private macros
defwhopper: Public macros
demon-method-combination: Private ordinary functions
demons-of: Private macros
describe-mcs: Private ordinary functions

F
flavor-instancep: Public ordinary functions
flavor-type-of: Public ordinary functions
flavor-typep: Public ordinary functions
flavorp: Public ordinary functions
Function, (setf mcs-env): Private ordinary functions
Function, (setf method-entry-combined-method): Private ordinary functions
Function, (setf method-entry-methods-list): Private ordinary functions
Function, (setf method-entry-type): Private ordinary functions
Function, adjust-standard-accessors: Private ordinary functions
Function, call-next-method-fn: Private ordinary functions
Function, combine-class-method: Private ordinary functions
Function, compile-slot-references: Private ordinary functions
Function, copy-mcsobject: Private ordinary functions
Function, copy-method-entry: Private ordinary functions
Function, decrement-indent-for-methods-trace: Private ordinary functions
Function, demon-method-combination: Private ordinary functions
Function, describe-mcs: Private ordinary functions
Function, flavor-instancep: Public ordinary functions
Function, flavor-type-of: Public ordinary functions
Function, flavor-typep: Public ordinary functions
Function, flavorp: Public ordinary functions
Function, gen-get-slot-closure: Private ordinary functions
Function, gen-get-slot-method: Private ordinary functions
Function, gen-set-slot-closure: Private ordinary functions
Function, gen-set-slot-method: Private ordinary functions
Function, get-all-required-slot-names: Private ordinary functions
Function, get-flavor-instance-slots: Public ordinary functions
Function, get-method-entry: Private ordinary functions
Function, increment-indent-for-methods-trace: Private ordinary functions
Function, make-lambda-expr: Private ordinary functions
Function, make-mcsobject: Private ordinary functions
Function, make-method-entry: Private ordinary functions
Function, mcs-env: Private ordinary functions
Function, mcs-is-traced: Public ordinary functions
Function, mcs-trace: Public ordinary functions
Function, mcs-untrace: Public ordinary functions
Function, mcsobject-p: Private ordinary functions
Function, method-entry-combined-method: Private ordinary functions
Function, method-entry-methods-list: Private ordinary functions
Function, method-entry-p: Private ordinary functions
Function, method-entry-type: Private ordinary functions
Function, modify-body: Private ordinary functions
Function, print-mcs: Private ordinary functions
Function, redefine-class: Private ordinary functions
Function, redefine-subclasses: Private ordinary functions
Function, remove-invalid-combined-methods: Private ordinary functions
Function, remove-subclass: Private ordinary functions
Function, required-instance-variables: Private ordinary functions
Function, save-combined-method: Private ordinary functions
Function, send-fast: Private ordinary functions
Function, send-message: Private ordinary functions
Function, set-slot-value: Private ordinary functions
Function, simple-method-combination: Private ordinary functions
Function, slot-value: Private ordinary functions
Function, standard-message-handler: Private ordinary functions
Function, standard-method-combination: Private ordinary functions
Function, standard-method-lookup: Private ordinary functions
Function, sublis-select: Private ordinary functions
Function, subst-$send-self: Private ordinary functions
Function, traced-demon-combination: Private ordinary functions
Function, traced-simple-combination: Private ordinary functions
Function, where-method-lookup: Private ordinary functions

G
gen-get-slot-closure: Private ordinary functions
gen-get-slot-method: Private ordinary functions
gen-set-slot-closure: Private ordinary functions
gen-set-slot-method: Private ordinary functions
generate-standard-accessors: Private macros
get-all-required-slot-names: Private ordinary functions
get-class: Private macros
get-class-slot: Private macros
get-combined-method: Private macros
get-flavor-instance-slots: Public ordinary functions
get-method-entry: Private ordinary functions
get-qualified-method: Private macros
get-selector-entry: Private macros
get-slot: Private macros

I
increment-indent-for-methods-trace: Private ordinary functions
index-of-all-slot-defaults: Private macros
index-of-all-slots: Private macros
index-of-basicnew-fn: Private macros
index-of-cplist: Private macros
index-of-isit: Private macros
index-of-methods: Private macros
index-of-name: Private macros
index-of-own-slots: Private macros
index-of-slot-accessor-fn: Private macros
index-of-subclasses: Private macros
index-of-supers: Private macros
is-traced$method: Public macros

L
lambda-expr-of: Private macros
lexpr-$send: Public macros

M
Macro, $send: Public macros
Macro, $slot: Public macros
Macro, add-qualified-method: Private macros
Macro, after-of: Private macros
Macro, around-of: Private macros
Macro, before-of: Private macros
Macro, call-next-method: Private macros
Macro, combine-class-methods: Private macros
Macro, compile-$flavor-$methods: Public macros
Macro, continue-whopper: Public macros
Macro, def$behavior: Public macros
Macro, def$flavor: Public macros
Macro, def$frame: Public macros
Macro, def$method: Public macros
Macro, defclass: Private macros
Macro, defmetaclass: Private macros
Macro, defmethod: Private macros
Macro, defwhopper: Public macros
Macro, demons-of: Private macros
Macro, generate-standard-accessors: Private macros
Macro, get-class: Private macros
Macro, get-class-slot: Private macros
Macro, get-combined-method: Private macros
Macro, get-qualified-method: Private macros
Macro, get-selector-entry: Private macros
Macro, get-slot: Private macros
Macro, index-of-all-slot-defaults: Private macros
Macro, index-of-all-slots: Private macros
Macro, index-of-basicnew-fn: Private macros
Macro, index-of-cplist: Private macros
Macro, index-of-isit: Private macros
Macro, index-of-methods: Private macros
Macro, index-of-name: Private macros
Macro, index-of-own-slots: Private macros
Macro, index-of-slot-accessor-fn: Private macros
Macro, index-of-subclasses: Private macros
Macro, index-of-supers: Private macros
Macro, is-traced$method: Public macros
Macro, lambda-expr-of: Private macros
Macro, lexpr-$send: Public macros
Macro, make-$instance: Public macros
Macro, make-instance: Private macros
Macro, make-window-or-instance: Public macros
Macro, mcs-get-slot: Private macros
Macro, mcs-slot-value: Private macros
Macro, primary-of: Private macros
Macro, qualifier-of: Private macros
Macro, send-self: Private macros
Macro, symbol-value-in-$instance: Public macros
Macro, trace$method: Public macros
Macro, undef$method: Public macros
Macro, untrace$method: Public macros
make-$instance: Public macros
make-instance: Private macros
make-lambda-expr: Private ordinary functions
make-mcsobject: Private ordinary functions
make-method-entry: Private ordinary functions
make-window-or-instance: Public macros
mcs-env: Private ordinary functions
mcs-get-slot: Private macros
mcs-is-traced: Public ordinary functions
mcs-slot-value: Private macros
mcs-trace: Public ordinary functions
mcs-untrace: Public ordinary functions
mcsobject-p: Private ordinary functions
Method, print-object: Public standalone methods
method-entry-combined-method: Private ordinary functions
method-entry-methods-list: Private ordinary functions
method-entry-p: Private ordinary functions
method-entry-type: Private ordinary functions
modify-body: Private ordinary functions

P
primary-of: Private macros
print-mcs: Private ordinary functions
print-object: Public standalone methods

Q
qualifier-of: Private macros

R
redefine-class: Private ordinary functions
redefine-subclasses: Private ordinary functions
remove-invalid-combined-methods: Private ordinary functions
remove-subclass: Private ordinary functions
required-instance-variables: Private ordinary functions

S
save-combined-method: Private ordinary functions
send-fast: Private ordinary functions
send-message: Private ordinary functions
send-self: Private macros
set-slot-value: Private ordinary functions
Setf Expander, (setf slot-value): Private setf expanders
simple-method-combination: Private ordinary functions
slot-value: Private ordinary functions
standard-message-handler: Private ordinary functions
standard-method-combination: Private ordinary functions
standard-method-lookup: Private ordinary functions
sublis-select: Private ordinary functions
subst-$send-self: Private ordinary functions
symbol-value-in-$instance: Public macros

T
trace$method: Public macros
traced-demon-combination: Private ordinary functions
traced-simple-combination: Private ordinary functions

U
undef$method: Public macros
untrace$method: Public macros

W
where-method-lookup: Private ordinary functions