Reserved Symbols in GDL/GWL =========================== When defining your own objects in GDL, there are a few message names you should avoid using (i.e. overriding). This only applies to message and input names within a define-object form, since the :GDL and :GWL packages have definition locks set. The package definition locks avoid accidental redefinition of symbols naming GDL/GWL functions, macros, parameters, constants, and classes. In a future GDL release, automatic protection against redefining these pre-defined messages will probably be added. But currently it is up to the application developer to avoid using these names. 1. Symbols to Avoid Using as Messages Within a Define-Object Form ============================================================== This includes :input-slots, :computed-slots, :objects, :hidden-objects, and :functions. o From Vanilla-Mixin (which means these apply to any define-object form). Please see the GDL Reference Section on Vanilla-Mixin for more details: aggregate children documentation first first? follow-root-path hidden-children index last last? leaf? message-list mixins next parent parent-tree previous restore-slot-default! root root-path root? set-slot! set-slots! slot-documentation type update! o From Base-Object (which means these apply to any define-object which mixes in base-object or any of its subclasses). Please see the GDL Reference Section on Base-Object for more details (note that color and line-thickness can be specified in the display-controls, and should not be specified as their own messages): axis-vector color-decimal edge-center face-center face-normal-vector line-thickness local-center obliqueness vertex 2. Symbols to Avoid Using as Input Specifications to an Object or Hidden-Object =============================================================================== The following have special meaning within an :objects or :hidden-objects specification and should not be used except for the intended purpose: :parameters Used to pass a plist of input specifications into a child object, e.g: :parameters (list :length 10 :width 20 :height 30) is functionally equivalent to: :length 10 :width 20 :height 30 :pass-down Used as shorthand for passing messages down to the child part, e.g: :pass-down (data labels colors) is equivalent to: :data (the data) :labels (the labels) :colors (the colors) :sequence Used for making a sequence of parts, as with ... :sequence (:size (length (the data))) ... for a standard sequence, or ... :sequence (:indices (list 1 2 3)) ... for a variable sequence. :type Used to specify the type or types of the child object(s). 3. Internal naming convention with the percent sign ("%") ========================================================= Finally, in addition to the above specific messages, you should avoid naming any messages starting and ending with a percent character ("%"), e.g. %my-message% -- this is a convention used to name internal, private GDL messages.