Package Documentation

Object: VANILLA-MIXIN* (The :GENDL Package)
Mixins: STANDARD-OBJECT

Description

Vanilla-Mixin is automatically inherited by every object created in GDL. It provides basic messages which are common to all GDL objects defined with the define-object macro, unless :no-vanilla-mixin t is specified at the toplevel of the define-object form.


Input Slots (optional)

HIDDEN? boolean

Indicates whether the object should effectively be a hidden-object even if specified in :objects. Default is nil.


ROOT gdl instance

The root-level node in this object's ``tree'' (instance hierarchy).


SAFE-CHILDREN list of gdl instances

All objects from the :objects specification, including elements of sequences as flat lists. Any children which throw errors come back as a plist with error information


STRINGS-FOR-DISPLAY string or list of strings

Determines how the name of objects of this type will be printed in most places. This defaults to the name-for-display (generally the part's name as specified in its parent), followed by an index number if the part is an element of a sequence.


VISIBLE-CHILDREN list of gdl instances

Additional objects to display in Tatu tree. Typically this would be a subset of hidden-children. Defaults to NIL.



Computed Slots

AGGREGATE gdl instance

In an element of a sequence, this is the container object which holds all elements.


ALL-MIXINS list of symbols

Lists all the superclasses of the type of this object.


CHILDREN list of gdl instances

All objects from the :objects specification, including elements of sequences as flat lists.


DIRECT-MIXINS list of symbols

Lists the direct superclasses of the type of this object.


FIRST? boolean

For elements of sequences, T iff there is no previous element.


HIDDEN-CHILDREN list of gdl instances

All objects from the :hidden-objects specification, including elements of sequences as flat lists.


INDEX integer

Sequential index number for elements of a sequence, NIL for singular objects.


LAST? boolean

For elements of sequences, T iff there is no next element.


LEAF? boolean

T if this object has no children, NIL otherwise.


LEAVES list of gdl objects

A Collection of the leaf nodes of the given object.


NAME-FOR-DISPLAY keyword symbol

The part's simple name, derived from its object specification in the parent or from the type name if this is the root instance.


NEXT gdl instance

For elements of sequences, returns the next part in the sequence.


PARENT gdl instance

The parent of this object, or NIL if this is the root object.


PREVIOUS gdl instance

For elements of sequences, returns the previous part in the sequence.


ROOT-PATH list of symbols or of pairs of symbol and integer

Indicates the path through the instance hierarchy from the root to this object. Can be used in conjunction with the follow-root-path GDL function to return the actual instance.


ROOT-PATH-LOCAL list of symbols or of pairs of symbol and integer

Indicates the path through the instance hierarchy from the local root to this object. Can be used in conjunction with the follow-root-path GDL function to return the actual instance.


ROOT? boolean

T iff this part has NIL as its parent and therefore is the root node.


SAFE-HIDDEN-CHILDREN list of gdl instances

All objects from the :hidden-objects specification, including elements of sequences as flat lists. Any children which throw errors come back as a plist with error information


TYPE symbol

The GDL Type of this object.



GDL Functions

DOCUMENTATION plist

Returns the :documentation plist which has been specified the specific part type of this instance.


FOLLOW-ROOT-PATH gdl instance

Using this instance as the root, follow the reference chain represented by the given path.

arguments:
path List of Symbols or Pairs of Symbol and Integer

MESSAGE-DOCUMENTATION string

This is synonymous with slot-documentation


MESSAGE-LIST list of keyword symbols

Returns the messages (slots, objects, and functions) of this object, according to the filtering criteria as specified by the arguments.

keyword arguments:
category Keyword, Default Value: :ALL
Either :all or the individual category of messages to be returned. This can be one of:
  • :computed-slots
  • :settable-computed-slots
  • :required-input-slots
  • :optional-input-slots
  • :defaulted-input-slots
  • :query-slots
  • :functions
  • :objects
  • :quantified-objects
  • :hidden-objects
  • :quantified-hidden-objects
message-type Keyword Symbol, :local or :global, Default Value: :GLOBAL
Indicates whether to return messages only from the local specific part type, or from all superclasses (mixins) as well
return-category? Boolean, Default Value: NIL
Indicates whether or not the category of each message should be returned before each message in the returned list
base-part-type Symbol naming a GDL Part Type, Default Value: NIL
Indicates a ``base'' part from which no messages should be returned, nor should messages be returned from superclasses (mixins) of this base part. If NIL (the default), messages are considered from all superclasses
sort-order Keyword Symbol, Default Value: :UNSORTED
One of: :unsorted, :by-category, or :by-name
filter Function Object of two arguments or :normal, Default Value: :NORMAL
If a function object, applies this function to each returned category and message keyword, and filters out all pairs for which the function returns NIL. If :normal (the default), then no filtering is done

MIXINS list of symbols

Returns the names of the immediate superclasses of this object.

keyword arguments:
local? Boolean, Default Value: T
Indicates whether to give only direct mixins or all mixins from the entire inheritance hierarchy

RESTORE-ALL-DEFAULTS! void

Restores all settable-slots in this instance to their default values.


RESTORE-ROOT!

Multiple Values: Total root-paths affected and total slots affected. Reverts any "remembered" bashed slots, starting from the root, to their default values. Note that any call to `set-slot!` or `set-slots!` or any use of web form-controls will result in "remembered values". Note that there is a `:remember?` keyword argument to `set-slot!` which defaults to `t` but if you specify it as `nil`, you can bash values without having them "remembered" and such slots would not be affected by this function.


RESTORE-SLOT-DEFAULT! nil

Restores the value of the given slot to its default, thus ``undoing'' any forcibly set value in the slot. Any dependent slots in the tree will respond accordingly when they are next demanded. Note that the slot must be specified as a keyword symbol (i.e. prepended with a colon (``:'')), otherwise it will be evaluated as a variable according to normal Lisp functional evaluation rules.

arguments:
slot Keyword Symbol
key:
(force? "Boolean. Specify as t if you want to force non-settable slots to recompute (e.g. reading from databases or external files). Defaults to nil.")

RESTORE-SLOT-DEFAULTS! nil

Restores the value of the given slots to their defaults, thus ``undoing'' any forcibly set values in the slots. Any dependent slots in the tree will respond accordingly when they are next demanded. Note that the slots must be specified as keyword symbols (i.e. prepended with colons (``:'')), otherwise they will be evaluated as variables according to normal Lisp functional evaluation rules.

arguments:
slots List of Keyword Symbols
keyword arguments:
force? Boolean, Default Value: *FORCE-RESTORE-SLOT-DEFAULT?*
Indicates whether the slot values should be unbound, regardless of whether it had actually been bashed previously

RESTORE-TREE! void

Restores all settable-slots in this instance, and recursively in all descendant instances, to their default values.


SET-SLOT! nil

Forcibly sets the value of the given slot to the given value. The slot must be defined as :settable for this to work properly. Any dependent slots in the tree will respond accordingly when they are next demanded. Note that the slot must be specified as a keyword symbol (i.e. prepended with a colon (``:'')), otherwise it will be evaluated as a variable according to normal Lisp functional evaluation rules.

Note also that this must not be called (either directly or indirectly) from within the body of a Gendl computed-slot. The caching and dependency tracking mechanism in Gendl will not work properly if this is called from the body of a computed-slot, and furthermore a runtime error will be generated.

arguments:
slot Keyword Symbol
value Lisp Object
(e.g. Number, String, List, etc.)
keyword arguments:
remember? Boolean, Default Value: T
Determines whether to save in current version-tree
warn-on-non-toplevel? Boolean, Default Value: T
Determines whether to warn if this is called from the body of a cached slot

SET-SLOTS! nil

Forcibly sets the value of the given slots to the given values. The slots must be defined as :settable for this to work properly. Any dependent slots in the tree will respond accordingly when they are next demanded. Note that the slots must be specified as a keyword symbols (i.e. prepended with a colon (``:'')), otherwise they will be evaluated as variables according to normal Lisp functional evaluation rules.

arguments:
slots-and-values Plist
Contains alternating slots and values to which they are to be set
warn-on-non-toplevel? Boolean
Indicates whether a warning should be issued for calling from inside the body of a cached slot. Default is t

SLOT-DOCUMENTATION plist of symbols and strings

Returns the part types and slot documentation which has been specified for the given slot, from most specific to least specific in the CLOS inheritance order. Note that the slot must be specified as a keyword symbol (i.e. prepended with a colon (``:'')), otherwise it will be evaluated as a variable according to normal Lisp functional evaluation rules.

arguments:
slot Keyword Symbol
Names the slot for which documentation is being requested

SLOT-SOURCE body of gdl code, in list form

.

arguments:
slot Keyword Symbol
Names the slot for which documentation is being requested

SLOT-STATUS keyword symbol

Describes the current status of the requested slot:

  1. :unbound: it has not yet been demanded (this could mean either it has never been demanded, or something it depends on has been modified since the last time it was demanded and eager setting is not enabled).
  2. :evaluated: it has been demanded and it is currently bound to the default value based on the code.
  3. :set: (for :settable slots only, which includes all required :input-slots) it has been modified and is currently bound to the value to which it was explicitly set.
  4. :toplevel: (for root-level object only) its value was passed into the root-level object as a toplevel input at the time of object instantiation.


TOGGLE-SLOT! void

Sets giving slot to its boolean opposite. &args (slot "Keyword symbol. Name of the slot as a keyword symbol.")


UPDATE! void

Uncaches all cached data in slots and objects throughout the instance tree from this node, forcing all code to run again the next time values are demanded. This is useful for updating an existing model or part of an existing model after making changes and recompiling/reloading the code of the underlying definitions. Any set (modified) slot values will, however, be preserved by the update.


WRITE-SNAPSHOT void

Writes a file containing the toplevel inputs and modified settable-slots starting from the root of the current instance. Typically this file can be read back into the system using the read-snapshot function.

keyword arguments:
filename String or pathname, Default Value: "/tmp/snap.gdl"
The target file to be written
root-paths-to-ignore List of root-paths or nil, Default Value: NIL
Any objects with matching root-path will be ignored for the snapshot write

Package Documentation