1This is a roadmap to the code layout in snit.tcl.
2
3Package Definition
4* package provide
5* ::snit:: namespace definition; exports Snit commands.
6
7Major Variable Definitions (this includes a whole lot of code)
8* ::snit:: variable definitions:
9    * reservedArgs
10    * prettyStackTrace          Not used currently
11
12* ::snit::typeTemplate          Template code shared by all Snit types.
13                                As the type definition is parsed, it
14                                produced text that gets inserted into
15                                this template; then the template is
16                                evaluated as though it were sourced
17                                from a normal .tcl file.
18    * Type namespace definition
19         * User's typevariable definitions
20    * Commands for use in type code
21        * alias installhull
22        * alias install
23        * alias typevariable
24        * alias variable
25        * alias mytypevar
26        * alias typevarname         Deprecated
27        * alias myvar
28        * alias varname             Deprecated
29        * alias myproc
30        * alias codename            Deprecated
31        * alias mymethod
32        * alias mytypemethod
33        * alias from
34    * Snit's internal variables
35        * See dictionary.txt
36    * Template Code -- Stuff that gets filled in.
37        * proc Snit_instanceVars    Initializes instance variables
38        * proc Snit_typeconstructor
39    * Default Procs -- Stuff that's sometimes replaced.
40        * proc Snit_constructor     The default constructor
41        * proc Snit_destructor      The default destructor (empty)
42    * %COMPILEDDEFS%
43    * Call the Type Constructor
44
45* ::snit::nominalTypeProc	Template for the normal type proc.
46* ::snit::simpleTypeProc        Template for the simple type proc.
47                                This is used when "-hastypemethods no";
48                                all it does is create instances.
49
50* ::snit::nominalInstanceProc	Template for the body of the normal
51                                instance proc. Supports method
52                                caching, delegation, etc.
53* ::snit::simpleInstanceProc	Template for the body of the simple
54                                instance proc, used when
55                                "-simpledispatch yes".  Doesn't
56                                support delegation, upvar,
57                                hierarchical methods, or exotic return
58                                types.
59 
60* Snit compilation variables
61    * compiler			The name of the slave interpreter used
62                                to "compile" type definitions
63    * compile                   Array, accumulates results of
64                                "compiling" type definitions
65    * reservedwords             List of names that can't be used as
66                                macros.  Basically, any command
67                                defined before the first macro.
68
69Compilation Commands
70* proc ::snit::Comp.Init
71* proc ::snit::Comp.Compile
72* proc ::snit::Comp.SaveOptionInfo
73* proc ::snit::Comp.Define
74* proc ::snit::Comp.statement.pragma
75* proc ::snit::Comp.statement.widgetclass
76* proc ::snit::Comp.statement.hulltype
77* proc ::snit::Comp.statement.constructor
78* proc ::snit::Comp.statement.destructor
79* proc ::snit::Comp.statement.option
80* proc ::snit::Comp.OptionNameIsValid
81* proc ::snit::Comp.statement.oncget
82* proc ::snit::Comp.statement.onconfigure
83* proc ::snit::Comp.statement.method
84* proc ::snit::Comp.CheckMethodName
85* proc ::snit::Comp.statement.typemethod
86* proc ::snit::Comp.statement.typeconstructor
87* proc ::snit::Comp.statement.proc
88* proc ::snit::Comp.statement.typevariable
89* proc ::snit::Comp.statement.variable
90* proc ::snit::Comp.statement.typecomponent
91* proc ::snit::Comp.DefineTypeComponent
92* proc ::snit::Comp.statement.component
93* proc ::snit::Comp.DefineComponent
94* proc ::snit::Comp.statement.delegate
95* proc ::snit::Comp.DelegatedTypemethod
96* proc ::snit::Comp.DelegatedMethod
97* proc ::snit::Comp.DelegatedOption
98* proc ::snit::Comp.statement.expose
99
100Public Commands
101* proc ::snit::compile
102* proc ::snit::type
103* proc ::snit::widgetadaptor
104* proc ::snit::widget
105* proc ::snit::typemethod
106* proc ::snit::method
107* proc ::snit::macro
108
109Utility Commands
110* proc ::snit::Expand
111* proc ::snit::Mappend
112* proc ::snit::CheckArgs
113* proc ::snit::Capitalize
114
115Snit Runtime Library
116
117The commands defined here are used by Snit-generated code at run-time
118rather than compile time.
119
120* Object Creation
121** ::snit::RT.type.typemethod.create
122** ::snit::RT.widget.typemethod.create
123** ::snit::RT.MakeInstanceCommand
124** ::snit::RT.InstanceTrace
125** ::snit::RT.ConstructInstance
126** ::snit::RT.UniqueName
127** ::snit::RT.UniqueInstanceNamespace
128** ::snit::RT.OptionDbGet
129* Object Destruction
130** ::snit::RT.method.destroy
131** ::snit::RT.DestroyObject
132** ::snit::RT.RemoveInstanceTrace
133* Typecomponent Management and Typemethod Caching
134** ::snit::RT.TypecomponentTrace
135** ::snit::RT.UnknownTypemethod
136* Component Management and Method Caching
137** ::snit::RT.Component
138** ::snit::RT.ComponentTrace
139** ::snit::RT.UnknownMethod
140** ::snit::RT.ClearInstanceCaches
141* Component Installation
142** ::snit::RT.installhull
143** ::snit::RT.install
144* Method/Variable Name Qualification
145** ::snit::RT.variable
146** ::snit::RT.mytypevar
147** ::snit::RT.myvar
148** ::snit::RT.myproc
149** ::snit::RT.codename
150** ::snit::RT.mytypemethod
151** ::snit::RT.mymethod
152** ::snit::RT.CallInstance
153* Utilities
154** ::snit::RT.from
155* Type Destruction
156** ::snit::RT.typemethod.destroy
157* Option Handling
158** ::snit::RT.method.cget
159** ::snit::RT.CacheCgetCommand
160** ::snit::RT.method.configurelist
161** ::snit::RT.CacheConfigureCommand
162** ::snit::RT.method.configure
163** ::snit::RT.GetOptionDbSpec
164* Type Introspection
165** ::snit::RT.typemethod.info
166** ::snit::RT.typemethod.info.typevars
167** ::snit::RT.typemethod.info.typemethods
168** ::snit::RT.typemethod.info.instances
169* Instance Introspection
170** ::snit::RT.method.info
171** ::snit::RT.method.info.type
172** ::snit::RT.method.info.typevars
173** ::snit::RT.method.info.typemethods
174** ::snit::RT.method.info.methods
175** ::snit::RT.method.info.vars
176** ::snit::RT.method.info.options
177
178