next up previous contents index
Next: 3.2 Core Behaviors Up: 3 The Slate World Previous: 3 The Slate World   Contents   Index


3.1 Overall Organization

3.1.1 The lobby

The lobby is the root namespace object for the Slate object system; it is the ``room'' by which objects enter the Slate world. All ``global'' objects are really only globally accessible because the lobby is delegated to by lexical contexts, directly or indirectly. The lobby in turn may (and often does) delegate to other namespaces which contain different categorized objects of interest to the applications programmer, and this can be altered at run-time.

Every object reference which is not local to a block closure is sent to the enclosing namespace for resolution, which by default is the root namespace, the lobby (nested closures refer first to their surrounding closure). The lobby contains a loopback slot referring to itself by that name. To add or arrange globals, either implicit sends or explicit references to the lobby can be made. (Consider it good style to directly reference it.)

The lobby is essentially a threading context, and in the future bootstrap will be instantiable in that sense.

3.1.2 Naming and Paths

The lobby provides access to the major Namespaces, which are objects suitable for organizing things (for now, they are essentially just Cloneable objects). The most important one is prototypes, which contains the major kinds of shared behavior used by the system. Objects there may be cloned and used directly, but they should not themselves be manipulated without some design effort, since these are global resources, having a name-path identifier which can be freely shared. prototypes is inherited by the lobby, so it is not necessary to use the namespace path to identify, for example, Collection or Boolean. However, without explicitly mentioning the path, adding slots will use the lobby or the local context by default. To use the current namespace, an implicit-context message here is provided which will answer the nearest surrounding namespace object in the context, which is the lobby by default, but is polymorphic to namespace shifts.

The prototypes namespace further contains inherited namespaces for, by example, collections, and can be otherwise enhanced to divide up the system into manageable pieces.

next up previous contents index
Next: 3.2 Core Behaviors Up: 3 The Slate World Previous: 3 The Slate World   Contents   Index
Brian Rice 2005-11-21