This is a roadmap to the code layout in snit.tcl.

Package Definition
* package provide
* ::snit:: namespace definition; exports Snit commands.

Major Variable Definitions (this includes a whole lot of code)
* ::snit:: variable definitions:
    * reservedArgs
    * prettyStackTrace          Not used currently

* ::snit::typeTemplate          Template code shared by all Snit types.
                                As the type definition is parsed, it
                                produced text that gets inserted into
                                this template; then the template is
                                evaluated as though it were sourced
                                from a normal .tcl file.
    * Type namespace definition
         * User's typevariable definitions
    * Commands for use in type code
        * alias installhull
        * alias install
        * alias typevariable
        * alias variable
        * alias mytypevar
        * alias typevarname         Deprecated
        * alias myvar
        * alias varname             Deprecated
        * alias myproc
        * alias codename            Deprecated
        * alias mymethod
        * alias mytypemethod
        * alias from
    * Snit's internal variables
        * See dictionary.txt
    * Template Code -- Stuff that gets filled in.
        * proc Snit_instanceVars    Initializes instance variables
        * proc Snit_typeconstructor
    * Default Procs -- Stuff that's sometimes replaced.
        * proc Snit_constructor     The default constructor
        * proc Snit_destructor      The default destructor (empty)
    * %COMPILEDDEFS%
    * Call the Type Constructor

* ::snit::nominalTypeProc	Template for the normal type proc.
* ::snit::simpleTypeProc        Template for the simple type proc.
                                This is used when "-hastypemethods no";
                                all it does is create instances.

* ::snit::nominalInstanceProc	Template for the body of the normal
                                instance proc. Supports method
                                caching, delegation, etc.
* ::snit::simpleInstanceProc	Template for the body of the simple
                                instance proc, used when
                                "-simpledispatch yes".  Doesn't
                                support delegation, upvar,
                                hierarchical methods, or exotic return
                                types.
 
* Snit compilation variables
    * compiler			The name of the slave interpreter used
                                to "compile" type definitions
    * compile                   Array, accumulates results of
                                "compiling" type definitions
    * reservedwords             List of names that can't be used as
                                macros.  Basically, any command
                                defined before the first macro.

Compilation Commands
* proc ::snit::Comp.Init
* proc ::snit::Comp.Compile
* proc ::snit::Comp.SaveOptionInfo
* proc ::snit::Comp.Define
* proc ::snit::Comp.statement.pragma
* proc ::snit::Comp.statement.widgetclass
* proc ::snit::Comp.statement.hulltype
* proc ::snit::Comp.statement.constructor
* proc ::snit::Comp.statement.destructor
* proc ::snit::Comp.statement.option
* proc ::snit::Comp.OptionNameIsValid
* proc ::snit::Comp.statement.oncget
* proc ::snit::Comp.statement.onconfigure
* proc ::snit::Comp.statement.method
* proc ::snit::Comp.CheckMethodName
* proc ::snit::Comp.statement.typemethod
* proc ::snit::Comp.statement.typeconstructor
* proc ::snit::Comp.statement.proc
* proc ::snit::Comp.statement.typevariable
* proc ::snit::Comp.statement.variable
* proc ::snit::Comp.statement.typecomponent
* proc ::snit::Comp.DefineTypeComponent
* proc ::snit::Comp.statement.component
* proc ::snit::Comp.DefineComponent
* proc ::snit::Comp.statement.delegate
* proc ::snit::Comp.DelegatedTypemethod
* proc ::snit::Comp.DelegatedMethod
* proc ::snit::Comp.DelegatedOption
* proc ::snit::Comp.statement.expose

Public Commands
* proc ::snit::compile
* proc ::snit::type
* proc ::snit::widgetadaptor
* proc ::snit::widget
* proc ::snit::typemethod
* proc ::snit::method
* proc ::snit::macro

Utility Commands
* proc ::snit::Expand
* proc ::snit::Mappend
* proc ::snit::CheckArgs
* proc ::snit::Contains
* proc ::snit::Capitalize
* proc ::snit::Listify

Snit Runtime Library

The commands defined here are used by Snit-generated code at run-time
rather than compile time.

* Object Creation
** ::snit::RT.type.typemethod.create
** ::snit::RT.widget.typemethod.create
** ::snit::RT.MakeInstanceCommand
** ::snit::RT.InstanceTrace
** ::snit::RT.ConstructInstance
** ::snit::RT.UniqueName
** ::snit::RT.UniqueInstanceNamespace
** ::snit::RT.OptionDbGet
* Object Destruction
** ::snit::RT.method.destroy
** ::snit::RT.DestroyObject
** ::snit::RT.RemoveInstanceTrace
* Typecomponent Management and Typemethod Caching
** ::snit::RT.TypecomponentTrace
** ::snit::RT.CacheTypemethodCommand
* Component Management and Method Caching
** ::snit::RT.Component
** ::snit::RT.ComponentTrace
** ::snit::RT.CacheMethodCommand
** ::snit::RT.LookupMethodCommand
** ::snit::RT.ClearInstanceCaches
* Component Installation
** ::snit::RT.installhull
** ::snit::RT.install
* Method/Variable Name Qualification
** ::snit::RT.variable
** ::snit::RT.mytypevar
** ::snit::RT.myvar
** ::snit::RT.myproc
** ::snit::RT.codename
** ::snit::RT.mytypemethod
** ::snit::RT.mymethod
** ::snit::RT.CallInstance
* Utilities
** ::snit::RT.from
* Type Destruction
** ::snit::RT.typemethod.destroy
* Option Handling
** ::snit::RT.method.cget
** ::snit::RT.CacheCgetCommand
** ::snit::RT.method.configurelist
** ::snit::RT.CacheConfigureCommand
** ::snit::RT.method.configure
** ::snit::RT.GetOptionDbSpec
* Type Introspection
** ::snit::RT.typemethod.info
** ::snit::RT.typemethod.info.typevars
** ::snit::RT.typemethod.info.typemethods
** ::snit::RT.typemethod.info.instances
* Instance Introspection
** ::snit::RT.method.info
** ::snit::RT.method.info.type
** ::snit::RT.method.info.typevars
** ::snit::RT.method.info.typemethods
** ::snit::RT.method.info.methods
** ::snit::RT.method.info.vars
** ::snit::RT.method.info.options

