Tcl Library Source Code

Changes On Branch update-doc-tracker-links
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Changes In Branch update-doc-tracker-links Excluding Merge-Ins

This is equivalent to a diff from 17705e46c3 to fc02651c25

2013-06-04
05:29
Merged documentation changes re-routing tracker references. check-in: 8c4bf4f087 user: aku tags: trunk
05:27
More links fixed. Closed-Leaf check-in: fc02651c25 user: aku tags: update-doc-tracker-links
2013-06-03
17:20
Updated the embedded docs, and fixed keywords mis-cleanup. check-in: 1f2b96a8ef user: aku tags: update-doc-tracker-links
2013-05-31
21:05
Update documentation for new location of tracker, using the opportunity to fix up all the places not using the general feedback include file yet. First pass, only modules with few manpages. check-in: 4991c23cd0 user: andreask tags: update-doc-tracker-links
19:56
Added Colin Macleod and http://wiki/21555 to the set of acknowledged contributors and references for the module. check-in: 17705e46c3 user: andreask tags: trunk
2013-05-30
21:22
[Bug 3612645][Allura 1366]: Fix handling of last block read, it may be empty. In that case we must not pad, nor try to decrypt it into garbage. Extended testsuite with cases for this. Version bumped to 1.1.1. check-in: eb0e6a2524 user: andreask tags: trunk

Changes to apps/dtplite.man.

1
2












3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin dtplite n 1.0.5]












[copyright {2004-2013 Andreas Kupries <[email protected]>}]
[titledesc {Lightweight DocTools Markup Processor}]
[moddesc   {Documentation toolbox}]
[category  {Documentation tools}]
[description]
[para]

The application described by this document, [syscmd dtplite], is the
successor to the extremely simple [syscmd mpexpand]. Influenced in its
functionality by the [syscmd dtp] doctools processor it is much more
powerful than [syscmd mpexpand], yet still as easy to use; definitely
easier than [syscmd dtp] with its myriad of subcommands and options.

[para]

[syscmd dtplite] is based upon the package [package doctools], like
the other two processors.


[subsection {USE CASES}]

[syscmd dtplite] was written with the following three use cases in
mind.

[para]


>
>
>
>
>
>
>
>
>
>
>
>

















<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

32
33
34
35
36
37
38
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin dtplite n 1.0.5]
[see_also {docidx introduction}]
[see_also {doctoc introduction}]
[see_also {doctools introduction}]
[keywords conversion]
[keywords docidx]
[keywords doctoc]
[keywords doctools]
[keywords HTML]
[keywords manpage]
[keywords markup]
[keywords nroff]
[keywords TMML]
[copyright {2004-2013 Andreas Kupries <[email protected]>}]
[titledesc {Lightweight DocTools Markup Processor}]
[moddesc   {Documentation toolbox}]
[category  {Documentation tools}]
[description]
[para]

The application described by this document, [syscmd dtplite], is the
successor to the extremely simple [syscmd mpexpand]. Influenced in its
functionality by the [syscmd dtp] doctools processor it is much more
powerful than [syscmd mpexpand], yet still as easy to use; definitely
easier than [syscmd dtp] with its myriad of subcommands and options.

[para]

[syscmd dtplite] is based upon the package [package doctools], like
the other two processors.


[subsection {USE CASES}]

[syscmd dtplite] was written with the following three use cases in
mind.

[para]
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
has to exist and must be a writable directory.

The generated document will be written to a file in that directory,
and the name of that file will be derived from the [arg inputfile],
the [arg format], and the value given to option [option -ext] (if
present).


[arg_def (path|handle) format in]

This argument specifies the formatting engine to use when processing
the input, and thus the format of the generated document. See section
[sectref FORMATS] for the possibilities recognized by the application.


[arg_def path inputfile in]

This argument specifies the path to the file to process. It has to
exist, must be readable, and written in [term doctools] format.

[list_end]
[para]


[call [cmd dtplite] [const validate] [arg inputfile]]

This is a simpler form for use case [lb]1[rb]. The "validate" format
generates no output at all, only syntax checks are performed. As such
the specification of an output file or other options is not necessary
and left out.


[call [cmd dtplite] [option -o] [arg output] [opt options] [arg format] [arg inputdirectory]]

This is the form for use case [lb]2[rb]. It differs from the form for
use case [lb]1[rb] by having the input documents specified through a
directory instead of a file. The other arguments are identical, except
for [arg output], which now has to be the path to an existing and
writable directory.

[para]

The input documents are all files in [arg inputdirectory] or any of
its subdirectories which were recognized by [cmd fileutil::fileType]
as containing text in [term doctools] format.


[call [cmd dtplite] [option -merge] [option -o] [arg output] [opt options] [arg format] [arg inputdirectory]]

This is the form for use case [lb]3[rb]. The only difference to the
form for use case [lb]2[rb] is the additional option [option -merge].

[para]







<





<









<






<














<







98
99
100
101
102
103
104

105
106
107
108
109

110
111
112
113
114
115
116
117
118

119
120
121
122
123
124

125
126
127
128
129
130
131
132
133
134
135
136
137
138

139
140
141
142
143
144
145
has to exist and must be a writable directory.

The generated document will be written to a file in that directory,
and the name of that file will be derived from the [arg inputfile],
the [arg format], and the value given to option [option -ext] (if
present).


[arg_def (path|handle) format in]

This argument specifies the formatting engine to use when processing
the input, and thus the format of the generated document. See section
[sectref FORMATS] for the possibilities recognized by the application.


[arg_def path inputfile in]

This argument specifies the path to the file to process. It has to
exist, must be readable, and written in [term doctools] format.

[list_end]
[para]


[call [cmd dtplite] [const validate] [arg inputfile]]

This is a simpler form for use case [lb]1[rb]. The "validate" format
generates no output at all, only syntax checks are performed. As such
the specification of an output file or other options is not necessary
and left out.


[call [cmd dtplite] [option -o] [arg output] [opt options] [arg format] [arg inputdirectory]]

This is the form for use case [lb]2[rb]. It differs from the form for
use case [lb]1[rb] by having the input documents specified through a
directory instead of a file. The other arguments are identical, except
for [arg output], which now has to be the path to an existing and
writable directory.

[para]

The input documents are all files in [arg inputdirectory] or any of
its subdirectories which were recognized by [cmd fileutil::fileType]
as containing text in [term doctools] format.


[call [cmd dtplite] [option -merge] [option -o] [arg output] [opt options] [arg format] [arg inputdirectory]]

This is the form for use case [lb]3[rb]. The only difference to the
form for use case [lb]2[rb] is the additional option [option -merge].

[para]
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
[opt_def -exclude string]

This option specifies an exclude (glob) pattern. Any files identified
as manpages to process which match the exclude pattern are
ignored. The option can be provided multiple times, each usage adding
an additional pattern to the list of exclusions.


[opt_def -ext string]

If the name of an output file has to be derived from the name of an
input file it will use the name of the [arg format] as the extension
by default. This option here will override this however, forcing it to
use [arg string] as the file extension. This option is ignored if the
name of the output file is fully specified through option [option -o].

[para]

When used multiple times only the last definition is relevant.


[opt_def -header file]

This option can be used if and only if the selected [arg format]
provides an engine parameter named "header". It takes the contents of
the specified file and assign them to that parameter, for whatever use
by the engine. The HTML engine will insert the text just after the tag
[const <body>].

If navigation buttons are present (see option [option -nav] below),
then the HTML generated for them is appended to the header data
originating here before the final assignment to the parameter.

[para]

When used multiple times only the last definition is relevant.


[opt_def -footer file]

Like [option -header], except that: Any navigation buttons are ignored,
the corresponding required engine parameter is named "footer", and the
data is inserted just before the tag [const </body>].

[para]

When used multiple times only the last definition is relevant.


[opt_def -style file]

This option can be used if and only if the selected [arg format]
provides an engine parameter named "meta". When specified it will
generate a piece of HTML code declaring the [arg file] as the
stylesheet for the generated document and assign that to the







<











<

















<









<







167
168
169
170
171
172
173

174
175
176
177
178
179
180
181
182
183
184

185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201

202
203
204
205
206
207
208
209
210

211
212
213
214
215
216
217
[opt_def -exclude string]

This option specifies an exclude (glob) pattern. Any files identified
as manpages to process which match the exclude pattern are
ignored. The option can be provided multiple times, each usage adding
an additional pattern to the list of exclusions.


[opt_def -ext string]

If the name of an output file has to be derived from the name of an
input file it will use the name of the [arg format] as the extension
by default. This option here will override this however, forcing it to
use [arg string] as the file extension. This option is ignored if the
name of the output file is fully specified through option [option -o].

[para]

When used multiple times only the last definition is relevant.


[opt_def -header file]

This option can be used if and only if the selected [arg format]
provides an engine parameter named "header". It takes the contents of
the specified file and assign them to that parameter, for whatever use
by the engine. The HTML engine will insert the text just after the tag
[const <body>].

If navigation buttons are present (see option [option -nav] below),
then the HTML generated for them is appended to the header data
originating here before the final assignment to the parameter.

[para]

When used multiple times only the last definition is relevant.


[opt_def -footer file]

Like [option -header], except that: Any navigation buttons are ignored,
the corresponding required engine parameter is named "footer", and the
data is inserted just before the tag [const </body>].

[para]

When used multiple times only the last definition is relevant.


[opt_def -style file]

This option can be used if and only if the selected [arg format]
provides an engine parameter named "meta". When specified it will
generate a piece of HTML code declaring the [arg file] as the
stylesheet for the generated document and assign that to the
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
have no location to copy the stylesheet to and so just reference it as
specified.

[para]

When used multiple times only the last definition is relevant.


[opt_def -toc path]

This option specifies a doctoc file to use for the table of contents
instead of generating our own.

[para]

When used multiple times only the last definition is relevant.


[opt_def -pre+toc "label path|text"]
[opt_def -post+toc "label path|text"]

This option specifies additional doctoc files (or texts) to use in
the navigation bar.

[para] Positioning and handling of multiple uses is like for options
[option -prenav] and [option -postnav], see below.


[opt_def -nav "label url"]
[opt_def -prenav "label url"]

Use this option to specify a navigation button with [arg label] to
display and the [arg url] to link to. This option can be used if and
only if the selected [arg format] provides an engine parameter named







<









<








<







226
227
228
229
230
231
232

233
234
235
236
237
238
239
240
241

242
243
244
245
246
247
248
249

250
251
252
253
254
255
256
have no location to copy the stylesheet to and so just reference it as
specified.

[para]

When used multiple times only the last definition is relevant.


[opt_def -toc path]

This option specifies a doctoc file to use for the table of contents
instead of generating our own.

[para]

When used multiple times only the last definition is relevant.


[opt_def -pre+toc "label path|text"]
[opt_def -post+toc "label path|text"]

This option specifies additional doctoc files (or texts) to use in
the navigation bar.

[para] Positioning and handling of multiple uses is like for options
[option -prenav] and [option -postnav], see below.


[opt_def -nav "label url"]
[opt_def -prenav "label url"]

Use this option to specify a navigation button with [arg label] to
display and the [arg url] to link to. This option can be used if and
only if the selected [arg format] provides an engine parameter named
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
navigation bar is created, with the first definition shown at the left
edge and the last definition to the right.

[para] The url can be relative. In that case it is assumed to be relative
to the main files (TOC and Keyword index), and will be transformed for
all others to still link properly.


[opt_def -postnav "label url"]

Use this option to specify a navigation button with [arg label] to
display and the [arg url] to link to. This option can be used if and
only if the selected [arg format] provides an engine parameter named
"header". The HTML generated for this is appended to whatever data we
got from option [option -header] before it is inserted into the
generated documents.

[para]

When used multiple times all definitions are collected and a
navigation bar is created, with the last definition shown at the right
edge and the first definition to the left.

[para] The url can be relative. In that case it is assumed to be relative
to the main files (TOC and Keyword index), and will be transformed for
all others to still link properly.

[list_end]


[subsection FORMATS]

At first the [arg format] argument will be treated as a path to a tcl
file containing the code for the requested formatting engine. The
argument will be treated as the name of one of the predefined formats
listed below if and only if the path does not exist.







<




















<







264
265
266
267
268
269
270

271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290

291
292
293
294
295
296
297
navigation bar is created, with the first definition shown at the left
edge and the last definition to the right.

[para] The url can be relative. In that case it is assumed to be relative
to the main files (TOC and Keyword index), and will be transformed for
all others to still link properly.


[opt_def -postnav "label url"]

Use this option to specify a navigation button with [arg label] to
display and the [arg url] to link to. This option can be used if and
only if the selected [arg format] provides an engine parameter named
"header". The HTML generated for this is appended to whatever data we
got from option [option -header] before it is inserted into the
generated documents.

[para]

When used multiple times all definitions are collected and a
navigation bar is created, with the last definition shown at the right
edge and the first definition to the left.

[para] The url can be relative. In that case it is assumed to be relative
to the main files (TOC and Keyword index), and will be transformed for
all others to still link properly.

[list_end]


[subsection FORMATS]

At first the [arg format] argument will be treated as a path to a tcl
file containing the code for the requested formatting engine. The
argument will be treated as the name of one of the predefined formats
listed below if and only if the path does not exist.
341
342
343
344
345
346
347












348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
[def [const wiki]]

The processor generates Wiki markup as understood by [syscmd wikit].

[def [const list]]

The processor extracts the information provided by [cmd manpage_begin].













This format is used internally to extract the meta data from which
both table of contents and keyword index are derived from.

[def [const null]]

The processor does not generate any output. This is equivalent to
[const validate].

[list_end]


[subsection {DIRECTORY STRUCTURES}]

In this section we describe the directory structures generated by the
application under [arg output] when processing all documents in an
[arg inputdirectory]. In other words, this is only relevant to the use
cases [lb]2[rb] and [lb]3[rb].







>
>
>
>
>
>
>
>
>
>
>
>










<







338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366

367
368
369
370
371
372
373
[def [const wiki]]

The processor generates Wiki markup as understood by [syscmd wikit].

[def [const list]]

The processor extracts the information provided by [cmd manpage_begin].
[see_also {docidx introduction}]
[see_also {doctoc introduction}]
[see_also {doctools introduction}]
[keywords conversion]
[keywords docidx]
[keywords doctoc]
[keywords doctools]
[keywords HTML]
[keywords manpage]
[keywords markup]
[keywords nroff]
[keywords TMML]

This format is used internally to extract the meta data from which
both table of contents and keyword index are derived from.

[def [const null]]

The processor does not generate any output. This is equivalent to
[const validate].

[list_end]


[subsection {DIRECTORY STRUCTURES}]

In this section we describe the directory structures generated by the
application under [arg output] when processing all documents in an
[arg inputdirectory]. In other words, this is only relevant to the use
cases [lb]2[rb] and [lb]3[rb].
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397

The last line in the example shows the document
generated for a file FOO located at

[example {
    inputdirectory/path/to/FOO
}]


[def "[lb]3[rb]"]

When merging many packages into a unified set of documents the
generated directory structure is a bit deeper:

[example {







<







391
392
393
394
395
396
397

398
399
400
401
402
403
404

The last line in the example shows the document
generated for a file FOO located at

[example {
    inputdirectory/path/to/FOO
}]


[def "[lb]3[rb]"]

When merging many packages into a unified set of documents the
generated directory structure is a bit deeper:

[example {
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
conversion to the chosen output format.

They are left in place, i.e. not deleted, to serve as demonstrations
of doctoc and docidx markup.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the application it describes, will undoubtedly
contain bugs and other problems.

Please report such in the category [emph doctools] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
application and/or documentation.


[see_also {doctools introduction}]
[see_also {docidx introduction}]
[see_also {doctoc introduction}]
[keywords manpage TMML HTML nroff conversion markup]
[keywords doctools docidx doctoc]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<
<
<
<
<

438
439
440
441
442
443
444

445


446












447
conversion to the chosen output format.

They are left in place, i.e. not deleted, to serve as demonstrations
of doctoc and docidx markup.

[list_end]


[vset CATEGORY doctools]


[include ../modules/doctools2base/include/feedback.inc]












[manpage_end]

Changes to apps/nns.man.

1
2





3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin nns n 1.1]





[copyright {2007-2008 Andreas Kupries <[email protected]>}]
[moddesc   {Name service facility}]
[titledesc {Name service facility, Commandline Client Application}]
[category  Networking]
[description]
[para]



>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin nns n 1.1]
[see_also nameserv(n)]
[see_also nameserv::common(n)]
[keywords application]
[keywords client]
[keywords {name service}]
[copyright {2007-2008 Andreas Kupries <[email protected]>}]
[moddesc   {Name service facility}]
[titledesc {Name service facility, Commandline Client Application}]
[category  Networking]
[description]
[para]

65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
name service and reestablish the [arg name]/[arg data] pair when the
connection is restored.

[para]
The options to specify the name service will be explained later, in
section [sectref OPTIONS].


[call [cmd nns] [method search] \
	[opt "[option -host] [arg host]"] \
	[opt "[option -port] [arg port]"] \
	[opt [option -continuous]] \
	[opt [arg pattern]]]

This form searches the specified name service for entries matching the







<







70
71
72
73
74
75
76

77
78
79
80
81
82
83
name service and reestablish the [arg name]/[arg data] pair when the
connection is restored.

[para]
The options to specify the name service will be explained later, in
section [sectref OPTIONS].


[call [cmd nns] [method search] \
	[opt "[option -host] [arg host]"] \
	[opt "[option -port] [arg port]"] \
	[opt [option -continuous]] \
	[opt [arg pattern]]]

This form searches the specified name service for entries matching the
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
If the option [option -continuous] is specified the client will not
exit after performing the search, but start to continuously monitor
the service for changes to the set of matching entries, appropriately
updating the display as changes arrive. In that form it will
especially also survive the loss of the connection to the name service
and reestablish the search when the connection is restored.


[call [cmd nns] [method ident] \
	[opt "[option -host] [arg host]"] \
	[opt "[option -port] [arg port]"]]

This form asks the specified name service for the version and features
of the name service protocol it supports and prints the results to
stdout.

[para]
The options to specify the name service will be explained later, in
section [sectref OPTIONS].


[call [cmd nns] [method who]]

This form prints name, version, and protocol version of the
application to stdout.

[list_end]







<











<







94
95
96
97
98
99
100

101
102
103
104
105
106
107
108
109
110
111

112
113
114
115
116
117
118
If the option [option -continuous] is specified the client will not
exit after performing the search, but start to continuously monitor
the service for changes to the set of matching entries, appropriately
updating the display as changes arrive. In that form it will
especially also survive the loss of the connection to the name service
and reestablish the search when the connection is restored.


[call [cmd nns] [method ident] \
	[opt "[option -host] [arg host]"] \
	[opt "[option -port] [arg port]"]]

This form asks the specified name service for the version and features
of the name service protocol it supports and prints the results to
stdout.

[para]
The options to specify the name service will be explained later, in
section [sectref OPTIONS].


[call [cmd nns] [method who]]

This form prints name, version, and protocol version of the
application to stdout.

[list_end]
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155

If this option is not specified it defaults to [const 38573]. It
specifies the TCP port the name service to talk to is listening on for
requests.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the application it describes, will undoubtedly
contain bugs and other problems.

Please report such in the category [emph nameserv] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
application and/or documentation.


[see_also nameserv::common(n)]
[see_also nameserv(n)]
[keywords {name service} client application]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<

134
135
136
137
138
139
140
141

142













143

If this option is not specified it defaults to [const 38573]. It
specifies the TCP port the name service to talk to is listening on for
requests.

[list_end]

[vset CATEGORY nameserv]

[include ../modules/doctools2base/include/feedback.inc]













[manpage_end]

Changes to apps/nnsd.man.

1
2





3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin nnsd n 1.0.1]





[copyright {2007-2008 Andreas Kupries <[email protected]>}]
[moddesc   {Name service facility}]
[titledesc {Name service facility, Commandline Server Application}]
[category  Networking]
[description]
[para]



>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin nnsd n 1.0.1]
[see_also nameserv::common(n)]
[see_also nameserv::server(n)]
[keywords application]
[keywords {name service}]
[keywords server]
[copyright {2007-2008 Andreas Kupries <[email protected]>}]
[moddesc   {Name service facility}]
[titledesc {Name service facility, Commandline Server Application}]
[category  Networking]
[description]
[para]

77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
[opt_def -port number]

If this option is not specified it defaults to [const 38573]. It
specifies the TCP port the server has to listen on for requests.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the application it describes, will undoubtedly
contain bugs and other problems.

Please report such in the category [emph nameserv] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
application and/or documentation.


[see_also nameserv::common(n)]
[see_also nameserv::server(n)]
[keywords {name service} server application]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<

82
83
84
85
86
87
88
89

90













91
[opt_def -port number]

If this option is not specified it defaults to [const 38573]. It
specifies the TCP port the server has to listen on for requests.

[list_end]

[vset CATEGORY nameserv]

[include ../modules/doctools2base/include/feedback.inc]













[manpage_end]

Changes to apps/nnslog.man.

1
2





3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin nnslog n 1.0]





[copyright {2008 Andreas Kupries <[email protected]>}]
[moddesc   {Name service facility}]
[titledesc {Name service facility, Commandline Logging Client Application}]
[category  Networking]
[description]
[para]



>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin nnslog n 1.0]
[see_also nameserv(n)]
[see_also nameserv::common(n)]
[keywords application]
[keywords client]
[keywords {name service}]
[copyright {2008 Andreas Kupries <[email protected]>}]
[moddesc   {Name service facility}]
[titledesc {Name service facility, Commandline Logging Client Application}]
[category  Networking]
[description]
[para]

79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101

If this option is not specified it defaults to [const 38573]. It
specifies the TCP port the name service to talk to is listening on for
requests.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the application it describes, will undoubtedly
contain bugs and other problems.

Please report such in the category [emph nameserv] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
application and/or documentation.


[see_also nameserv::common(n)]
[see_also nameserv(n)]
[keywords {name service} client application]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<
<
<

84
85
86
87
88
89
90

91


92










93

If this option is not specified it defaults to [const 38573]. It
specifies the TCP port the name service to talk to is listening on for
requests.

[list_end]


[vset CATEGORY nameserv]


[include ../modules/doctools2base/include/feedback.inc]










[manpage_end]

Changes to apps/page.man.

1
2



3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin page n 1.0]



[copyright {2005 Andreas Kupries <[email protected]>}]
[titledesc {Parser Generator}]
[moddesc   {Development Tools}]
[category  {Page Parser Generator}]
[description]
[para]



>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin page n 1.0]
[see_also page::pluginmgr]
[keywords {parser generator}]
[keywords {text processing}]
[copyright {2005 Andreas Kupries <[email protected]>}]
[titledesc {Parser Generator}]
[moddesc   {Development Tools}]
[category  {Page Parser Generator}]
[description]
[para]

79
80
81
82
83
84
85
86
87
88
89
90
91
92
93

[list_end]
[list_end]

[subsection OPERATION]

... reading ... transforming ... writing - plugins - pipeline ...


[subsection OPTIONS]

This section describes all the options available to the user of the
application. Options are always processed in order. I.e. of both
[option --help] and [option --version] are specified the option
encountered first has precedence.







<







82
83
84
85
86
87
88

89
90
91
92
93
94
95

[list_end]
[list_end]

[subsection OPERATION]

... reading ... transforming ... writing - plugins - pipeline ...


[subsection OPTIONS]

This section describes all the options available to the user of the
application. Options are always processed in order. I.e. of both
[option --help] and [option --version] are specified the option
encountered first has precedence.
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
argumentes containing spaces can be quoted via double-quotes (") and
quotes ('). The quote character can be specified within in a quoted
string by doubling it. Newlines in a quoted string are accepted as is.

[comment {"}]
[list_end]


[subsection PLUGINS]

[syscmd page] makes use of four different types of plugins, namely:
readers, writers, transformations, and configurations. Here we provide
only a basic introduction on how to use them from [syscmd page]. The
exact APIs provided to and expected from the plugins can be found in
the documentation for [package page::pluginmgr], for those who wish to







<







220
221
222
223
224
225
226

227
228
229
230
231
232
233
argumentes containing spaces can be quoted via double-quotes (") and
quotes ('). The quote character can be specified within in a quoted
string by doubling it. Newlines in a quoted string are accepted as is.

[comment {"}]
[list_end]


[subsection PLUGINS]

[syscmd page] makes use of four different types of plugins, namely:
readers, writers, transformations, and configurations. Here we provide
only a basic introduction on how to use them from [syscmd page]. The
exact APIs provided to and expected from the plugins can be found in
the documentation for [package page::pluginmgr], for those who wish to
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
	--transform use
	--writer    me
}]
[para]

[list_end]


[def "[option -r] [arg name]"]

Readers. The name of the package for the plugin [arg name] is
"page::reader::[arg name]".

[para]
We have five predefined plugins:







<







277
278
279
280
281
282
283

284
285
286
287
288
289
290
	--transform use
	--writer    me
}]
[para]

[list_end]


[def "[option -r] [arg name]"]

Readers. The name of the package for the plugin [arg name] is
"page::reader::[arg name]".

[para]
We have five predefined plugins:
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
[def [emph treeser]]

Interprets the input as the serialization of a
[package struct::tree]. It is validated as such,
but nothing else. It is [emph not] assumed to
be the tree representation of a grammar.
[list_end]


[def "[option -w] [arg name]"]

Writers. The name of the package for the plugin [arg name] is
"page::writer::[arg name]".

[para]







<







318
319
320
321
322
323
324

325
326
327
328
329
330
331
[def [emph treeser]]

Interprets the input as the serialization of a
[package struct::tree]. It is validated as such,
but nothing else. It is [emph not] assumed to
be the tree representation of a grammar.
[list_end]


[def "[option -w] [arg name]"]

Writers. The name of the package for the plugin [arg name] is
"page::writer::[arg name]".

[para]
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
[def [emph tpc]]

Assumes that the incoming data structure is a tree representation of a
[term PEG] or other other grammar and writes out Tcl code defining a
package which defines a [package grammar::peg] object containing the
grammar when it is loaded into an interpreter.


[def [emph hb]]

This is like the writer plugin [emph tpc], but it writes only the
statements which define stat expression and grammar rules. The code
making the result a package is left out.

[def [emph ser]]







<







360
361
362
363
364
365
366

367
368
369
370
371
372
373
[def [emph tpc]]

Assumes that the incoming data structure is a tree representation of a
[term PEG] or other other grammar and writes out Tcl code defining a
package which defines a [package grammar::peg] object containing the
grammar when it is loaded into an interpreter.


[def [emph hb]]

This is like the writer plugin [emph tpc], but it writes only the
statements which define stat expression and grammar rules. The code
making the result a package is left out.

[def [emph ser]]
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
Assumes that the incoming data structure is a tree representation of a
[term PEG] or other other grammar and writes out Tcl code defining a
package which implements a memoizing recursive descent parser based on
the match engine (ME) provided by the package [package grammar::mengine].

[list_end]


[def "[option -t] [arg name]"]

Transformers. The name of the package for the plugin [arg name] is
"page::transform::[arg name]".

[para]
We have two predefined plugins:

[list_begin definitions]
[def [emph reach]]

Assumes that the incoming data structure is a tree representation of a
[term PEG] or other other grammar. It determines which nonterminal
symbols and rules are reachable from start-symbol/expression. All
nonterminal symbols which were not reached are removed.


[def [emph use]]

Assumes that the incoming data structure is a tree representation of a
[term PEG] or other other grammar. It determines which nonterminal
symbols and rules are able to generate a [emph finite] sequences of
terminal symbols (in the sense for a Context Free Grammar). All







<















<







381
382
383
384
385
386
387

388
389
390
391
392
393
394
395
396
397
398
399
400
401
402

403
404
405
406
407
408
409
Assumes that the incoming data structure is a tree representation of a
[term PEG] or other other grammar and writes out Tcl code defining a
package which implements a memoizing recursive descent parser based on
the match engine (ME) provided by the package [package grammar::mengine].

[list_end]


[def "[option -t] [arg name]"]

Transformers. The name of the package for the plugin [arg name] is
"page::transform::[arg name]".

[para]
We have two predefined plugins:

[list_begin definitions]
[def [emph reach]]

Assumes that the incoming data structure is a tree representation of a
[term PEG] or other other grammar. It determines which nonterminal
symbols and rules are reachable from start-symbol/expression. All
nonterminal symbols which were not reached are removed.


[def [emph use]]

Assumes that the incoming data structure is a tree representation of a
[term PEG] or other other grammar. It determines which nonterminal
symbols and rules are able to generate a [emph finite] sequences of
terminal symbols (in the sense for a Context Free Grammar). All
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483

[para]

The contents of both environment variables and registry entries are
interpreted as a list of paths, with the elements separated by either
colon (Unix), or semicolon (Windows).

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the application it describes, will undoubtedly
contain bugs and other problems.

Please report such in the category [emph page] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
application and/or documentation.


[see_also page::pluginmgr]
[keywords {text processing} {parser generator}]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<
<

458
459
460
461
462
463
464

465


466









467

[para]

The contents of both environment variables and registry entries are
interpreted as a list of paths, with the elements separated by either
colon (Unix), or semicolon (Windows).


[vset CATEGORY page]


[include ../modules/doctools2base/include/feedback.inc]









[manpage_end]

Changes to apps/pt.man.

145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
It (quickly) generates grammar descriptions (instead of a full parser)
which match the API expected by ParserTools' grammar interpreter.

The latter is provided by the package [package pt::peg::interp].

[list_end]


All the parsers generated by [const critcl], [const snit], and
[const oo], and the grammar interpreter share a common API for access
to the actual parsing functionality, making them all
plug-compatible.

It is described in the [manpage {Parser API}] specification document.


[section {PEG Specification Language}]
[include ../modules/pt/include/format/whatis_peg.inc]
[para]

For either an introduction to or the formal specification of the
language, please go and read the [manpage {PEG Language Tutorial}].







<






<







145
146
147
148
149
150
151

152
153
154
155
156
157

158
159
160
161
162
163
164
It (quickly) generates grammar descriptions (instead of a full parser)
which match the API expected by ParserTools' grammar interpreter.

The latter is provided by the package [package pt::peg::interp].

[list_end]


All the parsers generated by [const critcl], [const snit], and
[const oo], and the grammar interpreter share a common API for access
to the actual parsing functionality, making them all
plug-compatible.

It is described in the [manpage {Parser API}] specification document.


[section {PEG Specification Language}]
[include ../modules/pt/include/format/whatis_peg.inc]
[para]

For either an introduction to or the formal specification of the
language, please go and read the [manpage {PEG Language Tutorial}].
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
[include ../modules/pt/include/format/whatis_container.inc]
[para]

This result-format supports the following options:

[include ../modules/pt/include/format/options_container.inc]


[section Example]
[vset MODE app][include ../modules/pt/include/example/full.inc]



[section Internals]

This section is intended for users of the application which wish to
modify or extend it. Users only interested in the generation of
parsers can ignore it.








<


<
<







220
221
222
223
224
225
226

227
228


229
230
231
232
233
234
235
[include ../modules/pt/include/format/whatis_container.inc]
[para]

This result-format supports the following options:

[include ../modules/pt/include/format/options_container.inc]


[section Example]
[vset MODE app][include ../modules/pt/include/example/full.inc]



[section Internals]

This section is intended for users of the application which wish to
modify or extend it. Users only interested in the generation of
parsers can ignore it.

Changes to apps/tcldocstrip.man.

1
2









3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcldocstrip n 1.0]









[copyright {2005 Andreas Kupries <[email protected]>}]
[titledesc {Tcl-based Docstrip Processor}]
[moddesc   {Textprocessing toolbox}]
[category  {Documentation tools}]
[description]
[para]

The application described by this document, [syscmd tcldocstrip], is a
relative of [syscmd docstrip], a simple literate programming tool for
LaTeX.

[para]

[syscmd tcldocstrip] is based upon the package [package docstrip].


[subsection {USE CASES}]

[syscmd tcldocstrip] was written with the following three use cases in
mind.

[para]
[list_begin enumerated]
[enum]
Conversion of a single input file according to the listed guards into
the stripped output. This handles the most simple case of a set of
guards specifying a single document found in a single input file.


[enum]
Stitching, or the assembly of an output from several sets of guards,
in a specific order, and possibly from different files. This is the
second common case. One document spread over several inputs, and/or
spread over different guard sets.



>
>
>
>
>
>
>
>
>















<











<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

27
28
29
30
31
32
33
34
35
36
37

38
39
40
41
42
43
44
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcldocstrip n 1.0]
[see_also docstrip]
[keywords .dtx]
[keywords conversion]
[keywords docstrip]
[keywords documentation]
[keywords LaTeX]
[keywords {literate programming}]
[keywords markup]
[keywords source]
[copyright {2005 Andreas Kupries <[email protected]>}]
[titledesc {Tcl-based Docstrip Processor}]
[moddesc   {Textprocessing toolbox}]
[category  {Documentation tools}]
[description]
[para]

The application described by this document, [syscmd tcldocstrip], is a
relative of [syscmd docstrip], a simple literate programming tool for
LaTeX.

[para]

[syscmd tcldocstrip] is based upon the package [package docstrip].


[subsection {USE CASES}]

[syscmd tcldocstrip] was written with the following three use cases in
mind.

[para]
[list_begin enumerated]
[enum]
Conversion of a single input file according to the listed guards into
the stripped output. This handles the most simple case of a set of
guards specifying a single document found in a single input file.


[enum]
Stitching, or the assembly of an output from several sets of guards,
in a specific order, and possibly from different files. This is the
second common case. One document spread over several inputs, and/or
spread over different guard sets.

76
77
78
79
80
81
82
83
84
85
86
87
88
89
90

This argument specifies the path to the file to process. It has to
exist, must be readable, and written in [term docstrip] format.

[list_end]
[para]


[call [cmd tcldocstrip] [opt options] [arg output] ([opt options] [arg input] [arg guards])...]

This is the form for use case [lb]2[rb]. It differs from the form for
use case [lb]1[rb] by the possibility of having options before the
output file, which apply in general, and specifying more than one
inputfile, each with its own set of input specific options and guards.








<







83
84
85
86
87
88
89

90
91
92
93
94
95
96

This argument specifies the path to the file to process. It has to
exist, must be readable, and written in [term docstrip] format.

[list_end]
[para]


[call [cmd tcldocstrip] [opt options] [arg output] ([opt options] [arg input] [arg guards])...]

This is the form for use case [lb]2[rb]. It differs from the form for
use case [lb]1[rb] by the possibility of having options before the
output file, which apply in general, and specifying more than one
inputfile, each with its own set of input specific options and guards.

101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118

Using the string [const "."] for an input file signals that the last
input file should be used again. This enables the assembly of the
output from one input file using multiple and different sets of
guards, without having to specify the full name of the file every
time.


[call [cmd tcldocstrip] [option -guards] [arg input]]

This is the form for use case [lb]3[rb]. 

It determines the guards, and unique guard expressions used within the
provided [arg input] document. The found strings are written to
stdout, one string per line.

[list_end]








<


|







107
108
109
110
111
112
113

114
115
116
117
118
119
120
121
122
123

Using the string [const "."] for an input file signals that the last
input file should be used again. This enables the assembly of the
output from one input file using multiple and different sets of
guards, without having to specify the full name of the file every
time.


[call [cmd tcldocstrip] [option -guards] [arg input]]

This is the form for use case [lb]3[rb].

It determines the guards, and unique guard expressions used within the
provided [arg input] document. The found strings are written to
stdout, one string per line.

[list_end]

183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206

Preambles, when active, are written before the actual content of a
generated file. In the same manner postambles are, when active,
written after the actual content of a generated file.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the application it describes, will undoubtedly
contain bugs and other problems.

Please report such in the category [emph docstrip] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
application and/or documentation.

[see_also docstrip]
[keywords conversion markup]
[keywords documentation source]
[keywords {literate programming} docstrip]
[keywords LaTeX .dtx]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<
<
<
<

188
189
190
191
192
193
194

195


196











197

Preambles, when active, are written before the actual content of a
generated file. In the same manner postambles are, when active,
written after the actual content of a generated file.

[list_end]


[vset CATEGORY docstrip]


[include ../modules/doctools2base/include/feedback.inc]











[manpage_end]

Changes to embedded/man/files/apps/dtplite.n.

573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
in doctoc and docidx markup, respectively, containing the main table
of contents and keyword index for the set of documents before their
conversion to the chosen output format\&.
They are left in place, i\&.e\&. not deleted, to serve as demonstrations
of doctoc and docidx markup\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the application it describes, will undoubtedly
contain bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
application and/or documentation\&.
.SH "SEE ALSO"
docidx introduction, doctoc introduction, doctools introduction
.SH KEYWORDS
HTML, TMML, conversion, docidx, doctoc, doctools, manpage, markup, nroff
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







|
|

|

|







573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
in doctoc and docidx markup, respectively, containing the main table
of contents and keyword index for the set of documents before their
conversion to the chosen output format\&.
They are left in place, i\&.e\&. not deleted, to serve as demonstrations
of doctoc and docidx markup\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
docidx introduction, doctoc introduction, doctools introduction
.SH KEYWORDS
HTML, TMML, conversion, docidx, doctoc, doctools, manpage, markup, nroff
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/apps/nns.n.

335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
.TP
\fB-port\fR number
If this option is not specified it defaults to \fB38573\fR\&. It
specifies the TCP port the name service to talk to is listening on for
requests\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the application it describes, will undoubtedly
contain bugs and other problems\&.
Please report such in the category \fInameserv\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
application and/or documentation\&.
.SH "SEE ALSO"
nameserv(n), nameserv::common(n)
.SH KEYWORDS
application, client, name service
.SH CATEGORY
Networking
.SH COPYRIGHT







|
|

|

|







335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
.TP
\fB-port\fR number
If this option is not specified it defaults to \fB38573\fR\&. It
specifies the TCP port the name service to talk to is listening on for
requests\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fInameserv\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
nameserv(n), nameserv::common(n)
.SH KEYWORDS
application, client, name service
.SH CATEGORY
Networking
.SH COPYRIGHT

Changes to embedded/man/files/apps/nnsd.n.

293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
option is configured to \fBfalse\fR\&.
.TP
\fB-port\fR number
If this option is not specified it defaults to \fB38573\fR\&. It
specifies the TCP port the server has to listen on for requests\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the application it describes, will undoubtedly
contain bugs and other problems\&.
Please report such in the category \fInameserv\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
application and/or documentation\&.
.SH "SEE ALSO"
nameserv::common(n), nameserv::server(n)
.SH KEYWORDS
application, name service, server
.SH CATEGORY
Networking
.SH COPYRIGHT







|
|

|

|







293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
option is configured to \fBfalse\fR\&.
.TP
\fB-port\fR number
If this option is not specified it defaults to \fB38573\fR\&. It
specifies the TCP port the server has to listen on for requests\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fInameserv\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
nameserv::common(n), nameserv::server(n)
.SH KEYWORDS
application, name service, server
.SH CATEGORY
Networking
.SH COPYRIGHT

Changes to embedded/man/files/apps/nnslog.n.

296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
.TP
\fB-port\fR number
If this option is not specified it defaults to \fB38573\fR\&. It
specifies the TCP port the name service to talk to is listening on for
requests\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the application it describes, will undoubtedly
contain bugs and other problems\&.
Please report such in the category \fInameserv\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
application and/or documentation\&.
.SH "SEE ALSO"
nameserv(n), nameserv::common(n)
.SH KEYWORDS
application, client, name service
.SH CATEGORY
Networking
.SH COPYRIGHT







|
|

|

|







296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
.TP
\fB-port\fR number
If this option is not specified it defaults to \fB38573\fR\&. It
specifies the TCP port the name service to talk to is listening on for
requests\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fInameserv\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
nameserv(n), nameserv::common(n)
.SH KEYWORDS
application, client, name service
.SH CATEGORY
Networking
.SH COPYRIGHT

Changes to embedded/man/files/apps/page.n.

625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
The registry entries are specific to the Windows(tm) platform, all
other platforms will ignore them\&.
.PP
The contents of both environment variables and registry entries are
interpreted as a list of paths, with the elements separated by either
colon (Unix), or semicolon (Windows)\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the application it describes, will undoubtedly
contain bugs and other problems\&.
Please report such in the category \fIpage\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
application and/or documentation\&.
.SH "SEE ALSO"
page::pluginmgr
.SH KEYWORDS
parser generator, text processing
.SH CATEGORY
Page Parser Generator
.SH COPYRIGHT







|
|

|

|







625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
The registry entries are specific to the Windows(tm) platform, all
other platforms will ignore them\&.
.PP
The contents of both environment variables and registry entries are
interpreted as a list of paths, with the elements separated by either
colon (Unix), or semicolon (Windows)\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpage\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
page::pluginmgr
.SH KEYWORDS
parser generator, text processing
.SH CATEGORY
Page Parser Generator
.SH COPYRIGHT

Changes to embedded/man/files/apps/pt.n.

902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
.PP
The main functionality of the application is encapsulated in the
package \fBpt::pgen\fR\&. Please read it for more information\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
.PP
The main functionality of the application is encapsulated in the
package \fBpt::pgen\fR\&. Please read it for more information\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/apps/tcldocstrip.n.

383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
standard parts are shown\&. This is the default\&.
.sp
Preambles, when active, are written before the actual content of a
generated file\&. In the same manner postambles are, when active,
written after the actual content of a generated file\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the application it describes, will undoubtedly
contain bugs and other problems\&.
Please report such in the category \fIdocstrip\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
application and/or documentation\&.
.SH "SEE ALSO"
docstrip
.SH KEYWORDS
\\\&.dtx, LaTeX, conversion, docstrip, documentation, literate programming, markup, source
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







|
|

|

|







383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
standard parts are shown\&. This is the default\&.
.sp
Preambles, when active, are written before the actual content of a
generated file\&. In the same manner postambles are, when active,
written after the actual content of a generated file\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdocstrip\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
docstrip
.SH KEYWORDS
\\\&.dtx, LaTeX, conversion, docstrip, documentation, literate programming, markup, source
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/aes/aes.n.

1
2
3
4
5
6
7
8
9
10
11
'\"
'\" Generated from file '/home/aku/Projects/Tcllib/tcllib/embedded/man/files/modules/aes/aes\&.n' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2005, Pat Thoyts <patthoyts@users\&.sourceforge\&.net>
'\" Copyright (c) 2012, Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>
'\"
'\" The definitions below are for supplemental macros used in Tcl/Tk
'\" manual entries.
'\"
'\" .AP type name in/out ?indent?
'\"	Start paragraph describing an argument to a library procedure.
'\"	type is type of argument (int, etc.), in/out is either "in", "out",



|







1
2
3
4
5
6
7
8
9
10
11
'\"
'\" Generated from file '/home/aku/Projects/Tcllib/tcllib/embedded/man/files/modules/aes/aes\&.n' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2005, Pat Thoyts <patthoyts@users\&.sourceforge\&.net>
'\" Copyright (c) 2012-2013, Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>
'\"
'\" The definitions below are for supplemental macros used in Tcl/Tk
'\" manual entries.
'\"
'\" .AP type name in/out ?indent?
'\"	Start paragraph describing an argument to a library procedure.
'\"	type is type of argument (int, etc.), in/out is either "in", "out",
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "aes" n 1\&.1 tcllib "Advanced Encryption Standard (AES)"
.BS
.SH NAME
aes \- Implementation of the AES block cipher
.SH SYNOPSIS
package require \fBTcl  8\&.2\fR
.sp
package require \fBaes  ?1\&.1?\fR
.sp
\fB::aes::aes\fR ?\fI-mode [ecb|cbc]\fR? ?\fI-dir [encrypt|decrypt]\fR? \fI-key keydata\fR ?\fI-iv vector\fR? ?\fI-hex\fR? ?\fI-out channel\fR? ?\fI-chunksize size\fR? [ \fI-in channel\fR | ?\fB--\fR? \fIdata\fR ]
.sp
\fB::aes::Init\fR \fImode\fR \fIkeydata\fR \fIiv\fR
.sp
\fB::aes::Encrypt\fR \fIKey\fR \fIdata\fR
.sp







|






|







235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "aes" n 1\&.1\&.1 tcllib "Advanced Encryption Standard (AES)"
.BS
.SH NAME
aes \- Implementation of the AES block cipher
.SH SYNOPSIS
package require \fBTcl  8\&.2\fR
.sp
package require \fBaes  ?1\&.1\&.1?\fR
.sp
\fB::aes::aes\fR ?\fI-mode [ecb|cbc]\fR? ?\fI-dir [encrypt|decrypt]\fR? \fI-key keydata\fR ?\fI-iv vector\fR? ?\fI-hex\fR? ?\fI-out channel\fR? ?\fI-chunksize size\fR? [ \fI-in channel\fR | ?\fB--\fR? \fIdata\fR ]
.sp
\fB::aes::Init\fR \fImode\fR \fIkeydata\fR \fIiv\fR
.sp
\fB::aes::Encrypt\fR \fIKey\fR \fIdata\fR
.sp
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
.PP
.SH AUTHORS
Thorsten Schloermann, Pat Thoyts
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIaes\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
blowfish(n), des(n), md5(n), sha1(n)
.SH KEYWORDS
aes, block cipher, data integrity, encryption, security
.SH CATEGORY
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2005, Pat Thoyts <patthoyts@users\&.sourceforge\&.net>
Copyright (c) 2012, Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>

.fi







|











|


367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
.PP
.SH AUTHORS
Thorsten Schloermann, Pat Thoyts
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIaes\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
blowfish(n), des(n), md5(n), sha1(n)
.SH KEYWORDS
aes, block cipher, data integrity, encryption, security
.SH CATEGORY
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2005, Pat Thoyts <patthoyts@users\&.sourceforge\&.net>
Copyright (c) 2012-2013, Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>

.fi

Changes to embedded/man/files/modules/amazon-s3/S3.n.

1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
each moving on to the next unstarted task as it finishes each\&.
This is still being designed, and it is intended primarily
to be run on Amazon's Elastic Compute Cloud\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIamazon-s3\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
amazon, cloud, s3
.SH CATEGORY
Networking
.SH COPYRIGHT







|







1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
each moving on to the next unstarted task as it finishes each\&.
This is still being designed, and it is intended primarily
to be run on Amazon's Elastic Compute Cloud\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIamazon-s3\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
amazon, cloud, s3
.SH CATEGORY
Networking
.SH COPYRIGHT

Changes to embedded/man/files/modules/amazon-s3/xsxp.n.

371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
This outputs to \fIchan\fR (default stdout) a pretty-printed
version of \fIpxml\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIamazon-s3\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
dom, parser, xml
.SH CATEGORY
Text processing
.SH COPYRIGHT







|







371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
This outputs to \fIchan\fR (default stdout) a pretty-printed
version of \fIpxml\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIamazon-s3\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
dom, parser, xml
.SH CATEGORY
Text processing
.SH COPYRIGHT

Changes to embedded/man/files/modules/asn/asn.n.

697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
.SH EXAMPLES
Examples for the usage of this package can be found in the
implementation of package \fBldap\fR\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIasn\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
asn, ber, cer, der, internet, protocol, x\&.208, x\&.209
.SH CATEGORY
Networking
.SH COPYRIGHT







|







697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
.SH EXAMPLES
Examples for the usage of this package can be found in the
implementation of package \fBldap\fR\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIasn\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
asn, ber, cer, der, internet, protocol, x\&.208, x\&.209
.SH CATEGORY
Networking
.SH COPYRIGHT

Changes to embedded/man/files/modules/base32/base32.n.

307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
	8 I   17 R   26 2

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbase32\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
base32, rfc3548
.SH CATEGORY
Text processing
.SH COPYRIGHT







|







307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
	8 I   17 R   26 2

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbase32\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
base32, rfc3548
.SH CATEGORY
Text processing
.SH COPYRIGHT

Changes to embedded/man/files/modules/base32/base32core.n.

295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
The padding has not of length six, four, three, or one characters,
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbase32\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
base32
.SH CATEGORY
Text processing
.SH COPYRIGHT







|







295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
The padding has not of length six, four, three, or one characters,
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbase32\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
base32
.SH CATEGORY
Text processing
.SH COPYRIGHT

Changes to embedded/man/files/modules/base32/base32hex.n.

309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
	8 8        17 H   26 Q

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbase32\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
base32, hex, rfc3548
.SH CATEGORY
Text processing
.SH COPYRIGHT







|







309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
	8 8        17 H   26 Q

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbase32\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
base32, hex, rfc3548
.SH CATEGORY
Text processing
.SH COPYRIGHT

Changes to embedded/man/files/modules/base64/ascii85.n.

308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
Postscript Language Reference Manual, 3rd Edition, page 131\&.
\fIhttp://www\&.adobe\&.com/devnet/postscript/pdfs/PLRM\&.pdf\fR
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbase64\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
ascii85, encoding
.SH CATEGORY
Text processing
.SH COPYRIGHT







|







308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
Postscript Language Reference Manual, 3rd Edition, page 131\&.
\fIhttp://www\&.adobe\&.com/devnet/postscript/pdfs/PLRM\&.pdf\fR
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbase64\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
ascii85, encoding
.SH CATEGORY
Text processing
.SH COPYRIGHT

Changes to embedded/man/files/modules/base64/base64.n.

304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
% set caffeine [encoding convertfrom utf-8 [base64::decode $encoded]]

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbase64\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
base64, encoding
.SH CATEGORY
Text processing
.SH COPYRIGHT







|







304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
% set caffeine [encoding convertfrom utf-8 [base64::decode $encoded]]

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbase64\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
base64, encoding
.SH CATEGORY
Text processing
.SH COPYRIGHT

Changes to embedded/man/files/modules/base64/uuencode.n.

333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
{hello\&.txt 644 {Hello World}}

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbase64\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
encoding, uuencode
.SH CATEGORY
Text processing
.SH COPYRIGHT







|







333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
{hello\&.txt 644 {Hello World}}

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbase64\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
encoding, uuencode
.SH CATEGORY
Text processing
.SH COPYRIGHT

Changes to embedded/man/files/modules/base64/yencode.n.

316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
.IP [1]
\fIhttp://www\&.yenc\&.org/yenc-draft\&.1\&.3\&.txt\fR
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbase64\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
encoding, yEnc, ydecode, yencode
.SH CATEGORY
Text processing
.SH COPYRIGHT







|







316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
.IP [1]
\fIhttp://www\&.yenc\&.org/yenc-draft\&.1\&.3\&.txt\fR
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbase64\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
encoding, yEnc, ydecode, yencode
.SH CATEGORY
Text processing
.SH COPYRIGHT

Changes to embedded/man/files/modules/bee/bee.n.

526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
makes sure that they are different from strings, which all begin with
a digit\&.
.SH EXAMPLES
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbee\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
BitTorrent, bee, bittorrent, serialization, torrent
.SH CATEGORY
Networking
.SH COPYRIGHT







|







526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
makes sure that they are different from strings, which all begin with
a digit\&.
.SH EXAMPLES
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbee\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
BitTorrent, bee, bittorrent, serialization, torrent
.SH CATEGORY
Networking
.SH COPYRIGHT

Changes to embedded/man/files/modules/bench/bench.n.

466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
not match the declared expectations\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbench\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
bench_intro, bench_lang_intro, bench_lang_spec, bench_read, bench_wcsv, bench_wtext
.SH KEYWORDS
benchmark, merging, normalization, performance, testing
.SH CATEGORY







|







466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
not match the declared expectations\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbench\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
bench_intro, bench_lang_intro, bench_lang_spec, bench_read, bench_wcsv, bench_wtext
.SH KEYWORDS
benchmark, merging, normalization, performance, testing
.SH CATEGORY

Changes to embedded/man/files/modules/bench/bench_intro.n.

275
276
277
278
279
280
281

282
283
284
285

286
287
288
289
290
291
292
written in the bench language, and to manipulate benchmark results\&.
.PP
.SH "HISTORICAL NOTES"
This module and package have been derived from Jeff Hobbs'
\fBtclbench\fR application for the benchmarking of the Tcl core and
its ancestor "\fIrunbench\&.tcl\fR"\&.
.SH "BUGS, IDEAS, FEEDBACK"

This document, will undoubtedly contain bugs and other problems\&.
Please report such in the category \fIbench\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have\&.

.SH "SEE ALSO"
bench, bench_lang_faq, bench_lang_intro, bench_lang_spec
.SH KEYWORDS
bench language, benchmark, performance, testing
.SH CATEGORY
Benchmark tools
.SH COPYRIGHT







>
|

|
|
>







275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
written in the bench language, and to manipulate benchmark results\&.
.PP
.SH "HISTORICAL NOTES"
This module and package have been derived from Jeff Hobbs'
\fBtclbench\fR application for the benchmarking of the Tcl core and
its ancestor "\fIrunbench\&.tcl\fR"\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbench\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
bench, bench_lang_faq, bench_lang_intro, bench_lang_spec
.SH KEYWORDS
bench language, benchmark, performance, testing
.SH CATEGORY
Benchmark tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/bench/bench_lang_intro.n.

353
354
355
356
357
358
359

360
361
362
363

364
365
366
367
368
369
370
Now that this document has been digested the reader, assumed to be a
\fIwriter\fR of benchmarks, he should be fortified enough to be able
to understand the formal \fIbench language specfication\fR\&. It will
also serve as the detailed specification and cheat sheet for all
available commands and their syntax\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"

This document, will undoubtedly contain bugs and other problems\&.
Please report such in the category \fIbench\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have\&.

.SH "SEE ALSO"
bench_intro, bench_lang_spec
.SH KEYWORDS
bench language, benchmark, examples, performance, testing
.SH CATEGORY
Benchmark tools
.SH COPYRIGHT







>
|

|
|
>







353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
Now that this document has been digested the reader, assumed to be a
\fIwriter\fR of benchmarks, he should be fortified enough to be able
to understand the formal \fIbench language specfication\fR\&. It will
also serve as the detailed specification and cheat sheet for all
available commands and their syntax\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbench\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
bench_intro, bench_lang_spec
.SH KEYWORDS
bench language, benchmark, examples, performance, testing
.SH CATEGORY
Benchmark tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/bench/bench_lang_spec.n.

344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
to run without failing\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbench\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
bench_intro, bench_lang_intro
.SH KEYWORDS
bench language, benchmark, performance, specification, testing
.SH CATEGORY







|







344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
to run without failing\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbench\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
bench_intro, bench_lang_intro
.SH KEYWORDS
bench language, benchmark, performance, specification, testing
.SH CATEGORY

Changes to embedded/man/files/modules/bench/bench_read.n.

284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
.sp
and automatically detects which format is used by the input file\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbench\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
bench, bench::out::csv, bench::out::text, bench_intro
.SH KEYWORDS
benchmark, csv, formatting, human readable, parsing, performance, reading, testing, text
.SH CATEGORY







|







284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
.sp
and automatically detects which format is used by the input file\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbench\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
bench, bench::out::csv, bench::out::text, bench_intro
.SH KEYWORDS
benchmark, csv, formatting, human readable, parsing, performance, reading, testing, text
.SH CATEGORY

Changes to embedded/man/files/modules/bench/bench_wcsv.n.

272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
\fBbench::out::text\fR which provide commands to format benchmark
results in raw form, or for human consumption, respectively\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbench\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
bench, bench::out::text
.SH KEYWORDS
benchmark, csv, formatting, performance, testing
.SH CATEGORY







|







272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
\fBbench::out::text\fR which provide commands to format benchmark
results in raw form, or for human consumption, respectively\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbench\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
bench, bench::out::text
.SH KEYWORDS
benchmark, csv, formatting, performance, testing
.SH CATEGORY

Changes to embedded/man/files/modules/bench/bench_wtext.n.

272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
\fBbench::out::csv\fR which provide commands to format benchmark
results in raw form, or as importable CSV data, respectively\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbench\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
bench, bench::out::csv
.SH KEYWORDS
benchmark, formatting, human readable, performance, testing, text
.SH CATEGORY







|







272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
\fBbench::out::csv\fR which provide commands to format benchmark
results in raw form, or as importable CSV data, respectively\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbench\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
bench, bench::out::csv
.SH KEYWORDS
benchmark, formatting, human readable, performance, testing, text
.SH CATEGORY

Changes to embedded/man/files/modules/bibtex/bibtex.n.

379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
a \fB-stringcommand\fR callback in an invokation of the command
\fB::bibtex::parse\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbibtex\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
bibliography, bibtex, parsing, text processing
.SH CATEGORY
Text processing
.SH COPYRIGHT







|







379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
a \fB-stringcommand\fR callback in an invokation of the command
\fB::bibtex::parse\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIbibtex\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
bibliography, bibtex, parsing, text processing
.SH CATEGORY
Text processing
.SH COPYRIGHT

Changes to embedded/man/files/modules/blowfish/blowfish.n.

366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
.PP
.SH AUTHORS
Frank Pilhofer, Pat Thoyts
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIblowfish\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
3des, des, rc4
.SH KEYWORDS
block cipher, blowfish, cryptography, encryption, security
.SH CATEGORY







|







366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
.PP
.SH AUTHORS
Frank Pilhofer, Pat Thoyts
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIblowfish\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
3des, des, rc4
.SH KEYWORDS
block cipher, blowfish, cryptography, encryption, security
.SH CATEGORY

Changes to embedded/man/files/modules/cache/async.n.

359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
all keys known to the cache, making it unkown\&. This forces future
\fBget\fR-requests to reload the information from the provider\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIcache\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
asynchronous, cache, callback, synchronous
.SH COPYRIGHT
.nf
Copyright (c) 2008 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>







|







359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
all keys known to the cache, making it unkown\&. This forces future
\fBget\fR-requests to reload the information from the provider\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIcache\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
asynchronous, cache, callback, synchronous
.SH COPYRIGHT
.nf
Copyright (c) 2008 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>

Changes to embedded/man/files/modules/clock/iso8601.n.

278
279
280
281
282
283
284
285
286
287
288
289
\fB-timezone\fR
of the builtin command \fBclock scan\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIclock::iso8601\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH CATEGORY
Text processing







|




278
279
280
281
282
283
284
285
286
287
288
289
\fB-timezone\fR
of the builtin command \fBclock scan\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIclock::iso8601\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH CATEGORY
Text processing

Changes to embedded/man/files/modules/clock/rfc2822.n.

259
260
261
262
263
264
265
266
267
268
269
270
the given date in seconds since epoch\&. An error is thrown
if the command is unable to parse the date\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIclock::rfc2822\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH CATEGORY
Text processing







|




259
260
261
262
263
264
265
266
267
268
269
270
the given date in seconds since epoch\&. An error is thrown
if the command is unable to parse the date\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIclock::rfc2822\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH CATEGORY
Text processing

Changes to embedded/man/files/modules/cmdline/cmdline.n.

387
388
389
390
391
392
393
394
395
396
397
398
399
400
options is created, then the 'args' list is passed to cmdline for
processing\&.  Subsequently, different options are checked to see if
they have been passed to the script, and what their value is\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIcmdline\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
argument processing, argv, argv0, cmdline processing, command line processing
.SH CATEGORY
Programming tools







|






387
388
389
390
391
392
393
394
395
396
397
398
399
400
options is created, then the 'args' list is passed to cmdline for
processing\&.  Subsequently, different options are checked to see if
they have been passed to the script, and what their value is\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIcmdline\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
argument processing, argv, argv0, cmdline processing, command line processing
.SH CATEGORY
Programming tools

Changes to embedded/man/files/modules/comm/comm.n.

1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net> uses
\fBcomm\fR and has built a simple nameserver as part of his Pool
library\&.  See \fIhttp://www\&.purl\&.org/net/akupries/soft/pool/index\&.htm\fR\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIcomm\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
send(n)
.SH KEYWORDS
comm, communication, ipc, message, remote communication, remote execution, rpc, secure, send, socket, ssl, tls
.SH CATEGORY







|







1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net> uses
\fBcomm\fR and has built a simple nameserver as part of his Pool
library\&.  See \fIhttp://www\&.purl\&.org/net/akupries/soft/pool/index\&.htm\fR\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIcomm\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
send(n)
.SH KEYWORDS
comm, communication, ipc, message, remote communication, remote execution, rpc, secure, send, socket, ssl, tls
.SH CATEGORY

Changes to embedded/man/files/modules/comm/comm_wire.n.

389
390
391
392
393
394
395
396
397
398
399
400
401
402
403

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIcomm\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
comm
.SH KEYWORDS
comm, communication, ipc, message, remote communication, remote execution, rpc, socket
.SH CATEGORY







|







389
390
391
392
393
394
395
396
397
398
399
400
401
402
403

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIcomm\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
comm
.SH KEYWORDS
comm, communication, ipc, message, remote communication, remote execution, rpc, socket
.SH CATEGORY

Changes to embedded/man/files/modules/control/control.n.

371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
0

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIcontrol\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
break, continue, expr, if, join, namespace, return, string, while
.SH KEYWORDS
assert, control, do, flow, no-op, structure
.SH CATEGORY







|







371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
0

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIcontrol\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
break, continue, expr, if, join, namespace, return, string, while
.SH KEYWORDS
assert, control, do, flow, no-op, structure
.SH CATEGORY

Changes to embedded/man/files/modules/coroutine/coro_auto.n.

274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
.TP
\fBvwait\fR
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIcoroutine\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
after, channel, coroutine, events, exit, gets, global, green threads, read, threads, update, vwait
.SH CATEGORY
Coroutine
.SH COPYRIGHT







|







274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
.TP
\fBvwait\fR
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIcoroutine\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
after, channel, coroutine, events, exit, gets, global, green threads, read, threads, update, vwait
.SH CATEGORY
Coroutine
.SH COPYRIGHT

Changes to embedded/man/files/modules/coroutine/tcllib_coroutine.n.

332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
This command causes the coroutine calling it to wait for a write to
the named namespace variable \fIvarname\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIcoroutine\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
after, channel, coroutine, events, exit, gets, global, green threads, read, threads, update, vwait
.SH CATEGORY
Coroutine
.SH COPYRIGHT







|







332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
This command causes the coroutine calling it to wait for a write to
the named namespace variable \fIvarname\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIcoroutine\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
after, channel, coroutine, events, exit, gets, global, green threads, read, threads, update, vwait
.SH CATEGORY
Coroutine
.SH COPYRIGHT

Changes to embedded/man/files/modules/counter/counter.n.

447
448
449
450
451
452
453
454
455
456
457
458
459
460
\fIargs\fR determine the new characteristics of the counter\&. They have
the same meaning as described for \fB::counter::init\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIcounter\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
counting, histogram, statistics, tallying
.SH CATEGORY
Data structures







|






447
448
449
450
451
452
453
454
455
456
457
458
459
460
\fIargs\fR determine the new characteristics of the counter\&. They have
the same meaning as described for \fB::counter::init\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIcounter\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
counting, histogram, statistics, tallying
.SH CATEGORY
Data structures

Changes to embedded/man/files/modules/crc/cksum.n.

347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
.CE
.SH AUTHORS
Pat Thoyts
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIcrc\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
crc32(n), sum(n)
.SH KEYWORDS
checksum, cksum, crc, crc32, cyclic redundancy check, data integrity, security
.SH CATEGORY







|







347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
.CE
.SH AUTHORS
Pat Thoyts
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIcrc\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
crc32(n), sum(n)
.SH KEYWORDS
checksum, cksum, crc, crc32, cyclic redundancy check, data integrity, security
.SH CATEGORY

Changes to embedded/man/files/modules/crc/crc16.n.

365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
.CE
.SH AUTHORS
Pat Thoyts
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIcrc\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
cksum(n), crc32(n), sum(n)
.SH KEYWORDS
checksum, cksum, crc, crc16, crc32, cyclic redundancy check, data integrity, security
.SH CATEGORY







|







365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
.CE
.SH AUTHORS
Pat Thoyts
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIcrc\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
cksum(n), crc32(n), sum(n)
.SH KEYWORDS
checksum, cksum, crc, crc16, crc32, cyclic redundancy check, data integrity, security
.SH CATEGORY

Changes to embedded/man/files/modules/crc/crc32.n.

363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
.CE
.SH AUTHORS
Pat Thoyts
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIcrc\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
cksum(n), crc16(n), sum(n)
.SH KEYWORDS
checksum, cksum, crc, crc32, cyclic redundancy check, data integrity, security
.SH CATEGORY







|







363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
.CE
.SH AUTHORS
Pat Thoyts
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIcrc\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
cksum(n), crc16(n), sum(n)
.SH KEYWORDS
checksum, cksum, crc, crc32, cyclic redundancy check, data integrity, security
.SH CATEGORY

Changes to embedded/man/files/modules/crc/sum.n.

318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
.CE
.SH AUTHORS
Pat Thoyts
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIcrc\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
cksum(n), crc32(n), sum(1)
.SH KEYWORDS
checksum, cksum, crc, crc32, cyclic redundancy check, data integrity, security, sum
.SH CATEGORY







|







318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
.CE
.SH AUTHORS
Pat Thoyts
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIcrc\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
cksum(n), crc32(n), sum(1)
.SH KEYWORDS
checksum, cksum, crc, crc32, cyclic redundancy check, data integrity, security, sum
.SH CATEGORY

Changes to embedded/man/files/modules/csv/csv.n.

455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
.CE
instead\&. As can be seen only item (d) is different, now the empty string
instead of a "\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIcsv\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
matrix, queue
.SH KEYWORDS
csv, matrix, package, queue, tcllib
.SH CATEGORY







|







455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
.CE
instead\&. As can be seen only item (d) is different, now the empty string
instead of a "\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIcsv\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
matrix, queue
.SH KEYWORDS
csv, matrix, package, queue, tcllib
.SH CATEGORY

Changes to embedded/man/files/modules/debug/debug.n.

446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
.sp
The result of the method is the specified text\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdebug\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
debug, log, narrative, trace
.SH CATEGORY
debugging, tracing, and logging
.SH COPYRIGHT







|







446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
.sp
The result of the method is the specified text\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdebug\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
debug, log, narrative, trace
.SH CATEGORY
debugging, tracing, and logging
.SH COPYRIGHT

Changes to embedded/man/files/modules/debug/debug_caller.n.

270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
OO system and rewrites these to their original form, for
better readability\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdebug\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
debug, log, narrative, trace
.SH CATEGORY
debugging, tracing, and logging
.SH COPYRIGHT







|







270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
OO system and rewrites these to their original form, for
better readability\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdebug\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
debug, log, narrative, trace
.SH CATEGORY
debugging, tracing, and logging
.SH COPYRIGHT

Changes to embedded/man/files/modules/debug/debug_heartbeat.n.

269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
providing insight into timing variationsn and deviations from the
nominal \fIdelta\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdebug\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
debug, heartbeat, log, narrative, trace
.SH CATEGORY
debugging, tracing, and logging
.SH COPYRIGHT







|







269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
providing insight into timing variationsn and deviations from the
nominal \fIdelta\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdebug\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
debug, heartbeat, log, narrative, trace
.SH CATEGORY
debugging, tracing, and logging
.SH COPYRIGHT

Changes to embedded/man/files/modules/debug/debug_timestamp.n.

261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
provide caller information for all uses of the tag\&. Or in a message,
when only specific places need such detail\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdebug\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
debug, log, narrative, timestamps, trace
.SH CATEGORY
debugging, tracing, and logging
.SH COPYRIGHT







|







261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
provide caller information for all uses of the tag\&. Or in a message,
when only specific places need such detail\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdebug\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
debug, log, narrative, timestamps, trace
.SH CATEGORY
debugging, tracing, and logging
.SH COPYRIGHT

Changes to embedded/man/files/modules/des/des.n.

399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
Jochen C Loewer,
Mac Cody,
Pat Thoyts
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdes\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
aes(n), blowfish(n), md5(n), rc4(n), sha1(n)
.SH KEYWORDS
3DES, DES, block cipher, data integrity, encryption, security
.SH CATEGORY







|







399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
Jochen C Loewer,
Mac Cody,
Pat Thoyts
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdes\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
aes(n), blowfish(n), md5(n), rc4(n), sha1(n)
.SH KEYWORDS
3DES, DES, block cipher, data integrity, encryption, security
.SH CATEGORY

Changes to embedded/man/files/modules/dns/tcllib_dns.n.

485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
.PP
.SH AUTHORS
Pat Thoyts
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdns\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
resolver(5)
.SH KEYWORDS
DNS, domain name service, resolver, rfc 1034, rfc 1035, rfc 1886
.SH CATEGORY







|







485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
.PP
.SH AUTHORS
Pat Thoyts
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdns\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
resolver(5)
.SH KEYWORDS
DNS, domain name service, resolver, rfc 1034, rfc 1035, rfc 1886
.SH CATEGORY

Changes to embedded/man/files/modules/dns/tcllib_ip.n.

672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
.PP
.SH AUTHORS
Pat Thoyts
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdns\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
inet(3), ip(7), ipv6(7)
.SH KEYWORDS
internet address, ip, ipv4, ipv6, rfc 3513
.SH CATEGORY







|







672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
.PP
.SH AUTHORS
Pat Thoyts
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdns\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
inet(3), ip(7), ipv6(7)
.SH KEYWORDS
internet address, ip, ipv4, ipv6, rfc 3513
.SH CATEGORY

Changes to embedded/man/files/modules/docstrip/docstrip_util.n.

670
671
672
673
674
675
676















677
678
679
680
681
682
683
At the time of writing, no project has employed \fBdoctools\fR
markup in master source files, so experience of what works well is
not available\&. A source file could however look as follows
.CS


% [manpage_begin gcd n 1\&.0]















% [moddesc {Greatest Common Divisor}]
% [require gcd [opt 1\&.0]]
% [description]
%
% [list_begin definitions]
% [call [cmd gcd] [arg a] [arg b]]
%   The [cmd gcd] procedure takes two arguments [arg a] and [arg b] which







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
At the time of writing, no project has employed \fBdoctools\fR
markup in master source files, so experience of what works well is
not available\&. A source file could however look as follows
.CS


% [manpage_begin gcd n 1\&.0]
[see_also docstrip]
[see_also doctools]
[see_also doctools_fmt]
[keywords \&.ddt]
[keywords catalogue]
[keywords diff]
[keywords docstrip]
[keywords doctools]
[keywords documentation]
[keywords {literate programming}]
[keywords module]
[keywords {package indexing}]
[keywords patch]
[keywords source]
[keywords {Tcl module}]
% [moddesc {Greatest Common Divisor}]
% [require gcd [opt 1\&.0]]
% [description]
%
% [list_begin definitions]
% [call [cmd gcd] [arg a] [arg b]]
%   The [cmd gcd] procedure takes two arguments [arg a] and [arg b] which

Changes to embedded/man/files/modules/doctools/changelog.n.

318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
multiple entries for the same date and author into a single entry\&. The
new structure is returned as the result of the command\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
changelog, doctools, emacs
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







|







318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
multiple entries for the same date and author into a single entry\&. The
new structure is returned as the result of the command\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
changelog, doctools, emacs
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools/cvs.n.

313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
format of a ChangeLog as accepted and generated by \fBemacs\fR\&. The
constructed text is returned as the result of the command\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
\fIhttp://wiki\&.tcl\&.tk/log2changelog\fR
.SH KEYWORDS
changelog, cvs, cvs log, emacs, log
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2003-2008 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>







|



|







313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
format of a ChangeLog as accepted and generated by \fBemacs\fR\&. The
constructed text is returned as the result of the command\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
[uri, http://wiki\&.tcl\&.tk/log2changelog
.SH KEYWORDS
changelog, cvs, cvs log, emacs, log
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2003-2008 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>

Changes to embedded/man/files/modules/doctools/docidx.n.

547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
This engine generates Wiki markup as understood by Jean Claude
Wippler's \fBwikit\fR application\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
docidx_intro, docidx_lang_cmdref, docidx_lang_intro, docidx_lang_syntax, docidx_plugin_apiref
.SH KEYWORDS
HTML, TMML, conversion, docidx, documentation, index, keyword index, latex, manpage, markup, nroff, wiki
.SH CATEGORY







|







547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
This engine generates Wiki markup as understood by Jean Claude
Wippler's \fBwikit\fR application\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
docidx_intro, docidx_lang_cmdref, docidx_lang_intro, docidx_lang_syntax, docidx_plugin_apiref
.SH KEYWORDS
HTML, TMML, conversion, docidx, documentation, index, keyword index, latex, manpage, markup, nroff, wiki
.SH CATEGORY

Changes to embedded/man/files/modules/doctools/docidx_intro.n.

298
299
300
301
302
303
304

305
306
307
308

309
310
311
312
313
314
315
called \fIdoctoc\fR and \fIdoctools\fR, and they are for the markup
of \fItables of contents\fR, and general documentation,
respectively\&.
They are described in their own sets of documents, starting at the
\fIdoctoc introduction\fR and the \fIdoctools introduction\fR,
respectively\&.
.SH "BUGS, IDEAS, FEEDBACK"

This document, will undoubtedly contain bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have\&.

.SH "SEE ALSO"
docidx_lang_cmdref, docidx_lang_faq, docidx_lang_intro, docidx_lang_syntax, docidx_plugin_apiref, doctoc_intro, doctools::idx, doctools_intro
.SH KEYWORDS
index, keyword index, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







>
|

|
|
>







298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
called \fIdoctoc\fR and \fIdoctools\fR, and they are for the markup
of \fItables of contents\fR, and general documentation,
respectively\&.
They are described in their own sets of documents, starting at the
\fIdoctoc introduction\fR and the \fIdoctools introduction\fR,
respectively\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
docidx_lang_cmdref, docidx_lang_faq, docidx_lang_intro, docidx_lang_syntax, docidx_plugin_apiref, doctoc_intro, doctools::idx, doctools_intro
.SH KEYWORDS
index, keyword index, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools/docidx_lang_cmdref.n.

342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
Templating\&. In this form the command is replaced by the value of the
named document variable
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
docidx_intro, docidx_lang_faq, docidx_lang_intro, docidx_lang_syntax
.SH KEYWORDS
docidx commands, docidx language, docidx markup, markup, semantic markup
.SH CATEGORY







|







342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
Templating\&. In this form the command is replaced by the value of the
named document variable
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
docidx_intro, docidx_lang_faq, docidx_lang_intro, docidx_lang_syntax
.SH KEYWORDS
docidx commands, docidx language, docidx markup, markup, semantic markup
.SH CATEGORY

Changes to embedded/man/files/modules/doctools/docidx_lang_faq.n.

239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275

276
277
278
279
280
281
282
283
284
285
286
287
\\$1\l'|0\(ul'\\$2
..
.TH "docidx_lang_faq" n 1\&.0 tcllib "Documentation tools"
.BS
.SH NAME
docidx_lang_faq \- docidx language faq
.SH DESCRIPTION
.PP
.SH OVERVIEW
.SS "WHAT IS THIS DOCUMENT?"
This document is currently mainly a placeholder, to be filled with
commonly asked questions about the docidx markup language and
companions, and their answers\&.
.PP
Please report any questions (and, if possible, answers) we should
consider for this document in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
.SH EXAMPLES
.SS "WHERE DO I FIND DOCIDX EXAMPLES?"
We have no direct examples of documents written using docidx
markup\&. However the doctools processor \fBdtplite\fR does generate
keyword indices when processing a set of documents written in doctools
markup\&. The intermediate files use docidx markup and are not deleted
when generation completes\&. These files can therefore serve as
examples\&.
.PP
\fBdtplite\fR is distributed as part of Tcllib, so to get it you
need one of
.IP [1]
A CVS snapshot of Tcllib\&. How to retrieve such a snapshot and the
tools required for this are described at
\fIhttp://sourceforge\&.net/cvs/?group_id=12883\fR
.IP [2]
A Tcllib release archive\&. They are available at
\fIhttp://sourceforge\&.net/project/showfiles\&.php?group_id=12883\fR
.PP
.SH "BUGS, IDEAS, FEEDBACK"

This document, will undoubtedly contain bugs and other problems\&.
Please report any such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
the package and/or the documentation\&.
.SH "SEE ALSO"
docidx_lang_cmdref, docidx_lang_intro, docidx_lang_syntax
.SH KEYWORDS
docidx commands, docidx language, docidx markup, docidx syntax, examples, faq, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







<



|
|


|
|




|
|
|
|




|

|

|
|


>
|
|
|

|







239
240
241
242
243
244
245

246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
\\$1\l'|0\(ul'\\$2
..
.TH "docidx_lang_faq" n 1\&.0 tcllib "Documentation tools"
.BS
.SH NAME
docidx_lang_faq \- docidx language faq
.SH DESCRIPTION

.SH OVERVIEW
.SS "WHAT IS THIS DOCUMENT?"
This document is currently mainly a placeholder, to be filled with
commonly asked questions about the docidx markup language
and companions, and their answers\&.
.PP
Please report any questions (and, if possible, answers) we should
consider for this document as explained in the section
\fBBugs, Ideas, Feedback\fR below\&.
.SH EXAMPLES
.SS "WHERE DO I FIND DOCIDX EXAMPLES?"
We have no direct examples of documents written using docidx
markup\&. However the doctools processor \fBdtplite\fR does generate
a table of contents when processing a set of documents written in
doctools markup\&. The intermediate file for it uses docidx
markup and is not deleted when generation completes\&. Such files can
therefore serve as examples\&.
.PP
\fBdtplite\fR is distributed as part of Tcllib, so to get it you
need one of
.IP [1]
A snapshot of Tcllib\&. How to retrieve such a snapshot and the
tools required for this are described at
\fIDevelopment Snapshots\fR [/wiki?name=Development+Snapshots]
.IP [2]
A Tcllib release archive\&. They are available at the \fIhome\fR [/home]
page\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
docidx_lang_cmdref, docidx_lang_intro, docidx_lang_syntax
.SH KEYWORDS
docidx commands, docidx language, docidx markup, docidx syntax, examples, faq, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools/docidx_lang_intro.n.

413
414
415
416
417
418
419

420
421
422
423

424
425
426
427
428
429
430
.PP
On the other hand, docidx is perfectly suited for the automatic
generation from doctools documents, and this is the route Tcllib's
easy and simple \fBdtplite\fR goes, creating an index for a set of
documents behind the scenes, without the writer having to do so on
their own\&.
.SH "BUGS, IDEAS, FEEDBACK"

This document, will undoubtedly contain bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have\&.

.SH "SEE ALSO"
docidx_intro, docidx_lang_cmdref, docidx_lang_syntax
.SH KEYWORDS
docidx commands, docidx language, docidx markup, docidx syntax, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







>
|

|
|
>







413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
.PP
On the other hand, docidx is perfectly suited for the automatic
generation from doctools documents, and this is the route Tcllib's
easy and simple \fBdtplite\fR goes, creating an index for a set of
documents behind the scenes, without the writer having to do so on
their own\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
docidx_intro, docidx_lang_cmdref, docidx_lang_syntax
.SH KEYWORDS
docidx commands, docidx language, docidx markup, docidx syntax, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools/docidx_lang_syntax.n.

317
318
319
320
321
322
323

324
325
326
327

328
329
330
331
332
333
334
.IP [2]
\fBrb\fR, or
.IP [3]
\fBvset\fR (1-argument form)\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"

This document, will undoubtedly contain bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have\&.

.SH "SEE ALSO"
docidx_intro, docidx_lang_cmdref, docidx_lang_faq, docidx_lang_intro
.SH KEYWORDS
docidx commands, docidx language, docidx markup, docidx syntax, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







>
|

|
|
>







317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
.IP [2]
\fBrb\fR, or
.IP [3]
\fBvset\fR (1-argument form)\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
docidx_intro, docidx_lang_cmdref, docidx_lang_faq, docidx_lang_intro
.SH KEYWORDS
docidx commands, docidx language, docidx markup, docidx syntax, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools/docidx_plugin_apiref.n.

595
596
597
598
599
600
601

602
603
604
605

606
607
608
609
610
611
612
plain text\&.
.sp
The formatted text is expected as the result of the command,
and added to the output\&. If no special processing is required it has
to simply return its argument without change\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"

This document, will undoubtedly contain bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have\&.

.SH "SEE ALSO"
docidx_intro, docidx_lang_cmdref, docidx_lang_faq, docidx_lang_intro, docidx_lang_syntax, doctools::idx
.SH KEYWORDS
formatting engine, index, index formatter, keywords, markup, plugin, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







>
|

|
|
>







595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
plain text\&.
.sp
The formatted text is expected as the result of the command,
and added to the output\&. If no special processing is required it has
to simply return its argument without change\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
docidx_intro, docidx_lang_cmdref, docidx_lang_faq, docidx_lang_intro, docidx_lang_syntax, doctools::idx
.SH KEYWORDS
formatting engine, index, index formatter, keywords, markup, plugin, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools/doctoc.n.

547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
This engine generates Wiki markup as understood by Jean Claude
Wippler's \fBwikit\fR application\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
doctoc_intro, doctoc_lang_cmdref, doctoc_lang_intro, doctoc_lang_syntax, doctoc_plugin_apiref
.SH KEYWORDS
HTML, TMML, conversion, doctoc, documentation, latex, manpage, markup, nroff, table of contents, toc, wiki
.SH CATEGORY







|







547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
This engine generates Wiki markup as understood by Jean Claude
Wippler's \fBwikit\fR application\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
doctoc_intro, doctoc_lang_cmdref, doctoc_lang_intro, doctoc_lang_syntax, doctoc_plugin_apiref
.SH KEYWORDS
HTML, TMML, conversion, doctoc, documentation, latex, manpage, markup, nroff, table of contents, toc, wiki
.SH CATEGORY

Changes to embedded/man/files/modules/doctools/doctoc_intro.n.

297
298
299
300
301
302
303

304
305
306
307

308
309
310
311
312
313
314
doctoc does not stand alone, it has two companion formats\&. These are
called \fIdocidx\fR and \fIdoctools\fR, and they are for the markup
of \fIkeyword indices\fR, and general documentation, respectively\&.
They are described in their own sets of documents, starting at the
\fIdocidx introduction\fR and the \fIdoctools introduction\fR,
respectively\&.
.SH "BUGS, IDEAS, FEEDBACK"

This document, will undoubtedly contain bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have\&.

.SH "SEE ALSO"
docidx_intro, doctoc_lang_cmdref, doctoc_lang_faq, doctoc_lang_intro, doctoc_lang_syntax, doctoc_plugin_apiref, doctools::toc, doctools_intro
.SH KEYWORDS
markup, semantic markup, table of contents, toc
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







>
|

|
|
>







297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
doctoc does not stand alone, it has two companion formats\&. These are
called \fIdocidx\fR and \fIdoctools\fR, and they are for the markup
of \fIkeyword indices\fR, and general documentation, respectively\&.
They are described in their own sets of documents, starting at the
\fIdocidx introduction\fR and the \fIdoctools introduction\fR,
respectively\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
docidx_intro, doctoc_lang_cmdref, doctoc_lang_faq, doctoc_lang_intro, doctoc_lang_syntax, doctoc_plugin_apiref, doctools::toc, doctools_intro
.SH KEYWORDS
markup, semantic markup, table of contents, toc
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools/doctoc_lang_cmdref.n.

349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
Templating\&. In this form the command is replaced by the value of the
named document variable
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
doctoc_intro, doctoc_lang_faq, doctoc_lang_intro, doctoc_lang_syntax
.SH KEYWORDS
doctoc commands, doctoc language, doctoc markup, markup, semantic markup
.SH CATEGORY







|







349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
Templating\&. In this form the command is replaced by the value of the
named document variable
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
doctoc_intro, doctoc_lang_faq, doctoc_lang_intro, doctoc_lang_syntax
.SH KEYWORDS
doctoc commands, doctoc language, doctoc markup, markup, semantic markup
.SH CATEGORY

Changes to embedded/man/files/modules/doctools/doctoc_lang_faq.n.

239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275

276
277
278
279
280
281
282
283
284
285
286
287
\\$1\l'|0\(ul'\\$2
..
.TH "doctoc_lang_faq" n 1\&.0 tcllib "Documentation tools"
.BS
.SH NAME
doctoc_lang_faq \- doctoc language faq
.SH DESCRIPTION
.PP
.SH OVERVIEW
.SS "WHAT IS THIS DOCUMENT?"
This document is currently mainly a placeholder, to be filled with
commonly asked questions about the doctoc markup language and
companions, and their answers\&.
.PP
Please report any questions (and, if possible, answers) we should
consider for this document in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
.SH EXAMPLES
.SS "WHERE DO I FIND DOCTOC EXAMPLES?"
We have no direct examples of documents written using doctoc
markup\&. However the doctools processor \fBdtplite\fR does generate
a table of contents when processing a set of documents written in
doctools markup\&. The intermediate file for it uses doctoc markup and
is not deleted when generation completes\&. Such files can therefore
serve as examples\&.
.PP
\fBdtplite\fR is distributed as part of Tcllib, so to get it you
need one of
.IP [1]
A CVS snapshot of Tcllib\&. How to retrieve such a snapshot and the
tools required for this are described at
\fIhttp://sourceforge\&.net/cvs/?group_id=12883\fR
.IP [2]
A Tcllib release archive\&. They are available at
\fIhttp://sourceforge\&.net/project/showfiles\&.php?group_id=12883\fR
.PP
.SH "BUGS, IDEAS, FEEDBACK"

This document, will undoubtedly contain bugs and other problems\&.
Please report any such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
the package and/or the documentation\&.
.SH "SEE ALSO"
doctoc_lang_cmdref, doctoc_lang_intro, doctoc_lang_syntax
.SH KEYWORDS
doctoc commands, doctoc language, doctoc markup, doctoc syntax, examples, faq, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







<



|
|


|
|





|
|
|




|

|

|
|


>
|
|
|

|







239
240
241
242
243
244
245

246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
\\$1\l'|0\(ul'\\$2
..
.TH "doctoc_lang_faq" n 1\&.0 tcllib "Documentation tools"
.BS
.SH NAME
doctoc_lang_faq \- doctoc language faq
.SH DESCRIPTION

.SH OVERVIEW
.SS "WHAT IS THIS DOCUMENT?"
This document is currently mainly a placeholder, to be filled with
commonly asked questions about the doctoc markup language
and companions, and their answers\&.
.PP
Please report any questions (and, if possible, answers) we should
consider for this document as explained in the section
\fBBugs, Ideas, Feedback\fR below\&.
.SH EXAMPLES
.SS "WHERE DO I FIND DOCTOC EXAMPLES?"
We have no direct examples of documents written using doctoc
markup\&. However the doctools processor \fBdtplite\fR does generate
a table of contents when processing a set of documents written in
doctools markup\&. The intermediate file for it uses doctoc
markup and is not deleted when generation completes\&. Such files can
therefore serve as examples\&.
.PP
\fBdtplite\fR is distributed as part of Tcllib, so to get it you
need one of
.IP [1]
A snapshot of Tcllib\&. How to retrieve such a snapshot and the
tools required for this are described at
\fIDevelopment Snapshots\fR [/wiki?name=Development+Snapshots]
.IP [2]
A Tcllib release archive\&. They are available at the \fIhome\fR [/home]
page\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
doctoc_lang_cmdref, doctoc_lang_intro, doctoc_lang_syntax
.SH KEYWORDS
doctoc commands, doctoc language, doctoc markup, doctoc syntax, examples, faq, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools/doctoc_lang_intro.n.

484
485
486
487
488
489
490

491
492
493
494

495
496
497
498
499
500
501
.PP
On the other hand, doctoc is perfectly suited for the automatic
generation from doctools documents, and this is the route Tcllib's
easy and simple \fBdtplite\fR goes, creating a table of contents
for a set of documents behind the scenes, without the writer having to
do so on their own\&.
.SH "BUGS, IDEAS, FEEDBACK"

This document, will undoubtedly contain bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have\&.

.SH "SEE ALSO"
doctoc_intro, doctoc_lang_cmdref, doctoc_lang_syntax
.SH KEYWORDS
doctoc commands, doctoc language, doctoc markup, doctoc syntax, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







>
|

|
|
>







484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
.PP
On the other hand, doctoc is perfectly suited for the automatic
generation from doctools documents, and this is the route Tcllib's
easy and simple \fBdtplite\fR goes, creating a table of contents
for a set of documents behind the scenes, without the writer having to
do so on their own\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
doctoc_intro, doctoc_lang_cmdref, doctoc_lang_syntax
.SH KEYWORDS
doctoc commands, doctoc language, doctoc markup, doctoc syntax, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools/doctoc_lang_syntax.n.

305
306
307
308
309
310
311

312
313
314
315

316
317
318
319
320
321
322

division  = DIVISION_START
            contents
            DIVISION_END

.CE
.SH "BUGS, IDEAS, FEEDBACK"

This document, will undoubtedly contain bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have\&.

.SH "SEE ALSO"
doctoc_intro, doctoc_lang_cmdref, doctoc_lang_faq, doctoc_lang_intro
.SH KEYWORDS
doctoc commands, doctoc language, doctoc markup, doctoc syntax, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







>
|

|
|
>







305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324

division  = DIVISION_START
            contents
            DIVISION_END

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
doctoc_intro, doctoc_lang_cmdref, doctoc_lang_faq, doctoc_lang_intro
.SH KEYWORDS
doctoc commands, doctoc language, doctoc markup, doctoc syntax, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools/doctoc_plugin_apiref.n.

595
596
597
598
599
600
601

602
603
604
605

606
607
608
609
610
611
612
plain text\&.
.sp
The formatted text is expected as the result of the command,
and added to the output\&. If no special processing is required it has
to simply return its argument without change\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"

This document, will undoubtedly contain bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have\&.

.SH "SEE ALSO"
doctoc_intro, doctoc_lang_cmdref, doctoc_lang_faq, doctoc_lang_intro, doctoc_lang_syntax, doctools::toc
.SH KEYWORDS
formatting engine, markup, plugin, semantic markup, table of contents, toc, toc formatter
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







>
|

|
|
>







595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
plain text\&.
.sp
The formatted text is expected as the result of the command,
and added to the output\&. If no special processing is required it has
to simply return its argument without change\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
doctoc_intro, doctoc_lang_cmdref, doctoc_lang_faq, doctoc_lang_intro, doctoc_lang_syntax, doctools::toc
.SH KEYWORDS
formatting engine, markup, plugin, semantic markup, table of contents, toc, toc formatter
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools/doctools.n.

655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
This engine generates Wiki markup as understood by Jean Claude
Wippler's \fBwikit\fR application\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
doctools_intro, doctools_lang_cmdref, doctools_lang_intro, doctools_lang_syntax, doctools_plugin_apiref
.SH KEYWORDS
HTML, TMML, conversion, documentation, manpage, markup, nroff
.SH CATEGORY







|







655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
This engine generates Wiki markup as understood by Jean Claude
Wippler's \fBwikit\fR application\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
doctools_intro, doctools_lang_cmdref, doctools_lang_intro, doctools_lang_syntax, doctools_plugin_apiref
.SH KEYWORDS
HTML, TMML, conversion, documentation, manpage, markup, nroff
.SH CATEGORY

Changes to embedded/man/files/modules/doctools/doctools_intro.n.

296
297
298
299
300
301
302

303
304
305
306

307
308
309
310
311
312
313
called \fIdocidx\fR and \fIdoctoc\fR, and they are for the markup of
\fIkeyword indices\fR, and \fItables of contents\fR,
respectively\&.
They are described in their own sets of documents, starting at the
\fIdocidx introduction\fR and the \fIdoctoc introduction\fR,
respectively\&.
.SH "BUGS, IDEAS, FEEDBACK"

This document, will undoubtedly contain bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have\&.

.SH "SEE ALSO"
docidx_intro, doctoc_intro, doctools, doctools_lang_cmdref, doctools_lang_faq, doctools_lang_intro, doctools_lang_syntax, doctools_plugin_apiref
.SH KEYWORDS
markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







>
|

|
|
>







296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
called \fIdocidx\fR and \fIdoctoc\fR, and they are for the markup of
\fIkeyword indices\fR, and \fItables of contents\fR,
respectively\&.
They are described in their own sets of documents, starting at the
\fIdocidx introduction\fR and the \fIdoctoc introduction\fR,
respectively\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
docidx_intro, doctoc_intro, doctools, doctools_lang_cmdref, doctools_lang_faq, doctools_lang_intro, doctools_lang_syntax, doctools_plugin_apiref
.SH KEYWORDS
markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools/doctools_lang_cmdref.n.

762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
\fIwidget\fR\&. The text may have other markup already applied to
it\&. Main use is the highlighting of widget names in free-form text\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
doctools_intro, doctools_lang_faq, doctools_lang_intro, doctools_lang_syntax
.SH KEYWORDS
doctools commands, doctools language, doctools markup, markup, semantic markup
.SH CATEGORY







|







762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
\fIwidget\fR\&. The text may have other markup already applied to
it\&. Main use is the highlighting of widget names in free-form text\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
doctools_intro, doctools_lang_faq, doctools_lang_intro, doctools_lang_syntax
.SH KEYWORDS
doctools commands, doctools language, doctools markup, markup, semantic markup
.SH CATEGORY

Changes to embedded/man/files/modules/doctools/doctools_lang_faq.n.

239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263




264
265
266
267
268

269
270
271
272
273

274
275
276
277
278
279
280
281
282
283
284
285
\\$1\l'|0\(ul'\\$2
..
.TH "doctools_lang_faq" n 1\&.0 tcllib "Documentation tools"
.BS
.SH NAME
doctools_lang_faq \- doctools language faq
.SH DESCRIPTION
.PP
.SH OVERVIEW
.SS "WHAT IS THIS DOCUMENT?"
This document is currently mainly a placeholder, to be filled with
commonly asked questions about the doctools markup language and
companions, and their answers\&.
.PP
Please report any questions (and, if possible, answers) we should
consider for this document in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
.SH EXAMPLES
.SS "WHERE DO I FIND DOCTOOLS EXAMPLES?"
The most examples of doctools markup currently known can be found in
the Tcllib and Tklib package bundles where basically the documentation
of all packages is written in it\&.
In Tcllib you will also find the sources for the doctools
documentation themselves, which makes use of nearly all of the
available markup commands\&.




You need one of
.IP [1]
A CVS snapshot of Tcllib\&. How to retrieve such a snapshot and the
tools required for this are described at
\fIhttp://sourceforge\&.net/cvs/?group_id=12883\fR

.IP [2]
A Tcllib release archive\&. They are available at
\fIhttp://sourceforge\&.net/project/showfiles\&.php?group_id=12883\fR
.PP
.SH "BUGS, IDEAS, FEEDBACK"

This document, will undoubtedly contain bugs and other problems\&.
Please report any such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
the package and/or the documentation\&.
.SH "SEE ALSO"
doctools_lang_cmdref, doctools_lang_intro, doctools_lang_syntax
.SH KEYWORDS
doctools commands, doctools language, doctools markup, doctools syntax, examples, faq, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







<



|
|


|
|


|
<
<
|
|
|
>
>
>
>
|

|

<
>

|
|


>
|
|
|

|







239
240
241
242
243
244
245

246
247
248
249
250
251
252
253
254
255
256
257


258
259
260
261
262
263
264
265
266
267
268

269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
\\$1\l'|0\(ul'\\$2
..
.TH "doctools_lang_faq" n 1\&.0 tcllib "Documentation tools"
.BS
.SH NAME
doctools_lang_faq \- doctools language faq
.SH DESCRIPTION

.SH OVERVIEW
.SS "WHAT IS THIS DOCUMENT?"
This document is currently mainly a placeholder, to be filled with
commonly asked questions about the doctools markup language
and companions, and their answers\&.
.PP
Please report any questions (and, if possible, answers) we should
consider for this document as explained in the section
\fBBugs, Ideas, Feedback\fR below\&.
.SH EXAMPLES
.SS "WHERE DO I FIND DOCTOOLS EXAMPLES?"
We have no direct examples of documents written using doctools


markup\&. However the doctools processor \fBdtplite\fR does generate
a table of contents when processing a set of documents written in
doctools markup\&. The intermediate file for it uses doctools
markup and is not deleted when generation completes\&. Such files can
therefore serve as examples\&.
.PP
\fBdtplite\fR is distributed as part of Tcllib, so to get it you
need one of
.IP [1]
A snapshot of Tcllib\&. How to retrieve such a snapshot and the
tools required for this are described at

\fIDevelopment Snapshots\fR [/wiki?name=Development+Snapshots]
.IP [2]
A Tcllib release archive\&. They are available at the \fIhome\fR [/home]
page\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
doctools_lang_cmdref, doctools_lang_intro, doctools_lang_syntax
.SH KEYWORDS
doctools commands, doctools language, doctools markup, doctools syntax, examples, faq, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools/doctools_lang_intro.n.

287
288
289
290
291
292
293










294


295
296
297
298
299
300
301
302
.CE
.SS "BASIC STRUCTURE"
The most simple document which can be written in doctools is
.CS


    [manpage_begin NAME SECTION VERSION]










    [description]


    [manpage_end]

.CE
This also shows us that all doctools documents are split into two
parts, the \fIheader\fR and the \fIbody\fR\&. Everything coming before
[\fBdescription\fR] belongs to the header, and everything coming
after belongs to the body, with the whole document bracketed by the
two \fBmanpage_*\fR commands\&. Before and after these opening and







>
>
>
>
>
>
>
>
>
>

>
>
|







287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
.CE
.SS "BASIC STRUCTURE"
The most simple document which can be written in doctools is
.CS


    [manpage_begin NAME SECTION VERSION]
[see_also doctools_intro]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_faq]
[see_also doctools_lang_syntax]
[keywords {doctools commands}]
[keywords {doctools language}]
[keywords {doctools markup}]
[keywords {doctools syntax}]
[keywords markup]
[keywords {semantic markup}]
    [description]
    [vset CATEGORY doctools]
[include \&.\&./doctools2base/include/feedback\&.inc]
[manpage_end]

.CE
This also shows us that all doctools documents are split into two
parts, the \fIheader\fR and the \fIbody\fR\&. Everything coming before
[\fBdescription\fR] belongs to the header, and everything coming
after belongs to the body, with the whole document bracketed by the
two \fBmanpage_*\fR commands\&. Before and after these opening and
329
330
331
332
333
334
335










336
337
338
339
340
341
342
343
344
345
346
347
348
349










350
351


352
353
354
355
356
357
358
359
360
361
362
363
364
365
366










367
368
369
370
371
372
373
in the given order\&. Regular text is not allowed within the header\&.
.PP
Given the above a less minimal example of a document is
.CS


[manpage_begin NAME SECTION VERSION]










[\fBcopyright {YEAR AUTHOR}\fR]
[\fBtitledesc TITLE\fR]
[\fBmoddesc   MODULE_TITLE\fR]
[\fBrequire   PACKAGE VERSION\fR]
[\fBrequire   PACKAGE\fR]
[description]
[manpage_end]

.CE
Remember that the whitespace is optional\&. The document
.CS


    [manpage_begin NAME SECTION VERSION]










    [copyright {YEAR AUTHOR}][titledesc TITLE][moddesc MODULE_TITLE]
    [require PACKAGE VERSION][require PACKAGE][description]


    [manpage_end]

.CE
has the same meaning as the example before\&.
.PP
On the other hand, if \fIwhitespace\fR is present it consists not
only of any sequence of characters containing the space character,
horizontal and vertical tabs, carriage return, and newline, but it may
contain comment markup as well, in the form of the \fBcomment\fR
command\&.
.CS


[\fBcomment { \&.\&.\&. }\fR]
[manpage_begin NAME SECTION VERSION]










[copyright {YEAR AUTHOR}]
[titledesc TITLE]
[moddesc   MODULE_TITLE][\fBcomment { \&.\&.\&. }\fR]
[require   PACKAGE VERSION]
[require   PACKAGE]
[description]
[manpage_end]







>
>
>
>
>
>
>
>
>
>














>
>
>
>
>
>
>
>
>
>


>
>
|














>
>
>
>
>
>
>
>
>
>







341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
in the given order\&. Regular text is not allowed within the header\&.
.PP
Given the above a less minimal example of a document is
.CS


[manpage_begin NAME SECTION VERSION]










[\fBcopyright {YEAR AUTHOR}\fR]
[\fBtitledesc TITLE\fR]
[\fBmoddesc   MODULE_TITLE\fR]
[\fBrequire   PACKAGE VERSION\fR]
[\fBrequire   PACKAGE\fR]
[description]
[manpage_end]

.CE
Remember that the whitespace is optional\&. The document
.CS


    [manpage_begin NAME SECTION VERSION]
[see_also doctools_intro]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_faq]
[see_also doctools_lang_syntax]
[keywords {doctools commands}]
[keywords {doctools language}]
[keywords {doctools markup}]
[keywords {doctools syntax}]
[keywords markup]
[keywords {semantic markup}]
    [copyright {YEAR AUTHOR}][titledesc TITLE][moddesc MODULE_TITLE]
    [require PACKAGE VERSION][require PACKAGE][description]
    [vset CATEGORY doctools]
[include \&.\&./doctools2base/include/feedback\&.inc]
[manpage_end]

.CE
has the same meaning as the example before\&.
.PP
On the other hand, if \fIwhitespace\fR is present it consists not
only of any sequence of characters containing the space character,
horizontal and vertical tabs, carriage return, and newline, but it may
contain comment markup as well, in the form of the \fBcomment\fR
command\&.
.CS


[\fBcomment { \&.\&.\&. }\fR]
[manpage_begin NAME SECTION VERSION]










[copyright {YEAR AUTHOR}]
[titledesc TITLE]
[moddesc   MODULE_TITLE][\fBcomment { \&.\&.\&. }\fR]
[require   PACKAGE VERSION]
[require   PACKAGE]
[description]
[manpage_end]
385
386
387
388
389
390
391










392
393
394
395
396
397
398
399
400
401
402










403
404
405
406
407
408
409
is possible to write
.CS


[\fBinclude FILE\fR]
[\fBvset VAR VALUE\fR]
[manpage_begin NAME SECTION VERSION]










[description]
[manpage_end]

.CE
Even more important, these two commands are allowed anywhere where a
markup command is allowed, without regard for any other
structure\&. I\&.e\&. for example in the header as well\&.
.CS


[manpage_begin NAME SECTION VERSION]










[\fBinclude FILE\fR]
[\fBvset VAR VALUE\fR]
[description]
[manpage_end]

.CE
The only restriction \fBinclude\fR has to obey is that the contents of







>
>
>
>
>
>
>
>
>
>











>
>
>
>
>
>
>
>
>
>







429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
is possible to write
.CS


[\fBinclude FILE\fR]
[\fBvset VAR VALUE\fR]
[manpage_begin NAME SECTION VERSION]










[description]
[manpage_end]

.CE
Even more important, these two commands are allowed anywhere where a
markup command is allowed, without regard for any other
structure\&. I\&.e\&. for example in the header as well\&.
.CS


[manpage_begin NAME SECTION VERSION]










[\fBinclude FILE\fR]
[\fBvset VAR VALUE\fR]
[description]
[manpage_end]

.CE
The only restriction \fBinclude\fR has to obey is that the contents of
426
427
428
429
430
431
432










433
434
435
436
437
438
439
the next\&. The first paragraph is automatically opened at the beginning
of the body, by \fBdescription\fR\&. In the same manner the last
paragraph automatically ends at \fBmanpage_end\fR\&.
.CS


[manpage_begin NAME SECTION VERSION]










[description]
 \&.\&.\&.
[\fBpara\fR]
 \&.\&.\&.
[\fBpara\fR]
 \&.\&.\&.
[manpage_end]







>
>
>
>
>
>
>
>
>
>







490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
the next\&. The first paragraph is automatically opened at the beginning
of the body, by \fBdescription\fR\&. In the same manner the last
paragraph automatically ends at \fBmanpage_end\fR\&.
.CS


[manpage_begin NAME SECTION VERSION]










[description]
 \&.\&.\&.
[\fBpara\fR]
 \&.\&.\&.
[\fBpara\fR]
 \&.\&.\&.
[manpage_end]
452
453
454
455
456
457
458










459
460
461
462
463
464
465
.PP
Empty sections are \fInot\fR ignored\&. We are free to (not) use
paragraphs within sections\&.
.CS


[manpage_begin NAME SECTION VERSION]










[description]
 \&.\&.\&.
[\fBsection {Section A}\fR]
 \&.\&.\&.
[para]
 \&.\&.\&.
[\fBsection {Section B}\fR]







>
>
>
>
>
>
>
>
>
>







526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
.PP
Empty sections are \fInot\fR ignored\&. We are free to (not) use
paragraphs within sections\&.
.CS


[manpage_begin NAME SECTION VERSION]










[description]
 \&.\&.\&.
[\fBsection {Section A}\fR]
 \&.\&.\&.
[para]
 \&.\&.\&.
[\fBsection {Section B}\fR]
477
478
479
480
481
482
483










484
485
486
487
488
489
490
.PP
Empty subsections are \fInot\fR ignored\&. We are free to (not) use
paragraphs within subsections\&.
.CS


[manpage_begin NAME SECTION VERSION]










[description]
 \&.\&.\&.
[section {Section A}]
 \&.\&.\&.
[\fBsubsection {Sub 1}\fR]
 \&.\&.\&.
[para]







>
>
>
>
>
>
>
>
>
>







561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
.PP
Empty subsections are \fInot\fR ignored\&. We are free to (not) use
paragraphs within subsections\&.
.CS


[manpage_begin NAME SECTION VERSION]










[description]
 \&.\&.\&.
[section {Section A}]
 \&.\&.\&.
[\fBsubsection {Sub 1}\fR]
 \&.\&.\&.
[para]
807
808
809
810
811
812
813

814
815
816
817

818
819
820
821
822
823
824
825
826
827
828
.PP
To be able to validate a document while writing it, it is also
recommended to familiarize oneself with one of the applications for
the processing and conversion of doctools documents, i\&.e\&. either
Tcllib's easy and simple \fBdtplite\fR, or Tclapps'
ultra-configurable \fBdtp\fR\&.
.SH "BUGS, IDEAS, FEEDBACK"

This document, will undoubtedly contain bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have\&.

.SH "SEE ALSO"
doctools_intro, doctools_lang_cmdref, doctools_lang_faq, doctools_lang_syntax
.SH KEYWORDS
doctools commands, doctools language, doctools markup, doctools syntax, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>

.fi







>
|

|
|
>











901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
.PP
To be able to validate a document while writing it, it is also
recommended to familiarize oneself with one of the applications for
the processing and conversion of doctools documents, i\&.e\&. either
Tcllib's easy and simple \fBdtplite\fR, or Tclapps'
ultra-configurable \fBdtp\fR\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
doctools_intro, doctools_lang_cmdref, doctools_lang_faq, doctools_lang_syntax
.SH KEYWORDS
doctools commands, doctools language, doctools markup, doctools syntax, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>

.fi

Changes to embedded/man/files/modules/doctools/doctools_lang_syntax.n.

342
343
344
345
346
347
348

349
350
351
352

353
354
355
356
357
358
359
enum_list   = [ <WHITE> ] { ENUM         paras }
item_list   = [ <WHITE> ] { ITEM         paras }
optd_list   = [ <WHITE> ] { OPT_DEF      paras }
tkoptd_list = [ <WHITE> ] { TKOPTION_DEF paras }

.CE
.SH "BUGS, IDEAS, FEEDBACK"

This document, will undoubtedly contain bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have\&.

.SH "SEE ALSO"
doctools_intro, doctools_lang_cmdref, doctools_lang_faq, doctools_lang_intro
.SH KEYWORDS
doctools commands, doctools language, doctools markup, doctools syntax, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







>
|

|
|
>







342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
enum_list   = [ <WHITE> ] { ENUM         paras }
item_list   = [ <WHITE> ] { ITEM         paras }
optd_list   = [ <WHITE> ] { OPT_DEF      paras }
tkoptd_list = [ <WHITE> ] { TKOPTION_DEF paras }

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
doctools_intro, doctools_lang_cmdref, doctools_lang_faq, doctools_lang_intro
.SH KEYWORDS
doctools commands, doctools language, doctools markup, doctools syntax, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools/doctools_plugin_apiref.n.

663
664
665
666
667
668
669

670
671
672
673

674
675
676
677
678
679
680
plain text\&.
.sp
The formatted text is expected as the result of the command,
and added to the output\&. If no special processing is required it has
to simply return its argument without change\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"

This document, will undoubtedly contain bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have\&.

.SH "SEE ALSO"
doctools, doctools_intro, doctools_lang_cmdref, doctools_lang_faq, doctools_lang_intro, doctools_lang_syntax
.SH KEYWORDS
document, formatter, formatting engine, manpage, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







>
|

|
|
>







663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
plain text\&.
.sp
The formatted text is expected as the result of the command,
and added to the output\&. If no special processing is required it has
to simply return its argument without change\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
doctools, doctools_intro, doctools_lang_cmdref, doctools_lang_faq, doctools_lang_intro, doctools_lang_syntax
.SH KEYWORDS
document, formatter, formatting engine, manpage, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools/mpexpand.n.

301
302
303
304
305
306
307







308
309
310
311
312
313
314
specified the command will list its actions before executing them\&.
.sp
The \fImodule\fR information is passed to \fBmpexpand\fR\&.
.PP
.SH NOTES
.PP
Possible future formats are plain text, pdf and postscript\&.







.SH "SEE ALSO"
expander(n), format(n), formatter(n)
.SH KEYWORDS
HTML, TMML, conversion, manpage, markup, nroff
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







>
>
>
>
>
>
>







301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
specified the command will list its actions before executing them\&.
.sp
The \fImodule\fR information is passed to \fBmpexpand\fR\&.
.PP
.SH NOTES
.PP
Possible future formats are plain text, pdf and postscript\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
expander(n), format(n), formatter(n)
.SH KEYWORDS
HTML, TMML, conversion, manpage, markup, nroff
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2base/html_cssdefaults.n.

264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
This command returns the text of the default CSS style to use for HTML
markup generated by the various HTML export plugins\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
CSS, HTML, doctools, export, plugin, style
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







|







264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
This command returns the text of the default CSS style to use for HTML
markup generated by the various HTML export plugins\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
CSS, HTML, doctools, export, plugin, style
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2base/nroff_manmacros.n.

264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
This command returns the text of the default CSS style to use for NROFF
generated by the various NROFF export plugins\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
doctools, export, macros, man_macros, nroff, plugin
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







|







264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
This command returns the text of the default CSS style to use for NROFF
generated by the various NROFF export plugins\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
doctools, export, macros, man_macros, nroff, plugin
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2base/tcl_parse.n.

390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
All leaves of the tree are either Text or Command nodes\&.
Word nodes cannot be leaves\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Tcl syntax, command, doctools, parser, subst, word
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







|







390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
All leaves of the tree are either Text or Command nodes\&.
Word nodes cannot be leaves\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Tcl syntax, command, doctools, parser, subst, word
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2base/tcllib_msgcat.n.

285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
the argument to the command, and the \fBlangcode\fR supplied by the
result of \fBmsgcat::mcpreferences\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
catalog package, docidx, doctoc, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







|







285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
the argument to the command, and the \fBlangcode\fR supplied by the
result of \fBmsgcat::mcpreferences\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
catalog package, docidx, doctoc, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2idx/container.n.

608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
generated by Tcl's builtin command \fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
HTML, TMML, conversion, docidx markup, documentation, formatting, generation, index, json, keyword index, latex, manpage, markup, nroff, parsing, plugin, reference, tcler's wiki, text, url, wiki
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







|







608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
generated by Tcl's builtin command \fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
HTML, TMML, conversion, docidx markup, documentation, formatting, generation, index, json, keyword index, latex, manpage, markup, nroff, parsing, plugin, reference, tcler's wiki, text, url, wiki
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2idx/export.n.

622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
generated by Tcl's builtin command \fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
HTML, conversion, docidx, documentation, export, formatting, generation, index, json, keyword index, manpage, markup, nroff, plugin, reference, tcler's wiki, text, url, wiki
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







|







622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
generated by Tcl's builtin command \fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
HTML, conversion, docidx, documentation, export, formatting, generation, index, json, keyword index, manpage, markup, nroff, plugin, reference, tcler's wiki, text, url, wiki
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2idx/export_docidx.n.

416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
generated by Tcl's builtin command \fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
docidx, doctools, export, index, serialization
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT







|







416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
generated by Tcl's builtin command \fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
docidx, doctools, export, index, serialization
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2idx/export_html.n.

501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
generated by Tcl's builtin command \fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
HTML, doctools, export, index, serialization
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT







|







501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
generated by Tcl's builtin command \fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
HTML, doctools, export, index, serialization
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2idx/export_json.n.

433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
generated by Tcl's builtin command \fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
JSON, doctools, export, index, serialization
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT







|







433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
generated by Tcl's builtin command \fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
JSON, doctools, export, index, serialization
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2idx/export_nroff.n.

384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
generated by Tcl's builtin command \fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
doctools, export, index, nroff, serialization
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT







|







384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
generated by Tcl's builtin command \fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
doctools, export, index, nroff, serialization
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2idx/export_text.n.

368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
generated by Tcl's builtin command \fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
doctools, export, index, plain text, serialization
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT







|







368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
generated by Tcl's builtin command \fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
doctools, export, index, plain text, serialization
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2idx/export_wiki.n.

381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
generated by Tcl's builtin command \fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
doctools, export, index, serialization, wiki
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT







|







381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
generated by Tcl's builtin command \fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
doctools, export, index, serialization, wiki
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2idx/import.n.

701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
generated by Tcl's builtin command \fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
conversion, docidx, documentation, import, index, json, keyword index, manpage, markup, parsing, plugin, reference, url
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







|







701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
generated by Tcl's builtin command \fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
conversion, docidx, documentation, import, index, json, keyword index, manpage, markup, parsing, plugin, reference, url
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2idx/import_docidx.n.

392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
generated by Tcl's builtin command \fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
deserialization, docidx, doctools, import, index
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT







|







392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
generated by Tcl's builtin command \fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
deserialization, docidx, doctools, import, index
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2idx/import_json.n.

410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
generated by Tcl's builtin command \fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
JSON, deserialization, doctools, import, index
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT







|







410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
generated by Tcl's builtin command \fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
JSON, deserialization, doctools, import, index
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2idx/introduction.n.

369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387


.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
doctools2doc_introduction, doctools2toc_introduction
.SH KEYWORDS
conversion, formatting, index, keyword index, markup, parsing, plugin, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>







|



|







369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387


.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
docidx_intro, doctoc_intro, doctools, doctools2doc_introduction, doctools2toc_introduction, doctools_lang_cmdref, doctools_lang_faq, doctools_lang_intro, doctools_lang_syntax, doctools_plugin_apiref
.SH KEYWORDS
conversion, formatting, index, keyword index, markup, parsing, plugin, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>

Changes to embedded/man/files/modules/doctools2idx/msgcat_c.n.

273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
catalog is a plugin which is selected and loaded dynamically\&.
.SH API
This package has no exported API\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
C, catalog package, docidx, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







|







273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
catalog is a plugin which is selected and loaded dynamically\&.
.SH API
This package has no exported API\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
C, catalog package, docidx, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2idx/msgcat_de.n.

273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
catalog is a plugin which is selected and loaded dynamically\&.
.SH API
This package has no exported API\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
DE, catalog package, docidx, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







|







273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
catalog is a plugin which is selected and loaded dynamically\&.
.SH API
This package has no exported API\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
DE, catalog package, docidx, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2idx/msgcat_en.n.

273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
catalog is a plugin which is selected and loaded dynamically\&.
.SH API
This package has no exported API\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EN, catalog package, docidx, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







|







273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
catalog is a plugin which is selected and loaded dynamically\&.
.SH API
This package has no exported API\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EN, catalog package, docidx, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2idx/msgcat_fr.n.

273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
catalog is a plugin which is selected and loaded dynamically\&.
.SH API
This package has no exported API\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
FR, catalog package, docidx, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







|







273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
catalog is a plugin which is selected and loaded dynamically\&.
.SH API
This package has no exported API\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
FR, catalog package, docidx, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2idx/parse.n.

489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
generated by Tcl's builtin command \fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
docidx, doctools, lexer, parser
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







|







489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
generated by Tcl's builtin command \fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
docidx, doctools, lexer, parser
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2idx/structure.n.

417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
generated by Tcl's builtin command \fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
deserialization, docidx, doctools, serialization
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







|







417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
generated by Tcl's builtin command \fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
deserialization, docidx, doctools, serialization
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2toc/container.n.

691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
\fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
HTML, TMML, conversion, doctoc markup, documentation, formatting, generation, json, latex, markup, nroff, parsing, plugin, reference, table, table of contents, tcler's wiki, text, wiki
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







|







691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
\fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
HTML, TMML, conversion, doctoc markup, documentation, formatting, generation, json, latex, markup, nroff, parsing, plugin, reference, table, table of contents, tcler's wiki, text, wiki
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2toc/export.n.

639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
\fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
HTML, conversion, doctoc, documentation, export, formatting, generation, json, manpage, markup, nroff, plugin, reference, table, table of contents, tcler's wiki, text, url, wiki
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







|







639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
\fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
HTML, conversion, doctoc, documentation, export, formatting, generation, json, manpage, markup, nroff, plugin, reference, table, table of contents, tcler's wiki, text, url, wiki
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2toc/export_doctoc.n.

443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
\fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
doctoc, doctools, export, serialization, table of contents, toc
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT







|







443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
\fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
doctoc, doctools, export, serialization, table of contents, toc
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2toc/export_html.n.

493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
\fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
HTML, doctools, export, serialization, table of contents, toc
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT







|







493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
\fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
HTML, doctools, export, serialization, table of contents, toc
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2toc/export_json.n.

481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
\fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
JSON, doctools, export, serialization, table of contents, toc
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT







|







481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
\fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
JSON, doctools, export, serialization, table of contents, toc
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2toc/export_nroff.n.

412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
\fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
doctools, export, nroff, serialization, table of contents, toc
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT







|







412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
\fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
doctools, export, nroff, serialization, table of contents, toc
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2toc/export_text.n.

395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
\fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
doctools, export, plain text, serialization, table of contents, toc
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT







|







395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
\fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
doctools, export, plain text, serialization, table of contents, toc
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2toc/export_wiki.n.

401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
\fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
doctools, export, serialization, table of contents, toc, wiki
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT







|







401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
\fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
doctools, export, serialization, table of contents, toc, wiki
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2toc/import.n.

720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
\fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
conversion, doctoc, documentation, import, json, manpage, markup, parsing, plugin, reference, table, table of contents, url
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







|







720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
\fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
conversion, doctoc, documentation, import, json, manpage, markup, parsing, plugin, reference, table, table of contents, url
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2toc/import_doctoc.n.

420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
\fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
deserialization, doctoc, doctools, import, table of contents, toc
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT







|







420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
\fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
deserialization, doctoc, doctools, import, table of contents, toc
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2toc/import_json.n.

458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
\fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
JSON, deserialization, doctools, import, table of contents, toc
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT







|







458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
\fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
JSON, deserialization, doctools, import, table of contents, toc
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2toc/introduction.n.

369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387


.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
doctools2doc_introduction, doctools2idx_introduction
.SH KEYWORDS
contents, conversion, formatting, markup, parsing, plugin, semantic markup, table of contents
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>







|



|







369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387


.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
doctoc_intro, doctools, doctools2doc_introduction, doctools2idx_introduction, doctools_lang_cmdref, doctools_lang_faq, doctools_lang_intro, doctools_lang_syntax, doctools_plugin_apiref
.SH KEYWORDS
contents, conversion, formatting, markup, parsing, plugin, semantic markup, table of contents
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>

Changes to embedded/man/files/modules/doctools2toc/msgcat_c.n.

273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
catalog is a plugin which is selected and loaded dynamically\&.
.SH API
This package has no exported API\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
C, catalog package, doctoc, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







|







273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
catalog is a plugin which is selected and loaded dynamically\&.
.SH API
This package has no exported API\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
C, catalog package, doctoc, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2toc/msgcat_de.n.

273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
catalog is a plugin which is selected and loaded dynamically\&.
.SH API
This package has no exported API\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
DE, catalog package, doctoc, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







|







273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
catalog is a plugin which is selected and loaded dynamically\&.
.SH API
This package has no exported API\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
DE, catalog package, doctoc, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2toc/msgcat_en.n.

273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
catalog is a plugin which is selected and loaded dynamically\&.
.SH API
This package has no exported API\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EN, catalog package, doctoc, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







|







273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
catalog is a plugin which is selected and loaded dynamically\&.
.SH API
This package has no exported API\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EN, catalog package, doctoc, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2toc/msgcat_fr.n.

273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
catalog is a plugin which is selected and loaded dynamically\&.
.SH API
This package has no exported API\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
FR, catalog package, doctoc, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







|







273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
catalog is a plugin which is selected and loaded dynamically\&.
.SH API
This package has no exported API\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
FR, catalog package, doctoc, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2toc/parse.n.

517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
\fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
doctoc, doctools, lexer, parser
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







|







517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
\fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
doctoc, doctools, lexer, parser
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/doctools2toc/structure.n.

462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
\fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
deserialization, doctoc, doctools, serialization
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







|







462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
\fBlsort -increasing -dict\fR\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
deserialization, doctoc, doctools, serialization
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/dtplite/dtplite.n.

573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
in doctoc and docidx markup, respectively, containing the main table
of contents and keyword index for the set of documents before their
conversion to the chosen output format\&.
They are left in place, i\&.e\&. not deleted, to serve as demonstrations
of doctoc and docidx markup\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the application it describes, will undoubtedly
contain bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
application and/or documentation\&.
.SH "SEE ALSO"
docidx introduction, doctoc introduction, doctools introduction
.SH KEYWORDS
HTML, TMML, conversion, docidx, doctoc, doctools, manpage, markup, nroff
.SH CATEGORY
Documentation tools
.SH COPYRIGHT







|
|

|

|







573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
in doctoc and docidx markup, respectively, containing the main table
of contents and keyword index for the set of documents before their
conversion to the chosen output format\&.
They are left in place, i\&.e\&. not deleted, to serve as demonstrations
of doctoc and docidx markup\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdoctools\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
docidx introduction, doctoc introduction, doctools introduction
.SH KEYWORDS
HTML, TMML, conversion, docidx, doctoc, doctools, manpage, markup, nroff
.SH CATEGORY
Documentation tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/exif/exif.n.

300
301
302
303
304
305
306
307
308
309
310
311
312
313
.SH ACKNOWLEDGEMENTS
This code is a direct translation of version 1\&.3 of exif\&.pl by Chris
Breeze\&.  See the source for full headers, references, etc\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIexif\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
exif, jpeg, maker note, tiff
.SH CATEGORY
File formats







|






300
301
302
303
304
305
306
307
308
309
310
311
312
313
.SH ACKNOWLEDGEMENTS
This code is a direct translation of version 1\&.3 of exif\&.pl by Chris
Breeze\&.  See the source for full headers, references, etc\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIexif\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
exif, jpeg, maker note, tiff
.SH CATEGORY
File formats

Changes to embedded/man/files/modules/fileutil/fileutil.n.

667
668
669
670
671
672
673
674
675
676
677
678
679
680
\fINote:\fR The processing done by this command is purely lexical\&.
Symbolic links are \fInot\fR taken into account\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIfileutil\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
cat, file utilities, grep, temp file, test, touch, type
.SH CATEGORY
Programming tools







|






667
668
669
670
671
672
673
674
675
676
677
678
679
680
\fINote:\fR The processing done by this command is purely lexical\&.
Symbolic links are \fInot\fR taken into account\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIfileutil\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
cat, file utilities, grep, temp file, test, touch, type
.SH CATEGORY
Programming tools

Changes to embedded/man/files/modules/fileutil/multi.n.

279
280
281
282
283
284
285
286
287
288
289
290
291
292
The result of the command is the result generated by the last file
command it executed\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIfileutil\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
copy, file utilities, move, multi-file, remove
.SH CATEGORY
Programming tools







|






279
280
281
282
283
284
285
286
287
288
289
290
291
292
The result of the command is the result generated by the last file
command it executed\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIfileutil\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
copy, file utilities, move, multi-file, remove
.SH CATEGORY
Programming tools

Changes to embedded/man/files/modules/fileutil/multiop.n.

680
681
682
683
684
685
686
687
688
689
690
691
692
693
    as   pkgIndex\&.tcl

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIfileutil\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
copy, file utilities, move, multi-file, remove
.SH CATEGORY
Programming tools







|






680
681
682
683
684
685
686
687
688
689
690
691
692
693
    as   pkgIndex\&.tcl

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIfileutil\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
copy, file utilities, move, multi-file, remove
.SH CATEGORY
Programming tools

Changes to embedded/man/files/modules/fileutil/traverse.n.

346
347
348
349
350
351
352
353
354
355
356
357
358
359
to the caller, i\&.e\&. however invoked the \fBnext\fR\&. Any other
results from the callback are ignored\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIfileutil\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
directory traversal, traversal
.SH CATEGORY
Programming tools







|






346
347
348
349
350
351
352
353
354
355
356
357
358
359
to the caller, i\&.e\&. however invoked the \fBnext\fR\&. Any other
results from the callback are ignored\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIfileutil\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
directory traversal, traversal
.SH CATEGORY
Programming tools

Changes to embedded/man/files/modules/ftp/ftp.n.

610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
An update command placed in the procedure \fB::ftp::DisplayMsg\fR may
run into persistent errors or infinite loops\&. The solution to this
problem is to use \fBupdate idletasks\fR instead of \fBupdate\fR\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIftp\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
ftpd, mime, pop3, smtp
.SH KEYWORDS
ftp, internet, net, rfc 959
.SH CATEGORY







|







610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
An update command placed in the procedure \fB::ftp::DisplayMsg\fR may
run into persistent errors or infinite loops\&. The solution to this
problem is to use \fBupdate idletasks\fR instead of \fBupdate\fR\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIftp\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
ftpd, mime, pop3, smtp
.SH KEYWORDS
ftp, internet, net, rfc 959
.SH CATEGORY

Changes to embedded/man/files/modules/ftp/ftp_geturl.n.

275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
The attributes of the link, including the path it refers to\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIftp\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
ftpd, mime, pop3, smtp
.SH KEYWORDS
ftp, internet, net, rfc 959
.SH CATEGORY







|







275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
The attributes of the link, including the path it refers to\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIftp\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
ftpd, mime, pop3, smtp
.SH KEYWORDS
ftp, internet, net, rfc 959
.SH CATEGORY

Changes to embedded/man/files/modules/ftpd/ftpd.n.

483
484
485
486
487
488
489
490
491
492
493
494
495
496
special form of callback) and contains the handle of the socket
channel which was active when the callback was invoked\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIftpd\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
ftp, ftpd, ftpserver, rfc 959, services
.SH CATEGORY
Networking







|






483
484
485
486
487
488
489
490
491
492
493
494
495
496
special form of callback) and contains the handle of the socket
channel which was active when the callback was invoked\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIftpd\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
ftp, ftpd, ftpserver, rfc 959, services
.SH CATEGORY
Networking

Changes to embedded/man/files/modules/fumagic/cfront.n.

295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
file/directory used in its creation, with file/directory "\fIFOO\fR"
causing the creation of procedure \fB::fileutil::magic::/FOO::run\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIfileutil :: magic\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
file(1), fileutil, magic(5)
.SH KEYWORDS
file recognition, file type, file utilities, mime, type
.SH CATEGORY







|







295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
file/directory used in its creation, with file/directory "\fIFOO\fR"
causing the creation of procedure \fB::fileutil::magic::/FOO::run\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIfileutil :: magic\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
file(1), fileutil, magic(5)
.SH KEYWORDS
file recognition, file type, file utilities, mime, type
.SH CATEGORY

Changes to embedded/man/files/modules/fumagic/cgen.n.

288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
the recognizer runtime package \fBfileutil::magic::rt\fR to
perform its duties\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIfileutil :: magic\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
file(1), fileutil, magic(5)
.SH KEYWORDS
file recognition, file type, file utilities, mime, type
.SH CATEGORY







|







288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
the recognizer runtime package \fBfileutil::magic::rt\fR to
perform its duties\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIfileutil :: magic\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
file(1), fileutil, magic(5)
.SH KEYWORDS
file recognition, file type, file utilities, mime, type
.SH CATEGORY

Changes to embedded/man/files/modules/fumagic/filetypes.n.

276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
the magic definitions used by it\&. The latter were used by us to
generate this recognizer\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIfileutil :: magic\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
file(1), fileutil, magic(5)
.SH KEYWORDS
file recognition, file type, file utilities, type
.SH CATEGORY







|







276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
the magic definitions used by it\&. The latter were used by us to
generate this recognizer\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIfileutil :: magic\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
file(1), fileutil, magic(5)
.SH KEYWORDS
file recognition, file type, file utilities, type
.SH CATEGORY

Changes to embedded/man/files/modules/fumagic/mimetypes.n.

274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
the magic definitions used by it\&. The latter were used by us to
generate this recognizer\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIfileutil :: magic\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
file(1), fileutil, magic(5)
.SH KEYWORDS
file recognition, file type, file utilities, mime, type
.SH CATEGORY







|







274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
the magic definitions used by it\&. The latter were used by us to
generate this recognizer\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIfileutil :: magic\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
file(1), fileutil, magic(5)
.SH KEYWORDS
file recognition, file type, file utilities, mime, type
.SH CATEGORY

Changes to embedded/man/files/modules/fumagic/rtcore.n.

482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
\fBleldate\fR
see above, stored in small/little endian
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIfileutil :: magic\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
file(1), fileutil, magic(5)
.SH KEYWORDS
file recognition, file type, file utilities, mime, type
.SH CATEGORY







|







482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
\fBleldate\fR
see above, stored in small/little endian
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIfileutil :: magic\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
file(1), fileutil, magic(5)
.SH KEYWORDS
file recognition, file type, file utilities, mime, type
.SH CATEGORY

Changes to embedded/man/files/modules/gpx/gpx.n.

386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
.PP
.SH AUTHOR
Keith Vetter
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgpx\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
gps, gpx
.SH CATEGORY
File formats
.SH COPYRIGHT







|







386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
.PP
.SH AUTHOR
Keith Vetter
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgpx\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
gps, gpx
.SH CATEGORY
File formats
.SH COPYRIGHT

Changes to embedded/man/files/modules/grammar_fa/dacceptor.n.

309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
to the \fIany\fR symbol (if specified), or cause the acceptance test
to simply fail\&. No errors will be thrown\&. The method will process only
just that prefix of the input which is enough to fully determine
(non-)acceptance\&.
.PP
.PP
.SH EXAMPLES
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgrammar_fa\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
acceptance, acceptor, automaton, finite automaton, grammar, parsing, regular expression, regular grammar, regular languages, state, transducer
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT







<




|







309
310
311
312
313
314
315

316
317
318
319
320
321
322
323
324
325
326
327
to the \fIany\fR symbol (if specified), or cause the acceptance test
to simply fail\&. No errors will be thrown\&. The method will process only
just that prefix of the input which is enough to fully determine
(non-)acceptance\&.
.PP
.PP
.SH EXAMPLES

.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgrammar_fa\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
acceptance, acceptor, automaton, finite automaton, grammar, parsing, regular expression, regular grammar, regular languages, state, transducer
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT

Changes to embedded/man/files/modules/grammar_fa/dexec.n.

379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
The executor was reset\&.
.TP
\fIcmdprefix\fR \fBstate\fR \fIstateid\fR
The FA changed state due to a transition\&. \fIstateid\fR is the new state\&.
.PP
.PP
.SH EXAMPLES
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgrammar_fa\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
automaton, execution, finite automaton, grammar, parsing, regular expression, regular grammar, regular languages, running, state, transducer
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT







<




|







379
380
381
382
383
384
385

386
387
388
389
390
391
392
393
394
395
396
397
The executor was reset\&.
.TP
\fIcmdprefix\fR \fBstate\fR \fIstateid\fR
The FA changed state due to a transition\&. \fIstateid\fR is the new state\&.
.PP
.PP
.SH EXAMPLES

.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgrammar_fa\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
automaton, execution, finite automaton, grammar, parsing, regular expression, regular grammar, regular languages, running, state, transducer
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT

Changes to embedded/man/files/modules/grammar_fa/fa.n.

879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
.PP
Transducers are not handled by this package\&. They will get their own
package in the future\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgrammar_fa\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
automaton, finite automaton, grammar, parsing, regular expression, regular grammar, regular languages, state, transducer
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT







|







879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
.PP
Transducers are not handled by this package\&. They will get their own
package in the future\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgrammar_fa\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
automaton, finite automaton, grammar, parsing, regular expression, regular grammar, regular languages, state, transducer
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT

Changes to embedded/man/files/modules/grammar_fa/faop.n.

638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
.IP [4]
Choose the shorter of original expression and expression from
the previous step\&.
.RE
.PP
.PP
.SH EXAMPLES
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgrammar_fa\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
automaton, finite automaton, grammar, parsing, regular expression, regular grammar, regular languages, state, transducer
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT







<




|







638
639
640
641
642
643
644

645
646
647
648
649
650
651
652
653
654
655
656
.IP [4]
Choose the shorter of original expression and expression from
the previous step\&.
.RE
.PP
.PP
.SH EXAMPLES

.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgrammar_fa\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
automaton, finite automaton, grammar, parsing, regular expression, regular grammar, regular languages, state, transducer
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT

Changes to embedded/man/files/modules/grammar_me/gasm.n.

626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
.sp
The command returns the empty string as its result\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgrammar_me\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
assembler, grammar, graph, parsing, tree, virtual machine
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT







|







626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
.sp
The command returns the empty string as its result\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgrammar_me\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
assembler, grammar, graph, parsing, tree, virtual machine
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT

Changes to embedded/man/files/modules/grammar_me/me_ast.n.

326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
locations from attribute \fIrange\fR translated into line number and
column index\&. Lines are counted from 1, columns are counted from 0\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgrammar_me\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
AST, abstract syntax tree
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT







|







326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
locations from attribute \fIrange\fR translated into line number and
column index\&. Lines are counted from 1, columns are counted from 0\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgrammar_me\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
AST, abstract syntax tree
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT

Changes to embedded/man/files/modules/grammar_me/me_cpu.n.

512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
\fImeName\fR \fBdestroy\fR
This method deletes the object and releases all resurces it claimed\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgrammar_me\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
grammar, parsing, virtual machine
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT







|







512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
\fImeName\fR \fBdestroy\fR
This method deletes the object and releases all resurces it claimed\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgrammar_me\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
grammar, parsing, virtual machine
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT

Changes to embedded/man/files/modules/grammar_me/me_cpucore.n.

625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
\fInc\fR, the nonterminal cache is keyed by nonterminal name and
location, each value a four-element list containing current location,
match status, semantic value, and error status, in this order\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgrammar_me\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
grammar, parsing, virtual machine
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT







|







625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
\fInc\fR, the nonterminal cache is keyed by nonterminal name and
location, each value a four-element list containing current location,
match status, semantic value, and error status, in this order\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgrammar_me\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
grammar, parsing, virtual machine
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT

Changes to embedded/man/files/modules/grammar_me/me_intro.n.

291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
bytecode based implementation of ME virtual machines\&.
.PP
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgrammar_me\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
CFG, CFL, LL(k), PEG, TPDL, context-free grammar, context-free languages, expression, grammar, matching, parsing, parsing expression grammar, push down automaton, recursive descent, top-down parsing languages, transducer, virtual machine
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT







|







291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
bytecode based implementation of ME virtual machines\&.
.PP
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgrammar_me\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
CFG, CFL, LL(k), PEG, TPDL, context-free grammar, context-free languages, expression, grammar, matching, parsing, parsing expression grammar, push down automaton, recursive descent, top-down parsing languages, transducer, virtual machine
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT

Changes to embedded/man/files/modules/grammar_me/me_tcl.n.

579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
Tcl stack, not the machine state\&. It replaces \fIias_mpop\fR\&.
.PP
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgrammar_me\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
grammar, parsing, virtual machine
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT







|







579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
Tcl stack, not the machine state\&. It replaces \fIias_mpop\fR\&.
.PP
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgrammar_me\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
grammar, parsing, virtual machine
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT

Changes to embedded/man/files/modules/grammar_me/me_util.n.

308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
downward\&. Otherwise the root of the tree object is used as the
starting point\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgrammar_me\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
abstract syntax tree, syntax tree, tree
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT







|







308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
downward\&. Otherwise the root of the tree object is used as the
starting point\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgrammar_me\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
abstract syntax tree, syntax tree, tree
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT

Changes to embedded/man/files/modules/grammar_me/me_vm.n.

708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
This instruction pops an entry from the AST Marker stack \fIMS\fR and
discards it\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgrammar_me\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
grammar, parsing, virtual machine
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT







|







708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
This instruction pops an entry from the AST Marker stack \fIMS\fR and
discards it\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgrammar_me\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
grammar, parsing, virtual machine
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT

Changes to embedded/man/files/modules/grammar_peg/peg.n.

801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
\fICompilers and Compiler Generators\fR [http://scifac\&.ru\&.ac\&.za/compilers/], an online book using
CoCo/R, a generator for recursive descent parsers\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgrammar_peg\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
LL(k), TDPL, context-free languages, expression, grammar, parsing, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT







|







801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
\fICompilers and Compiler Generators\fR [http://scifac\&.ru\&.ac\&.za/compilers/], an online book using
CoCo/R, a generator for recursive descent parsers\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgrammar_peg\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
LL(k), TDPL, context-free languages, expression, grammar, parsing, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT

Changes to embedded/man/files/modules/grammar_peg/peg_interp.n.

321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
document \fIgrammar::me_ast\fR\&.
.PP
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgrammar_peg\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
LL(k), TDPL, context-free languages, expression, grammar, matching, parsing, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer, virtual machine
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT







|







321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
document \fIgrammar::me_ast\fR\&.
.PP
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIgrammar_peg\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
LL(k), TDPL, context-free languages, expression, grammar, matching, parsing, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer, virtual machine
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT

Changes to embedded/man/files/modules/hook/hook.n.

573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
All bindings involving \fB\&.view\fR are deleted\&.
.SH CREDITS
Hook has been designed and implemented by William H\&. Duquette\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIhook\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
uevent(n)
.SH KEYWORDS
callback, event, hook, observer, producer, publisher, subject, subscriber, uevent
.SH CATEGORY







|







573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
All bindings involving \fB\&.view\fR are deleted\&.
.SH CREDITS
Hook has been designed and implemented by William H\&. Duquette\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIhook\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
uevent(n)
.SH KEYWORDS
callback, event, hook, observer, producer, publisher, subject, subscriber, uevent
.SH CATEGORY

Changes to embedded/man/files/modules/html/html.n.

676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
\fIbody\fR\&.  Each iteration of the loop causes another string to be
concatenated to the result value\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIhtml\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
htmlparse, ncgi
.SH KEYWORDS
checkbox, checkbutton, form, html, radiobutton, table
.SH CATEGORY







|







676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
\fIbody\fR\&.  Each iteration of the loop causes another string to be
concatenated to the result value\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIhtml\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
htmlparse, ncgi
.SH KEYWORDS
checkbox, checkbutton, form, html, radiobutton, table
.SH CATEGORY

Changes to embedded/man/files/modules/htmlparse/htmlparse.n.

455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
\fB::htmlparse::2tree\fR\&. It removes all nodes representing forms and
form elements\&. Its only argument is the name of the tree to cut down\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIhtmlparse\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
struct::tree
.SH KEYWORDS
html, parsing, queue, tree
.SH CATEGORY







|







455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
\fB::htmlparse::2tree\fR\&. It removes all nodes representing forms and
form elements\&. Its only argument is the name of the tree to cut down\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIhtmlparse\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
struct::tree
.SH KEYWORDS
html, parsing, queue, tree
.SH CATEGORY

Changes to embedded/man/files/modules/http/autoproxy.n.

418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
planned to add support for Digest (2) and NTLM in the future\&.
.SH AUTHORS
Pat Thoyts
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIhttp :: autoproxy\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
http(n)
.SH KEYWORDS
authentication, http, proxy
.SH CATEGORY







|







418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
planned to add support for Digest (2) and NTLM in the future\&.
.SH AUTHORS
Pat Thoyts
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIhttp :: autoproxy\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
http(n)
.SH KEYWORDS
authentication, http, proxy
.SH CATEGORY

Changes to embedded/man/files/modules/ident/ident.n.

280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
\fBerror\fR key\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIident\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
ident, identification, rfc 1413
.SH CATEGORY
Networking
.SH COPYRIGHT







|







280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
\fBerror\fR key\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIident\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
ident, identification, rfc 1413
.SH CATEGORY
Networking
.SH COPYRIGHT

Changes to embedded/man/files/modules/imap4/imap4.n.

726
727
728
729
730
731
732
733
734
735
736
737
738

739
740
741
742
Mark R\&. Crispin, "INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1",
RFC 3501, March 2003, \fIhttp://www\&.rfc-editor\&.org/rfc/rfc3501\&.txt\fR
.PP
OpenSSL, \fIhttp://www\&.openssl\&.org/\fR
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Only a small part of rfc3501 implemented\&.
.PP
Please report such in the category \fIimap4\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.

.SH "SEE ALSO"
ftp, http, imap, mime, pop3, tls
.SH KEYWORDS
email, imap, internet, mail, net, rfc3501, ssl, tls







<
<

|


>




726
727
728
729
730
731
732


733
734
735
736
737
738
739
740
741
Mark R\&. Crispin, "INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1",
RFC 3501, March 2003, \fIhttp://www\&.rfc-editor\&.org/rfc/rfc3501\&.txt\fR
.PP
OpenSSL, \fIhttp://www\&.openssl\&.org/\fR
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.


Please report such in the category \fIimap4\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
Only a small part of rfc3501 implemented\&.
.SH "SEE ALSO"
ftp, http, imap, mime, pop3, tls
.SH KEYWORDS
email, imap, internet, mail, net, rfc3501, ssl, tls

Changes to embedded/man/files/modules/inifile/ini.n.

341
342
343
344
345
346
347
348
349
350
351
352
comments\&. When comments are written out each line is preceded by this character\&. The default
is \fB;\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIinifile\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH CATEGORY
Text processing







|




341
342
343
344
345
346
347
348
349
350
351
352
comments\&. When comments are written out each line is preceded by this character\&. The default
is \fB;\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIinifile\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH CATEGORY
Text processing

Changes to embedded/man/files/modules/interp/deleg_method.n.

274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
however the option \fB-async\fR was specified then the generated
method will not wait for a result and return immediately\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIinterp\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
comm, delegation, interpreter, method, snit
.SH CATEGORY
Programming tools
.SH COPYRIGHT







|







274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
however the option \fB-async\fR was specified then the generated
method will not wait for a result and return immediately\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIinterp\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
comm, delegation, interpreter, method, snit
.SH CATEGORY
Programming tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/interp/deleg_proc.n.

272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
however the option \fB-async\fR was specified then the generated
procedure will not wait for a result and return immediately\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIinterp\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
comm, delegation, interpreter, procedure
.SH CATEGORY
Programming tools
.SH COPYRIGHT







|







272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
however the option \fB-async\fR was specified then the generated
procedure will not wait for a result and return immediately\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIinterp\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
comm, delegation, interpreter, procedure
.SH CATEGORY
Programming tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/interp/tcllib_interp.n.

293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
.sp
The result of the command is the empty string\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIinterp\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
alias, empty interpreter, interpreter, method, snit
.SH CATEGORY
Programming tools
.SH COPYRIGHT







|







293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
.sp
The result of the command is the empty string\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIinterp\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
alias, empty interpreter, interpreter, method, snit
.SH CATEGORY
Programming tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/irc/irc.n.

488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
\fBmsg\fR
Returns the message portion of the command (the part after the :)\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIirc\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
rfc 1459
.SH KEYWORDS
chat, irc
.SH CATEGORY







|







488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
\fBmsg\fR
Returns the message portion of the command (the part after the :)\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIirc\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
rfc 1459
.SH KEYWORDS
chat, irc
.SH CATEGORY

Changes to embedded/man/files/modules/javascript/javascript.n.

324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
parent html checkbox object\&.  The \fIchildName\fR argument is the name
of child html checkbox object to create\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIjavascript\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
html, ncgi
.SH KEYWORDS
checkbox, html, javascript, selectionbox, submitbutton
.SH CATEGORY







|







324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
parent html checkbox object\&.  The \fIchildName\fR argument is the name
of child html checkbox object to create\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIjavascript\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
html, ncgi
.SH KEYWORDS
checkbox, html, javascript, selectionbox, submitbutton
.SH CATEGORY

Changes to embedded/man/files/modules/jpeg/jpeg.n.

430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
cant write exif data
gps exif data not parsed
makernote data not yet implemented
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIjpeg\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
comment, exif, image, jfif, jpeg, thumbnail
.SH CATEGORY
File formats
.SH COPYRIGHT







|







430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
cant write exif data
gps exif data not parsed
makernote data not yet implemented
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIjpeg\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
comment, exif, image, jfif, jpeg, thumbnail
.SH CATEGORY
File formats
.SH COPYRIGHT

Changes to embedded/man/files/modules/json/json.n.

322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
Image {IDs {116 943 234 38793} Thumbnail {Width 100 Height 125 Url http://www\&.example\&.com/image/481989943} Width 800 Height 600 Title {View from 15th Floor}}

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIjson\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
data exchange, exchange format, javascript, json
.SH CATEGORY
CGI programming
.SH COPYRIGHT







|







322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
Image {IDs {116 943 234 38793} Thumbnail {Width 100 Height 125 Url http://www\&.example\&.com/image/481989943} Width 800 Height 600 Title {View from 15th Floor}}

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIjson\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
data exchange, exchange format, javascript, json
.SH CATEGORY
CGI programming
.SH COPYRIGHT

Changes to embedded/man/files/modules/json/json_write.n.

313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
object as its result, with the keys formatted as JSON strings\&.
.PP
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIjson\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
data exchange, exchange format, javascript, json
.SH CATEGORY
CGI programming
.SH COPYRIGHT







|







313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
object as its result, with the keys formatted as JSON strings\&.
.PP
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIjson\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
data exchange, exchange format, javascript, json
.SH CATEGORY
CGI programming
.SH COPYRIGHT

Changes to embedded/man/files/modules/lambda/lambda.n.

316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
.PP
.SH AUTHORS
Andreas Kupries
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIlambda\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
apply(n), proc(n)
.SH KEYWORDS
anonymous procedure, callback, command prefix, currying, lambda, partial application, proc
.SH CATEGORY







|







316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
.PP
.SH AUTHORS
Andreas Kupries
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIlambda\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
apply(n), proc(n)
.SH KEYWORDS
anonymous procedure, callback, command prefix, currying, lambda, partial application, proc
.SH CATEGORY

Changes to embedded/man/files/modules/ldap/ldap.n.

725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
    ldap::disconnect $handle

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIldap\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
One know bug is the usage of \fBvwait\fR inside the dispatch mechanism, which makes
it currently unsafe to use this code in code that also enters the event loop\&.
.SH KEYWORDS
directory access, internet, ldap, ldap client, protocol, rfc 2251, rfc 4511, x\&.500
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2004 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>







|


<
<







725
726
727
728
729
730
731
732
733
734


735
736
737
738
739
740
741
    ldap::disconnect $handle

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIldap\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.


.SH KEYWORDS
directory access, internet, ldap, ldap client, protocol, rfc 2251, rfc 4511, x\&.500
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2004 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>

Changes to embedded/man/files/modules/ldap/ldapx.n.

934
935
936
937
938
939
940
941
942
943
944
945
946
947
948

.CE
.SH REFERENCES
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIldap\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
directory access, internet, ldap, ldap client, ldif, protocol, rfc 2251, rfc 2849
.SH CATEGORY
Networking
.SH COPYRIGHT







|







934
935
936
937
938
939
940
941
942
943
944
945
946
947
948

.CE
.SH REFERENCES
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIldap\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
directory access, internet, ldap, ldap client, ldif, protocol, rfc 2251, rfc 2849
.SH CATEGORY
Networking
.SH COPYRIGHT

Changes to embedded/man/files/modules/log/log.n.

515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
\fBdebug\fR are suppressed\&. This is done intentionally, because (we believe
that) in most situations debugging output is not wanted\&. Most people wish to
have such output only when actually debugging an application\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIlog\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
log, log level, message, message level
.SH CATEGORY
Programming tools
.SH COPYRIGHT







|







515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
\fBdebug\fR are suppressed\&. This is done intentionally, because (we believe
that) in most situations debugging output is not wanted\&. Most people wish to
have such output only when actually debugging an application\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIlog\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
log, log level, message, message level
.SH CATEGORY
Programming tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/log/logger.n.

673
674
675
676
677
678
679
680
681
682
683
684
685
686
     ${log}::logproc debug log_local_var

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIlogger\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
log, log level, logger, service
.SH CATEGORY
Programming tools







|






673
674
675
676
677
678
679
680
681
682
683
684
685
686
     ${log}::logproc debug log_local_var

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIlogger\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
log, log level, logger, service
.SH CATEGORY
Programming tools

Changes to embedded/man/files/modules/log/loggerAppender.n.

283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
See \fB::logger::appender::colorConsole\fR for a description of the
applicable options\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIlogger\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
appender, logger
.SH CATEGORY
Programming tools
.SH COPYRIGHT







|







283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
See \fB::logger::appender::colorConsole\fR for a description of the
applicable options\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIlogger\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
appender, logger
.SH CATEGORY
Programming tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/log/loggerUtils.n.

377
378
379
380
381
382
383
384
385
386
387
388
389
390
391

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIlogger\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
appender, logger
.SH CATEGORY
Programming tools
.SH COPYRIGHT







|







377
378
379
380
381
382
383
384
385
386
387
388
389
390
391

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIlogger\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
appender, logger
.SH CATEGORY
Programming tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/math/bigfloat.n.

771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
puts "angle3 : [tostr [rad2deg $angle3]]"

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: bignum :: float\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
computations, floating-point, interval, math, multiprecision, tcl
.SH CATEGORY
Mathematics
.SH COPYRIGHT







|







771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
puts "angle3 : [tostr [rad2deg $angle3]]"

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: bignum :: float\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
computations, floating-point, interval, math, multiprecision, tcl
.SH CATEGORY
Mathematics
.SH COPYRIGHT

Changes to embedded/man/files/modules/math/bignum.n.

521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
Return the number of bits needed to represent bignum in radix 2\&.
.PP
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: bignum\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
bignums, math, multiprecision, tcl
.SH CATEGORY
Mathematics
.SH COPYRIGHT







|







521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
Return the number of bits needed to represent bignum in radix 2\&.
.PP
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: bignum\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
bignums, math, multiprecision, tcl
.SH CATEGORY
Mathematics
.SH COPYRIGHT

Changes to embedded/man/files/modules/math/calculus.n.

699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
      coeffs force {0\&.0 1\&.0} [list $length 0\&.0] 100]

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: calculus\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
romberg
.SH KEYWORDS
calculus, differential equations, integration, math, roots
.SH CATEGORY







|







699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
      coeffs force {0\&.0 1\&.0} [list $length 0\&.0] 100]

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: calculus\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
romberg
.SH KEYWORDS
calculus, differential equations, integration, math, roots
.SH CATEGORY

Changes to embedded/man/files/modules/math/combinatorics.n.

336
337
338
339
340
341
342
343
344
345
346
347
nine significant digits provided that \fIw\fR and \fIz\fR are both at
least 1\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH CATEGORY
Mathematics







|




336
337
338
339
340
341
342
343
344
345
346
347
nine significant digits provided that \fIw\fR and \fIz\fR are both at
least 1\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH CATEGORY
Mathematics

Changes to embedded/man/files/modules/math/constants.n.

330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
(name, value and description) or, if no arguments are given, print all
defined constants\&. This is mainly a convenience procedure\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: constants\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
constants, degrees, e, math, pi, radians
.SH CATEGORY
Mathematics
.SH COPYRIGHT







|







330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
(name, value and description) or, if no arguments are given, print all
defined constants\&. This is mainly a convenience procedure\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: constants\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
constants, degrees, e, math, pi, radians
.SH CATEGORY
Mathematics
.SH COPYRIGHT

Changes to embedded/man/files/modules/math/decimal.n.

506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
Rounds \fIdecimal\fR to \fIdigits\fR number of decimal points with the following rules: Round zero or five away from 0\&. The same as round-up, except that rounding up only occurs if the digit to be rounded up is 0 or 5, and after overflow
the result is the same as for round-down\&.
.PP
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIDecimal\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
decimal, math, tcl
.SH CATEGORY
Mathematics
.SH COPYRIGHT







|
|







506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
Rounds \fIdecimal\fR to \fIdigits\fR number of decimal points with the following rules: Round zero or five away from 0\&. The same as round-up, except that rounding up only occurs if the digit to be rounded up is 0 or 5, and after overflow
the result is the same as for round-down\&.
.PP
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIdecimal\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
decimal, math, tcl
.SH CATEGORY
Mathematics
.SH COPYRIGHT

Changes to embedded/man/files/modules/math/fourier.n.

373
374
375
376
377
378
379
380
381
382
383
384
385
386
.RE
.sp
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: fourier\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
FFT, Fourier transform, complex numbers, mathematics
.SH CATEGORY
Mathematics







|






373
374
375
376
377
378
379
380
381
382
383
384
385
386
.RE
.sp
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: fourier\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
FFT, Fourier transform, complex numbers, mathematics
.SH CATEGORY
Mathematics

Changes to embedded/man/files/modules/math/fuzzy.n.

375
376
377
378
379
380
381
382
383
384
385
386
387
388
.PP
D\&. Knuth, Art of Computer Programming,
Vol\&. 1, Problem 1\&.2\&.4-5\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: fuzzy\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
floating-point, math, rounding
.SH CATEGORY
Mathematics







|






375
376
377
378
379
380
381
382
383
384
385
386
387
388
.PP
D\&. Knuth, Art of Computer Programming,
Vol\&. 1, Problem 1\&.2\&.4-5\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: fuzzy\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
floating-point, math, rounding
.SH CATEGORY
Mathematics

Changes to embedded/man/files/modules/math/interpolate.n.

503
504
505
506
507
508
509
510
511
512
513
514
515
516
517

.CE
As you can see, the values at the abscissae are reproduced perfectly\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: interpolate\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
interpolation, math, spatial interpolation
.SH CATEGORY
Mathematics
.SH COPYRIGHT







|







503
504
505
506
507
508
509
510
511
512
513
514
515
516
517

.CE
As you can see, the values at the abscissae are reproduced perfectly\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: interpolate\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
interpolation, math, spatial interpolation
.SH CATEGORY
Mathematics
.SH COPYRIGHT

Changes to embedded/man/files/modules/math/linalg.n.

1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
}

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: linearalgebra\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
least squares, linear algebra, linear equations, math, matrices, matrix, vectors
.SH CATEGORY
Mathematics
.SH COPYRIGHT







|







1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
}

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: linearalgebra\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
least squares, linear algebra, linear equations, math, matrices, matrix, vectors
.SH CATEGORY
Mathematics
.SH COPYRIGHT

Changes to embedded/man/files/modules/math/machineparameters.n.

431
432
433
434
435
436
437







438
439
440
441
442
.TP
\fIobjectname\fR \fBtostring\fR
Return a report for machine parameters\&.
.TP
\fIobjectname\fR \fBprint\fR
Print machine parameters on standard output\&.
.PP







.SH COPYRIGHT
.nf
Copyright (c) 2008 Michael Baudin <michael\&.baudin@sourceforge\&.net>

.fi







>
>
>
>
>
>
>





431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
.TP
\fIobjectname\fR \fBtostring\fR
Return a report for machine parameters\&.
.TP
\fIobjectname\fR \fBprint\fR
Print machine parameters on standard output\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH COPYRIGHT
.nf
Copyright (c) 2008 Michael Baudin <michael\&.baudin@sourceforge\&.net>

.fi

Changes to embedded/man/files/modules/math/math.n.

363
364
365
366
367
368
369
370
371
372
373
374
375
376
\fB::math::sum\fR \fIvalue\fR ?\fIvalue \&.\&.\&.\fR?
Return the sum of one or more numeric values\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
math, statistics
.SH CATEGORY
Mathematics







|






363
364
365
366
367
368
369
370
371
372
373
374
375
376
\fB::math::sum\fR \fIvalue\fR ?\fIvalue \&.\&.\&.\fR?
Return the sum of one or more numeric values\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
math, statistics
.SH CATEGORY
Mathematics

Changes to embedded/man/files/modules/math/math_geometry.n.

735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
.IP [3]
\fIhttp://local\&.wasp\&.uwa\&.edu\&.au/~pbourke/geometry/lineline2d/\fR
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: geometry\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
angle, distance, line, math, plane geometry, point
.SH CATEGORY
Mathematics
.SH COPYRIGHT







|







735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
.IP [3]
\fIhttp://local\&.wasp\&.uwa\&.edu\&.au/~pbourke/geometry/lineline2d/\fR
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: geometry\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
angle, distance, line, math, plane geometry, point
.SH CATEGORY
Mathematics
.SH COPYRIGHT

Changes to embedded/man/files/modules/math/numtheory.n.

283
284
285
286
287
288
289







290
291
292
293
294
295
296
repeated with randomly chosen bases\&. Each repetition reduces the
probability of a false positive by a factor at least 4\&. The
default for \fIrepetitions\fR is 4\&.
.RE
.IP
Unknown options are silently ignored\&.
.PP







.SH KEYWORDS
number theory, prime
.SH CATEGORY
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2010 Lars Hellström <Lars dot Hellstrom at residenset dot net>







>
>
>
>
>
>
>







283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
repeated with randomly chosen bases\&. Each repetition reduces the
probability of a false positive by a factor at least 4\&. The
default for \fIrepetitions\fR is 4\&.
.RE
.IP
Unknown options are silently ignored\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: numtheory\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
number theory, prime
.SH CATEGORY
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2010 Lars Hellström <Lars dot Hellstrom at residenset dot net>

Changes to embedded/man/files/modules/math/optimize.n.

570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
The theory of linear programming is the subject of many a text book and
the Simplex algorithm that is implemented here is the best-known
method to solve this type of problems, but it is not the only one\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: optimize\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
linear program, math, maximum, minimum, optimization
.SH CATEGORY
Mathematics
.SH COPYRIGHT







|







570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
The theory of linear programming is the subject of many a text book and
the Simplex algorithm that is implemented here is the best-known
method to solve this type of problems, but it is not the only one\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: optimize\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
linear program, math, maximum, minimum, optimization
.SH CATEGORY
Mathematics
.SH COPYRIGHT

Changes to embedded/man/files/modules/math/polynomials.n.

460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
definition, it consists of a list of two elements: the keyword
"POLYNOMIAL" and the list of coefficients in descending order\&. The
latter makes it easier to implement Horner's rule\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: polynomials\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
math, polynomial functions
.SH CATEGORY
Mathematics
.SH COPYRIGHT







|







460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
definition, it consists of a list of two elements: the keyword
"POLYNOMIAL" and the list of coefficients in descending order\&. The
latter makes it easier to implement Horner's rule\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: polynomials\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
math, polynomial functions
.SH CATEGORY
Mathematics
.SH COPYRIGHT

Changes to embedded/man/files/modules/math/qcomplex.n.

519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
The complex power to be used
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: complexnumbers\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
complex numbers, math
.SH CATEGORY
Mathematics
.SH COPYRIGHT







|







519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
The complex power to be used
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: complexnumbers\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
complex numbers, math
.SH CATEGORY
Mathematics
.SH COPYRIGHT

Changes to embedded/man/files/modules/math/rational_funcs.n.

429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
The implementation of the rational functions relies on the
math::polynomials package\&. For further remarks see the documentation on
that package\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: rationalfunctions\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
math, rational functions
.SH CATEGORY
Mathematics
.SH COPYRIGHT







|







429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
The implementation of the rational functions relies on the
math::polynomials package\&. For further remarks see the documentation on
that package\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: rationalfunctions\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
math, rational functions
.SH CATEGORY
Mathematics
.SH COPYRIGHT

Changes to embedded/man/files/modules/math/roman.n.

288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
Of these commands both \fItoroman\fR and \fItointeger\fR are exported
for easier use\&. The other two are not, as they could interfer or be
confused with existing Tcl commands\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: roman\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
conversion, integer, roman numeral
.SH CATEGORY
Mathematics
.SH COPYRIGHT







|







288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
Of these commands both \fItoroman\fR and \fItointeger\fR are exported
for easier use\&. The other two are not, as they could interfer or be
confused with existing Tcl commands\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: roman\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
conversion, integer, roman numeral
.SH CATEGORY
Mathematics
.SH COPYRIGHT

Changes to embedded/man/files/modules/math/romberg.n.

534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
integral is 3\&.97746 +/- 2\&.3557e-010

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: calculus\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
math::calculus, math::interpolate
.SH CATEGORY
Mathematics
.SH COPYRIGHT







|







534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
integral is 3\&.97746 +/- 2\&.3557e-010

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: calculus\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
math::calculus, math::interpolate
.SH CATEGORY
Mathematics
.SH COPYRIGHT

Changes to embedded/man/files/modules/math/special.n.

724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
.PP
Abramowitz and Stegun: \fIHandbook of Mathematical Functions\fR
(Dover, ISBN 486-61272-4)
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: special\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Bessel functions, error function, math, special functions
.SH CATEGORY
Mathematics
.SH COPYRIGHT







|







724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
.PP
Abramowitz and Stegun: \fIHandbook of Mathematical Functions\fR
(Dover, ISBN 486-61272-4)
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: special\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Bessel functions, error function, math, special functions
.SH CATEGORY
Mathematics
.SH COPYRIGHT

Changes to embedded/man/files/modules/math/statistics.n.

1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
The histograms are not very useful in identifying the nature of the time
series - they do not show the periodic nature\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: statistics\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
data analysis, mathematics, statistics
.SH CATEGORY
Mathematics







|






1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
The histograms are not very useful in identifying the nature of the time
series - they do not show the periodic nature\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: statistics\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
data analysis, mathematics, statistics
.SH CATEGORY
Mathematics

Changes to embedded/man/files/modules/math/symdiff.n.

319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
==> {{$a} {$b}} {{$c} {$d}}

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: calculus\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
math::calculus, math::interpolate
.SH COPYRIGHT
.nf
Copyright (c) 2010 by Kevin B\&. Kenny <kennykb@acm\&.org>







|







319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
==> {{$a} {$b}} {{$c} {$d}}

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImath :: calculus\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
math::calculus, math::interpolate
.SH COPYRIGHT
.nf
Copyright (c) 2010 by Kevin B\&. Kenny <kennykb@acm\&.org>

Changes to embedded/man/files/modules/md4/md4.n.

379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
Message Authentication", RFC 2104, February 1997\&.
(\fIhttp://www\&.rfc-editor\&.org/rfc/rfc2104\&.txt\fR)
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImd4\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
md5, sha1
.SH KEYWORDS
hashing, md4, message-digest, rfc 1320, rfc 1321, rfc 2104, security
.SH CATEGORY







|







379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
Message Authentication", RFC 2104, February 1997\&.
(\fIhttp://www\&.rfc-editor\&.org/rfc/rfc2104\&.txt\fR)
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImd4\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
md5, sha1
.SH KEYWORDS
hashing, md4, message-digest, rfc 1320, rfc 1321, rfc 2104, security
.SH CATEGORY

Changes to embedded/man/files/modules/md5/md5.n.

385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
Message Authentication", RFC 2104, February 1997\&.
(\fIhttp://www\&.rfc-editor\&.org/rfc/rfc2104\&.txt\fR)
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImd5\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
md4, sha1
.SH KEYWORDS
hashing, md5, message-digest, rfc 1320, rfc 1321, rfc 2104, security
.SH CATEGORY







|







385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
Message Authentication", RFC 2104, February 1997\&.
(\fIhttp://www\&.rfc-editor\&.org/rfc/rfc2104\&.txt\fR)
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImd5\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
md4, sha1
.SH KEYWORDS
hashing, md5, message-digest, rfc 1320, rfc 1321, rfc 2104, security
.SH CATEGORY

Changes to embedded/man/files/modules/md5crypt/md5crypt.n.

313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
$1$dFmvyRmO$T\&.V3OmzqeEf3hqJp2WFcb\&.

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImd5crypt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
md5
.SH KEYWORDS
hashing, md5, md5crypt, message-digest, security
.SH CATEGORY







|







313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
$1$dFmvyRmO$T\&.V3OmzqeEf3hqJp2WFcb\&.

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImd5crypt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
md5
.SH KEYWORDS
hashing, md5, md5crypt, message-digest, security
.SH CATEGORY

Changes to embedded/man/files/modules/mime/mime.n.

531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
.TP
\fB::mime::reversemapencoding\fR \fIcharset_type\fR
This command maps MIME charset types onto tcl encoding names\&.  Those
that are unknown return ""\&.
.PP
.SH "KNOWN BUGS"
.TP
SourceForge Tcllib Bug #447037
This problem affects only people which are using Tcl and Mime on a
64-bit system\&. The currently recommended fix for this problem is to
upgrade to Tcl version 8\&.4\&. This version has extended 64 bit support
and the bug does not appear anymore\&.
.sp
The problem could have been generally solved by requiring the use of
Tcl 8\&.4 for this package\&. We decided against this solution as it would
force a large number of unaffected users to upgrade their Tcl
interpreter for no reason\&.
.sp
See \fIhttp://sourceforge\&.net/tracker/?func=detail&aid=447037&group_id=12883&atid=112883\fR
for additional information\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImime\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
ftp, http, pop3, smtp
.SH KEYWORDS
email, internet, mail, mime, net, rfc 2045, rfc 2046, rfc 2049, rfc 821, rfc 822, smtp
.SH CATEGORY







|










<
|





|







531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548

549
550
551
552
553
554
555
556
557
558
559
560
561
562
.TP
\fB::mime::reversemapencoding\fR \fIcharset_type\fR
This command maps MIME charset types onto tcl encoding names\&.  Those
that are unknown return ""\&.
.PP
.SH "KNOWN BUGS"
.TP
Tcllib Bug #447037
This problem affects only people which are using Tcl and Mime on a
64-bit system\&. The currently recommended fix for this problem is to
upgrade to Tcl version 8\&.4\&. This version has extended 64 bit support
and the bug does not appear anymore\&.
.sp
The problem could have been generally solved by requiring the use of
Tcl 8\&.4 for this package\&. We decided against this solution as it would
force a large number of unaffected users to upgrade their Tcl
interpreter for no reason\&.
.sp

See \fITicket 447037\fR [/tktview?name=447037] for additional information\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImime\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
ftp, http, pop3, smtp
.SH KEYWORDS
email, internet, mail, mime, net, rfc 2045, rfc 2046, rfc 2049, rfc 821, rfc 822, smtp
.SH CATEGORY

Changes to embedded/man/files/modules/mime/smtp.n.

388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
RFC 2554, March 1999\&.
(\fIhttp://www\&.rfc-editor\&.org/rfc/rfc2554\&.txt\fR)
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIsmtp\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
ftp, http, mime, pop3
.SH KEYWORDS
email, internet, mail, mime, net, rfc 2554, rfc 2821, rfc 3207, rfc 821, rfc 822, smtp, tls
.SH CATEGORY







|







388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
RFC 2554, March 1999\&.
(\fIhttp://www\&.rfc-editor\&.org/rfc/rfc2554\&.txt\fR)
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIsmtp\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
ftp, http, mime, pop3
.SH KEYWORDS
email, internet, mail, mime, net, rfc 2554, rfc 2821, rfc 3207, rfc 821, rfc 822, smtp, tls
.SH CATEGORY

Changes to embedded/man/files/modules/multiplexer/multiplexer.n.

361
362
363
364
365
366
367
368
369
370
371
372
373
374
ip-port\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImultiplexer\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
chat, multiplexer
.SH CATEGORY
Programming tools







|






361
362
363
364
365
366
367
368
369
370
371
372
373
374
ip-port\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fImultiplexer\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
chat, multiplexer
.SH CATEGORY
Programming tools

Changes to embedded/man/files/modules/ncgi/ncgi.n.

544
545
546
547
548
549
550
551
552
553
554
555
556
557
558

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIncgi\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
html
.SH KEYWORDS
CGI, cookie, form, html
.SH CATEGORY







|







544
545
546
547
548
549
550
551
552
553
554
555
556
557
558

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIncgi\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
html
.SH KEYWORDS
CGI, cookie, form, html
.SH CATEGORY

Changes to embedded/man/files/modules/nmea/nmea.n.

361
362
363
364
365
366
367
368
369
370
371
372
373
374
375

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fInmea\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
gps, nmea
.SH CATEGORY
Networking
.SH COPYRIGHT







|







361
362
363
364
365
366
367
368
369
370
371
372
373
374
375

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fInmea\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
gps, nmea
.SH CATEGORY
Networking
.SH COPYRIGHT

Changes to embedded/man/files/modules/nns/nns_auto.n.

321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
Another loss of the connection, be it during or after re-entering the
remembered information simply restarts the timer and subsequent
reconnection attempts\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fInameserv\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
nameserv(n)
.SH KEYWORDS
automatic, client, name service, reconnect, restore
.SH CATEGORY







|







321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
Another loss of the connection, be it during or after re-entering the
remembered information simply restarts the timer and subsequent
reconnection attempts\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fInameserv\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
nameserv(n)
.SH KEYWORDS
automatic, client, name service, reconnect, restore
.SH CATEGORY

Changes to embedded/man/files/modules/nns/nns_client.n.

536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
0\&.1
Initial implementation of the client\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fInameserv\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
nameserv::common(n), nameserv::server(n)
.SH KEYWORDS
client, name service
.SH CATEGORY







|







536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
0\&.1
Initial implementation of the client\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fInameserv\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
nameserv::common(n), nameserv::server(n)
.SH KEYWORDS
client, name service
.SH CATEGORY

Changes to embedded/man/files/modules/nns/nns_common.n.

270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
port a nameservice server will listen on, and a name service client
will try to connect to\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fInameserv\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
nameserv::client(n), nameserv::server(n)
.SH KEYWORDS
client, name service, server
.SH CATEGORY







|







270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
port a nameservice server will listen on, and a name service client
will try to connect to\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fInameserv\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
nameserv::client(n), nameserv::server(n)
.SH KEYWORDS
client, name service, server
.SH CATEGORY

Changes to embedded/man/files/modules/nns/nns_intro.n.

314
315
316
317
318
319
320

321
322
323
324
325
326
327
328
329
330
331
332
333
\fBnameserv::server\fR to talk to each other\&. It is of no interest
to users of either the packages or applications\&.
.PP
Developers wishing to modify and/or extend or to just understand the
internals of the nameservice facility however are strongly advised to
read it\&.
.SH "BUGS, IDEAS, FEEDBACK"

This document, will undoubtedly contain bugs and other problems\&.
Please report such in the category \fInameserv\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
Please also report any ideas for enhancements you may have\&.
.SH "SEE ALSO"
nameserv(n), nameserv::auto(n), nameserv::common(n), nameserv::protocol(n), nameserv::server(n), nnsd(n), nss(n)
.SH KEYWORDS
client, name service, server
.SH CATEGORY
Networking
.SH COPYRIGHT







>
|

|


<







314
315
316
317
318
319
320
321
322
323
324
325
326

327
328
329
330
331
332
333
\fBnameserv::server\fR to talk to each other\&. It is of no interest
to users of either the packages or applications\&.
.PP
Developers wishing to modify and/or extend or to just understand the
internals of the nameservice facility however are strongly advised to
read it\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fInameserv\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.

.SH "SEE ALSO"
nameserv(n), nameserv::auto(n), nameserv::common(n), nameserv::protocol(n), nameserv::server(n), nnsd(n), nss(n)
.SH KEYWORDS
client, name service, server
.SH CATEGORY
Networking
.SH COPYRIGHT

Changes to embedded/man/files/modules/nns/nns_protocol.n.

377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
The argument coming before the response tells the client whether the
names in the response were added or removed from the service\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fInameserv\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
comm_wire(n), nameserv(n), nameserv::server(n)
.SH KEYWORDS
comm, name service, protocol
.SH CATEGORY







|







377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
The argument coming before the response tells the client whether the
names in the response were added or removed from the service\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fInameserv\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
comm_wire(n), nameserv(n), nameserv::server(n)
.SH KEYWORDS
comm, name service, protocol
.SH CATEGORY

Changes to embedded/man/files/modules/nns/nns_server.n.

362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
0\&.1
Initial implementation of the server\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fInameserv\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
nameserv::client(n), nameserv::common(n)
.SH KEYWORDS
name service, server
.SH CATEGORY







|







362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
0\&.1
Initial implementation of the server\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fInameserv\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
nameserv::client(n), nameserv::common(n)
.SH KEYWORDS
name service, server
.SH CATEGORY

Changes to embedded/man/files/modules/nntp/nntp.n.

599
600
601
602
603
604
605
606
607
608
609
610
611
612
    Test message body"

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fInntp\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
news, nntp, nntpclient, rfc 1036, rfc 977
.SH CATEGORY
Networking







|






599
600
601
602
603
604
605
606
607
608
609
610
611
612
    Test message body"

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fInntp\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
news, nntp, nntpclient, rfc 1036, rfc 977
.SH CATEGORY
Networking

Changes to embedded/man/files/modules/ntp/ntp_time.n.

381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
.CE
.SH AUTHORS
Pat Thoyts
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIntp\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
ntp
.SH KEYWORDS
NTP, SNTP, rfc 2030, rfc 868, time
.SH CATEGORY







|







381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
.CE
.SH AUTHORS
Pat Thoyts
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIntp\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
ntp
.SH KEYWORDS
NTP, SNTP, rfc 2030, rfc 868, time
.SH CATEGORY

Changes to embedded/man/files/modules/ooutil/ooutil.n.

401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
.PP
.SH AUTHORS
Donal Fellows, Andreas Kupries
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIoo::util\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
snit(n)
.SH KEYWORDS
TclOO, callback, class methods, class variables, command prefix, currying, method reference, my method, singleton
.SH CATEGORY







|







401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
.PP
.SH AUTHORS
Donal Fellows, Andreas Kupries
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIoo::util\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
snit(n)
.SH KEYWORDS
TclOO, callback, class methods, class variables, command prefix, currying, method reference, my method, singleton
.SH CATEGORY

Changes to embedded/man/files/modules/otp/otp.n.

311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
and Technology, U\&.S\&. Department Of Commerce, April 1995\&.
(\fIhttp://www\&.itl\&.nist\&.gov/fipspubs/fip180-1\&.htm\fR)
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIotp\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
SASL, md4, md5, ripemd160, sha1
.SH KEYWORDS
hashing, message-digest, password, rfc 2289, security
.SH CATEGORY







|







311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
and Technology, U\&.S\&. Department Of Commerce, April 1995\&.
(\fIhttp://www\&.itl\&.nist\&.gov/fipspubs/fip180-1\&.htm\fR)
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIotp\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
SASL, md4, md5, ripemd160, sha1
.SH KEYWORDS
hashing, message-digest, password, rfc 2289, security
.SH CATEGORY

Changes to embedded/man/files/modules/page/page_intro.n.

256
257
258
259
260
261
262

263
264
265
266

267
268
269
270
271
272
273
plugins\&.
.PP
The packages implementing the plugins are not documented as regular
packages, as they cannot be loaded into a general interpreter, like
tclsh, without extensive preparation of the interpreter\&. Preparation
which is done for them by the plugin manager\&.
.SH "BUGS, IDEAS, FEEDBACK"

This document, will undoubtedly contain bugs and other problems\&.
Please report such in the category \fIpage\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have\&.

.SH KEYWORDS
page, parser generator, text processing
.SH CATEGORY
Page Parser Generator
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>







>
|

|
|
>







256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
plugins\&.
.PP
The packages implementing the plugins are not documented as regular
packages, as they cannot be loaded into a general interpreter, like
tclsh, without extensive preparation of the interpreter\&. Preparation
which is done for them by the plugin manager\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpage\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
page, parser generator, text processing
.SH CATEGORY
Page Parser Generator
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>

Changes to embedded/man/files/modules/page/page_pluginmgr.n.

996
997
998
999
1000
1001
1002

1003
1004
1005
1006

1007
1008
1009
1010
1011
1012
1013
.RE
.PP
.SH FEATURES
The plugin manager currently checks the plugins for only one feature,
\fBtimeable\fR\&. A plugin supporting this feature is assumed to be
able to collect timing statistics on request\&.
.SH "BUGS, IDEAS, FEEDBACK"

This document, will undoubtedly contain bugs and other problems\&.
Please report such in the category \fIpage\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have\&.

.SH KEYWORDS
page, parser generator, text processing
.SH CATEGORY
Page Parser Generator
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>







>
|

|
|
>







996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
.RE
.PP
.SH FEATURES
The plugin manager currently checks the plugins for only one feature,
\fBtimeable\fR\&. A plugin supporting this feature is assumed to be
able to collect timing statistics on request\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpage\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
page, parser generator, text processing
.SH CATEGORY
Page Parser Generator
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>

Changes to embedded/man/files/modules/page/page_util_flow.n.

308
309
310
311
312
313
314

315
316
317
318

319
320
321
322
323
324
325
\fInodelist\fR are visited after the current iteration\&.
.TP
\fIflow\fR \fBvisita\fR \fInode\fR\&.\&.\&.
This is the variadic arguments form of the method \fBvisitl\fR, see
above\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"

This document, will undoubtedly contain bugs and other problems\&.
Please report such in the category \fIpage\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have\&.

.SH KEYWORDS
dataflow, graph walking, page, parser generator, text processing, tree walking
.SH CATEGORY
Page Parser Generator
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>







>
|

|
|
>







308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
\fInodelist\fR are visited after the current iteration\&.
.TP
\fIflow\fR \fBvisita\fR \fInode\fR\&.\&.\&.
This is the variadic arguments form of the method \fBvisitl\fR, see
above\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpage\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
dataflow, graph walking, page, parser generator, text processing, tree walking
.SH CATEGORY
Page Parser Generator
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>

Changes to embedded/man/files/modules/page/page_util_norm_lemon.n.

264
265
266
267
268
269
270

271
272
273
274

275
276
277
278
279
280
281
This command assumes the \fItree\fR object contains for a lemon
grammar\&. It normalizes this tree in place\&. The result is called a
\fINormalized Lemon Grammar Tree\fR\&.
.sp
The exact operations performed are left undocumented for the moment\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"

This document, will undoubtedly contain bugs and other problems\&.
Please report such in the category \fIpage\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have\&.

.SH KEYWORDS
graph walking, lemon, normalization, page, parser generator, text processing, tree walking
.SH CATEGORY
Page Parser Generator
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>







>
|

|
|
>







264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
This command assumes the \fItree\fR object contains for a lemon
grammar\&. It normalizes this tree in place\&. The result is called a
\fINormalized Lemon Grammar Tree\fR\&.
.sp
The exact operations performed are left undocumented for the moment\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpage\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
graph walking, lemon, normalization, page, parser generator, text processing, tree walking
.SH CATEGORY
Page Parser Generator
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>

Changes to embedded/man/files/modules/page/page_util_norm_peg.n.

313
314
315
316
317
318
319

320
321
322
323

324
325
326
327
328
329
330
tree is flattened by the removal of superfluous inner nodes\&.
.sp
The order matters, to shed as much nodes as possible early, and
to avoid unnecessary work later\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"

This document, will undoubtedly contain bugs and other problems\&.
Please report such in the category \fIpage\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have\&.

.SH KEYWORDS
PEG, graph walking, normalization, page, parser generator, text processing, tree walking
.SH CATEGORY
Page Parser Generator
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>







>
|

|
|
>







313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
tree is flattened by the removal of superfluous inner nodes\&.
.sp
The order matters, to shed as much nodes as possible early, and
to avoid unnecessary work later\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpage\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
PEG, graph walking, normalization, page, parser generator, text processing, tree walking
.SH CATEGORY
Page Parser Generator
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>

Changes to embedded/man/files/modules/page/page_util_peg.n.

335
336
337
338
339
340
341

342
343
344
345

346
347
348
349
350
351
352
\fB::page::util::peg::printTclExpr\fR \fIpe\fR
This command converts the parsing expression contained in the nested
list \fIpe\fR into a Tcl string which can be placed into a Tcl script\&.
See the package \fBgrammar::peg\fR for the exact syntax of
\fIpe\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"

This document, will undoubtedly contain bugs and other problems\&.
Please report such in the category \fIpage\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have\&.

.SH KEYWORDS
PEG, page, parser generator, parsing expression grammar, text processing, transformation
.SH CATEGORY
Page Parser Generator
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>







>
|

|
|
>







335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
\fB::page::util::peg::printTclExpr\fR \fIpe\fR
This command converts the parsing expression contained in the nested
list \fIpe\fR into a Tcl string which can be placed into a Tcl script\&.
See the package \fBgrammar::peg\fR for the exact syntax of
\fIpe\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpage\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
PEG, page, parser generator, parsing expression grammar, text processing, transformation
.SH CATEGORY
Page Parser Generator
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>

Changes to embedded/man/files/modules/page/page_util_quote.n.

289
290
291
292
293
294
295

296
297
298
299

300
301
302
303
304
305
306
\fB::page::util::quote::quote'tclcom\fR \fIchar\fR
This command takes a Tcl character (internal representation) and
converts it into a string which is accepted by the Tcl parser when
used within a Tcl comment\&. The string is returned as the result of
this command\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"

This document, will undoubtedly contain bugs and other problems\&.
Please report such in the category \fIpage\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have\&.

.SH KEYWORDS
page, parser generator, quoting, text processing
.SH CATEGORY
Page Parser Generator
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>







>
|

|
|
>







289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
\fB::page::util::quote::quote'tclcom\fR \fIchar\fR
This command takes a Tcl character (internal representation) and
converts it into a string which is accepted by the Tcl parser when
used within a Tcl comment\&. The string is returned as the result of
this command\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpage\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
page, parser generator, quoting, text processing
.SH CATEGORY
Page Parser Generator
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>

Changes to embedded/man/files/modules/pki/pki.n.

446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
.PP
.SH AUTHORS
Roy Keene
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIrsa\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
aes(n), blowfish(n), des(n), md5(n), sha1(n)
.SH KEYWORDS
cipher, data integrity, encryption, public key cipher, rsa, security
.SH CATEGORY







|







446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
.PP
.SH AUTHORS
Roy Keene
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIrsa\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
aes(n), blowfish(n), des(n), md5(n), sha1(n)
.SH KEYWORDS
cipher, data integrity, encryption, public key cipher, rsa, security
.SH CATEGORY

Changes to embedded/man/files/modules/pluginmgr/pluginmgr.n.

581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
define commands, packages, etc\&. a chosen plugin may need while being
loaded\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpluginmgr\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
plugin management, plugin search
.SH CATEGORY
Programming tools
.SH COPYRIGHT







|







581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
define commands, packages, etc\&. a chosen plugin may need while being
loaded\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpluginmgr\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
plugin management, plugin search
.SH CATEGORY
Programming tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/png/png.n.

382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
Takes a list of scanlines in the Tk_GetColor format and writes the represented image
to \fIfile\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpng\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
comment, image, png, timestamp
.SH CATEGORY
File formats
.SH COPYRIGHT







|







382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
Takes a list of scanlines in the Tk_GetColor format and writes the represented image
to \fIfile\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpng\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
comment, image, png, timestamp
.SH CATEGORY
File formats
.SH COPYRIGHT

Changes to embedded/man/files/modules/pop3/pop3.n.

468
469
470
471
472
473
474
475
476
477
478
479
480
481
	\&.\&.\&.

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpop3\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
email, mail, pop, pop3, rfc 1939, secure, ssl, tls
.SH CATEGORY
Networking







|






468
469
470
471
472
473
474
475
476
477
478
479
480
481
	\&.\&.\&.

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpop3\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
email, mail, pop, pop3, rfc 1939, secure, ssl, tls
.SH CATEGORY
Networking

Changes to embedded/man/files/modules/pop3d/pop3d.n.

476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
.IP [2]
\fIRFC 2449\fR [http://www\&.rfc-editor\&.org/rfc/rfc2449\&.txt]
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpop3d\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
internet, network, pop3, protocol, rfc 1939, secure, ssl, tls
.SH CATEGORY
Networking
.SH COPYRIGHT







|







476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
.IP [2]
\fIRFC 2449\fR [http://www\&.rfc-editor\&.org/rfc/rfc2449\&.txt]
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpop3d\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
internet, network, pop3, protocol, rfc 1939, secure, ssl, tls
.SH CATEGORY
Networking
.SH COPYRIGHT

Changes to embedded/man/files/modules/pop3d/pop3d_dbox.n.

390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
before this call, \fBget\fR will assume
that there are zero messages in the mailbox\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpop3d\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
internet, network, pop3, protocol, rfc 822
.SH CATEGORY
Networking
.SH COPYRIGHT







|







390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
before this call, \fBget\fR will assume
that there are zero messages in the mailbox\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpop3d\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
internet, network, pop3, protocol, rfc 822
.SH CATEGORY
Networking
.SH COPYRIGHT

Changes to embedded/man/files/modules/pop3d/pop3d_udb.n.

339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
remembered internally so that it can be used in the next call of
\fIdbName\fR \fBsave\fR without an argument\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpop3d\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
internet, network, pop3, protocol
.SH CATEGORY
Networking
.SH COPYRIGHT







|







339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
remembered internally so that it can be used in the next call of
\fIdbName\fR \fBsave\fR without an argument\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpop3d\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
internet, network, pop3, protocol
.SH CATEGORY
Networking
.SH COPYRIGHT

Changes to embedded/man/files/modules/profiler/profiler.n.

343
344
345
346
347
348
349
350
351
352
353
354
355
356
sublist consists of a function name and the value of \fIkey\fR for
that function\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIprofiler\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
performance, profile, speed
.SH CATEGORY
Programming tools







|






343
344
345
346
347
348
349
350
351
352
353
354
355
356
sublist consists of a function name and the value of \fIkey\fR for
that function\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIprofiler\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
performance, profile, speed
.SH CATEGORY
Programming tools

Changes to embedded/man/files/modules/pt/pt_astree.n.

508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
\&.fi
.PE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
\&.fi
.PE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_cparam_config_critcl.n.

284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
Or anything other command prefix accepting two arguments, option and
value\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
Or anything other command prefix accepting two arguments, option and
value\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_from_api.n.

721
722
723
724
725
726
727
728
729
730
731
732
733
734
735

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







721
722
723
724
725
726
727
728
729
730
731
732
733
734
735

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_introduction.n.

393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
.TP
\fBchar\fR
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
.TP
\fBchar\fR
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_json_language.n.

714
715
716
717
718
719
720
721
722
723
724
725
726
727
728

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







714
715
716
717
718
719
720
721
722
723
724
725
726
727
728

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_param.n.

739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
======================= =======================		====================

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer, virtual machine
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
======================= =======================		====================

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer, virtual machine
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_parser_api.n.

669
670
671
672
673
674
675
676
677
678
679
680
681
682
683

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







669
670
671
672
673
674
675
676
677
678
679
680
681
682
683

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_peg_container.n.

902
903
904
905
906
907
908
909
910
911
912
913
914
915
916

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







902
903
904
905
906
907
908
909
910
911
912
913
914
915
916

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_peg_container_peg.n.

267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
The sub-type provides the exact same API as
\fBpt::peg::container\fR\&. Instead of duplicating its contents the
reader is asked to read the referenced document\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
The sub-type provides the exact same API as
\fBpt::peg::container\fR\&. Instead of duplicating its contents the
reader is asked to read the referenced document\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_peg_export.n.

723
724
725
726
727
728
729
730
731
732
733
734
735
736
737

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







723
724
725
726
727
728
729
730
731
732
733
734
735
736
737

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_peg_export_container.n.

723
724
725
726
727
728
729
730
731
732
733
734
735
736
737

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
CONTAINER, EBNF, LL(k), PEG, TDPL, context-free languages, export, expression, grammar, matching, parser, parsing expression, parsing expression grammar, plugin, push down automaton, recursive descent, serialization, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







723
724
725
726
727
728
729
730
731
732
733
734
735
736
737

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
CONTAINER, EBNF, LL(k), PEG, TDPL, context-free languages, export, expression, grammar, matching, parser, parsing expression, parsing expression grammar, plugin, push down automaton, recursive descent, serialization, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_peg_export_json.n.

782
783
784
785
786
787
788
789
790
791
792
793
794
795
796

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, JSON, LL(k), PEG, TDPL, context-free languages, export, expression, grammar, matching, parser, parsing expression, parsing expression grammar, plugin, push down automaton, recursive descent, serialization, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







782
783
784
785
786
787
788
789
790
791
792
793
794
795
796

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, JSON, LL(k), PEG, TDPL, context-free languages, export, expression, grammar, matching, parser, parsing expression, parsing expression grammar, plugin, push down automaton, recursive descent, serialization, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_peg_export_peg.n.

775
776
777
778
779
780
781
782
783
784
785
786
787
788
789

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, export, expression, grammar, matching, parser, parsing expression, parsing expression grammar, plugin, push down automaton, recursive descent, serialization, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







775
776
777
778
779
780
781
782
783
784
785
786
787
788
789

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, export, expression, grammar, matching, parser, parsing expression, parsing expression grammar, plugin, push down automaton, recursive descent, serialization, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_peg_from_container.n.

261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
grammar we wish to import loaded\&.
Another way of looking at this is, the CONTAINER output is its own
import package\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
grammar we wish to import loaded\&.
Another way of looking at this is, the CONTAINER output is its own
import package\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_peg_from_json.n.

748
749
750
751
752
753
754
755
756
757
758
759
760
761
762

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, JSON, LL(k), PEG, TDPL, context-free languages, conversion, expression, format conversion, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, serialization, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







748
749
750
751
752
753
754
755
756
757
758
759
760
761
762

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, JSON, LL(k), PEG, TDPL, context-free languages, conversion, expression, format conversion, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, serialization, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_peg_from_peg.n.

725
726
727
728
729
730
731
732
733
734
735
736
737
738
739

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, conversion, expression, format conversion, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, serialization, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







725
726
727
728
729
730
731
732
733
734
735
736
737
738
739

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, conversion, expression, format conversion, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, serialization, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_peg_import.n.

743
744
745
746
747
748
749
750
751
752
753
754
755
756
757

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







743
744
745
746
747
748
749
750
751
752
753
754
755
756
757

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_peg_import_container.n.

261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
grammar we wish to import loaded\&.
Another way of looking at this is, the CONTAINER output is its own
import package\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
grammar we wish to import loaded\&.
Another way of looking at this is, the CONTAINER output is its own
import package\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_peg_import_json.n.

757
758
759
760
761
762
763
764
765
766
767
768
769
770
771

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, JSON, LL(k), PEG, TDPL, context-free languages, expression, grammar, import, matching, parser, parsing expression, parsing expression grammar, plugin, push down automaton, recursive descent, serialization, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







757
758
759
760
761
762
763
764
765
766
767
768
769
770
771

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, JSON, LL(k), PEG, TDPL, context-free languages, expression, grammar, import, matching, parser, parsing expression, parsing expression grammar, plugin, push down automaton, recursive descent, serialization, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_peg_import_peg.n.

738
739
740
741
742
743
744
745
746
747
748
749
750
751
752

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, import, matching, parser, parsing expression, parsing expression grammar, plugin, push down automaton, recursive descent, serialization, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







738
739
740
741
742
743
744
745
746
747
748
749
750
751
752

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, import, matching, parser, parsing expression, parsing expression grammar, plugin, push down automaton, recursive descent, serialization, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_peg_interp.n.

661
662
663
664
665
666
667
668
669
670
671
672
673
674
675

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







661
662
663
664
665
666
667
668
669
670
671
672
673
674
675

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_peg_introduction.n.

391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
\fICompilers and Compiler Generators\fR [http://scifac\&.ru\&.ac\&.za/compilers/], an online book using
CoCo/R, a generator for recursive descent parsers\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
\fICompilers and Compiler Generators\fR [http://scifac\&.ru\&.ac\&.za/compilers/], an online book using
CoCo/R, a generator for recursive descent parsers\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_peg_language.n.

706
707
708
709
710
711
712
713
714
715
716
717
718
719
720

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







706
707
708
709
710
711
712
713
714
715
716
717
718
719
720

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_peg_to_container.n.

746
747
748
749
750
751
752
753
754
755
756
757
758
759
760

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
CONTAINER, EBNF, LL(k), PEG, TDPL, context-free languages, conversion, expression, format conversion, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, serialization, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







746
747
748
749
750
751
752
753
754
755
756
757
758
759
760

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
CONTAINER, EBNF, LL(k), PEG, TDPL, context-free languages, conversion, expression, format conversion, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, serialization, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_peg_to_cparam.n.

766
767
768
769
770
771
772
773
774
775
776
777
778
779
780

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
CPARAM, EBNF, LL(k), PEG, TDPL, context-free languages, conversion, expression, format conversion, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, serialization, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







766
767
768
769
770
771
772
773
774
775
776
777
778
779
780

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
CPARAM, EBNF, LL(k), PEG, TDPL, context-free languages, conversion, expression, format conversion, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, serialization, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_peg_to_json.n.

810
811
812
813
814
815
816
817
818
819
820
821
822
823
824

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, JSON, LL(k), PEG, TDPL, context-free languages, conversion, expression, format conversion, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, serialization, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







810
811
812
813
814
815
816
817
818
819
820
821
822
823
824

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, JSON, LL(k), PEG, TDPL, context-free languages, conversion, expression, format conversion, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, serialization, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_peg_to_param.n.

1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PARAM, PEG, TDPL, context-free languages, conversion, expression, format conversion, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, serialization, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PARAM, PEG, TDPL, context-free languages, conversion, expression, format conversion, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, serialization, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_peg_to_peg.n.

797
798
799
800
801
802
803
804
805
806
807
808
809
810
811

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, conversion, expression, format conversion, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, serialization, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







797
798
799
800
801
802
803
804
805
806
807
808
809
810
811

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, conversion, expression, format conversion, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, serialization, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_peg_to_tclparam.n.

750
751
752
753
754
755
756
757
758
759
760
761
762
763
764

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TCLPARAM, TDPL, context-free languages, conversion, expression, format conversion, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, serialization, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







750
751
752
753
754
755
756
757
758
759
760
761
762
763
764

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TCLPARAM, TDPL, context-free languages, conversion, expression, format conversion, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, serialization, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_pegrammar.n.

660
661
662
663
664
665
666
667
668
669
670
671
672
673
674

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







660
661
662
663
664
665
666
667
668
669
670
671
672
673
674

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_pexpr_op.n.

491
492
493
494
495
496
497
498
499
500
501
502
503
504
505

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







491
492
493
494
495
496
497
498
499
500
501
502
503
504
505

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_pexpression.n.

686
687
688
689
690
691
692
693
694
695
696
697
698
699
700

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







686
687
688
689
690
691
692
693
694
695
696
697
698
699
700

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_pgen.n.

452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
Going back to the last snippet of code, the execution of the parser
for some input, note how the parser instance follows the specified
\fIParser API\fR\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
Going back to the last snippet of code, the execution of the parser
for some input, note how the parser instance follows the specified
\fIParser API\fR\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_rdengine.n.

1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
handling atomic expressions\&.
.PP
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
handling atomic expressions\&.
.PP
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_tclparam_config_snit.n.

284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
Or anything other command prefix accepting two arguments, option and
value\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
Or anything other command prefix accepting two arguments, option and
value\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_tclparam_config_tcloo.n.

284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
Or anything other command prefix accepting two arguments, option and
value\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
Or anything other command prefix accepting two arguments, option and
value\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/pt/pt_to_api.n.

737
738
739
740
741
742
743
744
745
746
747
748
749
750
751

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT







|







737
738
739
740
741
742
743
744
745
746
747
748
749
750
751

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIpt\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
EBNF, LL(k), PEG, TDPL, context-free languages, expression, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, state, top-down parsing languages, transducer
.SH CATEGORY
Parsing and Grammars
.SH COPYRIGHT

Changes to embedded/man/files/modules/rc4/rc4.n.

334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
.CE
.SH AUTHORS
Pat Thoyts
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIrc4\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
aes(n), blowfish(n), des(n)
.SH KEYWORDS
arcfour, data integrity, encryption, rc4, security, stream cipher
.SH CATEGORY







|







334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
.CE
.SH AUTHORS
Pat Thoyts
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIrc4\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
aes(n), blowfish(n), des(n)
.SH KEYWORDS
arcfour, data integrity, encryption, rc4, security, stream cipher
.SH CATEGORY

Changes to embedded/man/files/modules/rcs/rcs.n.

499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
Deeper and more profound,
The door of all subtleties!}}}
.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIrcs\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
struct, textutil
.SH KEYWORDS
CVS, RCS, RCS patch, SCCS, diff -n format, patching, text conversion, text differences
.SH CATEGORY







|







499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
Deeper and more profound,
The door of all subtleties!}}}
.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIrcs\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
struct, textutil
.SH KEYWORDS
CVS, RCS, RCS patch, SCCS, diff -n format, patching, text conversion, text differences
.SH CATEGORY

Changes to embedded/man/files/modules/report/report.n.

650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
    % m format 2string r

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIreport\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
matrix, report, table
.SH CATEGORY
Data structures
.SH COPYRIGHT







|







650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
    % m format 2string r

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIreport\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
matrix, report, table
.SH CATEGORY
Data structures
.SH COPYRIGHT

Changes to embedded/man/files/modules/ripemd/ripemd128.n.

395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
Message Authentication", RFC 2104, February 1997\&.
(\fIhttp://www\&.rfc-editor\&.org/rfc/rfc2104\&.txt\fR)
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIripemd\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
md4, md5, ripemd160, sha1
.SH KEYWORDS
RIPEMD, hashing, md4, message-digest, rfc 1320, rfc 1321, rfc 2104, security
.SH CATEGORY







|







395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
Message Authentication", RFC 2104, February 1997\&.
(\fIhttp://www\&.rfc-editor\&.org/rfc/rfc2104\&.txt\fR)
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIripemd\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
md4, md5, ripemd160, sha1
.SH KEYWORDS
RIPEMD, hashing, md4, message-digest, rfc 1320, rfc 1321, rfc 2104, security
.SH CATEGORY

Changes to embedded/man/files/modules/ripemd/ripemd160.n.

382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
Message Authentication", RFC 2104, February 1997\&.
(\fIhttp://www\&.rfc-editor\&.org/rfc/rfc2104\&.txt\fR)
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIripemd\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
md4, md5, ripemd128, sha1
.SH KEYWORDS
RIPEMD, hashing, md4, message-digest, rfc 1320, rfc 1321, rfc 2104, security
.SH CATEGORY







|







382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
Message Authentication", RFC 2104, February 1997\&.
(\fIhttp://www\&.rfc-editor\&.org/rfc/rfc2104\&.txt\fR)
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIripemd\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
md4, md5, ripemd128, sha1
.SH KEYWORDS
RIPEMD, hashing, md4, message-digest, rfc 1320, rfc 1321, rfc 2104, security
.SH CATEGORY

Changes to embedded/man/files/modules/sasl/sasl.n.

521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
.PP
.SH AUTHORS
Pat Thoyts
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIsasl\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
SASL, authentication
.SH CATEGORY
Networking
.SH COPYRIGHT







|







521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
.PP
.SH AUTHORS
Pat Thoyts
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIsasl\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
SASL, authentication
.SH CATEGORY
Networking
.SH COPYRIGHT

Changes to embedded/man/files/modules/sha1/sha1.n.

387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
Message Authentication", RFC 2104, February 1997\&.
(\fIhttp://www\&.rfc-editor\&.org/rfc/rfc2104\&.txt\fR)
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIsha1\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
md4, md5, ripemd128, ripemd160
.SH KEYWORDS
FIPS 180-1, hashing, message-digest, rfc 2104, security, sha1
.SH CATEGORY







|







387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
Message Authentication", RFC 2104, February 1997\&.
(\fIhttp://www\&.rfc-editor\&.org/rfc/rfc2104\&.txt\fR)
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIsha1\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
md4, md5, ripemd128, ripemd160
.SH KEYWORDS
FIPS 180-1, hashing, message-digest, rfc 2104, security, sha1
.SH CATEGORY

Changes to embedded/man/files/modules/sha1/sha256.n.

400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
Message Authentication", RFC 2104, February 1997\&.
(\fIhttp://www\&.rfc-editor\&.org/rfc/rfc2104\&.txt\fR)
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIsha1\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
md4, md5, ripemd128, ripemd160, sha1
.SH KEYWORDS
FIPS 180-1, hashing, message-digest, rfc 2104, security, sha256
.SH CATEGORY







|







400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
Message Authentication", RFC 2104, February 1997\&.
(\fIhttp://www\&.rfc-editor\&.org/rfc/rfc2104\&.txt\fR)
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIsha1\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
md4, md5, ripemd128, ripemd160, sha1
.SH KEYWORDS
FIPS 180-1, hashing, message-digest, rfc 2104, security, sha256
.SH CATEGORY

Changes to embedded/man/files/modules/smtpd/smtpd.n.

478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE\&. See the file
"\fIlicense\&.terms\fR" for more details\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIsmtpd\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
rfc 2821, rfc 821, services, smtp, smtpd, socket, vwait
.SH CATEGORY
Networking
.SH COPYRIGHT







|







478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE\&. See the file
"\fIlicense\&.terms\fR" for more details\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIsmtpd\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
rfc 2821, rfc 821, services, smtp, smtpd, socket, vwait
.SH CATEGORY
Networking
.SH COPYRIGHT

Changes to embedded/man/files/modules/snit/snit.n.

2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
value is invalid\&.  This can be done with a simple \fBproc\fR\&.  For
example, the \fBsnit::boolean\fR validate type could have been
implemented like this:
.CS

    proc ::snit::boolean {"validate" value} {
        if {![string is boolean -strict $value]} {
            return -code error -errorcode INVALID \\
                "invalid boolean \\"$value\\", should be one of: 1, 0, \&.\&.\&."
        }

        return $value
    }

.CE
A validation type defined in this way cannot be subtyped, of course;







|
<







2680
2681
2682
2683
2684
2685
2686
2687

2688
2689
2690
2691
2692
2693
2694
value is invalid\&.  This can be done with a simple \fBproc\fR\&.  For
example, the \fBsnit::boolean\fR validate type could have been
implemented like this:
.CS

    proc ::snit::boolean {"validate" value} {
        if {![string is boolean -strict $value]} {
            return -code error -errorcode INVALID  "invalid boolean \\"$value\\", should be one of: 1, 0, \&.\&.\&."

        }

        return $value
    }

.CE
A validation type defined in this way cannot be subtyped, of course;
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728

        # Next, define a "validate" type method which should do the
        # validation in the basic case\&.  This will allow the
        # type command to be used as a validation type\&.

        typemethod validate {value} {
            if {![string is integer -strict $value]} {
                return -code error -errorcode INVALID \\
                    "invalid value \\"$value\\", expected integer"
            }

            return $value
        }

        # Next, the constructor should validate the subtype options,
        # if any\&.  Since they are all readonly, we don't need to worry







|
<







2712
2713
2714
2715
2716
2717
2718
2719

2720
2721
2722
2723
2724
2725
2726

        # Next, define a "validate" type method which should do the
        # validation in the basic case\&.  This will allow the
        # type command to be used as a validation type\&.

        typemethod validate {value} {
            if {![string is integer -strict $value]} {
                return -code error -errorcode INVALID  "invalid value \\"$value\\", expected integer"

            }

            return $value
        }

        # Next, the constructor should validate the subtype options,
        # if any\&.  Since they are all readonly, we don't need to worry
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
The file "validate\&.tcl" in the Snit distribution defines all of Snit's
validation types; you can find the complete implementation for
\fBsnit::integer\fR and the other types there, to use as examples for
your own types\&.
.PP
.SH CAVEATS
If you have problems, find bugs, or new ideas you are hereby cordially
invited to submit a report of your problem, bug, or idea at the
SourceForge trackers for tcllib, which can be found at
\fIhttp://sourceforge\&.net/projects/tcllib/\fR\&.
The relevant category is \fIsnit\fR\&.
.PP
Additionally, you might wish to join the Snit mailing list;
see \fIhttp://www\&.wjduquette\&.com/snit\fR for details\&.
.PP
One particular area to watch is using \fBsnit::widgetadaptor\fR to
adapt megawidgets created by other megawidget packages; correct
widget destruction depends on the order of the <Destroy> bindings\&.
The wisest course is simply not to do this\&.
.SH "KNOWN BUGS"
.IP \(bu
Error stack traces returned by Snit 1\&.x are extremely ugly and typically
contain far too much information about Snit internals\&.  The error
messages are much improved in Snit 2\&.2\&.
.IP \(bu
Also see the SourceForge Trackers at
\fIhttp://sourceforge\&.net/projects/tcllib/\fR, category \fIsnit\fR\&.
.PP
.SH HISTORY
During the course of developing Notebook
(See \fIhttp://www\&.wjduquette\&.com/notebook\fR), my Tcl-based personal
notebook application, I found I was writing it as a collection of
objects\&.  I wasn't using any particular object-oriented framework; I
was just writing objects in pure Tcl following the guidelines in my







|
|
<
<














|
|







2765
2766
2767
2768
2769
2770
2771
2772
2773


2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
The file "validate\&.tcl" in the Snit distribution defines all of Snit's
validation types; you can find the complete implementation for
\fBsnit::integer\fR and the other types there, to use as examples for
your own types\&.
.PP
.SH CAVEATS
If you have problems, find bugs, or new ideas you are hereby cordially
invited to submit a report of your problem, bug, or idea as explained
in the section \fBBugs, Ideas, Feedback\fR below\&.


.PP
Additionally, you might wish to join the Snit mailing list;
see \fIhttp://www\&.wjduquette\&.com/snit\fR for details\&.
.PP
One particular area to watch is using \fBsnit::widgetadaptor\fR to
adapt megawidgets created by other megawidget packages; correct
widget destruction depends on the order of the <Destroy> bindings\&.
The wisest course is simply not to do this\&.
.SH "KNOWN BUGS"
.IP \(bu
Error stack traces returned by Snit 1\&.x are extremely ugly and typically
contain far too much information about Snit internals\&.  The error
messages are much improved in Snit 2\&.2\&.
.IP \(bu
Also see the Project Trackers as explained in the section
\fBBugs, Ideas, Feedback\fR below\&.
.PP
.SH HISTORY
During the course of developing Notebook
(See \fIhttp://www\&.wjduquette\&.com/notebook\fR), my Tcl-based personal
notebook application, I found I was writing it as a collection of
objects\&.  I wasn't using any particular object-oriented framework; I
was just writing objects in pure Tcl following the guidelines in my
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
and Anton Kovalenko\&.
If I've forgotten anyone, my apologies; let me know and I'll add
your name to the list\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIsnit\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
BWidget, C++, Incr Tcl, Snit, adaptors, class, mega widget, object, object oriented, type, widget, widget adaptors
.SH CATEGORY
Programming tools
.SH COPYRIGHT
.nf
Copyright (c) 2003-2009, by William H\&. Duquette

.fi







|











2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
and Anton Kovalenko\&.
If I've forgotten anyone, my apologies; let me know and I'll add
your name to the list\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIsnit\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
BWidget, C++, Incr Tcl, Snit, adaptors, class, mega widget, object, object oriented, type, widget, widget adaptors
.SH CATEGORY
Programming tools
.SH COPYRIGHT
.nf
Copyright (c) 2003-2009, by William H\&. Duquette

.fi

Changes to embedded/man/files/modules/snit/snitfaq.n.

2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
.CS

snit::type dog {
    variable mytail

    option -taillength -configuremethod SetTailOption -cgetmethod GetTailOption


    method SetTailOption {option value} {
         $mytail configure $option $value
    }

    method GetTailOption {option} {
         $mytail cget $option
    }







<







2457
2458
2459
2460
2461
2462
2463

2464
2465
2466
2467
2468
2469
2470
.CS

snit::type dog {
    variable mytail

    option -taillength -configuremethod SetTailOption -cgetmethod GetTailOption


    method SetTailOption {option value} {
         $mytail configure $option $value
    }

    method GetTailOption {option} {
         $mytail cget $option
    }
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
.PP
.CS

snit::type tail {
    method wag {} {return "Wag, wag"}
    method droop {} {return "Droop, droop"}
}


snit::type dog {
    delegate method {tail wag} to mytail
    delegate method {tail droop} to mytail

    # \&.\&.\&.








<







2761
2762
2763
2764
2765
2766
2767

2768
2769
2770
2771
2772
2773
2774
.PP
.CS

snit::type tail {
    method wag {} {return "Wag, wag"}
    method droop {} {return "Droop, droop"}
}


snit::type dog {
    delegate method {tail wag} to mytail
    delegate method {tail droop} to mytail

    # \&.\&.\&.

3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
}

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIsnit\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
BWidget, C++, Incr Tcl, adaptors, class, mega widget, object, object oriented, widget, widget adaptors
.SH CATEGORY
Programming tools
.SH COPYRIGHT
.nf
Copyright (c) 2003-2006, by William H\&. Duquette

.fi







|











3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
}

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIsnit\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
BWidget, C++, Incr Tcl, adaptors, class, mega widget, object, object oriented, widget, widget adaptors
.SH CATEGORY
Programming tools
.SH COPYRIGHT
.nf
Copyright (c) 2003-2006, by William H\&. Duquette

.fi

Changes to embedded/man/files/modules/soundex/soundex.n.

273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
    K530

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIsoundex\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
knuth, soundex, text comparison, text likeness
.SH CATEGORY
Hashes, checksums, and encryption
.SH COPYRIGHT







|







273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
    K530

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIsoundex\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
knuth, soundex, text comparison, text likeness
.SH CATEGORY
Hashes, checksums, and encryption
.SH COPYRIGHT

Changes to embedded/man/files/modules/stooop/stooop.n.

434
435
436
437
438
439
440
441
442
443
444
445
446
447
.PP
.SH EXAMPLES
Please see the full HTML documentation in \fIstooop_man\&.html\fR\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstooop\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
C++, class, object, object oriented
.SH CATEGORY
Programming tools







|






434
435
436
437
438
439
440
441
442
443
444
445
446
447
.PP
.SH EXAMPLES
Please see the full HTML documentation in \fIstooop_man\&.html\fR\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstooop\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
C++, class, object, object oriented
.SH CATEGORY
Programming tools

Changes to embedded/man/files/modules/string/token.n.

330
331
332
333
334
335
336
337
338
339
340
341
342
343
with the constraint escape \fBA\fR to ensure that a match starts
exactly at the character index found in \fIstartvar\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItextutil\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
lexing, regex, string, tokenization
.SH CATEGORY
Text processing







|






330
331
332
333
334
335
336
337
338
339
340
341
342
343
with the constraint escape \fBA\fR to ensure that a match starts
exactly at the character index found in \fIstartvar\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItextutil\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
lexing, regex, string, tokenization
.SH CATEGORY
Text processing

Changes to embedded/man/files/modules/string/token_shell.n.

349
350
351
352
353
354
355
356
357
358
359
360
361
362
Whitespace may occur before the first word, or after the last word\&. Whitespace must occur between adjacent words\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItextutil\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
bash, lexing, parsing, shell, string, tokenization
.SH CATEGORY
Text processing







|






349
350
351
352
353
354
355
356
357
358
359
360
361
362
Whitespace may occur before the first word, or after the last word\&. Whitespace must occur between adjacent words\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItextutil\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
bash, lexing, parsing, shell, string, tokenization
.SH CATEGORY
Text processing

Changes to embedded/man/files/modules/stringprep/stringprep.n.

340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
.PP
.SH AUTHORS
Sergei Golovan
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstringprep\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
unicode(n)
.SH KEYWORDS
stringprep, unicode
.SH COPYRIGHT







|







340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
.PP
.SH AUTHORS
Sergei Golovan
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstringprep\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
unicode(n)
.SH KEYWORDS
stringprep, unicode
.SH COPYRIGHT

Changes to embedded/man/files/modules/stringprep/stringprep_data.n.

255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
perform its functions\&. It is an \fIinternal\fR package which should
not be accessed on its own\&. Because of that it has no publicly
documented API either\&. Its implementation is generated by a script\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstringprep\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
stringprep, unicode
.SH COPYRIGHT
.nf
Copyright (c) 2007-2009, Sergei Golovan <sgolovan@nes\&.ru>







|







255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
perform its functions\&. It is an \fIinternal\fR package which should
not be accessed on its own\&. Because of that it has no publicly
documented API either\&. Its implementation is generated by a script\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstringprep\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
stringprep, unicode
.SH COPYRIGHT
.nf
Copyright (c) 2007-2009, Sergei Golovan <sgolovan@nes\&.ru>

Changes to embedded/man/files/modules/stringprep/unicode.n.

308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
.PP
.SH AUTHORS
Sergei Golovan
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstringprep\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
stringprep(n)
.SH KEYWORDS
normalization, unicode
.SH COPYRIGHT







|







308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
.PP
.SH AUTHORS
Sergei Golovan
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstringprep\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
stringprep(n)
.SH KEYWORDS
normalization, unicode
.SH COPYRIGHT

Changes to embedded/man/files/modules/stringprep/unicode_data.n.

255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
perform its functions\&. It is an \fIinternal\fR package which should
not be accessed on its own\&. Because of that it has no publicly
documented API either\&. Its implementation is generated by a script\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstringprep\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
stringprep, unicode
.SH COPYRIGHT
.nf
Copyright (c) 2007, Sergei Golovan <sgolovan@nes\&.ru>







|







255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
perform its functions\&. It is an \fIinternal\fR package which should
not be accessed on its own\&. Because of that it has no publicly
documented API either\&. Its implementation is generated by a script\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstringprep\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
stringprep, unicode
.SH COPYRIGHT
.nf
Copyright (c) 2007, Sergei Golovan <sgolovan@nes\&.ru>

Changes to embedded/man/files/modules/struct/disjointset.n.

378
379
380
381
382
383
384
385
386
387
388
389
390
391
\fIdisjointsetName\fR \fBdestroy\fR
Destroys the disjoint set object and all associated memory\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: disjointset\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
disjoint set, equivalence class, find, merge find, partition, partitioned set, union
.SH CATEGORY
Data structures







|






378
379
380
381
382
383
384
385
386
387
388
389
390
391
\fIdisjointsetName\fR \fBdestroy\fR
Destroys the disjoint set object and all associated memory\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: disjointset\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
disjoint set, equivalence class, find, merge find, partition, partitioned set, union
.SH CATEGORY
Data structures

Changes to embedded/man/files/modules/struct/graph.n.

1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
the ability to select arcs and nodes based on an arbitrary filtering
criterium\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: graph\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
adjacent, arc, cgraph, degree, edge, graph, loop, neighbour, node, serialization, subgraph, vertex
.SH CATEGORY
Data structures
.SH COPYRIGHT







|







1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
the ability to select arcs and nodes based on an arbitrary filtering
criterium\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: graph\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
adjacent, arc, cgraph, degree, edge, graph, loop, neighbour, node, serialization, subgraph, vertex
.SH CATEGORY
Data structures
.SH COPYRIGHT

Changes to embedded/man/files/modules/struct/graph1.n.

602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
post-order all nodes are left\&. In a both-order walk the first visit of
a node \fBenter\fRs it, the second visit \fBleave\fRs it\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: graph\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
cgraph, graph
.SH CATEGORY
Data structures
.SH COPYRIGHT







|







602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
post-order all nodes are left\&. In a both-order walk the first visit of
a node \fBenter\fRs it, the second visit \fBleave\fRs it\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: graph\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
cgraph, graph
.SH CATEGORY
Data structures
.SH COPYRIGHT

Changes to embedded/man/files/modules/struct/graphops.n.

1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
.IP [26]
\fIApproximation algorithm\fR [http://en\&.wikipedia\&.org/wiki/Approximation_algorithm]
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: graph\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
adjacency list, adjacency matrix, adjacent, approximation algorithm, arc, articulation point, augmenting network, augmenting path, bfs, bipartite, blocking flow, bridge, complete graph, connected component, cut edge, cut vertex, degree, degree constrained spanning tree, diameter, dijkstra, distance, eccentricity, edge, flow network, graph, heuristic, independent set, isthmus, level graph, local searching, loop, matching, max cut, maximum flow, minimal spanning tree, minimum cost flow, minimum degree spanning tree, minimum diameter spanning tree, neighbour, node, radius, residual graph, shortest path, squared graph, strongly connected component, subgraph, travelling salesman, vertex, vertex cover
.SH CATEGORY
Data structures
.SH COPYRIGHT







|







1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
.IP [26]
\fIApproximation algorithm\fR [http://en\&.wikipedia\&.org/wiki/Approximation_algorithm]
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: graph\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
adjacency list, adjacency matrix, adjacent, approximation algorithm, arc, articulation point, augmenting network, augmenting path, bfs, bipartite, blocking flow, bridge, complete graph, connected component, cut edge, cut vertex, degree, degree constrained spanning tree, diameter, dijkstra, distance, eccentricity, edge, flow network, graph, heuristic, independent set, isthmus, level graph, local searching, loop, matching, max cut, maximum flow, minimal spanning tree, minimum cost flow, minimum degree spanning tree, minimum diameter spanning tree, neighbour, node, radius, residual graph, shortest path, squared graph, strongly connected component, subgraph, travelling salesman, vertex, vertex cover
.SH CATEGORY
Data structures
.SH COPYRIGHT

Changes to embedded/man/files/modules/struct/matrix.n.

794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
    % r printmatrix m

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: matrix\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
matrix
.SH CATEGORY
Data structures
.SH COPYRIGHT







|







794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
    % r printmatrix m

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: matrix\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
matrix
.SH CATEGORY
Data structures
.SH COPYRIGHT

Changes to embedded/man/files/modules/struct/matrix1.n.

634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
    % r printmatrix m

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: matrix\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
matrix
.SH CATEGORY
Data structures
.SH COPYRIGHT







|







634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
    % r printmatrix m

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: matrix\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
matrix
.SH CATEGORY
Data structures
.SH COPYRIGHT

Changes to embedded/man/files/modules/struct/pool.n.

623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
     }

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: pool\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
discrete items, finite, pool, struct
.SH CATEGORY
Data structures
.SH COPYRIGHT







|







623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
     }

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: pool\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
discrete items, finite, pool, struct
.SH CATEGORY
Data structures
.SH COPYRIGHT

Changes to embedded/man/files/modules/struct/prioqueue.n.

341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
\fIprioqueueName\fR \fBsize\fR
Return the number of items in the prioqueue\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: prioqueue\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
ordered list, prioqueue, priority queue
.SH CATEGORY
Data structures
.SH COPYRIGHT







|







341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
\fIprioqueueName\fR \fBsize\fR
Return the number of items in the prioqueue\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: prioqueue\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
ordered list, prioqueue, priority queue
.SH CATEGORY
Data structures
.SH COPYRIGHT

Changes to embedded/man/files/modules/struct/queue.n.

318
319
320
321
322
323
324
325
326
327
328
329
330
331
\fIqueueName\fR \fBsize\fR
Return the number of items in the queue\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: queue\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
graph, list, matrix, pool, prioqueue, record, set, skiplist, stack, tree
.SH CATEGORY
Data structures







|






318
319
320
321
322
323
324
325
326
327
328
329
330
331
\fIqueueName\fR \fBsize\fR
Return the number of items in the queue\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: queue\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
graph, list, matrix, pool, prioqueue, record, set, skiplist, stack, tree
.SH CATEGORY
Data structures

Changes to embedded/man/files/modules/struct/record.n.

601
602
603
604
605
606
607
608
609
610
611
612
613
614
615

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: record\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
data structures, record, struct
.SH CATEGORY
Data structures
.SH COPYRIGHT







|







601
602
603
604
605
606
607
608
609
610
611
612
613
614
615

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: record\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
data structures, record, struct
.SH CATEGORY
Data structures
.SH COPYRIGHT

Changes to embedded/man/files/modules/struct/skiplist.n.

312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
command \fIcmd\fR will be evaluated with the key and value of the
current node appended\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: skiplist\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
skiplist
.SH CATEGORY
Data structures
.SH COPYRIGHT







|







312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
command \fIcmd\fR will be evaluated with the key and value of the
current node appended\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: skiplist\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
skiplist
.SH CATEGORY
Data structures
.SH COPYRIGHT

Changes to embedded/man/files/modules/struct/stack.n.

341
342
343
344
345
346
347
348
349
350
351
352
353
354
\fIstackName\fR \fBsize\fR
Return the number of items on the stack\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: stack\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
graph, matrix, queue, tree
.SH CATEGORY
Data structures







|






341
342
343
344
345
346
347
348
349
350
351
352
353
354
\fIstackName\fR \fBsize\fR
Return the number of items on the stack\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: stack\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
graph, matrix, queue, tree
.SH CATEGORY
Data structures

Changes to embedded/man/files/modules/struct/struct_list.n.

954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
volume 4"\&. Available on the Web at the author's personal site:
\fIhttp://www-cs-faculty\&.stanford\&.edu/~knuth/fasc2b\&.ps\&.gz\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: list\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Fisher-Yates, assign, common, comparison, diff, differential, equal, equality, filter, first permutation, flatten, folding, full outer join, generate permutations, inner join, join, left outer join, list, longest common subsequence, map, next permutation, outer join, permutation, reduce, repeating, repetition, reshuffle, reverse, right outer join, shuffle, subsequence, swapping
.SH CATEGORY
Data structures
.SH COPYRIGHT







|







954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
volume 4"\&. Available on the Web at the author's personal site:
\fIhttp://www-cs-faculty\&.stanford\&.edu/~knuth/fasc2b\&.ps\&.gz\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: list\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Fisher-Yates, assign, common, comparison, diff, differential, equal, equality, filter, first permutation, flatten, folding, full outer join, generate permutations, inner join, join, left outer join, list, longest common subsequence, map, next permutation, outer join, permutation, reduce, repeating, repetition, reshuffle, reverse, right outer join, shuffle, subsequence, swapping
.SH CATEGORY
Data structures
.SH COPYRIGHT

Changes to embedded/man/files/modules/struct/struct_set.n.

364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
(\fBfalse\fR)\&.
.PP
.SH REFERENCES
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: set\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
cardinality, difference, emptiness, exclusion, inclusion, intersection, membership, set, symmetric difference, union
.SH CATEGORY
Data structures
.SH COPYRIGHT







|







364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
(\fBfalse\fR)\&.
.PP
.SH REFERENCES
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: set\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
cardinality, difference, emptiness, exclusion, inclusion, intersection, membership, set, symmetric difference, union
.SH CATEGORY
Data structures
.SH COPYRIGHT

Changes to embedded/man/files/modules/struct/struct_tree.n.

960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
    #                              as the result of the command\&.

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: tree\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
breadth-first, depth-first, in-order, node, post-order, pre-order, serialization, tree
.SH CATEGORY
Data structures
.SH COPYRIGHT







|







960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
    #                              as the result of the command\&.

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: tree\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
breadth-first, depth-first, in-order, node, post-order, pre-order, serialization, tree
.SH CATEGORY
Data structures
.SH COPYRIGHT

Changes to embedded/man/files/modules/struct/struct_tree1.n.

516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
second\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: tree\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
tree
.SH CATEGORY
Data structures
.SH COPYRIGHT







|







516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
second\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIstruct :: tree\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
tree
.SH CATEGORY
Data structures
.SH COPYRIGHT

Changes to embedded/man/files/modules/tar/tar.n.

410
411
412
413
414
415
416
417
418
419
420
421
422
423

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItar\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
archive, tape archive, tar
.SH CATEGORY
File formats







|






410
411
412
413
414
415
416
417
418
419
420
421
422
423

.CE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItar\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
archive, tape archive, tar
.SH CATEGORY
File formats

Changes to embedded/man/files/modules/tepam/tepam_introduction.n.

400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
\fBdisplay message\fR -category warning Hello
\fI  -> display message: Argument '-category' not known\fR
.CE
Argument types are automatically checked and an error message is generated in case the argument value has not the expected type:
.CS

\fBdisplay message\fR -fg MyColor "Hello"
\fI  -> display message: Argument 'fg' requires type 'color'\&. \\
            Provided value: 'MyColor'\fR
.CE
Selection choices have to be respected \&.\&.\&.
.CS

\fBdisplay message\fR -mtype Fatal Hello
\fI  -> display message: Argument (mtype) has to be one of the \\
            following elements: Info, Warning, Error\fR
.CE
\&.\&.\&. as well as valid value ranges:
.CS

\fBdisplay message\fR -level 12 Hello
\fI  -> display message: Argument (level) has to be between 1 and 10\fR
.CE







|
<





|
<







400
401
402
403
404
405
406
407

408
409
410
411
412
413

414
415
416
417
418
419
420
\fBdisplay message\fR -category warning Hello
\fI  -> display message: Argument '-category' not known\fR
.CE
Argument types are automatically checked and an error message is generated in case the argument value has not the expected type:
.CS

\fBdisplay message\fR -fg MyColor "Hello"
\fI  -> display message: Argument 'fg' requires type 'color'\&.  Provided value: 'MyColor'\fR

.CE
Selection choices have to be respected \&.\&.\&.
.CS

\fBdisplay message\fR -mtype Fatal Hello
\fI  -> display message: Argument (mtype) has to be one of the  following elements: Info, Warning, Error\fR

.CE
\&.\&.\&. as well as valid value ranges:
.CS

\fBdisplay message\fR -level 12 Hello
\fI  -> display message: Argument (level) has to be between 1 and 10\fR
.CE

Changes to embedded/man/files/modules/tepam/tepam_procedure.n.

469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
}
.CE
Each of the procedure arguments is declared with a list that has as first element the argument name, followed by eventual attributes\&. The argument definition syntax can be formalized in the following way:
.CS

tepam::procedure <name> {
   -args \fB{
      {<argument_name_1> <arg_attr_name_1a> <arg_attr_value_1a> \\
                         <arg_attr_name_1b> <arg_attr_value_1b> \&.\&.\&.}
      {<argument_name_2> <arg_attr_name_2a> <arg_attr_value_2a> \\
                         <arg_attr_name_2b> <arg_attr_value_2b> \&.\&.\&.}
      \&.\&.\&.
   }\fR
} <body>
.CE
The argument names and attributes have to be used in the following way:
.TP
Argument name (\fI<argument_name_<n>>\fR)







|
<
|
<







469
470
471
472
473
474
475
476

477

478
479
480
481
482
483
484
}
.CE
Each of the procedure arguments is declared with a list that has as first element the argument name, followed by eventual attributes\&. The argument definition syntax can be formalized in the following way:
.CS

tepam::procedure <name> {
   -args \fB{
      {<argument_name_1> <arg_attr_name_1a> <arg_attr_value_1a>  <arg_attr_name_1b> <arg_attr_value_1b> \&.\&.\&.}

      {<argument_name_2> <arg_attr_name_2a> <arg_attr_value_2a>  <arg_attr_name_2b> <arg_attr_value_2b> \&.\&.\&.}

      \&.\&.\&.
   }\fR
} <body>
.CE
The argument names and attributes have to be used in the following way:
.TP
Argument name (\fI<argument_name_<n>>\fR)

Changes to embedded/man/files/modules/term/ansi_cattr.n.

447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
\fB::term::ansi::code::attr::reset\fR
Reset all attributes to their default values\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIterm\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
ansi, attribute control, color control, control, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT







|







447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
\fB::term::ansi::code::attr::reset\fR
Reset all attributes to their default values\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIterm\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
ansi, attribute control, color control, control, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT

Changes to embedded/man/files/modules/term/ansi_cctrl.n.

738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
\fB::term::ansi::code::ctrl::showat\fR \fIrow\fR \fIcol\fR \fItext\fR
Format the block of text for display at the specified location\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIterm\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
ansi, attribute control, color control, control, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT







|







738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
\fB::term::ansi::code::ctrl::showat\fR \fIrow\fR \fIcol\fR \fItext\fR
Format the block of text for display at the specified location\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIterm\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
ansi, attribute control, color control, control, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT

Changes to embedded/man/files/modules/term/ansi_cmacros.n.

294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
frame made of box-graphics\&. The result is returned as the result of
the command\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIterm\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
ansi, control, frame, menu, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT







|







294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
frame made of box-graphics\&. The result is returned as the result of
the command\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIterm\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
ansi, control, frame, menu, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT

Changes to embedded/man/files/modules/term/ansi_code.n.

278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
This command defines a procedure \fIname\fR which returns the control
sequence \fIcode\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIterm\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
control, declare, define, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT







|







278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
This command defines a procedure \fIname\fR which returns the control
sequence \fIcode\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIterm\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
control, declare, define, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT

Changes to embedded/man/files/modules/term/ansi_ctrlu.n.

302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
This command queries the terminal connected to the standard input for
the number of rows (aka lines) available for display\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIterm\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
ansi, columns, control, cooked, input mode, lines, raw, rows, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT







|







302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
This command queries the terminal connected to the standard input for
the number of rows (aka lines) available for display\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIterm\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
ansi, columns, control, cooked, input mode, lines, raw, rows, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT

Changes to embedded/man/files/modules/term/ansi_send.n.

730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
\fB::term::ansi::send::showat\fR \fIrow\fR \fIcol\fR \fItext\fR
Show the block of text at the specified location\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIterm\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
character output, control, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT







|







730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
\fB::term::ansi::send::showat\fR \fIrow\fR \fIcol\fR \fItext\fR
Show the block of text at the specified location\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIterm\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
character output, control, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT

Changes to embedded/man/files/modules/term/imenu.n.

369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
Enter/Return
The interaction with the object is terminated\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIterm\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
control, menu, terminal, text display
.SH CATEGORY
Terminal control
.SH COPYRIGHT







|







369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
Enter/Return
The interaction with the object is terminated\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIterm\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
control, menu, terminal, text display
.SH CATEGORY
Terminal control
.SH COPYRIGHT

Changes to embedded/man/files/modules/term/ipager.n.

370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
Enter/Return
The interaction with the object is terminated\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIterm\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
control, pager, terminal, text display
.SH CATEGORY
Terminal control
.SH COPYRIGHT







|







370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
Enter/Return
The interaction with the object is terminated\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIterm\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
control, pager, terminal, text display
.SH CATEGORY
Terminal control
.SH COPYRIGHT

Changes to embedded/man/files/modules/term/receive.n.

298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
.sp
If not specified \fIchan\fR defaults to \fBstdin\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIterm\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
character input, control, get character, listener, receiver, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT







|







298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
.sp
If not specified \fIchan\fR defaults to \fBstdin\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIterm\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
character input, control, get character, listener, receiver, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT

Changes to embedded/man/files/modules/term/term.n.

253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
commands, in the vein of ncurses or similar packages\&. Currently nothing has
been implemented however\&. I\&.e\&. this package is empty\&. It can be loaded, yet
provides nothing\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIterm\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
control, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT







|







253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
commands, in the vein of ncurses or similar packages\&. Currently nothing has
been implemented however\&. I\&.e\&. this package is empty\&. It can be loaded, yet
provides nothing\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIterm\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
control, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT

Changes to embedded/man/files/modules/term/term_bind.n.

342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
.PP
In other words, the set of recognized strings has to form a
\fIprefix code\fR\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIterm\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
character input, control, dispatcher, listener, receiver, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT







|







342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
.PP
In other words, the set of recognized strings has to form a
\fIprefix code\fR\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIterm\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
character input, control, dispatcher, listener, receiver, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT

Changes to embedded/man/files/modules/term/term_send.n.

268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
This convenience command is like \fB::term::send::wrch\fR, except that the
destination channel is fixed to \fIstdout\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIterm\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
character output, control, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT







|







268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
This convenience command is like \fB::term::send::wrch\fR, except that the
destination channel is fixed to \fIstdout\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIterm\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
character output, control, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT

Changes to embedded/man/files/modules/textutil/adjust.n.

400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
Together with \fB::textutil::adjust::adjust\fR it is possible to
create properly wrapped paragraphs with arbitrary indentations\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItextutil\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
regexp(n), split(n), string(n)
.SH KEYWORDS
TeX, adjusting, formatting, hyphenation, indenting, justification, paragraph, string, undenting
.SH CATEGORY







|







400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
Together with \fB::textutil::adjust::adjust\fR it is possible to
create properly wrapped paragraphs with arbitrary indentations\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItextutil\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
regexp(n), split(n), string(n)
.SH KEYWORDS
TeX, adjusting, formatting, hyphenation, indenting, justification, paragraph, string, undenting
.SH CATEGORY

Changes to embedded/man/files/modules/textutil/expander.n.

703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
or \fBcname\fR\&.
.SH HISTORY
\fBexpander\fR was written by William H\&. Duquette; it is a repackaging
of the central algorithm of the expand macro processing tool\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItextutil :: expander\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
\fIhttp://www\&.wjduquette\&.com/expand\fR, regexp, split, string
.SH KEYWORDS
string, template processing, text expansion
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) William H\&. Duquette, http://www\&.wjduquette\&.com/expand







|
|



|







703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
or \fBcname\fR\&.
.SH HISTORY
\fBexpander\fR was written by William H\&. Duquette; it is a repackaging
of the central algorithm of the expand macro processing tool\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItextutil\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
[uri, http://www\&.wjduquette\&.com/expand, regexp, split, string
.SH KEYWORDS
string, template processing, text expansion
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) William H\&. Duquette, http://www\&.wjduquette\&.com/expand

Changes to embedded/man/files/modules/textutil/repeat.n.

271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
\fB::textutil::repeat::blank\fR \fInum\fR
A convenience command\&. Returns a string of \fInum\fR spaces\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItextutil\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
regexp(n), split(n), string(n)
.SH KEYWORDS
blanks, repetition, string
.SH CATEGORY







|







271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
\fB::textutil::repeat::blank\fR \fInum\fR
A convenience command\&. Returns a string of \fInum\fR spaces\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItextutil\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
regexp(n), split(n), string(n)
.SH KEYWORDS
blanks, repetition, string
.SH CATEGORY

Changes to embedded/man/files/modules/textutil/tabify.n.

296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
There is one asymmetry though: A tab can be replaced with a single
space, but not the other way around\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItextutil\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
regexp(n), split(n), string(n)
.SH KEYWORDS
formatting, string, tabstops
.SH CATEGORY







|







296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
There is one asymmetry though: A tab can be replaced with a single
space, but not the other way around\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItextutil\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
regexp(n), split(n), string(n)
.SH KEYWORDS
formatting, string, tabstops
.SH CATEGORY

Changes to embedded/man/files/modules/textutil/textutil.n.

587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
one string was specified, the string itself is returned, as it is its
own longest common prefix\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItextutil\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
regexp(n), split(n), string(n)
.SH KEYWORDS
TeX, formatting, hyphenation, indenting, paragraph, regular expression, string, trimming
.SH CATEGORY







|







587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
one string was specified, the string itself is returned, as it is its
own longest common prefix\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItextutil\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
regexp(n), split(n), string(n)
.SH KEYWORDS
TeX, formatting, hyphenation, indenting, paragraph, regular expression, string, trimming
.SH CATEGORY

Changes to embedded/man/files/modules/textutil/textutil_split.n.

278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
\fIstring\fR is split at every character, like \fBsplit\fR does\&.
The regular expression \fIregexp\fR defaults to "[\\\\t \\\\r\\\\n]+"\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItextutil\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
regexp(n), split(n), string(n)
.SH KEYWORDS
regular expression, split, string
.SH CATEGORY







|







278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
\fIstring\fR is split at every character, like \fBsplit\fR does\&.
The regular expression \fIregexp\fR defaults to "[\\\\t \\\\r\\\\n]+"\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItextutil\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
regexp(n), split(n), string(n)
.SH KEYWORDS
regular expression, split, string
.SH CATEGORY

Changes to embedded/man/files/modules/textutil/textutil_string.n.

293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
one string was specified, the string itself is returned, as it is its
own longest common prefix\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItextutil\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
regexp(n), split(n), string(n)
.SH KEYWORDS
capitalize, chop, common prefix, formatting, prefix, string, uncapitalize
.SH CATEGORY







|







293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
one string was specified, the string itself is returned, as it is its
own longest common prefix\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItextutil\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
regexp(n), split(n), string(n)
.SH KEYWORDS
capitalize, chop, common prefix, formatting, prefix, string, uncapitalize
.SH CATEGORY

Changes to embedded/man/files/modules/textutil/trim.n.

301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
at the beginning of the \fIstring\fR and removes it\&. The modified
string is returned as the result of the command\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItextutil\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
regexp(n), split(n), string(n)
.SH KEYWORDS
prefix, regular expression, string, trimming
.SH CATEGORY







|







301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
at the beginning of the \fIstring\fR and removes it\&. The modified
string is returned as the result of the command\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItextutil\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
regexp(n), split(n), string(n)
.SH KEYWORDS
prefix, regular expression, string, trimming
.SH CATEGORY

Changes to embedded/man/files/modules/tie/tie.n.

664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
        -----------             -----------

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItie\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
array, database, file, metakit, persistence, tie, untie
.SH CATEGORY
Programming tools
.SH COPYRIGHT







|







664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
        -----------             -----------

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItie\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
array, database, file, metakit, persistence, tie, untie
.SH CATEGORY
Programming tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/tie/tie_std.n.

264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
as described in section \fISTANDARD DATA SOURCE TYPES\fR of
\fBtie\fR's documentation\&.
.PP
They are automatically loaded and registered by \fBtie\fR when it
itself is requested, and as such there is no need to request them on
their own, although it is possible to do so\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the packages it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItie\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
array, database, file, metakit, persistence, tie, untie
.SH CATEGORY
Programming tools
.SH COPYRIGHT







|


|







264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
as described in section \fISTANDARD DATA SOURCE TYPES\fR of
\fBtie\fR's documentation\&.
.PP
They are automatically loaded and registered by \fBtie\fR when it
itself is requested, and as such there is no need to request them on
their own, although it is possible to do so\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItie\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
array, database, file, metakit, persistence, tie, untie
.SH CATEGORY
Programming tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/tiff/tiff.n.

440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
.IP [3]
Writing limited to uncompressed 8 bit rgb
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItiff\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
image, tif, tiff
.SH CATEGORY
File formats
.SH COPYRIGHT







|







440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
.IP [3]
Writing limited to uncompressed 8 bit rgb
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItiff\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
image, tif, tiff
.SH CATEGORY
File formats
.SH COPYRIGHT

Changes to embedded/man/files/modules/transfer/connect.n.

423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
    \&.\&.\&.

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItransfer\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
active, channel, connection, passive, secure, ssl, tls, transfer
.SH CATEGORY
Transfer module
.SH COPYRIGHT







|







423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
    \&.\&.\&.

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItransfer\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
active, channel, connection, passive, secure, ssl, tls, transfer
.SH CATEGORY
Transfer module
.SH COPYRIGHT

Changes to embedded/man/files/modules/transfer/copyops.n.

374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
output channel if not specified\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItransfer\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel, copy, transfer
.SH CATEGORY
Transfer module
.SH COPYRIGHT







|







374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
output channel if not specified\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItransfer\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel, copy, transfer
.SH CATEGORY
Transfer module
.SH COPYRIGHT

Changes to embedded/man/files/modules/transfer/ddest.n.

357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
the reception of the data\&. The callback is always invoked with one
additional argument, the number of bytes received so far\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItransfer\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel, copy, data destination, transfer
.SH CATEGORY
Transfer module
.SH COPYRIGHT







|







357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
the reception of the data\&. The callback is always invoked with one
additional argument, the number of bytes received so far\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItransfer\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel, copy, data destination, transfer
.SH CATEGORY
Transfer module
.SH COPYRIGHT

Changes to embedded/man/files/modules/transfer/dsource.n.

395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
of the transmission of the data\&. The callback is always invoked with
one additional argument, the number of bytes transmitted so far\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItransfer\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel, copy, data source, transfer
.SH CATEGORY
Transfer module
.SH COPYRIGHT







|







395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
of the transmission of the data\&. The callback is always invoked with
one additional argument, the number of bytes transmitted so far\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItransfer\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel, copy, data source, transfer
.SH CATEGORY
Transfer module
.SH COPYRIGHT

Changes to embedded/man/files/modules/transfer/receiver.n.

472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
    \&.\&.\&.

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItransfer\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel, copy, data destination, receiver, secure, ssl, tls, transfer
.SH CATEGORY
Transfer module
.SH COPYRIGHT







|







472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
    \&.\&.\&.

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItransfer\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel, copy, data destination, receiver, secure, ssl, tls, transfer
.SH CATEGORY
Transfer module
.SH COPYRIGHT

Changes to embedded/man/files/modules/transfer/tqueue.n.

380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
additional data structure which keeps track of outstanding results as
they may come back in a different order than the requests from the
client, and releases them to the actual queue in the proper order\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItransfer\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel, copy, queue, transfer
.SH CATEGORY
Transfer module
.SH COPYRIGHT







|







380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
additional data structure which keeps track of outstanding results as
they may come back in a different order than the requests from the
client, and releases them to the actual queue in the proper order\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItransfer\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel, copy, queue, transfer
.SH CATEGORY
Transfer module
.SH COPYRIGHT

Changes to embedded/man/files/modules/transfer/transmitter.n.

482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
    \&.\&.\&.

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItransfer\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel, copy, data source, secure, ssl, tls, transfer, transmitter
.SH CATEGORY
Transfer module
.SH COPYRIGHT







|







482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
    \&.\&.\&.

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItransfer\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel, copy, data source, secure, ssl, tls, transfer, transmitter
.SH CATEGORY
Transfer module
.SH COPYRIGHT

Changes to embedded/man/files/modules/treeql/treeql.n.

832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
\fITreeQL\fR [http://wiki\&.tcl\&.tk/treeql] on the Tcler's Wiki\&. Discuss
this package there\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItreeql\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Cost, DOM, TreeQL, XPath, XSLT, structured queries, tree, tree query language
.SH CATEGORY
Data structures
.SH COPYRIGHT







|







832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
\fITreeQL\fR [http://wiki\&.tcl\&.tk/treeql] on the Tcler's Wiki\&. Discuss
this package there\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItreeql\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Cost, DOM, TreeQL, XPath, XSLT, structured queries, tree, tree query language
.SH CATEGORY
Data structures
.SH COPYRIGHT

Changes to embedded/man/files/modules/try/tcllib_try.n.

346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
}

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItry\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
catch(n), error(n), return(n), throw(n)
.SH KEYWORDS
cleanup, error, exception, final, resource management
.SH CATEGORY







|







346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
}

.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fItry\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
catch(n), error(n), return(n), throw(n)
.SH KEYWORDS
cleanup, error, exception, final, resource management
.SH CATEGORY

Changes to embedded/man/files/modules/uev/uevent.n.

416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
.sp
The result of the command is the empty string\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIuevent\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
hook(n)
.SH KEYWORDS
bind, event, generate event, hook, unbind
.SH CATEGORY







|







416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
.sp
The result of the command is the empty string\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIuevent\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
hook(n)
.SH KEYWORDS
bind, event, generate event, hook, unbind
.SH CATEGORY

Changes to embedded/man/files/modules/uev/uevent_onidle.n.

285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
Examples of this type of deferal are buried in the (C-level)
implementations all the Tk widgets, defering geometry calculations and
window redraw activity in this manner\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIuevent\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
callback, deferal, event, idle, merge, on-idle
.SH COPYRIGHT
.nf
Copyright (c) 2008 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>







|







285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
Examples of this type of deferal are buried in the (C-level)
implementations all the Tk widgets, defering geometry calculations and
window redraw activity in this manner\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIuevent\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
callback, deferal, event, idle, merge, on-idle
.SH COPYRIGHT
.nf
Copyright (c) 2008 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>

Changes to embedded/man/files/modules/units/units.n.

592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
GNU Units program at \fIhttp://www\&.gnu\&.org/software/units/\fR
.SH AUTHORS
Robert W\&. Techentin
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIunits\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
angle, constants, conversion, distance, radians, unit
.SH COPYRIGHT
.nf
Copyright (c) 2000-2005 Mayo Foundation







|







592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
GNU Units program at \fIhttp://www\&.gnu\&.org/software/units/\fR
.SH AUTHORS
Robert W\&. Techentin
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIunits\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
angle, constants, conversion, distance, radians, unit
.SH COPYRIGHT
.nf
Copyright (c) 2000-2005 Mayo Foundation

Changes to embedded/man/files/modules/uri/uri.n.

391
392
393
394
395
396
397
398
399
400
401
402
403
404
Original code (regular expressions) by Andreas Kupries\&.
Modularisation by Steve Ball, also the split/join/resolve
functionality\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIuri\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
fetching information, file, ftp, gopher, http, ldap, mailto, news, prospero, rfc 2255, rfc 2396, uri, url, wais, www
.SH CATEGORY
Networking







|






391
392
393
394
395
396
397
398
399
400
401
402
403
404
Original code (regular expressions) by Andreas Kupries\&.
Modularisation by Steve Ball, also the split/join/resolve
functionality\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIuri\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
fetching information, file, ftp, gopher, http, ldap, mailto, news, prospero, rfc 2255, rfc 2396, uri, url, wais, www
.SH CATEGORY
Networking

Changes to embedded/man/files/modules/uri/urn-scheme.n.

270
271
272
273
274
275
276
277
278
279
280
281
282
283
takes an \fIurn\fR url, removes the quoting from all disallowed
characters, and returns the modified urls as its result\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIuri\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
rfc 2141, uri, url, urn
.SH CATEGORY
Networking







|






270
271
272
273
274
275
276
277
278
279
280
281
282
283
takes an \fIurn\fR url, removes the quoting from all disallowed
characters, and returns the modified urls as its result\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIuri\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
rfc 2141, uri, url, urn
.SH CATEGORY
Networking

Changes to embedded/man/files/modules/uuid/uuid.n.

281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
Paul J\&. Leach, "UUIDs and GUIDs", February 1998\&.
(\fIhttp://www\&.opengroup\&.org/dce/info/draft-leach-uuids-guids-01\&.txt\fR)
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIuuid\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
GUID, UUID
.SH CATEGORY
Hashes, checksums, and encryption
.SH COPYRIGHT







|







281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
Paul J\&. Leach, "UUIDs and GUIDs", February 1998\&.
(\fIhttp://www\&.opengroup\&.org/dce/info/draft-leach-uuids-guids-01\&.txt\fR)
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIuuid\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
GUID, UUID
.SH CATEGORY
Hashes, checksums, and encryption
.SH COPYRIGHT

Changes to embedded/man/files/modules/valtype/cc_amex.n.

326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
The input value does not start with the magic value(s) required for it
to be an AMEX creditcard number\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvaltype\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
AMEX, American Express, Checking, Testing, Type checking, Validation, Value checking, bank, card for credit, credit card, finance, isA
.SH CATEGORY
Validation, Type checking
.SH COPYRIGHT







|







326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
The input value does not start with the magic value(s) required for it
to be an AMEX creditcard number\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvaltype\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
AMEX, American Express, Checking, Testing, Type checking, Validation, Value checking, bank, card for credit, credit card, finance, isA
.SH CATEGORY
Validation, Type checking
.SH COPYRIGHT

Changes to embedded/man/files/modules/valtype/cc_discover.n.

326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
The input value does not start with the magic value(s) required for it
to be a Discover creditcard number\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvaltype\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Checking, Discover, Testing, Type checking, Validation, Value checking, bank, card for credit, credit card, finance, isA
.SH CATEGORY
Validation, Type checking
.SH COPYRIGHT







|







326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
The input value does not start with the magic value(s) required for it
to be a Discover creditcard number\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvaltype\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Checking, Discover, Testing, Type checking, Validation, Value checking, bank, card for credit, credit card, finance, isA
.SH CATEGORY
Validation, Type checking
.SH COPYRIGHT

Changes to embedded/man/files/modules/valtype/cc_mastercard.n.

326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
The input value does not start with the magic value(s) required for it
to be a Mastercard creditcard number\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvaltype\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Checking, MasterCard, Testing, Type checking, Validation, Value checking, bank, card for credit, credit card, finance, isA
.SH CATEGORY
Validation, Type checking
.SH COPYRIGHT







|







326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
The input value does not start with the magic value(s) required for it
to be a Mastercard creditcard number\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvaltype\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Checking, MasterCard, Testing, Type checking, Validation, Value checking, bank, card for credit, credit card, finance, isA
.SH CATEGORY
Validation, Type checking
.SH COPYRIGHT

Changes to embedded/man/files/modules/valtype/cc_visa.n.

326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
The input value does not start with the magic value(s) required for it
to be a VISA creditcard number\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvaltype\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Checking, Testing, Type checking, VISA, Validation, Value checking, bank, card for credit, credit card, finance, isA
.SH CATEGORY
Validation, Type checking
.SH COPYRIGHT







|







326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
The input value does not start with the magic value(s) required for it
to be a VISA creditcard number\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvaltype\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Checking, Testing, Type checking, VISA, Validation, Value checking, bank, card for credit, credit card, finance, isA
.SH CATEGORY
Validation, Type checking
.SH COPYRIGHT

Changes to embedded/man/files/modules/valtype/ean13.n.

320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
INVALID EAN13 LENGTH
The input value is of the wrong length to be an EAN13\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvaltype\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Checking, EAN, EAN13, European Article Number, International Article Number, Testing, Type checking, Validation, Value checking, isA
.SH CATEGORY
Validation, Type checking
.SH COPYRIGHT







|







320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
INVALID EAN13 LENGTH
The input value is of the wrong length to be an EAN13\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvaltype\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Checking, EAN, EAN13, European Article Number, International Article Number, Testing, Type checking, Validation, Value checking, isA
.SH CATEGORY
Validation, Type checking
.SH COPYRIGHT

Changes to embedded/man/files/modules/valtype/iban.n.

317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
data-entry error, with digits transposed, forgotten, etc\&. Of course,
th input may be an outright fake too\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvaltype\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Checking, IBAN, International Bank Account Number, Testing, Type checking, Validation, Value checking, bank, finance, isA
.SH CATEGORY
Validation, Type checking
.SH COPYRIGHT







|







317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
data-entry error, with digits transposed, forgotten, etc\&. Of course,
th input may be an outright fake too\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvaltype\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Checking, IBAN, International Bank Account Number, Testing, Type checking, Validation, Value checking, bank, finance, isA
.SH CATEGORY
Validation, Type checking
.SH COPYRIGHT

Changes to embedded/man/files/modules/valtype/imei.n.

322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
INVALID IMEI LENGTH
The input value is of the wrong length to be an IMEI\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvaltype\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Checking, IMEI, International Mobile Equipment Identity, Testing, Type checking, Validation, Value checking, cell-phone, isA, mobile phone, phone
.SH CATEGORY
Validation, Type checking
.SH COPYRIGHT







|







322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
INVALID IMEI LENGTH
The input value is of the wrong length to be an IMEI\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvaltype\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Checking, IMEI, International Mobile Equipment Identity, Testing, Type checking, Validation, Value checking, cell-phone, isA, mobile phone, phone
.SH CATEGORY
Validation, Type checking
.SH COPYRIGHT

Changes to embedded/man/files/modules/valtype/isbn.n.

329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
INVALID ISBN LENGTH
The input value is of the wrong length to be an ISBN\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvaltype\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Book Number, Checking, EAN, EAN13, European Article Number, ISBN, International Article Number, International Standard Book Number, Testing, Type checking, Validation, Value checking, isA
.SH CATEGORY
Validation, Type checking
.SH COPYRIGHT







|







329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
INVALID ISBN LENGTH
The input value is of the wrong length to be an ISBN\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvaltype\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Book Number, Checking, EAN, EAN13, European Article Number, ISBN, International Article Number, International Standard Book Number, Testing, Type checking, Validation, Value checking, isA
.SH CATEGORY
Validation, Type checking
.SH COPYRIGHT

Changes to embedded/man/files/modules/valtype/luhn.n.

317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
data-entry error, with digits transposed, forgotten, etc\&. Of course,
th input may be an outright fake too\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvaltype\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Checking, Testing, Type checking, Validation, Value checking, isA, luhn
.SH CATEGORY
Validation, Type checking
.SH COPYRIGHT







|







317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
data-entry error, with digits transposed, forgotten, etc\&. Of course,
th input may be an outright fake too\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvaltype\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Checking, Testing, Type checking, Validation, Value checking, isA, luhn
.SH CATEGORY
Validation, Type checking
.SH COPYRIGHT

Changes to embedded/man/files/modules/valtype/luhn5.n.

317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
data-entry error, with digits transposed, forgotten, etc\&. Of course,
th input may be an outright fake too\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvaltype\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Checking, Testing, Type checking, Validation, Value checking, isA, luhn, luhn-5
.SH CATEGORY
Validation, Type checking
.SH COPYRIGHT







|







317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
data-entry error, with digits transposed, forgotten, etc\&. Of course,
th input may be an outright fake too\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvaltype\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Checking, Testing, Type checking, Validation, Value checking, isA, luhn, luhn-5
.SH CATEGORY
Validation, Type checking
.SH COPYRIGHT

Changes to embedded/man/files/modules/valtype/usnpi.n.

322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
INVALID USNPI LENGTH
The input value is of the wrong length to be an USNPI\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvaltype\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Checking, NPI, National Provider Identifier, Testing, Type checking, US-NPI, Validation, Value checking, isA, medicare
.SH CATEGORY
Validation, Type checking
.SH COPYRIGHT







|







322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
INVALID USNPI LENGTH
The input value is of the wrong length to be an USNPI\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvaltype\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Checking, NPI, National Provider Identifier, Testing, Type checking, US-NPI, Validation, Value checking, isA, medicare
.SH CATEGORY
Validation, Type checking
.SH COPYRIGHT

Changes to embedded/man/files/modules/valtype/valtype_common.n.

330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
The input value does not start with the magic value(s) required for it
to be a \fB<>\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvaltype\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Checking, Testing, Type checking, Validation, Value checking, isA
.SH CATEGORY
Validation, Type checking
.SH COPYRIGHT







|







330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
The input value does not start with the magic value(s) required for it
to be a \fB<>\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvaltype\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Checking, Testing, Type checking, Validation, Value checking, isA
.SH CATEGORY
Validation, Type checking
.SH COPYRIGHT

Changes to embedded/man/files/modules/valtype/verhoeff.n.

317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
data-entry error, with digits transposed, forgotten, etc\&. Of course,
th input may be an outright fake too\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvaltype\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Checking, Testing, Type checking, Validation, Value checking, isA, verhoeff
.SH CATEGORY
Validation, Type checking
.SH COPYRIGHT







|







317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
data-entry error, with digits transposed, forgotten, etc\&. Of course,
th input may be an outright fake too\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvaltype\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Checking, Testing, Type checking, Validation, Value checking, isA, verhoeff
.SH CATEGORY
Validation, Type checking
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_base/cat.n.

277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
This command creates the concatenation channel using all the provided
channels, and returns its handle\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
concatenation channel, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT







|







277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
This command creates the concatenation channel using all the provided
channels, and returns its handle\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
concatenation channel, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_base/facade.n.

301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
This command creates the facade channel around the provided
channel \fIchan\fR, and returns its handle\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
concatenation channel, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT







|







301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
This command creates the facade channel around the provided
channel \fIchan\fR, and returns its handle\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
concatenation channel, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_base/halfpipe.n.

303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
This callback is invoked when the channel has run out of data to read\&.
A single argument is supplied, the handle of the channel\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
callbacks, fifo, in-memory channel, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT







|







303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
This callback is invoked when the channel has run out of data to read\&.
A single argument is supplied, the handle of the channel\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
callbacks, fifo, in-memory channel, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_base/nullzero.n.

271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
\fB::tcl::chan::nullzero\fR
This command creates a new nullzero channel and returns its handle\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
/dev/null, /dev/zero, null, reflected channel, tip 219, virtual channel, zero
.SH CATEGORY
Channels
.SH COPYRIGHT







|







271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
\fB::tcl::chan::nullzero\fR
This command creates a new nullzero channel and returns its handle\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
/dev/null, /dev/zero, null, reflected channel, tip 219, virtual channel, zero
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_base/randseed.n.

269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
by XORing them elementwise, modulo 256\&. If the lists are not of equial
length the shorter of the two is padded with 0s before merging\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
/dev/random, merge, random, reflected channel, seed, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT







|







269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
by XORing them elementwise, modulo 256\&. If the lists are not of equial
length the shorter of the two is padded with 0s before merging\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
/dev/random, merge, random, reflected channel, seed, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_base/std.n.

271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
The channel is created only once, on the first call, and all
future calls simply return this handle\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
reflected channel, standard io, stdin, stdout, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT







|







271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
The channel is created only once, on the first call, and all
future calls simply return this handle\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
reflected channel, standard io, stdin, stdout, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_base/tcllib_fifo.n.

271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
\fB::tcl::chan::fifo\fR
This command creates a new fifo channel and returns its handle\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
fifo, in-memory channel, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT







|







271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
\fB::tcl::chan::fifo\fR
This command creates a new fifo channel and returns its handle\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
fifo, in-memory channel, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_base/tcllib_fifo2.n.

277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
This command creates a new connected pair of fifo channels and returns
their handles, as a list containing two elements\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
connected fifos, fifo, in-memory channel, inter-thread communication, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT







|







277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
This command creates a new connected pair of fifo channels and returns
their handles, as a list containing two elements\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
connected fifos, fifo, in-memory channel, inter-thread communication, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_base/tcllib_memchan.n.

274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
\fB::tcl::chan::memchan\fR
This command creates a new memchan channel and returns its handle\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
in-memory channel, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT







|







274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
\fB::tcl::chan::memchan\fR
This command creates a new memchan channel and returns its handle\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
in-memory channel, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_base/tcllib_null.n.

274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
\fB::tcl::chan::null\fR
This command creates a new null channel and returns its handle\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
/dev/null, null, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT







|







274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
\fB::tcl::chan::null\fR
This command creates a new null channel and returns its handle\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
/dev/null, null, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_base/tcllib_random.n.

274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
The seed is a list of integer numbers used to initialize the
internal feedback shift register of the generator\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
/dev/random, random, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT







|







274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
The seed is a list of integer numbers used to initialize the
internal feedback shift register of the generator\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
/dev/random, random, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_base/tcllib_string.n.

274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
This command creates a new string channel and returns its handle\&. The
channel provides random read-only access to the \fIcontent\fR string\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
in-memory channel, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT







|







274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
This command creates a new string channel and returns its handle\&. The
channel provides random read-only access to the \fIcontent\fR string\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
in-memory channel, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_base/tcllib_variable.n.

275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
The content of the channel is stored in the associated namespace
variable \fIvarname\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
in-memory channel, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT







|







275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
The content of the channel is stored in the associated namespace
variable \fIvarname\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
in-memory channel, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_base/tcllib_zero.n.

274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
\fB::tcl::chan::zero\fR
This command creates a new zero channel and returns its handle\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
/dev/zero, reflected channel, tip 219, virtual channel, zero
.SH CATEGORY
Channels
.SH COPYRIGHT







|







274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
\fB::tcl::chan::zero\fR
This command creates a new zero channel and returns its handle\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
/dev/zero, reflected channel, tip 219, virtual channel, zero
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_base/textwindow.n.

268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
This command creates a new textwindow channel and returns its handle\&.
Data written to this channel will appear in the associated \fIwidget\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Tk, reflected channel, text widget, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT







|







268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
This command creates a new textwindow channel and returns its handle\&.
Data written to this channel will appear in the associated \fIwidget\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
Tk, reflected channel, text widget, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_core/core.n.

300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
from within a call of \fBfinalize\fR this does not happen, under
the assumption that the channel is being destroyed by Tcl\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT







|







300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
from within a call of \fBfinalize\fR this does not happen, under
the assumption that the channel is being destroyed by Tcl\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_core/events.n.

309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
able to determine which events it should (not) generate and act
accordingly\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
event management, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT







|







309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
able to determine which events it should (not) generate and act
accordingly\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
event management, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_core/transformcore.n.

300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
from within a call of \fBfinalize\fR this does not happen, under
the assumption that the channel and transform are being destroyed by Tcl\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT







|







300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
from within a call of \fBfinalize\fR this does not happen, under
the assumption that the channel and transform are being destroyed by Tcl\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_transform/adler32.n.

294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
write direction is not saved\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
adler32, channel transformation, checksum, reflected channel, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT







|







294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
write direction is not saved\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
adler32, channel transformation, checksum, reflected channel, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_transform/base64.n.

270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
This command creates a base64 transformation on top of the channel
\fIchan\fR and returns its handle\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
base64, channel transformation, reflected channel, tip 230, tip 317, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT







|







270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
This command creates a base64 transformation on top of the channel
\fIchan\fR and returns its handle\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
base64, channel transformation, reflected channel, tip 230, tip 317, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_transform/counter.n.

293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
write direction is not saved\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel transformation, counter, reflected channel, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT







|







293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
write direction is not saved\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel transformation, counter, reflected channel, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_transform/crc32.n.

294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
write direction is not saved\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel transformation, checksum, crc32, reflected channel, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT







|







294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
write direction is not saved\&.
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel transformation, checksum, crc32, reflected channel, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_transform/hex.n.

270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
This command creates a hex transformation on top of the channel
\fIchan\fR and returns its handle\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel transformation, hexadecimal, reflected channel, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT







|







270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
This command creates a hex transformation on top of the channel
\fIchan\fR and returns its handle\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel transformation, hexadecimal, reflected channel, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_transform/identity.n.

277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
This command creates an identity transformation on top of the channel
\fIchan\fR and returns its handle\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel transformation, identity, reflected channel, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT







|







277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
This command creates an identity transformation on top of the channel
\fIchan\fR and returns its handle\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel transformation, identity, reflected channel, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_transform/limitsize.n.

272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
channel before EOF is signaled by the transformation\&. Note that
popping the transformation clears the EOF it generated as well\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel transformation, limitsize, reflected channel, size limit, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT







|







272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
channel before EOF is signaled by the transformation\&. Note that
popping the transformation clears the EOF it generated as well\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel transformation, limitsize, reflected channel, size limit, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_transform/observe.n.

276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
\fIchan\fR and returns its handle\&. The channel handles \fIlogr\fR and
\fIlogw\fR are there the data is copied to\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel transformation, observer, reflected channel, stream copy, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT







|







276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
\fIchan\fR and returns its handle\&. The channel handles \fIlogr\fR and
\fIlogw\fR are there the data is copied to\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel transformation, observer, reflected channel, stream copy, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_transform/otp.n.

275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
contents are reads and xored with the bytes written to and read from
the channel\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel transformation, cipher, decryption, encryption, one time pad, otp, reflected channel, tip 230, transformation, virtual channel, xor
.SH CATEGORY
Channels
.SH COPYRIGHT







|







275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
contents are reads and xored with the bytes written to and read from
the channel\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel transformation, cipher, decryption, encryption, one time pad, otp, reflected channel, tip 230, transformation, virtual channel, xor
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_transform/rot.n.

279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
characters, i\&.e\&. "A\&.\&.\&.Z" and "a\&.\&.\&.z"\&. All other bytes are passed
through unchanged\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
caesar cipher, channel transformation, cipher, decryption, encryption, reflected channel, rot, rot13, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT







|







279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
characters, i\&.e\&. "A\&.\&.\&.Z" and "a\&.\&.\&.z"\&. All other bytes are passed
through unchanged\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
caesar cipher, channel transformation, cipher, decryption, encryption, reflected channel, rot, rot13, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_transform/spacer.n.

272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
reverse, removing the spacing\&. If \fIspace\fR is not specified it
defaults to a single space character (ASCII 32)\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel transformation, reflected channel, spacing, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT







|







272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
reverse, removing the spacing\&. If \fIspace\fR is not specified it
defaults to a single space character (ASCII 32)\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel transformation, reflected channel, spacing, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/virtchannel_transform/tcllib_zlib.n.

270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
The \fIlevel\fR specifies how much effort is put into the
compression, from \fB0\fR to \fB9\fR, and defaults to \fB4\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel transformation, compression, decompression, reflected channel, tip 230, tip 234, transformation, virtual channel, zlib
.SH CATEGORY
Channels
.SH COPYRIGHT







|







270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
The \fIlevel\fR specifies how much effort is put into the
compression, from \fB0\fR to \fB9\fR, and defaults to \fB4\fR\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIvirtchannel\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
channel transformation, compression, decompression, reflected channel, tip 230, tip 234, transformation, virtual channel, zlib
.SH CATEGORY
Channels
.SH COPYRIGHT

Changes to embedded/man/files/modules/wip/wip.n.

590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
.PP
.SH EXAMPLES
No examples yet\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIwip\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
interpreter, list, word
.SH CATEGORY
Programming tools
.SH COPYRIGHT







|







590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
.PP
.SH EXAMPLES
No examples yet\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIwip\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH KEYWORDS
interpreter, list, word
.SH CATEGORY
Programming tools
.SH COPYRIGHT

Changes to embedded/man/files/modules/yaml/huddle.n.

810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
.SH LIMITATIONS
.PP
now printing\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIhuddle\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
yaml
.SH KEYWORDS
data exchange, exchange format, huddle, json, parsing, text processing, yaml
.SH COPYRIGHT







|







810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
.SH LIMITATIONS
.PP
now printing\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIhuddle\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
yaml
.SH KEYWORDS
data exchange, exchange format, huddle, json, parsing, text processing, yaml
.SH COPYRIGHT

Changes to embedded/man/files/modules/yaml/yaml.n.

422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
Too many braces, or too few braces\&.
.PP
Not enough character set of line feeds\&. Please use only "\\n" as line breaks\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIyaml\fR of the
\fITcllib SF Trackers\fR [http://sourceforge\&.net/tracker/?group_id=12883]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
base64, huddle, json
.SH KEYWORDS
data exchange, huddle, parsing, text processing, yaml
.SH COPYRIGHT







|







422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
Too many braces, or too few braces\&.
.PP
Not enough character set of line feeds\&. Please use only "\\n" as line breaks\&.
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIyaml\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
package and/or documentation\&.
.SH "SEE ALSO"
base64, huddle, json
.SH KEYWORDS
data exchange, huddle, parsing, text processing, yaml
.SH COPYRIGHT

Changes to embedded/www/index.html.

24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key649"> .ddt </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/docstrip/docstrip_util.html"> docstrip_util </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key413"> .dtx </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/docstrip/docstrip.html"> docstrip </a> &#183; <a href="tcllib/files/apps/tcldocstrip.html"> tcldocstrip </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c2">Keywords: /</a>
</th></tr>
<tr class="#idxeven" valign=top>







|







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key649"> .ddt </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/docstrip/docstrip_util.html"> docstrip_util </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key414"> .dtx </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/docstrip/docstrip.html"> docstrip </a> &#183; <a href="tcllib/files/apps/tcldocstrip.html"> tcldocstrip </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c2">Keywords: /</a>
</th></tr>
<tr class="#idxeven" valign=top>
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key305"> acceptor </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_fa/dacceptor.html"> grammar::fa::dacceptor </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key592"> active </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/transfer/connect.html"> transfer::connect </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key234"> adaptors </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/snit/snit.html"> snit </a> &#183; <a href="tcllib/files/modules/snit/snitfaq.html"> snitfaq </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key444"> adjacency list </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key468"> adjacency matrix </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key461"> adjacent </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graph.html"> struct::graph </a> &#183; <a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key327"> adjusting </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/textutil/adjust.html"> textutil::adjust </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key651"> adler32 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/adler32.html"> tcl::transform::adler32 </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key777"> aes </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/aes/aes.html"> aes </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key392"> after </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/coroutine/tcllib_coroutine.html"> coroutine </a> &#183; <a href="tcllib/files/modules/coroutine/coro_auto.html"> coroutine::auto </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key756"> alias </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/interp/tcllib_interp.html"> interp </a>







|




|



















|














|







73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key305"> acceptor </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_fa/dacceptor.html"> grammar::fa::dacceptor </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key593"> active </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/transfer/connect.html"> transfer::connect </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key236"> adaptors </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/snit/snit.html"> snit </a> &#183; <a href="tcllib/files/modules/snit/snitfaq.html"> snitfaq </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key444"> adjacency list </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key468"> adjacency matrix </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key461"> adjacent </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graph.html"> struct::graph </a> &#183; <a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key328"> adjusting </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/textutil/adjust.html"> textutil::adjust </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key651"> adler32 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/adler32.html"> tcl::transform::adler32 </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key777"> aes </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/aes/aes.html"> aes </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key391"> after </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/coroutine/tcllib_coroutine.html"> coroutine </a> &#183; <a href="tcllib/files/modules/coroutine/coro_auto.html"> coroutine::auto </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key756"> alias </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/interp/tcllib_interp.html"> interp </a>
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key716"> archive </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/tar/tar.html"> tar </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key738"> argument integrity </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/tepam/tepam_introduction.html"> tepam </a> &#183; <a href="tcllib/files/modules/tepam/tepam_procedure.html"> tepam::procedure </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key251"> argument processing </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/cmdline/cmdline.html"> cmdline </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key739"> argument validation </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/tepam/tepam_introduction.html"> tepam </a> &#183; <a href="tcllib/files/modules/tepam/tepam_procedure.html"> tepam::procedure </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key740"> arguments </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/tepam/tepam_introduction.html"> tepam </a> &#183; <a href="tcllib/files/modules/tepam/tepam_procedure.html"> tepam::procedure </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key250"> argv </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/cmdline/cmdline.html"> cmdline </a>







|














|







188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key716"> archive </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/tar/tar.html"> tar </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key740"> argument integrity </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/tepam/tepam_introduction.html"> tepam </a> &#183; <a href="tcllib/files/modules/tepam/tepam_procedure.html"> tepam::procedure </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key251"> argument processing </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/cmdline/cmdline.html"> cmdline </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key739"> argument validation </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/tepam/tepam_introduction.html"> tepam </a> &#183; <a href="tcllib/files/modules/tepam/tepam_procedure.html"> tepam::procedure </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key738"> arguments </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/tepam/tepam_introduction.html"> tepam </a> &#183; <a href="tcllib/files/modules/tepam/tepam_procedure.html"> tepam::procedure </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key250"> argv </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/cmdline/cmdline.html"> cmdline </a>
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key668"> Bessel functions </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/special.html"> math::special </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key442"> bfs </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key405"> bibliography </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bibtex/bibtex.html"> bibtex </a>







|







346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key668"> Bessel functions </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/special.html"> math::special </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key441"> bfs </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key405"> bibliography </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bibtex/bibtex.html"> bibtex </a>
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key695"> bind </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uev/uevent.html"> uevent </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key472"> bipartite </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key367"> BitTorrent </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bee/bee.html"> bee </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key368"> bittorrent </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bee/bee.html"> bee </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key270"> blanks </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/textutil/repeat.html"> textutil::repeat </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key633"> block cipher </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/aes/aes.html"> aes </a> &#183; <a href="tcllib/files/modules/blowfish/blowfish.html"> blowfish </a> &#183; <a href="tcllib/files/modules/des/des.html"> des </a>







|




|




|




|







371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key695"> bind </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uev/uevent.html"> uevent </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key471"> bipartite </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key368"> BitTorrent </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bee/bee.html"> bee </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key367"> bittorrent </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bee/bee.html"> bee </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key272"> blanks </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/textutil/repeat.html"> textutil::repeat </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key633"> block cipher </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/aes/aes.html"> aes </a> &#183; <a href="tcllib/files/modules/blowfish/blowfish.html"> blowfish </a> &#183; <a href="tcllib/files/modules/des/des.html"> des </a>
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key346"> Book Number </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/valtype/isbn.html"> valtype::isbn </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key684"> breadth-first </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_tree.html"> struct::tree </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key443"> bridge </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>







|







411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key346"> Book Number </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/valtype/isbn.html"> valtype::isbn </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key685"> breadth-first </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_tree.html"> struct::tree </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key443"> bridge </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key501"> C </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2idx/msgcat_c.html"> doctools::msgcat::idx::c </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_c.html"> doctools::msgcat::toc::c </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key230"> C++ </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/snit/snit.html"> snit </a> &#183; <a href="tcllib/files/modules/snit/snitfaq.html"> snitfaq </a> &#183; <a href="tcllib/files/modules/stooop/stooop.html"> stooop </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key361"> cache </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/cache/async.html"> cache::async </a> &#183; <a href="tcllib/files/modules/map/map_slippy_cache.html"> map::slippy::cache </a>







|







434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key501"> C </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2idx/msgcat_c.html"> doctools::msgcat::idx::c </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_c.html"> doctools::msgcat::toc::c </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key231"> C++ </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/snit/snit.html"> snit </a> &#183; <a href="tcllib/files/modules/snit/snitfaq.html"> snitfaq </a> &#183; <a href="tcllib/files/modules/stooop/stooop.html"> stooop </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key361"> cache </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/cache/async.html"> cache::async </a> &#183; <a href="tcllib/files/modules/map/map_slippy_cache.html"> map::slippy::cache </a>
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key258"> card for credit </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/valtype/cc_amex.html"> valtype::creditcard::amex </a> &#183; <a href="tcllib/files/modules/valtype/cc_discover.html"> valtype::creditcard::discover </a> &#183; <a href="tcllib/files/modules/valtype/cc_mastercard.html"> valtype::creditcard::mastercard </a> &#183; <a href="tcllib/files/modules/valtype/cc_visa.html"> valtype::creditcard::visa </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key708"> cardinality </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_set.html"> struct::set </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key291"> cat </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/fileutil/fileutil.html"> fileutil </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key48"> catalog package </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2base/tcllib_msgcat.html"> doctools::msgcat </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_c.html"> doctools::msgcat::idx::c </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_de.html"> doctools::msgcat::idx::de </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_en.html"> doctools::msgcat::idx::en </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_fr.html"> doctools::msgcat::idx::fr </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_c.html"> doctools::msgcat::toc::c </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_de.html"> doctools::msgcat::toc::de </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_en.html"> doctools::msgcat::toc::en </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_fr.html"> doctools::msgcat::toc::fr </a>







|




|







474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key258"> card for credit </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/valtype/cc_amex.html"> valtype::creditcard::amex </a> &#183; <a href="tcllib/files/modules/valtype/cc_discover.html"> valtype::creditcard::discover </a> &#183; <a href="tcllib/files/modules/valtype/cc_mastercard.html"> valtype::creditcard::mastercard </a> &#183; <a href="tcllib/files/modules/valtype/cc_visa.html"> valtype::creditcard::visa </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key711"> cardinality </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_set.html"> struct::set </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key292"> cat </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/fileutil/fileutil.html"> fileutil </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key48"> catalog package </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2base/tcllib_msgcat.html"> doctools::msgcat </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_c.html"> doctools::msgcat::idx::c </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_de.html"> doctools::msgcat::idx::de </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_en.html"> doctools::msgcat::idx::en </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_fr.html"> doctools::msgcat::idx::fr </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_c.html"> doctools::msgcat::toc::c </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_de.html"> doctools::msgcat::toc::de </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_en.html"> doctools::msgcat::toc::en </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_fr.html"> doctools::msgcat::toc::fr </a>
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key429"> changelog </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/changelog.html"> doctools::changelog </a> &#183; <a href="tcllib/files/modules/doctools/cvs.html"> doctools::cvs </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key82"> channel </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/coroutine/tcllib_coroutine.html"> coroutine </a> &#183; <a href="tcllib/files/modules/coroutine/coro_auto.html"> coroutine::auto </a> &#183; <a href="tcllib/files/modules/transfer/connect.html"> transfer::connect </a> &#183; <a href="tcllib/files/modules/transfer/copyops.html"> transfer::copy </a> &#183; <a href="tcllib/files/modules/transfer/tqueue.html"> transfer::copy::queue </a> &#183; <a href="tcllib/files/modules/transfer/ddest.html"> transfer::data::destination </a> &#183; <a href="tcllib/files/modules/transfer/dsource.html"> transfer::data::source </a> &#183; <a href="tcllib/files/modules/transfer/receiver.html"> transfer::receiver </a> &#183; <a href="tcllib/files/modules/transfer/transmitter.html"> transfer::transmitter </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key297"> channel transformation </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/adler32.html"> tcl::transform::adler32 </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/base64.html"> tcl::transform::base64 </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/counter.html"> tcl::transform::counter </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/crc32.html"> tcl::transform::crc32 </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/hex.html"> tcl::transform::hex </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/identity.html"> tcl::transform::identity </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/limitsize.html"> tcl::transform::limitsize </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/observe.html"> tcl::transform::observe </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/otp.html"> tcl::transform::otp </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/rot.html"> tcl::transform::rot </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/spacer.html"> tcl::transform::spacer </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/tcllib_zlib.html"> tcl::transform::zlib </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key107"> character input </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/receive.html"> term::receive </a> &#183; <a href="tcllib/files/modules/term/term_bind.html"> term::receive::bind </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key404"> character output </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/ansi_send.html"> term::ansi::send </a> &#183; <a href="tcllib/files/modules/term/term_send.html"> term::send </a>







|




|




|







529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key429"> changelog </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/changelog.html"> doctools::changelog </a> &#183; <a href="tcllib/files/modules/doctools/cvs.html"> doctools::cvs </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key83"> channel </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/coroutine/tcllib_coroutine.html"> coroutine </a> &#183; <a href="tcllib/files/modules/coroutine/coro_auto.html"> coroutine::auto </a> &#183; <a href="tcllib/files/modules/transfer/connect.html"> transfer::connect </a> &#183; <a href="tcllib/files/modules/transfer/copyops.html"> transfer::copy </a> &#183; <a href="tcllib/files/modules/transfer/tqueue.html"> transfer::copy::queue </a> &#183; <a href="tcllib/files/modules/transfer/ddest.html"> transfer::data::destination </a> &#183; <a href="tcllib/files/modules/transfer/dsource.html"> transfer::data::source </a> &#183; <a href="tcllib/files/modules/transfer/receiver.html"> transfer::receiver </a> &#183; <a href="tcllib/files/modules/transfer/transmitter.html"> transfer::transmitter </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key298"> channel transformation </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/adler32.html"> tcl::transform::adler32 </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/base64.html"> tcl::transform::base64 </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/counter.html"> tcl::transform::counter </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/crc32.html"> tcl::transform::crc32 </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/hex.html"> tcl::transform::hex </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/identity.html"> tcl::transform::identity </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/limitsize.html"> tcl::transform::limitsize </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/observe.html"> tcl::transform::observe </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/otp.html"> tcl::transform::otp </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/rot.html"> tcl::transform::rot </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/spacer.html"> tcl::transform::spacer </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/tcllib_zlib.html"> tcl::transform::zlib </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key108"> character input </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/receive.html"> term::receive </a> &#183; <a href="tcllib/files/modules/term/term_bind.html"> term::receive::bind </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key404"> character output </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/ansi_send.html"> term::ansi::send </a> &#183; <a href="tcllib/files/modules/term/term_send.html"> term::send </a>
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key73"> Checking </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/valtype/valtype_common.html"> valtype::common </a> &#183; <a href="tcllib/files/modules/valtype/cc_amex.html"> valtype::creditcard::amex </a> &#183; <a href="tcllib/files/modules/valtype/cc_discover.html"> valtype::creditcard::discover </a> &#183; <a href="tcllib/files/modules/valtype/cc_mastercard.html"> valtype::creditcard::mastercard </a> &#183; <a href="tcllib/files/modules/valtype/cc_visa.html"> valtype::creditcard::visa </a> &#183; <a href="tcllib/files/modules/valtype/ean13.html"> valtype::gs1::ean13 </a> &#183; <a href="tcllib/files/modules/valtype/iban.html"> valtype::iban </a> &#183; <a href="tcllib/files/modules/valtype/imei.html"> valtype::imei </a> &#183; <a href="tcllib/files/modules/valtype/isbn.html"> valtype::isbn </a> &#183; <a href="tcllib/files/modules/valtype/luhn.html"> valtype::luhn </a> &#183; <a href="tcllib/files/modules/valtype/luhn5.html"> valtype::luhn5 </a> &#183; <a href="tcllib/files/modules/valtype/usnpi.html"> valtype::usnpi </a> &#183; <a href="tcllib/files/modules/valtype/verhoeff.html"> valtype::verhoeff </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key157"> checksum </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/crc/cksum.html"> cksum </a> &#183; <a href="tcllib/files/modules/crc/crc16.html"> crc16 </a> &#183; <a href="tcllib/files/modules/crc/crc32.html"> crc32 </a> &#183; <a href="tcllib/files/modules/crc/sum.html"> sum </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/adler32.html"> tcl::transform::adler32 </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/crc32.html"> tcl::transform::crc32 </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key670"> chop </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/textutil/textutil_string.html"> textutil::string </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key179"> cipher </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/pki/pki.html"> pki </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/otp.html"> tcl::transform::otp </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/rot.html"> tcl::transform::rot </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key158"> cksum </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/crc/cksum.html"> cksum </a> &#183; <a href="tcllib/files/modules/crc/crc16.html"> crc16 </a> &#183; <a href="tcllib/files/modules/crc/crc32.html"> crc32 </a> &#183; <a href="tcllib/files/modules/crc/sum.html"> sum </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key236"> class </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/snit/snit.html"> snit </a> &#183; <a href="tcllib/files/modules/snit/snitfaq.html"> snitfaq </a> &#183; <a href="tcllib/files/modules/stooop/stooop.html"> stooop </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key750"> class methods </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ooutil/ooutil.html"> oo::util </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key752"> class variables </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ooutil/ooutil.html"> oo::util </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key168"> cleanup </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/try/tcllib_try.html"> try </a>







|




|









|




|









|







569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key73"> Checking </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/valtype/valtype_common.html"> valtype::common </a> &#183; <a href="tcllib/files/modules/valtype/cc_amex.html"> valtype::creditcard::amex </a> &#183; <a href="tcllib/files/modules/valtype/cc_discover.html"> valtype::creditcard::discover </a> &#183; <a href="tcllib/files/modules/valtype/cc_mastercard.html"> valtype::creditcard::mastercard </a> &#183; <a href="tcllib/files/modules/valtype/cc_visa.html"> valtype::creditcard::visa </a> &#183; <a href="tcllib/files/modules/valtype/ean13.html"> valtype::gs1::ean13 </a> &#183; <a href="tcllib/files/modules/valtype/iban.html"> valtype::iban </a> &#183; <a href="tcllib/files/modules/valtype/imei.html"> valtype::imei </a> &#183; <a href="tcllib/files/modules/valtype/isbn.html"> valtype::isbn </a> &#183; <a href="tcllib/files/modules/valtype/luhn.html"> valtype::luhn </a> &#183; <a href="tcllib/files/modules/valtype/luhn5.html"> valtype::luhn5 </a> &#183; <a href="tcllib/files/modules/valtype/usnpi.html"> valtype::usnpi </a> &#183; <a href="tcllib/files/modules/valtype/verhoeff.html"> valtype::verhoeff </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key158"> checksum </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/crc/cksum.html"> cksum </a> &#183; <a href="tcllib/files/modules/crc/crc16.html"> crc16 </a> &#183; <a href="tcllib/files/modules/crc/crc32.html"> crc32 </a> &#183; <a href="tcllib/files/modules/crc/sum.html"> sum </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/adler32.html"> tcl::transform::adler32 </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/crc32.html"> tcl::transform::crc32 </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key671"> chop </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/textutil/textutil_string.html"> textutil::string </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key179"> cipher </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/pki/pki.html"> pki </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/otp.html"> tcl::transform::otp </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/rot.html"> tcl::transform::rot </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key157"> cksum </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/crc/cksum.html"> cksum </a> &#183; <a href="tcllib/files/modules/crc/crc16.html"> crc16 </a> &#183; <a href="tcllib/files/modules/crc/crc32.html"> crc32 </a> &#183; <a href="tcllib/files/modules/crc/sum.html"> sum </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key234"> class </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/snit/snit.html"> snit </a> &#183; <a href="tcllib/files/modules/snit/snitfaq.html"> snitfaq </a> &#183; <a href="tcllib/files/modules/stooop/stooop.html"> stooop </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key750"> class methods </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ooutil/ooutil.html"> oo::util </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key753"> class variables </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ooutil/ooutil.html"> oo::util </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key168"> cleanup </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/try/tcllib_try.html"> try </a>
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key173"> color control </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/ansi_cattr.html"> term::ansi::code::attr </a> &#183; <a href="tcllib/files/modules/term/ansi_cctrl.html"> term::ansi::code::ctrl </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key482"> columns </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/ansi_ctrlu.html"> term::ansi::ctrl::unix </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key31"> comm </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/comm/comm.html"> comm </a> &#183; <a href="tcllib/files/modules/comm/comm_wire.html"> comm_wire </a> &#183; <a href="tcllib/files/modules/interp/deleg_method.html"> deleg_method </a> &#183; <a href="tcllib/files/modules/interp/deleg_proc.html"> deleg_proc </a> &#183; <a href="tcllib/files/modules/nns/nns_protocol.html"> nameserv::protocol </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key256"> command </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2base/tcl_parse.html"> doctools::tcl::parse </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key248"> command line processing </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/cmdline/cmdline.html"> cmdline </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key572"> command prefix </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/lambda/lambda.html"> lambda </a> &#183; <a href="tcllib/files/modules/ooutil/ooutil.html"> oo::util </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key163"> comment </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/jpeg/jpeg.html"> jpeg </a> &#183; <a href="tcllib/files/modules/png/png.html"> png </a>







|




|














|







629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key173"> color control </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/ansi_cattr.html"> term::ansi::code::attr </a> &#183; <a href="tcllib/files/modules/term/ansi_cctrl.html"> term::ansi::code::ctrl </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key484"> columns </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/ansi_ctrlu.html"> term::ansi::ctrl::unix </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key33"> comm </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/comm/comm.html"> comm </a> &#183; <a href="tcllib/files/modules/comm/comm_wire.html"> comm_wire </a> &#183; <a href="tcllib/files/modules/interp/deleg_method.html"> deleg_method </a> &#183; <a href="tcllib/files/modules/interp/deleg_proc.html"> deleg_proc </a> &#183; <a href="tcllib/files/modules/nns/nns_protocol.html"> nameserv::protocol </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key256"> command </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2base/tcl_parse.html"> doctools::tcl::parse </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key248"> command line processing </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/cmdline/cmdline.html"> cmdline </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key573"> command prefix </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/lambda/lambda.html"> lambda </a> &#183; <a href="tcllib/files/modules/ooutil/ooutil.html"> oo::util </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key163"> comment </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/jpeg/jpeg.html"> jpeg </a> &#183; <a href="tcllib/files/modules/png/png.html"> png </a>
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key533"> comparison </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key465"> complete graph </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key778"> complex numbers </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/qcomplex.html"> math::complexnumbers </a> &#183; <a href="tcllib/files/modules/math/fourier.html"> math::fourier </a>







|







679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key533"> comparison </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key464"> complete graph </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key778"> complex numbers </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/qcomplex.html"> math::complexnumbers </a> &#183; <a href="tcllib/files/modules/math/fourier.html"> math::fourier </a>
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key724"> connected fifos </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/tcllib_fifo2.html"> tcl::chan::fifo2 </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key593"> connection </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/transfer/connect.html"> transfer::connect </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key590"> constants </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/constants.html"> math::constants </a> &#183; <a href="tcllib/files/modules/units/units.html"> units </a>







|







714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key724"> connected fifos </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/tcllib_fifo2.html"> tcl::chan::fifo2 </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key592"> connection </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/transfer/connect.html"> transfer::connect </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key590"> constants </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/constants.html"> math::constants </a> &#183; <a href="tcllib/files/modules/units/units.html"> units </a>
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key4"> context-free languages </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_me/me_intro.html"> grammar::me_intro </a> &#183; <a href="tcllib/files/modules/grammar_peg/peg.html"> grammar::peg </a> &#183; <a href="tcllib/files/modules/grammar_peg/peg_interp.html"> grammar::peg::interp </a> &#183; <a href="tcllib/files/apps/pt.html"> pt </a> &#183; <a href="tcllib/files/modules/pt/pt_astree.html"> pt::ast </a> &#183; <a href="tcllib/files/modules/pt/pt_cparam_config_critcl.html"> pt::cparam::configuration::critcl </a> &#183; <a href="tcllib/files/modules/pt/pt_json_language.html"> pt::json_language </a> &#183; <a href="tcllib/files/modules/pt/pt_param.html"> pt::param </a> &#183; <a href="tcllib/files/modules/pt/pt_pexpression.html"> pt::pe </a> &#183; <a href="tcllib/files/modules/pt/pt_pexpr_op.html"> pt::pe::op </a> &#183; <a href="tcllib/files/modules/pt/pt_pegrammar.html"> pt::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_container.html"> pt::peg::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_container_peg.html"> pt::peg::container::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export.html"> pt::peg::export </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_container.html"> pt::peg::export::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_json.html"> pt::peg::export::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_peg.html"> pt::peg::export::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_container.html"> pt::peg::from::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_json.html"> pt::peg::from::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_peg.html"> pt::peg::from::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import.html"> pt::peg::import </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_container.html"> pt::peg::import::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_json.html"> pt::peg::import::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_peg.html"> pt::peg::import::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_interp.html"> pt::peg::interp </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_container.html"> pt::peg::to::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_cparam.html"> pt::peg::to::cparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_json.html"> pt::peg::to::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_param.html"> pt::peg::to::param </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_peg.html"> pt::peg::to::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_tclparam.html"> pt::peg::to::tclparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_language.html"> pt::peg_language </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_introduction.html"> pt::pegrammar </a> &#183; <a href="tcllib/files/modules/pt/pt_pgen.html"> pt::pgen </a> &#183; <a href="tcllib/files/modules/pt/pt_rdengine.html"> pt::rde </a> &#183; <a href="tcllib/files/modules/pt/pt_tclparam_config_snit.html"> pt::tclparam::configuration::snit </a> &#183; <a href="tcllib/files/modules/pt/pt_tclparam_config_tcloo.html"> pt::tclparam::configuration::tcloo </a> &#183; <a href="tcllib/files/modules/pt/pt_to_api.html"> pt_export_api </a> &#183; <a href="tcllib/files/modules/pt/pt_from_api.html"> pt_import_api </a> &#183; <a href="tcllib/files/modules/pt/pt_introduction.html"> pt_introduction </a> &#183; <a href="tcllib/files/modules/pt/pt_parser_api.html"> pt_parser_api </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key108"> control </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/control/control.html"> control </a> &#183; <a href="tcllib/files/modules/term/term.html"> term </a> &#183; <a href="tcllib/files/modules/term/ansi_code.html"> term::ansi::code </a> &#183; <a href="tcllib/files/modules/term/ansi_cattr.html"> term::ansi::code::attr </a> &#183; <a href="tcllib/files/modules/term/ansi_cctrl.html"> term::ansi::code::ctrl </a> &#183; <a href="tcllib/files/modules/term/ansi_cmacros.html"> term::ansi::code::macros </a> &#183; <a href="tcllib/files/modules/term/ansi_ctrlu.html"> term::ansi::ctrl::unix </a> &#183; <a href="tcllib/files/modules/term/ansi_send.html"> term::ansi::send </a> &#183; <a href="tcllib/files/modules/term/imenu.html"> term::interact::menu </a> &#183; <a href="tcllib/files/modules/term/ipager.html"> term::interact::pager </a> &#183; <a href="tcllib/files/modules/term/receive.html"> term::receive </a> &#183; <a href="tcllib/files/modules/term/term_bind.html"> term::receive::bind </a> &#183; <a href="tcllib/files/modules/term/term_send.html"> term::send </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key215"> control structure </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/generator/generator.html"> generator </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key19"> conversion </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctools.html"> doctools </a> &#183; <a href="tcllib/files/modules/doctools2idx/introduction.html"> doctools2idx_introduction </a> &#183; <a href="tcllib/files/modules/doctools2toc/introduction.html"> doctools2toc_introduction </a> &#183; <a href="tcllib/files/modules/doctools/docidx.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export.html"> doctools::idx::export </a> &#183; <a href="tcllib/files/modules/doctools2idx/import.html"> doctools::idx::import </a> &#183; <a href="tcllib/files/modules/doctools/doctoc.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/container.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/export.html"> doctools::toc::export </a> &#183; <a href="tcllib/files/modules/doctools2toc/import.html"> doctools::toc::import </a> &#183; <a href="tcllib/files/apps/dtplite.html"> dtplite </a> &#183; <a href="tcllib/files/modules/dtplite/dtplite.html"> dtplite </a> &#183; <a href="tcllib/files/modules/math/roman.html"> math::roman </a> &#183; <a href="tcllib/files/modules/doctools/mpexpand.html"> mpexpand </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_json.html"> pt::peg::from::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_peg.html"> pt::peg::from::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_container.html"> pt::peg::to::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_cparam.html"> pt::peg::to::cparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_json.html"> pt::peg::to::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_param.html"> pt::peg::to::param </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_peg.html"> pt::peg::to::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_tclparam.html"> pt::peg::to::tclparam </a> &#183; <a href="tcllib/files/apps/tcldocstrip.html"> tcldocstrip </a> &#183; <a href="tcllib/files/modules/units/units.html"> units </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key484"> cooked </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/ansi_ctrlu.html"> term::ansi::ctrl::unix </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key664"> cookie </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ncgi/ncgi.html"> ncgi </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key84"> copy </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/fileutil/multi.html"> fileutil::multi </a> &#183; <a href="tcllib/files/modules/fileutil/multiop.html"> fileutil::multi::op </a> &#183; <a href="tcllib/files/modules/transfer/copyops.html"> transfer::copy </a> &#183; <a href="tcllib/files/modules/transfer/tqueue.html"> transfer::copy::queue </a> &#183; <a href="tcllib/files/modules/transfer/ddest.html"> transfer::data::destination </a> &#183; <a href="tcllib/files/modules/transfer/dsource.html"> transfer::data::source </a> &#183; <a href="tcllib/files/modules/transfer/receiver.html"> transfer::receiver </a> &#183; <a href="tcllib/files/modules/transfer/transmitter.html"> transfer::transmitter </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key210"> coroutine </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/coroutine/tcllib_coroutine.html"> coroutine </a> &#183; <a href="tcllib/files/modules/coroutine/coro_auto.html"> coroutine::auto </a> &#183; <a href="tcllib/files/modules/generator/generator.html"> generator </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key804"> Cost </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/treeql/treeql.html"> treeql </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key298"> counter </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/counter.html"> tcl::transform::counter </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key698"> counting </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/counter/counter.html"> counter </a>







|









|




|



















|




|







744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key4"> context-free languages </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_me/me_intro.html"> grammar::me_intro </a> &#183; <a href="tcllib/files/modules/grammar_peg/peg.html"> grammar::peg </a> &#183; <a href="tcllib/files/modules/grammar_peg/peg_interp.html"> grammar::peg::interp </a> &#183; <a href="tcllib/files/apps/pt.html"> pt </a> &#183; <a href="tcllib/files/modules/pt/pt_astree.html"> pt::ast </a> &#183; <a href="tcllib/files/modules/pt/pt_cparam_config_critcl.html"> pt::cparam::configuration::critcl </a> &#183; <a href="tcllib/files/modules/pt/pt_json_language.html"> pt::json_language </a> &#183; <a href="tcllib/files/modules/pt/pt_param.html"> pt::param </a> &#183; <a href="tcllib/files/modules/pt/pt_pexpression.html"> pt::pe </a> &#183; <a href="tcllib/files/modules/pt/pt_pexpr_op.html"> pt::pe::op </a> &#183; <a href="tcllib/files/modules/pt/pt_pegrammar.html"> pt::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_container.html"> pt::peg::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_container_peg.html"> pt::peg::container::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export.html"> pt::peg::export </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_container.html"> pt::peg::export::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_json.html"> pt::peg::export::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_peg.html"> pt::peg::export::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_container.html"> pt::peg::from::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_json.html"> pt::peg::from::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_peg.html"> pt::peg::from::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import.html"> pt::peg::import </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_container.html"> pt::peg::import::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_json.html"> pt::peg::import::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_peg.html"> pt::peg::import::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_interp.html"> pt::peg::interp </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_container.html"> pt::peg::to::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_cparam.html"> pt::peg::to::cparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_json.html"> pt::peg::to::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_param.html"> pt::peg::to::param </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_peg.html"> pt::peg::to::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_tclparam.html"> pt::peg::to::tclparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_language.html"> pt::peg_language </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_introduction.html"> pt::pegrammar </a> &#183; <a href="tcllib/files/modules/pt/pt_pgen.html"> pt::pgen </a> &#183; <a href="tcllib/files/modules/pt/pt_rdengine.html"> pt::rde </a> &#183; <a href="tcllib/files/modules/pt/pt_tclparam_config_snit.html"> pt::tclparam::configuration::snit </a> &#183; <a href="tcllib/files/modules/pt/pt_tclparam_config_tcloo.html"> pt::tclparam::configuration::tcloo </a> &#183; <a href="tcllib/files/modules/pt/pt_to_api.html"> pt_export_api </a> &#183; <a href="tcllib/files/modules/pt/pt_from_api.html"> pt_import_api </a> &#183; <a href="tcllib/files/modules/pt/pt_introduction.html"> pt_introduction </a> &#183; <a href="tcllib/files/modules/pt/pt_parser_api.html"> pt_parser_api </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key107"> control </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/control/control.html"> control </a> &#183; <a href="tcllib/files/modules/term/term.html"> term </a> &#183; <a href="tcllib/files/modules/term/ansi_code.html"> term::ansi::code </a> &#183; <a href="tcllib/files/modules/term/ansi_cattr.html"> term::ansi::code::attr </a> &#183; <a href="tcllib/files/modules/term/ansi_cctrl.html"> term::ansi::code::ctrl </a> &#183; <a href="tcllib/files/modules/term/ansi_cmacros.html"> term::ansi::code::macros </a> &#183; <a href="tcllib/files/modules/term/ansi_ctrlu.html"> term::ansi::ctrl::unix </a> &#183; <a href="tcllib/files/modules/term/ansi_send.html"> term::ansi::send </a> &#183; <a href="tcllib/files/modules/term/imenu.html"> term::interact::menu </a> &#183; <a href="tcllib/files/modules/term/ipager.html"> term::interact::pager </a> &#183; <a href="tcllib/files/modules/term/receive.html"> term::receive </a> &#183; <a href="tcllib/files/modules/term/term_bind.html"> term::receive::bind </a> &#183; <a href="tcllib/files/modules/term/term_send.html"> term::send </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key215"> control structure </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/generator/generator.html"> generator </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key20"> conversion </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctools.html"> doctools </a> &#183; <a href="tcllib/files/modules/doctools2idx/introduction.html"> doctools2idx_introduction </a> &#183; <a href="tcllib/files/modules/doctools2toc/introduction.html"> doctools2toc_introduction </a> &#183; <a href="tcllib/files/modules/doctools/docidx.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export.html"> doctools::idx::export </a> &#183; <a href="tcllib/files/modules/doctools2idx/import.html"> doctools::idx::import </a> &#183; <a href="tcllib/files/modules/doctools/doctoc.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/container.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/export.html"> doctools::toc::export </a> &#183; <a href="tcllib/files/modules/doctools2toc/import.html"> doctools::toc::import </a> &#183; <a href="tcllib/files/apps/dtplite.html"> dtplite </a> &#183; <a href="tcllib/files/modules/dtplite/dtplite.html"> dtplite </a> &#183; <a href="tcllib/files/modules/math/roman.html"> math::roman </a> &#183; <a href="tcllib/files/modules/doctools/mpexpand.html"> mpexpand </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_json.html"> pt::peg::from::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_peg.html"> pt::peg::from::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_container.html"> pt::peg::to::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_cparam.html"> pt::peg::to::cparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_json.html"> pt::peg::to::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_param.html"> pt::peg::to::param </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_peg.html"> pt::peg::to::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_tclparam.html"> pt::peg::to::tclparam </a> &#183; <a href="tcllib/files/apps/tcldocstrip.html"> tcldocstrip </a> &#183; <a href="tcllib/files/modules/units/units.html"> units </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key483"> cooked </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/ansi_ctrlu.html"> term::ansi::ctrl::unix </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key664"> cookie </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ncgi/ncgi.html"> ncgi </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key84"> copy </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/fileutil/multi.html"> fileutil::multi </a> &#183; <a href="tcllib/files/modules/fileutil/multiop.html"> fileutil::multi::op </a> &#183; <a href="tcllib/files/modules/transfer/copyops.html"> transfer::copy </a> &#183; <a href="tcllib/files/modules/transfer/tqueue.html"> transfer::copy::queue </a> &#183; <a href="tcllib/files/modules/transfer/ddest.html"> transfer::data::destination </a> &#183; <a href="tcllib/files/modules/transfer/dsource.html"> transfer::data::source </a> &#183; <a href="tcllib/files/modules/transfer/receiver.html"> transfer::receiver </a> &#183; <a href="tcllib/files/modules/transfer/transmitter.html"> transfer::transmitter </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key210"> coroutine </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/coroutine/tcllib_coroutine.html"> coroutine </a> &#183; <a href="tcllib/files/modules/coroutine/coro_auto.html"> coroutine::auto </a> &#183; <a href="tcllib/files/modules/generator/generator.html"> generator </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key805"> Cost </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/treeql/treeql.html"> treeql </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key297"> counter </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/counter.html"> tcl::transform::counter </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key698"> counting </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/counter/counter.html"> counter </a>
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key462"> cut vertex </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key613"> CVS </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/rcs/rcs.html"> rcs </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key754"> cvs </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/cvs.html"> doctools::cvs </a>







|







849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key462"> cut vertex </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key614"> CVS </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/rcs/rcs.html"> rcs </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key754"> cvs </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/cvs.html"> doctools::cvs </a>
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key189"> data exchange </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/yaml/huddle.html"> huddle </a> &#183; <a href="tcllib/files/modules/json/json.html"> json </a> &#183; <a href="tcllib/files/modules/json/json_write.html"> json::write </a> &#183; <a href="tcllib/files/modules/yaml/yaml.html"> yaml </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key149"> data integrity </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/aes/aes.html"> aes </a> &#183; <a href="tcllib/files/modules/crc/cksum.html"> cksum </a> &#183; <a href="tcllib/files/modules/crc/crc16.html"> crc16 </a> &#183; <a href="tcllib/files/modules/crc/crc32.html"> crc32 </a> &#183; <a href="tcllib/files/modules/des/des.html"> des </a> &#183; <a href="tcllib/files/modules/pki/pki.html"> pki </a> &#183; <a href="tcllib/files/modules/rc4/rc4.html"> rc4 </a> &#183; <a href="tcllib/files/modules/crc/sum.html"> sum </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key354"> data source </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/transfer/dsource.html"> transfer::data::source </a> &#183; <a href="tcllib/files/modules/transfer/transmitter.html"> transfer::transmitter </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key319"> data structures </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/record.html"> struct::record </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key36"> database </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/tie/tie_std.html"> tie </a> &#183; <a href="tcllib/files/modules/tie/tie.html"> tie </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key375"> dataflow </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/page/page_util_flow.html"> page_util_flow </a>







|














|







892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key189"> data exchange </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/yaml/huddle.html"> huddle </a> &#183; <a href="tcllib/files/modules/json/json.html"> json </a> &#183; <a href="tcllib/files/modules/json/json_write.html"> json::write </a> &#183; <a href="tcllib/files/modules/yaml/yaml.html"> yaml </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key150"> data integrity </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/aes/aes.html"> aes </a> &#183; <a href="tcllib/files/modules/crc/cksum.html"> cksum </a> &#183; <a href="tcllib/files/modules/crc/crc16.html"> crc16 </a> &#183; <a href="tcllib/files/modules/crc/crc32.html"> crc32 </a> &#183; <a href="tcllib/files/modules/des/des.html"> des </a> &#183; <a href="tcllib/files/modules/pki/pki.html"> pki </a> &#183; <a href="tcllib/files/modules/rc4/rc4.html"> rc4 </a> &#183; <a href="tcllib/files/modules/crc/sum.html"> sum </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key354"> data source </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/transfer/dsource.html"> transfer::data::source </a> &#183; <a href="tcllib/files/modules/transfer/transmitter.html"> transfer::transmitter </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key319"> data structures </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/record.html"> struct::record </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key38"> database </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/tie/tie_std.html"> tie </a> &#183; <a href="tcllib/files/modules/tie/tie.html"> tie </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key375"> dataflow </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/page/page_util_flow.html"> page_util_flow </a>
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key528"> decompression </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/tcllib_zlib.html"> tcl::transform::zlib </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key377"> decryption </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/otp.html"> tcl::transform::otp </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/rot.html"> tcl::transform::rot </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key522"> deferal </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uev/uevent_onidle.html"> uevent::onidle </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key321"> define </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/ansi_code.html"> term::ansi::code </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key452"> degree </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graph.html"> struct::graph </a> &#183; <a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key451"> degree constrained spanning tree </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key794"> degrees </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/constants.html"> math::constants </a>







|














|




|







942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key528"> decompression </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/tcllib_zlib.html"> tcl::transform::zlib </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key378"> decryption </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/otp.html"> tcl::transform::otp </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/rot.html"> tcl::transform::rot </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key522"> deferal </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uev/uevent_onidle.html"> uevent::onidle </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key321"> define </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/ansi_code.html"> term::ansi::code </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key451"> degree </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graph.html"> struct::graph </a> &#183; <a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key452"> degree constrained spanning tree </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key794"> degrees </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/constants.html"> math::constants </a>
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key615"> diff -n format </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/rcs/rcs.html"> rcs </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key713"> difference </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_set.html"> struct::set </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key536"> differential </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key766"> differential equations </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/calculus.html"> math::calculus </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key471"> dijkstra </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key141"> directory access </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ldap/ldap.html"> ldap </a> &#183; <a href="tcllib/files/modules/ldap/ldapx.html"> ldapx </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key704"> directory traversal </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/fileutil/traverse.html"> fileutil_traverse </a>







|














|




|







1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key615"> diff -n format </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/rcs/rcs.html"> rcs </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key714"> difference </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_set.html"> struct::set </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key536"> differential </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key766"> differential equations </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/calculus.html"> math::calculus </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key472"> dijkstra </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key142"> directory access </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ldap/ldap.html"> ldap </a> &#183; <a href="tcllib/files/modules/ldap/ldapx.html"> ldapx </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key704"> directory traversal </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/fileutil/traverse.html"> fileutil_traverse </a>
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key349"> docidx commands </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/docidx_lang_cmdref.html"> docidx_lang_cmdref </a> &#183; <a href="tcllib/files/modules/doctools/docidx_lang_faq.html"> docidx_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/docidx_lang_intro.html"> docidx_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/docidx_lang_syntax.html"> docidx_lang_syntax </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key351"> docidx language </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/docidx_lang_cmdref.html"> docidx_lang_cmdref </a> &#183; <a href="tcllib/files/modules/doctools/docidx_lang_faq.html"> docidx_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/docidx_lang_intro.html"> docidx_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/docidx_lang_syntax.html"> docidx_lang_syntax </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key352"> docidx markup </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/docidx_lang_cmdref.html"> docidx_lang_cmdref </a> &#183; <a href="tcllib/files/modules/doctools/docidx_lang_faq.html"> docidx_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/docidx_lang_intro.html"> docidx_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/docidx_lang_syntax.html"> docidx_lang_syntax </a> &#183; <a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a>







|







1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key349"> docidx commands </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/docidx_lang_cmdref.html"> docidx_lang_cmdref </a> &#183; <a href="tcllib/files/modules/doctools/docidx_lang_faq.html"> docidx_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/docidx_lang_intro.html"> docidx_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/docidx_lang_syntax.html"> docidx_lang_syntax </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key353"> docidx language </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/docidx_lang_cmdref.html"> docidx_lang_cmdref </a> &#183; <a href="tcllib/files/modules/doctools/docidx_lang_faq.html"> docidx_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/docidx_lang_intro.html"> docidx_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/docidx_lang_syntax.html"> docidx_lang_syntax </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key352"> docidx markup </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/docidx_lang_cmdref.html"> docidx_lang_cmdref </a> &#183; <a href="tcllib/files/modules/doctools/docidx_lang_faq.html"> docidx_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/docidx_lang_intro.html"> docidx_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/docidx_lang_syntax.html"> docidx_lang_syntax </a> &#183; <a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a>
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key490"> doctoc commands </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctoc_lang_cmdref.html"> doctoc_lang_cmdref </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_faq.html"> doctoc_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_intro.html"> doctoc_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_syntax.html"> doctoc_lang_syntax </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key488"> doctoc language </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctoc_lang_cmdref.html"> doctoc_lang_cmdref </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_faq.html"> doctoc_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_intro.html"> doctoc_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_syntax.html"> doctoc_lang_syntax </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key489"> doctoc markup </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctoc_lang_cmdref.html"> doctoc_lang_cmdref </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_faq.html"> doctoc_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_intro.html"> doctoc_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_syntax.html"> doctoc_lang_syntax </a> &#183; <a href="tcllib/files/modules/doctools2toc/container.html"> doctools::toc </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key524"> doctoc syntax </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctoc_lang_faq.html"> doctoc_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_intro.html"> doctoc_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_syntax.html"> doctoc_lang_syntax </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key51"> doctools </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/docstrip/docstrip_util.html"> docstrip_util </a> &#183; <a href="tcllib/files/modules/doctools/changelog.html"> doctools::changelog </a> &#183; <a href="tcllib/files/modules/doctools2base/html_cssdefaults.html"> doctools::html::cssdefaults </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_docidx.html"> doctools::idx::export::docidx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_html.html"> doctools::idx::export::html </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_json.html"> doctools::idx::export::json </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_nroff.html"> doctools::idx::export::nroff </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_text.html"> doctools::idx::export::text </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_wiki.html"> doctools::idx::export::wiki </a> &#183; <a href="tcllib/files/modules/doctools2idx/import_docidx.html"> doctools::idx::import::docidx </a> &#183; <a href="tcllib/files/modules/doctools2idx/import_json.html"> doctools::idx::import::json </a> &#183; <a href="tcllib/files/modules/doctools2idx/parse.html"> doctools::idx::parse </a> &#183; <a href="tcllib/files/modules/doctools2idx/structure.html"> doctools::idx::structure </a> &#183; <a href="tcllib/files/modules/doctools2base/tcllib_msgcat.html"> doctools::msgcat </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_c.html"> doctools::msgcat::idx::c </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_de.html"> doctools::msgcat::idx::de </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_en.html"> doctools::msgcat::idx::en </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_fr.html"> doctools::msgcat::idx::fr </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_c.html"> doctools::msgcat::toc::c </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_de.html"> doctools::msgcat::toc::de </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_en.html"> doctools::msgcat::toc::en </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_fr.html"> doctools::msgcat::toc::fr </a> &#183; <a href="tcllib/files/modules/doctools2base/nroff_manmacros.html"> doctools::nroff::man_macros </a> &#183; <a href="tcllib/files/modules/doctools2base/tcl_parse.html"> doctools::tcl::parse </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_doctoc.html"> doctools::toc::export::doctoc </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_html.html"> doctools::toc::export::html </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_json.html"> doctools::toc::export::json </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_nroff.html"> doctools::toc::export::nroff </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_text.html"> doctools::toc::export::text </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_wiki.html"> doctools::toc::export::wiki </a> &#183; <a href="tcllib/files/modules/doctools2toc/import_doctoc.html"> doctools::toc::import::doctoc </a> &#183; <a href="tcllib/files/modules/doctools2toc/import_json.html"> doctools::toc::import::json </a> &#183; <a href="tcllib/files/modules/doctools2toc/parse.html"> doctools::toc::parse </a> &#183; <a href="tcllib/files/modules/doctools2toc/structure.html"> doctools::toc::structure </a> &#183; <a href="tcllib/files/apps/dtplite.html"> dtplite </a> &#183; <a href="tcllib/files/modules/dtplite/dtplite.html"> dtplite </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key144"> doctools commands </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctools_lang_cmdref.html"> doctools_lang_cmdref </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_faq.html"> doctools_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_intro.html"> doctools_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_syntax.html"> doctools_lang_syntax </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key146"> doctools language </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctools_lang_cmdref.html"> doctools_lang_cmdref </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_faq.html"> doctools_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_intro.html"> doctools_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_syntax.html"> doctools_lang_syntax </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key147"> doctools markup </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctools_lang_cmdref.html"> doctools_lang_cmdref </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_faq.html"> doctools_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_intro.html"> doctools_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_syntax.html"> doctools_lang_syntax </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key145"> doctools syntax </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctools_lang_faq.html"> doctools_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_intro.html"> doctools_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_syntax.html"> doctools_lang_syntax </a>







|




|



















|




|







1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key490"> doctoc commands </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctoc_lang_cmdref.html"> doctoc_lang_cmdref </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_faq.html"> doctoc_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_intro.html"> doctoc_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_syntax.html"> doctoc_lang_syntax </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key489"> doctoc language </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctoc_lang_cmdref.html"> doctoc_lang_cmdref </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_faq.html"> doctoc_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_intro.html"> doctoc_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_syntax.html"> doctoc_lang_syntax </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key488"> doctoc markup </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctoc_lang_cmdref.html"> doctoc_lang_cmdref </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_faq.html"> doctoc_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_intro.html"> doctoc_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_syntax.html"> doctoc_lang_syntax </a> &#183; <a href="tcllib/files/modules/doctools2toc/container.html"> doctools::toc </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key524"> doctoc syntax </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctoc_lang_faq.html"> doctoc_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_intro.html"> doctoc_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_syntax.html"> doctoc_lang_syntax </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key51"> doctools </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/docstrip/docstrip_util.html"> docstrip_util </a> &#183; <a href="tcllib/files/modules/doctools/changelog.html"> doctools::changelog </a> &#183; <a href="tcllib/files/modules/doctools2base/html_cssdefaults.html"> doctools::html::cssdefaults </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_docidx.html"> doctools::idx::export::docidx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_html.html"> doctools::idx::export::html </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_json.html"> doctools::idx::export::json </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_nroff.html"> doctools::idx::export::nroff </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_text.html"> doctools::idx::export::text </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_wiki.html"> doctools::idx::export::wiki </a> &#183; <a href="tcllib/files/modules/doctools2idx/import_docidx.html"> doctools::idx::import::docidx </a> &#183; <a href="tcllib/files/modules/doctools2idx/import_json.html"> doctools::idx::import::json </a> &#183; <a href="tcllib/files/modules/doctools2idx/parse.html"> doctools::idx::parse </a> &#183; <a href="tcllib/files/modules/doctools2idx/structure.html"> doctools::idx::structure </a> &#183; <a href="tcllib/files/modules/doctools2base/tcllib_msgcat.html"> doctools::msgcat </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_c.html"> doctools::msgcat::idx::c </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_de.html"> doctools::msgcat::idx::de </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_en.html"> doctools::msgcat::idx::en </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_fr.html"> doctools::msgcat::idx::fr </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_c.html"> doctools::msgcat::toc::c </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_de.html"> doctools::msgcat::toc::de </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_en.html"> doctools::msgcat::toc::en </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_fr.html"> doctools::msgcat::toc::fr </a> &#183; <a href="tcllib/files/modules/doctools2base/nroff_manmacros.html"> doctools::nroff::man_macros </a> &#183; <a href="tcllib/files/modules/doctools2base/tcl_parse.html"> doctools::tcl::parse </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_doctoc.html"> doctools::toc::export::doctoc </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_html.html"> doctools::toc::export::html </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_json.html"> doctools::toc::export::json </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_nroff.html"> doctools::toc::export::nroff </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_text.html"> doctools::toc::export::text </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_wiki.html"> doctools::toc::export::wiki </a> &#183; <a href="tcllib/files/modules/doctools2toc/import_doctoc.html"> doctools::toc::import::doctoc </a> &#183; <a href="tcllib/files/modules/doctools2toc/import_json.html"> doctools::toc::import::json </a> &#183; <a href="tcllib/files/modules/doctools2toc/parse.html"> doctools::toc::parse </a> &#183; <a href="tcllib/files/modules/doctools2toc/structure.html"> doctools::toc::structure </a> &#183; <a href="tcllib/files/apps/dtplite.html"> dtplite </a> &#183; <a href="tcllib/files/modules/dtplite/dtplite.html"> dtplite </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key144"> doctools commands </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctools_lang_cmdref.html"> doctools_lang_cmdref </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_faq.html"> doctools_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_intro.html"> doctools_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_syntax.html"> doctools_lang_syntax </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key147"> doctools language </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctools_lang_cmdref.html"> doctools_lang_cmdref </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_faq.html"> doctools_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_intro.html"> doctools_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_syntax.html"> doctools_lang_syntax </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key146"> doctools markup </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctools_lang_cmdref.html"> doctools_lang_cmdref </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_faq.html"> doctools_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_intro.html"> doctools_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_syntax.html"> doctools_lang_syntax </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key145"> doctools syntax </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctools_lang_faq.html"> doctools_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_intro.html"> doctools_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_syntax.html"> doctools_lang_syntax </a>
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key733"> dom </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/amazon-s3/xsxp.html"> xsxp </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key581"> domain name service </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/dns/tcllib_dns.html"> dns </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c8">Keywords: E</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key792"> e </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/constants.html"> math::constants </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key111"> EAN </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/valtype/ean13.html"> valtype::gs1::ean13 </a> &#183; <a href="tcllib/files/modules/valtype/isbn.html"> valtype::isbn </a>







|







|







1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key733"> dom </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/amazon-s3/xsxp.html"> xsxp </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key582"> domain name service </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/dns/tcllib_dns.html"> dns </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c8">Keywords: E</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key793"> e </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/constants.html"> math::constants </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key111"> EAN </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/valtype/ean13.html"> valtype::gs1::ean13 </a> &#183; <a href="tcllib/files/modules/valtype/isbn.html"> valtype::isbn </a>
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key244"> encoding </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/base64/ascii85.html"> ascii85 </a> &#183; <a href="tcllib/files/modules/base64/base64.html"> base64 </a> &#183; <a href="tcllib/files/modules/base64/uuencode.html"> uuencode </a> &#183; <a href="tcllib/files/modules/base64/yencode.html"> yencode </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key152"> encryption </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/aes/aes.html"> aes </a> &#183; <a href="tcllib/files/modules/blowfish/blowfish.html"> blowfish </a> &#183; <a href="tcllib/files/modules/des/des.html"> des </a> &#183; <a href="tcllib/files/modules/pki/pki.html"> pki </a> &#183; <a href="tcllib/files/modules/rc4/rc4.html"> rc4 </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/otp.html"> tcl::transform::otp </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/rot.html"> tcl::transform::rot </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key741"> entry mask </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/tepam/tepam_introduction.html"> tepam </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key540"> equal </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key552"> equality </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>







|









|







1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key244"> encoding </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/base64/ascii85.html"> ascii85 </a> &#183; <a href="tcllib/files/modules/base64/base64.html"> base64 </a> &#183; <a href="tcllib/files/modules/base64/uuencode.html"> uuencode </a> &#183; <a href="tcllib/files/modules/base64/yencode.html"> yencode </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key153"> encryption </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/aes/aes.html"> aes </a> &#183; <a href="tcllib/files/modules/blowfish/blowfish.html"> blowfish </a> &#183; <a href="tcllib/files/modules/des/des.html"> des </a> &#183; <a href="tcllib/files/modules/pki/pki.html"> pki </a> &#183; <a href="tcllib/files/modules/rc4/rc4.html"> rc4 </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/otp.html"> tcl::transform::otp </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/rot.html"> tcl::transform::rot </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key741"> entry mask </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/tepam/tepam_introduction.html"> tepam </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key539"> equal </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key552"> equality </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key389"> events </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/coroutine/tcllib_coroutine.html"> coroutine </a> &#183; <a href="tcllib/files/modules/coroutine/coro_auto.html"> coroutine::auto </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key353"> examples </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bench/bench_lang_intro.html"> bench_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/docidx_lang_faq.html"> docidx_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_faq.html"> doctoc_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_faq.html"> doctools_lang_faq </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key172"> exception </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/try/tcllib_try.html"> try </a>







|







1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key389"> events </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/coroutine/tcllib_coroutine.html"> coroutine </a> &#183; <a href="tcllib/files/modules/coroutine/coro_auto.html"> coroutine::auto </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key351"> examples </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bench/bench_lang_intro.html"> bench_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/docidx_lang_faq.html"> docidx_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_faq.html"> doctoc_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_faq.html"> doctools_lang_faq </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key172"> exception </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/try/tcllib_try.html"> try </a>
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key160"> exif </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/exif/exif.html"> exif </a> &#183; <a href="tcllib/files/modules/jpeg/jpeg.html"> jpeg </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key391"> exit </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/coroutine/tcllib_coroutine.html"> coroutine </a> &#183; <a href="tcllib/files/modules/coroutine/coro_auto.html"> coroutine::auto </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key165"> export </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2base/html_cssdefaults.html"> doctools::html::cssdefaults </a> &#183; <a href="tcllib/files/modules/doctools2idx/export.html"> doctools::idx::export </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_docidx.html"> doctools::idx::export::docidx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_html.html"> doctools::idx::export::html </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_json.html"> doctools::idx::export::json </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_nroff.html"> doctools::idx::export::nroff </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_text.html"> doctools::idx::export::text </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_wiki.html"> doctools::idx::export::wiki </a> &#183; <a href="tcllib/files/modules/doctools2base/nroff_manmacros.html"> doctools::nroff::man_macros </a> &#183; <a href="tcllib/files/modules/doctools2toc/export.html"> doctools::toc::export </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_doctoc.html"> doctools::toc::export::doctoc </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_html.html"> doctools::toc::export::html </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_json.html"> doctools::toc::export::json </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_nroff.html"> doctools::toc::export::nroff </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_text.html"> doctools::toc::export::text </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_wiki.html"> doctools::toc::export::wiki </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_container.html"> pt::peg::export::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_json.html"> pt::peg::export::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_peg.html"> pt::peg::export::peg </a>







|







1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key160"> exif </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/exif/exif.html"> exif </a> &#183; <a href="tcllib/files/modules/jpeg/jpeg.html"> jpeg </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key392"> exit </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/coroutine/tcllib_coroutine.html"> coroutine </a> &#183; <a href="tcllib/files/modules/coroutine/coro_auto.html"> coroutine::auto </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key165"> export </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2base/html_cssdefaults.html"> doctools::html::cssdefaults </a> &#183; <a href="tcllib/files/modules/doctools2idx/export.html"> doctools::idx::export </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_docidx.html"> doctools::idx::export::docidx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_html.html"> doctools::idx::export::html </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_json.html"> doctools::idx::export::json </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_nroff.html"> doctools::idx::export::nroff </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_text.html"> doctools::idx::export::text </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_wiki.html"> doctools::idx::export::wiki </a> &#183; <a href="tcllib/files/modules/doctools2base/nroff_manmacros.html"> doctools::nroff::man_macros </a> &#183; <a href="tcllib/files/modules/doctools2toc/export.html"> doctools::toc::export </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_doctoc.html"> doctools::toc::export::doctoc </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_html.html"> doctools::toc::export::html </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_json.html"> doctools::toc::export::json </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_nroff.html"> doctools::toc::export::nroff </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_text.html"> doctools::toc::export::text </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_wiki.html"> doctools::toc::export::wiki </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_container.html"> pt::peg::export::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_json.html"> pt::peg::export::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_peg.html"> pt::peg::export::peg </a>
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key122"> file recognition </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/fumagic/cfront.html"> fileutil::magic::cfront </a> &#183; <a href="tcllib/files/modules/fumagic/cgen.html"> fileutil::magic::cgen </a> &#183; <a href="tcllib/files/modules/fumagic/filetypes.html"> fileutil::magic::filetype </a> &#183; <a href="tcllib/files/modules/fumagic/mimetypes.html"> fileutil::magic::mimetype </a> &#183; <a href="tcllib/files/modules/fumagic/rtcore.html"> fileutil::magic::rt </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key123"> file type </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/fumagic/cfront.html"> fileutil::magic::cfront </a> &#183; <a href="tcllib/files/modules/fumagic/cgen.html"> fileutil::magic::cgen </a> &#183; <a href="tcllib/files/modules/fumagic/filetypes.html"> fileutil::magic::filetype </a> &#183; <a href="tcllib/files/modules/fumagic/mimetypes.html"> fileutil::magic::mimetype </a> &#183; <a href="tcllib/files/modules/fumagic/rtcore.html"> fileutil::magic::rt </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key121"> file utilities </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/fileutil/fileutil.html"> fileutil </a> &#183; <a href="tcllib/files/modules/fumagic/cfront.html"> fileutil::magic::cfront </a> &#183; <a href="tcllib/files/modules/fumagic/cgen.html"> fileutil::magic::cgen </a> &#183; <a href="tcllib/files/modules/fumagic/filetypes.html"> fileutil::magic::filetype </a> &#183; <a href="tcllib/files/modules/fumagic/mimetypes.html"> fileutil::magic::mimetype </a> &#183; <a href="tcllib/files/modules/fumagic/rtcore.html"> fileutil::magic::rt </a> &#183; <a href="tcllib/files/modules/fileutil/multi.html"> fileutil::multi </a> &#183; <a href="tcllib/files/modules/fileutil/multiop.html"> fileutil::multi::op </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key362"> filesystem </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/map/map_slippy_cache.html"> map::slippy::cache </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key213"> filter </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/generator/generator.html"> generator </a> &#183; <a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key170"> final </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/try/tcllib_try.html"> try </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key259"> finance </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/valtype/cc_amex.html"> valtype::creditcard::amex </a> &#183; <a href="tcllib/files/modules/valtype/cc_discover.html"> valtype::creditcard::discover </a> &#183; <a href="tcllib/files/modules/valtype/cc_mastercard.html"> valtype::creditcard::mastercard </a> &#183; <a href="tcllib/files/modules/valtype/cc_visa.html"> valtype::creditcard::visa </a> &#183; <a href="tcllib/files/modules/valtype/iban.html"> valtype::iban </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key606"> find </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/disjointset.html"> struct::disjointset </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key769"> finite </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/pool.html"> struct::pool </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key307"> finite automaton </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_fa/fa.html"> grammar::fa </a> &#183; <a href="tcllib/files/modules/grammar_fa/dacceptor.html"> grammar::fa::dacceptor </a> &#183; <a href="tcllib/files/modules/grammar_fa/dexec.html"> grammar::fa::dexec </a> &#183; <a href="tcllib/files/modules/grammar_fa/faop.html"> grammar::fa::op </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key220"> FIPS 180-1 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/sha1/sha1.html"> sha1 </a> &#183; <a href="tcllib/files/modules/sha1/sha256.html"> sha256 </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key538"> first permutation </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key548"> Fisher-Yates </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>







|














|














|














|




|







1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key122"> file recognition </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/fumagic/cfront.html"> fileutil::magic::cfront </a> &#183; <a href="tcllib/files/modules/fumagic/cgen.html"> fileutil::magic::cgen </a> &#183; <a href="tcllib/files/modules/fumagic/filetypes.html"> fileutil::magic::filetype </a> &#183; <a href="tcllib/files/modules/fumagic/mimetypes.html"> fileutil::magic::mimetype </a> &#183; <a href="tcllib/files/modules/fumagic/rtcore.html"> fileutil::magic::rt </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key124"> file type </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/fumagic/cfront.html"> fileutil::magic::cfront </a> &#183; <a href="tcllib/files/modules/fumagic/cgen.html"> fileutil::magic::cgen </a> &#183; <a href="tcllib/files/modules/fumagic/filetypes.html"> fileutil::magic::filetype </a> &#183; <a href="tcllib/files/modules/fumagic/mimetypes.html"> fileutil::magic::mimetype </a> &#183; <a href="tcllib/files/modules/fumagic/rtcore.html"> fileutil::magic::rt </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key121"> file utilities </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/fileutil/fileutil.html"> fileutil </a> &#183; <a href="tcllib/files/modules/fumagic/cfront.html"> fileutil::magic::cfront </a> &#183; <a href="tcllib/files/modules/fumagic/cgen.html"> fileutil::magic::cgen </a> &#183; <a href="tcllib/files/modules/fumagic/filetypes.html"> fileutil::magic::filetype </a> &#183; <a href="tcllib/files/modules/fumagic/mimetypes.html"> fileutil::magic::mimetype </a> &#183; <a href="tcllib/files/modules/fumagic/rtcore.html"> fileutil::magic::rt </a> &#183; <a href="tcllib/files/modules/fileutil/multi.html"> fileutil::multi </a> &#183; <a href="tcllib/files/modules/fileutil/multiop.html"> fileutil::multi::op </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key362"> filesystem </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/map/map_slippy_cache.html"> map::slippy::cache </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key214"> filter </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/generator/generator.html"> generator </a> &#183; <a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key170"> final </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/try/tcllib_try.html"> try </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key259"> finance </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/valtype/cc_amex.html"> valtype::creditcard::amex </a> &#183; <a href="tcllib/files/modules/valtype/cc_discover.html"> valtype::creditcard::discover </a> &#183; <a href="tcllib/files/modules/valtype/cc_mastercard.html"> valtype::creditcard::mastercard </a> &#183; <a href="tcllib/files/modules/valtype/cc_visa.html"> valtype::creditcard::visa </a> &#183; <a href="tcllib/files/modules/valtype/iban.html"> valtype::iban </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key608"> find </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/disjointset.html"> struct::disjointset </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key769"> finite </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/pool.html"> struct::pool </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key307"> finite automaton </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_fa/fa.html"> grammar::fa </a> &#183; <a href="tcllib/files/modules/grammar_fa/dacceptor.html"> grammar::fa::dacceptor </a> &#183; <a href="tcllib/files/modules/grammar_fa/dexec.html"> grammar::fa::dexec </a> &#183; <a href="tcllib/files/modules/grammar_fa/faop.html"> grammar::fa::op </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key221"> FIPS 180-1 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/sha1/sha1.html"> sha1 </a> &#183; <a href="tcllib/files/modules/sha1/sha256.html"> sha256 </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key540"> first permutation </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key548"> Fisher-Yates </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key475"> flow network </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key544"> folding </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key212"> foldl </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/generator/generator.html"> generator </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key216"> foldr </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/generator/generator.html"> generator </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key209"> foreach </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/generator/generator.html"> generator </a>







|









|







1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key475"> flow network </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key545"> folding </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key212"> foldl </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/generator/generator.html"> generator </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key217"> foldr </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/generator/generator.html"> generator </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key209"> foreach </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/generator/generator.html"> generator </a>
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key563"> generation </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export.html"> doctools::idx::export </a> &#183; <a href="tcllib/files/modules/doctools2toc/container.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/export.html"> doctools::toc::export </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key217"> generator </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/generator/generator.html"> generator </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key566"> geocoding </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/map/map_geocode_nominatim.html"> map::geocode::nominatim </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key199"> geodesy </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/map/map_slippy.html"> map::slippy </a> &#183; <a href="tcllib/files/modules/mapproj/mapproj.html"> mapproj </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key203"> geography </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/map/map_slippy.html"> map::slippy </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key105"> get character </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/receive.html"> term::receive </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key395"> gets </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/coroutine/tcllib_coroutine.html"> coroutine </a> &#183; <a href="tcllib/files/modules/coroutine/coro_auto.html"> coroutine::auto </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key390"> global </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/coroutine/tcllib_coroutine.html"> coroutine </a> &#183; <a href="tcllib/files/modules/coroutine/coro_auto.html"> coroutine::auto </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key511"> gopher </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uri/uri.html"> uri </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key386"> gps </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/gpx/gpx.html"> gpx </a> &#183; <a href="tcllib/files/modules/nmea/nmea.html"> nmea </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key652"> gpx </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/gpx/gpx.html"> gpx </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key11"> grammar </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_aycock/aycock.html"> grammar::aycock </a> &#183; <a href="tcllib/files/modules/grammar_fa/fa.html"> grammar::fa </a> &#183; <a href="tcllib/files/modules/grammar_fa/dacceptor.html"> grammar::fa::dacceptor </a> &#183; <a href="tcllib/files/modules/grammar_fa/dexec.html"> grammar::fa::dexec </a> &#183; <a href="tcllib/files/modules/grammar_fa/faop.html"> grammar::fa::op </a> &#183; <a href="tcllib/files/modules/grammar_me/me_cpu.html"> grammar::me::cpu </a> &#183; <a href="tcllib/files/modules/grammar_me/me_cpucore.html"> grammar::me::cpu::core </a> &#183; <a href="tcllib/files/modules/grammar_me/gasm.html"> grammar::me::cpu::gasm </a> &#183; <a href="tcllib/files/modules/grammar_me/me_tcl.html"> grammar::me::tcl </a> &#183; <a href="tcllib/files/modules/grammar_me/me_intro.html"> grammar::me_intro </a> &#183; <a href="tcllib/files/modules/grammar_me/me_vm.html"> grammar::me_vm </a> &#183; <a href="tcllib/files/modules/grammar_peg/peg.html"> grammar::peg </a> &#183; <a href="tcllib/files/modules/grammar_peg/peg_interp.html"> grammar::peg::interp </a> &#183; <a href="tcllib/files/apps/pt.html"> pt </a> &#183; <a href="tcllib/files/modules/pt/pt_astree.html"> pt::ast </a> &#183; <a href="tcllib/files/modules/pt/pt_cparam_config_critcl.html"> pt::cparam::configuration::critcl </a> &#183; <a href="tcllib/files/modules/pt/pt_json_language.html"> pt::json_language </a> &#183; <a href="tcllib/files/modules/pt/pt_param.html"> pt::param </a> &#183; <a href="tcllib/files/modules/pt/pt_pexpression.html"> pt::pe </a> &#183; <a href="tcllib/files/modules/pt/pt_pexpr_op.html"> pt::pe::op </a> &#183; <a href="tcllib/files/modules/pt/pt_pegrammar.html"> pt::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_container.html"> pt::peg::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_container_peg.html"> pt::peg::container::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export.html"> pt::peg::export </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_container.html"> pt::peg::export::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_json.html"> pt::peg::export::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_peg.html"> pt::peg::export::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_container.html"> pt::peg::from::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_json.html"> pt::peg::from::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_peg.html"> pt::peg::from::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import.html"> pt::peg::import </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_container.html"> pt::peg::import::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_json.html"> pt::peg::import::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_peg.html"> pt::peg::import::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_interp.html"> pt::peg::interp </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_container.html"> pt::peg::to::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_cparam.html"> pt::peg::to::cparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_json.html"> pt::peg::to::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_param.html"> pt::peg::to::param </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_peg.html"> pt::peg::to::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_tclparam.html"> pt::peg::to::tclparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_language.html"> pt::peg_language </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_introduction.html"> pt::pegrammar </a> &#183; <a href="tcllib/files/modules/pt/pt_pgen.html"> pt::pgen </a> &#183; <a href="tcllib/files/modules/pt/pt_rdengine.html"> pt::rde </a> &#183; <a href="tcllib/files/modules/pt/pt_tclparam_config_snit.html"> pt::tclparam::configuration::snit </a> &#183; <a href="tcllib/files/modules/pt/pt_tclparam_config_tcloo.html"> pt::tclparam::configuration::tcloo </a> &#183; <a href="tcllib/files/modules/pt/pt_to_api.html"> pt_export_api </a> &#183; <a href="tcllib/files/modules/pt/pt_from_api.html"> pt_import_api </a> &#183; <a href="tcllib/files/modules/pt/pt_introduction.html"> pt_introduction </a> &#183; <a href="tcllib/files/modules/pt/pt_parser_api.html"> pt_parser_api </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key282"> graph </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_me/gasm.html"> grammar::me::cpu::gasm </a> &#183; <a href="tcllib/files/modules/struct/graph.html"> struct::graph </a> &#183; <a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a> &#183; <a href="tcllib/files/modules/struct/graph1.html"> struct::graph_v1 </a> &#183; <a href="tcllib/files/modules/struct/queue.html"> struct::queue </a> &#183; <a href="tcllib/files/modules/struct/stack.html"> struct::stack </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key196"> graph walking </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/page/page_util_flow.html"> page_util_flow </a> &#183; <a href="tcllib/files/modules/page/page_util_norm_lemon.html"> page_util_norm_lemon </a> &#183; <a href="tcllib/files/modules/page/page_util_norm_peg.html"> page_util_norm_peg </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key396"> green threads </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/coroutine/tcllib_coroutine.html"> coroutine </a> &#183; <a href="tcllib/files/modules/coroutine/coro_auto.html"> coroutine::auto </a>







|














|




|




|









|



















|




|







1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key563"> generation </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export.html"> doctools::idx::export </a> &#183; <a href="tcllib/files/modules/doctools2toc/container.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/export.html"> doctools::toc::export </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key216"> generator </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/generator/generator.html"> generator </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key566"> geocoding </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/map/map_geocode_nominatim.html"> map::geocode::nominatim </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key199"> geodesy </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/map/map_slippy.html"> map::slippy </a> &#183; <a href="tcllib/files/modules/mapproj/mapproj.html"> mapproj </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key204"> geography </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/map/map_slippy.html"> map::slippy </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key106"> get character </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/receive.html"> term::receive </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key393"> gets </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/coroutine/tcllib_coroutine.html"> coroutine </a> &#183; <a href="tcllib/files/modules/coroutine/coro_auto.html"> coroutine::auto </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key390"> global </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/coroutine/tcllib_coroutine.html"> coroutine </a> &#183; <a href="tcllib/files/modules/coroutine/coro_auto.html"> coroutine::auto </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key510"> gopher </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uri/uri.html"> uri </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key386"> gps </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/gpx/gpx.html"> gpx </a> &#183; <a href="tcllib/files/modules/nmea/nmea.html"> nmea </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key652"> gpx </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/gpx/gpx.html"> gpx </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key11"> grammar </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_aycock/aycock.html"> grammar::aycock </a> &#183; <a href="tcllib/files/modules/grammar_fa/fa.html"> grammar::fa </a> &#183; <a href="tcllib/files/modules/grammar_fa/dacceptor.html"> grammar::fa::dacceptor </a> &#183; <a href="tcllib/files/modules/grammar_fa/dexec.html"> grammar::fa::dexec </a> &#183; <a href="tcllib/files/modules/grammar_fa/faop.html"> grammar::fa::op </a> &#183; <a href="tcllib/files/modules/grammar_me/me_cpu.html"> grammar::me::cpu </a> &#183; <a href="tcllib/files/modules/grammar_me/me_cpucore.html"> grammar::me::cpu::core </a> &#183; <a href="tcllib/files/modules/grammar_me/gasm.html"> grammar::me::cpu::gasm </a> &#183; <a href="tcllib/files/modules/grammar_me/me_tcl.html"> grammar::me::tcl </a> &#183; <a href="tcllib/files/modules/grammar_me/me_intro.html"> grammar::me_intro </a> &#183; <a href="tcllib/files/modules/grammar_me/me_vm.html"> grammar::me_vm </a> &#183; <a href="tcllib/files/modules/grammar_peg/peg.html"> grammar::peg </a> &#183; <a href="tcllib/files/modules/grammar_peg/peg_interp.html"> grammar::peg::interp </a> &#183; <a href="tcllib/files/apps/pt.html"> pt </a> &#183; <a href="tcllib/files/modules/pt/pt_astree.html"> pt::ast </a> &#183; <a href="tcllib/files/modules/pt/pt_cparam_config_critcl.html"> pt::cparam::configuration::critcl </a> &#183; <a href="tcllib/files/modules/pt/pt_json_language.html"> pt::json_language </a> &#183; <a href="tcllib/files/modules/pt/pt_param.html"> pt::param </a> &#183; <a href="tcllib/files/modules/pt/pt_pexpression.html"> pt::pe </a> &#183; <a href="tcllib/files/modules/pt/pt_pexpr_op.html"> pt::pe::op </a> &#183; <a href="tcllib/files/modules/pt/pt_pegrammar.html"> pt::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_container.html"> pt::peg::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_container_peg.html"> pt::peg::container::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export.html"> pt::peg::export </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_container.html"> pt::peg::export::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_json.html"> pt::peg::export::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_peg.html"> pt::peg::export::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_container.html"> pt::peg::from::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_json.html"> pt::peg::from::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_peg.html"> pt::peg::from::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import.html"> pt::peg::import </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_container.html"> pt::peg::import::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_json.html"> pt::peg::import::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_peg.html"> pt::peg::import::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_interp.html"> pt::peg::interp </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_container.html"> pt::peg::to::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_cparam.html"> pt::peg::to::cparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_json.html"> pt::peg::to::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_param.html"> pt::peg::to::param </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_peg.html"> pt::peg::to::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_tclparam.html"> pt::peg::to::tclparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_language.html"> pt::peg_language </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_introduction.html"> pt::pegrammar </a> &#183; <a href="tcllib/files/modules/pt/pt_pgen.html"> pt::pgen </a> &#183; <a href="tcllib/files/modules/pt/pt_rdengine.html"> pt::rde </a> &#183; <a href="tcllib/files/modules/pt/pt_tclparam_config_snit.html"> pt::tclparam::configuration::snit </a> &#183; <a href="tcllib/files/modules/pt/pt_tclparam_config_tcloo.html"> pt::tclparam::configuration::tcloo </a> &#183; <a href="tcllib/files/modules/pt/pt_to_api.html"> pt_export_api </a> &#183; <a href="tcllib/files/modules/pt/pt_from_api.html"> pt_import_api </a> &#183; <a href="tcllib/files/modules/pt/pt_introduction.html"> pt_introduction </a> &#183; <a href="tcllib/files/modules/pt/pt_parser_api.html"> pt_parser_api </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key283"> graph </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_me/gasm.html"> grammar::me::cpu::gasm </a> &#183; <a href="tcllib/files/modules/struct/graph.html"> struct::graph </a> &#183; <a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a> &#183; <a href="tcllib/files/modules/struct/graph1.html"> struct::graph_v1 </a> &#183; <a href="tcllib/files/modules/struct/queue.html"> struct::queue </a> &#183; <a href="tcllib/files/modules/struct/stack.html"> struct::stack </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key197"> graph walking </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/page/page_util_flow.html"> page_util_flow </a> &#183; <a href="tcllib/files/modules/page/page_util_norm_lemon.html"> page_util_norm_lemon </a> &#183; <a href="tcllib/files/modules/page/page_util_norm_peg.html"> page_util_norm_peg </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key396"> green threads </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/coroutine/tcllib_coroutine.html"> coroutine </a> &#183; <a href="tcllib/files/modules/coroutine/coro_auto.html"> coroutine::auto </a>
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key810"> horspool </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_aycock/aycock.html"> grammar::aycock </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key17"> HTML </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctools.html"> doctools </a> &#183; <a href="tcllib/files/modules/doctools2base/html_cssdefaults.html"> doctools::html::cssdefaults </a> &#183; <a href="tcllib/files/modules/doctools/docidx.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export.html"> doctools::idx::export </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_html.html"> doctools::idx::export::html </a> &#183; <a href="tcllib/files/modules/doctools/doctoc.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/container.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/export.html"> doctools::toc::export </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_html.html"> doctools::toc::export::html </a> &#183; <a href="tcllib/files/apps/dtplite.html"> dtplite </a> &#183; <a href="tcllib/files/modules/dtplite/dtplite.html"> dtplite </a> &#183; <a href="tcllib/files/modules/doctools/mpexpand.html"> mpexpand </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key597"> html </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/html/html.html"> html </a> &#183; <a href="tcllib/files/modules/htmlparse/htmlparse.html"> htmlparse </a> &#183; <a href="tcllib/files/modules/javascript/javascript.html"> javascript </a> &#183; <a href="tcllib/files/modules/ncgi/ncgi.html"> ncgi </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key506"> http </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/http/autoproxy.html"> autoproxy </a> &#183; <a href="tcllib/files/modules/map/map_geocode_nominatim.html"> map::geocode::nominatim </a> &#183; <a href="tcllib/files/modules/map/map_slippy_fetcher.html"> map::slippy::fetcher </a> &#183; <a href="tcllib/files/modules/uri/uri.html"> uri </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key568"> huddle </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/yaml/huddle.html"> huddle </a> &#183; <a href="tcllib/files/modules/yaml/yaml.html"> yaml </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key480"> human readable </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bench/bench_read.html"> bench::in </a> &#183; <a href="tcllib/files/modules/bench/bench_wtext.html"> bench::out::text </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key330"> hyphenation </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/textutil/textutil.html"> textutil </a> &#183; <a href="tcllib/files/modules/textutil/adjust.html"> textutil::adjust </a>







|









|









|







1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key810"> horspool </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_aycock/aycock.html"> grammar::aycock </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key18"> HTML </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctools.html"> doctools </a> &#183; <a href="tcllib/files/modules/doctools2base/html_cssdefaults.html"> doctools::html::cssdefaults </a> &#183; <a href="tcllib/files/modules/doctools/docidx.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export.html"> doctools::idx::export </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_html.html"> doctools::idx::export::html </a> &#183; <a href="tcllib/files/modules/doctools/doctoc.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/container.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/export.html"> doctools::toc::export </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_html.html"> doctools::toc::export::html </a> &#183; <a href="tcllib/files/apps/dtplite.html"> dtplite </a> &#183; <a href="tcllib/files/modules/dtplite/dtplite.html"> dtplite </a> &#183; <a href="tcllib/files/modules/doctools/mpexpand.html"> mpexpand </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key597"> html </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/html/html.html"> html </a> &#183; <a href="tcllib/files/modules/htmlparse/htmlparse.html"> htmlparse </a> &#183; <a href="tcllib/files/modules/javascript/javascript.html"> javascript </a> &#183; <a href="tcllib/files/modules/ncgi/ncgi.html"> ncgi </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key505"> http </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/http/autoproxy.html"> autoproxy </a> &#183; <a href="tcllib/files/modules/map/map_geocode_nominatim.html"> map::geocode::nominatim </a> &#183; <a href="tcllib/files/modules/map/map_slippy_fetcher.html"> map::slippy::fetcher </a> &#183; <a href="tcllib/files/modules/uri/uri.html"> uri </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key568"> huddle </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/yaml/huddle.html"> huddle </a> &#183; <a href="tcllib/files/modules/yaml/yaml.html"> yaml </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key481"> human readable </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bench/bench_read.html"> bench::in </a> &#183; <a href="tcllib/files/modules/bench/bench_wtext.html"> bench::out::text </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key330"> hyphenation </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/textutil/textutil.html"> textutil </a> &#183; <a href="tcllib/files/modules/textutil/adjust.html"> textutil::adjust </a>
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key365"> IBAN </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/valtype/iban.html"> valtype::iban </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key415"> ident </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ident/ident.html"> ident </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key417"> identification </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ident/ident.html"> ident </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key420"> identity </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/identity.html"> tcl::transform::identity </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key520"> idle </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uev/uevent_onidle.html"> uevent::onidle </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key133"> image </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/jpeg/jpeg.html"> jpeg </a> &#183; <a href="tcllib/files/modules/png/png.html"> png </a> &#183; <a href="tcllib/files/modules/tiff/tiff.html"> tiff </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key789"> imap </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/imap4/imap4.html"> imap4 </a>







|



















|







1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key365"> IBAN </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/valtype/iban.html"> valtype::iban </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key416"> ident </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ident/ident.html"> ident </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key417"> identification </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ident/ident.html"> ident </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key420"> identity </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/identity.html"> tcl::transform::identity </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key520"> idle </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uev/uevent_onidle.html"> uevent::onidle </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key134"> image </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/jpeg/jpeg.html"> jpeg </a> &#183; <a href="tcllib/files/modules/png/png.html"> png </a> &#183; <a href="tcllib/files/modules/tiff/tiff.html"> tiff </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key789"> imap </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/imap4/imap4.html"> imap4 </a>
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key59"> in-memory channel </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/tcllib_fifo.html"> tcl::chan::fifo </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_fifo2.html"> tcl::chan::fifo2 </a> &#183; <a href="tcllib/files/modules/virtchannel_base/halfpipe.html"> tcl::chan::halfpipe </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_memchan.html"> tcl::chan::memchan </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_string.html"> tcl::chan::string </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_variable.html"> tcl::chan::variable </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key681"> in-order </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_tree.html"> struct::tree </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key707"> inclusion </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_set.html"> struct::set </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key237"> Incr Tcl </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/snit/snit.html"> snit </a> &#183; <a href="tcllib/files/modules/snit/snitfaq.html"> snitfaq </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key325"> indenting </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/textutil/textutil.html"> textutil </a> &#183; <a href="tcllib/files/modules/textutil/adjust.html"> textutil::adjust </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key447"> independent set </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key182"> index </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/docidx_intro.html"> docidx_intro </a> &#183; <a href="tcllib/files/modules/doctools/docidx_plugin_apiref.html"> docidx_plugin_apiref </a> &#183; <a href="tcllib/files/modules/doctools2idx/introduction.html"> doctools2idx_introduction </a> &#183; <a href="tcllib/files/modules/doctools/docidx.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export.html"> doctools::idx::export </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_docidx.html"> doctools::idx::export::docidx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_html.html"> doctools::idx::export::html </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_json.html"> doctools::idx::export::json </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_nroff.html"> doctools::idx::export::nroff </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_text.html"> doctools::idx::export::text </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_wiki.html"> doctools::idx::export::wiki </a> &#183; <a href="tcllib/files/modules/doctools2idx/import.html"> doctools::idx::import </a> &#183; <a href="tcllib/files/modules/doctools2idx/import_docidx.html"> doctools::idx::import::docidx </a> &#183; <a href="tcllib/files/modules/doctools2idx/import_json.html"> doctools::idx::import::json </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key760"> index formatter </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/docidx_plugin_apiref.html"> docidx_plugin_apiref </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key90"> info </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/namespacex/namespacex.html"> namespacex </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key546"> inner join </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key483"> input mode </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/ansi_ctrlu.html"> term::ansi::ctrl::unix </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key334"> integer </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/roman.html"> math::roman </a>







|




|




|




|














|




|




|




|







1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key59"> in-memory channel </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/tcllib_fifo.html"> tcl::chan::fifo </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_fifo2.html"> tcl::chan::fifo2 </a> &#183; <a href="tcllib/files/modules/virtchannel_base/halfpipe.html"> tcl::chan::halfpipe </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_memchan.html"> tcl::chan::memchan </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_string.html"> tcl::chan::string </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_variable.html"> tcl::chan::variable </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key682"> in-order </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_tree.html"> struct::tree </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key709"> inclusion </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_set.html"> struct::set </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key238"> Incr Tcl </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/snit/snit.html"> snit </a> &#183; <a href="tcllib/files/modules/snit/snitfaq.html"> snitfaq </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key326"> indenting </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/textutil/textutil.html"> textutil </a> &#183; <a href="tcllib/files/modules/textutil/adjust.html"> textutil::adjust </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key447"> independent set </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key182"> index </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/docidx_intro.html"> docidx_intro </a> &#183; <a href="tcllib/files/modules/doctools/docidx_plugin_apiref.html"> docidx_plugin_apiref </a> &#183; <a href="tcllib/files/modules/doctools2idx/introduction.html"> doctools2idx_introduction </a> &#183; <a href="tcllib/files/modules/doctools/docidx.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export.html"> doctools::idx::export </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_docidx.html"> doctools::idx::export::docidx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_html.html"> doctools::idx::export::html </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_json.html"> doctools::idx::export::json </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_nroff.html"> doctools::idx::export::nroff </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_text.html"> doctools::idx::export::text </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_wiki.html"> doctools::idx::export::wiki </a> &#183; <a href="tcllib/files/modules/doctools2idx/import.html"> doctools::idx::import </a> &#183; <a href="tcllib/files/modules/doctools2idx/import_docidx.html"> doctools::idx::import::docidx </a> &#183; <a href="tcllib/files/modules/doctools2idx/import_json.html"> doctools::idx::import::json </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key761"> index formatter </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/docidx_plugin_apiref.html"> docidx_plugin_apiref </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key91"> info </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/namespacex/namespacex.html"> namespacex </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key547"> inner join </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key482"> input mode </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/ansi_ctrlu.html"> term::ansi::ctrl::unix </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key334"> integer </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/roman.html"> math::roman </a>
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key46"> internationalization </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2base/tcllib_msgcat.html"> doctools::msgcat </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_c.html"> doctools::msgcat::idx::c </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_de.html"> doctools::msgcat::idx::de </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_en.html"> doctools::msgcat::idx::en </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_fr.html"> doctools::msgcat::idx::fr </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_c.html"> doctools::msgcat::toc::c </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_de.html"> doctools::msgcat::toc::de </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_en.html"> doctools::msgcat::toc::en </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_fr.html"> doctools::msgcat::toc::fr </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key136"> internet </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/asn/asn.html"> asn </a> &#183; <a href="tcllib/files/modules/ftp/ftp.html"> ftp </a> &#183; <a href="tcllib/files/modules/ftp/ftp_geturl.html"> ftp::geturl </a> &#183; <a href="tcllib/files/modules/imap4/imap4.html"> imap4 </a> &#183; <a href="tcllib/files/modules/ldap/ldap.html"> ldap </a> &#183; <a href="tcllib/files/modules/ldap/ldapx.html"> ldapx </a> &#183; <a href="tcllib/files/modules/mime/mime.html"> mime </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d.html"> pop3d </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d_dbox.html"> pop3d::dbox </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d_udb.html"> pop3d::udb </a> &#183; <a href="tcllib/files/modules/mime/smtp.html"> smtp </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key428"> internet address </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/dns/tcllib_ip.html"> tcllib_ip </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key819"> interpolation </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/interpolate.html"> math::interpolate </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key33"> interpreter </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/interp/deleg_method.html"> deleg_method </a> &#183; <a href="tcllib/files/modules/interp/deleg_proc.html"> deleg_proc </a> &#183; <a href="tcllib/files/modules/interp/tcllib_interp.html"> interp </a> &#183; <a href="tcllib/files/modules/wip/wip.html"> wip </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key714"> intersection </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_set.html"> struct::set </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key730"> interval </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/bigfloat.html"> math::bigfloat </a>







|














|




|







1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key46"> internationalization </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2base/tcllib_msgcat.html"> doctools::msgcat </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_c.html"> doctools::msgcat::idx::c </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_de.html"> doctools::msgcat::idx::de </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_en.html"> doctools::msgcat::idx::en </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_fr.html"> doctools::msgcat::idx::fr </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_c.html"> doctools::msgcat::toc::c </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_de.html"> doctools::msgcat::toc::de </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_en.html"> doctools::msgcat::toc::en </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_fr.html"> doctools::msgcat::toc::fr </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key138"> internet </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/asn/asn.html"> asn </a> &#183; <a href="tcllib/files/modules/ftp/ftp.html"> ftp </a> &#183; <a href="tcllib/files/modules/ftp/ftp_geturl.html"> ftp::geturl </a> &#183; <a href="tcllib/files/modules/imap4/imap4.html"> imap4 </a> &#183; <a href="tcllib/files/modules/ldap/ldap.html"> ldap </a> &#183; <a href="tcllib/files/modules/ldap/ldapx.html"> ldapx </a> &#183; <a href="tcllib/files/modules/mime/mime.html"> mime </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d.html"> pop3d </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d_dbox.html"> pop3d::dbox </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d_udb.html"> pop3d::udb </a> &#183; <a href="tcllib/files/modules/mime/smtp.html"> smtp </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key428"> internet address </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/dns/tcllib_ip.html"> tcllib_ip </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key819"> interpolation </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/interpolate.html"> math::interpolate </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key31"> interpreter </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/interp/deleg_method.html"> deleg_method </a> &#183; <a href="tcllib/files/modules/interp/deleg_proc.html"> deleg_proc </a> &#183; <a href="tcllib/files/modules/interp/tcllib_interp.html"> interp </a> &#183; <a href="tcllib/files/modules/wip/wip.html"> wip </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key713"> intersection </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_set.html"> struct::set </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key730"> interval </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/bigfloat.html"> math::bigfloat </a>
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key467"> isthmus </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key214"> iterator </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/generator/generator.html"> generator </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c13">Keywords: J</a>
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key191"> javascript </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/javascript/javascript.html"> javascript </a> &#183; <a href="tcllib/files/modules/json/json.html"> json </a> &#183; <a href="tcllib/files/modules/json/json_write.html"> json::write </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key162"> jfif </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/jpeg/jpeg.html"> jpeg </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key539"> join </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key161"> jpeg </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/exif/exif.html"> exif </a> &#183; <a href="tcllib/files/modules/jpeg/jpeg.html"> jpeg </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key257"> JSON </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2idx/export_json.html"> doctools::idx::export::json </a> &#183; <a href="tcllib/files/modules/doctools2idx/import_json.html"> doctools::idx::import::json </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_json.html"> doctools::toc::export::json </a> &#183; <a href="tcllib/files/modules/doctools2toc/import_json.html"> doctools::toc::import::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_json.html"> pt::peg::export::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_json.html"> pt::peg::from::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_json.html"> pt::peg::import::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_json.html"> pt::peg::to::json </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key190"> json </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export.html"> doctools::idx::export </a> &#183; <a href="tcllib/files/modules/doctools2idx/import.html"> doctools::idx::import </a> &#183; <a href="tcllib/files/modules/doctools2toc/container.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/export.html"> doctools::toc::export </a> &#183; <a href="tcllib/files/modules/doctools2toc/import.html"> doctools::toc::import </a> &#183; <a href="tcllib/files/modules/yaml/huddle.html"> huddle </a> &#183; <a href="tcllib/files/modules/json/json.html"> json </a> &#183; <a href="tcllib/files/modules/json/json_write.html"> json::write </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key326"> justification </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/textutil/adjust.html"> textutil::adjust </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c14">Keywords: K</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key184"> keyword index </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/docidx_intro.html"> docidx_intro </a> &#183; <a href="tcllib/files/modules/doctools2idx/introduction.html"> doctools2idx_introduction </a> &#183; <a href="tcllib/files/modules/doctools/docidx.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export.html"> doctools::idx::export </a> &#183; <a href="tcllib/files/modules/doctools2idx/import.html"> doctools::idx::import </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key761"> keywords </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/docidx_plugin_apiref.html"> docidx_plugin_apiref </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key264"> knuth </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/soundex/soundex.html"> soundex </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c15">Keywords: L</a>
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key49"> l10n </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2base/tcllib_msgcat.html"> doctools::msgcat </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_c.html"> doctools::msgcat::idx::c </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_de.html"> doctools::msgcat::idx::de </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_en.html"> doctools::msgcat::idx::en </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_fr.html"> doctools::msgcat::idx::fr </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_c.html"> doctools::msgcat::toc::c </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_de.html"> doctools::msgcat::toc::de </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_en.html"> doctools::msgcat::toc::en </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_fr.html"> doctools::msgcat::toc::fr </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key573"> lambda </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/lambda/lambda.html"> lambda </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key414"> LaTeX </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/docstrip/docstrip.html"> docstrip </a> &#183; <a href="tcllib/files/apps/tcldocstrip.html"> tcldocstrip </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key186"> latex </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/docidx.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools/doctoc.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/container.html"> doctools::toc </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key198"> latitute </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/map/map_slippy.html"> map::slippy </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key138"> ldap </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ldap/ldap.html"> ldap </a> &#183; <a href="tcllib/files/modules/ldap/ldapx.html"> ldapx </a> &#183; <a href="tcllib/files/modules/uri/uri.html"> uri </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key135"> ldap client </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ldap/ldap.html"> ldap </a> &#183; <a href="tcllib/files/modules/ldap/ldapx.html"> ldapx </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key479"> ldif </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ldap/ldapx.html"> ldapx </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key64"> least squares </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/linalg.html"> math::linearalgebra </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key532"> left outer join </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key197"> lemon </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/page/page_util_norm_lemon.html"> page_util_norm_lemon </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key463"> level graph </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key370"> lexer </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2idx/parse.html"> doctools::idx::parse </a> &#183; <a href="tcllib/files/modules/doctools2toc/parse.html"> doctools::toc::parse </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key679"> lexing </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/string/token.html"> string::token </a> &#183; <a href="tcllib/files/modules/string/token_shell.html"> string::token::shell </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key705"> limitsize </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/limitsize.html"> tcl::transform::limitsize </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key556"> line </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/math_geometry.html"> math::geometry </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key65"> linear algebra </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/linalg.html"> math::linearalgebra </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key62"> linear equations </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/linalg.html"> math::linearalgebra </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key289"> linear program </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/optimize.html"> math::optimize </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key487"> lines </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/ansi_ctrlu.html"> term::ansi::ctrl::unix </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key278"> list </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a> &#183; <a href="tcllib/files/modules/struct/queue.html"> struct::queue </a> &#183; <a href="tcllib/files/modules/wip/wip.html"> wip </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key109"> listener </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/receive.html"> term::receive </a> &#183; <a href="tcllib/files/modules/term/term_bind.html"> term::receive::bind </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key411"> literate programming </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/docstrip/docstrip.html"> docstrip </a> &#183; <a href="tcllib/files/modules/docstrip/docstrip_util.html"> docstrip_util </a> &#183; <a href="tcllib/files/apps/tcldocstrip.html"> tcldocstrip </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key15"> LL(k) </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_me/me_intro.html"> grammar::me_intro </a> &#183; <a href="tcllib/files/modules/grammar_peg/peg.html"> grammar::peg </a> &#183; <a href="tcllib/files/modules/grammar_peg/peg_interp.html"> grammar::peg::interp </a> &#183; <a href="tcllib/files/apps/pt.html"> pt </a> &#183; <a href="tcllib/files/modules/pt/pt_astree.html"> pt::ast </a> &#183; <a href="tcllib/files/modules/pt/pt_cparam_config_critcl.html"> pt::cparam::configuration::critcl </a> &#183; <a href="tcllib/files/modules/pt/pt_json_language.html"> pt::json_language </a> &#183; <a href="tcllib/files/modules/pt/pt_param.html"> pt::param </a> &#183; <a href="tcllib/files/modules/pt/pt_pexpression.html"> pt::pe </a> &#183; <a href="tcllib/files/modules/pt/pt_pexpr_op.html"> pt::pe::op </a> &#183; <a href="tcllib/files/modules/pt/pt_pegrammar.html"> pt::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_container.html"> pt::peg::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_container_peg.html"> pt::peg::container::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export.html"> pt::peg::export </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_container.html"> pt::peg::export::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_json.html"> pt::peg::export::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_peg.html"> pt::peg::export::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_container.html"> pt::peg::from::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_json.html"> pt::peg::from::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_peg.html"> pt::peg::from::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import.html"> pt::peg::import </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_container.html"> pt::peg::import::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_json.html"> pt::peg::import::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_peg.html"> pt::peg::import::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_interp.html"> pt::peg::interp </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_container.html"> pt::peg::to::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_cparam.html"> pt::peg::to::cparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_json.html"> pt::peg::to::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_param.html"> pt::peg::to::param </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_peg.html"> pt::peg::to::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_tclparam.html"> pt::peg::to::tclparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_language.html"> pt::peg_language </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_introduction.html"> pt::pegrammar </a> &#183; <a href="tcllib/files/modules/pt/pt_pgen.html"> pt::pgen </a> &#183; <a href="tcllib/files/modules/pt/pt_rdengine.html"> pt::rde </a> &#183; <a href="tcllib/files/modules/pt/pt_tclparam_config_snit.html"> pt::tclparam::configuration::snit </a> &#183; <a href="tcllib/files/modules/pt/pt_tclparam_config_tcloo.html"> pt::tclparam::configuration::tcloo </a> &#183; <a href="tcllib/files/modules/pt/pt_to_api.html"> pt_export_api </a> &#183; <a href="tcllib/files/modules/pt/pt_from_api.html"> pt_import_api </a> &#183; <a href="tcllib/files/modules/pt/pt_introduction.html"> pt_introduction </a> &#183; <a href="tcllib/files/modules/pt/pt_parser_api.html"> pt_parser_api </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key458"> local searching </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key45"> localization </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2base/tcllib_msgcat.html"> doctools::msgcat </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_c.html"> doctools::msgcat::idx::c </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_de.html"> doctools::msgcat::idx::de </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_en.html"> doctools::msgcat::idx::en </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_fr.html"> doctools::msgcat::idx::fr </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_c.html"> doctools::msgcat::toc::c </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_de.html"> doctools::msgcat::toc::de </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_en.html"> doctools::msgcat::toc::en </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_fr.html"> doctools::msgcat::toc::fr </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key201"> location </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/map/map_geocode_nominatim.html"> map::geocode::nominatim </a> &#183; <a href="tcllib/files/modules/map/map_slippy.html"> map::slippy </a> &#183; <a href="tcllib/files/modules/map/map_slippy_cache.html"> map::slippy::cache </a> &#183; <a href="tcllib/files/modules/map/map_slippy_fetcher.html"> map::slippy::fetcher </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key69"> log </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/debug/debug.html"> debug </a> &#183; <a href="tcllib/files/modules/debug/debug_caller.html"> debug::caller </a> &#183; <a href="tcllib/files/modules/debug/debug_heartbeat.html"> debug::heartbeat </a> &#183; <a href="tcllib/files/modules/debug/debug_timestamp.html"> debug::timestamp </a> &#183; <a href="tcllib/files/modules/doctools/cvs.html"> doctools::cvs </a> &#183; <a href="tcllib/files/modules/log/log.html"> log </a> &#183; <a href="tcllib/files/modules/log/logger.html"> logger </a>







|

















|



















|












|




|












|




|














|














|









|














|




|




|




|




|




|









|









|



















|







1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key467"> isthmus </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key213"> iterator </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/generator/generator.html"> generator </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c13">Keywords: J</a>
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key191"> javascript </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/javascript/javascript.html"> javascript </a> &#183; <a href="tcllib/files/modules/json/json.html"> json </a> &#183; <a href="tcllib/files/modules/json/json_write.html"> json::write </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key162"> jfif </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/jpeg/jpeg.html"> jpeg </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key538"> join </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key161"> jpeg </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/exif/exif.html"> exif </a> &#183; <a href="tcllib/files/modules/jpeg/jpeg.html"> jpeg </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key257"> JSON </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2idx/export_json.html"> doctools::idx::export::json </a> &#183; <a href="tcllib/files/modules/doctools2idx/import_json.html"> doctools::idx::import::json </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_json.html"> doctools::toc::export::json </a> &#183; <a href="tcllib/files/modules/doctools2toc/import_json.html"> doctools::toc::import::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_json.html"> pt::peg::export::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_json.html"> pt::peg::from::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_json.html"> pt::peg::import::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_json.html"> pt::peg::to::json </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key190"> json </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export.html"> doctools::idx::export </a> &#183; <a href="tcllib/files/modules/doctools2idx/import.html"> doctools::idx::import </a> &#183; <a href="tcllib/files/modules/doctools2toc/container.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/export.html"> doctools::toc::export </a> &#183; <a href="tcllib/files/modules/doctools2toc/import.html"> doctools::toc::import </a> &#183; <a href="tcllib/files/modules/yaml/huddle.html"> huddle </a> &#183; <a href="tcllib/files/modules/json/json.html"> json </a> &#183; <a href="tcllib/files/modules/json/json_write.html"> json::write </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key325"> justification </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/textutil/adjust.html"> textutil::adjust </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c14">Keywords: K</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key184"> keyword index </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/docidx_intro.html"> docidx_intro </a> &#183; <a href="tcllib/files/modules/doctools2idx/introduction.html"> doctools2idx_introduction </a> &#183; <a href="tcllib/files/modules/doctools/docidx.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export.html"> doctools::idx::export </a> &#183; <a href="tcllib/files/modules/doctools2idx/import.html"> doctools::idx::import </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key760"> keywords </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/docidx_plugin_apiref.html"> docidx_plugin_apiref </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key265"> knuth </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/soundex/soundex.html"> soundex </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c15">Keywords: L</a>
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key49"> l10n </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2base/tcllib_msgcat.html"> doctools::msgcat </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_c.html"> doctools::msgcat::idx::c </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_de.html"> doctools::msgcat::idx::de </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_en.html"> doctools::msgcat::idx::en </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_fr.html"> doctools::msgcat::idx::fr </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_c.html"> doctools::msgcat::toc::c </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_de.html"> doctools::msgcat::toc::de </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_en.html"> doctools::msgcat::toc::en </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_fr.html"> doctools::msgcat::toc::fr </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key572"> lambda </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/lambda/lambda.html"> lambda </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key413"> LaTeX </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/docstrip/docstrip.html"> docstrip </a> &#183; <a href="tcllib/files/apps/tcldocstrip.html"> tcldocstrip </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key186"> latex </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/docidx.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools/doctoc.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/container.html"> doctools::toc </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key198"> latitute </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/map/map_slippy.html"> map::slippy </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key137"> ldap </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ldap/ldap.html"> ldap </a> &#183; <a href="tcllib/files/modules/ldap/ldapx.html"> ldapx </a> &#183; <a href="tcllib/files/modules/uri/uri.html"> uri </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key135"> ldap client </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ldap/ldap.html"> ldap </a> &#183; <a href="tcllib/files/modules/ldap/ldapx.html"> ldapx </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key479"> ldif </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ldap/ldapx.html"> ldapx </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key65"> least squares </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/linalg.html"> math::linearalgebra </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key532"> left outer join </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key196"> lemon </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/page/page_util_norm_lemon.html"> page_util_norm_lemon </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key463"> level graph </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key370"> lexer </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2idx/parse.html"> doctools::idx::parse </a> &#183; <a href="tcllib/files/modules/doctools2toc/parse.html"> doctools::toc::parse </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key680"> lexing </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/string/token.html"> string::token </a> &#183; <a href="tcllib/files/modules/string/token_shell.html"> string::token::shell </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key706"> limitsize </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/limitsize.html"> tcl::transform::limitsize </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key557"> line </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/math_geometry.html"> math::geometry </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key64"> linear algebra </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/linalg.html"> math::linearalgebra </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key63"> linear equations </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/linalg.html"> math::linearalgebra </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key290"> linear program </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/optimize.html"> math::optimize </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key487"> lines </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/ansi_ctrlu.html"> term::ansi::ctrl::unix </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key280"> list </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a> &#183; <a href="tcllib/files/modules/struct/queue.html"> struct::queue </a> &#183; <a href="tcllib/files/modules/wip/wip.html"> wip </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key109"> listener </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/receive.html"> term::receive </a> &#183; <a href="tcllib/files/modules/term/term_bind.html"> term::receive::bind </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key412"> literate programming </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/docstrip/docstrip.html"> docstrip </a> &#183; <a href="tcllib/files/modules/docstrip/docstrip_util.html"> docstrip_util </a> &#183; <a href="tcllib/files/apps/tcldocstrip.html"> tcldocstrip </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key15"> LL(k) </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_me/me_intro.html"> grammar::me_intro </a> &#183; <a href="tcllib/files/modules/grammar_peg/peg.html"> grammar::peg </a> &#183; <a href="tcllib/files/modules/grammar_peg/peg_interp.html"> grammar::peg::interp </a> &#183; <a href="tcllib/files/apps/pt.html"> pt </a> &#183; <a href="tcllib/files/modules/pt/pt_astree.html"> pt::ast </a> &#183; <a href="tcllib/files/modules/pt/pt_cparam_config_critcl.html"> pt::cparam::configuration::critcl </a> &#183; <a href="tcllib/files/modules/pt/pt_json_language.html"> pt::json_language </a> &#183; <a href="tcllib/files/modules/pt/pt_param.html"> pt::param </a> &#183; <a href="tcllib/files/modules/pt/pt_pexpression.html"> pt::pe </a> &#183; <a href="tcllib/files/modules/pt/pt_pexpr_op.html"> pt::pe::op </a> &#183; <a href="tcllib/files/modules/pt/pt_pegrammar.html"> pt::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_container.html"> pt::peg::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_container_peg.html"> pt::peg::container::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export.html"> pt::peg::export </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_container.html"> pt::peg::export::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_json.html"> pt::peg::export::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_peg.html"> pt::peg::export::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_container.html"> pt::peg::from::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_json.html"> pt::peg::from::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_peg.html"> pt::peg::from::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import.html"> pt::peg::import </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_container.html"> pt::peg::import::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_json.html"> pt::peg::import::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_peg.html"> pt::peg::import::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_interp.html"> pt::peg::interp </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_container.html"> pt::peg::to::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_cparam.html"> pt::peg::to::cparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_json.html"> pt::peg::to::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_param.html"> pt::peg::to::param </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_peg.html"> pt::peg::to::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_tclparam.html"> pt::peg::to::tclparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_language.html"> pt::peg_language </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_introduction.html"> pt::pegrammar </a> &#183; <a href="tcllib/files/modules/pt/pt_pgen.html"> pt::pgen </a> &#183; <a href="tcllib/files/modules/pt/pt_rdengine.html"> pt::rde </a> &#183; <a href="tcllib/files/modules/pt/pt_tclparam_config_snit.html"> pt::tclparam::configuration::snit </a> &#183; <a href="tcllib/files/modules/pt/pt_tclparam_config_tcloo.html"> pt::tclparam::configuration::tcloo </a> &#183; <a href="tcllib/files/modules/pt/pt_to_api.html"> pt_export_api </a> &#183; <a href="tcllib/files/modules/pt/pt_from_api.html"> pt_import_api </a> &#183; <a href="tcllib/files/modules/pt/pt_introduction.html"> pt_introduction </a> &#183; <a href="tcllib/files/modules/pt/pt_parser_api.html"> pt_parser_api </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key458"> local searching </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key45"> localization </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2base/tcllib_msgcat.html"> doctools::msgcat </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_c.html"> doctools::msgcat::idx::c </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_de.html"> doctools::msgcat::idx::de </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_en.html"> doctools::msgcat::idx::en </a> &#183; <a href="tcllib/files/modules/doctools2idx/msgcat_fr.html"> doctools::msgcat::idx::fr </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_c.html"> doctools::msgcat::toc::c </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_de.html"> doctools::msgcat::toc::de </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_en.html"> doctools::msgcat::toc::en </a> &#183; <a href="tcllib/files/modules/doctools2toc/msgcat_fr.html"> doctools::msgcat::toc::fr </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key202"> location </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/map/map_geocode_nominatim.html"> map::geocode::nominatim </a> &#183; <a href="tcllib/files/modules/map/map_slippy.html"> map::slippy </a> &#183; <a href="tcllib/files/modules/map/map_slippy_cache.html"> map::slippy::cache </a> &#183; <a href="tcllib/files/modules/map/map_slippy_fetcher.html"> map::slippy::fetcher </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key69"> log </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/debug/debug.html"> debug </a> &#183; <a href="tcllib/files/modules/debug/debug_caller.html"> debug::caller </a> &#183; <a href="tcllib/files/modules/debug/debug_heartbeat.html"> debug::heartbeat </a> &#183; <a href="tcllib/files/modules/debug/debug_timestamp.html"> debug::timestamp </a> &#183; <a href="tcllib/files/modules/doctools/cvs.html"> doctools::cvs </a> &#183; <a href="tcllib/files/modules/log/log.html"> log </a> &#183; <a href="tcllib/files/modules/log/logger.html"> logger </a>
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key503"> man_macros </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2base/nroff_manmacros.html"> doctools::nroff::man_macros </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key18"> manpage </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctools.html"> doctools </a> &#183; <a href="tcllib/files/modules/doctools/docidx.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export.html"> doctools::idx::export </a> &#183; <a href="tcllib/files/modules/doctools2idx/import.html"> doctools::idx::import </a> &#183; <a href="tcllib/files/modules/doctools/doctoc.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/export.html"> doctools::toc::export </a> &#183; <a href="tcllib/files/modules/doctools2toc/import.html"> doctools::toc::import </a> &#183; <a href="tcllib/files/modules/doctools/doctools_plugin_apiref.html"> doctools_plugin_apiref </a> &#183; <a href="tcllib/files/apps/dtplite.html"> dtplite </a> &#183; <a href="tcllib/files/modules/dtplite/dtplite.html"> dtplite </a> &#183; <a href="tcllib/files/modules/doctools/mpexpand.html"> mpexpand </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key204"> map </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/generator/generator.html"> generator </a> &#183; <a href="tcllib/files/modules/map/map_geocode_nominatim.html"> map::geocode::nominatim </a> &#183; <a href="tcllib/files/modules/map/map_slippy.html"> map::slippy </a> &#183; <a href="tcllib/files/modules/map/map_slippy_cache.html"> map::slippy::cache </a> &#183; <a href="tcllib/files/modules/map/map_slippy_fetcher.html"> map::slippy::fetcher </a> &#183; <a href="tcllib/files/modules/mapproj/mapproj.html"> mapproj </a> &#183; <a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key16"> markup </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/docidx_intro.html"> docidx_intro </a> &#183; <a href="tcllib/files/modules/doctools/docidx_lang_cmdref.html"> docidx_lang_cmdref </a> &#183; <a href="tcllib/files/modules/doctools/docidx_lang_faq.html"> docidx_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/docidx_lang_intro.html"> docidx_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/docidx_lang_syntax.html"> docidx_lang_syntax </a> &#183; <a href="tcllib/files/modules/doctools/docidx_plugin_apiref.html"> docidx_plugin_apiref </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_intro.html"> doctoc_intro </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_cmdref.html"> doctoc_lang_cmdref </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_faq.html"> doctoc_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_intro.html"> doctoc_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_syntax.html"> doctoc_lang_syntax </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_plugin_apiref.html"> doctoc_plugin_apiref </a> &#183; <a href="tcllib/files/modules/doctools/doctools.html"> doctools </a> &#183; <a href="tcllib/files/modules/doctools2idx/introduction.html"> doctools2idx_introduction </a> &#183; <a href="tcllib/files/modules/doctools2toc/introduction.html"> doctools2toc_introduction </a> &#183; <a href="tcllib/files/modules/doctools/docidx.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export.html"> doctools::idx::export </a> &#183; <a href="tcllib/files/modules/doctools2idx/import.html"> doctools::idx::import </a> &#183; <a href="tcllib/files/modules/doctools/doctoc.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/container.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/export.html"> doctools::toc::export </a> &#183; <a href="tcllib/files/modules/doctools2toc/import.html"> doctools::toc::import </a> &#183; <a href="tcllib/files/modules/doctools/doctools_intro.html"> doctools_intro </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_cmdref.html"> doctools_lang_cmdref </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_faq.html"> doctools_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_intro.html"> doctools_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_syntax.html"> doctools_lang_syntax </a> &#183; <a href="tcllib/files/modules/doctools/doctools_plugin_apiref.html"> doctools_plugin_apiref </a> &#183; <a href="tcllib/files/apps/dtplite.html"> dtplite </a> &#183; <a href="tcllib/files/modules/dtplite/dtplite.html"> dtplite </a> &#183; <a href="tcllib/files/modules/doctools/mpexpand.html"> mpexpand </a> &#183; <a href="tcllib/files/apps/tcldocstrip.html"> tcldocstrip </a>







|




|







2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key503"> man_macros </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2base/nroff_manmacros.html"> doctools::nroff::man_macros </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key17"> manpage </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctools.html"> doctools </a> &#183; <a href="tcllib/files/modules/doctools/docidx.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export.html"> doctools::idx::export </a> &#183; <a href="tcllib/files/modules/doctools2idx/import.html"> doctools::idx::import </a> &#183; <a href="tcllib/files/modules/doctools/doctoc.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/export.html"> doctools::toc::export </a> &#183; <a href="tcllib/files/modules/doctools2toc/import.html"> doctools::toc::import </a> &#183; <a href="tcllib/files/modules/doctools/doctools_plugin_apiref.html"> doctools_plugin_apiref </a> &#183; <a href="tcllib/files/apps/dtplite.html"> dtplite </a> &#183; <a href="tcllib/files/modules/dtplite/dtplite.html"> dtplite </a> &#183; <a href="tcllib/files/modules/doctools/mpexpand.html"> mpexpand </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key203"> map </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/generator/generator.html"> generator </a> &#183; <a href="tcllib/files/modules/map/map_geocode_nominatim.html"> map::geocode::nominatim </a> &#183; <a href="tcllib/files/modules/map/map_slippy.html"> map::slippy </a> &#183; <a href="tcllib/files/modules/map/map_slippy_cache.html"> map::slippy::cache </a> &#183; <a href="tcllib/files/modules/map/map_slippy_fetcher.html"> map::slippy::fetcher </a> &#183; <a href="tcllib/files/modules/mapproj/mapproj.html"> mapproj </a> &#183; <a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key16"> markup </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/docidx_intro.html"> docidx_intro </a> &#183; <a href="tcllib/files/modules/doctools/docidx_lang_cmdref.html"> docidx_lang_cmdref </a> &#183; <a href="tcllib/files/modules/doctools/docidx_lang_faq.html"> docidx_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/docidx_lang_intro.html"> docidx_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/docidx_lang_syntax.html"> docidx_lang_syntax </a> &#183; <a href="tcllib/files/modules/doctools/docidx_plugin_apiref.html"> docidx_plugin_apiref </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_intro.html"> doctoc_intro </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_cmdref.html"> doctoc_lang_cmdref </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_faq.html"> doctoc_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_intro.html"> doctoc_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_lang_syntax.html"> doctoc_lang_syntax </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_plugin_apiref.html"> doctoc_plugin_apiref </a> &#183; <a href="tcllib/files/modules/doctools/doctools.html"> doctools </a> &#183; <a href="tcllib/files/modules/doctools2idx/introduction.html"> doctools2idx_introduction </a> &#183; <a href="tcllib/files/modules/doctools2toc/introduction.html"> doctools2toc_introduction </a> &#183; <a href="tcllib/files/modules/doctools/docidx.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export.html"> doctools::idx::export </a> &#183; <a href="tcllib/files/modules/doctools2idx/import.html"> doctools::idx::import </a> &#183; <a href="tcllib/files/modules/doctools/doctoc.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/container.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/export.html"> doctools::toc::export </a> &#183; <a href="tcllib/files/modules/doctools2toc/import.html"> doctools::toc::import </a> &#183; <a href="tcllib/files/modules/doctools/doctools_intro.html"> doctools_intro </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_cmdref.html"> doctools_lang_cmdref </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_faq.html"> doctools_lang_faq </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_intro.html"> doctools_lang_intro </a> &#183; <a href="tcllib/files/modules/doctools/doctools_lang_syntax.html"> doctools_lang_syntax </a> &#183; <a href="tcllib/files/modules/doctools/doctools_plugin_apiref.html"> doctools_plugin_apiref </a> &#183; <a href="tcllib/files/apps/dtplite.html"> dtplite </a> &#183; <a href="tcllib/files/modules/dtplite/dtplite.html"> dtplite </a> &#183; <a href="tcllib/files/modules/doctools/mpexpand.html"> mpexpand </a> &#183; <a href="tcllib/files/apps/tcldocstrip.html"> tcldocstrip </a>
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key602"> mathematics </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/fourier.html"> math::fourier </a> &#183; <a href="tcllib/files/modules/math/statistics.html"> math::statistics </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key63"> matrices </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/linalg.html"> math::linearalgebra </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key55"> matrix </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/csv/csv.html"> csv </a> &#183; <a href="tcllib/files/modules/math/linalg.html"> math::linearalgebra </a> &#183; <a href="tcllib/files/modules/report/report.html"> report </a> &#183; <a href="tcllib/files/modules/struct/matrix.html"> struct::matrix </a> &#183; <a href="tcllib/files/modules/struct/matrix1.html"> struct::matrix_v1 </a> &#183; <a href="tcllib/files/modules/struct/queue.html"> struct::queue </a> &#183; <a href="tcllib/files/modules/struct/stack.html"> struct::stack </a>







|







2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key602"> mathematics </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/fourier.html"> math::fourier </a> &#183; <a href="tcllib/files/modules/math/statistics.html"> math::statistics </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key62"> matrices </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/linalg.html"> math::linearalgebra </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key55"> matrix </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/csv/csv.html"> csv </a> &#183; <a href="tcllib/files/modules/math/linalg.html"> math::linearalgebra </a> &#183; <a href="tcllib/files/modules/report/report.html"> report </a> &#183; <a href="tcllib/files/modules/struct/matrix.html"> struct::matrix </a> &#183; <a href="tcllib/files/modules/struct/matrix1.html"> struct::matrix_v1 </a> &#183; <a href="tcllib/files/modules/struct/queue.html"> struct::queue </a> &#183; <a href="tcllib/files/modules/struct/stack.html"> struct::stack </a>
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key474"> maximum flow </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key358"> md4 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/md4/md4.html"> md4 </a> &#183; <a href="tcllib/files/modules/ripemd/ripemd128.html"> ripemd128 </a> &#183; <a href="tcllib/files/modules/ripemd/ripemd160.html"> ripemd160 </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key644"> md5 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/md5/md5.html"> md5 </a> &#183; <a href="tcllib/files/modules/md5crypt/md5crypt.html"> md5crypt </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key742"> md5crypt </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/md5crypt/md5crypt.html"> md5crypt </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key241"> medicare </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/valtype/usnpi.html"> valtype::usnpi </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key232"> mega widget </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/snit/snit.html"> snit </a> &#183; <a href="tcllib/files/modules/snit/snitfaq.html"> snitfaq </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key709"> membership </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_set.html"> struct::set </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key662"> menu </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/ansi_cmacros.html"> term::ansi::code::macros </a> &#183; <a href="tcllib/files/modules/term/imenu.html"> term::interact::menu </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key518"> merge </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/randseed.html"> tcl::chan::randseed </a> &#183; <a href="tcllib/files/modules/uev/uevent_onidle.html"> uevent::onidle </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key608"> merge find </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/disjointset.html"> struct::disjointset </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key119"> merging </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bench/bench.html"> bench </a>







|



















|




|














|







2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key474"> maximum flow </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key359"> md4 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/md4/md4.html"> md4 </a> &#183; <a href="tcllib/files/modules/ripemd/ripemd128.html"> ripemd128 </a> &#183; <a href="tcllib/files/modules/ripemd/ripemd160.html"> ripemd160 </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key644"> md5 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/md5/md5.html"> md5 </a> &#183; <a href="tcllib/files/modules/md5crypt/md5crypt.html"> md5crypt </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key742"> md5crypt </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/md5crypt/md5crypt.html"> md5crypt </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key241"> medicare </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/valtype/usnpi.html"> valtype::usnpi </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key233"> mega widget </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/snit/snit.html"> snit </a> &#183; <a href="tcllib/files/modules/snit/snitfaq.html"> snitfaq </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key708"> membership </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_set.html"> struct::set </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key662"> menu </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/ansi_cmacros.html"> term::ansi::code::macros </a> &#183; <a href="tcllib/files/modules/term/imenu.html"> term::interact::menu </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key518"> merge </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/randseed.html"> tcl::chan::randseed </a> &#183; <a href="tcllib/files/modules/uev/uevent_onidle.html"> uevent::onidle </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key607"> merge find </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/disjointset.html"> struct::disjointset </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key119"> merging </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bench/bench.html"> bench </a>
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key448"> minimum cost flow </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key440"> minimum degree spanning tree </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key476"> minimum diameter spanning tree </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>







|







2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key448"> minimum cost flow </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key438"> minimum degree spanning tree </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key476"> minimum diameter spanning tree </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key677"> multiplexer </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/multiplexer/multiplexer.html"> multiplexer </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key268"> multiprecision </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/bigfloat.html"> math::bigfloat </a> &#183; <a href="tcllib/files/modules/math/bignum.html"> math::bignum </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key753"> my method </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ooutil/ooutil.html"> oo::util </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c17">Keywords: N</a>
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key29"> name service </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/nns/nns_client.html"> nameserv </a> &#183; <a href="tcllib/files/modules/nns/nns_auto.html"> nameserv::auto </a> &#183; <a href="tcllib/files/modules/nns/nns_common.html"> nameserv::common </a> &#183; <a href="tcllib/files/modules/nns/nns_protocol.html"> nameserv::protocol </a> &#183; <a href="tcllib/files/modules/nns/nns_server.html"> nameserv::server </a> &#183; <a href="tcllib/files/apps/nns.html"> nns </a> &#183; <a href="tcllib/files/modules/nns/nns_intro.html"> nns_intro </a> &#183; <a href="tcllib/files/apps/nnsd.html"> nnsd </a> &#183; <a href="tcllib/files/apps/nnslog.html"> nnslog </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key93"> namespace unknown </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/namespacex/namespacex.html"> namespacex </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key94"> namespace utilities </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/namespacex/namespacex.html"> namespacex </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key68"> narrative </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/debug/debug.html"> debug </a> &#183; <a href="tcllib/files/modules/debug/debug_caller.html"> debug::caller </a> &#183; <a href="tcllib/files/modules/debug/debug_heartbeat.html"> debug::heartbeat </a> &#183; <a href="tcllib/files/modules/debug/debug_timestamp.html"> debug::timestamp </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key239"> National Provider Identifier </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/valtype/usnpi.html"> valtype::usnpi </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key464"> neighbour </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graph.html"> struct::graph </a> &#183; <a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key276"> net </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ftp/ftp.html"> ftp </a> &#183; <a href="tcllib/files/modules/ftp/ftp_geturl.html"> ftp::geturl </a> &#183; <a href="tcllib/files/modules/imap4/imap4.html"> imap4 </a> &#183; <a href="tcllib/files/modules/mime/mime.html"> mime </a> &#183; <a href="tcllib/files/modules/mime/smtp.html"> smtp </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key654"> network </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/pop3d/pop3d.html"> pop3d </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d_dbox.html"> pop3d::dbox </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d_udb.html"> pop3d::udb </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key510"> news </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/nntp/nntp.html"> nntp </a> &#183; <a href="tcllib/files/modules/uri/uri.html"> uri </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key553"> next permutation </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key385"> nmea </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/nmea/nmea.html"> nmea </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key635"> nntp </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/nntp/nntp.html"> nntp </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key638"> nntpclient </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/nntp/nntp.html"> nntp </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key128"> no-op </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/control/control.html"> control </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key439"> node </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graph.html"> struct::graph </a> &#183; <a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a> &#183; <a href="tcllib/files/modules/struct/struct_tree.html"> struct::tree </a>







|




|












|




|














|














|




|



















|







2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key677"> multiplexer </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/multiplexer/multiplexer.html"> multiplexer </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key269"> multiprecision </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/bigfloat.html"> math::bigfloat </a> &#183; <a href="tcllib/files/modules/math/bignum.html"> math::bignum </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key752"> my method </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ooutil/ooutil.html"> oo::util </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c17">Keywords: N</a>
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key29"> name service </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/nns/nns_client.html"> nameserv </a> &#183; <a href="tcllib/files/modules/nns/nns_auto.html"> nameserv::auto </a> &#183; <a href="tcllib/files/modules/nns/nns_common.html"> nameserv::common </a> &#183; <a href="tcllib/files/modules/nns/nns_protocol.html"> nameserv::protocol </a> &#183; <a href="tcllib/files/modules/nns/nns_server.html"> nameserv::server </a> &#183; <a href="tcllib/files/apps/nns.html"> nns </a> &#183; <a href="tcllib/files/modules/nns/nns_intro.html"> nns_intro </a> &#183; <a href="tcllib/files/apps/nnsd.html"> nnsd </a> &#183; <a href="tcllib/files/apps/nnslog.html"> nnslog </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key94"> namespace unknown </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/namespacex/namespacex.html"> namespacex </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key93"> namespace utilities </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/namespacex/namespacex.html"> namespacex </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key68"> narrative </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/debug/debug.html"> debug </a> &#183; <a href="tcllib/files/modules/debug/debug_caller.html"> debug::caller </a> &#183; <a href="tcllib/files/modules/debug/debug_heartbeat.html"> debug::heartbeat </a> &#183; <a href="tcllib/files/modules/debug/debug_timestamp.html"> debug::timestamp </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key239"> National Provider Identifier </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/valtype/usnpi.html"> valtype::usnpi </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key465"> neighbour </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graph.html"> struct::graph </a> &#183; <a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key276"> net </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ftp/ftp.html"> ftp </a> &#183; <a href="tcllib/files/modules/ftp/ftp_geturl.html"> ftp::geturl </a> &#183; <a href="tcllib/files/modules/imap4/imap4.html"> imap4 </a> &#183; <a href="tcllib/files/modules/mime/mime.html"> mime </a> &#183; <a href="tcllib/files/modules/mime/smtp.html"> smtp </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key654"> network </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/pop3d/pop3d.html"> pop3d </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d_dbox.html"> pop3d::dbox </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d_udb.html"> pop3d::udb </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key511"> news </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/nntp/nntp.html"> nntp </a> &#183; <a href="tcllib/files/modules/uri/uri.html"> uri </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key555"> next permutation </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key385"> nmea </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/nmea/nmea.html"> nmea </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key635"> nntp </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/nntp/nntp.html"> nntp </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key638"> nntpclient </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/nntp/nntp.html"> nntp </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key129"> no-op </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/control/control.html"> control </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key439"> node </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graph.html"> struct::graph </a> &#183; <a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a> &#183; <a href="tcllib/files/modules/struct/struct_tree.html"> struct::tree </a>
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/numtheory.html"> math::numtheory </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c18">Keywords: O</a>
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key238"> object </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/snit/snit.html"> snit </a> &#183; <a href="tcllib/files/modules/snit/snitfaq.html"> snitfaq </a> &#183; <a href="tcllib/files/modules/stooop/stooop.html"> stooop </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key231"> object oriented </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/snit/snit.html"> snit </a> &#183; <a href="tcllib/files/modules/snit/snitfaq.html"> snitfaq </a> &#183; <a href="tcllib/files/modules/stooop/stooop.html"> stooop </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key630"> observer </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/hook/hook.html"> hook </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/observe.html"> tcl::transform::observe </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key517"> on-idle </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uev/uevent_onidle.html"> uevent::onidle </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key783"> one time pad </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/otp.html"> tcl::transform::otp </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key290"> optimization </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/optimize.html"> math::optimize </a> &#183; <a href="tcllib/files/modules/simulation/annealing.html"> simulation::annealing </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key735"> ordered list </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/prioqueue.html"> struct::prioqueue </a>







|




|



















|







2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/numtheory.html"> math::numtheory </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c18">Keywords: O</a>
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key237"> object </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/snit/snit.html"> snit </a> &#183; <a href="tcllib/files/modules/snit/snitfaq.html"> snitfaq </a> &#183; <a href="tcllib/files/modules/stooop/stooop.html"> stooop </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key230"> object oriented </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/snit/snit.html"> snit </a> &#183; <a href="tcllib/files/modules/snit/snitfaq.html"> snitfaq </a> &#183; <a href="tcllib/files/modules/stooop/stooop.html"> stooop </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key630"> observer </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/hook/hook.html"> hook </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/observe.html"> tcl::transform::observe </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key517"> on-idle </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uev/uevent_onidle.html"> uevent::onidle </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key783"> one time pad </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/otp.html"> tcl::transform::otp </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key289"> optimization </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/optimize.html"> math::optimize </a> &#183; <a href="tcllib/files/modules/simulation/annealing.html"> simulation::annealing </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key735"> ordered list </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/prioqueue.html"> struct::prioqueue </a>
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key6"> PEG </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_me/me_intro.html"> grammar::me_intro </a> &#183; <a href="tcllib/files/modules/page/page_util_norm_peg.html"> page_util_norm_peg </a> &#183; <a href="tcllib/files/modules/page/page_util_peg.html"> page_util_peg </a> &#183; <a href="tcllib/files/apps/pt.html"> pt </a> &#183; <a href="tcllib/files/modules/pt/pt_astree.html"> pt::ast </a> &#183; <a href="tcllib/files/modules/pt/pt_cparam_config_critcl.html"> pt::cparam::configuration::critcl </a> &#183; <a href="tcllib/files/modules/pt/pt_json_language.html"> pt::json_language </a> &#183; <a href="tcllib/files/modules/pt/pt_param.html"> pt::param </a> &#183; <a href="tcllib/files/modules/pt/pt_pexpression.html"> pt::pe </a> &#183; <a href="tcllib/files/modules/pt/pt_pexpr_op.html"> pt::pe::op </a> &#183; <a href="tcllib/files/modules/pt/pt_pegrammar.html"> pt::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_container.html"> pt::peg::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_container_peg.html"> pt::peg::container::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export.html"> pt::peg::export </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_container.html"> pt::peg::export::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_json.html"> pt::peg::export::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_peg.html"> pt::peg::export::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_container.html"> pt::peg::from::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_json.html"> pt::peg::from::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_peg.html"> pt::peg::from::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import.html"> pt::peg::import </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_container.html"> pt::peg::import::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_json.html"> pt::peg::import::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_peg.html"> pt::peg::import::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_interp.html"> pt::peg::interp </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_container.html"> pt::peg::to::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_cparam.html"> pt::peg::to::cparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_json.html"> pt::peg::to::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_param.html"> pt::peg::to::param </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_peg.html"> pt::peg::to::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_tclparam.html"> pt::peg::to::tclparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_language.html"> pt::peg_language </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_introduction.html"> pt::pegrammar </a> &#183; <a href="tcllib/files/modules/pt/pt_pgen.html"> pt::pgen </a> &#183; <a href="tcllib/files/modules/pt/pt_rdengine.html"> pt::rde </a> &#183; <a href="tcllib/files/modules/pt/pt_tclparam_config_snit.html"> pt::tclparam::configuration::snit </a> &#183; <a href="tcllib/files/modules/pt/pt_tclparam_config_tcloo.html"> pt::tclparam::configuration::tcloo </a> &#183; <a href="tcllib/files/modules/pt/pt_to_api.html"> pt_export_api </a> &#183; <a href="tcllib/files/modules/pt/pt_from_api.html"> pt_import_api </a> &#183; <a href="tcllib/files/modules/pt/pt_introduction.html"> pt_introduction </a> &#183; <a href="tcllib/files/modules/pt/pt_parser_api.html"> pt_parser_api </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key101"> performance </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bench/bench.html"> bench </a> &#183; <a href="tcllib/files/modules/bench/bench_read.html"> bench::in </a> &#183; <a href="tcllib/files/modules/bench/bench_wcsv.html"> bench::out::csv </a> &#183; <a href="tcllib/files/modules/bench/bench_wtext.html"> bench::out::text </a> &#183; <a href="tcllib/files/modules/bench/bench_intro.html"> bench_intro </a> &#183; <a href="tcllib/files/modules/bench/bench_lang_intro.html"> bench_lang_intro </a> &#183; <a href="tcllib/files/modules/bench/bench_lang_spec.html"> bench_lang_spec </a> &#183; <a href="tcllib/files/modules/profiler/profiler.html"> profiler </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key529"> permutation </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key37"> persistence </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/tie/tie_std.html"> tie </a> &#183; <a href="tcllib/files/modules/tie/tie.html"> tie </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key774"> phone </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/valtype/imei.html"> valtype::imei </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key793"> pi </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/constants.html"> math::constants </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key164"> plain text </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2idx/export_text.html"> doctools::idx::export::text </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_text.html"> doctools::toc::export::text </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key557"> plane geometry </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/math_geometry.html"> math::geometry </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key384"> plugin </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/docidx_plugin_apiref.html"> docidx_plugin_apiref </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_plugin_apiref.html"> doctoc_plugin_apiref </a> &#183; <a href="tcllib/files/modules/doctools2idx/introduction.html"> doctools2idx_introduction </a> &#183; <a href="tcllib/files/modules/doctools2toc/introduction.html"> doctools2toc_introduction </a> &#183; <a href="tcllib/files/modules/doctools2base/html_cssdefaults.html"> doctools::html::cssdefaults </a> &#183; <a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export.html"> doctools::idx::export </a> &#183; <a href="tcllib/files/modules/doctools2idx/import.html"> doctools::idx::import </a> &#183; <a href="tcllib/files/modules/doctools2base/nroff_manmacros.html"> doctools::nroff::man_macros </a> &#183; <a href="tcllib/files/modules/doctools2toc/container.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/export.html"> doctools::toc::export </a> &#183; <a href="tcllib/files/modules/doctools2toc/import.html"> doctools::toc::import </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_container.html"> pt::peg::export::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_json.html"> pt::peg::export::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_peg.html"> pt::peg::export::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_json.html"> pt::peg::import::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_peg.html"> pt::peg::import::peg </a>







|



















|









|







2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key6"> PEG </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_me/me_intro.html"> grammar::me_intro </a> &#183; <a href="tcllib/files/modules/page/page_util_norm_peg.html"> page_util_norm_peg </a> &#183; <a href="tcllib/files/modules/page/page_util_peg.html"> page_util_peg </a> &#183; <a href="tcllib/files/apps/pt.html"> pt </a> &#183; <a href="tcllib/files/modules/pt/pt_astree.html"> pt::ast </a> &#183; <a href="tcllib/files/modules/pt/pt_cparam_config_critcl.html"> pt::cparam::configuration::critcl </a> &#183; <a href="tcllib/files/modules/pt/pt_json_language.html"> pt::json_language </a> &#183; <a href="tcllib/files/modules/pt/pt_param.html"> pt::param </a> &#183; <a href="tcllib/files/modules/pt/pt_pexpression.html"> pt::pe </a> &#183; <a href="tcllib/files/modules/pt/pt_pexpr_op.html"> pt::pe::op </a> &#183; <a href="tcllib/files/modules/pt/pt_pegrammar.html"> pt::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_container.html"> pt::peg::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_container_peg.html"> pt::peg::container::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export.html"> pt::peg::export </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_container.html"> pt::peg::export::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_json.html"> pt::peg::export::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_peg.html"> pt::peg::export::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_container.html"> pt::peg::from::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_json.html"> pt::peg::from::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_peg.html"> pt::peg::from::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import.html"> pt::peg::import </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_container.html"> pt::peg::import::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_json.html"> pt::peg::import::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_peg.html"> pt::peg::import::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_interp.html"> pt::peg::interp </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_container.html"> pt::peg::to::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_cparam.html"> pt::peg::to::cparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_json.html"> pt::peg::to::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_param.html"> pt::peg::to::param </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_peg.html"> pt::peg::to::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_tclparam.html"> pt::peg::to::tclparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_language.html"> pt::peg_language </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_introduction.html"> pt::pegrammar </a> &#183; <a href="tcllib/files/modules/pt/pt_pgen.html"> pt::pgen </a> &#183; <a href="tcllib/files/modules/pt/pt_rdengine.html"> pt::rde </a> &#183; <a href="tcllib/files/modules/pt/pt_tclparam_config_snit.html"> pt::tclparam::configuration::snit </a> &#183; <a href="tcllib/files/modules/pt/pt_tclparam_config_tcloo.html"> pt::tclparam::configuration::tcloo </a> &#183; <a href="tcllib/files/modules/pt/pt_to_api.html"> pt_export_api </a> &#183; <a href="tcllib/files/modules/pt/pt_from_api.html"> pt_import_api </a> &#183; <a href="tcllib/files/modules/pt/pt_introduction.html"> pt_introduction </a> &#183; <a href="tcllib/files/modules/pt/pt_parser_api.html"> pt_parser_api </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key102"> performance </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bench/bench.html"> bench </a> &#183; <a href="tcllib/files/modules/bench/bench_read.html"> bench::in </a> &#183; <a href="tcllib/files/modules/bench/bench_wcsv.html"> bench::out::csv </a> &#183; <a href="tcllib/files/modules/bench/bench_wtext.html"> bench::out::text </a> &#183; <a href="tcllib/files/modules/bench/bench_intro.html"> bench_intro </a> &#183; <a href="tcllib/files/modules/bench/bench_lang_intro.html"> bench_lang_intro </a> &#183; <a href="tcllib/files/modules/bench/bench_lang_spec.html"> bench_lang_spec </a> &#183; <a href="tcllib/files/modules/profiler/profiler.html"> profiler </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key529"> permutation </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key37"> persistence </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/tie/tie_std.html"> tie </a> &#183; <a href="tcllib/files/modules/tie/tie.html"> tie </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key774"> phone </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/valtype/imei.html"> valtype::imei </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key792"> pi </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/constants.html"> math::constants </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key164"> plain text </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2idx/export_text.html"> doctools::idx::export::text </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_text.html"> doctools::toc::export::text </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key556"> plane geometry </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/math_geometry.html"> math::geometry </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key384"> plugin </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/docidx_plugin_apiref.html"> docidx_plugin_apiref </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_plugin_apiref.html"> doctoc_plugin_apiref </a> &#183; <a href="tcllib/files/modules/doctools2idx/introduction.html"> doctools2idx_introduction </a> &#183; <a href="tcllib/files/modules/doctools2toc/introduction.html"> doctools2toc_introduction </a> &#183; <a href="tcllib/files/modules/doctools2base/html_cssdefaults.html"> doctools::html::cssdefaults </a> &#183; <a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export.html"> doctools::idx::export </a> &#183; <a href="tcllib/files/modules/doctools2idx/import.html"> doctools::idx::import </a> &#183; <a href="tcllib/files/modules/doctools2base/nroff_manmacros.html"> doctools::nroff::man_macros </a> &#183; <a href="tcllib/files/modules/doctools2toc/container.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/export.html"> doctools::toc::export </a> &#183; <a href="tcllib/files/modules/doctools2toc/import.html"> doctools::toc::import </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_container.html"> pt::peg::export::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_json.html"> pt::peg::export::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_peg.html"> pt::peg::export::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_json.html"> pt::peg::import::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_peg.html"> pt::peg::import::peg </a>
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key801"> polynomial functions </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/polynomials.html"> math::polynomials </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key281"> pool </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/pool.html"> struct::pool </a> &#183; <a href="tcllib/files/modules/struct/queue.html"> struct::queue </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key423"> pop </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/pop3/pop3.html"> pop3 </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key422"> pop3 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/pop3/pop3.html"> pop3 </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d.html"> pop3d </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d_dbox.html"> pop3d::dbox </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d_udb.html"> pop3d::udb </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key685"> post-order </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_tree.html"> struct::tree </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key682"> pre-order </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_tree.html"> struct::tree </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key671"> prefix </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/textutil/textutil_string.html"> textutil::string </a> &#183; <a href="tcllib/files/modules/textutil/trim.html"> textutil::trim </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key747"> prime </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/numtheory.html"> math::numtheory </a>







|














|




|




|







2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key801"> polynomial functions </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/polynomials.html"> math::polynomials </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key282"> pool </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/pool.html"> struct::pool </a> &#183; <a href="tcllib/files/modules/struct/queue.html"> struct::queue </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key423"> pop </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/pop3/pop3.html"> pop3 </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key422"> pop3 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/pop3/pop3.html"> pop3 </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d.html"> pop3d </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d_dbox.html"> pop3d::dbox </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d_udb.html"> pop3d::udb </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key684"> post-order </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_tree.html"> struct::tree </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key681"> pre-order </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_tree.html"> struct::tree </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key670"> prefix </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/textutil/textutil_string.html"> textutil::string </a> &#183; <a href="tcllib/files/modules/textutil/trim.html"> textutil::trim </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key747"> prime </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/numtheory.html"> math::numtheory </a>
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key34"> procedure </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/interp/deleg_proc.html"> deleg_proc </a> &#183; <a href="tcllib/files/modules/tepam/tepam_introduction.html"> tepam </a> &#183; <a href="tcllib/files/modules/tepam/tepam_procedure.html"> tepam::procedure </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key657"> producer </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/hook/hook.html"> hook </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key629"> profile </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/profiler/profiler.html"> profiler </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key620"> projection </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/mapproj/mapproj.html"> mapproj </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key507"> prospero </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uri/uri.html"> uri </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key139"> protocol </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/asn/asn.html"> asn </a> &#183; <a href="tcllib/files/modules/ldap/ldap.html"> ldap </a> &#183; <a href="tcllib/files/modules/ldap/ldapx.html"> ldapx </a> &#183; <a href="tcllib/files/modules/nns/nns_protocol.html"> nameserv::protocol </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d.html"> pop3d </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d_dbox.html"> pop3d::dbox </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d_udb.html"> pop3d::udb </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key813"> proxy </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/http/autoproxy.html"> autoproxy </a>







|



















|







2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key34"> procedure </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/interp/deleg_proc.html"> deleg_proc </a> &#183; <a href="tcllib/files/modules/tepam/tepam_introduction.html"> tepam </a> &#183; <a href="tcllib/files/modules/tepam/tepam_procedure.html"> tepam::procedure </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key658"> producer </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/hook/hook.html"> hook </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key629"> profile </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/profiler/profiler.html"> profiler </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key620"> projection </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/mapproj/mapproj.html"> mapproj </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key507"> prospero </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uri/uri.html"> uri </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key140"> protocol </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/asn/asn.html"> asn </a> &#183; <a href="tcllib/files/modules/ldap/ldap.html"> ldap </a> &#183; <a href="tcllib/files/modules/ldap/ldapx.html"> ldapx </a> &#183; <a href="tcllib/files/modules/nns/nns_protocol.html"> nameserv::protocol </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d.html"> pop3d </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d_dbox.html"> pop3d::dbox </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d_udb.html"> pop3d::udb </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key813"> proxy </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/http/autoproxy.html"> autoproxy </a>
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key576"> random </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/tcllib_random.html"> tcl::chan::random </a> &#183; <a href="tcllib/files/modules/virtchannel_base/randseed.html"> tcl::chan::randseed </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key621"> random numbers </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/simulation/simulation_random.html"> simulation::random </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key639"> rational functions </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/rational_funcs.html"> math::rationalfunctions </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key485"> raw </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/ansi_ctrlu.html"> term::ansi::ctrl::unix </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key150"> rc4 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/rc4/rc4.html"> rc4 </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key614"> RCS </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/rcs/rcs.html"> rcs </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key611"> RCS patch </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/rcs/rcs.html"> rcs </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key388"> read </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/coroutine/tcllib_coroutine.html"> coroutine </a> &#183; <a href="tcllib/files/modules/coroutine/coro_auto.html"> coroutine::auto </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key502"> reading </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bench/bench_read.html"> bench::in </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key106"> receiver </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/receive.html"> term::receive </a> &#183; <a href="tcllib/files/modules/term/term_bind.html"> term::receive::bind </a> &#183; <a href="tcllib/files/modules/transfer/receiver.html"> transfer::receiver </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key492"> reconnect </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/nns/nns_auto.html"> nameserv::auto </a>







|














|




|




|














|







2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key576"> random </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/tcllib_random.html"> tcl::chan::random </a> &#183; <a href="tcllib/files/modules/virtchannel_base/randseed.html"> tcl::chan::randseed </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key623"> random numbers </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/simulation/simulation_random.html"> simulation::random </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key639"> rational functions </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/rational_funcs.html"> math::rationalfunctions </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key485"> raw </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/ansi_ctrlu.html"> term::ansi::ctrl::unix </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key149"> rc4 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/rc4/rc4.html"> rc4 </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key613"> RCS </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/rcs/rcs.html"> rcs </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key612"> RCS patch </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/rcs/rcs.html"> rcs </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key388"> read </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/coroutine/tcllib_coroutine.html"> coroutine </a> &#183; <a href="tcllib/files/modules/coroutine/coro_auto.html"> coroutine::auto </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key502"> reading </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bench/bench_read.html"> bench::in </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key105"> receiver </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/receive.html"> term::receive </a> &#183; <a href="tcllib/files/modules/term/term_bind.html"> term::receive::bind </a> &#183; <a href="tcllib/files/modules/transfer/receiver.html"> transfer::receiver </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key492"> reconnect </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/nns/nns_auto.html"> nameserv::auto </a>
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key60"> reflected channel </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/cat.html"> tcl::chan::cat </a> &#183; <a href="tcllib/files/modules/virtchannel_core/core.html"> tcl::chan::core </a> &#183; <a href="tcllib/files/modules/virtchannel_core/events.html"> tcl::chan::events </a> &#183; <a href="tcllib/files/modules/virtchannel_base/facade.html"> tcl::chan::facade </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_fifo.html"> tcl::chan::fifo </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_fifo2.html"> tcl::chan::fifo2 </a> &#183; <a href="tcllib/files/modules/virtchannel_base/halfpipe.html"> tcl::chan::halfpipe </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_memchan.html"> tcl::chan::memchan </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_null.html"> tcl::chan::null </a> &#183; <a href="tcllib/files/modules/virtchannel_base/nullzero.html"> tcl::chan::nullzero </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_random.html"> tcl::chan::random </a> &#183; <a href="tcllib/files/modules/virtchannel_base/randseed.html"> tcl::chan::randseed </a> &#183; <a href="tcllib/files/modules/virtchannel_base/std.html"> tcl::chan::std </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_string.html"> tcl::chan::string </a> &#183; <a href="tcllib/files/modules/virtchannel_base/textwindow.html"> tcl::chan::textwindow </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_variable.html"> tcl::chan::variable </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_zero.html"> tcl::chan::zero </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/adler32.html"> tcl::transform::adler32 </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/base64.html"> tcl::transform::base64 </a> &#183; <a href="tcllib/files/modules/virtchannel_core/transformcore.html"> tcl::transform::core </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/counter.html"> tcl::transform::counter </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/crc32.html"> tcl::transform::crc32 </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/hex.html"> tcl::transform::hex </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/identity.html"> tcl::transform::identity </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/limitsize.html"> tcl::transform::limitsize </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/observe.html"> tcl::transform::observe </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/otp.html"> tcl::transform::otp </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/rot.html"> tcl::transform::rot </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/spacer.html"> tcl::transform::spacer </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/tcllib_zlib.html"> tcl::transform::zlib </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key678"> regex </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/string/token.html"> string::token </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key306"> regular expression </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_fa/fa.html"> grammar::fa </a> &#183; <a href="tcllib/files/modules/grammar_fa/dacceptor.html"> grammar::fa::dacceptor </a> &#183; <a href="tcllib/files/modules/grammar_fa/dexec.html"> grammar::fa::dexec </a> &#183; <a href="tcllib/files/modules/grammar_fa/faop.html"> grammar::fa::op </a> &#183; <a href="tcllib/files/modules/textutil/textutil.html"> textutil </a> &#183; <a href="tcllib/files/modules/textutil/textutil_split.html"> textutil::split </a> &#183; <a href="tcllib/files/modules/textutil/trim.html"> textutil::trim </a>







|







2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key60"> reflected channel </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/cat.html"> tcl::chan::cat </a> &#183; <a href="tcllib/files/modules/virtchannel_core/core.html"> tcl::chan::core </a> &#183; <a href="tcllib/files/modules/virtchannel_core/events.html"> tcl::chan::events </a> &#183; <a href="tcllib/files/modules/virtchannel_base/facade.html"> tcl::chan::facade </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_fifo.html"> tcl::chan::fifo </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_fifo2.html"> tcl::chan::fifo2 </a> &#183; <a href="tcllib/files/modules/virtchannel_base/halfpipe.html"> tcl::chan::halfpipe </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_memchan.html"> tcl::chan::memchan </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_null.html"> tcl::chan::null </a> &#183; <a href="tcllib/files/modules/virtchannel_base/nullzero.html"> tcl::chan::nullzero </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_random.html"> tcl::chan::random </a> &#183; <a href="tcllib/files/modules/virtchannel_base/randseed.html"> tcl::chan::randseed </a> &#183; <a href="tcllib/files/modules/virtchannel_base/std.html"> tcl::chan::std </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_string.html"> tcl::chan::string </a> &#183; <a href="tcllib/files/modules/virtchannel_base/textwindow.html"> tcl::chan::textwindow </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_variable.html"> tcl::chan::variable </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_zero.html"> tcl::chan::zero </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/adler32.html"> tcl::transform::adler32 </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/base64.html"> tcl::transform::base64 </a> &#183; <a href="tcllib/files/modules/virtchannel_core/transformcore.html"> tcl::transform::core </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/counter.html"> tcl::transform::counter </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/crc32.html"> tcl::transform::crc32 </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/hex.html"> tcl::transform::hex </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/identity.html"> tcl::transform::identity </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/limitsize.html"> tcl::transform::limitsize </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/observe.html"> tcl::transform::observe </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/otp.html"> tcl::transform::otp </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/rot.html"> tcl::transform::rot </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/spacer.html"> tcl::transform::spacer </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/tcllib_zlib.html"> tcl::transform::zlib </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key679"> regex </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/string/token.html"> string::token </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key306"> regular expression </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_fa/fa.html"> grammar::fa </a> &#183; <a href="tcllib/files/modules/grammar_fa/dacceptor.html"> grammar::fa::dacceptor </a> &#183; <a href="tcllib/files/modules/grammar_fa/dexec.html"> grammar::fa::dexec </a> &#183; <a href="tcllib/files/modules/grammar_fa/faop.html"> grammar::fa::op </a> &#183; <a href="tcllib/files/modules/textutil/textutil.html"> textutil </a> &#183; <a href="tcllib/files/modules/textutil/textutil_split.html"> textutil::split </a> &#183; <a href="tcllib/files/modules/textutil/trim.html"> textutil::trim </a>
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key226"> remove </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/fileutil/multi.html"> fileutil::multi </a> &#183; <a href="tcllib/files/modules/fileutil/multiop.html"> fileutil::multi::op </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key555"> repeating </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key271"> repetition </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a> &#183; <a href="tcllib/files/modules/textutil/repeat.html"> textutil::repeat </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key118"> report </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/report/report.html"> report </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key547"> reshuffle </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key441"> residual graph </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key582"> resolver </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/dns/tcllib_dns.html"> dns </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key169"> resource management </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/try/tcllib_try.html"> try </a>







|














|




|




|







2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key226"> remove </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/fileutil/multi.html"> fileutil::multi </a> &#183; <a href="tcllib/files/modules/fileutil/multiop.html"> fileutil::multi::op </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key553"> repeating </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key271"> repetition </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a> &#183; <a href="tcllib/files/modules/textutil/repeat.html"> textutil::repeat </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key118"> report </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/report/report.html"> report </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key546"> reshuffle </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key442"> residual graph </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key581"> resolver </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/dns/tcllib_dns.html"> dns </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key169"> resource management </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/try/tcllib_try.html"> try </a>
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key636"> rfc 1036 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/nntp/nntp.html"> nntp </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key357"> rfc 1320 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/md4/md4.html"> md4 </a> &#183; <a href="tcllib/files/modules/md5/md5.html"> md5 </a> &#183; <a href="tcllib/files/modules/ripemd/ripemd128.html"> ripemd128 </a> &#183; <a href="tcllib/files/modules/ripemd/ripemd160.html"> ripemd160 </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key360"> rfc 1321 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/md4/md4.html"> md4 </a> &#183; <a href="tcllib/files/modules/md5/md5.html"> md5 </a> &#183; <a href="tcllib/files/modules/ripemd/ripemd128.html"> ripemd128 </a> &#183; <a href="tcllib/files/modules/ripemd/ripemd160.html"> ripemd160 </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key416"> rfc 1413 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ident/ident.html"> ident </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key580"> rfc 1886 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/dns/tcllib_dns.html"> dns </a>







|









|







3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key636"> rfc 1036 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/nntp/nntp.html"> nntp </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key358"> rfc 1320 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/md4/md4.html"> md4 </a> &#183; <a href="tcllib/files/modules/md5/md5.html"> md5 </a> &#183; <a href="tcllib/files/modules/ripemd/ripemd128.html"> ripemd128 </a> &#183; <a href="tcllib/files/modules/ripemd/ripemd160.html"> ripemd160 </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key360"> rfc 1321 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/md4/md4.html"> md4 </a> &#183; <a href="tcllib/files/modules/md5/md5.html"> md5 </a> &#183; <a href="tcllib/files/modules/ripemd/ripemd128.html"> ripemd128 </a> &#183; <a href="tcllib/files/modules/ripemd/ripemd160.html"> ripemd160 </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key415"> rfc 1413 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ident/ident.html"> ident </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key580"> rfc 1886 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/dns/tcllib_dns.html"> dns </a>
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key561"> rfc 2141 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uri/urn-scheme.html"> uri_urn </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key137"> rfc 2251 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ldap/ldap.html"> ldap </a> &#183; <a href="tcllib/files/modules/ldap/ldapx.html"> ldapx </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key514"> rfc 2255 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uri/uri.html"> uri </a>







|







3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key561"> rfc 2141 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uri/urn-scheme.html"> uri_urn </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key136"> rfc 2251 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ldap/ldap.html"> ldap </a> &#183; <a href="tcllib/files/modules/ldap/ldapx.html"> ldapx </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key514"> rfc 2255 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uri/uri.html"> uri </a>
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key426"> rfc 3513 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/dns/tcllib_ip.html"> tcllib_ip </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key140"> rfc 4511 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ldap/ldap.html"> ldap </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key788"> rfc3501 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/imap4/imap4.html"> imap4 </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key323"> rfc3548 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/base32/base32.html"> base32 </a> &#183; <a href="tcllib/files/modules/base32/base32hex.html"> base32::hex </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key535"> right outer join </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key359"> RIPEMD </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ripemd/ripemd128.html"> ripemd128 </a> &#183; <a href="tcllib/files/modules/ripemd/ripemd160.html"> ripemd160 </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key333"> roman numeral </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/roman.html"> math::roman </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key767"> roots </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/calculus.html"> math::calculus </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key378"> rot </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/rot.html"> tcl::transform::rot </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key376"> rot13 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/rot.html"> tcl::transform::rot </a>







|



















|














|







3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key426"> rfc 3513 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/dns/tcllib_ip.html"> tcllib_ip </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key139"> rfc 4511 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ldap/ldap.html"> ldap </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key788"> rfc3501 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/imap4/imap4.html"> imap4 </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key323"> rfc3548 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/base32/base32.html"> base32 </a> &#183; <a href="tcllib/files/modules/base32/base32hex.html"> base32::hex </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key535"> right outer join </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key357"> RIPEMD </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ripemd/ripemd128.html"> ripemd128 </a> &#183; <a href="tcllib/files/modules/ripemd/ripemd160.html"> ripemd160 </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key333"> roman numeral </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/roman.html"> math::roman </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key767"> roots </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/calculus.html"> math::calculus </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key377"> rot </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/rot.html"> tcl::transform::rot </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key376"> rot13 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/rot.html"> tcl::transform::rot </a>
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key211"> scanl </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/generator/generator.html"> generator </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key612"> SCCS </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/rcs/rcs.html"> rcs </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key339"> secure </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/comm/comm.html"> comm </a> &#183; <a href="tcllib/files/modules/pop3/pop3.html"> pop3 </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d.html"> pop3d </a> &#183; <a href="tcllib/files/modules/transfer/connect.html"> transfer::connect </a> &#183; <a href="tcllib/files/modules/transfer/receiver.html"> transfer::receiver </a> &#183; <a href="tcllib/files/modules/transfer/transmitter.html"> transfer::transmitter </a>







|







3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key211"> scanl </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/generator/generator.html"> generator </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key611"> SCCS </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/rcs/rcs.html"> rcs </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key339"> secure </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/comm/comm.html"> comm </a> &#183; <a href="tcllib/files/modules/pop3/pop3.html"> pop3 </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d.html"> pop3d </a> &#183; <a href="tcllib/files/modules/transfer/connect.html"> transfer::connect </a> &#183; <a href="tcllib/files/modules/transfer/receiver.html"> transfer::receiver </a> &#183; <a href="tcllib/files/modules/transfer/transmitter.html"> transfer::transmitter </a>
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key419"> sha1 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/sha1/sha1.html"> sha1 </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key221"> sha256 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/sha1/sha256.html"> sha256 </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key726"> shell </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/string/token_shell.html"> string::token::shell </a>







|







3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key419"> sha1 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/sha1/sha1.html"> sha1 </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key220"> sha256 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/sha1/sha256.html"> sha256 </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key726"> shell </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/string/token_shell.html"> string::token::shell </a>
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key751"> singleton </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ooutil/ooutil.html"> oo::util </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key706"> size limit </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/limitsize.html"> tcl::transform::limitsize </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key284"> skiplist </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/queue.html"> struct::queue </a> &#183; <a href="tcllib/files/modules/struct/skiplist.html"> struct::skiplist </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key202"> slippy </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/map/map_slippy.html"> map::slippy </a> &#183; <a href="tcllib/files/modules/map/map_slippy_cache.html"> map::slippy::cache </a> &#183; <a href="tcllib/files/modules/map/map_slippy_fetcher.html"> map::slippy::fetcher </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key317"> smtp </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/mime/mime.html"> mime </a> &#183; <a href="tcllib/files/modules/mime/smtp.html"> smtp </a> &#183; <a href="tcllib/files/modules/smtpd/smtpd.html"> smtpd </a>







|









|







3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key751"> singleton </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ooutil/ooutil.html"> oo::util </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key705"> size limit </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/limitsize.html"> tcl::transform::limitsize </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key284"> skiplist </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/queue.html"> struct::queue </a> &#183; <a href="tcllib/files/modules/struct/skiplist.html"> struct::skiplist </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key201"> slippy </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/map/map_slippy.html"> map::slippy </a> &#183; <a href="tcllib/files/modules/map/map_slippy_cache.html"> map::slippy::cache </a> &#183; <a href="tcllib/files/modules/map/map_slippy_fetcher.html"> map::slippy::fetcher </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key317"> smtp </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/mime/mime.html"> mime </a> &#183; <a href="tcllib/files/modules/mime/smtp.html"> smtp </a> &#183; <a href="tcllib/files/modules/smtpd/smtpd.html"> smtpd </a>
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key335"> socket </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/comm/comm.html"> comm </a> &#183; <a href="tcllib/files/modules/comm/comm_wire.html"> comm_wire </a> &#183; <a href="tcllib/files/modules/smtpd/smtpd.html"> smtpd </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key265"> soundex </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/soundex/soundex.html"> soundex </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key412"> source </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/docstrip/docstrip.html"> docstrip </a> &#183; <a href="tcllib/files/modules/docstrip/docstrip_util.html"> docstrip_util </a> &#183; <a href="tcllib/files/apps/tcldocstrip.html"> tcldocstrip </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key500"> spacing </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/spacer.html"> tcl::transform::spacer </a>







|




|







3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key335"> socket </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/comm/comm.html"> comm </a> &#183; <a href="tcllib/files/modules/comm/comm_wire.html"> comm_wire </a> &#183; <a href="tcllib/files/modules/smtpd/smtpd.html"> smtpd </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key264"> soundex </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/soundex/soundex.html"> soundex </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key411"> source </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/docstrip/docstrip.html"> docstrip </a> &#183; <a href="tcllib/files/modules/docstrip/docstrip_util.html"> docstrip_util </a> &#183; <a href="tcllib/files/apps/tcldocstrip.html"> tcldocstrip </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key500"> spacing </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/spacer.html"> tcl::transform::spacer </a>
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key342"> ssl </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/comm/comm.html"> comm </a> &#183; <a href="tcllib/files/modules/imap4/imap4.html"> imap4 </a> &#183; <a href="tcllib/files/modules/pop3/pop3.html"> pop3 </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d.html"> pop3d </a> &#183; <a href="tcllib/files/modules/transfer/connect.html"> transfer::connect </a> &#183; <a href="tcllib/files/modules/transfer/receiver.html"> transfer::receiver </a> &#183; <a href="tcllib/files/modules/transfer/transmitter.html"> transfer::transmitter </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key283"> stack </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/queue.html"> struct::queue </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key814"> standard io </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/std.html"> tcl::chan::std </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key2"> state </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_fa/fa.html"> grammar::fa </a> &#183; <a href="tcllib/files/modules/grammar_fa/dacceptor.html"> grammar::fa::dacceptor </a> &#183; <a href="tcllib/files/modules/grammar_fa/dexec.html"> grammar::fa::dexec </a> &#183; <a href="tcllib/files/modules/grammar_fa/faop.html"> grammar::fa::op </a> &#183; <a href="tcllib/files/modules/grammar_peg/peg.html"> grammar::peg </a> &#183; <a href="tcllib/files/modules/grammar_peg/peg_interp.html"> grammar::peg::interp </a> &#183; <a href="tcllib/files/apps/pt.html"> pt </a> &#183; <a href="tcllib/files/modules/pt/pt_astree.html"> pt::ast </a> &#183; <a href="tcllib/files/modules/pt/pt_cparam_config_critcl.html"> pt::cparam::configuration::critcl </a> &#183; <a href="tcllib/files/modules/pt/pt_json_language.html"> pt::json_language </a> &#183; <a href="tcllib/files/modules/pt/pt_param.html"> pt::param </a> &#183; <a href="tcllib/files/modules/pt/pt_pexpression.html"> pt::pe </a> &#183; <a href="tcllib/files/modules/pt/pt_pexpr_op.html"> pt::pe::op </a> &#183; <a href="tcllib/files/modules/pt/pt_pegrammar.html"> pt::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_container.html"> pt::peg::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_container_peg.html"> pt::peg::container::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export.html"> pt::peg::export </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_container.html"> pt::peg::export::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_json.html"> pt::peg::export::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_peg.html"> pt::peg::export::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_container.html"> pt::peg::from::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_json.html"> pt::peg::from::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_peg.html"> pt::peg::from::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import.html"> pt::peg::import </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_container.html"> pt::peg::import::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_json.html"> pt::peg::import::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_peg.html"> pt::peg::import::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_interp.html"> pt::peg::interp </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_container.html"> pt::peg::to::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_cparam.html"> pt::peg::to::cparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_json.html"> pt::peg::to::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_param.html"> pt::peg::to::param </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_peg.html"> pt::peg::to::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_tclparam.html"> pt::peg::to::tclparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_language.html"> pt::peg_language </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_introduction.html"> pt::pegrammar </a> &#183; <a href="tcllib/files/modules/pt/pt_pgen.html"> pt::pgen </a> &#183; <a href="tcllib/files/modules/pt/pt_rdengine.html"> pt::rde </a> &#183; <a href="tcllib/files/modules/pt/pt_tclparam_config_snit.html"> pt::tclparam::configuration::snit </a> &#183; <a href="tcllib/files/modules/pt/pt_tclparam_config_tcloo.html"> pt::tclparam::configuration::tcloo </a> &#183; <a href="tcllib/files/modules/pt/pt_to_api.html"> pt_export_api </a> &#183; <a href="tcllib/files/modules/pt/pt_from_api.html"> pt_import_api </a> &#183; <a href="tcllib/files/modules/pt/pt_introduction.html"> pt_introduction </a> &#183; <a href="tcllib/files/modules/pt/pt_parser_api.html"> pt_parser_api </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key92"> state (de)serialization </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/namespacex/namespacex.html"> namespacex </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key623"> statistical distribution </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/simulation/simulation_random.html"> simulation::random </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key187"> statistics </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/counter/counter.html"> counter </a> &#183; <a href="tcllib/files/modules/math/math.html"> math </a> &#183; <a href="tcllib/files/modules/math/statistics.html"> math::statistics </a>







|



















|







3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key342"> ssl </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/comm/comm.html"> comm </a> &#183; <a href="tcllib/files/modules/imap4/imap4.html"> imap4 </a> &#183; <a href="tcllib/files/modules/pop3/pop3.html"> pop3 </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d.html"> pop3d </a> &#183; <a href="tcllib/files/modules/transfer/connect.html"> transfer::connect </a> &#183; <a href="tcllib/files/modules/transfer/receiver.html"> transfer::receiver </a> &#183; <a href="tcllib/files/modules/transfer/transmitter.html"> transfer::transmitter </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key281"> stack </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/queue.html"> struct::queue </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key814"> standard io </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/std.html"> tcl::chan::std </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key2"> state </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_fa/fa.html"> grammar::fa </a> &#183; <a href="tcllib/files/modules/grammar_fa/dacceptor.html"> grammar::fa::dacceptor </a> &#183; <a href="tcllib/files/modules/grammar_fa/dexec.html"> grammar::fa::dexec </a> &#183; <a href="tcllib/files/modules/grammar_fa/faop.html"> grammar::fa::op </a> &#183; <a href="tcllib/files/modules/grammar_peg/peg.html"> grammar::peg </a> &#183; <a href="tcllib/files/modules/grammar_peg/peg_interp.html"> grammar::peg::interp </a> &#183; <a href="tcllib/files/apps/pt.html"> pt </a> &#183; <a href="tcllib/files/modules/pt/pt_astree.html"> pt::ast </a> &#183; <a href="tcllib/files/modules/pt/pt_cparam_config_critcl.html"> pt::cparam::configuration::critcl </a> &#183; <a href="tcllib/files/modules/pt/pt_json_language.html"> pt::json_language </a> &#183; <a href="tcllib/files/modules/pt/pt_param.html"> pt::param </a> &#183; <a href="tcllib/files/modules/pt/pt_pexpression.html"> pt::pe </a> &#183; <a href="tcllib/files/modules/pt/pt_pexpr_op.html"> pt::pe::op </a> &#183; <a href="tcllib/files/modules/pt/pt_pegrammar.html"> pt::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_container.html"> pt::peg::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_container_peg.html"> pt::peg::container::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export.html"> pt::peg::export </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_container.html"> pt::peg::export::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_json.html"> pt::peg::export::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_peg.html"> pt::peg::export::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_container.html"> pt::peg::from::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_json.html"> pt::peg::from::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_peg.html"> pt::peg::from::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import.html"> pt::peg::import </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_container.html"> pt::peg::import::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_json.html"> pt::peg::import::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_peg.html"> pt::peg::import::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_interp.html"> pt::peg::interp </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_container.html"> pt::peg::to::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_cparam.html"> pt::peg::to::cparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_json.html"> pt::peg::to::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_param.html"> pt::peg::to::param </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_peg.html"> pt::peg::to::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_tclparam.html"> pt::peg::to::tclparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_language.html"> pt::peg_language </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_introduction.html"> pt::pegrammar </a> &#183; <a href="tcllib/files/modules/pt/pt_pgen.html"> pt::pgen </a> &#183; <a href="tcllib/files/modules/pt/pt_rdengine.html"> pt::rde </a> &#183; <a href="tcllib/files/modules/pt/pt_tclparam_config_snit.html"> pt::tclparam::configuration::snit </a> &#183; <a href="tcllib/files/modules/pt/pt_tclparam_config_tcloo.html"> pt::tclparam::configuration::tcloo </a> &#183; <a href="tcllib/files/modules/pt/pt_to_api.html"> pt_export_api </a> &#183; <a href="tcllib/files/modules/pt/pt_from_api.html"> pt_import_api </a> &#183; <a href="tcllib/files/modules/pt/pt_introduction.html"> pt_introduction </a> &#183; <a href="tcllib/files/modules/pt/pt_parser_api.html"> pt_parser_api </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key92"> state (de)serialization </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/namespacex/namespacex.html"> namespacex </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key621"> statistical distribution </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/simulation/simulation_random.html"> simulation::random </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key187"> statistics </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/counter/counter.html"> counter </a> &#183; <a href="tcllib/files/modules/math/math.html"> math </a> &#183; <a href="tcllib/files/modules/math/statistics.html"> math::statistics </a>
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key728"> stochastic modelling </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/simulation/montecarlo.html"> simulation::montecarlo </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key153"> stream cipher </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/rc4/rc4.html"> rc4 </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key631"> stream copy </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/observe.html"> tcl::transform::observe </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key272"> string </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/string/token.html"> string::token </a> &#183; <a href="tcllib/files/modules/string/token_shell.html"> string::token::shell </a> &#183; <a href="tcllib/files/modules/textutil/textutil.html"> textutil </a> &#183; <a href="tcllib/files/modules/textutil/adjust.html"> textutil::adjust </a> &#183; <a href="tcllib/files/modules/textutil/expander.html"> textutil::expander </a> &#183; <a href="tcllib/files/modules/textutil/repeat.html"> textutil::repeat </a> &#183; <a href="tcllib/files/modules/textutil/textutil_split.html"> textutil::split </a> &#183; <a href="tcllib/files/modules/textutil/textutil_string.html"> textutil::string </a> &#183; <a href="tcllib/files/modules/textutil/tabify.html"> textutil::tabify </a> &#183; <a href="tcllib/files/modules/textutil/trim.html"> textutil::trim </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key626"> stringprep </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/stringprep/stringprep.html"> stringprep </a> &#183; <a href="tcllib/files/modules/stringprep/stringprep_data.html"> stringprep::data </a> &#183; <a href="tcllib/files/modules/stringprep/unicode_data.html"> unicode::data </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key431"> strongly connected component </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key318"> struct </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/pool.html"> struct::pool </a> &#183; <a href="tcllib/files/modules/struct/record.html"> struct::record </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key129"> structure </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/control/control.html"> control </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key808"> structured queries </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/treeql/treeql.html"> treeql </a>







|









|



















|







3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key728"> stochastic modelling </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/simulation/montecarlo.html"> simulation::montecarlo </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key152"> stream cipher </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/rc4/rc4.html"> rc4 </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key631"> stream copy </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/observe.html"> tcl::transform::observe </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key270"> string </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/string/token.html"> string::token </a> &#183; <a href="tcllib/files/modules/string/token_shell.html"> string::token::shell </a> &#183; <a href="tcllib/files/modules/textutil/textutil.html"> textutil </a> &#183; <a href="tcllib/files/modules/textutil/adjust.html"> textutil::adjust </a> &#183; <a href="tcllib/files/modules/textutil/expander.html"> textutil::expander </a> &#183; <a href="tcllib/files/modules/textutil/repeat.html"> textutil::repeat </a> &#183; <a href="tcllib/files/modules/textutil/textutil_split.html"> textutil::split </a> &#183; <a href="tcllib/files/modules/textutil/textutil_string.html"> textutil::string </a> &#183; <a href="tcllib/files/modules/textutil/tabify.html"> textutil::tabify </a> &#183; <a href="tcllib/files/modules/textutil/trim.html"> textutil::trim </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key626"> stringprep </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/stringprep/stringprep.html"> stringprep </a> &#183; <a href="tcllib/files/modules/stringprep/stringprep_data.html"> stringprep::data </a> &#183; <a href="tcllib/files/modules/stringprep/unicode_data.html"> unicode::data </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key431"> strongly connected component </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key318"> struct </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/pool.html"> struct::pool </a> &#183; <a href="tcllib/files/modules/struct/record.html"> struct::record </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key128"> structure </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/control/control.html"> control </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key808"> structured queries </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/treeql/treeql.html"> treeql </a>
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key456"> subgraph </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graph.html"> struct::graph </a> &#183; <a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key658"> subject </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/hook/hook.html"> hook </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key718"> submitbutton </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/javascript/javascript.html"> javascript </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key656"> subscriber </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/hook/hook.html"> hook </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key545"> subsequence </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key254"> subst </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2base/tcl_parse.html"> doctools::tcl::parse </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key567"> sum </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/crc/sum.html"> sum </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key541"> swapping </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key711"> symmetric difference </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_set.html"> struct::set </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key625"> synchronous </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/cache/async.html"> cache::async </a>







|














|



















|







3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key456"> subgraph </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graph.html"> struct::graph </a> &#183; <a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key657"> subject </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/hook/hook.html"> hook </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key718"> submitbutton </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/javascript/javascript.html"> javascript </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key656"> subscriber </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/hook/hook.html"> hook </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key544"> subsequence </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key254"> subst </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2base/tcl_parse.html"> doctools::tcl::parse </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key567"> sum </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/crc/sum.html"> sum </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key541"> swapping </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key707"> symmetric difference </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_set.html"> struct::set </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key625"> synchronous </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/cache/async.html"> cache::async </a>
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key717"> tar </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/tar/tar.html"> tar </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key269"> tcl </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/bigfloat.html"> math::bigfloat </a> &#183; <a href="tcllib/files/modules/math/bignum.html"> math::bignum </a> &#183; <a href="tcllib/files/modules/math/decimal.html"> math::decimal </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key646"> Tcl module </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/docstrip/docstrip_util.html"> docstrip_util </a>







|







3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key717"> tar </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/tar/tar.html"> tar </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key268"> tcl </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/bigfloat.html"> math::bigfloat </a> &#183; <a href="tcllib/files/modules/math/bignum.html"> math::bignum </a> &#183; <a href="tcllib/files/modules/math/decimal.html"> math::decimal </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key646"> Tcl module </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/docstrip/docstrip_util.html"> docstrip_util </a>
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key104"> terminal </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/term.html"> term </a> &#183; <a href="tcllib/files/modules/term/ansi_code.html"> term::ansi::code </a> &#183; <a href="tcllib/files/modules/term/ansi_cattr.html"> term::ansi::code::attr </a> &#183; <a href="tcllib/files/modules/term/ansi_cctrl.html"> term::ansi::code::ctrl </a> &#183; <a href="tcllib/files/modules/term/ansi_cmacros.html"> term::ansi::code::macros </a> &#183; <a href="tcllib/files/modules/term/ansi_ctrlu.html"> term::ansi::ctrl::unix </a> &#183; <a href="tcllib/files/modules/term/ansi_send.html"> term::ansi::send </a> &#183; <a href="tcllib/files/modules/term/imenu.html"> term::interact::menu </a> &#183; <a href="tcllib/files/modules/term/ipager.html"> term::interact::pager </a> &#183; <a href="tcllib/files/modules/term/receive.html"> term::receive </a> &#183; <a href="tcllib/files/modules/term/term_bind.html"> term::receive::bind </a> &#183; <a href="tcllib/files/modules/term/term_send.html"> term::send </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key292"> test </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/fileutil/fileutil.html"> fileutil </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key78"> Testing </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/valtype/valtype_common.html"> valtype::common </a> &#183; <a href="tcllib/files/modules/valtype/cc_amex.html"> valtype::creditcard::amex </a> &#183; <a href="tcllib/files/modules/valtype/cc_discover.html"> valtype::creditcard::discover </a> &#183; <a href="tcllib/files/modules/valtype/cc_mastercard.html"> valtype::creditcard::mastercard </a> &#183; <a href="tcllib/files/modules/valtype/cc_visa.html"> valtype::creditcard::visa </a> &#183; <a href="tcllib/files/modules/valtype/ean13.html"> valtype::gs1::ean13 </a> &#183; <a href="tcllib/files/modules/valtype/iban.html"> valtype::iban </a> &#183; <a href="tcllib/files/modules/valtype/imei.html"> valtype::imei </a> &#183; <a href="tcllib/files/modules/valtype/isbn.html"> valtype::isbn </a> &#183; <a href="tcllib/files/modules/valtype/luhn.html"> valtype::luhn </a> &#183; <a href="tcllib/files/modules/valtype/luhn5.html"> valtype::luhn5 </a> &#183; <a href="tcllib/files/modules/valtype/usnpi.html"> valtype::usnpi </a> &#183; <a href="tcllib/files/modules/valtype/verhoeff.html"> valtype::verhoeff </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key102"> testing </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bench/bench.html"> bench </a> &#183; <a href="tcllib/files/modules/bench/bench_read.html"> bench::in </a> &#183; <a href="tcllib/files/modules/bench/bench_wcsv.html"> bench::out::csv </a> &#183; <a href="tcllib/files/modules/bench/bench_wtext.html"> bench::out::text </a> &#183; <a href="tcllib/files/modules/bench/bench_intro.html"> bench_intro </a> &#183; <a href="tcllib/files/modules/bench/bench_lang_intro.html"> bench_lang_intro </a> &#183; <a href="tcllib/files/modules/bench/bench_lang_spec.html"> bench_lang_spec </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key328"> TeX </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/textutil/textutil.html"> textutil </a> &#183; <a href="tcllib/files/modules/textutil/adjust.html"> textutil::adjust </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key481"> text </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bench/bench_read.html"> bench::in </a> &#183; <a href="tcllib/files/modules/bench/bench_wtext.html"> bench::out::text </a> &#183; <a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export.html"> doctools::idx::export </a> &#183; <a href="tcllib/files/modules/doctools2toc/container.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/export.html"> doctools::toc::export </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key263"> text comparison </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/soundex/soundex.html"> soundex </a>







|









|




|




|







3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key104"> terminal </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/term.html"> term </a> &#183; <a href="tcllib/files/modules/term/ansi_code.html"> term::ansi::code </a> &#183; <a href="tcllib/files/modules/term/ansi_cattr.html"> term::ansi::code::attr </a> &#183; <a href="tcllib/files/modules/term/ansi_cctrl.html"> term::ansi::code::ctrl </a> &#183; <a href="tcllib/files/modules/term/ansi_cmacros.html"> term::ansi::code::macros </a> &#183; <a href="tcllib/files/modules/term/ansi_ctrlu.html"> term::ansi::ctrl::unix </a> &#183; <a href="tcllib/files/modules/term/ansi_send.html"> term::ansi::send </a> &#183; <a href="tcllib/files/modules/term/imenu.html"> term::interact::menu </a> &#183; <a href="tcllib/files/modules/term/ipager.html"> term::interact::pager </a> &#183; <a href="tcllib/files/modules/term/receive.html"> term::receive </a> &#183; <a href="tcllib/files/modules/term/term_bind.html"> term::receive::bind </a> &#183; <a href="tcllib/files/modules/term/term_send.html"> term::send </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key291"> test </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/fileutil/fileutil.html"> fileutil </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key78"> Testing </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/valtype/valtype_common.html"> valtype::common </a> &#183; <a href="tcllib/files/modules/valtype/cc_amex.html"> valtype::creditcard::amex </a> &#183; <a href="tcllib/files/modules/valtype/cc_discover.html"> valtype::creditcard::discover </a> &#183; <a href="tcllib/files/modules/valtype/cc_mastercard.html"> valtype::creditcard::mastercard </a> &#183; <a href="tcllib/files/modules/valtype/cc_visa.html"> valtype::creditcard::visa </a> &#183; <a href="tcllib/files/modules/valtype/ean13.html"> valtype::gs1::ean13 </a> &#183; <a href="tcllib/files/modules/valtype/iban.html"> valtype::iban </a> &#183; <a href="tcllib/files/modules/valtype/imei.html"> valtype::imei </a> &#183; <a href="tcllib/files/modules/valtype/isbn.html"> valtype::isbn </a> &#183; <a href="tcllib/files/modules/valtype/luhn.html"> valtype::luhn </a> &#183; <a href="tcllib/files/modules/valtype/luhn5.html"> valtype::luhn5 </a> &#183; <a href="tcllib/files/modules/valtype/usnpi.html"> valtype::usnpi </a> &#183; <a href="tcllib/files/modules/valtype/verhoeff.html"> valtype::verhoeff </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key101"> testing </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bench/bench.html"> bench </a> &#183; <a href="tcllib/files/modules/bench/bench_read.html"> bench::in </a> &#183; <a href="tcllib/files/modules/bench/bench_wcsv.html"> bench::out::csv </a> &#183; <a href="tcllib/files/modules/bench/bench_wtext.html"> bench::out::text </a> &#183; <a href="tcllib/files/modules/bench/bench_intro.html"> bench_intro </a> &#183; <a href="tcllib/files/modules/bench/bench_lang_intro.html"> bench_lang_intro </a> &#183; <a href="tcllib/files/modules/bench/bench_lang_spec.html"> bench_lang_spec </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key327"> TeX </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/textutil/textutil.html"> textutil </a> &#183; <a href="tcllib/files/modules/textutil/adjust.html"> textutil::adjust </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key480"> text </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bench/bench_read.html"> bench::in </a> &#183; <a href="tcllib/files/modules/bench/bench_wtext.html"> bench::out::text </a> &#183; <a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export.html"> doctools::idx::export </a> &#183; <a href="tcllib/files/modules/doctools2toc/container.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/export.html"> doctools::toc::export </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key263"> text comparison </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/soundex/soundex.html"> soundex </a>
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key39"> tie </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/tie/tie_std.html"> tie </a> &#183; <a href="tcllib/files/modules/tie/tie.html"> tie </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key134"> tif </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/tiff/tiff.html"> tiff </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key132"> tiff </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/exif/exif.html"> exif </a> &#183; <a href="tcllib/files/modules/tiff/tiff.html"> tiff </a>







|







3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key39"> tie </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/tie/tie_std.html"> tie </a> &#183; <a href="tcllib/files/modules/tie/tie.html"> tie </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key133"> tif </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/tiff/tiff.html"> tiff </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key132"> tiff </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/exif/exif.html"> exif </a> &#183; <a href="tcllib/files/modules/tiff/tiff.html"> tiff </a>
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key686"> timestamp </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/png/png.html"> png </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key70"> timestamps </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/debug/debug_timestamp.html"> debug::timestamp </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key58"> tip 219 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/cat.html"> tcl::chan::cat </a> &#183; <a href="tcllib/files/modules/virtchannel_core/core.html"> tcl::chan::core </a> &#183; <a href="tcllib/files/modules/virtchannel_core/events.html"> tcl::chan::events </a> &#183; <a href="tcllib/files/modules/virtchannel_base/facade.html"> tcl::chan::facade </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_fifo.html"> tcl::chan::fifo </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_fifo2.html"> tcl::chan::fifo2 </a> &#183; <a href="tcllib/files/modules/virtchannel_base/halfpipe.html"> tcl::chan::halfpipe </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_memchan.html"> tcl::chan::memchan </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_null.html"> tcl::chan::null </a> &#183; <a href="tcllib/files/modules/virtchannel_base/nullzero.html"> tcl::chan::nullzero </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_random.html"> tcl::chan::random </a> &#183; <a href="tcllib/files/modules/virtchannel_base/randseed.html"> tcl::chan::randseed </a> &#183; <a href="tcllib/files/modules/virtchannel_base/std.html"> tcl::chan::std </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_string.html"> tcl::chan::string </a> &#183; <a href="tcllib/files/modules/virtchannel_base/textwindow.html"> tcl::chan::textwindow </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_variable.html"> tcl::chan::variable </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_zero.html"> tcl::chan::zero </a> &#183; <a href="tcllib/files/modules/virtchannel_core/transformcore.html"> tcl::transform::core </a>







|







3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key686"> timestamp </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/png/png.html"> png </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key71"> timestamps </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/debug/debug_timestamp.html"> debug::timestamp </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key58"> tip 219 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/cat.html"> tcl::chan::cat </a> &#183; <a href="tcllib/files/modules/virtchannel_core/core.html"> tcl::chan::core </a> &#183; <a href="tcllib/files/modules/virtchannel_core/events.html"> tcl::chan::events </a> &#183; <a href="tcllib/files/modules/virtchannel_base/facade.html"> tcl::chan::facade </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_fifo.html"> tcl::chan::fifo </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_fifo2.html"> tcl::chan::fifo2 </a> &#183; <a href="tcllib/files/modules/virtchannel_base/halfpipe.html"> tcl::chan::halfpipe </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_memchan.html"> tcl::chan::memchan </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_null.html"> tcl::chan::null </a> &#183; <a href="tcllib/files/modules/virtchannel_base/nullzero.html"> tcl::chan::nullzero </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_random.html"> tcl::chan::random </a> &#183; <a href="tcllib/files/modules/virtchannel_base/randseed.html"> tcl::chan::randseed </a> &#183; <a href="tcllib/files/modules/virtchannel_base/std.html"> tcl::chan::std </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_string.html"> tcl::chan::string </a> &#183; <a href="tcllib/files/modules/virtchannel_base/textwindow.html"> tcl::chan::textwindow </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_variable.html"> tcl::chan::variable </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_zero.html"> tcl::chan::zero </a> &#183; <a href="tcllib/files/modules/virtchannel_core/transformcore.html"> tcl::transform::core </a>
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key311"> tls </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/comm/comm.html"> comm </a> &#183; <a href="tcllib/files/modules/imap4/imap4.html"> imap4 </a> &#183; <a href="tcllib/files/modules/pop3/pop3.html"> pop3 </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d.html"> pop3d </a> &#183; <a href="tcllib/files/modules/mime/smtp.html"> smtp </a> &#183; <a href="tcllib/files/modules/transfer/connect.html"> transfer::connect </a> &#183; <a href="tcllib/files/modules/transfer/receiver.html"> transfer::receiver </a> &#183; <a href="tcllib/files/modules/transfer/transmitter.html"> transfer::transmitter </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key20"> TMML </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctools.html"> doctools </a> &#183; <a href="tcllib/files/modules/doctools/docidx.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools/doctoc.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/container.html"> doctools::toc </a> &#183; <a href="tcllib/files/apps/dtplite.html"> dtplite </a> &#183; <a href="tcllib/files/modules/dtplite/dtplite.html"> dtplite </a> &#183; <a href="tcllib/files/modules/doctools/mpexpand.html"> mpexpand </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key166"> toc </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctoc_intro.html"> doctoc_intro </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_plugin_apiref.html"> doctoc_plugin_apiref </a> &#183; <a href="tcllib/files/modules/doctools/doctoc.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_doctoc.html"> doctools::toc::export::doctoc </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_html.html"> doctools::toc::export::html </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_json.html"> doctools::toc::export::json </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_nroff.html"> doctools::toc::export::nroff </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_text.html"> doctools::toc::export::text </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_wiki.html"> doctools::toc::export::wiki </a> &#183; <a href="tcllib/files/modules/doctools2toc/import_doctoc.html"> doctools::toc::import::doctoc </a> &#183; <a href="tcllib/files/modules/doctools2toc/import_json.html"> doctools::toc::import::json </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key701"> toc formatter </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctoc_plugin_apiref.html"> doctoc_plugin_apiref </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key680"> tokenization </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/string/token.html"> string::token </a> &#183; <a href="tcllib/files/modules/string/token_shell.html"> string::token::shell </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key13"> top-down parsing languages </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_me/me_intro.html"> grammar::me_intro </a> &#183; <a href="tcllib/files/modules/grammar_peg/peg.html"> grammar::peg </a> &#183; <a href="tcllib/files/modules/grammar_peg/peg_interp.html"> grammar::peg::interp </a> &#183; <a href="tcllib/files/apps/pt.html"> pt </a> &#183; <a href="tcllib/files/modules/pt/pt_astree.html"> pt::ast </a> &#183; <a href="tcllib/files/modules/pt/pt_cparam_config_critcl.html"> pt::cparam::configuration::critcl </a> &#183; <a href="tcllib/files/modules/pt/pt_json_language.html"> pt::json_language </a> &#183; <a href="tcllib/files/modules/pt/pt_param.html"> pt::param </a> &#183; <a href="tcllib/files/modules/pt/pt_pexpression.html"> pt::pe </a> &#183; <a href="tcllib/files/modules/pt/pt_pexpr_op.html"> pt::pe::op </a> &#183; <a href="tcllib/files/modules/pt/pt_pegrammar.html"> pt::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_container.html"> pt::peg::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_container_peg.html"> pt::peg::container::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export.html"> pt::peg::export </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_container.html"> pt::peg::export::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_json.html"> pt::peg::export::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_peg.html"> pt::peg::export::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_container.html"> pt::peg::from::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_json.html"> pt::peg::from::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_peg.html"> pt::peg::from::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import.html"> pt::peg::import </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_container.html"> pt::peg::import::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_json.html"> pt::peg::import::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_peg.html"> pt::peg::import::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_interp.html"> pt::peg::interp </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_container.html"> pt::peg::to::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_cparam.html"> pt::peg::to::cparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_json.html"> pt::peg::to::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_param.html"> pt::peg::to::param </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_peg.html"> pt::peg::to::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_tclparam.html"> pt::peg::to::tclparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_language.html"> pt::peg_language </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_introduction.html"> pt::pegrammar </a> &#183; <a href="tcllib/files/modules/pt/pt_pgen.html"> pt::pgen </a> &#183; <a href="tcllib/files/modules/pt/pt_rdengine.html"> pt::rde </a> &#183; <a href="tcllib/files/modules/pt/pt_tclparam_config_snit.html"> pt::tclparam::configuration::snit </a> &#183; <a href="tcllib/files/modules/pt/pt_tclparam_config_tcloo.html"> pt::tclparam::configuration::tcloo </a> &#183; <a href="tcllib/files/modules/pt/pt_to_api.html"> pt_export_api </a> &#183; <a href="tcllib/files/modules/pt/pt_from_api.html"> pt_import_api </a> &#183; <a href="tcllib/files/modules/pt/pt_introduction.html"> pt_introduction </a> &#183; <a href="tcllib/files/modules/pt/pt_parser_api.html"> pt_parser_api </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key369"> torrent </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bee/bee.html"> bee </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key295"> touch </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/fileutil/fileutil.html"> fileutil </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key24"> TPDL </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_me/me_intro.html"> grammar::me_intro </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key71"> trace </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/debug/debug.html"> debug </a> &#183; <a href="tcllib/files/modules/debug/debug_caller.html"> debug::caller </a> &#183; <a href="tcllib/files/modules/debug/debug_heartbeat.html"> debug::heartbeat </a> &#183; <a href="tcllib/files/modules/debug/debug_timestamp.html"> debug::timestamp </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key12"> transducer </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_aycock/aycock.html"> grammar::aycock </a> &#183; <a href="tcllib/files/modules/grammar_fa/fa.html"> grammar::fa </a> &#183; <a href="tcllib/files/modules/grammar_fa/dacceptor.html"> grammar::fa::dacceptor </a> &#183; <a href="tcllib/files/modules/grammar_fa/dexec.html"> grammar::fa::dexec </a> &#183; <a href="tcllib/files/modules/grammar_fa/faop.html"> grammar::fa::op </a> &#183; <a href="tcllib/files/modules/grammar_me/me_intro.html"> grammar::me_intro </a> &#183; <a href="tcllib/files/modules/grammar_peg/peg.html"> grammar::peg </a> &#183; <a href="tcllib/files/modules/grammar_peg/peg_interp.html"> grammar::peg::interp </a> &#183; <a href="tcllib/files/apps/pt.html"> pt </a> &#183; <a href="tcllib/files/modules/pt/pt_astree.html"> pt::ast </a> &#183; <a href="tcllib/files/modules/pt/pt_cparam_config_critcl.html"> pt::cparam::configuration::critcl </a> &#183; <a href="tcllib/files/modules/pt/pt_json_language.html"> pt::json_language </a> &#183; <a href="tcllib/files/modules/pt/pt_param.html"> pt::param </a> &#183; <a href="tcllib/files/modules/pt/pt_pexpression.html"> pt::pe </a> &#183; <a href="tcllib/files/modules/pt/pt_pexpr_op.html"> pt::pe::op </a> &#183; <a href="tcllib/files/modules/pt/pt_pegrammar.html"> pt::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_container.html"> pt::peg::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_container_peg.html"> pt::peg::container::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export.html"> pt::peg::export </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_container.html"> pt::peg::export::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_json.html"> pt::peg::export::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_peg.html"> pt::peg::export::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_container.html"> pt::peg::from::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_json.html"> pt::peg::from::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_peg.html"> pt::peg::from::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import.html"> pt::peg::import </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_container.html"> pt::peg::import::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_json.html"> pt::peg::import::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_peg.html"> pt::peg::import::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_interp.html"> pt::peg::interp </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_container.html"> pt::peg::to::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_cparam.html"> pt::peg::to::cparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_json.html"> pt::peg::to::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_param.html"> pt::peg::to::param </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_peg.html"> pt::peg::to::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_tclparam.html"> pt::peg::to::tclparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_language.html"> pt::peg_language </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_introduction.html"> pt::pegrammar </a> &#183; <a href="tcllib/files/modules/pt/pt_pgen.html"> pt::pgen </a> &#183; <a href="tcllib/files/modules/pt/pt_rdengine.html"> pt::rde </a> &#183; <a href="tcllib/files/modules/pt/pt_tclparam_config_snit.html"> pt::tclparam::configuration::snit </a> &#183; <a href="tcllib/files/modules/pt/pt_tclparam_config_tcloo.html"> pt::tclparam::configuration::tcloo </a> &#183; <a href="tcllib/files/modules/pt/pt_to_api.html"> pt_export_api </a> &#183; <a href="tcllib/files/modules/pt/pt_from_api.html"> pt_import_api </a> &#183; <a href="tcllib/files/modules/pt/pt_introduction.html"> pt_introduction </a> &#183; <a href="tcllib/files/modules/pt/pt_parser_api.html"> pt_parser_api </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key83"> transfer </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/transfer/connect.html"> transfer::connect </a> &#183; <a href="tcllib/files/modules/transfer/copyops.html"> transfer::copy </a> &#183; <a href="tcllib/files/modules/transfer/tqueue.html"> transfer::copy::queue </a> &#183; <a href="tcllib/files/modules/transfer/ddest.html"> transfer::data::destination </a> &#183; <a href="tcllib/files/modules/transfer/dsource.html"> transfer::data::source </a> &#183; <a href="tcllib/files/modules/transfer/receiver.html"> transfer::receiver </a> &#183; <a href="tcllib/files/modules/transfer/transmitter.html"> transfer::transmitter </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key300"> transformation </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/page/page_util_peg.html"> page_util_peg </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/adler32.html"> tcl::transform::adler32 </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/base64.html"> tcl::transform::base64 </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/counter.html"> tcl::transform::counter </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/crc32.html"> tcl::transform::crc32 </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/hex.html"> tcl::transform::hex </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/identity.html"> tcl::transform::identity </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/limitsize.html"> tcl::transform::limitsize </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/observe.html"> tcl::transform::observe </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/otp.html"> tcl::transform::otp </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/rot.html"> tcl::transform::rot </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/spacer.html"> tcl::transform::spacer </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/tcllib_zlib.html"> tcl::transform::zlib </a>







|














|



















|




|









|







3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key311"> tls </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/comm/comm.html"> comm </a> &#183; <a href="tcllib/files/modules/imap4/imap4.html"> imap4 </a> &#183; <a href="tcllib/files/modules/pop3/pop3.html"> pop3 </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d.html"> pop3d </a> &#183; <a href="tcllib/files/modules/mime/smtp.html"> smtp </a> &#183; <a href="tcllib/files/modules/transfer/connect.html"> transfer::connect </a> &#183; <a href="tcllib/files/modules/transfer/receiver.html"> transfer::receiver </a> &#183; <a href="tcllib/files/modules/transfer/transmitter.html"> transfer::transmitter </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key19"> TMML </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctools.html"> doctools </a> &#183; <a href="tcllib/files/modules/doctools/docidx.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools/doctoc.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/container.html"> doctools::toc </a> &#183; <a href="tcllib/files/apps/dtplite.html"> dtplite </a> &#183; <a href="tcllib/files/modules/dtplite/dtplite.html"> dtplite </a> &#183; <a href="tcllib/files/modules/doctools/mpexpand.html"> mpexpand </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key166"> toc </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctoc_intro.html"> doctoc_intro </a> &#183; <a href="tcllib/files/modules/doctools/doctoc_plugin_apiref.html"> doctoc_plugin_apiref </a> &#183; <a href="tcllib/files/modules/doctools/doctoc.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_doctoc.html"> doctools::toc::export::doctoc </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_html.html"> doctools::toc::export::html </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_json.html"> doctools::toc::export::json </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_nroff.html"> doctools::toc::export::nroff </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_text.html"> doctools::toc::export::text </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_wiki.html"> doctools::toc::export::wiki </a> &#183; <a href="tcllib/files/modules/doctools2toc/import_doctoc.html"> doctools::toc::import::doctoc </a> &#183; <a href="tcllib/files/modules/doctools2toc/import_json.html"> doctools::toc::import::json </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key701"> toc formatter </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctoc_plugin_apiref.html"> doctoc_plugin_apiref </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key678"> tokenization </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/string/token.html"> string::token </a> &#183; <a href="tcllib/files/modules/string/token_shell.html"> string::token::shell </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key13"> top-down parsing languages </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_me/me_intro.html"> grammar::me_intro </a> &#183; <a href="tcllib/files/modules/grammar_peg/peg.html"> grammar::peg </a> &#183; <a href="tcllib/files/modules/grammar_peg/peg_interp.html"> grammar::peg::interp </a> &#183; <a href="tcllib/files/apps/pt.html"> pt </a> &#183; <a href="tcllib/files/modules/pt/pt_astree.html"> pt::ast </a> &#183; <a href="tcllib/files/modules/pt/pt_cparam_config_critcl.html"> pt::cparam::configuration::critcl </a> &#183; <a href="tcllib/files/modules/pt/pt_json_language.html"> pt::json_language </a> &#183; <a href="tcllib/files/modules/pt/pt_param.html"> pt::param </a> &#183; <a href="tcllib/files/modules/pt/pt_pexpression.html"> pt::pe </a> &#183; <a href="tcllib/files/modules/pt/pt_pexpr_op.html"> pt::pe::op </a> &#183; <a href="tcllib/files/modules/pt/pt_pegrammar.html"> pt::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_container.html"> pt::peg::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_container_peg.html"> pt::peg::container::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export.html"> pt::peg::export </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_container.html"> pt::peg::export::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_json.html"> pt::peg::export::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_peg.html"> pt::peg::export::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_container.html"> pt::peg::from::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_json.html"> pt::peg::from::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_peg.html"> pt::peg::from::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import.html"> pt::peg::import </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_container.html"> pt::peg::import::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_json.html"> pt::peg::import::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_peg.html"> pt::peg::import::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_interp.html"> pt::peg::interp </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_container.html"> pt::peg::to::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_cparam.html"> pt::peg::to::cparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_json.html"> pt::peg::to::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_param.html"> pt::peg::to::param </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_peg.html"> pt::peg::to::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_tclparam.html"> pt::peg::to::tclparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_language.html"> pt::peg_language </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_introduction.html"> pt::pegrammar </a> &#183; <a href="tcllib/files/modules/pt/pt_pgen.html"> pt::pgen </a> &#183; <a href="tcllib/files/modules/pt/pt_rdengine.html"> pt::rde </a> &#183; <a href="tcllib/files/modules/pt/pt_tclparam_config_snit.html"> pt::tclparam::configuration::snit </a> &#183; <a href="tcllib/files/modules/pt/pt_tclparam_config_tcloo.html"> pt::tclparam::configuration::tcloo </a> &#183; <a href="tcllib/files/modules/pt/pt_to_api.html"> pt_export_api </a> &#183; <a href="tcllib/files/modules/pt/pt_from_api.html"> pt_import_api </a> &#183; <a href="tcllib/files/modules/pt/pt_introduction.html"> pt_introduction </a> &#183; <a href="tcllib/files/modules/pt/pt_parser_api.html"> pt_parser_api </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key369"> torrent </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bee/bee.html"> bee </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key295"> touch </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/fileutil/fileutil.html"> fileutil </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key25"> TPDL </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_me/me_intro.html"> grammar::me_intro </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key70"> trace </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/debug/debug.html"> debug </a> &#183; <a href="tcllib/files/modules/debug/debug_caller.html"> debug::caller </a> &#183; <a href="tcllib/files/modules/debug/debug_heartbeat.html"> debug::heartbeat </a> &#183; <a href="tcllib/files/modules/debug/debug_timestamp.html"> debug::timestamp </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key12"> transducer </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_aycock/aycock.html"> grammar::aycock </a> &#183; <a href="tcllib/files/modules/grammar_fa/fa.html"> grammar::fa </a> &#183; <a href="tcllib/files/modules/grammar_fa/dacceptor.html"> grammar::fa::dacceptor </a> &#183; <a href="tcllib/files/modules/grammar_fa/dexec.html"> grammar::fa::dexec </a> &#183; <a href="tcllib/files/modules/grammar_fa/faop.html"> grammar::fa::op </a> &#183; <a href="tcllib/files/modules/grammar_me/me_intro.html"> grammar::me_intro </a> &#183; <a href="tcllib/files/modules/grammar_peg/peg.html"> grammar::peg </a> &#183; <a href="tcllib/files/modules/grammar_peg/peg_interp.html"> grammar::peg::interp </a> &#183; <a href="tcllib/files/apps/pt.html"> pt </a> &#183; <a href="tcllib/files/modules/pt/pt_astree.html"> pt::ast </a> &#183; <a href="tcllib/files/modules/pt/pt_cparam_config_critcl.html"> pt::cparam::configuration::critcl </a> &#183; <a href="tcllib/files/modules/pt/pt_json_language.html"> pt::json_language </a> &#183; <a href="tcllib/files/modules/pt/pt_param.html"> pt::param </a> &#183; <a href="tcllib/files/modules/pt/pt_pexpression.html"> pt::pe </a> &#183; <a href="tcllib/files/modules/pt/pt_pexpr_op.html"> pt::pe::op </a> &#183; <a href="tcllib/files/modules/pt/pt_pegrammar.html"> pt::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_container.html"> pt::peg::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_container_peg.html"> pt::peg::container::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export.html"> pt::peg::export </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_container.html"> pt::peg::export::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_json.html"> pt::peg::export::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_export_peg.html"> pt::peg::export::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_container.html"> pt::peg::from::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_json.html"> pt::peg::from::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_from_peg.html"> pt::peg::from::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import.html"> pt::peg::import </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_container.html"> pt::peg::import::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_json.html"> pt::peg::import::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_import_peg.html"> pt::peg::import::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_interp.html"> pt::peg::interp </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_container.html"> pt::peg::to::container </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_cparam.html"> pt::peg::to::cparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_json.html"> pt::peg::to::json </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_param.html"> pt::peg::to::param </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_peg.html"> pt::peg::to::peg </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_to_tclparam.html"> pt::peg::to::tclparam </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_language.html"> pt::peg_language </a> &#183; <a href="tcllib/files/modules/pt/pt_peg_introduction.html"> pt::pegrammar </a> &#183; <a href="tcllib/files/modules/pt/pt_pgen.html"> pt::pgen </a> &#183; <a href="tcllib/files/modules/pt/pt_rdengine.html"> pt::rde </a> &#183; <a href="tcllib/files/modules/pt/pt_tclparam_config_snit.html"> pt::tclparam::configuration::snit </a> &#183; <a href="tcllib/files/modules/pt/pt_tclparam_config_tcloo.html"> pt::tclparam::configuration::tcloo </a> &#183; <a href="tcllib/files/modules/pt/pt_to_api.html"> pt_export_api </a> &#183; <a href="tcllib/files/modules/pt/pt_from_api.html"> pt_import_api </a> &#183; <a href="tcllib/files/modules/pt/pt_introduction.html"> pt_introduction </a> &#183; <a href="tcllib/files/modules/pt/pt_parser_api.html"> pt_parser_api </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key82"> transfer </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/transfer/connect.html"> transfer::connect </a> &#183; <a href="tcllib/files/modules/transfer/copyops.html"> transfer::copy </a> &#183; <a href="tcllib/files/modules/transfer/tqueue.html"> transfer::copy::queue </a> &#183; <a href="tcllib/files/modules/transfer/ddest.html"> transfer::data::destination </a> &#183; <a href="tcllib/files/modules/transfer/dsource.html"> transfer::data::source </a> &#183; <a href="tcllib/files/modules/transfer/receiver.html"> transfer::receiver </a> &#183; <a href="tcllib/files/modules/transfer/transmitter.html"> transfer::transmitter </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key300"> transformation </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/page/page_util_peg.html"> page_util_peg </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/adler32.html"> tcl::transform::adler32 </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/base64.html"> tcl::transform::base64 </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/counter.html"> tcl::transform::counter </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/crc32.html"> tcl::transform::crc32 </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/hex.html"> tcl::transform::hex </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/identity.html"> tcl::transform::identity </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/limitsize.html"> tcl::transform::limitsize </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/observe.html"> tcl::transform::observe </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/otp.html"> tcl::transform::otp </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/rot.html"> tcl::transform::rot </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/spacer.html"> tcl::transform::spacer </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/tcllib_zlib.html"> tcl::transform::zlib </a>
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key703"> traversal </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/fileutil/traverse.html"> fileutil_traverse </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key280"> tree </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_me/gasm.html"> grammar::me::cpu::gasm </a> &#183; <a href="tcllib/files/modules/grammar_me/me_util.html"> grammar::me::util </a> &#183; <a href="tcllib/files/modules/htmlparse/htmlparse.html"> htmlparse </a> &#183; <a href="tcllib/files/modules/struct/queue.html"> struct::queue </a> &#183; <a href="tcllib/files/modules/struct/stack.html"> struct::stack </a> &#183; <a href="tcllib/files/modules/struct/struct_tree.html"> struct::tree </a> &#183; <a href="tcllib/files/modules/struct/struct_tree1.html"> struct::tree_v1 </a> &#183; <a href="tcllib/files/modules/treeql/treeql.html"> treeql </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key806"> tree query language </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/treeql/treeql.html"> treeql </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key193"> tree walking </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/page/page_util_flow.html"> page_util_flow </a> &#183; <a href="tcllib/files/modules/page/page_util_norm_lemon.html"> page_util_norm_lemon </a> &#183; <a href="tcllib/files/modules/page/page_util_norm_peg.html"> page_util_norm_peg </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key805"> TreeQL </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/treeql/treeql.html"> treeql </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key407"> trimming </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/textutil/textutil.html"> textutil </a> &#183; <a href="tcllib/files/modules/textutil/trim.html"> textutil::trim </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key124"> type </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/fileutil/fileutil.html"> fileutil </a> &#183; <a href="tcllib/files/modules/fumagic/cfront.html"> fileutil::magic::cfront </a> &#183; <a href="tcllib/files/modules/fumagic/cgen.html"> fileutil::magic::cgen </a> &#183; <a href="tcllib/files/modules/fumagic/filetypes.html"> fileutil::magic::filetype </a> &#183; <a href="tcllib/files/modules/fumagic/mimetypes.html"> fileutil::magic::mimetype </a> &#183; <a href="tcllib/files/modules/fumagic/rtcore.html"> fileutil::magic::rt </a> &#183; <a href="tcllib/files/modules/snit/snit.html"> snit </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key77"> Type checking </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/valtype/valtype_common.html"> valtype::common </a> &#183; <a href="tcllib/files/modules/valtype/cc_amex.html"> valtype::creditcard::amex </a> &#183; <a href="tcllib/files/modules/valtype/cc_discover.html"> valtype::creditcard::discover </a> &#183; <a href="tcllib/files/modules/valtype/cc_mastercard.html"> valtype::creditcard::mastercard </a> &#183; <a href="tcllib/files/modules/valtype/cc_visa.html"> valtype::creditcard::visa </a> &#183; <a href="tcllib/files/modules/valtype/ean13.html"> valtype::gs1::ean13 </a> &#183; <a href="tcllib/files/modules/valtype/iban.html"> valtype::iban </a> &#183; <a href="tcllib/files/modules/valtype/imei.html"> valtype::imei </a> &#183; <a href="tcllib/files/modules/valtype/isbn.html"> valtype::isbn </a> &#183; <a href="tcllib/files/modules/valtype/luhn.html"> valtype::luhn </a> &#183; <a href="tcllib/files/modules/valtype/luhn5.html"> valtype::luhn5 </a> &#183; <a href="tcllib/files/modules/valtype/usnpi.html"> valtype::usnpi </a> &#183; <a href="tcllib/files/modules/valtype/verhoeff.html"> valtype::verhoeff </a>







|














|









|







3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key703"> traversal </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/fileutil/traverse.html"> fileutil_traverse </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key278"> tree </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_me/gasm.html"> grammar::me::cpu::gasm </a> &#183; <a href="tcllib/files/modules/grammar_me/me_util.html"> grammar::me::util </a> &#183; <a href="tcllib/files/modules/htmlparse/htmlparse.html"> htmlparse </a> &#183; <a href="tcllib/files/modules/struct/queue.html"> struct::queue </a> &#183; <a href="tcllib/files/modules/struct/stack.html"> struct::stack </a> &#183; <a href="tcllib/files/modules/struct/struct_tree.html"> struct::tree </a> &#183; <a href="tcllib/files/modules/struct/struct_tree1.html"> struct::tree_v1 </a> &#183; <a href="tcllib/files/modules/treeql/treeql.html"> treeql </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key806"> tree query language </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/treeql/treeql.html"> treeql </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key193"> tree walking </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/page/page_util_flow.html"> page_util_flow </a> &#183; <a href="tcllib/files/modules/page/page_util_norm_lemon.html"> page_util_norm_lemon </a> &#183; <a href="tcllib/files/modules/page/page_util_norm_peg.html"> page_util_norm_peg </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key804"> TreeQL </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/treeql/treeql.html"> treeql </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key407"> trimming </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/textutil/textutil.html"> textutil </a> &#183; <a href="tcllib/files/modules/textutil/trim.html"> textutil::trim </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key123"> type </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/fileutil/fileutil.html"> fileutil </a> &#183; <a href="tcllib/files/modules/fumagic/cfront.html"> fileutil::magic::cfront </a> &#183; <a href="tcllib/files/modules/fumagic/cgen.html"> fileutil::magic::cgen </a> &#183; <a href="tcllib/files/modules/fumagic/filetypes.html"> fileutil::magic::filetype </a> &#183; <a href="tcllib/files/modules/fumagic/mimetypes.html"> fileutil::magic::mimetype </a> &#183; <a href="tcllib/files/modules/fumagic/rtcore.html"> fileutil::magic::rt </a> &#183; <a href="tcllib/files/modules/snit/snit.html"> snit </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key77"> Type checking </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/valtype/valtype_common.html"> valtype::common </a> &#183; <a href="tcllib/files/modules/valtype/cc_amex.html"> valtype::creditcard::amex </a> &#183; <a href="tcllib/files/modules/valtype/cc_discover.html"> valtype::creditcard::discover </a> &#183; <a href="tcllib/files/modules/valtype/cc_mastercard.html"> valtype::creditcard::mastercard </a> &#183; <a href="tcllib/files/modules/valtype/cc_visa.html"> valtype::creditcard::visa </a> &#183; <a href="tcllib/files/modules/valtype/ean13.html"> valtype::gs1::ean13 </a> &#183; <a href="tcllib/files/modules/valtype/iban.html"> valtype::iban </a> &#183; <a href="tcllib/files/modules/valtype/imei.html"> valtype::imei </a> &#183; <a href="tcllib/files/modules/valtype/isbn.html"> valtype::isbn </a> &#183; <a href="tcllib/files/modules/valtype/luhn.html"> valtype::luhn </a> &#183; <a href="tcllib/files/modules/valtype/luhn5.html"> valtype::luhn5 </a> &#183; <a href="tcllib/files/modules/valtype/usnpi.html"> valtype::usnpi </a> &#183; <a href="tcllib/files/modules/valtype/verhoeff.html"> valtype::verhoeff </a>
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key627"> unicode </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/stringprep/stringprep.html"> stringprep </a> &#183; <a href="tcllib/files/modules/stringprep/stringprep_data.html"> stringprep::data </a> &#183; <a href="tcllib/files/modules/stringprep/unicode.html"> unicode </a> &#183; <a href="tcllib/files/modules/stringprep/unicode_data.html"> unicode::data </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key607"> union </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/disjointset.html"> struct::disjointset </a> &#183; <a href="tcllib/files/modules/struct/struct_set.html"> struct::set </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key589"> unit </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/units/units.html"> units </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key96"> unknown hooking </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/namespacex/namespacex.html"> namespacex </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key38"> untie </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/tie/tie_std.html"> tie </a> &#183; <a href="tcllib/files/modules/tie/tie.html"> tie </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key394"> update </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/coroutine/tcllib_coroutine.html"> coroutine </a> &#183; <a href="tcllib/files/modules/coroutine/coro_auto.html"> coroutine::auto </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key505"> uri </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uri/uri.html"> uri </a> &#183; <a href="tcllib/files/modules/uri/urn-scheme.html"> uri_urn </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key508"> url </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export.html"> doctools::idx::export </a> &#183; <a href="tcllib/files/modules/doctools2idx/import.html"> doctools::idx::import </a> &#183; <a href="tcllib/files/modules/doctools2toc/export.html"> doctools::toc::export </a> &#183; <a href="tcllib/files/modules/doctools2toc/import.html"> doctools::toc::import </a> &#183; <a href="tcllib/files/modules/map/map_geocode_nominatim.html"> map::geocode::nominatim </a> &#183; <a href="tcllib/files/modules/map/map_slippy_fetcher.html"> map::slippy::fetcher </a> &#183; <a href="tcllib/files/modules/uri/uri.html"> uri </a> &#183; <a href="tcllib/files/modules/uri/urn-scheme.html"> uri_urn </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key560"> urn </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uri/urn-scheme.html"> uri_urn </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key240"> US-NPI </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/valtype/usnpi.html"> valtype::usnpi </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key91"> utilities </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/namespacex/namespacex.html"> namespacex </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key243"> uuencode </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/base64/uuencode.html"> uuencode </a>







|














|









|



















|







3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key627"> unicode </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/stringprep/stringprep.html"> stringprep </a> &#183; <a href="tcllib/files/modules/stringprep/stringprep_data.html"> stringprep::data </a> &#183; <a href="tcllib/files/modules/stringprep/unicode.html"> unicode </a> &#183; <a href="tcllib/files/modules/stringprep/unicode_data.html"> unicode::data </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key606"> union </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/disjointset.html"> struct::disjointset </a> &#183; <a href="tcllib/files/modules/struct/struct_set.html"> struct::set </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key589"> unit </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/units/units.html"> units </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key96"> unknown hooking </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/namespacex/namespacex.html"> namespacex </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key36"> untie </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/tie/tie_std.html"> tie </a> &#183; <a href="tcllib/files/modules/tie/tie.html"> tie </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key394"> update </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/coroutine/tcllib_coroutine.html"> coroutine </a> &#183; <a href="tcllib/files/modules/coroutine/coro_auto.html"> coroutine::auto </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key506"> uri </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uri/uri.html"> uri </a> &#183; <a href="tcllib/files/modules/uri/urn-scheme.html"> uri_urn </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key508"> url </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export.html"> doctools::idx::export </a> &#183; <a href="tcllib/files/modules/doctools2idx/import.html"> doctools::idx::import </a> &#183; <a href="tcllib/files/modules/doctools2toc/export.html"> doctools::toc::export </a> &#183; <a href="tcllib/files/modules/doctools2toc/import.html"> doctools::toc::import </a> &#183; <a href="tcllib/files/modules/map/map_geocode_nominatim.html"> map::geocode::nominatim </a> &#183; <a href="tcllib/files/modules/map/map_slippy_fetcher.html"> map::slippy::fetcher </a> &#183; <a href="tcllib/files/modules/uri/uri.html"> uri </a> &#183; <a href="tcllib/files/modules/uri/urn-scheme.html"> uri_urn </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key560"> urn </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uri/urn-scheme.html"> uri_urn </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key240"> US-NPI </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/valtype/usnpi.html"> valtype::usnpi </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key90"> utilities </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/namespacex/namespacex.html"> namespacex </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key243"> uuencode </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/base64/uuencode.html"> uuencode </a>
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key732"> verhoeff </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/valtype/verhoeff.html"> valtype::verhoeff </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key438"> vertex </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graph.html"> struct::graph </a> &#183; <a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key473"> vertex cover </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key57"> virtual channel </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/cat.html"> tcl::chan::cat </a> &#183; <a href="tcllib/files/modules/virtchannel_core/core.html"> tcl::chan::core </a> &#183; <a href="tcllib/files/modules/virtchannel_core/events.html"> tcl::chan::events </a> &#183; <a href="tcllib/files/modules/virtchannel_base/facade.html"> tcl::chan::facade </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_fifo.html"> tcl::chan::fifo </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_fifo2.html"> tcl::chan::fifo2 </a> &#183; <a href="tcllib/files/modules/virtchannel_base/halfpipe.html"> tcl::chan::halfpipe </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_memchan.html"> tcl::chan::memchan </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_null.html"> tcl::chan::null </a> &#183; <a href="tcllib/files/modules/virtchannel_base/nullzero.html"> tcl::chan::nullzero </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_random.html"> tcl::chan::random </a> &#183; <a href="tcllib/files/modules/virtchannel_base/randseed.html"> tcl::chan::randseed </a> &#183; <a href="tcllib/files/modules/virtchannel_base/std.html"> tcl::chan::std </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_string.html"> tcl::chan::string </a> &#183; <a href="tcllib/files/modules/virtchannel_base/textwindow.html"> tcl::chan::textwindow </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_variable.html"> tcl::chan::variable </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_zero.html"> tcl::chan::zero </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/adler32.html"> tcl::transform::adler32 </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/base64.html"> tcl::transform::base64 </a> &#183; <a href="tcllib/files/modules/virtchannel_core/transformcore.html"> tcl::transform::core </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/counter.html"> tcl::transform::counter </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/crc32.html"> tcl::transform::crc32 </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/hex.html"> tcl::transform::hex </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/identity.html"> tcl::transform::identity </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/limitsize.html"> tcl::transform::limitsize </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/observe.html"> tcl::transform::observe </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/otp.html"> tcl::transform::otp </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/rot.html"> tcl::transform::rot </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/spacer.html"> tcl::transform::spacer </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/tcllib_zlib.html"> tcl::transform::zlib </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key25"> virtual machine </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_me/me_cpu.html"> grammar::me::cpu </a> &#183; <a href="tcllib/files/modules/grammar_me/me_cpucore.html"> grammar::me::cpu::core </a> &#183; <a href="tcllib/files/modules/grammar_me/gasm.html"> grammar::me::cpu::gasm </a> &#183; <a href="tcllib/files/modules/grammar_me/me_tcl.html"> grammar::me::tcl </a> &#183; <a href="tcllib/files/modules/grammar_me/me_intro.html"> grammar::me_intro </a> &#183; <a href="tcllib/files/modules/grammar_me/me_vm.html"> grammar::me_vm </a> &#183; <a href="tcllib/files/modules/grammar_peg/peg_interp.html"> grammar::peg::interp </a> &#183; <a href="tcllib/files/modules/pt/pt_param.html"> pt::param </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key692"> VISA </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/valtype/cc_visa.html"> valtype::creditcard::visa </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key393"> vwait </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/coroutine/tcllib_coroutine.html"> coroutine </a> &#183; <a href="tcllib/files/modules/coroutine/coro_auto.html"> coroutine::auto </a> &#183; <a href="tcllib/files/modules/smtpd/smtpd.html"> smtpd </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c26">Keywords: W</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key509"> wais </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uri/uri.html"> uri </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key229"> widget </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/snit/snit.html"> snit </a> &#183; <a href="tcllib/files/modules/snit/snitfaq.html"> snitfaq </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key233"> widget adaptors </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/snit/snit.html"> snit </a> &#183; <a href="tcllib/files/modules/snit/snitfaq.html"> snitfaq </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key183"> wiki </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/docidx.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export.html"> doctools::idx::export </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_wiki.html"> doctools::idx::export::wiki </a> &#183; <a href="tcllib/files/modules/doctools/doctoc.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/container.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/export.html"> doctools::toc::export </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_wiki.html"> doctools::toc::export::wiki </a>







|














|









|

















|







4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key732"> verhoeff </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/valtype/verhoeff.html"> valtype::verhoeff </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key440"> vertex </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graph.html"> struct::graph </a> &#183; <a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key473"> vertex cover </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key57"> virtual channel </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/cat.html"> tcl::chan::cat </a> &#183; <a href="tcllib/files/modules/virtchannel_core/core.html"> tcl::chan::core </a> &#183; <a href="tcllib/files/modules/virtchannel_core/events.html"> tcl::chan::events </a> &#183; <a href="tcllib/files/modules/virtchannel_base/facade.html"> tcl::chan::facade </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_fifo.html"> tcl::chan::fifo </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_fifo2.html"> tcl::chan::fifo2 </a> &#183; <a href="tcllib/files/modules/virtchannel_base/halfpipe.html"> tcl::chan::halfpipe </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_memchan.html"> tcl::chan::memchan </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_null.html"> tcl::chan::null </a> &#183; <a href="tcllib/files/modules/virtchannel_base/nullzero.html"> tcl::chan::nullzero </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_random.html"> tcl::chan::random </a> &#183; <a href="tcllib/files/modules/virtchannel_base/randseed.html"> tcl::chan::randseed </a> &#183; <a href="tcllib/files/modules/virtchannel_base/std.html"> tcl::chan::std </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_string.html"> tcl::chan::string </a> &#183; <a href="tcllib/files/modules/virtchannel_base/textwindow.html"> tcl::chan::textwindow </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_variable.html"> tcl::chan::variable </a> &#183; <a href="tcllib/files/modules/virtchannel_base/tcllib_zero.html"> tcl::chan::zero </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/adler32.html"> tcl::transform::adler32 </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/base64.html"> tcl::transform::base64 </a> &#183; <a href="tcllib/files/modules/virtchannel_core/transformcore.html"> tcl::transform::core </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/counter.html"> tcl::transform::counter </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/crc32.html"> tcl::transform::crc32 </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/hex.html"> tcl::transform::hex </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/identity.html"> tcl::transform::identity </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/limitsize.html"> tcl::transform::limitsize </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/observe.html"> tcl::transform::observe </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/otp.html"> tcl::transform::otp </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/rot.html"> tcl::transform::rot </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/spacer.html"> tcl::transform::spacer </a> &#183; <a href="tcllib/files/modules/virtchannel_transform/tcllib_zlib.html"> tcl::transform::zlib </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key24"> virtual machine </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_me/me_cpu.html"> grammar::me::cpu </a> &#183; <a href="tcllib/files/modules/grammar_me/me_cpucore.html"> grammar::me::cpu::core </a> &#183; <a href="tcllib/files/modules/grammar_me/gasm.html"> grammar::me::cpu::gasm </a> &#183; <a href="tcllib/files/modules/grammar_me/me_tcl.html"> grammar::me::tcl </a> &#183; <a href="tcllib/files/modules/grammar_me/me_intro.html"> grammar::me_intro </a> &#183; <a href="tcllib/files/modules/grammar_me/me_vm.html"> grammar::me_vm </a> &#183; <a href="tcllib/files/modules/grammar_peg/peg_interp.html"> grammar::peg::interp </a> &#183; <a href="tcllib/files/modules/pt/pt_param.html"> pt::param </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key692"> VISA </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/valtype/cc_visa.html"> valtype::creditcard::visa </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key395"> vwait </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/coroutine/tcllib_coroutine.html"> coroutine </a> &#183; <a href="tcllib/files/modules/coroutine/coro_auto.html"> coroutine::auto </a> &#183; <a href="tcllib/files/modules/smtpd/smtpd.html"> smtpd </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c26">Keywords: W</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key509"> wais </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uri/uri.html"> uri </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key229"> widget </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/snit/snit.html"> snit </a> &#183; <a href="tcllib/files/modules/snit/snitfaq.html"> snitfaq </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key232"> widget adaptors </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/snit/snit.html"> snit </a> &#183; <a href="tcllib/files/modules/snit/snitfaq.html"> snitfaq </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key183"> wiki </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/docidx.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/container.html"> doctools::idx </a> &#183; <a href="tcllib/files/modules/doctools2idx/export.html"> doctools::idx::export </a> &#183; <a href="tcllib/files/modules/doctools2idx/export_wiki.html"> doctools::idx::export::wiki </a> &#183; <a href="tcllib/files/modules/doctools/doctoc.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/container.html"> doctools::toc </a> &#183; <a href="tcllib/files/modules/doctools2toc/export.html"> doctools::toc::export </a> &#183; <a href="tcllib/files/modules/doctools2toc/export_wiki.html"> doctools::toc::export::wiki </a>
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key399"> x.209 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/asn/asn.html"> asn </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key142"> x.500 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ldap/ldap.html"> ldap </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key734"> xml </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/amazon-s3/xsxp.html"> xsxp </a>







|







4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key399"> x.209 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/asn/asn.html"> asn </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key141"> x.500 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ldap/ldap.html"> ldap </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key734"> xml </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/amazon-s3/xsxp.html"> xsxp </a>

Changes to embedded/www/tcllib/files/apps/dtplite.html.

121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<li class="subsection"><a href="#subsection1">USE CASES</a></li>
<li class="subsection"><a href="#subsection2">COMMAND LINE</a></li>
<li class="subsection"><a href="#subsection3">OPTIONS</a></li>
<li class="subsection"><a href="#subsection4">FORMATS</a></li>
<li class="subsection"><a href="#subsection5">DIRECTORY STRUCTURES</a></li>
</ul>
</li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<li class="subsection"><a href="#subsection1">USE CASES</a></li>
<li class="subsection"><a href="#subsection2">COMMAND LINE</a></li>
<li class="subsection"><a href="#subsection3">OPTIONS</a></li>
<li class="subsection"><a href="#subsection4">FORMATS</a></li>
<li class="subsection"><a href="#subsection5">DIRECTORY STRUCTURES</a></li>
</ul>
</li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
of contents and keyword index for the set of documents before their
conversion to the chosen output format.
They are left in place, i.e. not deleted, to serve as demonstrations
of doctoc and docidx markup.</p></dd>
</dl>
</div>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the application it describes, will undoubtedly
contain bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
application and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../modules/doctools/docidx_intro.html">docidx introduction</a>, <a href="../modules/doctools/doctoc_intro.html">doctoc introduction</a>, <a href="../modules/doctools/doctools_intro.html">doctools introduction</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../index.html#key17">HTML</a>, <a href="../../../index.html#key20">TMML</a>, <a href="../../../index.html#key19">conversion</a>, <a href="../../../index.html#key50">docidx</a>, <a href="../../../index.html#key246">doctoc</a>, <a href="../../../index.html#key51">doctools</a>, <a href="../../../index.html#key18">manpage</a>, <a href="../../../index.html#key16">markup</a>, <a href="../../../index.html#key21">nroff</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004-2013 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|
|
|

|

|





|








409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
of contents and keyword index for the set of documents before their
conversion to the chosen output format.
They are left in place, i.e. not deleted, to serve as demonstrations
of doctoc and docidx markup.</p></dd>
</dl>
</div>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../modules/doctools/docidx_intro.html">docidx introduction</a>, <a href="../modules/doctools/doctoc_intro.html">doctoc introduction</a>, <a href="../modules/doctools/doctools_intro.html">doctools introduction</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../index.html#key18">HTML</a>, <a href="../../../index.html#key19">TMML</a>, <a href="../../../index.html#key20">conversion</a>, <a href="../../../index.html#key50">docidx</a>, <a href="../../../index.html#key246">doctoc</a>, <a href="../../../index.html#key51">doctools</a>, <a href="../../../index.html#key17">manpage</a>, <a href="../../../index.html#key16">markup</a>, <a href="../../../index.html#key21">nroff</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004-2013 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/apps/nns.html.

119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section1">Description</a>
<ul>
<li class="subsection"><a href="#subsection1">USE CASES</a></li>
<li class="subsection"><a href="#subsection2">COMMAND LINE</a></li>
<li class="subsection"><a href="#subsection3">OPTIONS</a></li>
</ul>
</li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section1">Description</a>
<ul>
<li class="subsection"><a href="#subsection1">USE CASES</a></li>
<li class="subsection"><a href="#subsection2">COMMAND LINE</a></li>
<li class="subsection"><a href="#subsection3">OPTIONS</a></li>
</ul>
</li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
<dt><b class="option">-port</b> number</dt>
<dd><p>If this option is not specified it defaults to <b class="const">38573</b>. It
specifies the TCP port the name service to talk to is listening on for
requests.</p></dd>
</dl>
</div>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the application it describes, will undoubtedly
contain bugs and other problems.
Please report such in the category <em>nameserv</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
application and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../modules/nns/nns_client.html">nameserv(n)</a>, <a href="../modules/nns/nns_common.html">nameserv::common(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../index.html#key28">application</a>, <a href="../../../index.html#key30">client</a>, <a href="../../../index.html#key29">name service</a></p>
</div>







|
|
|

|

|







211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
<dt><b class="option">-port</b> number</dt>
<dd><p>If this option is not specified it defaults to <b class="const">38573</b>. It
specifies the TCP port the name service to talk to is listening on for
requests.</p></dd>
</dl>
</div>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>nameserv</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../modules/nns/nns_client.html">nameserv(n)</a>, <a href="../modules/nns/nns_common.html">nameserv::common(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../index.html#key28">application</a>, <a href="../../../index.html#key30">client</a>, <a href="../../../index.html#key29">name service</a></p>
</div>

Changes to embedded/www/tcllib/files/apps/nnsd.html.

119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section1">Description</a>
<ul>
<li class="subsection"><a href="#subsection1">USE CASES</a></li>
<li class="subsection"><a href="#subsection2">COMMAND LINE</a></li>
<li class="subsection"><a href="#subsection3">OPTIONS</a></li>
</ul>
</li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section1">Description</a>
<ul>
<li class="subsection"><a href="#subsection1">USE CASES</a></li>
<li class="subsection"><a href="#subsection2">COMMAND LINE</a></li>
<li class="subsection"><a href="#subsection3">OPTIONS</a></li>
</ul>
</li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
option is configured to <b class="const">false</b>.</p></dd>
<dt><b class="option">-port</b> number</dt>
<dd><p>If this option is not specified it defaults to <b class="const">38573</b>. It
specifies the TCP port the server has to listen on for requests.</p></dd>
</dl>
</div>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the application it describes, will undoubtedly
contain bugs and other problems.
Please report such in the category <em>nameserv</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
application and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../modules/nns/nns_common.html">nameserv::common(n)</a>, <a href="../modules/nns/nns_server.html">nameserv::server(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../index.html#key28">application</a>, <a href="../../../index.html#key29">name service</a>, <a href="../../../index.html#key61">server</a></p>
</div>







|
|
|

|

|







179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
option is configured to <b class="const">false</b>.</p></dd>
<dt><b class="option">-port</b> number</dt>
<dd><p>If this option is not specified it defaults to <b class="const">38573</b>. It
specifies the TCP port the server has to listen on for requests.</p></dd>
</dl>
</div>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>nameserv</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../modules/nns/nns_common.html">nameserv::common(n)</a>, <a href="../modules/nns/nns_server.html">nameserv::server(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../index.html#key28">application</a>, <a href="../../../index.html#key29">name service</a>, <a href="../../../index.html#key61">server</a></p>
</div>

Changes to embedded/www/tcllib/files/apps/nnslog.html.

119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section1">Description</a>
<ul>
<li class="subsection"><a href="#subsection1">USE CASES</a></li>
<li class="subsection"><a href="#subsection2">COMMAND LINE</a></li>
<li class="subsection"><a href="#subsection3">OPTIONS</a></li>
</ul>
</li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section1">Description</a>
<ul>
<li class="subsection"><a href="#subsection1">USE CASES</a></li>
<li class="subsection"><a href="#subsection2">COMMAND LINE</a></li>
<li class="subsection"><a href="#subsection3">OPTIONS</a></li>
</ul>
</li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
<dt><b class="option">-port</b> number</dt>
<dd><p>If this option is not specified it defaults to <b class="const">38573</b>. It
specifies the TCP port the name service to talk to is listening on for
requests.</p></dd>
</dl>
</div>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the application it describes, will undoubtedly
contain bugs and other problems.
Please report such in the category <em>nameserv</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
application and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../modules/nns/nns_client.html">nameserv(n)</a>, <a href="../modules/nns/nns_common.html">nameserv::common(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../index.html#key28">application</a>, <a href="../../../index.html#key30">client</a>, <a href="../../../index.html#key29">name service</a></p>
</div>







|
|
|

|

|







182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
<dt><b class="option">-port</b> number</dt>
<dd><p>If this option is not specified it defaults to <b class="const">38573</b>. It
specifies the TCP port the name service to talk to is listening on for
requests.</p></dd>
</dl>
</div>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>nameserv</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../modules/nns/nns_client.html">nameserv(n)</a>, <a href="../modules/nns/nns_common.html">nameserv::common(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../index.html#key28">application</a>, <a href="../../../index.html#key30">client</a>, <a href="../../../index.html#key29">name service</a></p>
</div>

Changes to embedded/www/tcllib/files/apps/page.html.

121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<li class="subsection"><a href="#subsection1">COMMAND LINE</a></li>
<li class="subsection"><a href="#subsection2">OPERATION</a></li>
<li class="subsection"><a href="#subsection3">OPTIONS</a></li>
<li class="subsection"><a href="#subsection4">PLUGINS</a></li>
<li class="subsection"><a href="#subsection5">PLUGIN LOCATIONS</a></li>
</ul>
</li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<li class="subsection"><a href="#subsection1">COMMAND LINE</a></li>
<li class="subsection"><a href="#subsection2">OPERATION</a></li>
<li class="subsection"><a href="#subsection3">OPTIONS</a></li>
<li class="subsection"><a href="#subsection4">PLUGINS</a></li>
<li class="subsection"><a href="#subsection5">PLUGIN LOCATIONS</a></li>
</ul>
</li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
<em>hb</em> and generates its tree representation.</p></dd>
<dt><em>ser</em></dt>
<dd><p>Interprets the input as the serialization of a PEG, as generated by
the writer plugin <em>ser</em>, using the package
<b class="package"><a href="../modules/grammar_peg/peg.html">grammar::peg</a></b>.</p></dd>
<dt><em>lemon</em></dt>
<dd><p>Interprets the input as a grammar specification as understood by
Richard Hipp's <i class="term"><a href="../../../index.html#key197">LEMON</a></i> parser generator and generates a tree
representation for it. Both the input syntax and the structure of the
tree representation are explained in their own manpages.</p></dd>
<dt><em>treeser</em></dt>
<dd><p>Interprets the input as the serialization of a
<b class="package"><a href="../modules/struct/struct_tree.html">struct::tree</a></b>. It is validated as such,
but nothing else. It is <em>not</em> assumed to
be the tree representation of a grammar.</p></dd>







|







348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
<em>hb</em> and generates its tree representation.</p></dd>
<dt><em>ser</em></dt>
<dd><p>Interprets the input as the serialization of a PEG, as generated by
the writer plugin <em>ser</em>, using the package
<b class="package"><a href="../modules/grammar_peg/peg.html">grammar::peg</a></b>.</p></dd>
<dt><em>lemon</em></dt>
<dd><p>Interprets the input as a grammar specification as understood by
Richard Hipp's <i class="term"><a href="../../../index.html#key196">LEMON</a></i> parser generator and generates a tree
representation for it. Both the input syntax and the structure of the
tree representation are explained in their own manpages.</p></dd>
<dt><em>treeser</em></dt>
<dd><p>Interprets the input as the serialization of a
<b class="package"><a href="../modules/struct/struct_tree.html">struct::tree</a></b>. It is validated as such,
but nothing else. It is <em>not</em> assumed to
be the tree representation of a grammar.</p></dd>
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
<p>The registry entries are specific to the Windows(tm) platform, all
other platforms will ignore them.</p>
<p>The contents of both environment variables and registry entries are
interpreted as a list of paths, with the elements separated by either
colon (Unix), or semicolon (Windows).</p>
</div>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the application it describes, will undoubtedly
contain bugs and other problems.
Please report such in the category <em>page</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
application and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>page::pluginmgr</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../index.html#key192">parser generator</a>, <a href="../../../index.html#key195">text processing</a></p>
</div>







|
|
|

|

|







449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
<p>The registry entries are specific to the Windows(tm) platform, all
other platforms will ignore them.</p>
<p>The contents of both environment variables and registry entries are
interpreted as a list of paths, with the elements separated by either
colon (Unix), or semicolon (Windows).</p>
</div>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>page</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>page::pluginmgr</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../index.html#key192">parser generator</a>, <a href="../../../index.html#key195">text processing</a></p>
</div>

Changes to embedded/www/tcllib/files/apps/pt.html.

219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
this allows them to be used in pure-Tcl environments, or in
environments which allow only a limited set of binary packages. In the
latter case it will be advantageous to lobby for the inclusion of the
C-based runtime support (notes below) into the environment to reduce
the impact of Tcl's on the speed of these parsers.</p>
<p>The relevant formats are <b class="const">snit</b> and <b class="const">oo</b>. Both place their
result into a Tcl package containing a <b class="cmd">snit::type</b>, or TclOO
<b class="cmd"><a href="../../../index.html#key236">class</a></b> respectively.</p>
<p>Of the supporting runtime, which is the package <b class="package"><a href="../modules/pt/pt_rdengine.html">pt::rde</a></b>, the
user has to know nothing but that it does exist and that the parsers
are dependent on it. Knowledge of the API exported by the runtime for
the parsers' consumption is <em>not</em> required by the parsers' users.</p></dd>
<dt><b class="const">Interpreted parsing implemented in Tcl</b></dt>
<dd><p>The last category, grammar interpretation. This means that an
interpreter for parsing expression grammars takes the description of







|







219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
this allows them to be used in pure-Tcl environments, or in
environments which allow only a limited set of binary packages. In the
latter case it will be advantageous to lobby for the inclusion of the
C-based runtime support (notes below) into the environment to reduce
the impact of Tcl's on the speed of these parsers.</p>
<p>The relevant formats are <b class="const">snit</b> and <b class="const">oo</b>. Both place their
result into a Tcl package containing a <b class="cmd">snit::type</b>, or TclOO
<b class="cmd"><a href="../../../index.html#key234">class</a></b> respectively.</p>
<p>Of the supporting runtime, which is the package <b class="package"><a href="../modules/pt/pt_rdengine.html">pt::rde</a></b>, the
user has to know nothing but that it does exist and that the parsers
are dependent on it. Knowledge of the API exported by the runtime for
the parsers' consumption is <em>not</em> required by the parsers' users.</p></dd>
<dt><b class="const">Interpreted parsing implemented in Tcl</b></dt>
<dd><p>The last category, grammar interpretation. This means that an
interpreter for parsing expression grammars takes the description of
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
<p>The main functionality of the application is encapsulated in the
package <b class="package"><a href="../modules/pt/pt_pgen.html">pt::pgen</a></b>. Please read it for more information.</p>
</div>
<div id="section12" class="section"><h2><a name="section12">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../index.html#key3">EBNF</a>, <a href="../../../index.html#key15">LL(k)</a>, <a href="../../../index.html#key6">PEG</a>, <a href="../../../index.html#key7">TDPL</a>, <a href="../../../index.html#key4">context-free languages</a>, <a href="../../../index.html#key0">expression</a>, <a href="../../../index.html#key11">grammar</a>, <a href="../../../index.html#key5">matching</a>, <a href="../../../index.html#key9">parser</a>, <a href="../../../index.html#key8">parsing expression</a>, <a href="../../../index.html#key14">parsing expression grammar</a>, <a href="../../../index.html#key1">push down automaton</a>, <a href="../../../index.html#key10">recursive descent</a>, <a href="../../../index.html#key2">state</a>, <a href="../../../index.html#key13">top-down parsing languages</a>, <a href="../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|













656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
<p>The main functionality of the application is encapsulated in the
package <b class="package"><a href="../modules/pt/pt_pgen.html">pt::pgen</a></b>. Please read it for more information.</p>
</div>
<div id="section12" class="section"><h2><a name="section12">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../index.html#key3">EBNF</a>, <a href="../../../index.html#key15">LL(k)</a>, <a href="../../../index.html#key6">PEG</a>, <a href="../../../index.html#key7">TDPL</a>, <a href="../../../index.html#key4">context-free languages</a>, <a href="../../../index.html#key0">expression</a>, <a href="../../../index.html#key11">grammar</a>, <a href="../../../index.html#key5">matching</a>, <a href="../../../index.html#key9">parser</a>, <a href="../../../index.html#key8">parsing expression</a>, <a href="../../../index.html#key14">parsing expression grammar</a>, <a href="../../../index.html#key1">push down automaton</a>, <a href="../../../index.html#key10">recursive descent</a>, <a href="../../../index.html#key2">state</a>, <a href="../../../index.html#key13">top-down parsing languages</a>, <a href="../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/apps/tcldocstrip.html.

119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section1">Description</a>
<ul>
<li class="subsection"><a href="#subsection1">USE CASES</a></li>
<li class="subsection"><a href="#subsection2">COMMAND LINE</a></li>
<li class="subsection"><a href="#subsection3">OPTIONS</a></li>
</ul>
</li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section1">Description</a>
<ul>
<li class="subsection"><a href="#subsection1">USE CASES</a></li>
<li class="subsection"><a href="#subsection2">COMMAND LINE</a></li>
<li class="subsection"><a href="#subsection3">OPTIONS</a></li>
</ul>
</li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
causes the application to write to stdout.
Using the string <b class="const">.</b> for an input file signals that the last
input file should be used again. This enables the assembly of the
output from one input file using multiple and different sets of
guards, without having to specify the full name of the file every
time.</p></dd>
<dt><a name="3"><b class="cmd">tcldocstrip</b> <b class="option">-guards</b> <i class="arg">input</i></a></dt>
<dd><p>This is the form for use case [3]. 
It determines the guards, and unique guard expressions used within the
provided <i class="arg">input</i> document. The found strings are written to
stdout, one string per line.</p></dd>
</dl>
</div>
<div id="subsection3" class="subsection"><h3><a name="subsection3">OPTIONS</a></h3>
<p>This section describes all the options available to the user of the







|







197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
causes the application to write to stdout.
Using the string <b class="const">.</b> for an input file signals that the last
input file should be used again. This enables the assembly of the
output from one input file using multiple and different sets of
guards, without having to specify the full name of the file every
time.</p></dd>
<dt><a name="3"><b class="cmd">tcldocstrip</b> <b class="option">-guards</b> <i class="arg">input</i></a></dt>
<dd><p>This is the form for use case [3].
It determines the guards, and unique guard expressions used within the
provided <i class="arg">input</i> document. The found strings are written to
stdout, one string per line.</p></dd>
</dl>
</div>
<div id="subsection3" class="subsection"><h3><a name="subsection3">OPTIONS</a></h3>
<p>This section describes all the options available to the user of the
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
standard parts are shown. This is the default.</p>
<p>Preambles, when active, are written before the actual content of a
generated file. In the same manner postambles are, when active,
written after the actual content of a generated file.</p></dd>
</dl>
</div>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the application it describes, will undoubtedly
contain bugs and other problems.
Please report such in the category <em>docstrip</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
application and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../modules/docstrip/docstrip.html">docstrip</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../index.html#key413">.dtx</a>, <a href="../../../index.html#key414">LaTeX</a>, <a href="../../../index.html#key19">conversion</a>, <a href="../../../index.html#key410">docstrip</a>, <a href="../../../index.html#key185">documentation</a>, <a href="../../../index.html#key411">literate programming</a>, <a href="../../../index.html#key16">markup</a>, <a href="../../../index.html#key412">source</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|
|
|

|

|





|








252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
standard parts are shown. This is the default.</p>
<p>Preambles, when active, are written before the actual content of a
generated file. In the same manner postambles are, when active,
written after the actual content of a generated file.</p></dd>
</dl>
</div>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>docstrip</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../modules/docstrip/docstrip.html">docstrip</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../index.html#key414">.dtx</a>, <a href="../../../index.html#key413">LaTeX</a>, <a href="../../../index.html#key20">conversion</a>, <a href="../../../index.html#key410">docstrip</a>, <a href="../../../index.html#key185">documentation</a>, <a href="../../../index.html#key412">literate programming</a>, <a href="../../../index.html#key16">markup</a>, <a href="../../../index.html#key411">source</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/aes/aes.html.

90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
	margin-bottom: 	1em;
	border-bottom:	1px solid black;
    }
--></style>
</head>
<! -- Generated from file '/home/aku/Projects/Tcllib/tcllib/embedded/www/tcllib/files/modules/aes/aes.html' by tcllib/doctools with format 'html'
   -->
<! -- Copyright &copy; 2005, Pat Thoyts &lt;[email protected]&gt;   -- Copyright &copy; 2012, Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ aes.n
   -->
<body><div class="doctools">
<hr> [
   <a href="../../../../../../../../home">Tcllib Home</a>
| <a href="../../../../toc.html">Main Table Of Contents</a>
| <a href="../../../toc.html">Table Of Contents</a>
| <a href="../../../../index.html">Keyword Index</a>
| <a href="../../../../toc0.html">Categories</a>
| <a href="../../../../toc1.html">Modules</a>
| <a href="../../../../toc2.html">Applications</a>
 ] <hr>
<h1 class="title">aes(n) 1.1 tcllib &quot;Advanced Encryption Standard (AES)&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>aes - Implementation of the AES block cipher</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">PROGRAMMING INTERFACE</a></li>
<li class="section"><a href="#section4">MODES OF OPERATION</a></li>
<li class="section"><a href="#section5">EXAMPLES</a></li>
<li class="section"><a href="#section6">REFERENCES</a></li>
<li class="section"><a href="#section7">AUTHORS</a></li>
<li class="section"><a href="#section8">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.2</b></li>
<li>package require <b class="pkgname">aes <span class="opt">?1.1?</span></b></li>
</ul>
<ul class="syntax">
<li><a href="#1"><b class="cmd">::aes::aes</b> <span class="opt">?<i class="arg">-mode [ecb|cbc]</i>?</span> <span class="opt">?<i class="arg">-dir [encrypt|decrypt]</i>?</span> <i class="arg">-key keydata</i> <span class="opt">?<i class="arg">-iv vector</i>?</span> <span class="opt">?<i class="arg">-hex</i>?</span> <span class="opt">?<i class="arg">-out channel</i>?</span> <span class="opt">?<i class="arg">-chunksize size</i>?</span> [ <i class="arg">-in channel</i> | <span class="opt">?<b class="option">--</b>?</span> <i class="arg">data</i> ]</a></li>
<li><a href="#2"><b class="cmd">::aes::Init</b> <i class="arg">mode</i> <i class="arg">keydata</i> <i class="arg">iv</i></a></li>
<li><a href="#3"><b class="cmd">::aes::Encrypt</b> <i class="arg">Key</i> <i class="arg">data</i></a></li>
<li><a href="#4"><b class="cmd">::aes::Decrypt</b> <i class="arg">Key</i> <i class="arg">data</i></a></li>
<li><a href="#5"><b class="cmd">::aes::Reset</b> <i class="arg">Key</i> <i class="arg">iv</i></a></li>







|













|














|










|







90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
	margin-bottom: 	1em;
	border-bottom:	1px solid black;
    }
--></style>
</head>
<! -- Generated from file '/home/aku/Projects/Tcllib/tcllib/embedded/www/tcllib/files/modules/aes/aes.html' by tcllib/doctools with format 'html'
   -->
<! -- Copyright &copy; 2005, Pat Thoyts &lt;[email protected]&gt;   -- Copyright &copy; 2012-2013, Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ aes.n
   -->
<body><div class="doctools">
<hr> [
   <a href="../../../../../../../../home">Tcllib Home</a>
| <a href="../../../../toc.html">Main Table Of Contents</a>
| <a href="../../../toc.html">Table Of Contents</a>
| <a href="../../../../index.html">Keyword Index</a>
| <a href="../../../../toc0.html">Categories</a>
| <a href="../../../../toc1.html">Modules</a>
| <a href="../../../../toc2.html">Applications</a>
 ] <hr>
<h1 class="title">aes(n) 1.1.1 tcllib &quot;Advanced Encryption Standard (AES)&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>aes - Implementation of the AES block cipher</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">PROGRAMMING INTERFACE</a></li>
<li class="section"><a href="#section4">MODES OF OPERATION</a></li>
<li class="section"><a href="#section5">EXAMPLES</a></li>
<li class="section"><a href="#section6">REFERENCES</a></li>
<li class="section"><a href="#section7">AUTHORS</a></li>
<li class="section"><a href="#section8">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.2</b></li>
<li>package require <b class="pkgname">aes <span class="opt">?1.1.1?</span></b></li>
</ul>
<ul class="syntax">
<li><a href="#1"><b class="cmd">::aes::aes</b> <span class="opt">?<i class="arg">-mode [ecb|cbc]</i>?</span> <span class="opt">?<i class="arg">-dir [encrypt|decrypt]</i>?</span> <i class="arg">-key keydata</i> <span class="opt">?<i class="arg">-iv vector</i>?</span> <span class="opt">?<i class="arg">-hex</i>?</span> <span class="opt">?<i class="arg">-out channel</i>?</span> <span class="opt">?<i class="arg">-chunksize size</i>?</span> [ <i class="arg">-in channel</i> | <span class="opt">?<b class="option">--</b>?</span> <i class="arg">data</i> ]</a></li>
<li><a href="#2"><b class="cmd">::aes::Init</b> <i class="arg">mode</i> <i class="arg">keydata</i> <i class="arg">iv</i></a></li>
<li><a href="#3"><b class="cmd">::aes::Encrypt</b> <i class="arg">Key</i> <i class="arg">data</i></a></li>
<li><a href="#4"><b class="cmd">::aes::Decrypt</b> <i class="arg">Key</i> <i class="arg">data</i></a></li>
<li><a href="#5"><b class="cmd">::aes::Reset</b> <i class="arg">Key</i> <i class="arg">iv</i></a></li>
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
<dl class="definitions">
<dt><a name="1"><b class="cmd">::aes::aes</b> <span class="opt">?<i class="arg">-mode [ecb|cbc]</i>?</span> <span class="opt">?<i class="arg">-dir [encrypt|decrypt]</i>?</span> <i class="arg">-key keydata</i> <span class="opt">?<i class="arg">-iv vector</i>?</span> <span class="opt">?<i class="arg">-hex</i>?</span> <span class="opt">?<i class="arg">-out channel</i>?</span> <span class="opt">?<i class="arg">-chunksize size</i>?</span> [ <i class="arg">-in channel</i> | <span class="opt">?<b class="option">--</b>?</span> <i class="arg">data</i> ]</a></dt>
<dd><p>Perform the <b class="package">aes</b> algorithm on either the data provided
by the argument or on the data read from the <i class="arg">-in</i> channel. If
an <i class="arg">-out</i> channel is given then the result will be written to
this channel.</p>
<p>The <i class="arg">-key</i> option must be given. This parameter takes a binary
string of either 16, 24 or 32 bytes in length and is used to generate the 
key schedule.</p>
<p>The <i class="arg">-mode</i> and <i class="arg">-dir</i> options are optional and default to cbc
mode and encrypt respectively. The initialization vector <i class="arg">-iv</i>
takes a 16 byte binary argument which defaults to all zeros.
See <span class="sectref"><a href="#section4">MODES OF OPERATION</a></span> for more about available modes and
their uses.</p>
<p>AES is a 128-bit block cipher. This means that the data must be







|







157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
<dl class="definitions">
<dt><a name="1"><b class="cmd">::aes::aes</b> <span class="opt">?<i class="arg">-mode [ecb|cbc]</i>?</span> <span class="opt">?<i class="arg">-dir [encrypt|decrypt]</i>?</span> <i class="arg">-key keydata</i> <span class="opt">?<i class="arg">-iv vector</i>?</span> <span class="opt">?<i class="arg">-hex</i>?</span> <span class="opt">?<i class="arg">-out channel</i>?</span> <span class="opt">?<i class="arg">-chunksize size</i>?</span> [ <i class="arg">-in channel</i> | <span class="opt">?<b class="option">--</b>?</span> <i class="arg">data</i> ]</a></dt>
<dd><p>Perform the <b class="package">aes</b> algorithm on either the data provided
by the argument or on the data read from the <i class="arg">-in</i> channel. If
an <i class="arg">-out</i> channel is given then the result will be written to
this channel.</p>
<p>The <i class="arg">-key</i> option must be given. This parameter takes a binary
string of either 16, 24 or 32 bytes in length and is used to generate the
key schedule.</p>
<p>The <i class="arg">-mode</i> and <i class="arg">-dir</i> options are optional and default to cbc
mode and encrypt respectively. The initialization vector <i class="arg">-iv</i>
takes a 16 byte binary argument which defaults to all zeros.
See <span class="sectref"><a href="#section4">MODES OF OPERATION</a></span> for more about available modes and
their uses.</p>
<p>AES is a 128-bit block cipher. This means that the data must be
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
    Federal Information Processing Standards Publication 197, 2001
    (<a href="http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf">http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf</a>)</p></li>
</ol>
</div>
<div id="section7" class="section"><h2><a name="section7">AUTHORS</a></h2>
<p>Thorsten Schloermann, Pat Thoyts</p>
</div>
<div id="section8" class="section"><h2><a name="section8">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>aes</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../blowfish/blowfish.html">blowfish(n)</a>, <a href="../des/des.html">des(n)</a>, <a href="../md5/md5.html">md5(n)</a>, <a href="../sha1/sha1.html">sha1(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key777">aes</a>, <a href="../../../../index.html#key633">block cipher</a>, <a href="../../../../index.html#key149">data integrity</a>, <a href="../../../../index.html#key152">encryption</a>, <a href="../../../../index.html#key148">security</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005, Pat Thoyts &lt;[email protected]&gt;<br>
Copyright &copy; 2012, Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|







|






|


240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
    Federal Information Processing Standards Publication 197, 2001
    (<a href="http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf">http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf</a>)</p></li>
</ol>
</div>
<div id="section7" class="section"><h2><a name="section7">AUTHORS</a></h2>
<p>Thorsten Schloermann, Pat Thoyts</p>
</div>
<div id="section8" class="section"><h2><a name="section8">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>aes</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../blowfish/blowfish.html">blowfish(n)</a>, <a href="../des/des.html">des(n)</a>, <a href="../md5/md5.html">md5(n)</a>, <a href="../sha1/sha1.html">sha1(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key777">aes</a>, <a href="../../../../index.html#key633">block cipher</a>, <a href="../../../../index.html#key150">data integrity</a>, <a href="../../../../index.html#key153">encryption</a>, <a href="../../../../index.html#key148">security</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005, Pat Thoyts &lt;[email protected]&gt;<br>
Copyright &copy; 2012-2013, Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/amazon-s3/S3.html.

119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section2">ERROR REPORTING</a></li>
<li class="section"><a href="#section3">COMMANDS</a></li>
<li class="section"><a href="#section4">LOW LEVEL COMMANDS</a></li>
<li class="section"><a href="#section5">HIGH LEVEL COMMANDS</a></li>
<li class="section"><a href="#section6">LIMITATIONS</a></li>
<li class="section"><a href="#section7">USAGE SUGGESTIONS</a></li>
<li class="section"><a href="#section8">FUTURE DEVELOPMENTS</a></li>
<li class="section"><a href="#section9">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section2">ERROR REPORTING</a></li>
<li class="section"><a href="#section3">COMMANDS</a></li>
<li class="section"><a href="#section4">LOW LEVEL COMMANDS</a></li>
<li class="section"><a href="#section5">HIGH LEVEL COMMANDS</a></li>
<li class="section"><a href="#section6">LIMITATIONS</a></li>
<li class="section"><a href="#section7">USAGE SUGGESTIONS</a></li>
<li class="section"><a href="#section8">FUTURE DEVELOPMENTS</a></li>
<li class="section"><a href="#section9">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package provides access to Amazon's Simple Storage Solution web service.</p>
<p>As a quick summary, Amazon Simple Storage Solution
provides a for-fee web service allowing the storage of arbitrary data as
&quot;resources&quot; within &quot;buckets&quot; online.  
See <a href="http://www.amazonaws.com/">http://www.amazonaws.com/</a> for details on that system.  
Access to the service is via HTTP (SOAP or REST).  Much of this
documentation will not make sense if you're not familiar with
the terms and functionality of the Amazon S3 service.</p>
<p>This package provides services for reading and writing
the data items via the REST interface.  It also provides some
higher-level operations.  Other packages in the same distribution
provide for even more functionality.</p>
<p>Copyright 2006 Darren New. All Rights Reserved.
NO WARRANTIES OF ANY TYPE ARE PROVIDED.
COPYING OR USE INDEMNIFIES THE AUTHOR IN ALL WAYS.
This software is licensed under essentially the same 
terms as Tcl. See LICENSE.txt for the terms.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">ERROR REPORTING</a></h2>
<p>The error reporting from this package makes use of $errorCode to 
provide more details on what happened than simply throwing an error.
Any error caught by the S3 package (and we try to catch them all)
will return with an $errorCode being a list having at least three
elements. In all cases, the first element will be &quot;S3&quot;. The second
element will take on one of six values, with that element defining
the value of the third and subsequent elements. S3::REST does not
throw an error, but rather returns a dictionary with the keys &quot;error&quot;, 
&quot;errorInfo&quot;, and &quot;errorCode&quot; set. This allows for reliable background
use. The possible second elements are these:</p>
<dl class="definitions">
<dt>usage</dt>
<dd><p>The usage of the package is incorrect. For example,
a command has been invoked which requires the library to be configured
before the library has been configured, or an invalid combination of
options has been specified. The third element of $errorCode supplies
the name of the parameter that was wrong. The fourth usually provides
the arguments that were actually supplied to the throwing proc, unless
the usage error isn't confined to a single proc.</p></dd>
<dt>local</dt>
<dd><p>Something happened on the local system which threw 
an error. For example, a request to upload or download a file was made
and the file permissions denied that sort of access. The third element
of $errorCode is the original $errorCode.</p></dd>
<dt>socket</dt>
<dd><p>Something happened with the socket. It closed 
prematurely, or some other condition of failure-to-communicate-with-Amazon 
was detected. The third element of $errorCode is the original $errorCode,
or sometimes the message from fcopy, or ...?</p></dd>
<dt>remote</dt>
<dd><p>The Amazon web service returned an error code outside
the 2xx range in the HTTP header. In other words, everything went as
documented, except this particular case was documented not to work.
The third element is the dictionary returned from <b class="cmd">::S3::REST</b>. 
Note that S3::REST itself never throws this error, but just returns
the dictionary. Most of the higher-level commands throw for convenience,
unless an argument indicates they should not. If something is documented
as &quot;not throwing an S3 remote error&quot;, it means a status return is set
rather than throwing an error if Amazon returns a non-2XX HTTP result code.</p></dd>
<dt>notyet</dt>
<dd><p>The user obeyed the documentation, but the author
has not yet gotten around to implementing this feature. (Right now,
only TLS support and sophisticated permissions fall into this category,
as well as the S3::Acl command.)</p></dd>
<dt>xml</dt>
<dd><p>The service has returned invalid XML, or XML whose 
schema is unexpected. For the high-level commands that accept
service XML as input for parsing, this may also be thrown.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">COMMANDS</a></h2>
<p>This package provides several separate levels of complexity.</p>
<ul class="itemized">
<li><p>The lowest level simply takes arguments to be sent to the service,
sends them, retrieves the result, and provides it to the caller.
<em>Note:</em> This layer allows both synchronous and event-driven
processing. It depends on the MD5 and SHA1 and base64 packages
from Tcllib (available at <a href="http://core.tcl.tk/tcllib/">http://core.tcl.tk/tcllib/</a>). 
Note that <b class="cmd">S3::Configure</b> is required for <b class="cmd">S3::REST</b> to 
work due to the authentication portion, so we put that in the &quot;lowest level.&quot;</p></li>
<li><p>The next layer parses the results of calls, allowing for functionality
such as uploading only changed files, synchronizing directories, 
and so on.  This layer depends on the <b class="package">TclXML</b> package as well as the 
included <b class="package"><a href="xsxp.html">xsxp</a></b> package. These packages are package required when
these more-sophisticated routines are called, so nothing breaks if
they are not correctly installed.</p></li>
<li><p>Also included is a separate program that uses the library. 
It provides code to parse $argv0 and $argv from the
command line, allowing invocation as a tclkit, etc. 
(Not yet implmented.)</p></li>
<li><p>Another separate program provides a GUI interface allowing drag-and-drop
and other such functionality. (Not yet implemented.)</p></li>
<li><p>Also built on this package is the OddJob program. It is 
a separate program designed to allow distribution of 
computational work units over Amazon's Elastic Compute
Cloud web service.</p></li>
</ul>
<p>The goal is to have at least the bottom-most layers implemented in
pure Tcl using only that which comes from widely-available sources,
such as Tcllib.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">LOW LEVEL COMMANDS</a></h2>
<p>These commands do not require any packages not listed above.
They talk directly to the service, or they are utility or 
configuration routines. Note that the &quot;xsxp&quot; package was
written to support this package, so it should be available
wherever you got this package.</p>
<dl class="definitions">
<dt><a name="1"><b class="cmd">S3::Configure</b> <span class="opt">?<b class="option">-reset</b> <i class="arg">boolean</i>?</span> <span class="opt">?<b class="option">-retries</b> <i class="arg">integer</i>?</span> <span class="opt">?<b class="option">-accesskeyid</b> <i class="arg">idstring</i>?</span> <span class="opt">?<b class="option">-secretaccesskey</b> <i class="arg">idstring</i>?</span> <span class="opt">?<b class="option">-service-access-point</b> <i class="arg">FQDN</i>?</span> <span class="opt">?<b class="option">-use-tls</b> <i class="arg">boolean</i>?</span> <span class="opt">?<b class="option">-default-compare</b> <i class="arg">always|never|exists|missing|newer|date|checksum|different</i>?</span> <span class="opt">?<b class="option">-default-separator</b> <i class="arg">string</i>?</span> <span class="opt">?<b class="option">-default-acl</b> <i class="arg">private|public-read|public-read-write|authenticated-read|keep|calc</i>?</span> <span class="opt">?<b class="option">-default-bucket</b> <i class="arg">bucketname</i>?</span></a></dt>
<dd><p>There is one command for configuration, and that is <b class="cmd">S3::Configure</b>.  
If called with no arguments, it returns a
dictionary of key/value pairs listing all current settings.  If called
with one argument, it returns the value of that single argument.  If
called with two or more arguments, it must be called with pairs of
arguments, and it applies the changes in order.  There is only one set
of configuration information per interpreter.</p>
<p>The following options are accepted:</p>







|
|










|



|






|












|




|
|






|











|











|
|


|
|



|

|



|
|









|





|







158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package provides access to Amazon's Simple Storage Solution web service.</p>
<p>As a quick summary, Amazon Simple Storage Solution
provides a for-fee web service allowing the storage of arbitrary data as
&quot;resources&quot; within &quot;buckets&quot; online.
See <a href="http://www.amazonaws.com/">http://www.amazonaws.com/</a> for details on that system.
Access to the service is via HTTP (SOAP or REST).  Much of this
documentation will not make sense if you're not familiar with
the terms and functionality of the Amazon S3 service.</p>
<p>This package provides services for reading and writing
the data items via the REST interface.  It also provides some
higher-level operations.  Other packages in the same distribution
provide for even more functionality.</p>
<p>Copyright 2006 Darren New. All Rights Reserved.
NO WARRANTIES OF ANY TYPE ARE PROVIDED.
COPYING OR USE INDEMNIFIES THE AUTHOR IN ALL WAYS.
This software is licensed under essentially the same
terms as Tcl. See LICENSE.txt for the terms.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">ERROR REPORTING</a></h2>
<p>The error reporting from this package makes use of $errorCode to
provide more details on what happened than simply throwing an error.
Any error caught by the S3 package (and we try to catch them all)
will return with an $errorCode being a list having at least three
elements. In all cases, the first element will be &quot;S3&quot;. The second
element will take on one of six values, with that element defining
the value of the third and subsequent elements. S3::REST does not
throw an error, but rather returns a dictionary with the keys &quot;error&quot;,
&quot;errorInfo&quot;, and &quot;errorCode&quot; set. This allows for reliable background
use. The possible second elements are these:</p>
<dl class="definitions">
<dt>usage</dt>
<dd><p>The usage of the package is incorrect. For example,
a command has been invoked which requires the library to be configured
before the library has been configured, or an invalid combination of
options has been specified. The third element of $errorCode supplies
the name of the parameter that was wrong. The fourth usually provides
the arguments that were actually supplied to the throwing proc, unless
the usage error isn't confined to a single proc.</p></dd>
<dt>local</dt>
<dd><p>Something happened on the local system which threw
an error. For example, a request to upload or download a file was made
and the file permissions denied that sort of access. The third element
of $errorCode is the original $errorCode.</p></dd>
<dt>socket</dt>
<dd><p>Something happened with the socket. It closed
prematurely, or some other condition of failure-to-communicate-with-Amazon
was detected. The third element of $errorCode is the original $errorCode,
or sometimes the message from fcopy, or ...?</p></dd>
<dt>remote</dt>
<dd><p>The Amazon web service returned an error code outside
the 2xx range in the HTTP header. In other words, everything went as
documented, except this particular case was documented not to work.
The third element is the dictionary returned from <b class="cmd">::S3::REST</b>.
Note that S3::REST itself never throws this error, but just returns
the dictionary. Most of the higher-level commands throw for convenience,
unless an argument indicates they should not. If something is documented
as &quot;not throwing an S3 remote error&quot;, it means a status return is set
rather than throwing an error if Amazon returns a non-2XX HTTP result code.</p></dd>
<dt>notyet</dt>
<dd><p>The user obeyed the documentation, but the author
has not yet gotten around to implementing this feature. (Right now,
only TLS support and sophisticated permissions fall into this category,
as well as the S3::Acl command.)</p></dd>
<dt>xml</dt>
<dd><p>The service has returned invalid XML, or XML whose
schema is unexpected. For the high-level commands that accept
service XML as input for parsing, this may also be thrown.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">COMMANDS</a></h2>
<p>This package provides several separate levels of complexity.</p>
<ul class="itemized">
<li><p>The lowest level simply takes arguments to be sent to the service,
sends them, retrieves the result, and provides it to the caller.
<em>Note:</em> This layer allows both synchronous and event-driven
processing. It depends on the MD5 and SHA1 and base64 packages
from Tcllib (available at <a href="http://core.tcl.tk/tcllib/">http://core.tcl.tk/tcllib/</a>).
Note that <b class="cmd">S3::Configure</b> is required for <b class="cmd">S3::REST</b> to
work due to the authentication portion, so we put that in the &quot;lowest level.&quot;</p></li>
<li><p>The next layer parses the results of calls, allowing for functionality
such as uploading only changed files, synchronizing directories,
and so on.  This layer depends on the <b class="package">TclXML</b> package as well as the
included <b class="package"><a href="xsxp.html">xsxp</a></b> package. These packages are package required when
these more-sophisticated routines are called, so nothing breaks if
they are not correctly installed.</p></li>
<li><p>Also included is a separate program that uses the library.
It provides code to parse $argv0 and $argv from the
command line, allowing invocation as a tclkit, etc.
(Not yet implmented.)</p></li>
<li><p>Another separate program provides a GUI interface allowing drag-and-drop
and other such functionality. (Not yet implemented.)</p></li>
<li><p>Also built on this package is the OddJob program. It is
a separate program designed to allow distribution of
computational work units over Amazon's Elastic Compute
Cloud web service.</p></li>
</ul>
<p>The goal is to have at least the bottom-most layers implemented in
pure Tcl using only that which comes from widely-available sources,
such as Tcllib.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">LOW LEVEL COMMANDS</a></h2>
<p>These commands do not require any packages not listed above.
They talk directly to the service, or they are utility or
configuration routines. Note that the &quot;xsxp&quot; package was
written to support this package, so it should be available
wherever you got this package.</p>
<dl class="definitions">
<dt><a name="1"><b class="cmd">S3::Configure</b> <span class="opt">?<b class="option">-reset</b> <i class="arg">boolean</i>?</span> <span class="opt">?<b class="option">-retries</b> <i class="arg">integer</i>?</span> <span class="opt">?<b class="option">-accesskeyid</b> <i class="arg">idstring</i>?</span> <span class="opt">?<b class="option">-secretaccesskey</b> <i class="arg">idstring</i>?</span> <span class="opt">?<b class="option">-service-access-point</b> <i class="arg">FQDN</i>?</span> <span class="opt">?<b class="option">-use-tls</b> <i class="arg">boolean</i>?</span> <span class="opt">?<b class="option">-default-compare</b> <i class="arg">always|never|exists|missing|newer|date|checksum|different</i>?</span> <span class="opt">?<b class="option">-default-separator</b> <i class="arg">string</i>?</span> <span class="opt">?<b class="option">-default-acl</b> <i class="arg">private|public-read|public-read-write|authenticated-read|keep|calc</i>?</span> <span class="opt">?<b class="option">-default-bucket</b> <i class="arg">bucketname</i>?</span></a></dt>
<dd><p>There is one command for configuration, and that is <b class="cmd">S3::Configure</b>.
If called with no arguments, it returns a
dictionary of key/value pairs listing all current settings.  If called
with one argument, it returns the value of that single argument.  If
called with two or more arguments, it must be called with pairs of
arguments, and it applies the changes in order.  There is only one set
of configuration information per interpreter.</p>
<p>The following options are accepted:</p>
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
backoff delay will be tried this many times before finally
throwing the 500 error. This applies to each call to <b class="cmd">S3::REST</b>
from the higher-level commands, but not to <b class="cmd">S3::REST</b> itself.
That is, <b class="cmd">S3::REST</b> will always return httpstatus 500 if that's
what it receives. Functions like <b class="cmd">S3::Put</b> will retry the PUT call,
and will also retry the GET and HEAD calls used to do content comparison.
Changing this to 0 will prevent retries and their associated delays.
In addition, socket errors (i.e., errors whose errorCode starts with 
&quot;S3 socket&quot;) will be similarly retried after backoffs.</p></dd>
<dt><b class="option">-accesskeyid</b> <i class="arg">idstring</i></dt>
<dd></dd>
<dt><b class="option">-secretaccesskey</b> <i class="arg">idstring</i></dt>
<dd><p>Each defaults to an empty string.
These must be set before any calls are made. This is your S3 ID.
Once you sign up for an account, go to <a href="http://www.amazonaws.com/">http://www.amazonaws.com/</a>,
sign in, go to the &quot;Your Web Services Account&quot; button, pick &quot;AWS 
Access Identifiers&quot;, and your access key ID and secret access keys 
will be available. All <b class="cmd">S3::REST</b> calls are authenticated.
Blame Amazon for the poor choice of names.</p></dd>
<dt><b class="option">-service-access-point</b> <i class="arg">FQDN</i></dt>
<dd><p>Defaults to &quot;s3.amazonaws.com&quot;. This is the fully-qualified domain
name of the server to contact for <b class="cmd">S3::REST</b> calls. You should
probably never need to touch this, unless someone else implements
a compatible service, or you wish to test something by pointing
the library at your own service.</p></dd>
<dt><b class="option">-slop-seconds</b> <i class="arg">integer</i></dt>
<dd><p>When comparing dates between Amazon and the local machine,
two dates within this many seconds of each other are considered
the same. Useful for clock drift correction, processing overhead 
time, and so on.</p></dd>
<dt><b class="option">-use-tls</b> <i class="arg">boolean</i></dt>
<dd><p>Defaults to false. This is not yet implemented. If true, <b class="cmd">S3::REST</b> will
negotiate a TLS connection to Amazon. If false, unencrypted connections
are used.</p></dd>
<dt><b class="option">-bucket-prefix</b> <i class="arg">string</i></dt>
<dd><p>Defaults to &quot;TclS3&quot;.  This string is used by <b class="cmd">S3::SuggestBucketName</b>
if that command is passed an empty string as an argument. It is used
to distinguish different applications using the Amazon service. 
Your application should always set this to keep from interfering with
the buckets of other users of Amazon S3 or with other buckets of the
same user.</p></dd>
<dt><b class="option">-default-compare</b> <i class="arg">always|never|exists|missing|newer|date|checksum|different</i></dt>
<dd><p>Defaults to &quot;always.&quot; If no -compare is specified on 
<b class="cmd">S3::Put</b>, <b class="cmd">S3::Get</b>, or <b class="cmd">S3::Delete</b>, this comparison is used. 
See those commands for a description of the meaning.</p></dd>
<dt><b class="option">-default-separator</b> <i class="arg">string</i></dt>
<dd><p>Defaults to &quot;/&quot;. This is currently unused. It might make sense to use
this for <b class="cmd">S3::Push</b> and <b class="cmd">S3::Pull</b>, but allowing resources to 
have slashes in their names that aren't marking directories would be
problematic. Hence, this currently does nothing.</p></dd>
<dt><b class="option">-default-acl</b> <i class="arg">private|public-read|public-read-write|authenticated-read|keep|calc</i></dt>
<dd><p>Defaults to an empty string. If no -acl argument is provided to <b class="cmd">S3::Put</b> or
<b class="cmd">S3::Push</b>, this string is used 
(given as the x-amz-acl header if not keep or calc). If this is also
empty, no x-amz-acl header is generated. 
This is <em>not</em> used by <b class="cmd">S3::REST</b>.</p></dd>
<dt><b class="option">-default-bucket</b> <i class="arg">bucketname</i></dt>
<dd><p>If no bucket is given to <b class="cmd">S3::GetBucket</b>, <b class="cmd">S3::PutBucket</b>,
<b class="cmd">S3::Get</b>, <b class="cmd">S3::Put</b>, 
<b class="cmd">S3::Head</b>, <b class="cmd">S3::Acl</b>,
<b class="cmd">S3::Delete</b>, <b class="cmd">S3::Push</b>, 
<b class="cmd">S3::Pull</b>, or <b class="cmd">S3::Toss</b>, and if this configuration variable
is not an empty string (and not simply &quot;/&quot;), then this value
will be used for the bucket. This is useful if one program does
a large amount of resource manipulation within a single bucket.</p></dd>
</dl></dd>
<dt><a name="2"><b class="cmd">S3::SuggestBucket</b> <span class="opt">?<i class="arg">name</i>?</span></a></dt>
<dd><p>The <b class="cmd">S3::SuggestBucket</b> command accepts an optional string as 
a prefix and returns a valid bucket containing the <i class="arg">name</i> argument
and the Access Key ID. This makes the name unique to the owner and
to the application (assuming the application picks a good <i class="arg">name</i> argument).
If no name is provided, 
the name from <b class="cmd">S3::Configure</b> <i class="arg">-bucket-prefix</i> is used. 
If that too is empty (which is not the default), an error is thrown.</p></dd>
<dt><a name="3"><b class="cmd">S3::REST</b> <i class="arg">dict</i></a></dt>
<dd><p>The <b class="cmd">S3::REST</b> command takes as an argument a dictionary and 
returns a dictionary.  The return dictionary has the same keys
as the input dictionary, and includes additional keys as the result.
The presence or absence of keys in the input dictionary can control
the behavior of the routine.  It never throws an error directly, but 
includes keys &quot;error&quot;, &quot;errorInfo&quot;, and &quot;errorCode&quot; if necessary.
Some keys are required, some optional. The routine can run either
in blocking or non-blocking mode, based on the presense 
of <b class="option">resultvar</b> in the input dictionary. This requires
the <i class="arg">-accesskeyid</i> and <i class="arg">-secretaccesskey</i> to be configured via
<b class="cmd">S3::Configure</b> before being called.</p>
<p>The possible input keys are these:</p>
<dl class="definitions">
<dt><b class="option">verb</b> <i class="arg">GET|PUT|DELETE|HEAD</i></dt>
<dd><p>This required item indicates the verb to be used.</p></dd>







|







|
|











|








|




|
|



|




|

|



|

|






|



|
|


|



|


|







285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
backoff delay will be tried this many times before finally
throwing the 500 error. This applies to each call to <b class="cmd">S3::REST</b>
from the higher-level commands, but not to <b class="cmd">S3::REST</b> itself.
That is, <b class="cmd">S3::REST</b> will always return httpstatus 500 if that's
what it receives. Functions like <b class="cmd">S3::Put</b> will retry the PUT call,
and will also retry the GET and HEAD calls used to do content comparison.
Changing this to 0 will prevent retries and their associated delays.
In addition, socket errors (i.e., errors whose errorCode starts with
&quot;S3 socket&quot;) will be similarly retried after backoffs.</p></dd>
<dt><b class="option">-accesskeyid</b> <i class="arg">idstring</i></dt>
<dd></dd>
<dt><b class="option">-secretaccesskey</b> <i class="arg">idstring</i></dt>
<dd><p>Each defaults to an empty string.
These must be set before any calls are made. This is your S3 ID.
Once you sign up for an account, go to <a href="http://www.amazonaws.com/">http://www.amazonaws.com/</a>,
sign in, go to the &quot;Your Web Services Account&quot; button, pick &quot;AWS
Access Identifiers&quot;, and your access key ID and secret access keys
will be available. All <b class="cmd">S3::REST</b> calls are authenticated.
Blame Amazon for the poor choice of names.</p></dd>
<dt><b class="option">-service-access-point</b> <i class="arg">FQDN</i></dt>
<dd><p>Defaults to &quot;s3.amazonaws.com&quot;. This is the fully-qualified domain
name of the server to contact for <b class="cmd">S3::REST</b> calls. You should
probably never need to touch this, unless someone else implements
a compatible service, or you wish to test something by pointing
the library at your own service.</p></dd>
<dt><b class="option">-slop-seconds</b> <i class="arg">integer</i></dt>
<dd><p>When comparing dates between Amazon and the local machine,
two dates within this many seconds of each other are considered
the same. Useful for clock drift correction, processing overhead
time, and so on.</p></dd>
<dt><b class="option">-use-tls</b> <i class="arg">boolean</i></dt>
<dd><p>Defaults to false. This is not yet implemented. If true, <b class="cmd">S3::REST</b> will
negotiate a TLS connection to Amazon. If false, unencrypted connections
are used.</p></dd>
<dt><b class="option">-bucket-prefix</b> <i class="arg">string</i></dt>
<dd><p>Defaults to &quot;TclS3&quot;.  This string is used by <b class="cmd">S3::SuggestBucketName</b>
if that command is passed an empty string as an argument. It is used
to distinguish different applications using the Amazon service.
Your application should always set this to keep from interfering with
the buckets of other users of Amazon S3 or with other buckets of the
same user.</p></dd>
<dt><b class="option">-default-compare</b> <i class="arg">always|never|exists|missing|newer|date|checksum|different</i></dt>
<dd><p>Defaults to &quot;always.&quot; If no -compare is specified on
<b class="cmd">S3::Put</b>, <b class="cmd">S3::Get</b>, or <b class="cmd">S3::Delete</b>, this comparison is used.
See those commands for a description of the meaning.</p></dd>
<dt><b class="option">-default-separator</b> <i class="arg">string</i></dt>
<dd><p>Defaults to &quot;/&quot;. This is currently unused. It might make sense to use
this for <b class="cmd">S3::Push</b> and <b class="cmd">S3::Pull</b>, but allowing resources to
have slashes in their names that aren't marking directories would be
problematic. Hence, this currently does nothing.</p></dd>
<dt><b class="option">-default-acl</b> <i class="arg">private|public-read|public-read-write|authenticated-read|keep|calc</i></dt>
<dd><p>Defaults to an empty string. If no -acl argument is provided to <b class="cmd">S3::Put</b> or
<b class="cmd">S3::Push</b>, this string is used
(given as the x-amz-acl header if not keep or calc). If this is also
empty, no x-amz-acl header is generated.
This is <em>not</em> used by <b class="cmd">S3::REST</b>.</p></dd>
<dt><b class="option">-default-bucket</b> <i class="arg">bucketname</i></dt>
<dd><p>If no bucket is given to <b class="cmd">S3::GetBucket</b>, <b class="cmd">S3::PutBucket</b>,
<b class="cmd">S3::Get</b>, <b class="cmd">S3::Put</b>,
<b class="cmd">S3::Head</b>, <b class="cmd">S3::Acl</b>,
<b class="cmd">S3::Delete</b>, <b class="cmd">S3::Push</b>,
<b class="cmd">S3::Pull</b>, or <b class="cmd">S3::Toss</b>, and if this configuration variable
is not an empty string (and not simply &quot;/&quot;), then this value
will be used for the bucket. This is useful if one program does
a large amount of resource manipulation within a single bucket.</p></dd>
</dl></dd>
<dt><a name="2"><b class="cmd">S3::SuggestBucket</b> <span class="opt">?<i class="arg">name</i>?</span></a></dt>
<dd><p>The <b class="cmd">S3::SuggestBucket</b> command accepts an optional string as
a prefix and returns a valid bucket containing the <i class="arg">name</i> argument
and the Access Key ID. This makes the name unique to the owner and
to the application (assuming the application picks a good <i class="arg">name</i> argument).
If no name is provided,
the name from <b class="cmd">S3::Configure</b> <i class="arg">-bucket-prefix</i> is used.
If that too is empty (which is not the default), an error is thrown.</p></dd>
<dt><a name="3"><b class="cmd">S3::REST</b> <i class="arg">dict</i></a></dt>
<dd><p>The <b class="cmd">S3::REST</b> command takes as an argument a dictionary and
returns a dictionary.  The return dictionary has the same keys
as the input dictionary, and includes additional keys as the result.
The presence or absence of keys in the input dictionary can control
the behavior of the routine.  It never throws an error directly, but
includes keys &quot;error&quot;, &quot;errorInfo&quot;, and &quot;errorCode&quot; if necessary.
Some keys are required, some optional. The routine can run either
in blocking or non-blocking mode, based on the presense
of <b class="option">resultvar</b> in the input dictionary. This requires
the <i class="arg">-accesskeyid</i> and <i class="arg">-secretaccesskey</i> to be configured via
<b class="cmd">S3::Configure</b> before being called.</p>
<p>The possible input keys are these:</p>
<dl class="definitions">
<dt><b class="option">verb</b> <i class="arg">GET|PUT|DELETE|HEAD</i></dt>
<dd><p>This required item indicates the verb to be used.</p></dd>
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
values must be valid. This can be an empty dictionary or
omitted entirely if no parameters are desired. No other
error checking on parameters is performed.</p></dd>
<dt><span class="opt">?<b class="option">headers</b> <i class="arg">dict</i>?</span></dt>
<dd><p>This optional dictionary provides headers to be added
to the HTTP request. The keys must be in <em>lower case</em>
for the authentication to work. The values must not contain
embedded newlines or carriage returns. This is primarily 
useful for adding x-amz-* headers. Since authentication
is calculated by <b class="cmd">S3::REST</b>, do not add that header here.
Since content-type gets its own key, also do not add
that header here.</p></dd>
<dt><span class="opt">?<b class="option">inbody</b> <i class="arg">contentstring</i>?</span></dt>
<dd><p>This optional item, if provided, gives the content that will
be sent. It is sent with a tranfer encoding of binary, and
only the low bytes are used, so use [encoding convertto utf-8] 
if the string is a utf-8 string. This is written all in one blast,
so if you are using non-blocking mode and the <b class="option">inbody</b> is
especially large, you may wind up blocking on the write socket.</p></dd>
<dt><span class="opt">?<b class="option">infile</b> <i class="arg">filename</i>?</span></dt>
<dd><p>This optional item, if provided, and if <b class="option">inbody</b> is not provided,
names the file from which the body of the HTTP message will be
constructed. The file is opened for reading and sent progressively
by [fcopy], so it should not block in non-blocking mode
even if the file is very large. The file is transfered in 
binary mode, so the bytes on your disk will match the bytes 
in your resource. Due to HTTP restrictions, it must be possible to
use [file size] on this file to determine the size at the
start of the transaction.</p></dd>
<dt><span class="opt">?<b class="option">S3chan</b> <i class="arg">channel</i>?</span></dt>
<dd><p>This optional item, if provided, indicates the already-open socket
over which the transaction should be conducted. If not provided,
a connection is made to the service access point specified via
<b class="cmd">S3::Configure</b>, which is normally s3.amazonaws.com. If this
is provided, the channel is not closed at the end of the transaction.</p></dd>
<dt><span class="opt">?<b class="option">outchan</b> <i class="arg">channel</i>?</span></dt>
<dd><p>This optional item, if provided, indicates the already-open channel
to which the body returned from S3 should be written. That is, 
to retrieve a large resource, open a file, set the translation mode,
and pass the channel as the value of the key outchan. Output
will be written to the channel in pieces so memory does not fill
up unnecessarily. The channel is not closed at the end of the transaction.</p></dd>
<dt><span class="opt">?<b class="option">resultvar</b> <i class="arg">varname</i>?</span></dt>
<dd><p>This optional item, if provided, indicates that <b class="cmd">S3::REST</b> should
run in non-blocking mode. The <i class="arg">varname</i> should be fully qualified
with respect to namespaces and cannot be local to a proc. If provided,
the result of the <b class="cmd">S3::REST</b> call is assigned to this variable once
everything has completed; use trace or vwait to know when this has happened.
If this key is not provided, the result is simply returned from the 
call to <b class="cmd">S3::REST</b> and no calls to the eventloop are invoked from
within this call.</p></dd>
<dt><span class="opt">?<b class="option">throwsocket</b> <i class="arg">throw|return</i>?</span></dt>
<dd><p>This optional item, if provided, indicates that <b class="cmd">S3::REST</b> should
throw an error if throwmode is throw and a socket error is encountered.
It indicates that <b class="cmd">S3::REST</b> should return the error code in the 
returned dictionary if a socket error is encountered and this is
set to return. If <b class="option">throwsocket</b> is set to <i class="arg">return</i> or
if the call is not blocking, then a socket error (i.e., an error 
whose error code starts with &quot;S3 socket&quot; will be returned in the
dictionary as <b class="option">error</b>, <b class="option">errorInfo</b>, and <b class="option">errorCode</b>.
If a foreground call is made (i.e., <b class="option">resultvar</b> is not provided),
and this option is not provided or is set to <i class="arg">throw</i>, then 
<b class="cmd"><a href="../../../../index.html#key171">error</a></b> will be invoked instead.</p></dd>
</dl>
<p>Once the call to <b class="cmd">S3::REST</b> completes, a new dict is returned,
either in the <i class="arg">resultvar</i> or as the result of execution. This dict is 
a copy of the original dict with the results added as new keys. The possible
new keys are these:</p>
<dl class="definitions">
<dt><b class="option">error</b> <i class="arg">errorstring</i></dt>
<dd></dd>
<dt><b class="option">errorInfo</b> <i class="arg">errorstring</i></dt>
<dd></dd>
<dt><b class="option">errorCode</b> <i class="arg">errorstring</i></dt>
<dd><p>If an error is caught, these three keys will be set in the result.
Note that <b class="cmd">S3::REST</b> does <em>not</em> consider a non-2XX HTTP 
return code as an error. The <b class="option">errorCode</b> value will be
formatted according to the <span class="sectref"><a href="#section2">ERROR REPORTING</a></span> description.
If these are present, other keys described here might not be.</p></dd>
<dt><b class="option">httpstatus</b> <i class="arg">threedigits</i></dt>
<dd><p>The three-digit code from the HTTP transaction. 2XX for good, 
5XX for server error, etc.</p></dd>
<dt><b class="option">httpmessage</b> <i class="arg">text</i></dt>
<dd><p>The textual result after the status code. &quot;OK&quot; or &quot;Forbidden&quot;
or etc.</p></dd>
<dt><b class="option">outbody</b> <i class="arg">contentstring</i></dt>
<dd><p>If <i class="arg">outchan</i> was not specified, this key will hold a 
reference to the (unencoded) contents of the body returned.
If Amazon returned an error (a la the httpstatus not a 2XX value),
the error message will be in <b class="option">outbody</b> or written to
<b class="option">outchan</b> as appropriate.</p></dd>
<dt><b class="option">outheaders</b> <i class="arg">dict</i></dt>
<dd><p>This contains a dictionary of headers returned by Amazon.
The keys are always lower case. It's mainly useful for
finding the x-amz-meta-* headers, if any, although things
like last-modified and content-type are also useful. 
The keys of this dictionary are always lower case. 
Both keys and values are trimmed of extraneous whitespace.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">HIGH LEVEL COMMANDS</a></h2>
<p>The routines in this section all make use of one or more calls 
to <b class="cmd">S3::REST</b> to do their work, then parse and manage the data
in a convenient way.  All these commands throw errors
as described in <span class="sectref"><a href="#section2">ERROR REPORTING</a></span> unless otherwise noted.</p>
<p>In all these commands, all arguments are presented as name/value pairs, 
in any order. All the argument names start with a hyphen.</p>
<p>There are a few options that are common to many
of the commands, and those common options are documented here.</p>
<dl class="definitions">
<dt><b class="option">-blocking</b> <i class="arg">boolean</i></dt>
<dd><p>If provided and specified as false, 
then any calls to <b class="cmd">S3:REST</b> will be non-blocking,
and internally these routines will call [vwait] to get
the results. In other words, these routines will return the
same value, but they'll have event loops running while waiting
for Amazon.</p></dd>
<dt><b class="option">-parse-xml</b> <i class="arg">xmlstring</i></dt>
<dd><p>If provided, the routine skips actually communicating with







|







|








|
|











|










|





|


|



|



|









|




|





|








|
|





|



|





|







388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
values must be valid. This can be an empty dictionary or
omitted entirely if no parameters are desired. No other
error checking on parameters is performed.</p></dd>
<dt><span class="opt">?<b class="option">headers</b> <i class="arg">dict</i>?</span></dt>
<dd><p>This optional dictionary provides headers to be added
to the HTTP request. The keys must be in <em>lower case</em>
for the authentication to work. The values must not contain
embedded newlines or carriage returns. This is primarily
useful for adding x-amz-* headers. Since authentication
is calculated by <b class="cmd">S3::REST</b>, do not add that header here.
Since content-type gets its own key, also do not add
that header here.</p></dd>
<dt><span class="opt">?<b class="option">inbody</b> <i class="arg">contentstring</i>?</span></dt>
<dd><p>This optional item, if provided, gives the content that will
be sent. It is sent with a tranfer encoding of binary, and
only the low bytes are used, so use [encoding convertto utf-8]
if the string is a utf-8 string. This is written all in one blast,
so if you are using non-blocking mode and the <b class="option">inbody</b> is
especially large, you may wind up blocking on the write socket.</p></dd>
<dt><span class="opt">?<b class="option">infile</b> <i class="arg">filename</i>?</span></dt>
<dd><p>This optional item, if provided, and if <b class="option">inbody</b> is not provided,
names the file from which the body of the HTTP message will be
constructed. The file is opened for reading and sent progressively
by [fcopy], so it should not block in non-blocking mode
even if the file is very large. The file is transfered in
binary mode, so the bytes on your disk will match the bytes
in your resource. Due to HTTP restrictions, it must be possible to
use [file size] on this file to determine the size at the
start of the transaction.</p></dd>
<dt><span class="opt">?<b class="option">S3chan</b> <i class="arg">channel</i>?</span></dt>
<dd><p>This optional item, if provided, indicates the already-open socket
over which the transaction should be conducted. If not provided,
a connection is made to the service access point specified via
<b class="cmd">S3::Configure</b>, which is normally s3.amazonaws.com. If this
is provided, the channel is not closed at the end of the transaction.</p></dd>
<dt><span class="opt">?<b class="option">outchan</b> <i class="arg">channel</i>?</span></dt>
<dd><p>This optional item, if provided, indicates the already-open channel
to which the body returned from S3 should be written. That is,
to retrieve a large resource, open a file, set the translation mode,
and pass the channel as the value of the key outchan. Output
will be written to the channel in pieces so memory does not fill
up unnecessarily. The channel is not closed at the end of the transaction.</p></dd>
<dt><span class="opt">?<b class="option">resultvar</b> <i class="arg">varname</i>?</span></dt>
<dd><p>This optional item, if provided, indicates that <b class="cmd">S3::REST</b> should
run in non-blocking mode. The <i class="arg">varname</i> should be fully qualified
with respect to namespaces and cannot be local to a proc. If provided,
the result of the <b class="cmd">S3::REST</b> call is assigned to this variable once
everything has completed; use trace or vwait to know when this has happened.
If this key is not provided, the result is simply returned from the
call to <b class="cmd">S3::REST</b> and no calls to the eventloop are invoked from
within this call.</p></dd>
<dt><span class="opt">?<b class="option">throwsocket</b> <i class="arg">throw|return</i>?</span></dt>
<dd><p>This optional item, if provided, indicates that <b class="cmd">S3::REST</b> should
throw an error if throwmode is throw and a socket error is encountered.
It indicates that <b class="cmd">S3::REST</b> should return the error code in the
returned dictionary if a socket error is encountered and this is
set to return. If <b class="option">throwsocket</b> is set to <i class="arg">return</i> or
if the call is not blocking, then a socket error (i.e., an error
whose error code starts with &quot;S3 socket&quot; will be returned in the
dictionary as <b class="option">error</b>, <b class="option">errorInfo</b>, and <b class="option">errorCode</b>.
If a foreground call is made (i.e., <b class="option">resultvar</b> is not provided),
and this option is not provided or is set to <i class="arg">throw</i>, then
<b class="cmd"><a href="../../../../index.html#key171">error</a></b> will be invoked instead.</p></dd>
</dl>
<p>Once the call to <b class="cmd">S3::REST</b> completes, a new dict is returned,
either in the <i class="arg">resultvar</i> or as the result of execution. This dict is
a copy of the original dict with the results added as new keys. The possible
new keys are these:</p>
<dl class="definitions">
<dt><b class="option">error</b> <i class="arg">errorstring</i></dt>
<dd></dd>
<dt><b class="option">errorInfo</b> <i class="arg">errorstring</i></dt>
<dd></dd>
<dt><b class="option">errorCode</b> <i class="arg">errorstring</i></dt>
<dd><p>If an error is caught, these three keys will be set in the result.
Note that <b class="cmd">S3::REST</b> does <em>not</em> consider a non-2XX HTTP
return code as an error. The <b class="option">errorCode</b> value will be
formatted according to the <span class="sectref"><a href="#section2">ERROR REPORTING</a></span> description.
If these are present, other keys described here might not be.</p></dd>
<dt><b class="option">httpstatus</b> <i class="arg">threedigits</i></dt>
<dd><p>The three-digit code from the HTTP transaction. 2XX for good,
5XX for server error, etc.</p></dd>
<dt><b class="option">httpmessage</b> <i class="arg">text</i></dt>
<dd><p>The textual result after the status code. &quot;OK&quot; or &quot;Forbidden&quot;
or etc.</p></dd>
<dt><b class="option">outbody</b> <i class="arg">contentstring</i></dt>
<dd><p>If <i class="arg">outchan</i> was not specified, this key will hold a
reference to the (unencoded) contents of the body returned.
If Amazon returned an error (a la the httpstatus not a 2XX value),
the error message will be in <b class="option">outbody</b> or written to
<b class="option">outchan</b> as appropriate.</p></dd>
<dt><b class="option">outheaders</b> <i class="arg">dict</i></dt>
<dd><p>This contains a dictionary of headers returned by Amazon.
The keys are always lower case. It's mainly useful for
finding the x-amz-meta-* headers, if any, although things
like last-modified and content-type are also useful.
The keys of this dictionary are always lower case.
Both keys and values are trimmed of extraneous whitespace.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">HIGH LEVEL COMMANDS</a></h2>
<p>The routines in this section all make use of one or more calls
to <b class="cmd">S3::REST</b> to do their work, then parse and manage the data
in a convenient way.  All these commands throw errors
as described in <span class="sectref"><a href="#section2">ERROR REPORTING</a></span> unless otherwise noted.</p>
<p>In all these commands, all arguments are presented as name/value pairs,
in any order. All the argument names start with a hyphen.</p>
<p>There are a few options that are common to many
of the commands, and those common options are documented here.</p>
<dl class="definitions">
<dt><b class="option">-blocking</b> <i class="arg">boolean</i></dt>
<dd><p>If provided and specified as false,
then any calls to <b class="cmd">S3:REST</b> will be non-blocking,
and internally these routines will call [vwait] to get
the results. In other words, these routines will return the
same value, but they'll have event loops running while waiting
for Amazon.</p></dd>
<dt><b class="option">-parse-xml</b> <i class="arg">xmlstring</i></dt>
<dd><p>If provided, the routine skips actually communicating with
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
<dd><p>Almost every high-level command needs to know what bucket
the resources are in. This option specifies that. (Only the
command to list available buckets does not require this parameter.)
This does not need to be URL-encoded, even if it contains
special or non-ASCII characters. May or may not contain leading
or trailing spaces - commands normalize the bucket. If this is
not supplied, the value is taken from <b class="cmd">S3::Configure -default-bucket</b>
if that string isn't empty. Note that spaces and slashes are 
always trimmed from both ends and the rest must leave a valid bucket.</p></dd>
<dt><b class="option">-resource</b> <i class="arg">resourcename</i></dt>
<dd><p>This specifies the resource of interest within the bucket. 
It may or may not start with a slash - both cases are handled.
This does not need to be URL-encoded, even if it contains
special or non-ASCII characters.</p></dd>
<dt><b class="option">-compare</b> <i class="arg">always|never|exists|missing|newer|date|checksum|different</i></dt>
<dd><p>When commands copy resources to files or files to resources, the caller may specify that the copy should be skipped if the contents are the same. This argument specifies the conditions under which the files should be copied. If it is not passed, the result of <b class="cmd">S3::Configure -default-compare</b> is used, which in turn defaults to &quot;always.&quot; The meanings of the various values are these:</p>
<dl class="definitions">
<dt><i class="arg">always</i></dt>
<dd><p>Always copy the data. This is the default.</p></dd>
<dt><i class="arg">never</i></dt>
<dd><p>Never copy the data. This is essentially a no-op, except in <b class="cmd">S3::Push</b> and <b class="cmd">S3::Pull</b> where the -delete flag might make a difference.</p></dd>
<dt><i class="arg">exists</i></dt>
<dd><p>Copy the data only if the destination already exists.</p></dd>
<dt><i class="arg">missing</i></dt>
<dd><p>Copy the data only if the destination does not already exist.</p></dd>
<dt><i class="arg">newer</i></dt>
<dd><p>Copy the data if the destination is missing, or if the date on the source is 
newer than the date on the destination by at 
least <b class="cmd">S3::Configure -slop-seconds</b> seconds. If the source is 
Amazon, the date is taken from the Last-Modified header. If the 
source is local, it is taken as the mtime of the file. If the source data
is specified in a string rather than a file, it is taken as right now,
via [clock seconds].</p></dd>
<dt><i class="arg">date</i></dt>
<dd><p>Like <i class="arg">newer</i>, except copy if the date is newer <em>or</em> older.</p></dd>
<dt><i class="arg">checksum</i></dt>
<dd><p>Calculate the MD5 checksum on the local file or string, ask Amazon for the eTag
of the resource, and copy the data if they're different. Copy the data
also if the destination is missing. Note that this can be slow with
large local files unless the C version of the MD5 support is available.</p></dd>
<dt><i class="arg">different</i></dt>
<dd><p>Copy the data if the destination does not exist. 
If the destination exists and an actual file name was specified 
(rather than a content string), 
and the date on the file differs from the date on the resource,
copy the data. 
If the data is provided as a content string, the &quot;date&quot; is treated 
as &quot;right now&quot;, so it will likely always differ unless slop-seconds is large.
If the dates are the same, the MD5 checksums are compared, and the
data is copied if the checksums differ.</p></dd>
</dl>
<p>Note that &quot;newer&quot; and &quot;date&quot; don't care about the contents, and &quot;checksum&quot; doesn't care about the dates, but &quot;different&quot; checks both.</p></dd>
<dt><a name="4"><b class="cmd">S3::ListAllMyBuckets</b> <span class="opt">?<b class="option">-blocking</b> <i class="arg">boolean</i>?</span> <span class="opt">?<b class="option">-parse-xml</b> <i class="arg">xmlstring</i>?</span> <span class="opt">?<b class="option">-result-type</b> <i class="arg">REST|xml|pxml|dict|names|owner</i>?</span></a></dt>
<dd><p>This routine performs a GET on the Amazon S3 service, which is







|


|















|
|
|
|











|
|
|

|
|







515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
<dd><p>Almost every high-level command needs to know what bucket
the resources are in. This option specifies that. (Only the
command to list available buckets does not require this parameter.)
This does not need to be URL-encoded, even if it contains
special or non-ASCII characters. May or may not contain leading
or trailing spaces - commands normalize the bucket. If this is
not supplied, the value is taken from <b class="cmd">S3::Configure -default-bucket</b>
if that string isn't empty. Note that spaces and slashes are
always trimmed from both ends and the rest must leave a valid bucket.</p></dd>
<dt><b class="option">-resource</b> <i class="arg">resourcename</i></dt>
<dd><p>This specifies the resource of interest within the bucket.
It may or may not start with a slash - both cases are handled.
This does not need to be URL-encoded, even if it contains
special or non-ASCII characters.</p></dd>
<dt><b class="option">-compare</b> <i class="arg">always|never|exists|missing|newer|date|checksum|different</i></dt>
<dd><p>When commands copy resources to files or files to resources, the caller may specify that the copy should be skipped if the contents are the same. This argument specifies the conditions under which the files should be copied. If it is not passed, the result of <b class="cmd">S3::Configure -default-compare</b> is used, which in turn defaults to &quot;always.&quot; The meanings of the various values are these:</p>
<dl class="definitions">
<dt><i class="arg">always</i></dt>
<dd><p>Always copy the data. This is the default.</p></dd>
<dt><i class="arg">never</i></dt>
<dd><p>Never copy the data. This is essentially a no-op, except in <b class="cmd">S3::Push</b> and <b class="cmd">S3::Pull</b> where the -delete flag might make a difference.</p></dd>
<dt><i class="arg">exists</i></dt>
<dd><p>Copy the data only if the destination already exists.</p></dd>
<dt><i class="arg">missing</i></dt>
<dd><p>Copy the data only if the destination does not already exist.</p></dd>
<dt><i class="arg">newer</i></dt>
<dd><p>Copy the data if the destination is missing, or if the date on the source is
newer than the date on the destination by at
least <b class="cmd">S3::Configure -slop-seconds</b> seconds. If the source is
Amazon, the date is taken from the Last-Modified header. If the
source is local, it is taken as the mtime of the file. If the source data
is specified in a string rather than a file, it is taken as right now,
via [clock seconds].</p></dd>
<dt><i class="arg">date</i></dt>
<dd><p>Like <i class="arg">newer</i>, except copy if the date is newer <em>or</em> older.</p></dd>
<dt><i class="arg">checksum</i></dt>
<dd><p>Calculate the MD5 checksum on the local file or string, ask Amazon for the eTag
of the resource, and copy the data if they're different. Copy the data
also if the destination is missing. Note that this can be slow with
large local files unless the C version of the MD5 support is available.</p></dd>
<dt><i class="arg">different</i></dt>
<dd><p>Copy the data if the destination does not exist.
If the destination exists and an actual file name was specified
(rather than a content string),
and the date on the file differs from the date on the resource,
copy the data.
If the data is provided as a content string, the &quot;date&quot; is treated
as &quot;right now&quot;, so it will likely always differ unless slop-seconds is large.
If the dates are the same, the MD5 checksums are compared, and the
data is copied if the checksums differ.</p></dd>
</dl>
<p>Note that &quot;newer&quot; and &quot;date&quot; don't care about the contents, and &quot;checksum&quot; doesn't care about the dates, but &quot;different&quot; checks both.</p></dd>
<dt><a name="4"><b class="cmd">S3::ListAllMyBuckets</b> <span class="opt">?<b class="option">-blocking</b> <i class="arg">boolean</i>?</span> <span class="opt">?<b class="option">-parse-xml</b> <i class="arg">xmlstring</i>?</span> <span class="opt">?<b class="option">-result-type</b> <i class="arg">REST|xml|pxml|dict|names|owner</i>?</span></a></dt>
<dd><p>This routine performs a GET on the Amazon S3 service, which is
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
<dt>Owner/ID</dt>
<dd><p>The Amazon AWS ID (in hex) of the owner of the bucket.</p></dd>
<dt>Owner/DisplayName</dt>
<dd><p>The Amazon AWS ID's Display Name.</p></dd>
<dt>Bucket/Name</dt>
<dd><p>A list of names, one for each bucket.</p></dd>
<dt>Bucket/CreationDate</dt>
<dd><p>A list of dates, one for each bucket, 
in the same order as Bucket/Name, in ISO format (as returned by Amazon).</p></dd>
</dl></dd>
<dt><b class="option">-result-type</b> <i class="arg">names</i></dt>
<dd><p>A list of bucket names is returned with all other information stripped out.
This is the default result type for this command.</p></dd>
<dt><b class="option">-result-type</b> <i class="arg">owner</i></dt>
<dd><p>A list containing two elements is returned. The first element is 
the owner's ID, and the second is the owner's display name.</p></dd>
</dl></dd>
<dt><a name="5"><b class="cmd">S3::PutBucket</b> <span class="opt">?<b class="option">-bucket</b> <i class="arg">bucketname</i>?</span> <span class="opt">?<b class="option">-blocking</b> <i class="arg">boolean</i>?</span> <span class="opt">?<b class="option">-acl</b> <i class="arg">{}|private|public-read|public-read-write|authenticated-read</i>?</span></a></dt>
<dd><p>This command creates a bucket if it does not already exist. Bucket names are
globally unique, so you may get a &quot;Forbidden&quot; error from Amazon even if you
cannot see the bucket in <b class="cmd">S3::ListAllMyBuckets</b>. See <b class="cmd">S3::SuggestBucket</b> for ways to minimize this risk. The x-amz-acl header comes from the <b class="option">-acl</b> option, or from <b class="cmd">S3::Configure -default-acl</b> if not specified.</p></dd>
<dt><a name="6"><b class="cmd">S3::DeleteBucket</b> <span class="opt">?<b class="option">-bucket</b> <i class="arg">bucketname</i>?</span> <span class="opt">?<b class="option">-blocking</b> <i class="arg">boolean</i>?</span></a></dt>
<dd><p>This command deletes a bucket if it is empty and you have such permission.
Note that Amazon's list of buckets is a global resource, requiring
far-flung synchronization. If you delete a bucket, it may be quite 
a few minutes (or hours) before you can recreate it, yielding &quot;Conflict&quot;
errors until then.</p></dd>
<dt><a name="7"><b class="cmd">S3::GetBucket</b> <span class="opt">?<b class="option">-bucket</b> <i class="arg">bucketname</i>?</span> <span class="opt">?<b class="option">-blocking</b> <i class="arg">boolean</i>?</span> <span class="opt">?<b class="option">-parse-xml</b> <i class="arg">xmlstring</i>?</span> <span class="opt">?<b class="option">-max-count</b> <i class="arg">integer</i>?</span> <span class="opt">?<b class="option">-prefix</b> <i class="arg">prefixstring</i>?</span> <span class="opt">?<b class="option">-delimiter</b> <i class="arg">delimiterstring</i>?</span> <span class="opt">?<b class="option">-result-type</b> <i class="arg">REST|xml|pxml|names|dict</i>?</span></a></dt>
<dd><p>This lists the contents of a bucket. That is, it returns a directory 
listing of resources within a bucket, rather than transfering any
user data.</p>
<dl class="definitions">
<dt><b class="option">-bucket</b> <i class="arg">bucketname</i></dt>
<dd><p>The standard bucket argument.</p></dd>
<dt><b class="option">-blocking</b> <i class="arg">boolean</i></dt>
<dd><p>The standard blocking argument.</p></dd>
<dt><b class="option">-parse-xml</b> <i class="arg">xmlstring</i></dt>
<dd><p>The standard parse-xml argument.</p></dd>
<dt><b class="option">-max-count</b> <i class="arg">integer</i></dt>
<dd><p>If supplied, this is the most number of records to be returned.
If not supplied, the code will iterate until all records have been found.
Not compatible with -parse-xml. Note that if this is supplied, only
one call to <b class="cmd">S3::REST</b> will be made. Otherwise, enough calls
will be made to exhaust the listing, buffering results in memory,
so take care if you may have huge buckets.</p></dd>
<dt><b class="option">-prefix</b> <i class="arg">prefixstring</i></dt>
<dd><p>If present, restricts listing to resources with a particular prefix. One 
leading / is stripped if present.</p></dd>
<dt><b class="option">-delimiter</b> <i class="arg">delimiterstring</i></dt>
<dd><p>If present, specifies a delimiter for the listing.
The presence of this will summarize multiple resources
into one entry, as if S3 supported directories. See the
Amazon documentation for details.</p></dd>
<dt><b class="option">-result-type</b> <i class="arg">REST|xml|pxml|names|dict</i></dt>







|






|









|



|

















|







585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
<dt>Owner/ID</dt>
<dd><p>The Amazon AWS ID (in hex) of the owner of the bucket.</p></dd>
<dt>Owner/DisplayName</dt>
<dd><p>The Amazon AWS ID's Display Name.</p></dd>
<dt>Bucket/Name</dt>
<dd><p>A list of names, one for each bucket.</p></dd>
<dt>Bucket/CreationDate</dt>
<dd><p>A list of dates, one for each bucket,
in the same order as Bucket/Name, in ISO format (as returned by Amazon).</p></dd>
</dl></dd>
<dt><b class="option">-result-type</b> <i class="arg">names</i></dt>
<dd><p>A list of bucket names is returned with all other information stripped out.
This is the default result type for this command.</p></dd>
<dt><b class="option">-result-type</b> <i class="arg">owner</i></dt>
<dd><p>A list containing two elements is returned. The first element is
the owner's ID, and the second is the owner's display name.</p></dd>
</dl></dd>
<dt><a name="5"><b class="cmd">S3::PutBucket</b> <span class="opt">?<b class="option">-bucket</b> <i class="arg">bucketname</i>?</span> <span class="opt">?<b class="option">-blocking</b> <i class="arg">boolean</i>?</span> <span class="opt">?<b class="option">-acl</b> <i class="arg">{}|private|public-read|public-read-write|authenticated-read</i>?</span></a></dt>
<dd><p>This command creates a bucket if it does not already exist. Bucket names are
globally unique, so you may get a &quot;Forbidden&quot; error from Amazon even if you
cannot see the bucket in <b class="cmd">S3::ListAllMyBuckets</b>. See <b class="cmd">S3::SuggestBucket</b> for ways to minimize this risk. The x-amz-acl header comes from the <b class="option">-acl</b> option, or from <b class="cmd">S3::Configure -default-acl</b> if not specified.</p></dd>
<dt><a name="6"><b class="cmd">S3::DeleteBucket</b> <span class="opt">?<b class="option">-bucket</b> <i class="arg">bucketname</i>?</span> <span class="opt">?<b class="option">-blocking</b> <i class="arg">boolean</i>?</span></a></dt>
<dd><p>This command deletes a bucket if it is empty and you have such permission.
Note that Amazon's list of buckets is a global resource, requiring
far-flung synchronization. If you delete a bucket, it may be quite
a few minutes (or hours) before you can recreate it, yielding &quot;Conflict&quot;
errors until then.</p></dd>
<dt><a name="7"><b class="cmd">S3::GetBucket</b> <span class="opt">?<b class="option">-bucket</b> <i class="arg">bucketname</i>?</span> <span class="opt">?<b class="option">-blocking</b> <i class="arg">boolean</i>?</span> <span class="opt">?<b class="option">-parse-xml</b> <i class="arg">xmlstring</i>?</span> <span class="opt">?<b class="option">-max-count</b> <i class="arg">integer</i>?</span> <span class="opt">?<b class="option">-prefix</b> <i class="arg">prefixstring</i>?</span> <span class="opt">?<b class="option">-delimiter</b> <i class="arg">delimiterstring</i>?</span> <span class="opt">?<b class="option">-result-type</b> <i class="arg">REST|xml|pxml|names|dict</i>?</span></a></dt>
<dd><p>This lists the contents of a bucket. That is, it returns a directory
listing of resources within a bucket, rather than transfering any
user data.</p>
<dl class="definitions">
<dt><b class="option">-bucket</b> <i class="arg">bucketname</i></dt>
<dd><p>The standard bucket argument.</p></dd>
<dt><b class="option">-blocking</b> <i class="arg">boolean</i></dt>
<dd><p>The standard blocking argument.</p></dd>
<dt><b class="option">-parse-xml</b> <i class="arg">xmlstring</i></dt>
<dd><p>The standard parse-xml argument.</p></dd>
<dt><b class="option">-max-count</b> <i class="arg">integer</i></dt>
<dd><p>If supplied, this is the most number of records to be returned.
If not supplied, the code will iterate until all records have been found.
Not compatible with -parse-xml. Note that if this is supplied, only
one call to <b class="cmd">S3::REST</b> will be made. Otherwise, enough calls
will be made to exhaust the listing, buffering results in memory,
so take care if you may have huge buckets.</p></dd>
<dt><b class="option">-prefix</b> <i class="arg">prefixstring</i></dt>
<dd><p>If present, restricts listing to resources with a particular prefix. One
leading / is stripped if present.</p></dd>
<dt><b class="option">-delimiter</b> <i class="arg">delimiterstring</i></dt>
<dd><p>If present, specifies a delimiter for the listing.
The presence of this will summarize multiple resources
into one entry, as if S3 supported directories. See the
Amazon documentation for details.</p></dd>
<dt><b class="option">-result-type</b> <i class="arg">REST|xml|pxml|names|dict</i></dt>
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
<dt>xml</dt>
<dd><p>If <i class="arg">-max-count</i> is specified, the body returned
from <b class="cmd">S3::REST</b> is returned. If <i class="arg">-max-count</i> is
not specified, a list of all the bodies returned from
the one or more calls to <b class="cmd">S3::REST</b> is returned.</p></dd>
<dt>pxml</dt>
<dd><p>If <i class="arg">-max-count</i> is specified, the body returned
from <b class="cmd">S3::REST</b> is passed throught <b class="cmd">xsxp::parse</b> and then returned. 
If <i class="arg">-max-count</i> is
not specified, a list of all the bodies returned from
the one or more calls to <b class="cmd">S3::REST</b> are each passed through
<b class="cmd">xsxp::parse</b> and then returned.</p></dd>
<dt>names</dt>
<dd><p>Returns a list of all names found in either the Contents/Key fields or
the CommonPrefixes/Prefix fields. If no <i class="arg">-delimiter</i> is specified







|







646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
<dt>xml</dt>
<dd><p>If <i class="arg">-max-count</i> is specified, the body returned
from <b class="cmd">S3::REST</b> is returned. If <i class="arg">-max-count</i> is
not specified, a list of all the bodies returned from
the one or more calls to <b class="cmd">S3::REST</b> is returned.</p></dd>
<dt>pxml</dt>
<dd><p>If <i class="arg">-max-count</i> is specified, the body returned
from <b class="cmd">S3::REST</b> is passed throught <b class="cmd">xsxp::parse</b> and then returned.
If <i class="arg">-max-count</i> is
not specified, a list of all the bodies returned from
the one or more calls to <b class="cmd">S3::REST</b> are each passed through
<b class="cmd">xsxp::parse</b> and then returned.</p></dd>
<dt>names</dt>
<dd><p>Returns a list of all names found in either the Contents/Key fields or
the CommonPrefixes/Prefix fields. If no <i class="arg">-delimiter</i> is specified
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
<dt>NextMarker</dt>
<dd><p>Always provided if IsTruncated is true, and
calculated of Amazon does not provide it. May be empty if IsTruncated is false.</p></dd>
<dt>Key</dt>
<dd><p>A list of names of resources in the bucket matching the <i class="arg">-prefix</i> and <i class="arg">-delimiter</i> restrictions.</p></dd>
<dt>LastModified</dt>
<dd><p>A list of times of resources in the bucket, in the same
order as Key, in the format returned by Amazon. (I.e., it is not parsed into 
a seconds-from-epoch.)</p></dd>
<dt>ETag</dt>
<dd><p>A list of entity tags (a.k.a. MD5 checksums) in the same order as Key.</p></dd>
<dt>Size</dt>
<dd><p>A list of sizes in bytes of the resources, in the same order as Key.</p></dd>
<dt>Owner/ID</dt>
<dd><p>A list of owners of the resources in the bucket, in the same order as Key.</p></dd>
<dt>Owner/DisplayName</dt>
<dd><p>A list of owners of the resources in the bucket, in the same order as Key. These are the display names.</p></dd>
<dt>CommonPrefixes/Prefix</dt>
<dd><p>A list of prefixes common to multiple entities. This is present only if <i class="arg">-delimiter</i> was supplied.</p></dd>
</dl></dd>
</dl></dd>
</dl></dd>
<dt><a name="8"><b class="cmd">S3::Put</b> <span class="opt">?<b class="option">-bucket</b> <i class="arg">bucketname</i>?</span> <b class="option">-resource</b> <i class="arg">resourcename</i> <span class="opt">?<b class="option">-blocking</b> <i class="arg">boolean</i>?</span> <span class="opt">?<b class="option">-file</b> <i class="arg">filename</i>?</span> <span class="opt">?<b class="option">-content</b> <i class="arg">contentstring</i>?</span> <span class="opt">?<b class="option">-acl</b> <i class="arg">private|public-read|public-read-write|authenticated-read|calc|keep</i>?</span> <span class="opt">?<b class="option">-content-type</b> <i class="arg">contenttypestring</i>?</span> <span class="opt">?<b class="option">-x-amz-meta-*</b> <i class="arg">metadatatext</i>?</span> <span class="opt">?<b class="option">-compare</b> <i class="arg">comparemode</i>?</span></a></dt>
<dd><p>This command sends data to a resource on Amazon's servers for storage,
using the HTTP PUT command. It returns 0 if the <b class="option">-compare</b> mode 
prevented the transfer, 1 if the transfer worked, or throws an error
if the transfer was attempted but failed. 
Server 5XX errors and S3 socket errors are retried
according to <b class="cmd">S3:Configure -retries</b> settings before throwing an error; 
other errors throw immediately.</p>
<dl class="definitions">
<dt><b class="option">-bucket</b></dt>
<dd><p>This specifies the bucket into which the resource will be written.
Leading and/or trailing slashes are removed for you, as are spaces.</p></dd>
<dt><b class="option">-resource</b></dt>
<dd><p>This is the full name of the resource within the bucket. A single 
leading slash is removed, but not a trailing slash. 
Spaces are not trimmed.</p></dd>
<dt><b class="option">-blocking</b></dt>
<dd><p>The standard blocking flag.</p></dd>
<dt><b class="option">-file</b></dt>
<dd><p>If this is specified, the <i class="arg">filename</i> must exist, must be readable, 
and must not be a special or directory file. [file size] must
apply to it and must not change for the lifetime of the call.  The
default content-type is calculated based on the name and/or contents
of the file. Specifying this is an error if <b class="option">-content</b> is 
also specified, but at least one of <b class="option">-file</b> or <b class="option">-content</b> must 
be specified. (The file is allowed to not exist or not be readable if 
<b class="option">-compare</b> <i class="arg">never</i> is specified.)</p></dd>
<dt><b class="option">-content</b></dt>
<dd><p>If this is specified, the <i class="arg">contentstring</i> is sent as the body
of the resource. The content-type defaults to &quot;application/octet-string&quot;.
Only the low bytes are sent, so non-ASCII should use the appropriate encoding 
(such as [encoding convertto utf-8]) before passing it 
to this routine, if necessary. Specifying this is an error if <b class="option">-file</b> 
is also specified, but at least one of <b class="option">-file</b> or <b class="option">-content</b> must 
be specified.</p></dd>
<dt><b class="option">-acl</b></dt>
<dd><p>This defaults to <b class="cmd">S3::Configure -default-acl</b> if not specified.
It sets the x-amz-acl header on the PUT operation.
If the value provided is <i class="arg">calc</i>, the x-amz-acl header is
calculated based on the I/O permissions of the file to be uploaded;
it is an error to specify <i class="arg">calc</i> and <b class="option">-content</b>.
If the value provided is <i class="arg">keep</i>, the acl of the resource
is read before the PUT (or the default is used if the 
resource does not exist), then set back to what it
was after the PUT (if it existed). An error will occur if 
the resource is successfully written but the kept ACL cannot
be then applied. This should never happen. 
<em>Note:</em>  <i class="arg">calc</i> is not currently fully implemented.</p></dd>
<dt><b class="option">-x-amz-meta-*</b></dt>
<dd><p>If any header starts with &quot;-x-amz-meta-&quot;, its contents are added to the 
PUT command to be stored as metadata with the resource. Again, no 
encoding is performed, and the metadata should not contain characters
like newlines, carriage returns, and so on. It is best to stick with
simple ASCII strings, or to fix the library in several places.</p></dd>
<dt><b class="option">-content-type</b></dt>
<dd><p>This overrides the content-type calculated by <b class="option">-file</b> or 
sets the content-type for <b class="option">-content</b>.</p></dd>
<dt><b class="option">-compare</b></dt>
<dd><p>This is the standard compare mode argument. <b class="cmd">S3::Put</b> returns
1 if the data was copied or 0 if the data was skipped due to
the comparison mode so indicating it should be skipped.</p></dd>
</dl></dd>
<dt><a name="9"><b class="cmd">S3::Get</b> <span class="opt">?<b class="option">-bucket</b> <i class="arg">bucketname</i>?</span> <b class="option">-resource</b> <i class="arg">resourcename</i> <span class="opt">?<b class="option">-blocking</b> <i class="arg">boolean</i>?</span> <span class="opt">?<b class="option">-compare</b> <i class="arg">comparemode</i>?</span> <span class="opt">?<b class="option">-file</b> <i class="arg">filename</i>?</span> <span class="opt">?<b class="option">-content</b> <i class="arg">contentvarname</i>?</span> <span class="opt">?<b class="option">-timestamp</b> <i class="arg">aws|now</i>?</span> <span class="opt">?<b class="option">-headers</b> <i class="arg">headervarname</i>?</span></a></dt>
<dd><p>This command retrieves data from a resource on Amazon's S3 servers,
using the HTTP GET command. It returns 0 if the <b class="option">-compare</b> mode 
prevented the transfer, 1 if the transfer worked, or throws an error
if the transfer was attempted but failed. Server 5XX errors and S3 socket
errors are are retried
according to <b class="cmd">S3:Configure</b> settings before throwing an error; 
other errors throw immediately. Note that this is always authenticated
as the user configured in via <b class="cmd">S3::Configure -accesskeyid</b>. Use
the Tcllib http for unauthenticated GETs.</p>
<dl class="definitions">
<dt><b class="option">-bucket</b></dt>
<dd><p>This specifies the bucket from which the resource will be read.
Leading and/or trailing slashes are removed for you, as are spaces.</p></dd>
<dt><b class="option">-resource</b></dt>
<dd><p>This is the full name of the resource within the bucket. A single 
leading slash is removed, but not a trailing slash. 
Spaces are not trimmed.</p></dd>
<dt><b class="option">-blocking</b></dt>
<dd><p>The standard blocking flag.</p></dd>
<dt><b class="option">-file</b></dt>
<dd><p>If this is specified, the body of the resource will be read into this file, 
incrementally without pulling it entirely into memory first. The parent 
directory must already exist. If the file already exists, it must be
writable. If an error is thrown part-way through the process and the
file already existed, it may be clobbered. If an error is thrown part-way
through the process and the file did not already exist, any partial
bits will be deleted. Specifying this is an error if <b class="option">-content</b>
is also specified, but at least one of <b class="option">-file</b> or <b class="option">-content</b> must 
be specified.</p></dd>
<dt><b class="option">-timestamp</b></dt>
<dd><p>This is only valid in conjunction with <b class="option">-file</b>. It may be specified
as <i class="arg">now</i> or <i class="arg">aws</i>. The default is <i class="arg">now</i>. If <i class="arg">now</i>, the file's
modification date is left up to the system. If <i class="arg">aws</i>, the file's
mtime is set to match the Last-Modified header on the resource, synchronizing
the two appropriately for <b class="option">-compare</b> <i class="arg">date</i> or 
<b class="option">-compare</b> <i class="arg">newer</i>.</p></dd>
<dt><b class="option">-content</b></dt>
<dd><p>If this is specified, the <i class="arg">contentvarname</i> is a variable in the caller's
scope (not necessarily global) that receives the value of the body of
the resource. No encoding is done, so if the resource (for example) represents
a UTF-8 byte sequence, use [encoding convertfrom utf-8] to get a valid
UTF-8 string. If this is specified, the <b class="option">-compare</b> is ignored unless
it is <i class="arg">never</i>, in which case no assignment to <i class="arg">contentvarname</i> is 
performed. Specifying this is an error if <b class="option">-file</b> is also specified,
but at least one of <b class="option">-file</b> or <b class="option">-content</b> must be specified.</p></dd>
<dt><b class="option">-compare</b></dt>
<dd><p>This is the standard compare mode argument. <b class="cmd">S3::Get</b> returns
1 if the data was copied or 0 if the data was skipped due to
the comparison mode so indicating it should be skipped.</p></dd>
<dt><b class="option">-headers</b></dt>







|
















|

|

|






|
|




|



|
|
|




|
|
|
|








|

|

|


|
|




|








|



|








|
|




|
|





|






|







|







678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
<dt>NextMarker</dt>
<dd><p>Always provided if IsTruncated is true, and
calculated of Amazon does not provide it. May be empty if IsTruncated is false.</p></dd>
<dt>Key</dt>
<dd><p>A list of names of resources in the bucket matching the <i class="arg">-prefix</i> and <i class="arg">-delimiter</i> restrictions.</p></dd>
<dt>LastModified</dt>
<dd><p>A list of times of resources in the bucket, in the same
order as Key, in the format returned by Amazon. (I.e., it is not parsed into
a seconds-from-epoch.)</p></dd>
<dt>ETag</dt>
<dd><p>A list of entity tags (a.k.a. MD5 checksums) in the same order as Key.</p></dd>
<dt>Size</dt>
<dd><p>A list of sizes in bytes of the resources, in the same order as Key.</p></dd>
<dt>Owner/ID</dt>
<dd><p>A list of owners of the resources in the bucket, in the same order as Key.</p></dd>
<dt>Owner/DisplayName</dt>
<dd><p>A list of owners of the resources in the bucket, in the same order as Key. These are the display names.</p></dd>
<dt>CommonPrefixes/Prefix</dt>
<dd><p>A list of prefixes common to multiple entities. This is present only if <i class="arg">-delimiter</i> was supplied.</p></dd>
</dl></dd>
</dl></dd>
</dl></dd>
<dt><a name="8"><b class="cmd">S3::Put</b> <span class="opt">?<b class="option">-bucket</b> <i class="arg">bucketname</i>?</span> <b class="option">-resource</b> <i class="arg">resourcename</i> <span class="opt">?<b class="option">-blocking</b> <i class="arg">boolean</i>?</span> <span class="opt">?<b class="option">-file</b> <i class="arg">filename</i>?</span> <span class="opt">?<b class="option">-content</b> <i class="arg">contentstring</i>?</span> <span class="opt">?<b class="option">-acl</b> <i class="arg">private|public-read|public-read-write|authenticated-read|calc|keep</i>?</span> <span class="opt">?<b class="option">-content-type</b> <i class="arg">contenttypestring</i>?</span> <span class="opt">?<b class="option">-x-amz-meta-*</b> <i class="arg">metadatatext</i>?</span> <span class="opt">?<b class="option">-compare</b> <i class="arg">comparemode</i>?</span></a></dt>
<dd><p>This command sends data to a resource on Amazon's servers for storage,
using the HTTP PUT command. It returns 0 if the <b class="option">-compare</b> mode
prevented the transfer, 1 if the transfer worked, or throws an error
if the transfer was attempted but failed.
Server 5XX errors and S3 socket errors are retried
according to <b class="cmd">S3:Configure -retries</b> settings before throwing an error;
other errors throw immediately.</p>
<dl class="definitions">
<dt><b class="option">-bucket</b></dt>
<dd><p>This specifies the bucket into which the resource will be written.
Leading and/or trailing slashes are removed for you, as are spaces.</p></dd>
<dt><b class="option">-resource</b></dt>
<dd><p>This is the full name of the resource within the bucket. A single
leading slash is removed, but not a trailing slash.
Spaces are not trimmed.</p></dd>
<dt><b class="option">-blocking</b></dt>
<dd><p>The standard blocking flag.</p></dd>
<dt><b class="option">-file</b></dt>
<dd><p>If this is specified, the <i class="arg">filename</i> must exist, must be readable,
and must not be a special or directory file. [file size] must
apply to it and must not change for the lifetime of the call.  The
default content-type is calculated based on the name and/or contents
of the file. Specifying this is an error if <b class="option">-content</b> is
also specified, but at least one of <b class="option">-file</b> or <b class="option">-content</b> must
be specified. (The file is allowed to not exist or not be readable if
<b class="option">-compare</b> <i class="arg">never</i> is specified.)</p></dd>
<dt><b class="option">-content</b></dt>
<dd><p>If this is specified, the <i class="arg">contentstring</i> is sent as the body
of the resource. The content-type defaults to &quot;application/octet-string&quot;.
Only the low bytes are sent, so non-ASCII should use the appropriate encoding
(such as [encoding convertto utf-8]) before passing it
to this routine, if necessary. Specifying this is an error if <b class="option">-file</b>
is also specified, but at least one of <b class="option">-file</b> or <b class="option">-content</b> must
be specified.</p></dd>
<dt><b class="option">-acl</b></dt>
<dd><p>This defaults to <b class="cmd">S3::Configure -default-acl</b> if not specified.
It sets the x-amz-acl header on the PUT operation.
If the value provided is <i class="arg">calc</i>, the x-amz-acl header is
calculated based on the I/O permissions of the file to be uploaded;
it is an error to specify <i class="arg">calc</i> and <b class="option">-content</b>.
If the value provided is <i class="arg">keep</i>, the acl of the resource
is read before the PUT (or the default is used if the
resource does not exist), then set back to what it
was after the PUT (if it existed). An error will occur if
the resource is successfully written but the kept ACL cannot
be then applied. This should never happen.
<em>Note:</em>  <i class="arg">calc</i> is not currently fully implemented.</p></dd>
<dt><b class="option">-x-amz-meta-*</b></dt>
<dd><p>If any header starts with &quot;-x-amz-meta-&quot;, its contents are added to the
PUT command to be stored as metadata with the resource. Again, no
encoding is performed, and the metadata should not contain characters
like newlines, carriage returns, and so on. It is best to stick with
simple ASCII strings, or to fix the library in several places.</p></dd>
<dt><b class="option">-content-type</b></dt>
<dd><p>This overrides the content-type calculated by <b class="option">-file</b> or
sets the content-type for <b class="option">-content</b>.</p></dd>
<dt><b class="option">-compare</b></dt>
<dd><p>This is the standard compare mode argument. <b class="cmd">S3::Put</b> returns
1 if the data was copied or 0 if the data was skipped due to
the comparison mode so indicating it should be skipped.</p></dd>
</dl></dd>
<dt><a name="9"><b class="cmd">S3::Get</b> <span class="opt">?<b class="option">-bucket</b> <i class="arg">bucketname</i>?</span> <b class="option">-resource</b> <i class="arg">resourcename</i> <span class="opt">?<b class="option">-blocking</b> <i class="arg">boolean</i>?</span> <span class="opt">?<b class="option">-compare</b> <i class="arg">comparemode</i>?</span> <span class="opt">?<b class="option">-file</b> <i class="arg">filename</i>?</span> <span class="opt">?<b class="option">-content</b> <i class="arg">contentvarname</i>?</span> <span class="opt">?<b class="option">-timestamp</b> <i class="arg">aws|now</i>?</span> <span class="opt">?<b class="option">-headers</b> <i class="arg">headervarname</i>?</span></a></dt>
<dd><p>This command retrieves data from a resource on Amazon's S3 servers,
using the HTTP GET command. It returns 0 if the <b class="option">-compare</b> mode
prevented the transfer, 1 if the transfer worked, or throws an error
if the transfer was attempted but failed. Server 5XX errors and S3 socket
errors are are retried
according to <b class="cmd">S3:Configure</b> settings before throwing an error;
other errors throw immediately. Note that this is always authenticated
as the user configured in via <b class="cmd">S3::Configure -accesskeyid</b>. Use
the Tcllib http for unauthenticated GETs.</p>
<dl class="definitions">
<dt><b class="option">-bucket</b></dt>
<dd><p>This specifies the bucket from which the resource will be read.
Leading and/or trailing slashes are removed for you, as are spaces.</p></dd>
<dt><b class="option">-resource</b></dt>
<dd><p>This is the full name of the resource within the bucket. A single
leading slash is removed, but not a trailing slash.
Spaces are not trimmed.</p></dd>
<dt><b class="option">-blocking</b></dt>
<dd><p>The standard blocking flag.</p></dd>
<dt><b class="option">-file</b></dt>
<dd><p>If this is specified, the body of the resource will be read into this file,
incrementally without pulling it entirely into memory first. The parent
directory must already exist. If the file already exists, it must be
writable. If an error is thrown part-way through the process and the
file already existed, it may be clobbered. If an error is thrown part-way
through the process and the file did not already exist, any partial
bits will be deleted. Specifying this is an error if <b class="option">-content</b>
is also specified, but at least one of <b class="option">-file</b> or <b class="option">-content</b> must
be specified.</p></dd>
<dt><b class="option">-timestamp</b></dt>
<dd><p>This is only valid in conjunction with <b class="option">-file</b>. It may be specified
as <i class="arg">now</i> or <i class="arg">aws</i>. The default is <i class="arg">now</i>. If <i class="arg">now</i>, the file's
modification date is left up to the system. If <i class="arg">aws</i>, the file's
mtime is set to match the Last-Modified header on the resource, synchronizing
the two appropriately for <b class="option">-compare</b> <i class="arg">date</i> or
<b class="option">-compare</b> <i class="arg">newer</i>.</p></dd>
<dt><b class="option">-content</b></dt>
<dd><p>If this is specified, the <i class="arg">contentvarname</i> is a variable in the caller's
scope (not necessarily global) that receives the value of the body of
the resource. No encoding is done, so if the resource (for example) represents
a UTF-8 byte sequence, use [encoding convertfrom utf-8] to get a valid
UTF-8 string. If this is specified, the <b class="option">-compare</b> is ignored unless
it is <i class="arg">never</i>, in which case no assignment to <i class="arg">contentvarname</i> is
performed. Specifying this is an error if <b class="option">-file</b> is also specified,
but at least one of <b class="option">-file</b> or <b class="option">-content</b> must be specified.</p></dd>
<dt><b class="option">-compare</b></dt>
<dd><p>This is the standard compare mode argument. <b class="cmd">S3::Get</b> returns
1 if the data was copied or 0 if the data was skipped due to
the comparison mode so indicating it should be skipped.</p></dd>
<dt><b class="option">-headers</b></dt>
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
accessible. If this returns 0, something went wrong, and the
<b class="option">-status</b> result can be consulted for details.</p>
<dl class="definitions">
<dt><b class="option">-bucket</b></dt>
<dd><p>This specifies the bucket from which the resource will be read.
Leading and/or trailing slashes are removed for you, as are spaces.</p></dd>
<dt><b class="option">-resource</b></dt>
<dd><p>This is the full name of the resource within the bucket. A single 
leading slash is removed, but not a trailing slash. 
Spaces are not trimmed.</p></dd>
<dt><b class="option">-blocking</b></dt>
<dd><p>The standard blocking flag.</p></dd>
<dt><b class="option">-dict</b></dt>
<dd><p>If specified, the resulting dictionary from the <b class="cmd">S3::REST</b>
call is assigned to the indicated (not necessarily global) variable 
in the caller's scope.</p></dd>
<dt><b class="option">-headers</b></dt>
<dd><p>If specified, the dictionary of headers from the result are assigned
to the indicated (not necessarily global) variable in the caller's scope.</p></dd>
<dt><b class="option">-status</b></dt>
<dd><p>If specified, the indicated (not necessarily global) variable in 
the caller's scope is assigned a 2-element list. The first element is
the 3-digit HTTP status code, while the second element is 
the HTTP message (such as &quot;OK&quot; or &quot;Forbidden&quot;).</p></dd>
</dl></dd>
<dt><a name="11"><b class="cmd">S3::GetAcl</b> <span class="opt">?<b class="option">-blocking</b> <i class="arg">boolean</i>?</span> <span class="opt">?<b class="option">-bucket</b> <i class="arg">bucketname</i>?</span> <b class="option">-resource</b> <i class="arg">resourcename</i> <span class="opt">?<b class="option">-result-type</b> <i class="arg">REST|xml|pxml</i>?</span></a></dt>
<dd><p>This command gets the ACL of the indicated resource or throws an
error if it is unavailable.</p>
<dl class="definitions">
<dt><b class="option">-blocking</b> <i class="arg">boolean</i></dt>
<dd><p>See above for standard definition.</p></dd>
<dt><b class="option">-bucket</b></dt>
<dd><p>This specifies the bucket from which the resource will be read.
Leading and/or trailing slashes are removed for you, as are spaces.</p></dd>
<dt><b class="option">-resource</b></dt>
<dd><p>This is the full name of the resource within the bucket. A single 
leading slash is removed, but not a trailing slash. 
Spaces are not trimmed.</p></dd>
<dt><b class="option">-parse-xml</b> <i class="arg">xml</i></dt>
<dd><p>The XML from a previous GetACL can be passed in to be parsed into
dictionary form.  In this case, -result-type must be pxml or dict.</p></dd>
<dt><b class="option">-result-type</b> <i class="arg">REST</i></dt>
<dd><p>The dictionary returned by <b class="cmd">S3::REST</b> is the return value of 
<b class="cmd">S3::GetAcl</b>.  In this case, a non-2XX httpstatus will not throw an
error.</p></dd>
<dt><b class="option">-result-type</b> <i class="arg">xml</i></dt>
<dd><p>The raw XML of the body is returned as the result (with no encoding applied).</p></dd>
<dt><b class="option">-result-type</b> <i class="arg">pxml</i></dt>
<dd><p>The XML of the body as parsed by <b class="cmd">xsxp::parse</b> is returned.</p></dd>
<dt><b class="option">-result-type</b> <i class="arg">dict</i></dt>







|
|





|





|

|












|
|





|







824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
accessible. If this returns 0, something went wrong, and the
<b class="option">-status</b> result can be consulted for details.</p>
<dl class="definitions">
<dt><b class="option">-bucket</b></dt>
<dd><p>This specifies the bucket from which the resource will be read.
Leading and/or trailing slashes are removed for you, as are spaces.</p></dd>
<dt><b class="option">-resource</b></dt>
<dd><p>This is the full name of the resource within the bucket. A single
leading slash is removed, but not a trailing slash.
Spaces are not trimmed.</p></dd>
<dt><b class="option">-blocking</b></dt>
<dd><p>The standard blocking flag.</p></dd>
<dt><b class="option">-dict</b></dt>
<dd><p>If specified, the resulting dictionary from the <b class="cmd">S3::REST</b>
call is assigned to the indicated (not necessarily global) variable
in the caller's scope.</p></dd>
<dt><b class="option">-headers</b></dt>
<dd><p>If specified, the dictionary of headers from the result are assigned
to the indicated (not necessarily global) variable in the caller's scope.</p></dd>
<dt><b class="option">-status</b></dt>
<dd><p>If specified, the indicated (not necessarily global) variable in
the caller's scope is assigned a 2-element list. The first element is
the 3-digit HTTP status code, while the second element is
the HTTP message (such as &quot;OK&quot; or &quot;Forbidden&quot;).</p></dd>
</dl></dd>
<dt><a name="11"><b class="cmd">S3::GetAcl</b> <span class="opt">?<b class="option">-blocking</b> <i class="arg">boolean</i>?</span> <span class="opt">?<b class="option">-bucket</b> <i class="arg">bucketname</i>?</span> <b class="option">-resource</b> <i class="arg">resourcename</i> <span class="opt">?<b class="option">-result-type</b> <i class="arg">REST|xml|pxml</i>?</span></a></dt>
<dd><p>This command gets the ACL of the indicated resource or throws an
error if it is unavailable.</p>
<dl class="definitions">
<dt><b class="option">-blocking</b> <i class="arg">boolean</i></dt>
<dd><p>See above for standard definition.</p></dd>
<dt><b class="option">-bucket</b></dt>
<dd><p>This specifies the bucket from which the resource will be read.
Leading and/or trailing slashes are removed for you, as are spaces.</p></dd>
<dt><b class="option">-resource</b></dt>
<dd><p>This is the full name of the resource within the bucket. A single
leading slash is removed, but not a trailing slash.
Spaces are not trimmed.</p></dd>
<dt><b class="option">-parse-xml</b> <i class="arg">xml</i></dt>
<dd><p>The XML from a previous GetACL can be passed in to be parsed into
dictionary form.  In this case, -result-type must be pxml or dict.</p></dd>
<dt><b class="option">-result-type</b> <i class="arg">REST</i></dt>
<dd><p>The dictionary returned by <b class="cmd">S3::REST</b> is the return value of
<b class="cmd">S3::GetAcl</b>.  In this case, a non-2XX httpstatus will not throw an
error.</p></dd>
<dt><b class="option">-result-type</b> <i class="arg">xml</i></dt>
<dd><p>The raw XML of the body is returned as the result (with no encoding applied).</p></dd>
<dt><b class="option">-result-type</b> <i class="arg">pxml</i></dt>
<dd><p>The XML of the body as parsed by <b class="cmd">xsxp::parse</b> is returned.</p></dd>
<dt><b class="option">-result-type</b> <i class="arg">dict</i></dt>
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
<dl class="definitions">
<dt><b class="option">-blocking</b> <i class="arg">boolean</i></dt>
<dd><p>See above for standard definition.</p></dd>
<dt><b class="option">-bucket</b></dt>
<dd><p>This specifies the bucket from which the resource will be read.
Leading and/or trailing slashes are removed for you, as are spaces.</p></dd>
<dt><b class="option">-resource</b></dt>
<dd><p>This is the full name of the resource within the bucket. A single 
leading slash is removed, but not a trailing slash. 
Spaces are not trimmed.</p></dd>
<dt><b class="option">-owner</b></dt>
<dd><p>If this is provided, it is assumed to match the owner of the resource.
Otherwise, a GET may need to be issued against the resource to find
the owner. If you already have the owner (such as from a call 
to <b class="cmd">S3::GetAcl</b>, you can pass the value of the &quot;owner&quot; key
as the value of this option, and it will be used in the construction
of the XML.</p></dd>
<dt><b class="option">-acl</b></dt>
<dd><p>If this option is specified, it provides the ACL the caller wishes
to write to the resource. If this is not supplied or is empty,
the value is taken from <b class="cmd">S3::Configure -default-acl</b>.







|
|




|







886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
<dl class="definitions">
<dt><b class="option">-blocking</b> <i class="arg">boolean</i></dt>
<dd><p>See above for standard definition.</p></dd>
<dt><b class="option">-bucket</b></dt>
<dd><p>This specifies the bucket from which the resource will be read.
Leading and/or trailing slashes are removed for you, as are spaces.</p></dd>
<dt><b class="option">-resource</b></dt>
<dd><p>This is the full name of the resource within the bucket. A single
leading slash is removed, but not a trailing slash.
Spaces are not trimmed.</p></dd>
<dt><b class="option">-owner</b></dt>
<dd><p>If this is provided, it is assumed to match the owner of the resource.
Otherwise, a GET may need to be issued against the resource to find
the owner. If you already have the owner (such as from a call
to <b class="cmd">S3::GetAcl</b>, you can pass the value of the &quot;owner&quot; key
as the value of this option, and it will be used in the construction
of the XML.</p></dd>
<dt><b class="option">-acl</b></dt>
<dd><p>If this option is specified, it provides the ACL the caller wishes
to write to the resource. If this is not supplied or is empty,
the value is taken from <b class="cmd">S3::Configure -default-acl</b>.
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
It returns 1 if the resource was deleted successfully, 0 otherwise.
It returns 0 rather than throwing an S3 remote error.</p>
<dl class="definitions">
<dt><b class="option">-bucket</b></dt>
<dd><p>This specifies the bucket from which the resource will be deleted.
Leading and/or trailing slashes are removed for you, as are spaces.</p></dd>
<dt><b class="option">-resource</b></dt>
<dd><p>This is the full name of the resource within the bucket. A single 
leading slash is removed, but not a trailing slash. 
Spaces are not trimmed.</p></dd>
<dt><b class="option">-blocking</b></dt>
<dd><p>The standard blocking flag.</p></dd>
<dt><b class="option">-status</b></dt>
<dd><p>If specified, the indicated (not necessarily global) variable 
in the caller's scope is set to a two-element list. The first
element is the 3-digit HTTP status code. The second element
is the HTTP message (such as &quot;OK&quot; or &quot;Forbidden&quot;). Note that
Amazon's DELETE result is 204 on success, that being the 
code indicating no content in the returned body.</p></dd>
</dl></dd>
<dt><a name="14"><b class="cmd">S3::Push</b> <span class="opt">?<b class="option">-bucket</b> <i class="arg">bucketname</i>?</span> <b class="option">-directory</b> <i class="arg">directoryname</i> <span class="opt">?<b class="option">-prefix</b> <i class="arg">prefixstring</i>?</span> <span class="opt">?<b class="option">-compare</b> <i class="arg">comparemode</i>?</span> <span class="opt">?<b class="option">-x-amz-meta-*</b> <i class="arg">metastring</i>?</span> <span class="opt">?<b class="option">-acl</b> <i class="arg">aclcode</i>?</span> <span class="opt">?<b class="option">-delete</b> <i class="arg">boolean</i>?</span> <span class="opt">?<b class="option">-error</b> <i class="arg">throw|break|continue</i>?</span> <span class="opt">?<b class="option">-progress</b> <i class="arg">scriptprefix</i>?</span></a></dt>
<dd><p>This synchronises a local directory with a remote bucket
by pushing the differences using <b class="cmd">S3::Put</b>. Note that
if something has changed in the bucket but not locally,
those changes could be lost. Thus, this is not a general
two-way synchronization primitive. (See <b class="cmd">S3::Sync</b> 
for that.) Note too that resource names are case sensitive,
so changing the case of a file on a Windows machine may lead
to otherwise-unnecessary transfers. 
Note that only regular files are considered, so devices, pipes, symlinks,
and directories are not copied.</p>
<dl class="definitions">
<dt><b class="option">-bucket</b></dt>
<dd><p>This names the bucket into which data will be pushed.</p></dd>
<dt><b class="option">-directory</b></dt>
<dd><p>This names the local directory from which files will be taken.
It must exist, be readable via [glob] and so on. If only
some of the files therein are readable, <b class="cmd">S3::Push</b> will PUT
those files that are readable and return in its results the list
of files that could not be opened.</p></dd>
<dt><b class="option">-prefix</b></dt>
<dd><p>This names the prefix that will be added to all resources. 
That is, it is the remote equivalent of <b class="option">-directory</b>.
If it is not specified, the root of the bucket will be treated
as the remote directory. An example may clarify.</p>
<pre class="example">
S3::Push -bucket test -directory /tmp/xyz -prefix hello/world
</pre>
<p>In this example, /tmp/xyz/pdq.html will be stored as
http://s3.amazonaws.com/test/hello/world/pdq.html in Amazon's servers. Also,
/tmp/xyz/abc/def/Hello will be stored as
http://s3.amazonaws.com/test/hello/world/abc/def/Hello in Amazon's servers.
Without the <b class="option">-prefix</b> option, /tmp/xyz/pdq.html would be stored
as http://s3.amazonaws.com/test/pdq.html.</p></dd>
<dt><b class="option">-blocking</b></dt>
<dd><p>This is the standard blocking option.</p></dd>
<dt><b class="option">-compare</b></dt>
<dd><p>If present, this is passed to each invocation of <b class="cmd">S3::Put</b>.
Naturally, <b class="cmd">S3::Configure -default-compare</b> is used 
if this is not specified.</p></dd>
<dt><b class="option">-x-amz-meta-*</b></dt>
<dd><p>If present, this is passed to each invocation of <b class="cmd">S3::Put</b>. All copied
files will have the same metadata.</p></dd>
<dt><b class="option">-acl</b></dt>
<dd><p>If present, this is passed to each invocation of <b class="cmd">S3::Put</b>.</p></dd>
<dt><b class="option">-delete</b></dt>
<dd><p>This defaults to false. If true, resources in the destination that
are not in the source directory are deleted with <b class="cmd">S3::Delete</b>.
Since only regular files are considered, the existance of a symlink,
pipe, device, or directory in the local source will <em>not</em>
prevent the deletion of a remote resource with a corresponding name.</p></dd>
<dt><b class="option">-error</b></dt>
<dd><p>This controls the behavior of <b class="cmd">S3::Push</b> in the event that
<b class="cmd">S3::Put</b> throws an error. Note that
errors encountered on the local file system or in reading the
list of resources in the remote bucket always throw errors.
This option allows control over &quot;partial&quot; errors, when some 
files were copied and some were not. <b class="cmd">S3::Delete</b> is always
finished up, with errors simply recorded in the return result.</p>
<dl class="definitions">
<dt>throw</dt>
<dd><p>The error is rethrown with the same errorCode.</p></dd>
<dt>break</dt>
<dd><p>Processing stops without throwing an error, the error is recorded







|
|




|



|







|


|












|
















|

















|







926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
It returns 1 if the resource was deleted successfully, 0 otherwise.
It returns 0 rather than throwing an S3 remote error.</p>
<dl class="definitions">
<dt><b class="option">-bucket</b></dt>
<dd><p>This specifies the bucket from which the resource will be deleted.
Leading and/or trailing slashes are removed for you, as are spaces.</p></dd>
<dt><b class="option">-resource</b></dt>
<dd><p>This is the full name of the resource within the bucket. A single
leading slash is removed, but not a trailing slash.
Spaces are not trimmed.</p></dd>
<dt><b class="option">-blocking</b></dt>
<dd><p>The standard blocking flag.</p></dd>
<dt><b class="option">-status</b></dt>
<dd><p>If specified, the indicated (not necessarily global) variable
in the caller's scope is set to a two-element list. The first
element is the 3-digit HTTP status code. The second element
is the HTTP message (such as &quot;OK&quot; or &quot;Forbidden&quot;). Note that
Amazon's DELETE result is 204 on success, that being the
code indicating no content in the returned body.</p></dd>
</dl></dd>
<dt><a name="14"><b class="cmd">S3::Push</b> <span class="opt">?<b class="option">-bucket</b> <i class="arg">bucketname</i>?</span> <b class="option">-directory</b> <i class="arg">directoryname</i> <span class="opt">?<b class="option">-prefix</b> <i class="arg">prefixstring</i>?</span> <span class="opt">?<b class="option">-compare</b> <i class="arg">comparemode</i>?</span> <span class="opt">?<b class="option">-x-amz-meta-*</b> <i class="arg">metastring</i>?</span> <span class="opt">?<b class="option">-acl</b> <i class="arg">aclcode</i>?</span> <span class="opt">?<b class="option">-delete</b> <i class="arg">boolean</i>?</span> <span class="opt">?<b class="option">-error</b> <i class="arg">throw|break|continue</i>?</span> <span class="opt">?<b class="option">-progress</b> <i class="arg">scriptprefix</i>?</span></a></dt>
<dd><p>This synchronises a local directory with a remote bucket
by pushing the differences using <b class="cmd">S3::Put</b>. Note that
if something has changed in the bucket but not locally,
those changes could be lost. Thus, this is not a general
two-way synchronization primitive. (See <b class="cmd">S3::Sync</b>
for that.) Note too that resource names are case sensitive,
so changing the case of a file on a Windows machine may lead
to otherwise-unnecessary transfers.
Note that only regular files are considered, so devices, pipes, symlinks,
and directories are not copied.</p>
<dl class="definitions">
<dt><b class="option">-bucket</b></dt>
<dd><p>This names the bucket into which data will be pushed.</p></dd>
<dt><b class="option">-directory</b></dt>
<dd><p>This names the local directory from which files will be taken.
It must exist, be readable via [glob] and so on. If only
some of the files therein are readable, <b class="cmd">S3::Push</b> will PUT
those files that are readable and return in its results the list
of files that could not be opened.</p></dd>
<dt><b class="option">-prefix</b></dt>
<dd><p>This names the prefix that will be added to all resources.
That is, it is the remote equivalent of <b class="option">-directory</b>.
If it is not specified, the root of the bucket will be treated
as the remote directory. An example may clarify.</p>
<pre class="example">
S3::Push -bucket test -directory /tmp/xyz -prefix hello/world
</pre>
<p>In this example, /tmp/xyz/pdq.html will be stored as
http://s3.amazonaws.com/test/hello/world/pdq.html in Amazon's servers. Also,
/tmp/xyz/abc/def/Hello will be stored as
http://s3.amazonaws.com/test/hello/world/abc/def/Hello in Amazon's servers.
Without the <b class="option">-prefix</b> option, /tmp/xyz/pdq.html would be stored
as http://s3.amazonaws.com/test/pdq.html.</p></dd>
<dt><b class="option">-blocking</b></dt>
<dd><p>This is the standard blocking option.</p></dd>
<dt><b class="option">-compare</b></dt>
<dd><p>If present, this is passed to each invocation of <b class="cmd">S3::Put</b>.
Naturally, <b class="cmd">S3::Configure -default-compare</b> is used
if this is not specified.</p></dd>
<dt><b class="option">-x-amz-meta-*</b></dt>
<dd><p>If present, this is passed to each invocation of <b class="cmd">S3::Put</b>. All copied
files will have the same metadata.</p></dd>
<dt><b class="option">-acl</b></dt>
<dd><p>If present, this is passed to each invocation of <b class="cmd">S3::Put</b>.</p></dd>
<dt><b class="option">-delete</b></dt>
<dd><p>This defaults to false. If true, resources in the destination that
are not in the source directory are deleted with <b class="cmd">S3::Delete</b>.
Since only regular files are considered, the existance of a symlink,
pipe, device, or directory in the local source will <em>not</em>
prevent the deletion of a remote resource with a corresponding name.</p></dd>
<dt><b class="option">-error</b></dt>
<dd><p>This controls the behavior of <b class="cmd">S3::Push</b> in the event that
<b class="cmd">S3::Put</b> throws an error. Note that
errors encountered on the local file system or in reading the
list of resources in the remote bucket always throw errors.
This option allows control over &quot;partial&quot; errors, when some
files were copied and some were not. <b class="cmd">S3::Delete</b> is always
finished up, with errors simply recorded in the return result.</p>
<dl class="definitions">
<dt>throw</dt>
<dd><p>The error is rethrown with the same errorCode.</p></dd>
<dt>break</dt>
<dd><p>Processing stops without throwing an error, the error is recorded
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
first additional argument and a list of suffixes existing in the remote
bucket as the second additional argument.  Then, for each file in the
local list, the prefix will be invoked with <i class="arg">start</i> as the first
additional argument and the common suffix as the second additional
argument.  When <b class="cmd">S3::Put</b> returns for that file, the prefix will be
invoked with <i class="arg">copy</i> as the first additional argument, the common
suffix as the second additional argument, and a third argument that will
be &quot;copied&quot; (if <b class="cmd">S3::Put</b> sent the resource), &quot;skipped&quot; (if 
<b class="cmd">S3::Put</b> decided not to based on <b class="option">-compare</b>), or the errorCode
that <b class="cmd">S3::Put</b> threw due to unexpected errors (in which case the
third argument is a list that starts with &quot;S3&quot;). When all files have
been transfered, the prefix may be invoked zero or more times with
<i class="arg">delete</i> as the first additional argument and the suffix of the
resource being deleted as the second additional argument, with a third
argument being either an empty string (if the delete worked) or the
errorCode from <b class="cmd">S3::Delete</b> if it failed. Finally, the prefix
will be invoked with <i class="arg">finished</i> as the first additional argument 
and the return value as the second additional argument.</p></dd>
</dl>
<p>The return result from this command is a dictionary. They keys are the 
suffixes (i.e., the common portion of the path after the <b class="option">-directory</b>
and <b class="option">-prefix</b>), while the values are either &quot;copied&quot;, &quot;skipped&quot; (if
<b class="option">-compare</b> indicated not to copy the file), or the errorCode 
thrown by <b class="cmd">S3::Put</b>, as appropriate. If <b class="option">-delete</b> was true,
there may also be entries for suffixes with the value &quot;deleted&quot; or 
&quot;notdeleted&quot;, indicating whether the attempted <b class="cmd">S3::Delete</b> 
worked or not, respectively. There is one additional pair in the return
result, whose key is the empty string and whose value is a nested dictionary.
The keys of this nested dictionary include &quot;filescopied&quot; (the number of 
files successfully copied), &quot;bytescopied&quot; (the number of data bytes in
the files copied, excluding headers, metadata, etc), &quot;compareskipped&quot; (the 
number of files not copied due to <b class="option">-compare</b> mode), &quot;errorskipped&quot;
(the number of files not copied due to thrown errors), &quot;filesdeleted&quot;
(the number of resources deleted due to not having corresponding files
locally, or 0 if <b class="option">-delete</b> is false), and &quot;filesnotdeleted&quot; 
(the number of resources whose deletion was attempted but failed).</p>
<p>Note that this is currently implemented somewhat inefficiently.
It fetches the bucket listing (including timestamps and eTags),
then calls <b class="cmd">S3::Put</b>, which uses HEAD to find the timestamps
and eTags again. Correcting this with no API change 
is planned for a future upgrade.</p></dd>
<dt><a name="15"><b class="cmd">S3::Pull</b> <span class="opt">?<b class="option">-bucket</b> <i class="arg">bucketname</i>?</span> <b class="option">-directory</b> <i class="arg">directoryname</i> <span class="opt">?<b class="option">-prefix</b> <i class="arg">prefixstring</i>?</span> <span class="opt">?<b class="option">-blocking</b> <i class="arg">boolean</i>?</span> <span class="opt">?<b class="option">-compare</b> <i class="arg">comparemode</i>?</span> <span class="opt">?<b class="option">-delete</b> <i class="arg">boolean</i>?</span> <span class="opt">?<b class="option">-timestamp</b> <i class="arg">aws|now</i>?</span> <span class="opt">?<b class="option">-error</b> <i class="arg">throw|break|continue</i>?</span> <span class="opt">?<b class="option">-progress</b> <i class="arg">scriptprefix</i>?</span></a></dt>
<dd><p>This synchronises a remote bucket with a local directory by pulling the 
differences using <b class="cmd">S3::Get</b> If something has been changed locally but not
in the bucket, those difference may be lost. This is not a general two-way 
synchronization mechanism. (See <b class="cmd">S3::Sync</b> for that.) 
This creates directories
if needed; new directories are created with default permissions. Note that 
resource names are case sensitive, so changing the case of a file on a 
Windows machine may lead to otherwise-unnecessary transfers. Also, try not
to store data in resources that end with a slash, or which are prefixes of
resources that otherwise would start with a slash; i.e., don't use this if
you store data in resources whose names have to be directories locally.</p>
<p>Note that this is currently implemented somewhat inefficiently.
It fetches the bucket listing (including timestamps and eTags),
then calls <b class="cmd">S3::Get</b>, which uses HEAD to find the timestamps
and eTags again. Correcting this with no API change 
is planned for a future upgrade.</p>
<dl class="definitions">
<dt><b class="option">-bucket</b></dt>
<dd><p>This names the bucket from which data will be pulled.</p></dd>
<dt><b class="option">-directory</b></dt>
<dd><p>This names the local directory into which files will be written
It must exist, be readable via [glob], writable for file creation,
and so on. If only some of the files therein are writable, 
<b class="cmd">S3::Pull</b> will GET
those files that are writable and return in its results the list
of files that could not be opened.</p></dd>
<dt><b class="option">-prefix</b></dt>
<dd><p>The prefix of resources that will be considered for retrieval.
See <b class="cmd">S3::Push</b> for more details, examples, etc. (Of course,
<b class="cmd">S3::Pull</b> reads rather than writes, but the prefix is 
treated similarly.)</p></dd>
<dt><b class="option">-blocking</b></dt>
<dd><p>This is the standard blocking option.</p></dd>
<dt><b class="option">-compare</b></dt>
<dd><p>This is passed to each invocation of <b class="cmd">S3::Get</b> if provided. 
Naturally, <b class="cmd">S3::Configure -default-compare</b> is 
used if this is not provided.</p></dd>
<dt><b class="option">-timestamp</b></dt>
<dd><p>This is passed to each invocation of <b class="cmd">S3::Get</b> if provided.</p></dd>
<dt><b class="option">-delete</b></dt>
<dd><p>If this is specified and true, files that exist in the <b class="option">-directory</b>
that are not in the <b class="option">-prefix</b> will be deleted after all resources
have been copied. In addition, empty directories (other than the
top-level <b class="option">-directory</b>) will be deleted, as
Amazon S3 has no concept of an empty directory.</p></dd>
<dt><b class="option">-error</b></dt>
<dd><p>See <b class="cmd">S3::Push</b> for a description of this option.</p></dd>
<dt><b class="option">-progress</b></dt>
<dd><p>See <b class="cmd">S3::Push</b> for a description of this option. 
It differs slightly in that local directories may be included
with a trailing slash to indicate they are directories.</p></dd>
</dl>
<p>The return value from this command is a dictionary. It 
is identical in form and meaning to the description of the
return result of <b class="cmd">S3::Push</b>. It differs only in that
directories may be included, with a trailing slash in their name,
if they are empty and get deleted.</p></dd>
<dt><a name="16"><b class="cmd">S3::Toss</b> <span class="opt">?<b class="option">-bucket</b> <i class="arg">bucketname</i>?</span> <b class="option">-prefix</b> <i class="arg">prefixstring</i> <span class="opt">?<b class="option">-blocking</b> <i class="arg">boolean</i>?</span> <span class="opt">?<b class="option">-error</b> <i class="arg">throw|break|continue</i>?</span> <span class="opt">?<b class="option">-progress</b> <i class="arg">scriptprefix</i>?</span></a></dt>
<dd><p>This deletes some or all resources within a bucket. It would be
considered a &quot;recursive delete&quot; had Amazon implemented actual







|








|


|


|

|
|


|

|



|




|


|

|
|

|
|







|







|






|




|
|












|



|







1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
first additional argument and a list of suffixes existing in the remote
bucket as the second additional argument.  Then, for each file in the
local list, the prefix will be invoked with <i class="arg">start</i> as the first
additional argument and the common suffix as the second additional
argument.  When <b class="cmd">S3::Put</b> returns for that file, the prefix will be
invoked with <i class="arg">copy</i> as the first additional argument, the common
suffix as the second additional argument, and a third argument that will
be &quot;copied&quot; (if <b class="cmd">S3::Put</b> sent the resource), &quot;skipped&quot; (if
<b class="cmd">S3::Put</b> decided not to based on <b class="option">-compare</b>), or the errorCode
that <b class="cmd">S3::Put</b> threw due to unexpected errors (in which case the
third argument is a list that starts with &quot;S3&quot;). When all files have
been transfered, the prefix may be invoked zero or more times with
<i class="arg">delete</i> as the first additional argument and the suffix of the
resource being deleted as the second additional argument, with a third
argument being either an empty string (if the delete worked) or the
errorCode from <b class="cmd">S3::Delete</b> if it failed. Finally, the prefix
will be invoked with <i class="arg">finished</i> as the first additional argument
and the return value as the second additional argument.</p></dd>
</dl>
<p>The return result from this command is a dictionary. They keys are the
suffixes (i.e., the common portion of the path after the <b class="option">-directory</b>
and <b class="option">-prefix</b>), while the values are either &quot;copied&quot;, &quot;skipped&quot; (if
<b class="option">-compare</b> indicated not to copy the file), or the errorCode
thrown by <b class="cmd">S3::Put</b>, as appropriate. If <b class="option">-delete</b> was true,
there may also be entries for suffixes with the value &quot;deleted&quot; or
&quot;notdeleted&quot;, indicating whether the attempted <b class="cmd">S3::Delete</b>
worked or not, respectively. There is one additional pair in the return
result, whose key is the empty string and whose value is a nested dictionary.
The keys of this nested dictionary include &quot;filescopied&quot; (the number of
files successfully copied), &quot;bytescopied&quot; (the number of data bytes in
the files copied, excluding headers, metadata, etc), &quot;compareskipped&quot; (the
number of files not copied due to <b class="option">-compare</b> mode), &quot;errorskipped&quot;
(the number of files not copied due to thrown errors), &quot;filesdeleted&quot;
(the number of resources deleted due to not having corresponding files
locally, or 0 if <b class="option">-delete</b> is false), and &quot;filesnotdeleted&quot;
(the number of resources whose deletion was attempted but failed).</p>
<p>Note that this is currently implemented somewhat inefficiently.
It fetches the bucket listing (including timestamps and eTags),
then calls <b class="cmd">S3::Put</b>, which uses HEAD to find the timestamps
and eTags again. Correcting this with no API change
is planned for a future upgrade.</p></dd>
<dt><a name="15"><b class="cmd">S3::Pull</b> <span class="opt">?<b class="option">-bucket</b> <i class="arg">bucketname</i>?</span> <b class="option">-directory</b> <i class="arg">directoryname</i> <span class="opt">?<b class="option">-prefix</b> <i class="arg">prefixstring</i>?</span> <span class="opt">?<b class="option">-blocking</b> <i class="arg">boolean</i>?</span> <span class="opt">?<b class="option">-compare</b> <i class="arg">comparemode</i>?</span> <span class="opt">?<b class="option">-delete</b> <i class="arg">boolean</i>?</span> <span class="opt">?<b class="option">-timestamp</b> <i class="arg">aws|now</i>?</span> <span class="opt">?<b class="option">-error</b> <i class="arg">throw|break|continue</i>?</span> <span class="opt">?<b class="option">-progress</b> <i class="arg">scriptprefix</i>?</span></a></dt>
<dd><p>This synchronises a remote bucket with a local directory by pulling the
differences using <b class="cmd">S3::Get</b> If something has been changed locally but not
in the bucket, those difference may be lost. This is not a general two-way
synchronization mechanism. (See <b class="cmd">S3::Sync</b> for that.)
This creates directories
if needed; new directories are created with default permissions. Note that
resource names are case sensitive, so changing the case of a file on a
Windows machine may lead to otherwise-unnecessary transfers. Also, try not
to store data in resources that end with a slash, or which are prefixes of
resources that otherwise would start with a slash; i.e., don't use this if
you store data in resources whose names have to be directories locally.</p>
<p>Note that this is currently implemented somewhat inefficiently.
It fetches the bucket listing (including timestamps and eTags),
then calls <b class="cmd">S3::Get</b>, which uses HEAD to find the timestamps
and eTags again. Correcting this with no API change
is planned for a future upgrade.</p>
<dl class="definitions">
<dt><b class="option">-bucket</b></dt>
<dd><p>This names the bucket from which data will be pulled.</p></dd>
<dt><b class="option">-directory</b></dt>
<dd><p>This names the local directory into which files will be written
It must exist, be readable via [glob], writable for file creation,
and so on. If only some of the files therein are writable,
<b class="cmd">S3::Pull</b> will GET
those files that are writable and return in its results the list
of files that could not be opened.</p></dd>
<dt><b class="option">-prefix</b></dt>
<dd><p>The prefix of resources that will be considered for retrieval.
See <b class="cmd">S3::Push</b> for more details, examples, etc. (Of course,
<b class="cmd">S3::Pull</b> reads rather than writes, but the prefix is
treated similarly.)</p></dd>
<dt><b class="option">-blocking</b></dt>
<dd><p>This is the standard blocking option.</p></dd>
<dt><b class="option">-compare</b></dt>
<dd><p>This is passed to each invocation of <b class="cmd">S3::Get</b> if provided.
Naturally, <b class="cmd">S3::Configure -default-compare</b> is
used if this is not provided.</p></dd>
<dt><b class="option">-timestamp</b></dt>
<dd><p>This is passed to each invocation of <b class="cmd">S3::Get</b> if provided.</p></dd>
<dt><b class="option">-delete</b></dt>
<dd><p>If this is specified and true, files that exist in the <b class="option">-directory</b>
that are not in the <b class="option">-prefix</b> will be deleted after all resources
have been copied. In addition, empty directories (other than the
top-level <b class="option">-directory</b>) will be deleted, as
Amazon S3 has no concept of an empty directory.</p></dd>
<dt><b class="option">-error</b></dt>
<dd><p>See <b class="cmd">S3::Push</b> for a description of this option.</p></dd>
<dt><b class="option">-progress</b></dt>
<dd><p>See <b class="cmd">S3::Push</b> for a description of this option.
It differs slightly in that local directories may be included
with a trailing slash to indicate they are directories.</p></dd>
</dl>
<p>The return value from this command is a dictionary. It
is identical in form and meaning to the description of the
return result of <b class="cmd">S3::Push</b>. It differs only in that
directories may be included, with a trailing slash in their name,
if they are empty and get deleted.</p></dd>
<dt><a name="16"><b class="cmd">S3::Toss</b> <span class="opt">?<b class="option">-bucket</b> <i class="arg">bucketname</i>?</span> <b class="option">-prefix</b> <i class="arg">prefixstring</i> <span class="opt">?<b class="option">-blocking</b> <i class="arg">boolean</i>?</span> <span class="opt">?<b class="option">-error</b> <i class="arg">throw|break|continue</i>?</span> <span class="opt">?<b class="option">-progress</b> <i class="arg">scriptprefix</i>?</span></a></dt>
<dd><p>This deletes some or all resources within a bucket. It would be
considered a &quot;recursive delete&quot; had Amazon implemented actual
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
To delete everything in the bucket, pass an empty string
for the prefix.</p></dd>
<dt><b class="option"><b class="option">-error</b></b></dt>
<dd><p>If this is &quot;throw&quot;, <b class="cmd">S3::Toss</b> rethrows any errors
it encounters.  If this is &quot;break&quot;, <b class="cmd">S3::Toss</b> returns
with a normal return after the first error, recording that
error in the return result. If this is &quot;continue&quot;, which is
the default, <b class="cmd">S3::Toss</b> continues on and lists all 
errors in the return result.</p></dd>
<dt><b class="option"><b class="option">-progress</b></b></dt>
<dd><p>If this is specified and not an empty string, the script
prefix will be invoked several times in the context of the caller
with additional arguments appended.  Initially, it will be invoked
with the first additional argument being <i class="arg">args</i> and the second
being the processed list of arguments to <b class="cmd">S3::Toss</b>. Then it
is invoked with <i class="arg">remote</i> as the first additional argument and
the list of suffixes in the bucket to be deleted as the second
additional argument. Then it is invoked with the first additional
argument being <i class="arg">delete</i> and the second additional argument being
the suffix deleted and the third additional argument being &quot;deleted&quot;
or &quot;notdeleted&quot; depending on whether <b class="cmd">S3::Delete</b> threw an error.
Finally, the script prefix is invoked with a first additional argument
of &quot;finished&quot; and a second additional argument of the return value.</p></dd>
</dl>
<p>The return value is a dictionary. The keys are the suffixes of files
that <b class="cmd">S3::Toss</b> attempted to delete, and whose values are either
the string &quot;deleted&quot; or &quot;notdeleted&quot;. There is also one additional
pair, whose key is the empty string and whose value is an embedded
dictionary. The keys of this embedded dictionary include 
&quot;filesdeleted&quot; and &quot;filesnotdeleted&quot;, each of which has integer values.</p></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">LIMITATIONS</a></h2>
<ul class="itemized">
<li><p>The pure-Tcl MD5 checking is slow. If you are processing
files in the megabyte range, consider ensuring binary support is available.</p></li>
<li><p>The commands <b class="cmd">S3::Pull</b> and <b class="cmd">S3::Push</b> fetch a
directory listing which includes timestamps and MD5 hashes, 
then invoke <b class="cmd">S3::Get</b> and <b class="cmd">S3::Put</b>. If
a complex <b class="option">-compare</b> mode is specified, <b class="cmd">S3::Get</b> and 
<b class="cmd">S3::Put</b> will invoke a HEAD operation for each file to fetch
timestamps and MD5 hashes of each resource again. It is expected that
a future release of this package will solve this without any API changes.</p></li>
<li><p>The commands <b class="cmd">S3::Pull</b> and <b class="cmd">S3::Push</b> fetch a
directory listing without using <b class="option">-max-count</b>. The entire 
directory is pulled into memory at once. For very large buckets,
this could be a performance problem. The author, at this time,
does not plan to change this behavior. Welcome to Open Source.</p></li>
<li><p><b class="cmd">S3::Sync</b> is neither designed nor implemented yet. 
The intention would be to keep changes synchronised, so changes
could be made to both the bucket and the local directory and
be merged by <b class="cmd">S3::Sync</b>.</p></li>
<li><p>Nor is
<b class="option">-compare</b> <i class="arg">calc</i> fully implemented. This is primarily due to
Windows not providing a convenient method for distinguishing between
local files that are &quot;public-read&quot; or &quot;public-read-write&quot;. Assistance
figuring out TWAPI for this would be appreciated. The U**X semantics
are difficult to map directly as well. See the source for details.
Note that there are not tests for calc, since it isn't done yet.</p></li>
<li><p>The HTTP processing is implemented within the library, 
rather than using a &quot;real&quot; HTTP package. Hence, multi-line headers
are not (yet) handled correctly. Do not include carriage returns or
linefeeds in x-amz-meta-* headers, content-type values, and so on. 
The author does not at this time expect to improve this.</p></li>
<li><p>Internally, <b class="cmd">S3::Push</b> and <b class="cmd">S3::Pull</b> and <b class="cmd">S3::Toss</b>
are all very similar and should be refactored.</p></li>
<li><p>The idea of using <b class="option">-compare</b> <i class="arg">never</i> 
<b class="option">-delete</b> <i class="arg">true</i> to delete files that have been 
deleted from one place but not the other yet not copying 
changed files is untested.</p></li>
</ul>
</div>
<div id="section7" class="section"><h2><a name="section7">USAGE SUGGESTIONS</a></h2>
<p>To fetch a &quot;directory&quot; out of a bucket, make changes, and store it back:</p>
<pre class="example">
file mkdir ./tempfiles







|




















|








|

|




|



|










|


|



|
|
|







1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
To delete everything in the bucket, pass an empty string
for the prefix.</p></dd>
<dt><b class="option"><b class="option">-error</b></b></dt>
<dd><p>If this is &quot;throw&quot;, <b class="cmd">S3::Toss</b> rethrows any errors
it encounters.  If this is &quot;break&quot;, <b class="cmd">S3::Toss</b> returns
with a normal return after the first error, recording that
error in the return result. If this is &quot;continue&quot;, which is
the default, <b class="cmd">S3::Toss</b> continues on and lists all
errors in the return result.</p></dd>
<dt><b class="option"><b class="option">-progress</b></b></dt>
<dd><p>If this is specified and not an empty string, the script
prefix will be invoked several times in the context of the caller
with additional arguments appended.  Initially, it will be invoked
with the first additional argument being <i class="arg">args</i> and the second
being the processed list of arguments to <b class="cmd">S3::Toss</b>. Then it
is invoked with <i class="arg">remote</i> as the first additional argument and
the list of suffixes in the bucket to be deleted as the second
additional argument. Then it is invoked with the first additional
argument being <i class="arg">delete</i> and the second additional argument being
the suffix deleted and the third additional argument being &quot;deleted&quot;
or &quot;notdeleted&quot; depending on whether <b class="cmd">S3::Delete</b> threw an error.
Finally, the script prefix is invoked with a first additional argument
of &quot;finished&quot; and a second additional argument of the return value.</p></dd>
</dl>
<p>The return value is a dictionary. The keys are the suffixes of files
that <b class="cmd">S3::Toss</b> attempted to delete, and whose values are either
the string &quot;deleted&quot; or &quot;notdeleted&quot;. There is also one additional
pair, whose key is the empty string and whose value is an embedded
dictionary. The keys of this embedded dictionary include
&quot;filesdeleted&quot; and &quot;filesnotdeleted&quot;, each of which has integer values.</p></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">LIMITATIONS</a></h2>
<ul class="itemized">
<li><p>The pure-Tcl MD5 checking is slow. If you are processing
files in the megabyte range, consider ensuring binary support is available.</p></li>
<li><p>The commands <b class="cmd">S3::Pull</b> and <b class="cmd">S3::Push</b> fetch a
directory listing which includes timestamps and MD5 hashes,
then invoke <b class="cmd">S3::Get</b> and <b class="cmd">S3::Put</b>. If
a complex <b class="option">-compare</b> mode is specified, <b class="cmd">S3::Get</b> and
<b class="cmd">S3::Put</b> will invoke a HEAD operation for each file to fetch
timestamps and MD5 hashes of each resource again. It is expected that
a future release of this package will solve this without any API changes.</p></li>
<li><p>The commands <b class="cmd">S3::Pull</b> and <b class="cmd">S3::Push</b> fetch a
directory listing without using <b class="option">-max-count</b>. The entire
directory is pulled into memory at once. For very large buckets,
this could be a performance problem. The author, at this time,
does not plan to change this behavior. Welcome to Open Source.</p></li>
<li><p><b class="cmd">S3::Sync</b> is neither designed nor implemented yet.
The intention would be to keep changes synchronised, so changes
could be made to both the bucket and the local directory and
be merged by <b class="cmd">S3::Sync</b>.</p></li>
<li><p>Nor is
<b class="option">-compare</b> <i class="arg">calc</i> fully implemented. This is primarily due to
Windows not providing a convenient method for distinguishing between
local files that are &quot;public-read&quot; or &quot;public-read-write&quot;. Assistance
figuring out TWAPI for this would be appreciated. The U**X semantics
are difficult to map directly as well. See the source for details.
Note that there are not tests for calc, since it isn't done yet.</p></li>
<li><p>The HTTP processing is implemented within the library,
rather than using a &quot;real&quot; HTTP package. Hence, multi-line headers
are not (yet) handled correctly. Do not include carriage returns or
linefeeds in x-amz-meta-* headers, content-type values, and so on.
The author does not at this time expect to improve this.</p></li>
<li><p>Internally, <b class="cmd">S3::Push</b> and <b class="cmd">S3::Pull</b> and <b class="cmd">S3::Toss</b>
are all very similar and should be refactored.</p></li>
<li><p>The idea of using <b class="option">-compare</b> <i class="arg">never</i>
<b class="option">-delete</b> <i class="arg">true</i> to delete files that have been
deleted from one place but not the other yet not copying
changed files is untested.</p></li>
</ul>
</div>
<div id="section7" class="section"><h2><a name="section7">USAGE SUGGESTIONS</a></h2>
<p>To fetch a &quot;directory&quot; out of a bucket, make changes, and store it back:</p>
<pre class="example">
file mkdir ./tempfiles
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
update files:</p>
<pre class="example">
S3::Pull -bucket sample -prefix of/interest -directory ./myfiles \
  -compare never -delete true
</pre>
</div>
<div id="section8" class="section"><h2><a name="section8">FUTURE DEVELOPMENTS</a></h2>
<p>The author intends to work on several additional projects related to 
this package, in addition to finishing the unfinished features.</p>
<p>First, a command-line program allowing browsing of buckets and 
transfer of files from shell scripts and command prompts is useful.</p>
<p>Second, a GUI-based program allowing visual manipulation of
bucket and resource trees not unlike Windows Explorer would
be useful.</p>
<p>Third, a command-line (and perhaps a GUI-based) program called
&quot;OddJob&quot; that will use S3 to synchronize computation amongst 
multiple servers running OddJob. An S3 bucket will be set up
with a number of scripts to run, and the OddJob program can
be invoked on multiple machines to run scripts on all the machines,
each moving on to the next unstarted task as it finishes each.
This is still being designed, and it is intended primarily
to be run on Amazon's Elastic Compute Cloud.</p>
</div>
<div id="section9" class="section"><h2><a name="section9">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>amazon-s3</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key498">amazon</a>, <a href="../../../../index.html#key499">cloud</a>, <a href="../../../../index.html#key497">s3</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>2006,2008 Darren New. All Rights Reserved. See LICENSE.TXT for terms.</p>
</div>
</div></body></html>







|

|





|







|



|













1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
update files:</p>
<pre class="example">
S3::Pull -bucket sample -prefix of/interest -directory ./myfiles \
  -compare never -delete true
</pre>
</div>
<div id="section8" class="section"><h2><a name="section8">FUTURE DEVELOPMENTS</a></h2>
<p>The author intends to work on several additional projects related to
this package, in addition to finishing the unfinished features.</p>
<p>First, a command-line program allowing browsing of buckets and
transfer of files from shell scripts and command prompts is useful.</p>
<p>Second, a GUI-based program allowing visual manipulation of
bucket and resource trees not unlike Windows Explorer would
be useful.</p>
<p>Third, a command-line (and perhaps a GUI-based) program called
&quot;OddJob&quot; that will use S3 to synchronize computation amongst
multiple servers running OddJob. An S3 bucket will be set up
with a number of scripts to run, and the OddJob program can
be invoked on multiple machines to run scripts on all the machines,
each moving on to the next unstarted task as it finishes each.
This is still being designed, and it is intended primarily
to be run on Amazon's Elastic Compute Cloud.</p>
</div>
<div id="section9" class="section"><h2><a name="section9">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>amazon-s3</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key498">amazon</a>, <a href="../../../../index.html#key499">cloud</a>, <a href="../../../../index.html#key497">s3</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>2006,2008 Darren New. All Rights Reserved. See LICENSE.TXT for terms.</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/amazon-s3/xsxp.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
<li><a href="#4"><b class="cmd">xsxp::only</b> <i class="arg">pxml</i> <i class="arg">tagname</i></a></li>
<li><a href="#5"><b class="cmd">xsxp::prettyprint</b> <i class="arg">pxml</i> <span class="opt">?<i class="arg">chan</i>?</span></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package provides a simple interface to parse XML into a pure-value list.
It also provides accessor routines to pull out specific subtags, 
not unlike DOM access. 
This package was written for and is used by Darren New's Amazon S3 access package.</p>
<p>This is pretty lame, but I needed something like this for S3,
and at the time, TclDOM would not work with the new 8.5 Tcl
due to version number problems.</p>
<p>In addition, this is a pure-value implementation. There is no
garbage to clean up in the event of a thrown error, for example.
This simplifies the code for sufficiently small XML documents,
which is what Amazon's S3 guarantees.</p>
<p>Copyright 2006 Darren New. All Rights Reserved.
NO WARRANTIES OF ANY TYPE ARE PROVIDED.
COPYING OR USE INDEMNIFIES THE AUTHOR IN ALL WAYS.
This software is licensed under essentially the same 
terms as Tcl. See LICENSE.txt for the terms.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<p>The package implements five rather simple procedures.
One parses, one is for debugging, and the rest pull various
parts of the parsed document out for processing.</p>
<dl class="definitions">
<dt><a name="1"><b class="cmd">xsxp::parse</b> <i class="arg">xml</i></a></dt>
<dd><p>This parses an XML document (using the standard xml tcllib module in a SAX sort of way) and builds a data structure which it returns if the parsing succeeded. The return value is referred to herein as a &quot;pxml&quot;, or &quot;parsed xml&quot;. The list consists of two or more elements:</p>
<ul class="itemized">
<li><p>The first element is the name of the tag.</p></li>
<li><p>The second element is an array-get formatted list of key/value pairs. The keys are attribute names and the values are attribute values. This is an empty list if there are no attributes on the tag.</p></li>
<li><p>The third through end elements are the children of the node, if any. Each child is, recursively, a pxml.</p></li>
<li><p>Note that if the zero'th element, i.e. the tag name, is &quot;%PCDATA&quot;, then
the attributes will be empty and the third element will be the text of the element. In addition, if an element's contents consists only of PCDATA, it will have only one child, and all the PCDATA will be concatenated. In other words, 
this parser works poorly for XML with elements that contain both child tags and PCDATA.  Since Amazon S3 does not do this (and for that matter most 
uses of XML where XML is a poor choice don't do this), this is probably
not a serious limitation.</p></li>
</ul></dd>
<dt><a name="2"><b class="cmd">xsxp::fetch</b> <i class="arg">pxml</i> <i class="arg">path</i> <span class="opt">?<i class="arg">part</i>?</span></a></dt>
<dd><p><i class="arg">pxml</i> is a parsed XML, as returned from xsxp::parse.
<i class="arg">path</i> is a list of element tag names. Each element is the name
of a child to look up, optionally followed by a 
hash (&quot;#&quot;) and a string of digits. An empty list or an initial empty element
selects <i class="arg">pxml</i>. If no hash sign is present, the behavior is as if &quot;#0&quot;
had been appended to that element. (In addition to a list, slashes can separate subparts where convenient.)</p>
<p>An element of <i class="arg">path</i> scans the children at the indicated level
for the n'th instance of a child whose tag matches the part of the
element before the hash sign. If an element is simply &quot;#&quot;  followed
by digits, that indexed child is selected, regardless of the tags







|
|











|














|
|






|







136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
<li><a href="#4"><b class="cmd">xsxp::only</b> <i class="arg">pxml</i> <i class="arg">tagname</i></a></li>
<li><a href="#5"><b class="cmd">xsxp::prettyprint</b> <i class="arg">pxml</i> <span class="opt">?<i class="arg">chan</i>?</span></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package provides a simple interface to parse XML into a pure-value list.
It also provides accessor routines to pull out specific subtags,
not unlike DOM access.
This package was written for and is used by Darren New's Amazon S3 access package.</p>
<p>This is pretty lame, but I needed something like this for S3,
and at the time, TclDOM would not work with the new 8.5 Tcl
due to version number problems.</p>
<p>In addition, this is a pure-value implementation. There is no
garbage to clean up in the event of a thrown error, for example.
This simplifies the code for sufficiently small XML documents,
which is what Amazon's S3 guarantees.</p>
<p>Copyright 2006 Darren New. All Rights Reserved.
NO WARRANTIES OF ANY TYPE ARE PROVIDED.
COPYING OR USE INDEMNIFIES THE AUTHOR IN ALL WAYS.
This software is licensed under essentially the same
terms as Tcl. See LICENSE.txt for the terms.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<p>The package implements five rather simple procedures.
One parses, one is for debugging, and the rest pull various
parts of the parsed document out for processing.</p>
<dl class="definitions">
<dt><a name="1"><b class="cmd">xsxp::parse</b> <i class="arg">xml</i></a></dt>
<dd><p>This parses an XML document (using the standard xml tcllib module in a SAX sort of way) and builds a data structure which it returns if the parsing succeeded. The return value is referred to herein as a &quot;pxml&quot;, or &quot;parsed xml&quot;. The list consists of two or more elements:</p>
<ul class="itemized">
<li><p>The first element is the name of the tag.</p></li>
<li><p>The second element is an array-get formatted list of key/value pairs. The keys are attribute names and the values are attribute values. This is an empty list if there are no attributes on the tag.</p></li>
<li><p>The third through end elements are the children of the node, if any. Each child is, recursively, a pxml.</p></li>
<li><p>Note that if the zero'th element, i.e. the tag name, is &quot;%PCDATA&quot;, then
the attributes will be empty and the third element will be the text of the element. In addition, if an element's contents consists only of PCDATA, it will have only one child, and all the PCDATA will be concatenated. In other words,
this parser works poorly for XML with elements that contain both child tags and PCDATA.  Since Amazon S3 does not do this (and for that matter most
uses of XML where XML is a poor choice don't do this), this is probably
not a serious limitation.</p></li>
</ul></dd>
<dt><a name="2"><b class="cmd">xsxp::fetch</b> <i class="arg">pxml</i> <i class="arg">path</i> <span class="opt">?<i class="arg">part</i>?</span></a></dt>
<dd><p><i class="arg">pxml</i> is a parsed XML, as returned from xsxp::parse.
<i class="arg">path</i> is a list of element tag names. Each element is the name
of a child to look up, optionally followed by a
hash (&quot;#&quot;) and a string of digits. An empty list or an initial empty element
selects <i class="arg">pxml</i>. If no hash sign is present, the behavior is as if &quot;#0&quot;
had been appended to that element. (In addition to a list, slashes can separate subparts where convenient.)</p>
<p>An element of <i class="arg">path</i> scans the children at the indicated level
for the n'th instance of a child whose tag matches the part of the
element before the hash sign. If an element is simply &quot;#&quot;  followed
by digits, that indexed child is selected, regardless of the tags
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
<dd><p>is like %PCDATA, but returns an empty string if
no PCDATA is found.</p></dd>
</dl>
<p>For example, to fetch the first bold text from the fifth paragraph of the body of your HTML file,</p>
<pre class="example">xsxp::fetch $pxml {html body p#4 b} %PCDATA</pre>
</dd>
<dt><a name="3"><b class="cmd">xsxp::fetchall</b> <i class="arg">pxml_list</i> <i class="arg">path</i> <span class="opt">?<i class="arg">part</i>?</span></a></dt>
<dd><p>This iterates over each PXML in <i class="arg">pxml_list</i> (which must be a list 
of pxmls) selecting the indicated path from it, building a new list 
with the selected data, and returning that new list.</p>
<p>For example, <i class="arg">pxml_list</i> might be
the %CHILDREN of a particular element, and the <i class="arg">path</i> and <i class="arg">part</i>
might select from each child a sub-element in which we're interested.</p></dd>
<dt><a name="4"><b class="cmd">xsxp::only</b> <i class="arg">pxml</i> <i class="arg">tagname</i></a></dt>
<dd><p>This iterates over the direct children of <i class="arg">pxml</i> and selects only
those with <i class="arg">tagname</i> as their tag. Returns a list of matching
elements.</p></dd>
<dt><a name="5"><b class="cmd">xsxp::prettyprint</b> <i class="arg">pxml</i> <span class="opt">?<i class="arg">chan</i>?</span></a></dt>
<dd><p>This outputs to <i class="arg">chan</i> (default stdout) a pretty-printed
version of <i class="arg">pxml</i>.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>amazon-s3</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key733">dom</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key734">xml</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>2006 Darren New. All Rights Reserved.</p>
</div>
</div></body></html>







|
|













|



|













207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
<dd><p>is like %PCDATA, but returns an empty string if
no PCDATA is found.</p></dd>
</dl>
<p>For example, to fetch the first bold text from the fifth paragraph of the body of your HTML file,</p>
<pre class="example">xsxp::fetch $pxml {html body p#4 b} %PCDATA</pre>
</dd>
<dt><a name="3"><b class="cmd">xsxp::fetchall</b> <i class="arg">pxml_list</i> <i class="arg">path</i> <span class="opt">?<i class="arg">part</i>?</span></a></dt>
<dd><p>This iterates over each PXML in <i class="arg">pxml_list</i> (which must be a list
of pxmls) selecting the indicated path from it, building a new list
with the selected data, and returning that new list.</p>
<p>For example, <i class="arg">pxml_list</i> might be
the %CHILDREN of a particular element, and the <i class="arg">path</i> and <i class="arg">part</i>
might select from each child a sub-element in which we're interested.</p></dd>
<dt><a name="4"><b class="cmd">xsxp::only</b> <i class="arg">pxml</i> <i class="arg">tagname</i></a></dt>
<dd><p>This iterates over the direct children of <i class="arg">pxml</i> and selects only
those with <i class="arg">tagname</i> as their tag. Returns a list of matching
elements.</p></dd>
<dt><a name="5"><b class="cmd">xsxp::prettyprint</b> <i class="arg">pxml</i> <span class="opt">?<i class="arg">chan</i>?</span></a></dt>
<dd><p>This outputs to <i class="arg">chan</i> (default stdout) a pretty-printed
version of <i class="arg">pxml</i>.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>amazon-s3</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key733">dom</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key734">xml</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>2006 Darren New. All Rights Reserved.</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/asn/asn.html.

121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<ul>
<li class="subsection"><a href="#subsection1">ENCODER</a></li>
<li class="subsection"><a href="#subsection2">DECODER</a></li>
<li class="subsection"><a href="#subsection3">HANDLING TAGS</a></li>
</ul>
</li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<ul>
<li class="subsection"><a href="#subsection1">ENCODER</a></li>
<li class="subsection"><a href="#subsection2">DECODER</a></li>
<li class="subsection"><a href="#subsection3">HANDLING TAGS</a></li>
</ul>
</li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
<dd><p>Assumes that a UTF8 string value is at the front of the data stored in
the variable named <i class="arg">data_var</i>, and stores it into the variable
named by <i class="arg">string_var</i>, converting it into a proper Tcl string.
Additionally removes all bytes associated with the value from the data
for further processing by the following decoder commands.</p></dd>
<dt><a name="38"><b class="cmd">::asn::asnGetUTCTime</b> <i class="arg">data_var</i> <i class="arg">utc_var</i></a></dt>
<dd><p>Assumes that a UTC time value is at the front of the data stored in the
variable named <i class="arg">data_var</i>, and stores it into the variable named 
by <i class="arg">utc_var</i>. The UTC time value is stored as a string, which has to
be decoded with the usual clock scan commands.
Additionally removes all bytes associated with the
value from the data for further processing by the following decoder
commands.</p></dd>
<dt><a name="39"><b class="cmd">::asn::asnGetBitString</b> <i class="arg">data_var</i> <i class="arg">bits_var</i></a></dt>
<dd><p>Assumes that a bit string value is at the front of the data stored in the
variable named <i class="arg">data_var</i>, and stores it into the variable named 
by <i class="arg">bits_var</i> as a string containing only 0 and 1.
Additionally removes all bytes associated with the
value from the data for further processing by the following decoder
commands.</p></dd>
<dt><a name="40"><b class="cmd">::asn::asnGetObjectIdentifier</b> <i class="arg">data_var</i> <i class="arg">oid_var</i></a></dt>
<dd><p>Assumes that a object identifier (OID) value is at the front of the data 
stored in the variable named <i class="arg">data_var</i>, and stores it into the variable 
named by <i class="arg">oid_var</i> as a list of integers. 
Additionally removes all bytes associated with the
value from the data for further processing by the following decoder
commands.</p></dd>
<dt><a name="41"><b class="cmd">::asn::asnGetBoolean</b> <i class="arg">data_var</i> <i class="arg">bool_var</i></a></dt>
<dd><p>Assumes that a boolean value is at the front of the data stored in the
variable named <i class="arg">data_var</i>, and stores it into the variable named 
by <i class="arg">bool_var</i>. Additionally removes all bytes associated with the
value from the data for further processing by the following decoder
commands.</p></dd>
<dt><a name="42"><b class="cmd">::asn::asnGetNull</b> <i class="arg">data_var</i></a></dt>
<dd><p>Assumes that a NULL value is at the front of the data stored in the
variable named <i class="arg">data_var</i> and removes the bytes used to encode it
from the data.</p></dd>







|







|





|
|
|





|







375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
<dd><p>Assumes that a UTF8 string value is at the front of the data stored in
the variable named <i class="arg">data_var</i>, and stores it into the variable
named by <i class="arg">string_var</i>, converting it into a proper Tcl string.
Additionally removes all bytes associated with the value from the data
for further processing by the following decoder commands.</p></dd>
<dt><a name="38"><b class="cmd">::asn::asnGetUTCTime</b> <i class="arg">data_var</i> <i class="arg">utc_var</i></a></dt>
<dd><p>Assumes that a UTC time value is at the front of the data stored in the
variable named <i class="arg">data_var</i>, and stores it into the variable named
by <i class="arg">utc_var</i>. The UTC time value is stored as a string, which has to
be decoded with the usual clock scan commands.
Additionally removes all bytes associated with the
value from the data for further processing by the following decoder
commands.</p></dd>
<dt><a name="39"><b class="cmd">::asn::asnGetBitString</b> <i class="arg">data_var</i> <i class="arg">bits_var</i></a></dt>
<dd><p>Assumes that a bit string value is at the front of the data stored in the
variable named <i class="arg">data_var</i>, and stores it into the variable named
by <i class="arg">bits_var</i> as a string containing only 0 and 1.
Additionally removes all bytes associated with the
value from the data for further processing by the following decoder
commands.</p></dd>
<dt><a name="40"><b class="cmd">::asn::asnGetObjectIdentifier</b> <i class="arg">data_var</i> <i class="arg">oid_var</i></a></dt>
<dd><p>Assumes that a object identifier (OID) value is at the front of the data
stored in the variable named <i class="arg">data_var</i>, and stores it into the variable
named by <i class="arg">oid_var</i> as a list of integers.
Additionally removes all bytes associated with the
value from the data for further processing by the following decoder
commands.</p></dd>
<dt><a name="41"><b class="cmd">::asn::asnGetBoolean</b> <i class="arg">data_var</i> <i class="arg">bool_var</i></a></dt>
<dd><p>Assumes that a boolean value is at the front of the data stored in the
variable named <i class="arg">data_var</i>, and stores it into the variable named
by <i class="arg">bool_var</i>. Additionally removes all bytes associated with the
value from the data for further processing by the following decoder
commands.</p></dd>
<dt><a name="42"><b class="cmd">::asn::asnGetNull</b> <i class="arg">data_var</i></a></dt>
<dd><p>Assumes that a NULL value is at the front of the data stored in the
variable named <i class="arg">data_var</i> and removes the bytes used to encode it
from the data.</p></dd>
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
<dd><p>The <b class="cmd">::asn::asnPeekTag</b> command can be used to take a peek at the data and decode the tag value, without
removing it from the data. The <i class="arg">tag_var</i> gets set to the tag number, while the <i class="arg">tagtype_var</i> gets set
to the class of the tag. (Either UNIVERSAL, CONTEXT, APPLICATION or PRIVATE). The <i class="arg">constr_var</i> is set to 1 if the
tag is for a constructed value, and to 0 for not constructed. It returns the length of the tag.</p></dd>
<dt><a name="48"><b class="cmd">::asn::asnTag</b> <i class="arg">tagnumber</i> <span class="opt">?<i class="arg">class</i>?</span> <span class="opt">?<i class="arg">tagstyle</i>?</span></a></dt>
<dd><p>The <b class="cmd">::asn::asnTag</b> can be used to create a tag value. The <i class="arg">tagnumber</i> gives the number of the tag, while
the <i class="arg">class</i> gives one of the classes (UNIVERSAL,CONTEXT,APPLICATION or PRIVATE). The class may be abbreviated to just the first letter (U,C,A,P),
default is UNIVERSAL.    
The <i class="arg">tagstyle</i> is either C for Constructed encoding, or P for primitve encoding. It defaults to P. You can also use 1 instead of C and
0 instead of P for direct use of the values returned by <b class="cmd">::asn::asnPeekTag</b>.</p></dd>
<dt><a name="49"><b class="cmd">::asn::asnRetag</b> <i class="arg">data_var</i> <i class="arg">newTag</i></a></dt>
<dd><p>Replaces the tag in front of the data in <i class="arg">data_var</i> with <i class="arg">newTag</i>. The new Tag can be created using the <b class="cmd">::asn::asnTag</b> command.</p></dd>
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">EXAMPLES</a></h2>
<p>Examples for the usage of this package can be found in the
implementation of package <b class="package"><a href="../ldap/ldap.html">ldap</a></b>.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>asn</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key402">asn</a>, <a href="../../../../index.html#key400">ber</a>, <a href="../../../../index.html#key401">cer</a>, <a href="../../../../index.html#key403">der</a>, <a href="../../../../index.html#key136">internet</a>, <a href="../../../../index.html#key139">protocol</a>, <a href="../../../../index.html#key398">x.208</a>, <a href="../../../../index.html#key399">x.209</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004 Andreas Kupries &lt;[email protected]&gt;<br>
Copyright &copy; 2004 Jochen Loewer &lt;[email protected]&gt;<br>
Copyright &copy; 2004-2011 Michael Schlenker &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|











|



|




|










469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
<dd><p>The <b class="cmd">::asn::asnPeekTag</b> command can be used to take a peek at the data and decode the tag value, without
removing it from the data. The <i class="arg">tag_var</i> gets set to the tag number, while the <i class="arg">tagtype_var</i> gets set
to the class of the tag. (Either UNIVERSAL, CONTEXT, APPLICATION or PRIVATE). The <i class="arg">constr_var</i> is set to 1 if the
tag is for a constructed value, and to 0 for not constructed. It returns the length of the tag.</p></dd>
<dt><a name="48"><b class="cmd">::asn::asnTag</b> <i class="arg">tagnumber</i> <span class="opt">?<i class="arg">class</i>?</span> <span class="opt">?<i class="arg">tagstyle</i>?</span></a></dt>
<dd><p>The <b class="cmd">::asn::asnTag</b> can be used to create a tag value. The <i class="arg">tagnumber</i> gives the number of the tag, while
the <i class="arg">class</i> gives one of the classes (UNIVERSAL,CONTEXT,APPLICATION or PRIVATE). The class may be abbreviated to just the first letter (U,C,A,P),
default is UNIVERSAL.
The <i class="arg">tagstyle</i> is either C for Constructed encoding, or P for primitve encoding. It defaults to P. You can also use 1 instead of C and
0 instead of P for direct use of the values returned by <b class="cmd">::asn::asnPeekTag</b>.</p></dd>
<dt><a name="49"><b class="cmd">::asn::asnRetag</b> <i class="arg">data_var</i> <i class="arg">newTag</i></a></dt>
<dd><p>Replaces the tag in front of the data in <i class="arg">data_var</i> with <i class="arg">newTag</i>. The new Tag can be created using the <b class="cmd">::asn::asnTag</b> command.</p></dd>
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">EXAMPLES</a></h2>
<p>Examples for the usage of this package can be found in the
implementation of package <b class="package"><a href="../ldap/ldap.html">ldap</a></b>.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>asn</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key402">asn</a>, <a href="../../../../index.html#key400">ber</a>, <a href="../../../../index.html#key401">cer</a>, <a href="../../../../index.html#key403">der</a>, <a href="../../../../index.html#key138">internet</a>, <a href="../../../../index.html#key140">protocol</a>, <a href="../../../../index.html#key398">x.208</a>, <a href="../../../../index.html#key399">x.209</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004 Andreas Kupries &lt;[email protected]&gt;<br>
Copyright &copy; 2004 Jochen Loewer &lt;[email protected]&gt;<br>
Copyright &copy; 2004-2011 Michael Schlenker &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/base32/base32.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Code map</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Code map</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
	4 E   13 N   22 W   31 7
	5 F   14 O   23 X
	6 G   15 P   24 Y
	7 H   16 Q   25 Z
	8 I   17 R   26 2
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>base32</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key277">base32</a>, <a href="../../../../index.html#key323">rfc3548</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Public domain</p>
</div>
</div></body></html>







|



|













179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
	4 E   13 N   22 W   31 7
	5 F   14 O   23 X
	6 G   15 P   24 Y
	7 H   16 Q   25 Z
	8 I   17 R   26 2
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>base32</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key277">base32</a>, <a href="../../../../index.html#key323">rfc3548</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Public domain</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/base32/base32core.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
<ol class="enumerated">
<li><p>The length of the input is not a multiple of eight,</p></li>
<li><p>The padding appears not at the end of input, but in the middle,</p></li>
<li><p>The padding has not of length six, four, three, or one characters,</p></li>
</ol></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>base32</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key277">base32</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Public domain</p>
</div>
</div></body></html>







|



|













169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
<ol class="enumerated">
<li><p>The length of the input is not a multiple of eight,</p></li>
<li><p>The padding appears not at the end of input, but in the middle,</p></li>
<li><p>The padding has not of length six, four, three, or one characters,</p></li>
</ol></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>base32</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key277">base32</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Public domain</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/base32/base32hex.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Code map</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Code map</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
	4 4   13 D        22 M   31 V
	5 5   14 E        23 N
	6 6   15 F        24 O
	7 7        16 G   25 P
	8 8        17 H   26 Q
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>base32</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key277">base32</a>, <a href="../../../../index.html#key322">hex</a>, <a href="../../../../index.html#key323">rfc3548</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Public domain</p>
</div>
</div></body></html>







|



|













181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
	4 4   13 D        22 M   31 V
	5 5   14 E        23 N
	6 6   15 F        24 O
	7 7        16 G   25 P
	8 8        17 H   26 Q
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>base32</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key277">base32</a>, <a href="../../../../index.html#key322">hex</a>, <a href="../../../../index.html#key323">rfc3548</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Public domain</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/base64/ascii85.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">EXAMPLES</a></li>
<li class="section"><a href="#section3">References</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">EXAMPLES</a></li>
<li class="section"><a href="#section3">References</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
<div id="section3" class="section"><h2><a name="section3">References</a></h2>
<ol class="enumerated">
<li><p><a href="http://en.wikipedia.org/wiki/Ascii85">http://en.wikipedia.org/wiki/Ascii85</a></p></li>
<li><p>Postscript Language Reference Manual, 3rd Edition, page 131.
       <a href="http://www.adobe.com/devnet/postscript/pdfs/PLRM.pdf">http://www.adobe.com/devnet/postscript/pdfs/PLRM.pdf</a></p></li>
</ol>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>base64</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key700">ascii85</a>, <a href="../../../../index.html#key244">encoding</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2010, Emiliano Gavil&aacute;n</p>
</div>
</div></body></html>







|



|













177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
<div id="section3" class="section"><h2><a name="section3">References</a></h2>
<ol class="enumerated">
<li><p><a href="http://en.wikipedia.org/wiki/Ascii85">http://en.wikipedia.org/wiki/Ascii85</a></p></li>
<li><p>Postscript Language Reference Manual, 3rd Edition, page 131.
       <a href="http://www.adobe.com/devnet/postscript/pdfs/PLRM.pdf">http://www.adobe.com/devnet/postscript/pdfs/PLRM.pdf</a></p></li>
</ol>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>base64</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key700">ascii85</a>, <a href="../../../../index.html#key244">encoding</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2010, Emiliano Gavil&aacute;n</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/base64/base64.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">EXAMPLES</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">EXAMPLES</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# NOTE: base64 encodes BINARY strings.
% set chemical [encoding convertto utf-8 &quot;C\u2088H\u2081\u2080N\u2084O\u2082&quot;]
% set encoded [base64::encode $chemical]
Q+KCiEjigoHigoBO4oKET+KCgg==
% set caffeine [encoding convertfrom utf-8 [base64::decode $encoded]]
</pre>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>base64</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key759">base64</a>, <a href="../../../../index.html#key244">encoding</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|



|







170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# NOTE: base64 encodes BINARY strings.
% set chemical [encoding convertto utf-8 &quot;C\u2088H\u2081\u2080N\u2084O\u2082&quot;]
% set encoded [base64::encode $chemical]
Q+KCiEjigoHigoBO4oKET+KCgg==
% set caffeine [encoding convertfrom utf-8 [base64::decode $encoded]]
</pre>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>base64</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key759">base64</a>, <a href="../../../../index.html#key244">encoding</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/base64/uuencode.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">OPTIONS</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">OPTIONS</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
end
</pre>
<pre class="example">
% uuencode::uudecode $d
{hello.txt 644 {Hello World}}
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>base64</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key244">encoding</a>, <a href="../../../../index.html#key243">uuencode</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002, Pat Thoyts</p>
</div>
</div></body></html>







|



|













193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
end
</pre>
<pre class="example">
% uuencode::uudecode $d
{hello.txt 644 {Hello World}}
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>base64</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key244">encoding</a>, <a href="../../../../index.html#key243">uuencode</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002, Pat Thoyts</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/base64/yencode.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">OPTIONS</a></li>
<li class="section"><a href="#section3">References</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">OPTIONS</a></li>
<li class="section"><a href="#section3">References</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package provides a Tcl-only implementation of the yEnc file
encoding. This is a recently introduced method of encoding binary
files for transmission through Usenet. This encoding packs binary data
into a format that requires an 8-bit clean transmission layer but that
escapes characters special to the <i class="term"><a href="../../../../index.html#key635">NNTP</a></i> posting protocols. See 
<a href="http://www.yenc.org/">http://www.yenc.org/</a> for details concerning the algorithm.</p>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::yencode::encode</b> <i class="arg">string</i></a></dt>
<dd><p>returns the yEnc encoded data.</p></dd>
<dt><a name="2"><b class="cmd">::yencode::decode</b> <i class="arg">string</i></a></dt>
<dd><p>Decodes the given yEnc encoded data.</p></dd>
<dt><a name="3"><b class="cmd">::yencode::yencode</b> <span class="opt">?<b class="option">-name</b> <i class="arg">string</i>?</span> <span class="opt">?<b class="option">-line</b> <i class="arg">integer</i>?</span> <span class="opt">?<b class="option">-crc32</b> <i class="arg">boolean</i>?</span> (<b class="option">-file</b> <i class="arg">filename</i> | <span class="opt">?<b class="option">--</b>?</span> <i class="arg">string</i>)</a></dt>







|







139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package provides a Tcl-only implementation of the yEnc file
encoding. This is a recently introduced method of encoding binary
files for transmission through Usenet. This encoding packs binary data
into a format that requires an 8-bit clean transmission layer but that
escapes characters special to the <i class="term"><a href="../../../../index.html#key635">NNTP</a></i> posting protocols. See
<a href="http://www.yenc.org/">http://www.yenc.org/</a> for details concerning the algorithm.</p>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::yencode::encode</b> <i class="arg">string</i></a></dt>
<dd><p>returns the yEnc encoded data.</p></dd>
<dt><a name="2"><b class="cmd">::yencode::decode</b> <i class="arg">string</i></a></dt>
<dd><p>Decodes the given yEnc encoded data.</p></dd>
<dt><a name="3"><b class="cmd">::yencode::yencode</b> <span class="opt">?<b class="option">-name</b> <i class="arg">string</i>?</span> <span class="opt">?<b class="option">-line</b> <i class="arg">integer</i>?</span> <span class="opt">?<b class="option">-crc32</b> <i class="arg">boolean</i>?</span> (<b class="option">-file</b> <i class="arg">filename</i> | <span class="opt">?<b class="option">--</b>?</span> <i class="arg">string</i>)</a></dt>
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
</pre>
</div>
<div id="section3" class="section"><h2><a name="section3">References</a></h2>
<ol class="enumerated">
<li><p><a href="http://www.yenc.org/yenc-draft.1.3.txt">http://www.yenc.org/yenc-draft.1.3.txt</a></p></li>
</ol>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>base64</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key244">encoding</a>, <a href="../../../../index.html#key690">yEnc</a>, <a href="../../../../index.html#key688">ydecode</a>, <a href="../../../../index.html#key689">yencode</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002, Pat Thoyts</p>
</div>
</div></body></html>







|



|













186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
</pre>
</div>
<div id="section3" class="section"><h2><a name="section3">References</a></h2>
<ol class="enumerated">
<li><p><a href="http://www.yenc.org/yenc-draft.1.3.txt">http://www.yenc.org/yenc-draft.1.3.txt</a></p></li>
</ol>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>base64</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key244">encoding</a>, <a href="../../../../index.html#key690">yEnc</a>, <a href="../../../../index.html#key688">ydecode</a>, <a href="../../../../index.html#key689">yencode</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002, Pat Thoyts</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/bee/bee.html.

121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<ul>
<li class="subsection"><a href="#subsection1">ENCODER</a></li>
<li class="subsection"><a href="#subsection2">DECODER</a></li>
</ul>
</li>
<li class="section"><a href="#section3">FORMAT DEFINITION</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<ul>
<li class="subsection"><a href="#subsection1">ENCODER</a></li>
<li class="subsection"><a href="#subsection2">DECODER</a></li>
</ul>
</li>
<li class="section"><a href="#section3">FORMAT DEFINITION</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
</dl>
<p>By wrapping an integer number into <b class="const">i</b>...<b class="const">e</b> the format
makes sure that they are different from strings, which all begin with
a digit.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">EXAMPLES</a></h2>
</div>
<div id="section5" class="section"><h2><a name="section5">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>bee</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key367">BitTorrent</a>, <a href="../../../../index.html#key366">bee</a>, <a href="../../../../index.html#key368">bittorrent</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key369">torrent</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
</dl>
<p>By wrapping an integer number into <b class="const">i</b>...<b class="const">e</b> the format
makes sure that they are different from strings, which all begin with
a digit.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">EXAMPLES</a></h2>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>bee</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key368">BitTorrent</a>, <a href="../../../../index.html#key366">bee</a>, <a href="../../../../index.html#key367">bittorrent</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key369">torrent</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/bench/bench.html.

120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<li class="section"><a href="#section2">PUBLIC API</a>
<ul>
<li class="subsection"><a href="#subsection1">Benchmark execution</a></li>
<li class="subsection"><a href="#subsection2">Result manipulation</a></li>
<li class="subsection"><a href="#subsection3">Result format</a></li>
</ul>
</li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<li class="section"><a href="#section2">PUBLIC API</a>
<ul>
<li class="subsection"><a href="#subsection1">Benchmark execution</a></li>
<li class="subsection"><a href="#subsection2">Result manipulation</a></li>
<li class="subsection"><a href="#subsection3">Result format</a></li>
</ul>
</li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
<dt>BAD_RES</dt>
<dd><p>The benchmark could be executed, however the result from its body did
not match the declared expectations.</p></dd>
</dl></dd>
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>bench</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="bench_intro.html">bench_intro</a>, <a href="bench_lang_intro.html">bench_lang_intro</a>, <a href="bench_lang_spec.html">bench_lang_spec</a>, bench_read, bench_wcsv, bench_wtext</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key103">benchmark</a>, <a href="../../../../index.html#key119">merging</a>, <a href="../../../../index.html#key120">normalization</a>, <a href="../../../../index.html#key101">performance</a>, <a href="../../../../index.html#key102">testing</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Benchmark tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007-2008 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|







|








311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
<dt>BAD_RES</dt>
<dd><p>The benchmark could be executed, however the result from its body did
not match the declared expectations.</p></dd>
</dl></dd>
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>bench</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="bench_intro.html">bench_intro</a>, <a href="bench_lang_intro.html">bench_lang_intro</a>, <a href="bench_lang_spec.html">bench_lang_spec</a>, bench_read, bench_wcsv, bench_wtext</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key103">benchmark</a>, <a href="../../../../index.html#key119">merging</a>, <a href="../../../../index.html#key120">normalization</a>, <a href="../../../../index.html#key102">performance</a>, <a href="../../../../index.html#key101">testing</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Benchmark tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007-2008 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/bench/bench_intro.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>bench_intro - bench introduction</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">HISTORICAL NOTES</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>bench_intro - bench introduction</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">HISTORICAL NOTES</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
153
154
155
156
157
158
159
160

161
162
163
164

165
166
167
168
169
170
171
172
173
174
175
176
177
178
</ol>
</div>
<div id="section2" class="section"><h2><a name="section2">HISTORICAL NOTES</a></h2>
<p>This module and package have been derived from Jeff Hobbs'
<b class="syscmd">tclbench</b> application for the benchmarking of the Tcl core and
its ancestor &quot;<b class="file">runbench.tcl</b>&quot;.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>

<p>This document, will undoubtedly contain bugs and other problems.
Please report such in the category <em>bench</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have.</p>

</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="bench.html">bench</a>, bench_lang_faq, <a href="bench_lang_intro.html">bench_lang_intro</a>, <a href="bench_lang_spec.html">bench_lang_spec</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key100">bench language</a>, <a href="../../../../index.html#key103">benchmark</a>, <a href="../../../../index.html#key101">performance</a>, <a href="../../../../index.html#key102">testing</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Benchmark tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|
>
|

|
|
>





|








153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
</ol>
</div>
<div id="section2" class="section"><h2><a name="section2">HISTORICAL NOTES</a></h2>
<p>This module and package have been derived from Jeff Hobbs'
<b class="syscmd">tclbench</b> application for the benchmarking of the Tcl core and
its ancestor &quot;<b class="file">runbench.tcl</b>&quot;.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>bench</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="bench.html">bench</a>, bench_lang_faq, <a href="bench_lang_intro.html">bench_lang_intro</a>, <a href="bench_lang_spec.html">bench_lang_spec</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key100">bench language</a>, <a href="../../../../index.html#key103">benchmark</a>, <a href="../../../../index.html#key102">performance</a>, <a href="../../../../index.html#key101">testing</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Benchmark tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/bench/bench_lang_intro.html.

120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<li class="subsection"><a href="#subsection1">Fundamentals</a></li>
<li class="subsection"><a href="#subsection2">Basics</a></li>
<li class="subsection"><a href="#subsection3">Pre- and postprocessing</a></li>
<li class="subsection"><a href="#subsection4">Advanced pre- and postprocessing</a></li>
</ul>
</li>
<li class="section"><a href="#section2">FURTHER READING</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>







|







120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<li class="subsection"><a href="#subsection1">Fundamentals</a></li>
<li class="subsection"><a href="#subsection2">Basics</a></li>
<li class="subsection"><a href="#subsection3">Pre- and postprocessing</a></li>
<li class="subsection"><a href="#subsection4">Advanced pre- and postprocessing</a></li>
</ul>
</li>
<li class="section"><a href="#section2">FURTHER READING</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
229
230
231
232
233
234
235
236

237
238
239
240

241
242
243
244
245
246
247
248
249
250
251
252
253
254
<div id="section2" class="section"><h2><a name="section2">FURTHER READING</a></h2>
<p>Now that this document has been digested the reader, assumed to be a
<i class="term">writer</i> of benchmarks, he should be fortified enough to be able
to understand the formal <i class="term">bench language specfication</i>. It will
also serve as the detailed specification and cheat sheet for all
available commands and their syntax.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>

<p>This document, will undoubtedly contain bugs and other problems.
Please report such in the category <em>bench</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have.</p>

</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="bench_intro.html">bench_intro</a>, <a href="bench_lang_spec.html">bench_lang_spec</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key100">bench language</a>, <a href="../../../../index.html#key103">benchmark</a>, <a href="../../../../index.html#key353">examples</a>, <a href="../../../../index.html#key101">performance</a>, <a href="../../../../index.html#key102">testing</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Benchmark tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|
>
|

|
|
>





|








229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
<div id="section2" class="section"><h2><a name="section2">FURTHER READING</a></h2>
<p>Now that this document has been digested the reader, assumed to be a
<i class="term">writer</i> of benchmarks, he should be fortified enough to be able
to understand the formal <i class="term">bench language specfication</i>. It will
also serve as the detailed specification and cheat sheet for all
available commands and their syntax.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>bench</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="bench_intro.html">bench_intro</a>, <a href="bench_lang_spec.html">bench_lang_spec</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key100">bench language</a>, <a href="../../../../index.html#key103">benchmark</a>, <a href="../../../../index.html#key351">examples</a>, <a href="../../../../index.html#key102">performance</a>, <a href="../../../../index.html#key101">testing</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Benchmark tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/bench/bench_lang_spec.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Commands</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Commands</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
<dd><p>The argument of this option declares a script which is run
<em>before</em> any of the iterations of the body are run. Its
responsibility is to create whatever resources are needed by the body
to run without failing.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>bench</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="bench_intro.html">bench_intro</a>, <a href="bench_lang_intro.html">bench_lang_intro</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key100">bench language</a>, <a href="../../../../index.html#key103">benchmark</a>, <a href="../../../../index.html#key101">performance</a>, <a href="../../../../index.html#key643">specification</a>, <a href="../../../../index.html#key102">testing</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Benchmark tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|







|








209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
<dd><p>The argument of this option declares a script which is run
<em>before</em> any of the iterations of the body are run. Its
responsibility is to create whatever resources are needed by the body
to run without failing.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>bench</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="bench_intro.html">bench_intro</a>, <a href="bench_lang_intro.html">bench_lang_intro</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key100">bench language</a>, <a href="../../../../index.html#key103">benchmark</a>, <a href="../../../../index.html#key102">performance</a>, <a href="../../../../index.html#key643">specification</a>, <a href="../../../../index.html#key101">testing</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Benchmark tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/bench/bench_read.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PUBLIC API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PUBLIC API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
<dd><p>Provided by package <b class="package"><a href="bench_wcsv.html">bench::out::csv</a></b>.</p></dd>
<dt><b class="cmd"><a href="bench_wtext.html">bench::out::text</a></b></dt>
<dd><p>Provided by package <b class="package"><a href="bench_wtext.html">bench::out::text</a></b>.</p></dd>
</dl>
<p>and automatically detects which format is used by the input file.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>bench</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="bench.html">bench</a>, <a href="bench_wcsv.html">bench::out::csv</a>, <a href="bench_wtext.html">bench::out::text</a>, <a href="bench_intro.html">bench_intro</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key103">benchmark</a>, <a href="../../../../index.html#key53">csv</a>, <a href="../../../../index.html#key331">formatting</a>, <a href="../../../../index.html#key480">human readable</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key101">performance</a>, <a href="../../../../index.html#key502">reading</a>, <a href="../../../../index.html#key102">testing</a>, <a href="../../../../index.html#key481">text</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Benchmark tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|







|








160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
<dd><p>Provided by package <b class="package"><a href="bench_wcsv.html">bench::out::csv</a></b>.</p></dd>
<dt><b class="cmd"><a href="bench_wtext.html">bench::out::text</a></b></dt>
<dd><p>Provided by package <b class="package"><a href="bench_wtext.html">bench::out::text</a></b>.</p></dd>
</dl>
<p>and automatically detects which format is used by the input file.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>bench</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="bench.html">bench</a>, <a href="bench_wcsv.html">bench::out::csv</a>, <a href="bench_wtext.html">bench::out::text</a>, <a href="bench_intro.html">bench_intro</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key103">benchmark</a>, <a href="../../../../index.html#key53">csv</a>, <a href="../../../../index.html#key331">formatting</a>, <a href="../../../../index.html#key481">human readable</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key102">performance</a>, <a href="../../../../index.html#key502">reading</a>, <a href="../../../../index.html#key101">testing</a>, <a href="../../../../index.html#key480">text</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Benchmark tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/bench/bench_wcsv.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PUBLIC API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PUBLIC API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
file, socket, etc. This specific command generates CSV data importable
by spread sheets.</p>
<p>For other formatting styles see the packages <b class="package"><a href="bench.html">bench</a></b> and
<b class="package"><a href="bench_wtext.html">bench::out::text</a></b> which provide commands to format benchmark
results in raw form, or for human consumption, respectively.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>bench</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="bench.html">bench</a>, <a href="bench_wtext.html">bench::out::text</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key103">benchmark</a>, <a href="../../../../index.html#key53">csv</a>, <a href="../../../../index.html#key331">formatting</a>, <a href="../../../../index.html#key101">performance</a>, <a href="../../../../index.html#key102">testing</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Benchmark tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|







|








152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
file, socket, etc. This specific command generates CSV data importable
by spread sheets.</p>
<p>For other formatting styles see the packages <b class="package"><a href="bench.html">bench</a></b> and
<b class="package"><a href="bench_wtext.html">bench::out::text</a></b> which provide commands to format benchmark
results in raw form, or for human consumption, respectively.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>bench</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="bench.html">bench</a>, <a href="bench_wtext.html">bench::out::text</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key103">benchmark</a>, <a href="../../../../index.html#key53">csv</a>, <a href="../../../../index.html#key331">formatting</a>, <a href="../../../../index.html#key102">performance</a>, <a href="../../../../index.html#key101">testing</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Benchmark tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/bench/bench_wtext.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PUBLIC API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PUBLIC API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
file, socket, etc. This specific command generates human readable
text.</p>
<p>For other formatting styles see the packages <b class="package"><a href="bench.html">bench</a></b> and
<b class="package"><a href="bench_wcsv.html">bench::out::csv</a></b> which provide commands to format benchmark
results in raw form, or as importable CSV data, respectively.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>bench</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="bench.html">bench</a>, <a href="bench_wcsv.html">bench::out::csv</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key103">benchmark</a>, <a href="../../../../index.html#key331">formatting</a>, <a href="../../../../index.html#key480">human readable</a>, <a href="../../../../index.html#key101">performance</a>, <a href="../../../../index.html#key102">testing</a>, <a href="../../../../index.html#key481">text</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Benchmark tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|







|








152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
file, socket, etc. This specific command generates human readable
text.</p>
<p>For other formatting styles see the packages <b class="package"><a href="bench.html">bench</a></b> and
<b class="package"><a href="bench_wcsv.html">bench::out::csv</a></b> which provide commands to format benchmark
results in raw form, or as importable CSV data, respectively.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>bench</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="bench.html">bench</a>, <a href="bench_wcsv.html">bench::out::csv</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key103">benchmark</a>, <a href="../../../../index.html#key331">formatting</a>, <a href="../../../../index.html#key481">human readable</a>, <a href="../../../../index.html#key102">performance</a>, <a href="../../../../index.html#key101">testing</a>, <a href="../../../../index.html#key480">text</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Benchmark tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/bibtex/bibtex.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>bibtex - Parse bibtex files</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>bibtex - Parse bibtex files</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
by the handle <i class="arg">token</i>.</p>
<p>The dictionary keys are the macro names and the values their
replacement strings. This command has the correct signature for use as
a <b class="option">-stringcommand</b> callback in an invokation of the command
<b class="cmd">::bibtex::parse</b>.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>bibtex</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key405">bibliography</a>, <a href="../../../../index.html#key406">bibtex</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key195">text processing</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 for documentation, Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
by the handle <i class="arg">token</i>.</p>
<p>The dictionary keys are the macro names and the values their
replacement strings. This command has the correct signature for use as
a <b class="option">-stringcommand</b> callback in an invokation of the command
<b class="cmd">::bibtex::parse</b>.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>bibtex</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key405">bibliography</a>, <a href="../../../../index.html#key406">bibtex</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key195">text processing</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 for documentation, Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/blowfish/blowfish.html.

119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">PROGRAMMING INTERFACE</a></li>
<li class="section"><a href="#section4">MODES OF OPERATION</a></li>
<li class="section"><a href="#section5">EXAMPLES</a></li>
<li class="section"><a href="#section6">REFERENCES</a></li>
<li class="section"><a href="#section7">AUTHORS</a></li>
<li class="section"><a href="#section8">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">PROGRAMMING INTERFACE</a></li>
<li class="section"><a href="#section4">MODES OF OPERATION</a></li>
<li class="section"><a href="#section5">EXAMPLES</a></li>
<li class="section"><a href="#section6">REFERENCES</a></li>
<li class="section"><a href="#section7">AUTHORS</a></li>
<li class="section"><a href="#section8">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
<li><p>Schneier, B. &quot;Applied Cryptography, 2nd edition&quot;, 1996,
    ISBN 0-471-11709-9, pub. John Wiley &amp; Sons.</p></li>
</ol>
</div>
<div id="section7" class="section"><h2><a name="section7">AUTHORS</a></h2>
<p>Frank Pilhofer, Pat Thoyts</p>
</div>
<div id="section8" class="section"><h2><a name="section8">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>blowfish</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>3des, <a href="../des/des.html">des</a>, <a href="../rc4/rc4.html">rc4</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key633">block cipher</a>, <a href="../../../../index.html#key781">blowfish</a>, <a href="../../../../index.html#key780">cryptography</a>, <a href="../../../../index.html#key152">encryption</a>, <a href="../../../../index.html#key148">security</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003, Pat Thoyts &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|







|








240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
<li><p>Schneier, B. &quot;Applied Cryptography, 2nd edition&quot;, 1996,
    ISBN 0-471-11709-9, pub. John Wiley &amp; Sons.</p></li>
</ol>
</div>
<div id="section7" class="section"><h2><a name="section7">AUTHORS</a></h2>
<p>Frank Pilhofer, Pat Thoyts</p>
</div>
<div id="section8" class="section"><h2><a name="section8">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>blowfish</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>3des, <a href="../des/des.html">des</a>, <a href="../rc4/rc4.html">rc4</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key633">block cipher</a>, <a href="../../../../index.html#key781">blowfish</a>, <a href="../../../../index.html#key780">cryptography</a>, <a href="../../../../index.html#key153">encryption</a>, <a href="../../../../index.html#key148">security</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003, Pat Thoyts &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/cache/async.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
known, and <b class="const">false</b> otherwise.</p></dd>
<dt><a name="6"><i class="arg">objectName</i> <b class="method">clear</b> <span class="opt">?<i class="arg">key</i>?</span></a></dt>
<dd><p>This method resets the state of either the specified <i class="arg">key</i> or of
all keys known to the cache, making it unkown. This forces future
<b class="method">get</b>-requests to reload the information from the provider.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>cache</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key624">asynchronous</a>, <a href="../../../../index.html#key361">cache</a>, <a href="../../../../index.html#key519">callback</a>, <a href="../../../../index.html#key625">synchronous</a></p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2008 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|










220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
known, and <b class="const">false</b> otherwise.</p></dd>
<dt><a name="6"><i class="arg">objectName</i> <b class="method">clear</b> <span class="opt">?<i class="arg">key</i>?</span></a></dt>
<dd><p>This method resets the state of either the specified <i class="arg">key</i> or of
all keys known to the cache, making it unkown. This forces future
<b class="method">get</b>-requests to reload the information from the provider.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>cache</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key624">asynchronous</a>, <a href="../../../../index.html#key361">cache</a>, <a href="../../../../index.html#key519">callback</a>, <a href="../../../../index.html#key625">synchronous</a></p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2008 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/clock/iso8601.html.

111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<p>clock_iso8601 - Parsing ISO 8601 dates/times</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.5</b></li>







|







111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<p>clock_iso8601 - Parsing ISO 8601 dates/times</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.5</b></li>
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
<b class="option">-base</b>,
<b class="option">-gmt</b>,
<b class="option">-locale</b>, and
<b class="option">-timezone</b>
of the builtin command <b class="cmd">clock scan</b>.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>clock::iso8601</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
</div></body></html>







|



|







151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
<b class="option">-base</b>,
<b class="option">-gmt</b>,
<b class="option">-locale</b>, and
<b class="option">-timezone</b>
of the builtin command <b class="cmd">clock scan</b>.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>clock::iso8601</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/clock/rfc2822.html.

111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<p>clock_rfc2822 - Parsing ISO 8601 dates/times</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.5</b></li>







|







111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<p>clock_rfc2822 - Parsing ISO 8601 dates/times</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.5</b></li>
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
<dl class="definitions">
<dt><a name="1"><b class="cmd">::clock::rfc2822 parse_date</b> <i class="arg">date</i></a></dt>
<dd><p>This command parses an RFC2822 date string and returns
the given date in seconds since epoch. An error is thrown
if the command is unable to parse the date.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>clock::rfc2822</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
</div></body></html>







|



|







136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
<dl class="definitions">
<dt><a name="1"><b class="cmd">::clock::rfc2822 parse_date</b> <i class="arg">date</i></a></dt>
<dd><p>This command parses an RFC2822 date string and returns
the given date in seconds since epoch. An error is thrown
if the command is unable to parse the date.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>clock::rfc2822</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/cmdline/cmdline.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">::argv handling</a></li>
<li class="section"><a href="#section3">API</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">::argv handling</a></li>
<li class="section"><a href="#section3">API</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
</pre>
<p>This example, taken (and slightly modified) from the package
<b class="package"><a href="../fileutil/fileutil.html">fileutil</a></b>, shows how to use cmdline.  First, a list of
options is created, then the 'args' list is passed to cmdline for
processing.  Subsequently, different options are checked to see if
they have been passed to the script, and what their value is.</p>
</div>
<div id="section5" class="section"><h2><a name="section5">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>cmdline</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key251">argument processing</a>, <a href="../../../../index.html#key250">argv</a>, <a href="../../../../index.html#key249">argv0</a>, <a href="../../../../index.html#key252">cmdline processing</a>, <a href="../../../../index.html#key248">command line processing</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>







|



|










244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
</pre>
<p>This example, taken (and slightly modified) from the package
<b class="package"><a href="../fileutil/fileutil.html">fileutil</a></b>, shows how to use cmdline.  First, a list of
options is created, then the 'args' list is passed to cmdline for
processing.  Subsequently, different options are checked to see if
they have been passed to the script, and what their value is.</p>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>cmdline</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key251">argument processing</a>, <a href="../../../../index.html#key250">argv</a>, <a href="../../../../index.html#key249">argv0</a>, <a href="../../../../index.html#key252">cmdline processing</a>, <a href="../../../../index.html#key248">command line processing</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/comm/comm.html.

439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
<b class="variable">chan</b>, <b class="variable">id</b></p>
<p>This hook is invoked before making a connection to the remote named in
<i class="arg">id</i>.  An error return (via <b class="cmd"><a href="../../../../index.html#key171">error</a></b>) will abort the connection
attempt with the error.  Example:</p>
<pre class="example">
    % ::comm::comm hook connecting {
        if {[string match {*[02468]} $id]} {
            error &quot;Can't connect to even ids&quot; 
        }
    }
    % ::comm::comm send 10000 puts ok
    Connect to remote failed: Can't connect to even ids
    %
</pre>
</dd>







|







439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
<b class="variable">chan</b>, <b class="variable">id</b></p>
<p>This hook is invoked before making a connection to the remote named in
<i class="arg">id</i>.  An error return (via <b class="cmd"><a href="../../../../index.html#key171">error</a></b>) will abort the connection
attempt with the error.  Example:</p>
<pre class="example">
    % ::comm::comm hook connecting {
        if {[string match {*[02468]} $id]} {
            error &quot;Can't connect to even ids&quot;
        }
    }
    % ::comm::comm send 10000 puts ok
    Connect to remote failed: Can't connect to even ids
    %
</pre>
</dd>
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
</div>
<div id="subsection12" class="subsection"><h3><a name="subsection12">Blocking Semantics</a></h3>
<p>There is one outstanding difference between <b class="package">comm</b> and
<b class="cmd"><a href="../../../../index.html#key336">send</a></b>.  When blocking in a synchronous remote command, <b class="cmd"><a href="../../../../index.html#key336">send</a></b>
uses an internal C hook (Tk_RestrictEvents) to the event loop to look
ahead for send-related events and only process those without
processing any other events.  In contrast, <b class="package">comm</b> uses the
<b class="cmd"><a href="../../../../index.html#key393">vwait</a></b> command as a semaphore to indicate the return message has
arrived.  The difference is that a synchronous <b class="cmd"><a href="../../../../index.html#key336">send</a></b> will block
the application and prevent all events (including window related ones)
from being processed, while a synchronous <b class="cmd">::comm::comm send</b>
will block the application but still allow other events to get
processed.  In particular, <b class="cmd">after idle</b> handlers will fire
immediately when comm blocks.</p>
<p>What can be done about this?  First, note that this behavior will come
from any code using <b class="cmd"><a href="../../../../index.html#key393">vwait</a></b> to block and wait for an event to
occur.  At the cost of multiple channel support, <b class="package">comm</b> could
be changed to do blocking I/O on the socket, giving send-like blocking
semantics.  However, multiple channel support is a very useful feature
of comm that it is deemed too important to lose.  The remaining
approaches involve a new loadable module written in C (which is
somewhat against the philosophy of <b class="cmd">comm</b>) One way would be to
create a modified version of the <b class="cmd"><a href="../../../../index.html#key393">vwait</a></b> command that allow the
event flags passed to Tcl_DoOneEvent to be specified.  For <b class="cmd">comm</b>,
just the TCL_FILE_EVENTS would be processed.  Another way would be to
implement a mechanism like Tk_RestrictEvents, but apply it to the Tcl
event loop (since <b class="package">comm</b> doesn't require Tk).  One of these
approaches will be available in a future <b class="package">comm</b> release as an
optional component.</p>
</div>
<div id="subsection13" class="subsection"><h3><a name="subsection13">Asynchronous Result Generation</a></h3>
<p>By default the result returned by a remotely invoked command is the
result sent back to the invoker. This means that the result is
generated synchronously, and the server handling the call is blocked
for the duration of the command.</p>
<p>While this is tolerable as long as only short-running commands are
invoked on the server long-running commands, like database queries
make this a problem. One command can prevent the processing requests
of all other clients for an arbitrary period of time.</p>
<p>Before version 4.5 of comm the only solution was to rewrite the server
command to use the Tcl builtin command <b class="cmd"><a href="../../../../index.html#key393">vwait</a></b>, or one of its
relatives like <b class="cmd">tkwait</b>, to open a new event loop which processes
requests while the long-running operation is executed. This however
has its own perils, as this makes it possible to both overflow the Tcl
stack with a large number of event loop, and to have a newer requests
block the return of older ones, as the eventloop have to be unwound in
the order of their creation.</p>
<p>The proper solution is to have the invoked command indicate to







|







|






|

















|







652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
</div>
<div id="subsection12" class="subsection"><h3><a name="subsection12">Blocking Semantics</a></h3>
<p>There is one outstanding difference between <b class="package">comm</b> and
<b class="cmd"><a href="../../../../index.html#key336">send</a></b>.  When blocking in a synchronous remote command, <b class="cmd"><a href="../../../../index.html#key336">send</a></b>
uses an internal C hook (Tk_RestrictEvents) to the event loop to look
ahead for send-related events and only process those without
processing any other events.  In contrast, <b class="package">comm</b> uses the
<b class="cmd"><a href="../../../../index.html#key395">vwait</a></b> command as a semaphore to indicate the return message has
arrived.  The difference is that a synchronous <b class="cmd"><a href="../../../../index.html#key336">send</a></b> will block
the application and prevent all events (including window related ones)
from being processed, while a synchronous <b class="cmd">::comm::comm send</b>
will block the application but still allow other events to get
processed.  In particular, <b class="cmd">after idle</b> handlers will fire
immediately when comm blocks.</p>
<p>What can be done about this?  First, note that this behavior will come
from any code using <b class="cmd"><a href="../../../../index.html#key395">vwait</a></b> to block and wait for an event to
occur.  At the cost of multiple channel support, <b class="package">comm</b> could
be changed to do blocking I/O on the socket, giving send-like blocking
semantics.  However, multiple channel support is a very useful feature
of comm that it is deemed too important to lose.  The remaining
approaches involve a new loadable module written in C (which is
somewhat against the philosophy of <b class="cmd">comm</b>) One way would be to
create a modified version of the <b class="cmd"><a href="../../../../index.html#key395">vwait</a></b> command that allow the
event flags passed to Tcl_DoOneEvent to be specified.  For <b class="cmd">comm</b>,
just the TCL_FILE_EVENTS would be processed.  Another way would be to
implement a mechanism like Tk_RestrictEvents, but apply it to the Tcl
event loop (since <b class="package">comm</b> doesn't require Tk).  One of these
approaches will be available in a future <b class="package">comm</b> release as an
optional component.</p>
</div>
<div id="subsection13" class="subsection"><h3><a name="subsection13">Asynchronous Result Generation</a></h3>
<p>By default the result returned by a remotely invoked command is the
result sent back to the invoker. This means that the result is
generated synchronously, and the server handling the call is blocked
for the duration of the command.</p>
<p>While this is tolerable as long as only short-running commands are
invoked on the server long-running commands, like database queries
make this a problem. One command can prevent the processing requests
of all other clients for an arbitrary period of time.</p>
<p>Before version 4.5 of comm the only solution was to rewrite the server
command to use the Tcl builtin command <b class="cmd"><a href="../../../../index.html#key395">vwait</a></b>, or one of its
relatives like <b class="cmd">tkwait</b>, to open a new event loop which processes
requests while the long-running operation is executed. This however
has its own perils, as this makes it possible to both overflow the Tcl
stack with a large number of event loop, and to have a newer requests
block the return of older ones, as the eventloop have to be unwound in
the order of their creation.</p>
<p>The proper solution is to have the invoked command indicate to
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
socket is opened. The envisioned main use is the specification of the
<b class="cmd">tls::socket</b> command, see package <b class="package"><a href="../../../../index.html#key311">tls</a></b>, to secure the
communication.</p></dd>
<dt>4.5.7</dt>
<dd><p>Changed handling of ports already in use to provide a proper error
message.</p></dd>
<dt>4.5.6</dt>
<dd><p>Bugfix in the replacement for <b class="cmd"><a href="../../../../index.html#key393">vwait</a></b>, made robust against of
variable names containing spaces.</p></dd>
<dt>4.5.5</dt>
<dd><p>Bugfix in the handling of hooks, typo in variable name.</p></dd>
<dt>4.5.4</dt>
<dd><p>Bugfix in the handling of the result received by the <b class="method">send</b>
method. Replaced an <em>after idle unset result</em> with an immediate
<b class="cmd">unset</b>, with the information saved to a local variable.</p>
<p>The <b class="cmd">after idle</b> can spill into a forked child process if there
is no event loop between its setup and the fork. This may bork the
child if the next event loop is the <b class="cmd"><a href="../../../../index.html#key393">vwait</a></b> of <b class="package">comm</b>'s
<b class="method">send</b> a few lines above the <b class="cmd">after idle</b>, and the child
used the same serial number for its next request. In that case the
parent's <b class="cmd">after idle unset</b> will delete the very array element
the child is waiting for, unlocking the <b class="cmd"><a href="../../../../index.html#key393">vwait</a></b>, causing it to
access a now missing array element, instead of the expected result.</p></dd>
<dt>4.5.3</dt>
<dd><p>Bugfixes in the wrappers for the builtin <b class="cmd"><a href="../../../../index.html#key394">update</a></b> and <b class="cmd"><a href="../../../../index.html#key393">vwait</a></b>
commands.</p></dd>
<dt>4.5.2</dt>
<dd><p>Bugfix in the wrapper for the builtin <b class="cmd"><a href="../../../../index.html#key394">update</a></b> command.</p></dd>
<dt>4.5.1</dt>
<dd><p>Bugfixes in the handling of -interp for regular scripts. The handling
of the buffer was wrong for scripts which are a single statement as
list. Fixed missing argument to new command <b class="cmd">commSendReply</b>,







|









|



|


|







792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
socket is opened. The envisioned main use is the specification of the
<b class="cmd">tls::socket</b> command, see package <b class="package"><a href="../../../../index.html#key311">tls</a></b>, to secure the
communication.</p></dd>
<dt>4.5.7</dt>
<dd><p>Changed handling of ports already in use to provide a proper error
message.</p></dd>
<dt>4.5.6</dt>
<dd><p>Bugfix in the replacement for <b class="cmd"><a href="../../../../index.html#key395">vwait</a></b>, made robust against of
variable names containing spaces.</p></dd>
<dt>4.5.5</dt>
<dd><p>Bugfix in the handling of hooks, typo in variable name.</p></dd>
<dt>4.5.4</dt>
<dd><p>Bugfix in the handling of the result received by the <b class="method">send</b>
method. Replaced an <em>after idle unset result</em> with an immediate
<b class="cmd">unset</b>, with the information saved to a local variable.</p>
<p>The <b class="cmd">after idle</b> can spill into a forked child process if there
is no event loop between its setup and the fork. This may bork the
child if the next event loop is the <b class="cmd"><a href="../../../../index.html#key395">vwait</a></b> of <b class="package">comm</b>'s
<b class="method">send</b> a few lines above the <b class="cmd">after idle</b>, and the child
used the same serial number for its next request. In that case the
parent's <b class="cmd">after idle unset</b> will delete the very array element
the child is waiting for, unlocking the <b class="cmd"><a href="../../../../index.html#key395">vwait</a></b>, causing it to
access a now missing array element, instead of the expected result.</p></dd>
<dt>4.5.3</dt>
<dd><p>Bugfixes in the wrappers for the builtin <b class="cmd"><a href="../../../../index.html#key394">update</a></b> and <b class="cmd"><a href="../../../../index.html#key395">vwait</a></b>
commands.</p></dd>
<dt>4.5.2</dt>
<dd><p>Bugfix in the wrapper for the builtin <b class="cmd"><a href="../../../../index.html#key394">update</a></b> command.</p></dd>
<dt>4.5.1</dt>
<dd><p>Bugfixes in the handling of -interp for regular scripts. The handling
of the buffer was wrong for scripts which are a single statement as
list. Fixed missing argument to new command <b class="cmd">commSendReply</b>,
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
<b class="package">comm</b> and has built a simple nameserver as part of his Pool
library.  See <a href="http://www.purl.org/net/akupries/soft/pool/index.htm">http://www.purl.org/net/akupries/soft/pool/index.htm</a>.</p>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>comm</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>send(n)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key31">comm</a>, <a href="../../../../index.html#key338">communication</a>, <a href="../../../../index.html#key343">ipc</a>, <a href="../../../../index.html#key344">message</a>, <a href="../../../../index.html#key341">remote communication</a>, <a href="../../../../index.html#key340">remote execution</a>, <a href="../../../../index.html#key337">rpc</a>, <a href="../../../../index.html#key339">secure</a>, <a href="../../../../index.html#key336">send</a>, <a href="../../../../index.html#key335">socket</a>, <a href="../../../../index.html#key342">ssl</a>, <a href="../../../../index.html#key311">tls</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 1995-1998 The Open Group. All Rights Reserved.<br>
Copyright &copy; 2003-2004 ActiveState Corporation.<br>
Copyright &copy; 2006-2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|







|










989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
<b class="package">comm</b> and has built a simple nameserver as part of his Pool
library.  See <a href="http://www.purl.org/net/akupries/soft/pool/index.htm">http://www.purl.org/net/akupries/soft/pool/index.htm</a>.</p>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>comm</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>send(n)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key33">comm</a>, <a href="../../../../index.html#key338">communication</a>, <a href="../../../../index.html#key343">ipc</a>, <a href="../../../../index.html#key344">message</a>, <a href="../../../../index.html#key341">remote communication</a>, <a href="../../../../index.html#key340">remote execution</a>, <a href="../../../../index.html#key337">rpc</a>, <a href="../../../../index.html#key339">secure</a>, <a href="../../../../index.html#key336">send</a>, <a href="../../../../index.html#key335">socket</a>, <a href="../../../../index.html#key342">ssl</a>, <a href="../../../../index.html#key311">tls</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 1995-1998 The Open Group. All Rights Reserved.<br>
Copyright &copy; 2003-2004 ActiveState Corporation.<br>
Copyright &copy; 2006-2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/comm/comm_wire.html.

120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<ul>
<li class="subsection"><a href="#subsection1">Basic Layer</a></li>
<li class="subsection"><a href="#subsection2">Basic Message Layer</a></li>
<li class="subsection"><a href="#subsection3">Negotiation Messages - Initial Handshake</a></li>
<li class="subsection"><a href="#subsection4">Script/Command Messages</a></li>
</ul>
</li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<ul>
<li class="subsection"><a href="#subsection1">Basic Layer</a></li>
<li class="subsection"><a href="#subsection2">Basic Message Layer</a></li>
<li class="subsection"><a href="#subsection3">Negotiation Messages - Initial Handshake</a></li>
<li class="subsection"><a href="#subsection4">Script/Command Messages</a></li>
</ul>
</li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
<div id="subsection1" class="subsection"><h3><a name="subsection1">Basic Layer</a></h3>
<p>The basic encoding for <em>all</em> data is UTF-8. Because of this
binary data, including the NULL character, can be sent over the wire
as is, without the need for armoring it.</p>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Basic Message Layer</a></h3>
<p>On top of the <span class="sectref"><a href="#subsection1">Basic Layer</a></span> we have a
<i class="term">message oriented</i> exchange of data. 
The totality of all characters written to the channel is a Tcl list,
with each element a separate <i class="term"><a href="../../../../index.html#key344">message</a></i>, each itself a list. The
messages in the overall list are separated by EOL. Note that EOL
characters can occur within the list as well. They can be
distinguished from the message-separating EOL by the fact that the
data from the beginning up to their location is not a valid Tcl list.</p>
<p>EOL is signaled through the linefeed character, i.e <b class="const">LF</b>, or,







|







156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
<div id="subsection1" class="subsection"><h3><a name="subsection1">Basic Layer</a></h3>
<p>The basic encoding for <em>all</em> data is UTF-8. Because of this
binary data, including the NULL character, can be sent over the wire
as is, without the need for armoring it.</p>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Basic Message Layer</a></h3>
<p>On top of the <span class="sectref"><a href="#subsection1">Basic Layer</a></span> we have a
<i class="term">message oriented</i> exchange of data.
The totality of all characters written to the channel is a Tcl list,
with each element a separate <i class="term"><a href="../../../../index.html#key344">message</a></i>, each itself a list. The
messages in the overall list are separated by EOL. Note that EOL
characters can occur within the list as well. They can be
distinguished from the message-separating EOL by the fact that the
data from the beginning up to their location is not a valid Tcl list.</p>
<p>EOL is signaled through the linefeed character, i.e <b class="const">LF</b>, or,
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
    (a')    send {array get tcl_platform}
    (b')    send array get tcl_platform
    (c')    send array {get tcl_platform}
    respectively
</pre>
<p>Note that (a), generated by (a'), is the usual form, if only single
commands are sent by the client.
For example constructed using <b class="cmd"><a href="../../../../index.html#key278">list</a></b>, if the command contains
variable arguments. Like</p>
<pre class="example">
    send [list array get $the_variable]
</pre>
<p>These three instructions all invoke the script on the server
side. Their difference is in the treatment of result values, and thus
determines if a reply is expected.</p>







|







223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
    (a')    send {array get tcl_platform}
    (b')    send array get tcl_platform
    (c')    send array {get tcl_platform}
    respectively
</pre>
<p>Note that (a), generated by (a'), is the usual form, if only single
commands are sent by the client.
For example constructed using <b class="cmd"><a href="../../../../index.html#key280">list</a></b>, if the command contains
variable arguments. Like</p>
<pre class="example">
    send [list array get $the_variable]
</pre>
<p>These three instructions all invoke the script on the server
side. Their difference is in the treatment of result values, and thus
determines if a reply is expected.</p>
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
    {reply 1 {return -code 0 {}}}
    {reply 1 {return -code 0 {osVersion 2.4.21-99-default byteOrder littleEndian machine i686 platform unix os Linux user andreask wordSize 4}}}
</pre>
</dd>
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>comm</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="comm.html">comm</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key31">comm</a>, <a href="../../../../index.html#key338">communication</a>, <a href="../../../../index.html#key343">ipc</a>, <a href="../../../../index.html#key344">message</a>, <a href="../../../../index.html#key341">remote communication</a>, <a href="../../../../index.html#key340">remote execution</a>, <a href="../../../../index.html#key337">rpc</a>, <a href="../../../../index.html#key335">socket</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 Docs. Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|







|








256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
    {reply 1 {return -code 0 {}}}
    {reply 1 {return -code 0 {osVersion 2.4.21-99-default byteOrder littleEndian machine i686 platform unix os Linux user andreask wordSize 4}}}
</pre>
</dd>
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>comm</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="comm.html">comm</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key33">comm</a>, <a href="../../../../index.html#key338">communication</a>, <a href="../../../../index.html#key343">ipc</a>, <a href="../../../../index.html#key344">message</a>, <a href="../../../../index.html#key341">remote communication</a>, <a href="../../../../index.html#key340">remote execution</a>, <a href="../../../../index.html#key337">rpc</a>, <a href="../../../../index.html#key335">socket</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 Docs. Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/control/control.html.

112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">LIMITATIONS</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">LIMITATIONS</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
<dd><p>The <b class="cmd">control</b> command is used as a configuration command for
customizing the other public commands of the control package.  The
<i class="arg">command</i> argument names the command to be customized.  The set of
valid <i class="arg">option</i> and subsequent arguments are determined by the
command being customized, and are documented with the command.</p></dd>
<dt><a name="2"><b class="cmd">control::assert</b> <i class="arg">expr</i> <span class="opt">?<i class="arg">arg arg ...</i>?</span></a></dt>
<dd><p>When disabled, the <b class="cmd"><a href="../../../../index.html#key130">assert</a></b> command behaves exactly like the
<b class="cmd"><a href="../../../../index.html#key128">no-op</a></b> command.</p>
<p>When enabled, the <b class="cmd"><a href="../../../../index.html#key130">assert</a></b> command evaluates <i class="arg">expr</i> as an
expression (in the same way that <b class="cmd">expr</b> evaluates its argument).
If evaluation reveals that <i class="arg">expr</i> is not a valid boolean
expression (according to [<b class="cmd">string is boolean -strict</b>]),
an error is raised.  If <i class="arg">expr</i> evaluates to a true boolean value
(as recognized by <b class="cmd">if</b>), then <b class="cmd"><a href="../../../../index.html#key130">assert</a></b> returns an empty
string.  Otherwise, the remaining arguments to <b class="cmd"><a href="../../../../index.html#key130">assert</a></b> are used
to construct a message string.  If there are no arguments, the message
string is &quot;assertion failed: $expr&quot;.  If there are arguments, they are
joined by <b class="cmd"><a href="../../../../index.html#key539">join</a></b> to form the message string.  The message string
is then appended as an argument to a callback command, and the
completed callback command is evaluated in the global namespace.</p>
<p>The <b class="cmd"><a href="../../../../index.html#key130">assert</a></b> command can be customized by the <b class="cmd">control</b>
command in two ways:</p>
<p>[<b class="cmd">control::control assert enabled</b> <span class="opt">?<i class="arg">boolean</i>?</span>]
queries or sets whether <b class="cmd">control::assert</b> is enabled.  When called
without a <i class="arg">boolean</i> argument, a boolean value is returned







|









|







150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
<dd><p>The <b class="cmd">control</b> command is used as a configuration command for
customizing the other public commands of the control package.  The
<i class="arg">command</i> argument names the command to be customized.  The set of
valid <i class="arg">option</i> and subsequent arguments are determined by the
command being customized, and are documented with the command.</p></dd>
<dt><a name="2"><b class="cmd">control::assert</b> <i class="arg">expr</i> <span class="opt">?<i class="arg">arg arg ...</i>?</span></a></dt>
<dd><p>When disabled, the <b class="cmd"><a href="../../../../index.html#key130">assert</a></b> command behaves exactly like the
<b class="cmd"><a href="../../../../index.html#key129">no-op</a></b> command.</p>
<p>When enabled, the <b class="cmd"><a href="../../../../index.html#key130">assert</a></b> command evaluates <i class="arg">expr</i> as an
expression (in the same way that <b class="cmd">expr</b> evaluates its argument).
If evaluation reveals that <i class="arg">expr</i> is not a valid boolean
expression (according to [<b class="cmd">string is boolean -strict</b>]),
an error is raised.  If <i class="arg">expr</i> evaluates to a true boolean value
(as recognized by <b class="cmd">if</b>), then <b class="cmd"><a href="../../../../index.html#key130">assert</a></b> returns an empty
string.  Otherwise, the remaining arguments to <b class="cmd"><a href="../../../../index.html#key130">assert</a></b> are used
to construct a message string.  If there are no arguments, the message
string is &quot;assertion failed: $expr&quot;.  If there are arguments, they are
joined by <b class="cmd"><a href="../../../../index.html#key538">join</a></b> to form the message string.  The message string
is then appended as an argument to a callback command, and the
completed callback command is evaluated in the global namespace.</p>
<p>The <b class="cmd"><a href="../../../../index.html#key130">assert</a></b> command can be customized by the <b class="cmd">control</b>
command in two ways:</p>
<p>[<b class="cmd">control::control assert enabled</b> <span class="opt">?<i class="arg">boolean</i>?</span>]
queries or sets whether <b class="cmd">control::assert</b> is enabled.  When called
without a <i class="arg">boolean</i> argument, a boolean value is returned
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
<i class="arg">option</i> and <i class="arg">test</i> are omitted the body is evaluated exactly
once. After normal completion, <b class="cmd"><a href="../../../../index.html#key131">do</a></b> returns an empty string.
Exceptional return codes (<b class="cmd">break</b>, <b class="cmd">continue</b>, <b class="cmd"><a href="../../../../index.html#key171">error</a></b>,
etc.) during the evaluation of <i class="arg">body</i> are handled in the same way
the <b class="cmd">while</b> command handles them, except as noted in
<span class="sectref"><a href="#section3">LIMITATIONS</a></span>, below.</p></dd>
<dt><a name="4"><b class="cmd">control::no-op</b> <span class="opt">?<i class="arg">arg arg ...</i>?</span></a></dt>
<dd><p>The <b class="cmd"><a href="../../../../index.html#key128">no-op</a></b> command takes any number of arguments and does
nothing.  It returns an empty string.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">LIMITATIONS</a></h2>
<p>Several of the commands provided by the <b class="cmd">control</b> package accept
arguments that are scripts to be evaluated.  Due to fundamental
limitations of Tcl's <b class="cmd">catch</b> and <b class="cmd">return</b> commands, it is not







|







210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
<i class="arg">option</i> and <i class="arg">test</i> are omitted the body is evaluated exactly
once. After normal completion, <b class="cmd"><a href="../../../../index.html#key131">do</a></b> returns an empty string.
Exceptional return codes (<b class="cmd">break</b>, <b class="cmd">continue</b>, <b class="cmd"><a href="../../../../index.html#key171">error</a></b>,
etc.) during the evaluation of <i class="arg">body</i> are handled in the same way
the <b class="cmd">while</b> command handles them, except as noted in
<span class="sectref"><a href="#section3">LIMITATIONS</a></span>, below.</p></dd>
<dt><a name="4"><b class="cmd">control::no-op</b> <span class="opt">?<i class="arg">arg arg ...</i>?</span></a></dt>
<dd><p>The <b class="cmd"><a href="../../../../index.html#key129">no-op</a></b> command takes any number of arguments and does
nothing.  It returns an empty string.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">LIMITATIONS</a></h2>
<p>Several of the commands provided by the <b class="cmd">control</b> package accept
arguments that are scripts to be evaluated.  Due to fundamental
limitations of Tcl's <b class="cmd">catch</b> and <b class="cmd">return</b> commands, it is not
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
% proc b {} {control::do {return -code error b} while 1}
% catch a
1
% catch b
0
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>control</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>break, continue, expr, if, <a href="../../../../index.html#key539">join</a>, namespace, return, <a href="../../../../index.html#key272">string</a>, while</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key130">assert</a>, <a href="../../../../index.html#key108">control</a>, <a href="../../../../index.html#key131">do</a>, <a href="../../../../index.html#key127">flow</a>, <a href="../../../../index.html#key128">no-op</a>, <a href="../../../../index.html#key129">structure</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>







|



|




|


|





235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
% proc b {} {control::do {return -code error b} while 1}
% catch a
1
% catch b
0
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>control</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>break, continue, expr, if, <a href="../../../../index.html#key538">join</a>, namespace, return, <a href="../../../../index.html#key270">string</a>, while</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key130">assert</a>, <a href="../../../../index.html#key107">control</a>, <a href="../../../../index.html#key131">do</a>, <a href="../../../../index.html#key127">flow</a>, <a href="../../../../index.html#key129">no-op</a>, <a href="../../../../index.html#key128">structure</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/coroutine/coro_auto.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>coroutine::auto - Automatic event and IO coroutine awareness</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>coroutine::auto - Automatic event and IO coroutine awareness</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
directly visible functionality.
Built on top of the package <b class="package"><a href="tcllib_coroutine.html">coroutine</a></b>, it intercepts various
builtin commands of the Tcl core to make any code using them
coroutine-oblivious, i.e. able to run inside and outside of a
coroutine without changes.</p>
<p>The commands so affected by this package are</p>
<dl class="definitions">
<dt><b class="cmd"><a href="../../../../index.html#key392">after</a></b></dt>
<dd></dd>
<dt><b class="cmd"><a href="../../../../index.html#key391">exit</a></b></dt>
<dd></dd>
<dt><b class="cmd"><a href="../../../../index.html#key395">gets</a></b></dt>
<dd></dd>
<dt><b class="cmd"><a href="../../../../index.html#key390">global</a></b></dt>
<dd></dd>
<dt><b class="cmd"><a href="../../../../index.html#key388">read</a></b></dt>
<dd></dd>
<dt><b class="cmd"><a href="../../../../index.html#key394">update</a></b></dt>
<dd></dd>
<dt><b class="cmd"><a href="../../../../index.html#key393">vwait</a></b></dt>
<dd></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>coroutine</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key392">after</a>, <a href="../../../../index.html#key82">channel</a>, <a href="../../../../index.html#key210">coroutine</a>, <a href="../../../../index.html#key389">events</a>, <a href="../../../../index.html#key391">exit</a>, <a href="../../../../index.html#key395">gets</a>, <a href="../../../../index.html#key390">global</a>, <a href="../../../../index.html#key396">green threads</a>, <a href="../../../../index.html#key388">read</a>, <a href="../../../../index.html#key387">threads</a>, <a href="../../../../index.html#key394">update</a>, <a href="../../../../index.html#key393">vwait</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Coroutine</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2010-2011 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|

|

|







|



|



|




|








137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
directly visible functionality.
Built on top of the package <b class="package"><a href="tcllib_coroutine.html">coroutine</a></b>, it intercepts various
builtin commands of the Tcl core to make any code using them
coroutine-oblivious, i.e. able to run inside and outside of a
coroutine without changes.</p>
<p>The commands so affected by this package are</p>
<dl class="definitions">
<dt><b class="cmd"><a href="../../../../index.html#key391">after</a></b></dt>
<dd></dd>
<dt><b class="cmd"><a href="../../../../index.html#key392">exit</a></b></dt>
<dd></dd>
<dt><b class="cmd"><a href="../../../../index.html#key393">gets</a></b></dt>
<dd></dd>
<dt><b class="cmd"><a href="../../../../index.html#key390">global</a></b></dt>
<dd></dd>
<dt><b class="cmd"><a href="../../../../index.html#key388">read</a></b></dt>
<dd></dd>
<dt><b class="cmd"><a href="../../../../index.html#key394">update</a></b></dt>
<dd></dd>
<dt><b class="cmd"><a href="../../../../index.html#key395">vwait</a></b></dt>
<dd></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>coroutine</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key391">after</a>, <a href="../../../../index.html#key83">channel</a>, <a href="../../../../index.html#key210">coroutine</a>, <a href="../../../../index.html#key389">events</a>, <a href="../../../../index.html#key392">exit</a>, <a href="../../../../index.html#key393">gets</a>, <a href="../../../../index.html#key390">global</a>, <a href="../../../../index.html#key396">green threads</a>, <a href="../../../../index.html#key388">read</a>, <a href="../../../../index.html#key387">threads</a>, <a href="../../../../index.html#key394">update</a>, <a href="../../../../index.html#key395">vwait</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Coroutine</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2010-2011 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/coroutine/tcllib_coroutine.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
<dd><p>This command causes the coroutine invoking it to run pending events or
idle handlers before proceeding.</p></dd>
<dt><a name="9"><b class="cmd">coroutine::util vwait</b> <i class="arg">varname</i></a></dt>
<dd><p>This command causes the coroutine calling it to wait for a write to
the named namespace variable <i class="arg">varname</i>.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>coroutine</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key392">after</a>, <a href="../../../../index.html#key82">channel</a>, <a href="../../../../index.html#key210">coroutine</a>, <a href="../../../../index.html#key389">events</a>, <a href="../../../../index.html#key391">exit</a>, <a href="../../../../index.html#key395">gets</a>, <a href="../../../../index.html#key390">global</a>, <a href="../../../../index.html#key396">green threads</a>, <a href="../../../../index.html#key388">read</a>, <a href="../../../../index.html#key387">threads</a>, <a href="../../../../index.html#key394">update</a>, <a href="../../../../index.html#key393">vwait</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Coroutine</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2010-2011 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
<dd><p>This command causes the coroutine invoking it to run pending events or
idle handlers before proceeding.</p></dd>
<dt><a name="9"><b class="cmd">coroutine::util vwait</b> <i class="arg">varname</i></a></dt>
<dd><p>This command causes the coroutine calling it to wait for a write to
the named namespace variable <i class="arg">varname</i>.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>coroutine</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key391">after</a>, <a href="../../../../index.html#key83">channel</a>, <a href="../../../../index.html#key210">coroutine</a>, <a href="../../../../index.html#key389">events</a>, <a href="../../../../index.html#key392">exit</a>, <a href="../../../../index.html#key393">gets</a>, <a href="../../../../index.html#key390">global</a>, <a href="../../../../index.html#key396">green threads</a>, <a href="../../../../index.html#key388">read</a>, <a href="../../../../index.html#key387">threads</a>, <a href="../../../../index.html#key394">update</a>, <a href="../../../../index.html#key395">vwait</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Coroutine</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2010-2011 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/counter/counter.html.

111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<p>counter - Procedures for counters and histograms</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<p>counter - Procedures for counters and histograms</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
</dl></dd>
<dt><a name="9"><b class="cmd">::counter::reset</b> <i class="arg">tag args</i></a></dt>
<dd><p>Resets the counter with the name <i class="arg">tag</i> to an initial state. The
<i class="arg">args</i> determine the new characteristics of the counter. They have
the same meaning as described for <b class="cmd">::counter::init</b>.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>counter</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key698">counting</a>, <a href="../../../../index.html#key697">histogram</a>, <a href="../../../../index.html#key187">statistics</a>, <a href="../../../../index.html#key696">tallying</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
</div></body></html>







|



|










279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
</dl></dd>
<dt><a name="9"><b class="cmd">::counter::reset</b> <i class="arg">tag args</i></a></dt>
<dd><p>Resets the counter with the name <i class="arg">tag</i> to an initial state. The
<i class="arg">args</i> determine the new characteristics of the counter. They have
the same meaning as described for <b class="cmd">::counter::init</b>.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>counter</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key698">counting</a>, <a href="../../../../index.html#key697">histogram</a>, <a href="../../../../index.html#key187">statistics</a>, <a href="../../../../index.html#key696">tallying</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/crc/cksum.html.

117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">OPTIONS</a></li>
<li class="section"><a href="#section4">PROGRAMMING INTERFACE</a></li>
<li class="section"><a href="#section5">EXAMPLES</a></li>
<li class="section"><a href="#section6">AUTHORS</a></li>
<li class="section"><a href="#section7">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">OPTIONS</a></li>
<li class="section"><a href="#section4">PROGRAMMING INTERFACE</a></li>
<li class="section"><a href="#section5">EXAMPLES</a></li>
<li class="section"><a href="#section6">AUTHORS</a></li>
<li class="section"><a href="#section7">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
the interactive nature of a GUI application and can help to avoid
excessive memory consumption.</p>
<dl class="definitions">
<dt><a name="2"><b class="cmd">::crc::CksumInit</b></a></dt>
<dd><p>Begins a new cksum context. Returns a token ID that must be used for the
remaining functions. An optional seed may be specified if required.</p></dd>
<dt><a name="3"><b class="cmd">::crc::CksumUpdate</b> <i class="arg">token</i> <i class="arg">data</i></a></dt>
<dd><p>Add data to the checksum identified by token. Calling 
<em>CksumUpdate $token &quot;abcd&quot;</em> is equivalent to calling
<em>CksumUpdate $token &quot;ab&quot;</em> followed by 
<em>CksumUpdate $token &quot;cb&quot;</em>. See <span class="sectref"><a href="#section5">EXAMPLES</a></span>.</p></dd>
<dt><a name="4"><b class="cmd">::crc::CksumFinal</b> <i class="arg">token</i></a></dt>
<dd><p>Returns the checksum value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a 32 bit integer value.</p></dd>
</dl>
</div>







|

|







180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
the interactive nature of a GUI application and can help to avoid
excessive memory consumption.</p>
<dl class="definitions">
<dt><a name="2"><b class="cmd">::crc::CksumInit</b></a></dt>
<dd><p>Begins a new cksum context. Returns a token ID that must be used for the
remaining functions. An optional seed may be specified if required.</p></dd>
<dt><a name="3"><b class="cmd">::crc::CksumUpdate</b> <i class="arg">token</i> <i class="arg">data</i></a></dt>
<dd><p>Add data to the checksum identified by token. Calling
<em>CksumUpdate $token &quot;abcd&quot;</em> is equivalent to calling
<em>CksumUpdate $token &quot;ab&quot;</em> followed by
<em>CksumUpdate $token &quot;cb&quot;</em>. See <span class="sectref"><a href="#section5">EXAMPLES</a></span>.</p></dd>
<dt><a name="4"><b class="cmd">::crc::CksumFinal</b> <i class="arg">token</i></a></dt>
<dd><p>Returns the checksum value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a 32 bit integer value.</p></dd>
</dl>
</div>
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
% crc::CksumFinal $tok
2609532967
</pre>
</div>
<div id="section6" class="section"><h2><a name="section6">AUTHORS</a></h2>
<p>Pat Thoyts</p>
</div>
<div id="section7" class="section"><h2><a name="section7">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>crc</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="crc32.html">crc32(n)</a>, <a href="sum.html">sum(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key157">checksum</a>, <a href="../../../../index.html#key158">cksum</a>, <a href="../../../../index.html#key154">crc</a>, <a href="../../../../index.html#key155">crc32</a>, <a href="../../../../index.html#key156">cyclic redundancy check</a>, <a href="../../../../index.html#key149">data integrity</a>, <a href="../../../../index.html#key148">security</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002, Pat Thoyts</p>
</div>
</div></body></html>







|



|







|








214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
% crc::CksumFinal $tok
2609532967
</pre>
</div>
<div id="section6" class="section"><h2><a name="section6">AUTHORS</a></h2>
<p>Pat Thoyts</p>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>crc</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="crc32.html">crc32(n)</a>, <a href="sum.html">sum(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key158">checksum</a>, <a href="../../../../index.html#key157">cksum</a>, <a href="../../../../index.html#key154">crc</a>, <a href="../../../../index.html#key155">crc32</a>, <a href="../../../../index.html#key156">cyclic redundancy check</a>, <a href="../../../../index.html#key150">data integrity</a>, <a href="../../../../index.html#key148">security</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002, Pat Thoyts</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/crc/crc16.html.

116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">OPTIONS</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">AUTHORS</a></li>
<li class="section"><a href="#section6">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">OPTIONS</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">AUTHORS</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
% crc::crc16 -file crc16.tcl
51675
</pre>
</div>
<div id="section5" class="section"><h2><a name="section5">AUTHORS</a></h2>
<p>Pat Thoyts</p>
</div>
<div id="section6" class="section"><h2><a name="section6">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>crc</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="cksum.html">cksum(n)</a>, <a href="crc32.html">crc32(n)</a>, <a href="sum.html">sum(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key157">checksum</a>, <a href="../../../../index.html#key158">cksum</a>, <a href="../../../../index.html#key154">crc</a>, <a href="../../../../index.html#key795">crc16</a>, <a href="../../../../index.html#key155">crc32</a>, <a href="../../../../index.html#key156">cyclic redundancy check</a>, <a href="../../../../index.html#key149">data integrity</a>, <a href="../../../../index.html#key148">security</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002, Pat Thoyts</p>
</div>
</div></body></html>







|



|







|








225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
% crc::crc16 -file crc16.tcl
51675
</pre>
</div>
<div id="section5" class="section"><h2><a name="section5">AUTHORS</a></h2>
<p>Pat Thoyts</p>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>crc</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="cksum.html">cksum(n)</a>, <a href="crc32.html">crc32(n)</a>, <a href="sum.html">sum(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key158">checksum</a>, <a href="../../../../index.html#key157">cksum</a>, <a href="../../../../index.html#key154">crc</a>, <a href="../../../../index.html#key795">crc16</a>, <a href="../../../../index.html#key155">crc32</a>, <a href="../../../../index.html#key156">cyclic redundancy check</a>, <a href="../../../../index.html#key150">data integrity</a>, <a href="../../../../index.html#key148">security</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002, Pat Thoyts</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/crc/crc32.html.

117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">OPTIONS</a></li>
<li class="section"><a href="#section4">PROGRAMMING INTERFACE</a></li>
<li class="section"><a href="#section5">EXAMPLES</a></li>
<li class="section"><a href="#section6">AUTHORS</a></li>
<li class="section"><a href="#section7">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">OPTIONS</a></li>
<li class="section"><a href="#section4">PROGRAMMING INTERFACE</a></li>
<li class="section"><a href="#section5">EXAMPLES</a></li>
<li class="section"><a href="#section6">AUTHORS</a></li>
<li class="section"><a href="#section7">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
is 0xffffffff. This can be useful for calculating the CRC for data
structures without first converting the whole structure into a
string. The CRC of the previous member can be used as the seed for
calculating the CRC of the next member.
Note that the crc32 algorithm includes a final XOR step. If
incremental processing is desired then this must be undone before
using the output of the algorithm as the seed for further
processing. A simpler alternative is to use the 
<span class="sectref"><a href="#section4">PROGRAMMING INTERFACE</a></span> which is intended for this mode of
operation.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">PROGRAMMING INTERFACE</a></h2>
<p>The CRC-32 package implements the checksum using a context variable to
which additional data can be added at any time. This is expecially
useful in an event based environment such as a Tk application or a web
server package. Data to be checksummed may be handled incrementally
during a <b class="cmd">fileevent</b> handler in discrete chunks. This can improve
the interactive nature of a GUI application and can help to avoid
excessive memory consumption.</p>
<dl class="definitions">
<dt><a name="2"><b class="cmd">::crc::Crc32Init</b> <span class="opt">?<i class="arg">seed</i>?</span></a></dt>
<dd><p>Begins a new CRC32 context. Returns a token ID that must be used for the
remaining functions. An optional seed may be specified if required.</p></dd>
<dt><a name="3"><b class="cmd">::crc::Crc32Update</b> <i class="arg">token</i> <i class="arg">data</i></a></dt>
<dd><p>Add data to the checksum identified by token. Calling 
<em>Crc32Update $token &quot;abcd&quot;</em> is equivalent to calling
<em>Crc32Update $token &quot;ab&quot;</em> followed by 
<em>Crc32Update $token &quot;cb&quot;</em>. See <span class="sectref"><a href="#section5">EXAMPLES</a></span>.</p></dd>
<dt><a name="4"><b class="cmd">::crc::Crc32Final</b> <i class="arg">token</i></a></dt>
<dd><p>Returns the checksum value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a 32 bit integer value.</p></dd>
</dl>
</div>







|

















|

|







177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
is 0xffffffff. This can be useful for calculating the CRC for data
structures without first converting the whole structure into a
string. The CRC of the previous member can be used as the seed for
calculating the CRC of the next member.
Note that the crc32 algorithm includes a final XOR step. If
incremental processing is desired then this must be undone before
using the output of the algorithm as the seed for further
processing. A simpler alternative is to use the
<span class="sectref"><a href="#section4">PROGRAMMING INTERFACE</a></span> which is intended for this mode of
operation.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">PROGRAMMING INTERFACE</a></h2>
<p>The CRC-32 package implements the checksum using a context variable to
which additional data can be added at any time. This is expecially
useful in an event based environment such as a Tk application or a web
server package. Data to be checksummed may be handled incrementally
during a <b class="cmd">fileevent</b> handler in discrete chunks. This can improve
the interactive nature of a GUI application and can help to avoid
excessive memory consumption.</p>
<dl class="definitions">
<dt><a name="2"><b class="cmd">::crc::Crc32Init</b> <span class="opt">?<i class="arg">seed</i>?</span></a></dt>
<dd><p>Begins a new CRC32 context. Returns a token ID that must be used for the
remaining functions. An optional seed may be specified if required.</p></dd>
<dt><a name="3"><b class="cmd">::crc::Crc32Update</b> <i class="arg">token</i> <i class="arg">data</i></a></dt>
<dd><p>Add data to the checksum identified by token. Calling
<em>Crc32Update $token &quot;abcd&quot;</em> is equivalent to calling
<em>Crc32Update $token &quot;ab&quot;</em> followed by
<em>Crc32Update $token &quot;cb&quot;</em>. See <span class="sectref"><a href="#section5">EXAMPLES</a></span>.</p></dd>
<dt><a name="4"><b class="cmd">::crc::Crc32Final</b> <i class="arg">token</i></a></dt>
<dd><p>Returns the checksum value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a 32 bit integer value.</p></dd>
</dl>
</div>
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
% crc::Crc32Final $tok
3964322768
</pre>
</div>
<div id="section6" class="section"><h2><a name="section6">AUTHORS</a></h2>
<p>Pat Thoyts</p>
</div>
<div id="section7" class="section"><h2><a name="section7">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>crc</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="cksum.html">cksum(n)</a>, <a href="crc16.html">crc16(n)</a>, <a href="sum.html">sum(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key157">checksum</a>, <a href="../../../../index.html#key158">cksum</a>, <a href="../../../../index.html#key154">crc</a>, <a href="../../../../index.html#key155">crc32</a>, <a href="../../../../index.html#key156">cyclic redundancy check</a>, <a href="../../../../index.html#key149">data integrity</a>, <a href="../../../../index.html#key148">security</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002, Pat Thoyts</p>
</div>
</div></body></html>







|



|







|








229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
% crc::Crc32Final $tok
3964322768
</pre>
</div>
<div id="section6" class="section"><h2><a name="section6">AUTHORS</a></h2>
<p>Pat Thoyts</p>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>crc</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="cksum.html">cksum(n)</a>, <a href="crc16.html">crc16(n)</a>, <a href="sum.html">sum(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key158">checksum</a>, <a href="../../../../index.html#key157">cksum</a>, <a href="../../../../index.html#key154">crc</a>, <a href="../../../../index.html#key155">crc32</a>, <a href="../../../../index.html#key156">cyclic redundancy check</a>, <a href="../../../../index.html#key150">data integrity</a>, <a href="../../../../index.html#key148">security</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002, Pat Thoyts</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/crc/sum.html.

116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">OPTIONS</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">AUTHORS</a></li>
<li class="section"><a href="#section6">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">OPTIONS</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">AUTHORS</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
% crc::sum -file sum.tcl
13392
</pre>
</div>
<div id="section5" class="section"><h2><a name="section5">AUTHORS</a></h2>
<p>Pat Thoyts</p>
</div>
<div id="section6" class="section"><h2><a name="section6">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>crc</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="cksum.html">cksum(n)</a>, <a href="crc32.html">crc32(n)</a>, sum(1)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key157">checksum</a>, <a href="../../../../index.html#key158">cksum</a>, <a href="../../../../index.html#key154">crc</a>, <a href="../../../../index.html#key155">crc32</a>, <a href="../../../../index.html#key156">cyclic redundancy check</a>, <a href="../../../../index.html#key149">data integrity</a>, <a href="../../../../index.html#key148">security</a>, <a href="../../../../index.html#key567">sum</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002, Pat Thoyts &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|







|








189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
% crc::sum -file sum.tcl
13392
</pre>
</div>
<div id="section5" class="section"><h2><a name="section5">AUTHORS</a></h2>
<p>Pat Thoyts</p>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>crc</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="cksum.html">cksum(n)</a>, <a href="crc32.html">crc32(n)</a>, sum(1)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key158">checksum</a>, <a href="../../../../index.html#key157">cksum</a>, <a href="../../../../index.html#key154">crc</a>, <a href="../../../../index.html#key155">crc32</a>, <a href="../../../../index.html#key156">cyclic redundancy check</a>, <a href="../../../../index.html#key150">data integrity</a>, <a href="../../../../index.html#key148">security</a>, <a href="../../../../index.html#key567">sum</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002, Pat Thoyts &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/csv/csv.html.

116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">FORMAT</a></li>
<li class="section"><a href="#section4">EXAMPLE</a></li>
<li class="section"><a href="#section5">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">FORMAT</a></li>
<li class="section"><a href="#section4">EXAMPLE</a></li>
<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
b) 123,521.2
c) Mary says &quot;Hello, I am Mary&quot;
d) (the empty string)
</pre>
<p>instead. As can be seen only item (d) is different, now the empty string
instead of a &quot;.</p>
</div>
<div id="section5" class="section"><h2><a name="section5">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>csv</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../../../../index.html#key55">matrix</a>, <a href="../../../../index.html#key54">queue</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>







|



|







295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
b) 123,521.2
c) Mary says &quot;Hello, I am Mary&quot;
d) (the empty string)
</pre>
<p>instead. As can be seen only item (d) is different, now the empty string
instead of a &quot;.</p>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>csv</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../../../../index.html#key55">matrix</a>, <a href="../../../../index.html#key54">queue</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>

Changes to embedded/www/tcllib/files/modules/debug/debug.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
<p>Note how this is tag-independent.</p>
<p>Further note that the trailer substitution happens only once
per actual printed message, i.e. all lines of the same message will
have the same actual trailing text.</p>
<p>The result of the method is the specified text.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>debug</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key72">debug</a>, <a href="../../../../index.html#key69">log</a>, <a href="../../../../index.html#key68">narrative</a>, <a href="../../../../index.html#key71">trace</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>debugging, tracing, and logging</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 200?, Colin McCormack, Wub Server Utilities<br>
Copyright &copy; 2012, Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|









269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
<p>Note how this is tag-independent.</p>
<p>Further note that the trailer substitution happens only once
per actual printed message, i.e. all lines of the same message will
have the same actual trailing text.</p>
<p>The result of the method is the specified text.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>debug</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key72">debug</a>, <a href="../../../../index.html#key69">log</a>, <a href="../../../../index.html#key68">narrative</a>, <a href="../../../../index.html#key70">trace</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>debugging, tracing, and logging</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 200?, Colin McCormack, Wub Server Utilities<br>
Copyright &copy; 2012, Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/debug/debug_caller.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
message, when only specific places need such detail.</p>
<p>Beyond that it contains code recognizing the various
internal forms of method calls generated by the <b class="package"><a href="../snit/snit.html">snit</a></b>
OO system and rewrites these to their original form, for
better readability.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>debug</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key72">debug</a>, <a href="../../../../index.html#key69">log</a>, <a href="../../../../index.html#key68">narrative</a>, <a href="../../../../index.html#key71">trace</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>debugging, tracing, and logging</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2012, Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
message, when only specific places need such detail.</p>
<p>Beyond that it contains code recognizing the various
internal forms of method calls generated by the <b class="package"><a href="../snit/snit.html">snit</a></b>
OO system and rewrites these to their original form, for
better readability.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>debug</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key72">debug</a>, <a href="../../../../index.html#key69">log</a>, <a href="../../../../index.html#key68">narrative</a>, <a href="../../../../index.html#key70">trace</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>debugging, tracing, and logging</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2012, Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/debug/debug_heartbeat.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
<p>A <i class="arg">delta</i>-value &lt;= 0 disables the heartbeat.</p>
<p>The message produced by the heartbeat contains a sequence
counter and the time in milliseconds since the last beat, thus
providing insight into timing variationsn and deviations from the
nominal <i class="arg">delta</i>.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>debug</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key72">debug</a>, <a href="../../../../index.html#key691">heartbeat</a>, <a href="../../../../index.html#key69">log</a>, <a href="../../../../index.html#key68">narrative</a>, <a href="../../../../index.html#key71">trace</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>debugging, tracing, and logging</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 200?, Colin McCormack, Wub Server Utilities<br>
Copyright &copy; 2012, Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|









147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
<p>A <i class="arg">delta</i>-value &lt;= 0 disables the heartbeat.</p>
<p>The message produced by the heartbeat contains a sequence
counter and the time in milliseconds since the last beat, thus
providing insight into timing variationsn and deviations from the
nominal <i class="arg">delta</i>.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>debug</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key72">debug</a>, <a href="../../../../index.html#key691">heartbeat</a>, <a href="../../../../index.html#key69">log</a>, <a href="../../../../index.html#key68">narrative</a>, <a href="../../../../index.html#key70">trace</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>debugging, tracing, and logging</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 200?, Colin McCormack, Wub Server Utilities<br>
Copyright &copy; 2012, Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/debug/debug_timestamp.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
<dt><a name="1"><b class="cmd"><a href="debug.html">debug</a></b> <b class="method">timestamp</b></a></dt>
<dd><p>This method returns millisecond timing information since a baseline or
last call, making it useful in a tag-specific prefix to automatically
provide caller information for all uses of the tag. Or in a message,
when only specific places need such detail.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>debug</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key72">debug</a>, <a href="../../../../index.html#key69">log</a>, <a href="../../../../index.html#key68">narrative</a>, <a href="../../../../index.html#key70">timestamps</a>, <a href="../../../../index.html#key71">trace</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>debugging, tracing, and logging</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 200?, Colin McCormack, Wub Server Utilities<br>
Copyright &copy; 2012, Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|









142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
<dt><a name="1"><b class="cmd"><a href="debug.html">debug</a></b> <b class="method">timestamp</b></a></dt>
<dd><p>This method returns millisecond timing information since a baseline or
last call, making it useful in a tag-specific prefix to automatically
provide caller information for all uses of the tag. Or in a message,
when only specific places need such detail.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>debug</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key72">debug</a>, <a href="../../../../index.html#key69">log</a>, <a href="../../../../index.html#key68">narrative</a>, <a href="../../../../index.html#key71">timestamps</a>, <a href="../../../../index.html#key70">trace</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>debugging, tracing, and logging</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 200?, Colin McCormack, Wub Server Utilities<br>
Copyright &copy; 2012, Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/des/des.html.

119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">PROGRAMMING INTERFACE</a></li>
<li class="section"><a href="#section4">MODES OF OPERATION</a></li>
<li class="section"><a href="#section5">EXAMPLES</a></li>
<li class="section"><a href="#section6">REFERENCES</a></li>
<li class="section"><a href="#section7">AUTHORS</a></li>
<li class="section"><a href="#section8">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">PROGRAMMING INTERFACE</a></li>
<li class="section"><a href="#section4">MODES OF OPERATION</a></li>
<li class="section"><a href="#section5">EXAMPLES</a></li>
<li class="section"><a href="#section6">REFERENCES</a></li>
<li class="section"><a href="#section7">AUTHORS</a></li>
<li class="section"><a href="#section8">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
Technology (NIST) [1]. This implementation also supports triple
DES (3DES) extension to DES. DES is a 64-bit block cipher that uses a
56-bit key. 3DES uses a 168-bit key. DES has now officially been
superceeded by AES but is in common use in many protocols.</p>
<p>The tcllib implementation of DES and 3DES uses an implementation by
Mac Cody and is available as a separate download from [2]. For
anyone concerned about the details of exporting this code please see
the TclDES web pages. The tcllib specific code is a wrapper to the 
TclDES API that presents same API for the DES cipher as for other
ciphers in the library.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::DES::des</b> <span class="opt">?<i class="arg">-mode [ecb|cbc|cfb|ofb]</i>?</span> <span class="opt">?<i class="arg">-dir [encrypt|decrypt]</i>?</span> <i class="arg">-key keydata</i> <span class="opt">?<i class="arg">-iv vector</i>?</span> <span class="opt">?<i class="arg">-hex</i>?</span> <span class="opt">?<i class="arg">-weak</i>?</span> <span class="opt">?<i class="arg">-out channel</i>?</span> <span class="opt">?<i class="arg">-chunksize size</i>?</span> [ <i class="arg">-in channel</i> | <i class="arg">data</i> ]</a></dt>
<dd><p>Perform the <b class="package"><a href="../../../../index.html#key632">DES</a></b> algorithm on either the data provided
by the argument or on the data read from the <i class="arg">-in</i> channel. If
an <i class="arg">-out</i> channel is given then the result will be written to
this channel.</p>
<p>The <i class="arg">-key</i> option must be given. This parameter takes a binary
string of 8 bytes in length and is used to generate the key schedule.
In DES only 56 bits of key data are used. The highest bit from each
byte is discarded.</p>
<p>The <i class="arg">-mode</i> and <i class="arg">-dir</i> options are optional and default to cbc
mode and encrypt respectively. The initialization vector <i class="arg">-iv</i>
takes an 8 byte binary argument. This defaults to all zeros. See 
<span class="sectref"><a href="#section4">MODES OF OPERATION</a></span> for more about <i class="arg">-mode</i> and the use
of the initialization vector.</p>
<p>DES is a 64-bit block cipher. This means that the data must be
provided in units that are a multiple of 8 bytes.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">PROGRAMMING INTERFACE</a></h2>







|
















|







152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
Technology (NIST) [1]. This implementation also supports triple
DES (3DES) extension to DES. DES is a 64-bit block cipher that uses a
56-bit key. 3DES uses a 168-bit key. DES has now officially been
superceeded by AES but is in common use in many protocols.</p>
<p>The tcllib implementation of DES and 3DES uses an implementation by
Mac Cody and is available as a separate download from [2]. For
anyone concerned about the details of exporting this code please see
the TclDES web pages. The tcllib specific code is a wrapper to the
TclDES API that presents same API for the DES cipher as for other
ciphers in the library.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::DES::des</b> <span class="opt">?<i class="arg">-mode [ecb|cbc|cfb|ofb]</i>?</span> <span class="opt">?<i class="arg">-dir [encrypt|decrypt]</i>?</span> <i class="arg">-key keydata</i> <span class="opt">?<i class="arg">-iv vector</i>?</span> <span class="opt">?<i class="arg">-hex</i>?</span> <span class="opt">?<i class="arg">-weak</i>?</span> <span class="opt">?<i class="arg">-out channel</i>?</span> <span class="opt">?<i class="arg">-chunksize size</i>?</span> [ <i class="arg">-in channel</i> | <i class="arg">data</i> ]</a></dt>
<dd><p>Perform the <b class="package"><a href="../../../../index.html#key632">DES</a></b> algorithm on either the data provided
by the argument or on the data read from the <i class="arg">-in</i> channel. If
an <i class="arg">-out</i> channel is given then the result will be written to
this channel.</p>
<p>The <i class="arg">-key</i> option must be given. This parameter takes a binary
string of 8 bytes in length and is used to generate the key schedule.
In DES only 56 bits of key data are used. The highest bit from each
byte is discarded.</p>
<p>The <i class="arg">-mode</i> and <i class="arg">-dir</i> options are optional and default to cbc
mode and encrypt respectively. The initialization vector <i class="arg">-iv</i>
takes an 8 byte binary argument. This defaults to all zeros. See
<span class="sectref"><a href="#section4">MODES OF OPERATION</a></span> for more about <i class="arg">-mode</i> and the use
of the initialization vector.</p>
<p>DES is a 64-bit block cipher. This means that the data must be
provided in units that are a multiple of 8 bytes.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">PROGRAMMING INTERFACE</a></h2>
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
    Federal Information Processing Standards Publication 46-3, 1999,
    (<a href="http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf">http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf</a>)</p></li>
<li><p>&quot;TclDES: munitions-grade Tcl scripting&quot;
    <a href="http://tcldes.sourceforge.net/">http://tcldes.sourceforge.net/</a></p></li>
</ol>
</div>
<div id="section7" class="section"><h2><a name="section7">AUTHORS</a></h2>
<p>Jochen C Loewer, 
Mac Cody,
Pat Thoyts</p>
</div>
<div id="section8" class="section"><h2><a name="section8">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>des</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../aes/aes.html">aes(n)</a>, <a href="../blowfish/blowfish.html">blowfish(n)</a>, <a href="../md5/md5.html">md5(n)</a>, <a href="../rc4/rc4.html">rc4(n)</a>, <a href="../sha1/sha1.html">sha1(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key634">3DES</a>, <a href="../../../../index.html#key632">DES</a>, <a href="../../../../index.html#key633">block cipher</a>, <a href="../../../../index.html#key149">data integrity</a>, <a href="../../../../index.html#key152">encryption</a>, <a href="../../../../index.html#key148">security</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005, Pat Thoyts &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|



|







|








264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
    Federal Information Processing Standards Publication 46-3, 1999,
    (<a href="http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf">http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf</a>)</p></li>
<li><p>&quot;TclDES: munitions-grade Tcl scripting&quot;
    <a href="http://tcldes.sourceforge.net/">http://tcldes.sourceforge.net/</a></p></li>
</ol>
</div>
<div id="section7" class="section"><h2><a name="section7">AUTHORS</a></h2>
<p>Jochen C Loewer,
Mac Cody,
Pat Thoyts</p>
</div>
<div id="section8" class="section"><h2><a name="section8">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>des</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../aes/aes.html">aes(n)</a>, <a href="../blowfish/blowfish.html">blowfish(n)</a>, <a href="../md5/md5.html">md5(n)</a>, <a href="../rc4/rc4.html">rc4(n)</a>, <a href="../sha1/sha1.html">sha1(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key634">3DES</a>, <a href="../../../../index.html#key632">DES</a>, <a href="../../../../index.html#key633">block cipher</a>, <a href="../../../../index.html#key150">data integrity</a>, <a href="../../../../index.html#key153">encryption</a>, <a href="../../../../index.html#key148">security</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005, Pat Thoyts &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/dns/tcllib_dns.html.

116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">REFERENCES</a></li>
<li class="section"><a href="#section5">AUTHORS</a></li>
<li class="section"><a href="#section6">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">REFERENCES</a></li>
<li class="section"><a href="#section5">AUTHORS</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
few other systems. This package is not a substitute for the C library
resolver - it does however implement name resolution over DNS.
The package also extends the package <b class="package"><a href="../uri/uri.html">uri</a></b> to support DNS URIs
(4) of the form <a href="dns:what.host.com">dns:what.host.com</a> or
<a href="dns://my.nameserver/what.host.com">dns://my.nameserver/what.host.com</a>. The <b class="cmd">dns::resolve</b>
command can handle DNS URIs or simple domain names as a query.</p>
<p><em>Note:</em> The package defaults to using DNS over TCP
connections. If you wish to use UDP you will need to have the 
<b class="package">tcludp</b> package installed and have a version that
correctly handles binary data (&gt; 1.0.4).
This is available at <a href="http://tcludp.sourceforge.net/">http://tcludp.sourceforge.net/</a>. 
If the <b class="package">udp</b> package is present then UDP will be used by default.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::dns::resolve</b> <i class="arg">query</i> <span class="opt">?<i class="arg">options</i>?</span></a></dt>
<dd><p>Resolve a domain name using the <i class="term"><a href="../../../../index.html#key579">DNS</a></i> protocol. <i class="arg">query</i> is
the domain name to be lookup up. This should be either a fully







|


|







161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
few other systems. This package is not a substitute for the C library
resolver - it does however implement name resolution over DNS.
The package also extends the package <b class="package"><a href="../uri/uri.html">uri</a></b> to support DNS URIs
(4) of the form <a href="dns:what.host.com">dns:what.host.com</a> or
<a href="dns://my.nameserver/what.host.com">dns://my.nameserver/what.host.com</a>. The <b class="cmd">dns::resolve</b>
command can handle DNS URIs or simple domain names as a query.</p>
<p><em>Note:</em> The package defaults to using DNS over TCP
connections. If you wish to use UDP you will need to have the
<b class="package">tcludp</b> package installed and have a version that
correctly handles binary data (&gt; 1.0.4).
This is available at <a href="http://tcludp.sourceforge.net/">http://tcludp.sourceforge.net/</a>.
If the <b class="package">udp</b> package is present then UDP will be used by default.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::dns::resolve</b> <i class="arg">query</i> <span class="opt">?<i class="arg">options</i>?</span></a></dt>
<dd><p>Resolve a domain name using the <i class="term"><a href="../../../../index.html#key579">DNS</a></i> protocol. <i class="arg">query</i> is
the domain name to be lookup up. This should be either a fully
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
<dd><p>Specify an alternative port.</p></dd>
<dt><b class="cmd">-search</b> <i class="arg">domainlist</i></dt>
<dd></dd>
<dt><b class="cmd">-timeout</b> <i class="arg">milliseconds</i></dt>
<dd><p>Override the default timeout.</p></dd>
<dt><b class="cmd">-type</b> <i class="arg">TYPE</i></dt>
<dd><p>Specify the type of DNS record you are interested in. Valid values
  are A, NS, MD, MF, CNAME, SOA, MB, MG, MR, NULL, WKS, PTR, HINFO, 
  MINFO, MX, TXT, SPF, SRV, AAAA, AXFR, MAILB, MAILA and *. 
  See RFC1035 for details about the return values.
  See <a href="http://spf.pobox.com/">http://spf.pobox.com/</a> about SPF.
  See (3) about AAAA records and RFC2782 for details of SRV records.</p></dd>
<dt><b class="cmd">-class</b> <i class="arg">CLASS</i></dt>
<dd><p>Specify the class of domain name. This is usually IN but may be one
  of IN for internet domain names, CS, CH, HS or * for any class.</p></dd>
<dt><b class="cmd">-recurse</b> <i class="arg">boolean</i></dt>
<dd><p>Set to <i class="arg">false</i> if you do not want the name server to recursively
  act upon your request. Normally set to <i class="arg">true</i>.</p></dd>
<dt><b class="cmd">-command</b> <i class="arg">procname</i></dt>
<dd><p>Set a procedure to be called upon request completion. The procedure 
  will be passed the token as its only argument.</p></dd>
</dl></dd>
<dt><a name="2"><b class="cmd">::dns::configure</b> <span class="opt">?<i class="arg">options</i>?</span></a></dt>
<dd><p>The <b class="cmd">::dns::configure</b> command is used to setup the dns
package. The server to query, the protocol and domain search path are
all set via this command. If no arguments are provided then a list of
all the current settings is returned.  If only one argument then it







|
|










|







187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
<dd><p>Specify an alternative port.</p></dd>
<dt><b class="cmd">-search</b> <i class="arg">domainlist</i></dt>
<dd></dd>
<dt><b class="cmd">-timeout</b> <i class="arg">milliseconds</i></dt>
<dd><p>Override the default timeout.</p></dd>
<dt><b class="cmd">-type</b> <i class="arg">TYPE</i></dt>
<dd><p>Specify the type of DNS record you are interested in. Valid values
  are A, NS, MD, MF, CNAME, SOA, MB, MG, MR, NULL, WKS, PTR, HINFO,
  MINFO, MX, TXT, SPF, SRV, AAAA, AXFR, MAILB, MAILA and *.
  See RFC1035 for details about the return values.
  See <a href="http://spf.pobox.com/">http://spf.pobox.com/</a> about SPF.
  See (3) about AAAA records and RFC2782 for details of SRV records.</p></dd>
<dt><b class="cmd">-class</b> <i class="arg">CLASS</i></dt>
<dd><p>Specify the class of domain name. This is usually IN but may be one
  of IN for internet domain names, CS, CH, HS or * for any class.</p></dd>
<dt><b class="cmd">-recurse</b> <i class="arg">boolean</i></dt>
<dd><p>Set to <i class="arg">false</i> if you do not want the name server to recursively
  act upon your request. Normally set to <i class="arg">true</i>.</p></dd>
<dt><b class="cmd">-command</b> <i class="arg">procname</i></dt>
<dd><p>Set a procedure to be called upon request completion. The procedure
  will be passed the token as its only argument.</p></dd>
</dl></dd>
<dt><a name="2"><b class="cmd">::dns::configure</b> <span class="opt">?<i class="arg">options</i>?</span></a></dt>
<dd><p>The <b class="cmd">::dns::configure</b> command is used to setup the dns
package. The server to query, the protocol and domain search path are
all set via this command. If no arguments are provided then a list of
all the current settings is returned.  If only one argument then it
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
    RFC 1995, August 1996,
    (<a href="http://www.ietf.org/rfc/rfc1995.txt">http://www.ietf.org/rfc/rfc1995.txt</a>)</p></li>
</ol>
</div>
<div id="section5" class="section"><h2><a name="section5">AUTHORS</a></h2>
<p>Pat Thoyts</p>
</div>
<div id="section6" class="section"><h2><a name="section6">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>dns</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>resolver(5)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key579">DNS</a>, <a href="../../../../index.html#key581">domain name service</a>, <a href="../../../../index.html#key582">resolver</a>, <a href="../../../../index.html#key583">rfc 1034</a>, <a href="../../../../index.html#key578">rfc 1035</a>, <a href="../../../../index.html#key580">rfc 1886</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002, Pat Thoyts</p>
</div>
</div></body></html>







|



|







|








308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
    RFC 1995, August 1996,
    (<a href="http://www.ietf.org/rfc/rfc1995.txt">http://www.ietf.org/rfc/rfc1995.txt</a>)</p></li>
</ol>
</div>
<div id="section5" class="section"><h2><a name="section5">AUTHORS</a></h2>
<p>Pat Thoyts</p>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>dns</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>resolver(5)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key579">DNS</a>, <a href="../../../../index.html#key582">domain name service</a>, <a href="../../../../index.html#key581">resolver</a>, <a href="../../../../index.html#key583">rfc 1034</a>, <a href="../../../../index.html#key578">rfc 1035</a>, <a href="../../../../index.html#key580">rfc 1886</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002, Pat Thoyts</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/dns/tcllib_ip.html.

116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">REFERENCES</a></li>
<li class="section"><a href="#section5">AUTHORS</a></li>
<li class="section"><a href="#section6">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">REFERENCES</a></li>
<li class="section"><a href="#section5">AUTHORS</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
<dd><p>Compare two address specifications for equivalence. The arguments are
normalized and the address prefix determined (if a mask is
supplied). The normalized addresses are then compared bit-by-bit and
the procedure returns true if they match.</p></dd>
<dt><a name="4"><b class="cmd">::ip::normalize</b> <i class="arg">address</i></a></dt>
<dd><p>Convert an IPv4 or IPv6 address into a fully expanded version. There
are various shorthand ways to write internet addresses, missing out
redundant parts or digts.. This procedure is the opposite of 
<b class="cmd">contract</b>.</p></dd>
<dt><a name="5"><b class="cmd">::ip::contract</b> <i class="arg">address</i></a></dt>
<dd><p>Convert a <b class="cmd">normalize</b>d internet address into a more compact form
suitable for displaying to users.</p></dd>
<dt><a name="6"><b class="cmd">::ip::prefix</b> <i class="arg">address</i></a></dt>
<dd><p>Returns the address prefix generated by masking the address part with
the mask if provided. If there is no mask then it is equivalent to







|







183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
<dd><p>Compare two address specifications for equivalence. The arguments are
normalized and the address prefix determined (if a mask is
supplied). The normalized addresses are then compared bit-by-bit and
the procedure returns true if they match.</p></dd>
<dt><a name="4"><b class="cmd">::ip::normalize</b> <i class="arg">address</i></a></dt>
<dd><p>Convert an IPv4 or IPv6 address into a fully expanded version. There
are various shorthand ways to write internet addresses, missing out
redundant parts or digts.. This procedure is the opposite of
<b class="cmd">contract</b>.</p></dd>
<dt><a name="5"><b class="cmd">::ip::contract</b> <i class="arg">address</i></a></dt>
<dd><p>Convert a <b class="cmd">normalize</b>d internet address into a more compact form
suitable for displaying to users.</p></dd>
<dt><a name="6"><b class="cmd">::ip::prefix</b> <i class="arg">address</i></a></dt>
<dd><p>Returns the address prefix generated by masking the address part with
the mask if provided. If there is no mask then it is equivalent to
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
    RFC 3513, April 2003
    (<a href="http://www.ietf.org/rfc/rfc3513.txt">http://www.ietf.org/rfc/rfc3513.txt</a>)</p></li>
</ol>
</div>
<div id="section5" class="section"><h2><a name="section5">AUTHORS</a></h2>
<p>Pat Thoyts</p>
</div>
<div id="section6" class="section"><h2><a name="section6">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>dns</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>inet(3), ip(7), ipv6(7)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>







|



|







434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
    RFC 3513, April 2003
    (<a href="http://www.ietf.org/rfc/rfc3513.txt">http://www.ietf.org/rfc/rfc3513.txt</a>)</p></li>
</ol>
</div>
<div id="section5" class="section"><h2><a name="section5">AUTHORS</a></h2>
<p>Pat Thoyts</p>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>dns</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>inet(3), ip(7), ipv6(7)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>

Changes to embedded/www/tcllib/files/modules/docstrip/docstrip.html.

448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
    trimmed away before the line is processed. Defaults to true.</p></dd>
</dl>
<p>It should be remarked that the <i class="arg">terminals</i> are often called
  &quot;options&quot; in the context of the <b class="syscmd">docstrip</b> program, since
  these specify which optional code fragments should be included.</p></dd>
<dt><a name="2"><b class="cmd">docstrip::sourcefrom</b> <i class="arg">filename</i> <i class="arg">terminals</i> <span class="opt">?<i class="arg">option</i> <i class="arg">value</i> ...?</span></a></dt>
<dd><p>The <b class="cmd">sourcefrom</b> command is a docstripping emulation of
  <b class="cmd"><a href="../../../../index.html#key412">source</a></b>. It opens the file <i class="arg">filename</i>, reads it, closes it,
  docstrips the contents as specified by the <i class="arg">terminals</i>, and
  evaluates the result in the local context of the caller, during
  which time the <b class="cmd"><a href="../../../../index.html#key90">info</a></b> <b class="method">script</b> value will be the
  <i class="arg">filename</i>. The options are passed on to <b class="cmd">fconfigure</b> to
  configure the file before its contents are read. The
  <b class="option">-metaprefix</b> is set to '#', all other <b class="cmd">extract</b>
  options have their default values.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Document structure</a></h2>







|


|







448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
    trimmed away before the line is processed. Defaults to true.</p></dd>
</dl>
<p>It should be remarked that the <i class="arg">terminals</i> are often called
  &quot;options&quot; in the context of the <b class="syscmd">docstrip</b> program, since
  these specify which optional code fragments should be included.</p></dd>
<dt><a name="2"><b class="cmd">docstrip::sourcefrom</b> <i class="arg">filename</i> <i class="arg">terminals</i> <span class="opt">?<i class="arg">option</i> <i class="arg">value</i> ...?</span></a></dt>
<dd><p>The <b class="cmd">sourcefrom</b> command is a docstripping emulation of
  <b class="cmd"><a href="../../../../index.html#key411">source</a></b>. It opens the file <i class="arg">filename</i>, reads it, closes it,
  docstrips the contents as specified by the <i class="arg">terminals</i>, and
  evaluates the result in the local context of the caller, during
  which time the <b class="cmd"><a href="../../../../index.html#key91">info</a></b> <b class="method">script</b> value will be the
  <i class="arg">filename</i>. The options are passed on to <b class="cmd">fconfigure</b> to
  configure the file before its contents are read. The
  <b class="option">-metaprefix</b> is set to '#', all other <b class="cmd">extract</b>
  options have their default values.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Document structure</a></h2>
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
files containing Tcl code. More information on this matter can be
found in the references above.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="docstrip_util.html">docstrip_util</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key413">.dtx</a>, <a href="../../../../index.html#key414">LaTeX</a>, <a href="../../../../index.html#key410">docstrip</a>, <a href="../../../../index.html#key185">documentation</a>, <a href="../../../../index.html#key411">literate programming</a>, <a href="../../../../index.html#key412">source</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003–2010 Lars Hellstr&ouml;m &lt;Lars dot Hellstrom at residenset dot net&gt;</p>
</div>
</div></body></html>







|








512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
files containing Tcl code. More information on this matter can be
found in the references above.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="docstrip_util.html">docstrip_util</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key414">.dtx</a>, <a href="../../../../index.html#key413">LaTeX</a>, <a href="../../../../index.html#key410">docstrip</a>, <a href="../../../../index.html#key185">documentation</a>, <a href="../../../../index.html#key412">literate programming</a>, <a href="../../../../index.html#key411">source</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003–2010 Lars Hellstr&ouml;m &lt;Lars dot Hellstrom at residenset dot net&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/docstrip/docstrip_util.html.

148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>The <b class="package">docstrip::util</b> package is meant for collecting various
utility procedures that are mainly useful at installation or
development time. It is separate from the base package to avoid
overhead when the latter is used to <b class="cmd"><a href="../../../../index.html#key412">source</a></b> code.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Package indexing commands</a></h2>
<p>Like raw &quot;<b class="file">.tcl</b>&quot; files, code lines in docstrip source files can
be searched for package declarations and corresponding indices
constructed. A complication is however that one cannot tell from the
code blocks themselves which will fit together to make a working
package; normally that information would be found in an accompanying







|







148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>The <b class="package">docstrip::util</b> package is meant for collecting various
utility procedures that are mainly useful at installation or
development time. It is separate from the base package to avoid
overhead when the latter is used to <b class="cmd"><a href="../../../../index.html#key411">source</a></b> code.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Package indexing commands</a></h2>
<p>Like raw &quot;<b class="file">.tcl</b>&quot; files, code lines in docstrip source files can
be searched for package declarations and corresponding indices
constructed. A complication is however that one cannot tell from the
code blocks themselves which will fit together to make a working
package; normally that information would be found in an accompanying
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
    to false, in which case there is no particular return value.</p></dd>
<dt><b class="option">-reportcmd</b> <i class="arg">commandPrefix</i></dt>
<dd><p>Every item in the report is handed as an extra argument to the
    command prefix. Since <b class="cmd">index_from_catalogue</b> would typically
    be used at a rather high level in installation scripts and the
    like, the <i class="arg">commandPrefix</i> defaults to
    &quot;<b class="cmd">puts</b> <b class="const">stdout</b>&quot;.
    Use <b class="cmd"><a href="../../../../index.html#key278">list</a></b> to effectively disable this feature. The return
    values from the prefix are ignored.</p></dd>
</dl>
<p>The <b class="cmd">package ifneeded</b> scripts that are generated contain
  one <b class="cmd">package require docstrip</b> command and one
  <b class="cmd">docstrip::sourcefrom</b> command. If the catalogue entry was
  of the <b class="cmd">pkgProvide</b> kind then the <b class="cmd">package ifneeded</b>
  script also contains the <b class="cmd">package provide</b> command.</p>







|







303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
    to false, in which case there is no particular return value.</p></dd>
<dt><b class="option">-reportcmd</b> <i class="arg">commandPrefix</i></dt>
<dd><p>Every item in the report is handed as an extra argument to the
    command prefix. Since <b class="cmd">index_from_catalogue</b> would typically
    be used at a rather high level in installation scripts and the
    like, the <i class="arg">commandPrefix</i> defaults to
    &quot;<b class="cmd">puts</b> <b class="const">stdout</b>&quot;.
    Use <b class="cmd"><a href="../../../../index.html#key280">list</a></b> to effectively disable this feature. The return
    values from the prefix are ignored.</p></dd>
</dl>
<p>The <b class="cmd">package ifneeded</b> scripts that are generated contain
  one <b class="cmd">package require docstrip</b> command and one
  <b class="cmd">docstrip::sourcefrom</b> command. If the catalogue entry was
  of the <b class="cmd">pkgProvide</b> kind then the <b class="cmd">package ifneeded</b>
  script also contains the <b class="cmd">package provide</b> command.</p>
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
    with a <i class="arg">metaprefix</i> of '##'.</p></dd>
<dt><b class="option">-report</b> <i class="arg">boolean</i></dt>
<dd><p>If the <i class="arg">boolean</i> is true (which is the default) then the return
    value will be a textual, probably multiline, report on what was
    done. If it is false then there is no particular return value.</p></dd>
<dt><b class="option">-reportcmd</b> <i class="arg">commandPrefix</i></dt>
<dd><p>Every item in the report is handed as an extra argument to this
    command prefix. Defaults to <b class="cmd"><a href="../../../../index.html#key278">list</a></b>, which effectively disables
    this feature. The return values from the prefix are ignored. Use
    for example &quot;<b class="cmd">puts</b> <b class="const">stdout</b>&quot; to get report items
    written immediately to the terminal.</p></dd>
</dl>
<p>An existing file of the same name as one to be created will be
  overwritten.</p></dd>
<dt><a name="6"><b class="cmd">docstrip::util::classical_preamble</b> <i class="arg">metaprefix</i> <i class="arg">message</i> <i class="arg">target</i> <span class="opt">?<i class="arg">source</i> <i class="arg">terminals</i> ...?</span></a></dt>







|







372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
    with a <i class="arg">metaprefix</i> of '##'.</p></dd>
<dt><b class="option">-report</b> <i class="arg">boolean</i></dt>
<dd><p>If the <i class="arg">boolean</i> is true (which is the default) then the return
    value will be a textual, probably multiline, report on what was
    done. If it is false then there is no particular return value.</p></dd>
<dt><b class="option">-reportcmd</b> <i class="arg">commandPrefix</i></dt>
<dd><p>Every item in the report is handed as an extra argument to this
    command prefix. Defaults to <b class="cmd"><a href="../../../../index.html#key280">list</a></b>, which effectively disables
    this feature. The return values from the prefix are ignored. Use
    for example &quot;<b class="cmd">puts</b> <b class="const">stdout</b>&quot; to get report items
    written immediately to the terminal.</p></dd>
</dl>
<p>An existing file of the same name as one to be created will be
  overwritten.</p></dd>
<dt><a name="6"><b class="cmd">docstrip::util::classical_preamble</b> <i class="arg">metaprefix</i> <i class="arg">message</i> <i class="arg">target</i> <span class="opt">?<i class="arg">source</i> <i class="arg">terminals</i> ...?</span></a></dt>
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
  name of a package <b class="cmd">provide</b>d by <i class="arg">text</i> when that is
  evaluated as a Tcl script, and the following odd index element is
  the corresponding version. It is used to do package indexing of
  extracted pieces of code, in the manner of <b class="cmd">pkg_mkIndex</b>.</p>
<p>One difference to <b class="cmd">pkg_mkIndex</b> is that the <i class="arg">text</i> gets
  evaluated in a safe interpreter. <b class="cmd">package require</b> commands
  are silently ignored, as are unknown commands (which includes
  <b class="cmd"><a href="../../../../index.html#key412">source</a></b> and <b class="cmd">load</b>). Other errors cause
  processing of the <i class="arg">text</i> to stop, in which case only those
  package declarations that had been encountered before the error
  will be included in the return value.</p>
<p>The <i class="arg">setup-script</i> argument can be used to customise the
  evaluation environment, if the code in <i class="arg">text</i> has some very
  special needs. The <i class="arg">setup-script</i> is evaluated in the local
  context of the <b class="cmd">packages_provided</b> procedure just before the







|







429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
  name of a package <b class="cmd">provide</b>d by <i class="arg">text</i> when that is
  evaluated as a Tcl script, and the following odd index element is
  the corresponding version. It is used to do package indexing of
  extracted pieces of code, in the manner of <b class="cmd">pkg_mkIndex</b>.</p>
<p>One difference to <b class="cmd">pkg_mkIndex</b> is that the <i class="arg">text</i> gets
  evaluated in a safe interpreter. <b class="cmd">package require</b> commands
  are silently ignored, as are unknown commands (which includes
  <b class="cmd"><a href="../../../../index.html#key411">source</a></b> and <b class="cmd">load</b>). Other errors cause
  processing of the <i class="arg">text</i> to stop, in which case only those
  package declarations that had been encountered before the error
  will be included in the return value.</p>
<p>The <i class="arg">setup-script</i> argument can be used to customise the
  evaluation environment, if the code in <i class="arg">text</i> has some very
  special needs. The <i class="arg">setup-script</i> is evaluated in the local
  context of the <b class="cmd">packages_provided</b> procedure just before the
484
485
486
487
488
489
490















491
492
493
494
495
496
497
    <b class="cmd">emph</b>asised.</p></dd>
</dl>
<p>At the time of writing, no project has employed <b class="package"><a href="../doctools/doctools.html">doctools</a></b>
  markup in master source files, so experience of what works well is
  not available. A source file could however look as follows</p>
<pre class="example">
% [manpage_begin gcd n 1.0]















% [moddesc {Greatest Common Divisor}]
% [require gcd [opt 1.0]]
% [description]
%
% [list_begin definitions]
% [call [cmd gcd] [arg a] [arg b]]
%   The [cmd gcd] procedure takes two arguments [arg a] and [arg b] which







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
    <b class="cmd">emph</b>asised.</p></dd>
</dl>
<p>At the time of writing, no project has employed <b class="package"><a href="../doctools/doctools.html">doctools</a></b>
  markup in master source files, so experience of what works well is
  not available. A source file could however look as follows</p>
<pre class="example">
% [manpage_begin gcd n 1.0]
[see_also docstrip]
[see_also doctools]
[see_also doctools_fmt]
[keywords .ddt]
[keywords catalogue]
[keywords diff]
[keywords docstrip]
[keywords doctools]
[keywords documentation]
[keywords {literate programming}]
[keywords module]
[keywords {package indexing}]
[keywords patch]
[keywords source]
[keywords {Tcl module}]
% [moddesc {Greatest Common Divisor}]
% [require gcd [opt 1.0]]
% [description]
%
% [list_begin definitions]
% [call [cmd gcd] [arg a] [arg b]]
%   The [cmd gcd] procedure takes two arguments [arg a] and [arg b] which
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
  in both.</p></dd>
</dl>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="docstrip.html">docstrip</a>, <a href="../doctools/doctools.html">doctools</a>, doctools_fmt</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key649">.ddt</a>, <a href="../../../../index.html#key646">Tcl module</a>, <a href="../../../../index.html#key648">catalogue</a>, <a href="../../../../index.html#key542">diff</a>, <a href="../../../../index.html#key410">docstrip</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key185">documentation</a>, <a href="../../../../index.html#key411">literate programming</a>, <a href="../../../../index.html#key650">module</a>, <a href="../../../../index.html#key647">package indexing</a>, <a href="../../../../index.html#key645">patch</a>, <a href="../../../../index.html#key412">source</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003–2010 Lars Hellstr&ouml;m &lt;Lars dot Hellstrom at residenset dot net&gt;</p>
</div>
</div></body></html>







|








680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
  in both.</p></dd>
</dl>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="docstrip.html">docstrip</a>, <a href="../doctools/doctools.html">doctools</a>, doctools_fmt</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key649">.ddt</a>, <a href="../../../../index.html#key646">Tcl module</a>, <a href="../../../../index.html#key648">catalogue</a>, <a href="../../../../index.html#key542">diff</a>, <a href="../../../../index.html#key410">docstrip</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key185">documentation</a>, <a href="../../../../index.html#key412">literate programming</a>, <a href="../../../../index.html#key650">module</a>, <a href="../../../../index.html#key647">package indexing</a>, <a href="../../../../index.html#key645">patch</a>, <a href="../../../../index.html#key411">source</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003–2010 Lars Hellstr&ouml;m &lt;Lars dot Hellstrom at residenset dot net&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools/changelog.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
<dd><p>Each argument of the command is assumed to be a pre-parsed Changelog
as generated by the command <b class="cmd">::doctools::changelog::scan</b>. This
command merges all of them into a single structure, and collapses
multiple entries for the same date and author into a single entry. The
new structure is returned as the result of the command.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key429">changelog</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key430">emacs</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003-2013 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
<dd><p>Each argument of the command is assumed to be a pre-parsed Changelog
as generated by the command <b class="cmd">::doctools::changelog::scan</b>. This
command merges all of them into a single structure, and collapses
multiple entries for the same date and author into a single entry. The
new structure is returned as the result of the command.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key429">changelog</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key430">emacs</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003-2013 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools/cvs.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
arguments of the command <b class="cmd">::doctools::cvs::scanLog</b>. This command
however expects them to be filled with information about one or more
logs. It takes this information and converts it into a text in the
format of a ChangeLog as accepted and generated by <b class="syscmd"><a href="../../../../index.html#key430">emacs</a></b>. The
constructed text is returned as the result of the command.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="http://wiki.tcl.tk/log2changelog">http://wiki.tcl.tk/log2changelog</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key429">changelog</a>, <a href="../../../../index.html#key754">cvs</a>, <a href="../../../../index.html#key755">cvs log</a>, <a href="../../../../index.html#key430">emacs</a>, <a href="../../../../index.html#key69">log</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003-2008 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|











184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
arguments of the command <b class="cmd">::doctools::cvs::scanLog</b>. This command
however expects them to be filled with information about one or more
logs. It takes this information and converts it into a text in the
format of a ChangeLog as accepted and generated by <b class="syscmd"><a href="../../../../index.html#key430">emacs</a></b>. The
constructed text is returned as the result of the command.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>[uri, http://wiki.tcl.tk/log2changelog</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key429">changelog</a>, <a href="../../../../index.html#key754">cvs</a>, <a href="../../../../index.html#key755">cvs log</a>, <a href="../../../../index.html#key430">emacs</a>, <a href="../../../../index.html#key69">log</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003-2008 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools/docidx.html.

123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<li class="subsection"><a href="#subsection2">OBJECT COMMAND</a></li>
<li class="subsection"><a href="#subsection3">OBJECT METHODS</a></li>
<li class="subsection"><a href="#subsection4">OBJECT CONFIGURATION</a></li>
<li class="subsection"><a href="#subsection5">FORMAT MAPPING</a></li>
</ul>
</li>
<li class="section"><a href="#section3">PREDEFINED ENGINES</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<li class="subsection"><a href="#subsection2">OBJECT COMMAND</a></li>
<li class="subsection"><a href="#subsection3">OBJECT METHODS</a></li>
<li class="subsection"><a href="#subsection4">OBJECT CONFIGURATION</a></li>
<li class="subsection"><a href="#subsection5">FORMAT MAPPING</a></li>
</ul>
</li>
<li class="section"><a href="#section3">PREDEFINED ENGINES</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
this package and its plugins, i.e. the formatting engines, in detail.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">PUBLIC API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">PACKAGE COMMANDS</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::doctools::idx::new</b> <i class="arg">objectName</i> <span class="opt">?<b class="option">-option</b> <i class="arg">value</i> ...?</span></a></dt>
<dd><p>This command creates a new docidx object with an associated Tcl
command whose name is <i class="arg">objectName</i>. This <i class="term"><a href="../../../../index.html#key238">object</a></i> command is
explained in full detail in the sections <span class="sectref"><a href="#subsection2">OBJECT COMMAND</a></span>
and <span class="sectref"><a href="#subsection3">OBJECT METHODS</a></span>. The object command will be created
under the current namespace if the <i class="arg">objectName</i> is not fully
qualified, and in the specified namespace otherwise.</p>
<p>The options and their values coming after the name of the object are
used to set the initial configuration of the object.</p></dd>
<dt><a name="2"><b class="cmd">::doctools::idx::help</b></a></dt>







|







175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
this package and its plugins, i.e. the formatting engines, in detail.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">PUBLIC API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">PACKAGE COMMANDS</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::doctools::idx::new</b> <i class="arg">objectName</i> <span class="opt">?<b class="option">-option</b> <i class="arg">value</i> ...?</span></a></dt>
<dd><p>This command creates a new docidx object with an associated Tcl
command whose name is <i class="arg">objectName</i>. This <i class="term"><a href="../../../../index.html#key237">object</a></i> command is
explained in full detail in the sections <span class="sectref"><a href="#subsection2">OBJECT COMMAND</a></span>
and <span class="sectref"><a href="#subsection3">OBJECT METHODS</a></span>. The object command will be created
under the current namespace if the <i class="arg">objectName</i> is not fully
qualified, and in the specified namespace otherwise.</p>
<p>The options and their values coming after the name of the object are
used to set the initial configuration of the object.</p></dd>
<dt><a name="2"><b class="cmd">::doctools::idx::help</b></a></dt>
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
<dd><p>This engine generates TMML markup as specified by Joe English. The Tcl
Manpage Markup Language is a derivate of XML.</p></dd>
<dt>wiki</dt>
<dd><p>This engine generates Wiki markup as understood by Jean Claude
Wippler's <b class="syscmd">wikit</b> application.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="docidx_intro.html">docidx_intro</a>, <a href="docidx_lang_cmdref.html">docidx_lang_cmdref</a>, <a href="docidx_lang_intro.html">docidx_lang_intro</a>, <a href="docidx_lang_syntax.html">docidx_lang_syntax</a>, <a href="docidx_plugin_apiref.html">docidx_plugin_apiref</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key17">HTML</a>, <a href="../../../../index.html#key20">TMML</a>, <a href="../../../../index.html#key19">conversion</a>, <a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key185">documentation</a>, <a href="../../../../index.html#key182">index</a>, <a href="../../../../index.html#key184">keyword index</a>, <a href="../../../../index.html#key186">latex</a>, <a href="../../../../index.html#key18">manpage</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key21">nroff</a>, <a href="../../../../index.html#key183">wiki</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003-2010 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|







|








389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
<dd><p>This engine generates TMML markup as specified by Joe English. The Tcl
Manpage Markup Language is a derivate of XML.</p></dd>
<dt>wiki</dt>
<dd><p>This engine generates Wiki markup as understood by Jean Claude
Wippler's <b class="syscmd">wikit</b> application.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="docidx_intro.html">docidx_intro</a>, <a href="docidx_lang_cmdref.html">docidx_lang_cmdref</a>, <a href="docidx_lang_intro.html">docidx_lang_intro</a>, <a href="docidx_lang_syntax.html">docidx_lang_syntax</a>, <a href="docidx_plugin_apiref.html">docidx_plugin_apiref</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key18">HTML</a>, <a href="../../../../index.html#key19">TMML</a>, <a href="../../../../index.html#key20">conversion</a>, <a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key185">documentation</a>, <a href="../../../../index.html#key182">index</a>, <a href="../../../../index.html#key184">keyword index</a>, <a href="../../../../index.html#key186">latex</a>, <a href="../../../../index.html#key17">manpage</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key21">nroff</a>, <a href="../../../../index.html#key183">wiki</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003-2010 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools/docidx_intro.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>docidx_intro - docidx introduction</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">RELATED FORMATS</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>docidx_intro - docidx introduction</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">RELATED FORMATS</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
172
173
174
175
176
177
178
179

180
181
182
183

184
185
186
187
188
189
190
called <i class="term"><a href="../../../../index.html#key246">doctoc</a></i> and <i class="term"><a href="../../../../index.html#key51">doctools</a></i>, and they are for the markup
of <i class="term">tables of contents</i>, and general documentation,
respectively.
They are described in their own sets of documents, starting at the
<i class="term"><a href="doctoc_intro.html">doctoc introduction</a></i> and the <i class="term"><a href="doctools_intro.html">doctools introduction</a></i>,
respectively.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>

<p>This document, will undoubtedly contain bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have.</p>

</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="docidx_lang_cmdref.html">docidx_lang_cmdref</a>, <a href="docidx_lang_faq.html">docidx_lang_faq</a>, <a href="docidx_lang_intro.html">docidx_lang_intro</a>, <a href="docidx_lang_syntax.html">docidx_lang_syntax</a>, <a href="docidx_plugin_apiref.html">docidx_plugin_apiref</a>, <a href="doctoc_intro.html">doctoc_intro</a>, <a href="../doctools2idx/container.html">doctools::idx</a>, <a href="doctools_intro.html">doctools_intro</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key182">index</a>, <a href="../../../../index.html#key184">keyword index</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>







|
>
|

|
|
>







172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
called <i class="term"><a href="../../../../index.html#key246">doctoc</a></i> and <i class="term"><a href="../../../../index.html#key51">doctools</a></i>, and they are for the markup
of <i class="term">tables of contents</i>, and general documentation,
respectively.
They are described in their own sets of documents, starting at the
<i class="term"><a href="doctoc_intro.html">doctoc introduction</a></i> and the <i class="term"><a href="doctools_intro.html">doctools introduction</a></i>,
respectively.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="docidx_lang_cmdref.html">docidx_lang_cmdref</a>, <a href="docidx_lang_faq.html">docidx_lang_faq</a>, <a href="docidx_lang_intro.html">docidx_lang_intro</a>, <a href="docidx_lang_syntax.html">docidx_lang_syntax</a>, <a href="docidx_plugin_apiref.html">docidx_plugin_apiref</a>, <a href="doctoc_intro.html">doctoc_intro</a>, <a href="../doctools2idx/container.html">doctools::idx</a>, <a href="doctools_intro.html">doctools_intro</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key182">index</a>, <a href="../../../../index.html#key184">keyword index</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>

Changes to embedded/www/tcllib/files/modules/doctools/docidx_lang_cmdref.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Commands</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="syntax">
<li><a href="#1"><b class="cmd"><a href="../../../../index.html#key163">comment</a></b> <i class="arg">plaintext</i></a></li>
<li><a href="#2"><b class="cmd">include</b> <i class="arg">filename</i></a></li>
<li><a href="#3"><b class="cmd">index_begin</b> <i class="arg">text</i> <i class="arg">title</i></a></li>
<li><a href="#4"><b class="cmd">index_end</b></a></li>
<li><a href="#5"><b class="cmd">key</b> <i class="arg">text</i></a></li>
<li><a href="#6"><b class="cmd">lb</b></a></li>
<li><a href="#7"><b class="cmd"><a href="../../../../index.html#key18">manpage</a></b> <i class="arg">file</i> <i class="arg">text</i></a></li>
<li><a href="#8"><b class="cmd">rb</b></a></li>
<li><a href="#9"><b class="cmd"><a href="../../../../index.html#key508">url</a></b> <i class="arg">url</i> <i class="arg">label</i></a></li>
<li><a href="#10"><b class="cmd">vset</b> <i class="arg">varname</i> <i class="arg">value</i></a></li>
<li><a href="#11"><b class="cmd">vset</b> <i class="arg">varname</i></a></li>
</ul>
</div>
</div>







|















|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Commands</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="syntax">
<li><a href="#1"><b class="cmd"><a href="../../../../index.html#key163">comment</a></b> <i class="arg">plaintext</i></a></li>
<li><a href="#2"><b class="cmd">include</b> <i class="arg">filename</i></a></li>
<li><a href="#3"><b class="cmd">index_begin</b> <i class="arg">text</i> <i class="arg">title</i></a></li>
<li><a href="#4"><b class="cmd">index_end</b></a></li>
<li><a href="#5"><b class="cmd">key</b> <i class="arg">text</i></a></li>
<li><a href="#6"><b class="cmd">lb</b></a></li>
<li><a href="#7"><b class="cmd"><a href="../../../../index.html#key17">manpage</a></b> <i class="arg">file</i> <i class="arg">text</i></a></li>
<li><a href="#8"><b class="cmd">rb</b></a></li>
<li><a href="#9"><b class="cmd"><a href="../../../../index.html#key508">url</a></b> <i class="arg">url</i> <i class="arg">label</i></a></li>
<li><a href="#10"><b class="cmd">vset</b> <i class="arg">varname</i> <i class="arg">value</i></a></li>
<li><a href="#11"><b class="cmd">vset</b> <i class="arg">varname</i></a></li>
</ul>
</div>
</div>
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
<dd><p>Index structure. This command adds the keyword <i class="arg">text</i> to the
index.</p></dd>
<dt><a name="6"><b class="cmd">lb</b></a></dt>
<dd><p>Text. The command is replaced with a left bracket. Use in free-form
text. Required to avoid interpretation of a left bracket as the start
of a markup command. Its usage is restricted to the arguments of other
markup commands.</p></dd>
<dt><a name="7"><b class="cmd"><a href="../../../../index.html#key18">manpage</a></b> <i class="arg">file</i> <i class="arg">text</i></a></dt>
<dd><p>Index structure. This command adds an element to the index which
refers to a document. The document is specified through the symbolic
name <i class="arg">file</i>. The <i class="arg">text</i> argument is used to label the
reference.</p>
<p>Symbolic names are used to preserve the convertibility of this format
to any output format. The actual name of the file will be inserted by
the chosen formatting engine when converting the input. This will be







|







175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
<dd><p>Index structure. This command adds the keyword <i class="arg">text</i> to the
index.</p></dd>
<dt><a name="6"><b class="cmd">lb</b></a></dt>
<dd><p>Text. The command is replaced with a left bracket. Use in free-form
text. Required to avoid interpretation of a left bracket as the start
of a markup command. Its usage is restricted to the arguments of other
markup commands.</p></dd>
<dt><a name="7"><b class="cmd"><a href="../../../../index.html#key17">manpage</a></b> <i class="arg">file</i> <i class="arg">text</i></a></dt>
<dd><p>Index structure. This command adds an element to the index which
refers to a document. The document is specified through the symbolic
name <i class="arg">file</i>. The <i class="arg">text</i> argument is used to label the
reference.</p>
<p>Symbolic names are used to preserve the convertibility of this format
to any output format. The actual name of the file will be inserted by
the chosen formatting engine when converting the input. This will be
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
to the specified <i class="arg">value</i>. It does not generate output. I.e. the
command is replaced by the empty string.</p></dd>
<dt><a name="11"><b class="cmd">vset</b> <i class="arg">varname</i></a></dt>
<dd><p>Templating. In this form the command is replaced by the value of the
named document variable</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="docidx_intro.html">docidx_intro</a>, <a href="docidx_lang_faq.html">docidx_lang_faq</a>, <a href="docidx_lang_intro.html">docidx_lang_intro</a>, <a href="docidx_lang_syntax.html">docidx_lang_syntax</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key349">docidx commands</a>, <a href="../../../../index.html#key351">docidx language</a>, <a href="../../../../index.html#key352">docidx markup</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|







|








203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
to the specified <i class="arg">value</i>. It does not generate output. I.e. the
command is replaced by the empty string.</p></dd>
<dt><a name="11"><b class="cmd">vset</b> <i class="arg">varname</i></a></dt>
<dd><p>Templating. In this form the command is replaced by the value of the
named document variable</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="docidx_intro.html">docidx_intro</a>, <a href="docidx_lang_faq.html">docidx_lang_faq</a>, <a href="docidx_lang_intro.html">docidx_lang_intro</a>, <a href="docidx_lang_syntax.html">docidx_lang_syntax</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key349">docidx commands</a>, <a href="../../../../index.html#key353">docidx language</a>, <a href="../../../../index.html#key352">docidx markup</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools/docidx_lang_faq.html.

122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167

168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
</ul>
</li>
<li class="section"><a href="#section3">EXAMPLES</a>
<ul>
<li class="subsection"><a href="#subsection2">Where do I find docidx examples?</a></li>
</ul>
</li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
</div>
<div id="section2" class="section"><h2><a name="section2">OVERVIEW</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">What is this document?</a></h3>
<p>This document is currently mainly a placeholder, to be filled with
commonly asked questions about the docidx markup language and
companions, and their answers.</p>
<p>Please report any questions (and, if possible, answers) we should
consider for this document in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.</p>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">EXAMPLES</a></h2>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Where do I find docidx examples?</a></h3>
<p>We have no direct examples of documents written using docidx
markup. However the doctools processor <b class="syscmd"><a href="../dtplite/dtplite.html">dtplite</a></b> does generate
keyword indices when processing a set of documents written in doctools
markup. The intermediate files use docidx markup and are not deleted
when generation completes. These files can therefore serve as
examples.</p>
<p><b class="syscmd"><a href="../dtplite/dtplite.html">dtplite</a></b> is distributed as part of Tcllib, so to get it you
need one of</p>
<ol class="enumerated">
<li><p>A CVS snapshot of Tcllib. How to retrieve such a snapshot and the
tools required for this are described at
<a href="http://sourceforge.net/cvs/?group_id=12883">http://sourceforge.net/cvs/?group_id=12883</a></p></li>
<li><p>A Tcllib release archive. They are available at
<a href="http://sourceforge.net/project/showfiles.php?group_id=12883">http://sourceforge.net/project/showfiles.php?group_id=12883</a></p></li>
</ol>
</div>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>

<p>This document, will undoubtedly contain bugs and other problems.
Please report any such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
the package and/or the documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="docidx_lang_cmdref.html">docidx_lang_cmdref</a>, <a href="docidx_lang_intro.html">docidx_lang_intro</a>, <a href="docidx_lang_syntax.html">docidx_lang_syntax</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key349">docidx commands</a>, <a href="../../../../index.html#key351">docidx language</a>, <a href="../../../../index.html#key352">docidx markup</a>, <a href="../../../../index.html#key350">docidx syntax</a>, <a href="../../../../index.html#key353">examples</a>, <a href="../../../../index.html#key348">faq</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>







|











|
|

|
|






|
|
|
|



|

|
|
|



|
>
|
|
|

|





|







122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
</ul>
</li>
<li class="section"><a href="#section3">EXAMPLES</a>
<ul>
<li class="subsection"><a href="#subsection2">Where do I find docidx examples?</a></li>
</ul>
</li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
</div>
<div id="section2" class="section"><h2><a name="section2">OVERVIEW</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">What is this document?</a></h3>
<p>This document is currently mainly a placeholder, to be filled with
commonly asked questions about the docidx markup language
and companions, and their answers.</p>
<p>Please report any questions (and, if possible, answers) we should
consider for this document as explained in the section
<span class="sectref"><a href="#section4">Bugs, Ideas, Feedback</a></span> below.</p>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">EXAMPLES</a></h2>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Where do I find docidx examples?</a></h3>
<p>We have no direct examples of documents written using docidx
markup. However the doctools processor <b class="syscmd"><a href="../dtplite/dtplite.html">dtplite</a></b> does generate
a table of contents when processing a set of documents written in
doctools markup. The intermediate file for it uses docidx
markup and is not deleted when generation completes. Such files can
therefore serve as examples.</p>
<p><b class="syscmd"><a href="../dtplite/dtplite.html">dtplite</a></b> is distributed as part of Tcllib, so to get it you
need one of</p>
<ol class="enumerated">
<li><p>A snapshot of Tcllib. How to retrieve such a snapshot and the
tools required for this are described at
<a href="/wiki?name=Development+Snapshots">Development Snapshots</a></p></li>
<li><p>A Tcllib release archive. They are available at the <a href="/home">home</a>
page.</p></li>
</ol>
</div>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="docidx_lang_cmdref.html">docidx_lang_cmdref</a>, <a href="docidx_lang_intro.html">docidx_lang_intro</a>, <a href="docidx_lang_syntax.html">docidx_lang_syntax</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key349">docidx commands</a>, <a href="../../../../index.html#key353">docidx language</a>, <a href="../../../../index.html#key352">docidx markup</a>, <a href="../../../../index.html#key350">docidx syntax</a>, <a href="../../../../index.html#key351">examples</a>, <a href="../../../../index.html#key348">faq</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>

Changes to embedded/www/tcllib/files/modules/doctools/docidx_lang_intro.html.

120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<li class="subsection"><a href="#subsection1">Fundamentals</a></li>
<li class="subsection"><a href="#subsection2">Basic structure</a></li>
<li class="subsection"><a href="#subsection3">Advanced structure</a></li>
<li class="subsection"><a href="#subsection4">Escapes</a></li>
</ul>
</li>
<li class="section"><a href="#section2">FURTHER READING</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>







|







120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<li class="subsection"><a href="#subsection1">Fundamentals</a></li>
<li class="subsection"><a href="#subsection2">Basic structure</a></li>
<li class="subsection"><a href="#subsection3">Advanced structure</a></li>
<li class="subsection"><a href="#subsection4">Escapes</a></li>
</ul>
</li>
<li class="section"><a href="#section2">FURTHER READING</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
[<b class="cmd">manpage yencode</b>]
[key ydecode]
[<b class="cmd">manpage yencode</b>]
[key yencode]
[<b class="cmd">manpage yencode</b>]
[index_end]
</pre>
<p>In the above example the command <b class="cmd"><a href="../../../../index.html#key18">manpage</a></b> is used to insert
references to documents, using symbolic file names, with each command
belonging to the last <b class="cmd">key</b> command coming before it.</p>
<p>The other command to insert references is <b class="cmd"><a href="../../../../index.html#key508">url</a></b>. In contrast to
<b class="cmd"><a href="../../../../index.html#key18">manpage</a></b> it uses explicit (possibly format-specific) urls to
describe the location of the referenced document. As such this command
is intended for the creation of references to external documents which
could not be handled in any other way.</p>
</div>
<div id="subsection3" class="subsection"><h3><a name="subsection3">Advanced structure</a></h3>
<p>In all previous examples we fudged a bit regarding the markup actually
allowed to be used before the <b class="cmd">index_begin</b> command opening the







|



|







195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
[<b class="cmd">manpage yencode</b>]
[key ydecode]
[<b class="cmd">manpage yencode</b>]
[key yencode]
[<b class="cmd">manpage yencode</b>]
[index_end]
</pre>
<p>In the above example the command <b class="cmd"><a href="../../../../index.html#key17">manpage</a></b> is used to insert
references to documents, using symbolic file names, with each command
belonging to the last <b class="cmd">key</b> command coming before it.</p>
<p>The other command to insert references is <b class="cmd"><a href="../../../../index.html#key508">url</a></b>. In contrast to
<b class="cmd"><a href="../../../../index.html#key17">manpage</a></b> it uses explicit (possibly format-specific) urls to
describe the location of the referenced document. As such this command
is intended for the creation of references to external documents which
could not be handled in any other way.</p>
</div>
<div id="subsection3" class="subsection"><h3><a name="subsection3">Advanced structure</a></h3>
<p>In all previous examples we fudged a bit regarding the markup actually
allowed to be used before the <b class="cmd">index_begin</b> command opening the
270
271
272
273
274
275
276
277

278
279
280
281

282
283
284
285
286
287
288
289
290
291
292
293
294
295
<b class="syscmd">dtp</b>.</p>
<p>On the other hand, docidx is perfectly suited for the automatic
generation from doctools documents, and this is the route Tcllib's
easy and simple <b class="syscmd"><a href="../dtplite/dtplite.html">dtplite</a></b> goes, creating an index for a set of
documents behind the scenes, without the writer having to do so on
their own.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>

<p>This document, will undoubtedly contain bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have.</p>

</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="docidx_intro.html">docidx_intro</a>, <a href="docidx_lang_cmdref.html">docidx_lang_cmdref</a>, <a href="docidx_lang_syntax.html">docidx_lang_syntax</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key349">docidx commands</a>, <a href="../../../../index.html#key351">docidx language</a>, <a href="../../../../index.html#key352">docidx markup</a>, <a href="../../../../index.html#key350">docidx syntax</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007-2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|
>
|

|
|
>





|








270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
<b class="syscmd">dtp</b>.</p>
<p>On the other hand, docidx is perfectly suited for the automatic
generation from doctools documents, and this is the route Tcllib's
easy and simple <b class="syscmd"><a href="../dtplite/dtplite.html">dtplite</a></b> goes, creating an index for a set of
documents behind the scenes, without the writer having to do so on
their own.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="docidx_intro.html">docidx_intro</a>, <a href="docidx_lang_cmdref.html">docidx_lang_cmdref</a>, <a href="docidx_lang_syntax.html">docidx_lang_syntax</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key349">docidx commands</a>, <a href="../../../../index.html#key353">docidx language</a>, <a href="../../../../index.html#key352">docidx markup</a>, <a href="../../../../index.html#key350">docidx syntax</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007-2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools/docidx_lang_syntax.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Fundamentals</a></li>
<li class="section"><a href="#section3">Lexical definitions</a></li>
<li class="section"><a href="#section4">Syntax</a></li>
<li class="section"><a href="#section5">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Fundamentals</a></li>
<li class="section"><a href="#section3">Lexical definitions</a></li>
<li class="section"><a href="#section4">Syntax</a></li>
<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197

198
199
200
201

202
203
204
205
206
207
208
209
210
211
212
213
214
215
<li><p>The construct [ X ] stands for zero or one occurrence of X.</p></li>
</ol>
<p>The syntax:</p>
<pre class="example">
index     = defs
            INDEX_BEGIN
            [ contents ]
            INDEX_END  
            { &lt;WHITE&gt; }
defs      = { INCLUDE | VSET | &lt;WHITE&gt; }
contents  = keyword { keyword }
keyword   = defs KEY ref { ref }
ref       = MANPAGE | URL | defs
</pre>
<p>At last a rule we were unable to capture in the EBNF syntax, as it is
about the arguments of the markup commands, something which is not
modeled here.</p>
<ol class="enumerated">
<li><p>The arguments of all markup commands have to be plain text, and/or text
markup commands, i.e. one of</p>
<ol class="enumerated">
<li><p><b class="cmd">lb</b>,</p></li>
<li><p><b class="cmd">rb</b>, or</p></li>
<li><p><b class="cmd">vset</b> (1-argument form).</p></li>
</ol>
</li>
</ol>
</div>
<div id="section5" class="section"><h2><a name="section5">BUGS, IDEAS, FEEDBACK</a></h2>

<p>This document, will undoubtedly contain bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have.</p>

</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="docidx_intro.html">docidx_intro</a>, <a href="docidx_lang_cmdref.html">docidx_lang_cmdref</a>, <a href="docidx_lang_faq.html">docidx_lang_faq</a>, <a href="docidx_lang_intro.html">docidx_lang_intro</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key349">docidx commands</a>, <a href="../../../../index.html#key351">docidx language</a>, <a href="../../../../index.html#key352">docidx markup</a>, <a href="../../../../index.html#key350">docidx syntax</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007-2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|




















|
>
|

|
|
>





|








169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
<li><p>The construct [ X ] stands for zero or one occurrence of X.</p></li>
</ol>
<p>The syntax:</p>
<pre class="example">
index     = defs
            INDEX_BEGIN
            [ contents ]
            INDEX_END
            { &lt;WHITE&gt; }
defs      = { INCLUDE | VSET | &lt;WHITE&gt; }
contents  = keyword { keyword }
keyword   = defs KEY ref { ref }
ref       = MANPAGE | URL | defs
</pre>
<p>At last a rule we were unable to capture in the EBNF syntax, as it is
about the arguments of the markup commands, something which is not
modeled here.</p>
<ol class="enumerated">
<li><p>The arguments of all markup commands have to be plain text, and/or text
markup commands, i.e. one of</p>
<ol class="enumerated">
<li><p><b class="cmd">lb</b>,</p></li>
<li><p><b class="cmd">rb</b>, or</p></li>
<li><p><b class="cmd">vset</b> (1-argument form).</p></li>
</ol>
</li>
</ol>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="docidx_intro.html">docidx_intro</a>, <a href="docidx_lang_cmdref.html">docidx_lang_cmdref</a>, <a href="docidx_lang_faq.html">docidx_lang_faq</a>, <a href="docidx_lang_intro.html">docidx_lang_intro</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key349">docidx commands</a>, <a href="../../../../index.html#key353">docidx language</a>, <a href="../../../../index.html#key352">docidx markup</a>, <a href="../../../../index.html#key350">docidx syntax</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007-2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools/docidx_plugin_apiref.html.

121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<li class="section"><a href="#section3">FRONTEND COMMANDS</a></li>
<li class="section"><a href="#section4">PLUGIN COMMANDS</a>
<ul>
<li class="subsection"><a href="#subsection1">Management commands</a></li>
<li class="subsection"><a href="#subsection2">Formatting commands</a></li>
</ul>
</li>
<li class="section"><a href="#section5">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<li class="section"><a href="#section3">FRONTEND COMMANDS</a></li>
<li class="section"><a href="#section4">PLUGIN COMMANDS</a>
<ul>
<li class="subsection"><a href="#subsection1">Management commands</a></li>
<li class="subsection"><a href="#subsection2">Formatting commands</a></li>
</ul>
</li>
<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
419
420
421
422
423
424
425
426

427
428
429
430

431
432
433
434
435
436
437
438
439
440
441
442
443
444
plain text.</p>
<p>The formatted text is expected as the result of the command,
and added to the output. If no special processing is required it has
to simply return its argument without change.</p></dd>
</dl>
</div>
</div>
<div id="section5" class="section"><h2><a name="section5">BUGS, IDEAS, FEEDBACK</a></h2>

<p>This document, will undoubtedly contain bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have.</p>

</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="docidx_intro.html">docidx_intro</a>, <a href="docidx_lang_cmdref.html">docidx_lang_cmdref</a>, <a href="docidx_lang_faq.html">docidx_lang_faq</a>, <a href="docidx_lang_intro.html">docidx_lang_intro</a>, <a href="docidx_lang_syntax.html">docidx_lang_syntax</a>, <a href="../doctools2idx/container.html">doctools::idx</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key641">formatting engine</a>, <a href="../../../../index.html#key182">index</a>, <a href="../../../../index.html#key760">index formatter</a>, <a href="../../../../index.html#key761">keywords</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|
>
|

|
|
>





|








419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
plain text.</p>
<p>The formatted text is expected as the result of the command,
and added to the output. If no special processing is required it has
to simply return its argument without change.</p></dd>
</dl>
</div>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="docidx_intro.html">docidx_intro</a>, <a href="docidx_lang_cmdref.html">docidx_lang_cmdref</a>, <a href="docidx_lang_faq.html">docidx_lang_faq</a>, <a href="docidx_lang_intro.html">docidx_lang_intro</a>, <a href="docidx_lang_syntax.html">docidx_lang_syntax</a>, <a href="../doctools2idx/container.html">doctools::idx</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key641">formatting engine</a>, <a href="../../../../index.html#key182">index</a>, <a href="../../../../index.html#key761">index formatter</a>, <a href="../../../../index.html#key760">keywords</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools/doctoc.html.

123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<li class="subsection"><a href="#subsection2">OBJECT COMMAND</a></li>
<li class="subsection"><a href="#subsection3">OBJECT METHODS</a></li>
<li class="subsection"><a href="#subsection4">OBJECT CONFIGURATION</a></li>
<li class="subsection"><a href="#subsection5">FORMAT MAPPING</a></li>
</ul>
</li>
<li class="section"><a href="#section3">PREDEFINED ENGINES</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<li class="subsection"><a href="#subsection2">OBJECT COMMAND</a></li>
<li class="subsection"><a href="#subsection3">OBJECT METHODS</a></li>
<li class="subsection"><a href="#subsection4">OBJECT CONFIGURATION</a></li>
<li class="subsection"><a href="#subsection5">FORMAT MAPPING</a></li>
</ul>
</li>
<li class="section"><a href="#section3">PREDEFINED ENGINES</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
this package and its plugins, i.e. the formatting engines, in detail.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">PUBLIC API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">PACKAGE COMMANDS</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::doctools::toc::new</b> <i class="arg">objectName</i> <span class="opt">?<b class="option">-option</b> <i class="arg">value</i> ...?</span></a></dt>
<dd><p>This command creates a new doctoc object with an associated Tcl
command whose name is <i class="arg">objectName</i>. This <i class="term"><a href="../../../../index.html#key238">object</a></i> command is
explained in full detail in the sections <span class="sectref"><a href="#subsection2">OBJECT COMMAND</a></span>
and <span class="sectref"><a href="#subsection3">OBJECT METHODS</a></span>. The object command will be created
under the current namespace if the <i class="arg">objectName</i> is not fully
qualified, and in the specified namespace otherwise.</p>
<p>The options and their values coming after the name of the object are
used to set the initial configuration of the object.</p></dd>
<dt><a name="2"><b class="cmd">::doctools::toc::help</b></a></dt>







|







175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
this package and its plugins, i.e. the formatting engines, in detail.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">PUBLIC API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">PACKAGE COMMANDS</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::doctools::toc::new</b> <i class="arg">objectName</i> <span class="opt">?<b class="option">-option</b> <i class="arg">value</i> ...?</span></a></dt>
<dd><p>This command creates a new doctoc object with an associated Tcl
command whose name is <i class="arg">objectName</i>. This <i class="term"><a href="../../../../index.html#key237">object</a></i> command is
explained in full detail in the sections <span class="sectref"><a href="#subsection2">OBJECT COMMAND</a></span>
and <span class="sectref"><a href="#subsection3">OBJECT METHODS</a></span>. The object command will be created
under the current namespace if the <i class="arg">objectName</i> is not fully
qualified, and in the specified namespace otherwise.</p>
<p>The options and their values coming after the name of the object are
used to set the initial configuration of the object.</p></dd>
<dt><a name="2"><b class="cmd">::doctools::toc::help</b></a></dt>
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
<dd><p>This engine generates TMML markup as specified by Joe English. The Tcl
Manpage Markup Language is a derivate of XML.</p></dd>
<dt>wiki</dt>
<dd><p>This engine generates Wiki markup as understood by Jean Claude
Wippler's <b class="syscmd">wikit</b> application.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="doctoc_intro.html">doctoc_intro</a>, <a href="doctoc_lang_cmdref.html">doctoc_lang_cmdref</a>, <a href="doctoc_lang_intro.html">doctoc_lang_intro</a>, <a href="doctoc_lang_syntax.html">doctoc_lang_syntax</a>, <a href="doctoc_plugin_apiref.html">doctoc_plugin_apiref</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key17">HTML</a>, <a href="../../../../index.html#key20">TMML</a>, <a href="../../../../index.html#key19">conversion</a>, <a href="../../../../index.html#key246">doctoc</a>, <a href="../../../../index.html#key185">documentation</a>, <a href="../../../../index.html#key186">latex</a>, <a href="../../../../index.html#key18">manpage</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key21">nroff</a>, <a href="../../../../index.html#key167">table of contents</a>, <a href="../../../../index.html#key166">toc</a>, <a href="../../../../index.html#key183">wiki</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003-2010 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|







|








389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
<dd><p>This engine generates TMML markup as specified by Joe English. The Tcl
Manpage Markup Language is a derivate of XML.</p></dd>
<dt>wiki</dt>
<dd><p>This engine generates Wiki markup as understood by Jean Claude
Wippler's <b class="syscmd">wikit</b> application.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="doctoc_intro.html">doctoc_intro</a>, <a href="doctoc_lang_cmdref.html">doctoc_lang_cmdref</a>, <a href="doctoc_lang_intro.html">doctoc_lang_intro</a>, <a href="doctoc_lang_syntax.html">doctoc_lang_syntax</a>, <a href="doctoc_plugin_apiref.html">doctoc_plugin_apiref</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key18">HTML</a>, <a href="../../../../index.html#key19">TMML</a>, <a href="../../../../index.html#key20">conversion</a>, <a href="../../../../index.html#key246">doctoc</a>, <a href="../../../../index.html#key185">documentation</a>, <a href="../../../../index.html#key186">latex</a>, <a href="../../../../index.html#key17">manpage</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key21">nroff</a>, <a href="../../../../index.html#key167">table of contents</a>, <a href="../../../../index.html#key166">toc</a>, <a href="../../../../index.html#key183">wiki</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003-2010 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools/doctoc_intro.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>doctoc_intro - doctoc introduction</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">RELATED FORMATS</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>doctoc_intro - doctoc introduction</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">RELATED FORMATS</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
171
172
173
174
175
176
177
178

179
180
181
182

183
184
185
186
187
188
189
<p>doctoc does not stand alone, it has two companion formats. These are
called <i class="term"><a href="../../../../index.html#key50">docidx</a></i> and <i class="term"><a href="../../../../index.html#key51">doctools</a></i>, and they are for the markup
of <i class="term">keyword indices</i>, and general documentation, respectively.
They are described in their own sets of documents, starting at the
<i class="term"><a href="docidx_intro.html">docidx introduction</a></i> and the <i class="term"><a href="doctools_intro.html">doctools introduction</a></i>,
respectively.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>

<p>This document, will undoubtedly contain bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have.</p>

</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="docidx_intro.html">docidx_intro</a>, <a href="doctoc_lang_cmdref.html">doctoc_lang_cmdref</a>, <a href="doctoc_lang_faq.html">doctoc_lang_faq</a>, <a href="doctoc_lang_intro.html">doctoc_lang_intro</a>, <a href="doctoc_lang_syntax.html">doctoc_lang_syntax</a>, <a href="doctoc_plugin_apiref.html">doctoc_plugin_apiref</a>, <a href="../doctools2toc/container.html">doctools::toc</a>, <a href="doctools_intro.html">doctools_intro</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a>, <a href="../../../../index.html#key167">table of contents</a>, <a href="../../../../index.html#key166">toc</a></p>
</div>







|
>
|

|
|
>







171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
<p>doctoc does not stand alone, it has two companion formats. These are
called <i class="term"><a href="../../../../index.html#key50">docidx</a></i> and <i class="term"><a href="../../../../index.html#key51">doctools</a></i>, and they are for the markup
of <i class="term">keyword indices</i>, and general documentation, respectively.
They are described in their own sets of documents, starting at the
<i class="term"><a href="docidx_intro.html">docidx introduction</a></i> and the <i class="term"><a href="doctools_intro.html">doctools introduction</a></i>,
respectively.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="docidx_intro.html">docidx_intro</a>, <a href="doctoc_lang_cmdref.html">doctoc_lang_cmdref</a>, <a href="doctoc_lang_faq.html">doctoc_lang_faq</a>, <a href="doctoc_lang_intro.html">doctoc_lang_intro</a>, <a href="doctoc_lang_syntax.html">doctoc_lang_syntax</a>, <a href="doctoc_plugin_apiref.html">doctoc_plugin_apiref</a>, <a href="../doctools2toc/container.html">doctools::toc</a>, <a href="doctools_intro.html">doctools_intro</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a>, <a href="../../../../index.html#key167">table of contents</a>, <a href="../../../../index.html#key166">toc</a></p>
</div>

Changes to embedded/www/tcllib/files/modules/doctools/doctoc_lang_cmdref.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Commands</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Commands</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
to the specified <i class="arg">value</i>. It does not generate output. I.e. the
command is replaced by the empty string.</p></dd>
<dt><a name="11"><b class="cmd">vset</b> <i class="arg">varname</i></a></dt>
<dd><p>Templating. In this form the command is replaced by the value of the
named document variable</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="doctoc_intro.html">doctoc_intro</a>, <a href="doctoc_lang_faq.html">doctoc_lang_faq</a>, <a href="doctoc_lang_intro.html">doctoc_lang_intro</a>, <a href="doctoc_lang_syntax.html">doctoc_lang_syntax</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key490">doctoc commands</a>, <a href="../../../../index.html#key488">doctoc language</a>, <a href="../../../../index.html#key489">doctoc markup</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|







|








208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
to the specified <i class="arg">value</i>. It does not generate output. I.e. the
command is replaced by the empty string.</p></dd>
<dt><a name="11"><b class="cmd">vset</b> <i class="arg">varname</i></a></dt>
<dd><p>Templating. In this form the command is replaced by the value of the
named document variable</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="doctoc_intro.html">doctoc_intro</a>, <a href="doctoc_lang_faq.html">doctoc_lang_faq</a>, <a href="doctoc_lang_intro.html">doctoc_lang_intro</a>, <a href="doctoc_lang_syntax.html">doctoc_lang_syntax</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key490">doctoc commands</a>, <a href="../../../../index.html#key489">doctoc language</a>, <a href="../../../../index.html#key488">doctoc markup</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools/doctoc_lang_faq.html.

122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167

168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
</ul>
</li>
<li class="section"><a href="#section3">EXAMPLES</a>
<ul>
<li class="subsection"><a href="#subsection2">Where do I find doctoc examples?</a></li>
</ul>
</li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
</div>
<div id="section2" class="section"><h2><a name="section2">OVERVIEW</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">What is this document?</a></h3>
<p>This document is currently mainly a placeholder, to be filled with
commonly asked questions about the doctoc markup language and
companions, and their answers.</p>
<p>Please report any questions (and, if possible, answers) we should
consider for this document in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.</p>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">EXAMPLES</a></h2>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Where do I find doctoc examples?</a></h3>
<p>We have no direct examples of documents written using doctoc
markup. However the doctools processor <b class="syscmd"><a href="../dtplite/dtplite.html">dtplite</a></b> does generate
a table of contents when processing a set of documents written in
doctools markup. The intermediate file for it uses doctoc markup and
is not deleted when generation completes. Such files can therefore
serve as examples.</p>
<p><b class="syscmd"><a href="../dtplite/dtplite.html">dtplite</a></b> is distributed as part of Tcllib, so to get it you
need one of</p>
<ol class="enumerated">
<li><p>A CVS snapshot of Tcllib. How to retrieve such a snapshot and the
tools required for this are described at
<a href="http://sourceforge.net/cvs/?group_id=12883">http://sourceforge.net/cvs/?group_id=12883</a></p></li>
<li><p>A Tcllib release archive. They are available at
<a href="http://sourceforge.net/project/showfiles.php?group_id=12883">http://sourceforge.net/project/showfiles.php?group_id=12883</a></p></li>
</ol>
</div>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>

<p>This document, will undoubtedly contain bugs and other problems.
Please report any such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
the package and/or the documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="doctoc_lang_cmdref.html">doctoc_lang_cmdref</a>, <a href="doctoc_lang_intro.html">doctoc_lang_intro</a>, <a href="doctoc_lang_syntax.html">doctoc_lang_syntax</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key490">doctoc commands</a>, <a href="../../../../index.html#key488">doctoc language</a>, <a href="../../../../index.html#key489">doctoc markup</a>, <a href="../../../../index.html#key524">doctoc syntax</a>, <a href="../../../../index.html#key353">examples</a>, <a href="../../../../index.html#key348">faq</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>







|











|
|

|
|







|
|
|



|

|
|
|



|
>
|
|
|

|





|







122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
</ul>
</li>
<li class="section"><a href="#section3">EXAMPLES</a>
<ul>
<li class="subsection"><a href="#subsection2">Where do I find doctoc examples?</a></li>
</ul>
</li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
</div>
<div id="section2" class="section"><h2><a name="section2">OVERVIEW</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">What is this document?</a></h3>
<p>This document is currently mainly a placeholder, to be filled with
commonly asked questions about the doctoc markup language
and companions, and their answers.</p>
<p>Please report any questions (and, if possible, answers) we should
consider for this document as explained in the section
<span class="sectref"><a href="#section4">Bugs, Ideas, Feedback</a></span> below.</p>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">EXAMPLES</a></h2>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Where do I find doctoc examples?</a></h3>
<p>We have no direct examples of documents written using doctoc
markup. However the doctools processor <b class="syscmd"><a href="../dtplite/dtplite.html">dtplite</a></b> does generate
a table of contents when processing a set of documents written in
doctools markup. The intermediate file for it uses doctoc
markup and is not deleted when generation completes. Such files can
therefore serve as examples.</p>
<p><b class="syscmd"><a href="../dtplite/dtplite.html">dtplite</a></b> is distributed as part of Tcllib, so to get it you
need one of</p>
<ol class="enumerated">
<li><p>A snapshot of Tcllib. How to retrieve such a snapshot and the
tools required for this are described at
<a href="/wiki?name=Development+Snapshots">Development Snapshots</a></p></li>
<li><p>A Tcllib release archive. They are available at the <a href="/home">home</a>
page.</p></li>
</ol>
</div>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="doctoc_lang_cmdref.html">doctoc_lang_cmdref</a>, <a href="doctoc_lang_intro.html">doctoc_lang_intro</a>, <a href="doctoc_lang_syntax.html">doctoc_lang_syntax</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key490">doctoc commands</a>, <a href="../../../../index.html#key489">doctoc language</a>, <a href="../../../../index.html#key488">doctoc markup</a>, <a href="../../../../index.html#key524">doctoc syntax</a>, <a href="../../../../index.html#key351">examples</a>, <a href="../../../../index.html#key348">faq</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>

Changes to embedded/www/tcllib/files/modules/doctools/doctoc_lang_intro.html.

122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<li class="subsection"><a href="#subsection3">Items</a></li>
<li class="subsection"><a href="#subsection4">Divisions</a></li>
<li class="subsection"><a href="#subsection5">Advanced structure</a></li>
<li class="subsection"><a href="#subsection6">Escapes</a></li>
</ul>
</li>
<li class="section"><a href="#section2">FURTHER READING</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>







|







122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<li class="subsection"><a href="#subsection3">Items</a></li>
<li class="subsection"><a href="#subsection4">Divisions</a></li>
<li class="subsection"><a href="#subsection5">Advanced structure</a></li>
<li class="subsection"><a href="#subsection6">Escapes</a></li>
</ul>
</li>
<li class="section"><a href="#section2">FURTHER READING</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
335
336
337
338
339
340
341
342

343
344
345
346

347
348
349
350
351
352
353
354
355
356
357
358
359
360
<b class="syscmd">dtp</b>.</p>
<p>On the other hand, doctoc is perfectly suited for the automatic
generation from doctools documents, and this is the route Tcllib's
easy and simple <b class="syscmd"><a href="../dtplite/dtplite.html">dtplite</a></b> goes, creating a table of contents
for a set of documents behind the scenes, without the writer having to
do so on their own.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>

<p>This document, will undoubtedly contain bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have.</p>

</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="doctoc_intro.html">doctoc_intro</a>, <a href="doctoc_lang_cmdref.html">doctoc_lang_cmdref</a>, <a href="doctoc_lang_syntax.html">doctoc_lang_syntax</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key490">doctoc commands</a>, <a href="../../../../index.html#key488">doctoc language</a>, <a href="../../../../index.html#key489">doctoc markup</a>, <a href="../../../../index.html#key524">doctoc syntax</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|
>
|

|
|
>





|








335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
<b class="syscmd">dtp</b>.</p>
<p>On the other hand, doctoc is perfectly suited for the automatic
generation from doctools documents, and this is the route Tcllib's
easy and simple <b class="syscmd"><a href="../dtplite/dtplite.html">dtplite</a></b> goes, creating a table of contents
for a set of documents behind the scenes, without the writer having to
do so on their own.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="doctoc_intro.html">doctoc_intro</a>, <a href="doctoc_lang_cmdref.html">doctoc_lang_cmdref</a>, <a href="doctoc_lang_syntax.html">doctoc_lang_syntax</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key490">doctoc commands</a>, <a href="../../../../index.html#key489">doctoc language</a>, <a href="../../../../index.html#key488">doctoc markup</a>, <a href="../../../../index.html#key524">doctoc syntax</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools/doctoc_lang_syntax.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Fundamentals</a></li>
<li class="section"><a href="#section3">Lexical definitions</a></li>
<li class="section"><a href="#section4">Syntax</a></li>
<li class="section"><a href="#section5">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Fundamentals</a></li>
<li class="section"><a href="#section3">Lexical definitions</a></li>
<li class="section"><a href="#section4">Syntax</a></li>
<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186

187
188
189
190

191
192
193
194
195
196
197
198
199
200
201
202
203
204
<li><p>The construct [ X ] stands for zero or one occurrence of X.</p></li>
</ol>
<p>The syntax:</p>
<pre class="example">
toc       = defs
            TOC_BEGIN
            contents
            TOC_END  
            { &lt;WHITE&gt; }
defs      = { INCLUDE | VSET | &lt;WHITE&gt; }
contents  = { defs entry } [ defs ]
entry     = ITEM | division
division  = DIVISION_START
            contents
            DIVISION_END
</pre>
</div>
<div id="section5" class="section"><h2><a name="section5">BUGS, IDEAS, FEEDBACK</a></h2>

<p>This document, will undoubtedly contain bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have.</p>

</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="doctoc_intro.html">doctoc_intro</a>, <a href="doctoc_lang_cmdref.html">doctoc_lang_cmdref</a>, <a href="doctoc_lang_faq.html">doctoc_lang_faq</a>, <a href="doctoc_lang_intro.html">doctoc_lang_intro</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key490">doctoc commands</a>, <a href="../../../../index.html#key488">doctoc language</a>, <a href="../../../../index.html#key489">doctoc markup</a>, <a href="../../../../index.html#key524">doctoc syntax</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007-2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|









|
>
|

|
|
>





|








169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
<li><p>The construct [ X ] stands for zero or one occurrence of X.</p></li>
</ol>
<p>The syntax:</p>
<pre class="example">
toc       = defs
            TOC_BEGIN
            contents
            TOC_END
            { &lt;WHITE&gt; }
defs      = { INCLUDE | VSET | &lt;WHITE&gt; }
contents  = { defs entry } [ defs ]
entry     = ITEM | division
division  = DIVISION_START
            contents
            DIVISION_END
</pre>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="doctoc_intro.html">doctoc_intro</a>, <a href="doctoc_lang_cmdref.html">doctoc_lang_cmdref</a>, <a href="doctoc_lang_faq.html">doctoc_lang_faq</a>, <a href="doctoc_lang_intro.html">doctoc_lang_intro</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key490">doctoc commands</a>, <a href="../../../../index.html#key489">doctoc language</a>, <a href="../../../../index.html#key488">doctoc markup</a>, <a href="../../../../index.html#key524">doctoc syntax</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007-2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools/doctoc_plugin_apiref.html.

121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<li class="section"><a href="#section3">FRONTEND COMMANDS</a></li>
<li class="section"><a href="#section4">PLUGIN COMMANDS</a>
<ul>
<li class="subsection"><a href="#subsection1">Management commands</a></li>
<li class="subsection"><a href="#subsection2">Formatting commands</a></li>
</ul>
</li>
<li class="section"><a href="#section5">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<li class="section"><a href="#section3">FRONTEND COMMANDS</a></li>
<li class="section"><a href="#section4">PLUGIN COMMANDS</a>
<ul>
<li class="subsection"><a href="#subsection1">Management commands</a></li>
<li class="subsection"><a href="#subsection2">Formatting commands</a></li>
</ul>
</li>
<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
419
420
421
422
423
424
425
426

427
428
429
430

431
432
433
434
435
436
437
plain text.</p>
<p>The formatted text is expected as the result of the command,
and added to the output. If no special processing is required it has
to simply return its argument without change.</p></dd>
</dl>
</div>
</div>
<div id="section5" class="section"><h2><a name="section5">BUGS, IDEAS, FEEDBACK</a></h2>

<p>This document, will undoubtedly contain bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have.</p>

</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="doctoc_intro.html">doctoc_intro</a>, <a href="doctoc_lang_cmdref.html">doctoc_lang_cmdref</a>, <a href="doctoc_lang_faq.html">doctoc_lang_faq</a>, <a href="doctoc_lang_intro.html">doctoc_lang_intro</a>, <a href="doctoc_lang_syntax.html">doctoc_lang_syntax</a>, <a href="../doctools2toc/container.html">doctools::toc</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key641">formatting engine</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key143">semantic markup</a>, <a href="../../../../index.html#key167">table of contents</a>, <a href="../../../../index.html#key166">toc</a>, <a href="../../../../index.html#key701">toc formatter</a></p>
</div>







|
>
|

|
|
>







419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
plain text.</p>
<p>The formatted text is expected as the result of the command,
and added to the output. If no special processing is required it has
to simply return its argument without change.</p></dd>
</dl>
</div>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="doctoc_intro.html">doctoc_intro</a>, <a href="doctoc_lang_cmdref.html">doctoc_lang_cmdref</a>, <a href="doctoc_lang_faq.html">doctoc_lang_faq</a>, <a href="doctoc_lang_intro.html">doctoc_lang_intro</a>, <a href="doctoc_lang_syntax.html">doctoc_lang_syntax</a>, <a href="../doctools2toc/container.html">doctools::toc</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key641">formatting engine</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key143">semantic markup</a>, <a href="../../../../index.html#key167">table of contents</a>, <a href="../../../../index.html#key166">toc</a>, <a href="../../../../index.html#key701">toc formatter</a></p>
</div>

Changes to embedded/www/tcllib/files/modules/doctools/doctools.html.

123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<li class="subsection"><a href="#subsection2">OBJECT COMMAND</a></li>
<li class="subsection"><a href="#subsection3">OBJECT METHODS</a></li>
<li class="subsection"><a href="#subsection4">OBJECT CONFIGURATION</a></li>
<li class="subsection"><a href="#subsection5">FORMAT MAPPING</a></li>
</ul>
</li>
<li class="section"><a href="#section3">PREDEFINED ENGINES</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<li class="subsection"><a href="#subsection2">OBJECT COMMAND</a></li>
<li class="subsection"><a href="#subsection3">OBJECT METHODS</a></li>
<li class="subsection"><a href="#subsection4">OBJECT CONFIGURATION</a></li>
<li class="subsection"><a href="#subsection5">FORMAT MAPPING</a></li>
</ul>
</li>
<li class="section"><a href="#section3">PREDEFINED ENGINES</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
this package and its plugins, i.e. the formatting engines, in detail.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">PUBLIC API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">PACKAGE COMMANDS</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::doctools::new</b> <i class="arg">objectName</i> <span class="opt">?<i class="arg">option value</i>...?</span></a></dt>
<dd><p>This command creates a new doctools object with an associated Tcl
command whose name is <i class="arg">objectName</i>. This <i class="term"><a href="../../../../index.html#key238">object</a></i> command is
explained in full detail in the sections <span class="sectref"><a href="#subsection2">OBJECT COMMAND</a></span>
and <span class="sectref"><a href="#subsection3">OBJECT METHODS</a></span>. The object command will be created
under the current namespace if the <i class="arg">objectName</i> is not fully
qualified, and in the specified namespace otherwise.</p>
<p>The options and their values coming after the name of the object are
used to set the initial configuration of the object.</p></dd>
<dt><a name="2"><b class="cmd">::doctools::help</b></a></dt>







|







175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
this package and its plugins, i.e. the formatting engines, in detail.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">PUBLIC API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">PACKAGE COMMANDS</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::doctools::new</b> <i class="arg">objectName</i> <span class="opt">?<i class="arg">option value</i>...?</span></a></dt>
<dd><p>This command creates a new doctools object with an associated Tcl
command whose name is <i class="arg">objectName</i>. This <i class="term"><a href="../../../../index.html#key237">object</a></i> command is
explained in full detail in the sections <span class="sectref"><a href="#subsection2">OBJECT COMMAND</a></span>
and <span class="sectref"><a href="#subsection3">OBJECT METHODS</a></span>. The object command will be created
under the current namespace if the <i class="arg">objectName</i> is not fully
qualified, and in the specified namespace otherwise.</p>
<p>The options and their values coming after the name of the object are
used to set the initial configuration of the object.</p></dd>
<dt><a name="2"><b class="cmd">::doctools::help</b></a></dt>
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
base path for resolution of relative include paths. If this option is
not set (empty string) the value of <b class="option">-file</b> is used instead.</p>
<p>Note that <b class="option">-file</b> and <b class="option">-ibase</b>, while similar looking,
are actually very different. The value of <b class="option">-file</b> is used by
some engines for the generation of proper relative references between
output documents (HTML). As such this is a <i class="term">destination</i>
path. The <b class="option">-ibase</b> on the other hand is used to resolve
relative include paths, and as such deals with <i class="term"><a href="../../../../index.html#key412">source</a></i> paths.</p>
<p>The default value of this option is the empty string.</p></dd>
<dt><b class="option">-module</b> <i class="arg">text</i></dt>
<dd><p>The argument of this option is stored in the object and made available
to the configured formatting engine through the command <b class="cmd">dt_module</b>.
This command is described in more detail in the companion document
<i class="term">doctools_api</i> which specifies the API between the object and
formatting engines.</p>







|







300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
base path for resolution of relative include paths. If this option is
not set (empty string) the value of <b class="option">-file</b> is used instead.</p>
<p>Note that <b class="option">-file</b> and <b class="option">-ibase</b>, while similar looking,
are actually very different. The value of <b class="option">-file</b> is used by
some engines for the generation of proper relative references between
output documents (HTML). As such this is a <i class="term">destination</i>
path. The <b class="option">-ibase</b> on the other hand is used to resolve
relative include paths, and as such deals with <i class="term"><a href="../../../../index.html#key411">source</a></i> paths.</p>
<p>The default value of this option is the empty string.</p></dd>
<dt><b class="option">-module</b> <i class="arg">text</i></dt>
<dd><p>The argument of this option is stored in the object and made available
to the configured formatting engine through the command <b class="cmd">dt_module</b>.
This command is described in more detail in the companion document
<i class="term">doctools_api</i> which specifies the API between the object and
formatting engines.</p>
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
<b class="const">kw,</b><i class="arg">word</i>, and <i class="arg">word</i>, in this order. If this fails if
it will convert <i class="arg">word</i> to all lowercase and try again.</p></dd>
<dt><b class="cmd">see_also</b> <i class="arg">word</i>...</dt>
<dd><p>The command will look for the patterns <b class="const">sa,</b><i class="arg">word</i>, and
<i class="arg">word</i>, in this order, for each <i class="arg">word</i> given to the
command. If this fails if it will convert <i class="arg">word</i> to all lowercase
and try again.</p></dd>
<dt><b class="cmd"><a href="../../../../index.html#key761">keywords</a></b> <i class="arg">word</i>...</dt>
<dd><p>The command will look for the patterns <b class="const">kw,</b><i class="arg">word</i>, and
<i class="arg">word</i>, in this order, for each <i class="arg">word</i> given to the
command. If this fails if it will convert <i class="arg">word</i> to all lowercase
and try again.</p></dd>
</dl></dd>
</dl></dd>
<dt>latex</dt>







|







448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
<b class="const">kw,</b><i class="arg">word</i>, and <i class="arg">word</i>, in this order. If this fails if
it will convert <i class="arg">word</i> to all lowercase and try again.</p></dd>
<dt><b class="cmd">see_also</b> <i class="arg">word</i>...</dt>
<dd><p>The command will look for the patterns <b class="const">sa,</b><i class="arg">word</i>, and
<i class="arg">word</i>, in this order, for each <i class="arg">word</i> given to the
command. If this fails if it will convert <i class="arg">word</i> to all lowercase
and try again.</p></dd>
<dt><b class="cmd"><a href="../../../../index.html#key760">keywords</a></b> <i class="arg">word</i>...</dt>
<dd><p>The command will look for the patterns <b class="const">kw,</b><i class="arg">word</i>, and
<i class="arg">word</i>, in this order, for each <i class="arg">word</i> given to the
command. If this fails if it will convert <i class="arg">word</i> to all lowercase
and try again.</p></dd>
</dl></dd>
</dl></dd>
<dt>latex</dt>
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
<dd><p>This engine generates TMML markup as specified by Joe English. The Tcl
Manpage Markup Language is a derivate of XML.</p></dd>
<dt>wiki</dt>
<dd><p>This engine generates Wiki markup as understood by Jean Claude
Wippler's <b class="syscmd">wikit</b> application.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="doctools_intro.html">doctools_intro</a>, <a href="doctools_lang_cmdref.html">doctools_lang_cmdref</a>, <a href="doctools_lang_intro.html">doctools_lang_intro</a>, <a href="doctools_lang_syntax.html">doctools_lang_syntax</a>, <a href="doctools_plugin_apiref.html">doctools_plugin_apiref</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key17">HTML</a>, <a href="../../../../index.html#key20">TMML</a>, <a href="../../../../index.html#key19">conversion</a>, <a href="../../../../index.html#key185">documentation</a>, <a href="../../../../index.html#key18">manpage</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key21">nroff</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003-2013 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|







|








477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
<dd><p>This engine generates TMML markup as specified by Joe English. The Tcl
Manpage Markup Language is a derivate of XML.</p></dd>
<dt>wiki</dt>
<dd><p>This engine generates Wiki markup as understood by Jean Claude
Wippler's <b class="syscmd">wikit</b> application.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="doctools_intro.html">doctools_intro</a>, <a href="doctools_lang_cmdref.html">doctools_lang_cmdref</a>, <a href="doctools_lang_intro.html">doctools_lang_intro</a>, <a href="doctools_lang_syntax.html">doctools_lang_syntax</a>, <a href="doctools_plugin_apiref.html">doctools_plugin_apiref</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key18">HTML</a>, <a href="../../../../index.html#key19">TMML</a>, <a href="../../../../index.html#key20">conversion</a>, <a href="../../../../index.html#key185">documentation</a>, <a href="../../../../index.html#key17">manpage</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key21">nroff</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003-2013 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools/doctools_intro.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>doctools_intro - doctools introduction</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">RELATED FORMATS</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>doctools_intro - doctools introduction</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">RELATED FORMATS</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
170
171
172
173
174
175
176
177

178
179
180
181

182
183
184
185
186
187
188
called <i class="term"><a href="../../../../index.html#key50">docidx</a></i> and <i class="term"><a href="../../../../index.html#key246">doctoc</a></i>, and they are for the markup of
<i class="term">keyword indices</i>, and <i class="term">tables of contents</i>,
respectively.
They are described in their own sets of documents, starting at the
<i class="term"><a href="docidx_intro.html">docidx introduction</a></i> and the <i class="term"><a href="doctoc_intro.html">doctoc introduction</a></i>,
respectively.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>

<p>This document, will undoubtedly contain bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have.</p>

</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="docidx_intro.html">docidx_intro</a>, <a href="doctoc_intro.html">doctoc_intro</a>, <a href="doctools.html">doctools</a>, <a href="doctools_lang_cmdref.html">doctools_lang_cmdref</a>, <a href="doctools_lang_faq.html">doctools_lang_faq</a>, <a href="doctools_lang_intro.html">doctools_lang_intro</a>, <a href="doctools_lang_syntax.html">doctools_lang_syntax</a>, <a href="doctools_plugin_apiref.html">doctools_plugin_apiref</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>







|
>
|

|
|
>







170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
called <i class="term"><a href="../../../../index.html#key50">docidx</a></i> and <i class="term"><a href="../../../../index.html#key246">doctoc</a></i>, and they are for the markup of
<i class="term">keyword indices</i>, and <i class="term">tables of contents</i>,
respectively.
They are described in their own sets of documents, starting at the
<i class="term"><a href="docidx_intro.html">docidx introduction</a></i> and the <i class="term"><a href="doctoc_intro.html">doctoc introduction</a></i>,
respectively.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="docidx_intro.html">docidx_intro</a>, <a href="doctoc_intro.html">doctoc_intro</a>, <a href="doctools.html">doctools</a>, <a href="doctools_lang_cmdref.html">doctools_lang_cmdref</a>, <a href="doctools_lang_faq.html">doctools_lang_faq</a>, <a href="doctools_lang_intro.html">doctools_lang_intro</a>, <a href="doctools_lang_syntax.html">doctools_lang_syntax</a>, <a href="doctools_plugin_apiref.html">doctools_plugin_apiref</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>

Changes to embedded/www/tcllib/files/modules/doctools/doctools_lang_cmdref.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Commands</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="syntax">
<li><a href="#1"><b class="cmd">arg</b> <i class="arg">text</i></a></li>
<li><a href="#2"><b class="cmd">arg_def</b> <i class="arg">type</i> <i class="arg">name</i> <span class="opt">?<i class="arg">mode</i>?</span></a></li>
<li><a href="#3"><b class="cmd">bullet</b></a></li>
<li><a href="#4"><b class="cmd">call</b> <i class="arg">args</i></a></li>
<li><a href="#5"><b class="cmd">category</b> <i class="arg">text</i></a></li>
<li><a href="#6"><b class="cmd"><a href="../../../../index.html#key236">class</a></b> <i class="arg">text</i></a></li>
<li><a href="#7"><b class="cmd">cmd</b> <i class="arg">text</i></a></li>
<li><a href="#8"><b class="cmd">cmd_def</b> <i class="arg">command</i></a></li>
<li><a href="#9"><b class="cmd"><a href="../../../../index.html#key163">comment</a></b> <i class="arg">plaintext</i></a></li>
<li><a href="#10"><b class="cmd">const</b> <i class="arg">text</i></a></li>
<li><a href="#11"><b class="cmd">copyright</b> <i class="arg">text</i></a></li>
<li><a href="#12"><b class="cmd">def</b> <i class="arg">text</i></a></li>
<li><a href="#13"><b class="cmd">description</b></a></li>
<li><a href="#14"><b class="cmd">enum</b></a></li>
<li><a href="#15"><b class="cmd">emph</b> <i class="arg">text</i></a></li>
<li><a href="#16"><b class="cmd">example</b> <i class="arg">text</i></a></li>
<li><a href="#17"><b class="cmd">example_begin</b></a></li>
<li><a href="#18"><b class="cmd">example_end</b></a></li>
<li><a href="#19"><b class="cmd"><a href="../../../../index.html#key35">file</a></b> <i class="arg">text</i></a></li>
<li><a href="#20"><b class="cmd">fun</b> <i class="arg">text</i></a></li>
<li><a href="#21"><b class="cmd"><a href="../../../../index.html#key133">image</a></b> <i class="arg">name</i> <span class="opt">?<i class="arg">label</i>?</span></a></li>
<li><a href="#22"><b class="cmd">include</b> <i class="arg">filename</i></a></li>
<li><a href="#23"><b class="cmd">item</b></a></li>
<li><a href="#24"><b class="cmd"><a href="../../../../index.html#key761">keywords</a></b> <i class="arg">args</i></a></li>
<li><a href="#25"><b class="cmd">lb</b></a></li>
<li><a href="#26"><b class="cmd">list_begin</b> <i class="arg">what</i></a></li>
<li><a href="#27"><b class="cmd">list_end</b></a></li>
<li><a href="#28"><b class="cmd">lst_item</b> <i class="arg">text</i></a></li>
<li><a href="#29"><b class="cmd">manpage_begin</b> <i class="arg">command</i> <i class="arg">section</i> <i class="arg">version</i></a></li>
<li><a href="#30"><b class="cmd">manpage_end</b></a></li>
<li><a href="#31"><b class="cmd"><a href="../../../../index.html#key355">method</a></b> <i class="arg">text</i></a></li>







|














|














|


|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Commands</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="syntax">
<li><a href="#1"><b class="cmd">arg</b> <i class="arg">text</i></a></li>
<li><a href="#2"><b class="cmd">arg_def</b> <i class="arg">type</i> <i class="arg">name</i> <span class="opt">?<i class="arg">mode</i>?</span></a></li>
<li><a href="#3"><b class="cmd">bullet</b></a></li>
<li><a href="#4"><b class="cmd">call</b> <i class="arg">args</i></a></li>
<li><a href="#5"><b class="cmd">category</b> <i class="arg">text</i></a></li>
<li><a href="#6"><b class="cmd"><a href="../../../../index.html#key234">class</a></b> <i class="arg">text</i></a></li>
<li><a href="#7"><b class="cmd">cmd</b> <i class="arg">text</i></a></li>
<li><a href="#8"><b class="cmd">cmd_def</b> <i class="arg">command</i></a></li>
<li><a href="#9"><b class="cmd"><a href="../../../../index.html#key163">comment</a></b> <i class="arg">plaintext</i></a></li>
<li><a href="#10"><b class="cmd">const</b> <i class="arg">text</i></a></li>
<li><a href="#11"><b class="cmd">copyright</b> <i class="arg">text</i></a></li>
<li><a href="#12"><b class="cmd">def</b> <i class="arg">text</i></a></li>
<li><a href="#13"><b class="cmd">description</b></a></li>
<li><a href="#14"><b class="cmd">enum</b></a></li>
<li><a href="#15"><b class="cmd">emph</b> <i class="arg">text</i></a></li>
<li><a href="#16"><b class="cmd">example</b> <i class="arg">text</i></a></li>
<li><a href="#17"><b class="cmd">example_begin</b></a></li>
<li><a href="#18"><b class="cmd">example_end</b></a></li>
<li><a href="#19"><b class="cmd"><a href="../../../../index.html#key35">file</a></b> <i class="arg">text</i></a></li>
<li><a href="#20"><b class="cmd">fun</b> <i class="arg">text</i></a></li>
<li><a href="#21"><b class="cmd"><a href="../../../../index.html#key134">image</a></b> <i class="arg">name</i> <span class="opt">?<i class="arg">label</i>?</span></a></li>
<li><a href="#22"><b class="cmd">include</b> <i class="arg">filename</i></a></li>
<li><a href="#23"><b class="cmd">item</b></a></li>
<li><a href="#24"><b class="cmd"><a href="../../../../index.html#key760">keywords</a></b> <i class="arg">args</i></a></li>
<li><a href="#25"><b class="cmd">lb</b></a></li>
<li><a href="#26"><b class="cmd">list_begin</b> <i class="arg">what</i></a></li>
<li><a href="#27"><b class="cmd">list_end</b></a></li>
<li><a href="#28"><b class="cmd">lst_item</b> <i class="arg">text</i></a></li>
<li><a href="#29"><b class="cmd">manpage_begin</b> <i class="arg">command</i> <i class="arg">section</i> <i class="arg">version</i></a></li>
<li><a href="#30"><b class="cmd">manpage_end</b></a></li>
<li><a href="#31"><b class="cmd"><a href="../../../../index.html#key355">method</a></b> <i class="arg">text</i></a></li>
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
<li><a href="#45"><b class="cmd">see_also</b> <i class="arg">args</i></a></li>
<li><a href="#46"><b class="cmd">strong</b> <i class="arg">text</i></a></li>
<li><a href="#47"><b class="cmd">subsection</b> <i class="arg">name</i></a></li>
<li><a href="#48"><b class="cmd">syscmd</b> <i class="arg">text</i></a></li>
<li><a href="#49"><b class="cmd"><a href="../term/term.html">term</a></b> <i class="arg">text</i></a></li>
<li><a href="#50"><b class="cmd">titledesc</b> <i class="arg">desc</i></a></li>
<li><a href="#51"><b class="cmd">tkoption_def</b> <i class="arg">name</i> <i class="arg">dbname</i> <i class="arg">dbclass</i></a></li>
<li><a href="#52"><b class="cmd"><a href="../../../../index.html#key124">type</a></b> <i class="arg">text</i></a></li>
<li><a href="#53"><b class="cmd"><a href="../uri/uri.html">uri</a></b> <i class="arg">text</i> <span class="opt">?<i class="arg">text</i>?</span></a></li>
<li><a href="#54"><b class="cmd">usage</b> <i class="arg">args</i></a></li>
<li><a href="#55"><b class="cmd">var</b> <i class="arg">text</i></a></li>
<li><a href="#56"><b class="cmd">vset</b> <i class="arg">varname</i> <i class="arg">value</i></a></li>
<li><a href="#57"><b class="cmd">vset</b> <i class="arg">varname</i></a></li>
<li><a href="#58"><b class="cmd"><a href="../../../../index.html#key229">widget</a></b> <i class="arg">text</i></a></li>
</ul>







|







175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
<li><a href="#45"><b class="cmd">see_also</b> <i class="arg">args</i></a></li>
<li><a href="#46"><b class="cmd">strong</b> <i class="arg">text</i></a></li>
<li><a href="#47"><b class="cmd">subsection</b> <i class="arg">name</i></a></li>
<li><a href="#48"><b class="cmd">syscmd</b> <i class="arg">text</i></a></li>
<li><a href="#49"><b class="cmd"><a href="../term/term.html">term</a></b> <i class="arg">text</i></a></li>
<li><a href="#50"><b class="cmd">titledesc</b> <i class="arg">desc</i></a></li>
<li><a href="#51"><b class="cmd">tkoption_def</b> <i class="arg">name</i> <i class="arg">dbname</i> <i class="arg">dbclass</i></a></li>
<li><a href="#52"><b class="cmd"><a href="../../../../index.html#key123">type</a></b> <i class="arg">text</i></a></li>
<li><a href="#53"><b class="cmd"><a href="../uri/uri.html">uri</a></b> <i class="arg">text</i> <span class="opt">?<i class="arg">text</i>?</span></a></li>
<li><a href="#54"><b class="cmd">usage</b> <i class="arg">args</i></a></li>
<li><a href="#55"><b class="cmd">var</b> <i class="arg">text</i></a></li>
<li><a href="#56"><b class="cmd">vset</b> <i class="arg">varname</i> <i class="arg">value</i></a></li>
<li><a href="#57"><b class="cmd">vset</b> <i class="arg">varname</i></a></li>
<li><a href="#58"><b class="cmd"><a href="../../../../index.html#key229">widget</a></b> <i class="arg">text</i></a></li>
</ul>
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
It is expected that the formatted term is not only printed in place,
but also in the table of contents of the document, or synopsis,
depending on the output format.</p></dd>
<dt><a name="5"><b class="cmd">category</b> <i class="arg">text</i></a></dt>
<dd><p>Document information. Anywhere. This command registers its plain text
arguments as the category this document belongs to. If this command is
used multiple times the last value specified is used.</p></dd>
<dt><a name="6"><b class="cmd"><a href="../../../../index.html#key236">class</a></b> <i class="arg">text</i></a></dt>
<dd><p>Text markup. The argument is marked up as the name of a
<i class="term"><a href="../../../../index.html#key236">class</a></i>. The text may have other markup already applied to
it. Main use is the highlighting of class names in free-form text.</p></dd>
<dt><a name="7"><b class="cmd">cmd</b> <i class="arg">text</i></a></dt>
<dd><p>Text markup. The argument text is marked up as the name of a
<i class="term">Tcl command</i>. The text may have other markup already applied
to it. Main uses are the highlighting of commands in free-form text,
and for the command parameters of the markup commands <b class="cmd">call</b> and
<b class="cmd">usage</b>.</p></dd>







|

|







226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
It is expected that the formatted term is not only printed in place,
but also in the table of contents of the document, or synopsis,
depending on the output format.</p></dd>
<dt><a name="5"><b class="cmd">category</b> <i class="arg">text</i></a></dt>
<dd><p>Document information. Anywhere. This command registers its plain text
arguments as the category this document belongs to. If this command is
used multiple times the last value specified is used.</p></dd>
<dt><a name="6"><b class="cmd"><a href="../../../../index.html#key234">class</a></b> <i class="arg">text</i></a></dt>
<dd><p>Text markup. The argument is marked up as the name of a
<i class="term"><a href="../../../../index.html#key234">class</a></i>. The text may have other markup already applied to
it. Main use is the highlighting of class names in free-form text.</p></dd>
<dt><a name="7"><b class="cmd">cmd</b> <i class="arg">text</i></a></dt>
<dd><p>Text markup. The argument text is marked up as the name of a
<i class="term">Tcl command</i>. The text may have other markup already applied
to it. Main uses are the highlighting of commands in free-form text,
and for the command parameters of the markup commands <b class="cmd">call</b> and
<b class="cmd">usage</b>.</p></dd>
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
<i class="term">directory</i>, i.e. in general a <i class="term">path</i>. The text may have
other markup already applied to it. Main use is the highlighting of
paths in free-form text.</p></dd>
<dt><a name="20"><b class="cmd">fun</b> <i class="arg">text</i></a></dt>
<dd><p>Text markup. The argument is marked up as the name of a
<i class="term">function</i>. The text may have other markup already applied to
it. Main use is the highlighting of function names in free-form text.</p></dd>
<dt><a name="21"><b class="cmd"><a href="../../../../index.html#key133">image</a></b> <i class="arg">name</i> <span class="opt">?<i class="arg">label</i>?</span></a></dt>
<dd><p>Text markup. The argument is the symbolic name of an <i class="term"><a href="../../../../index.html#key133">image</a></i>
and replaced with the image itself, if a suitable variant is found
by the backend. The second argument, should it be present, will be
interpreted the human-readable description of the image, and put
into the output in a suitable position, if such is supported by the
format. The HTML format, for example, can place it into the <i class="term">alt</i>
attribute of image references.</p></dd>
<dt><a name="22"><b class="cmd">include</b> <i class="arg">filename</i></a></dt>
<dd><p>Templating. The contents of the named file are interpreted as text
written in the doctools markup and processed in the place of the
include command. The markup in the file has to be self-contained. It
is not possible for a markup command to cross the file boundaries.</p></dd>
<dt><a name="23"><b class="cmd">item</b></a></dt>
<dd><p>Text structure. List element. Itemized list. Automatically closes the
previous list element.</p></dd>
<dt><a name="24"><b class="cmd"><a href="../../../../index.html#key761">keywords</a></b> <i class="arg">args</i></a></dt>
<dd><p>Document information. Anywhere. This command registers all its plain text
arguments as keywords applying to this document. Each argument is a single
keyword. If this command is used multiple times all the arguments accumulate.</p></dd>
<dt><a name="25"><b class="cmd">lb</b></a></dt>
<dd><p>Text. The command is replaced with a left bracket. Use in free-form text.
Required to avoid interpretation of a left bracket as the start of a markup
command.</p></dd>







|
|














|







290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
<i class="term">directory</i>, i.e. in general a <i class="term">path</i>. The text may have
other markup already applied to it. Main use is the highlighting of
paths in free-form text.</p></dd>
<dt><a name="20"><b class="cmd">fun</b> <i class="arg">text</i></a></dt>
<dd><p>Text markup. The argument is marked up as the name of a
<i class="term">function</i>. The text may have other markup already applied to
it. Main use is the highlighting of function names in free-form text.</p></dd>
<dt><a name="21"><b class="cmd"><a href="../../../../index.html#key134">image</a></b> <i class="arg">name</i> <span class="opt">?<i class="arg">label</i>?</span></a></dt>
<dd><p>Text markup. The argument is the symbolic name of an <i class="term"><a href="../../../../index.html#key134">image</a></i>
and replaced with the image itself, if a suitable variant is found
by the backend. The second argument, should it be present, will be
interpreted the human-readable description of the image, and put
into the output in a suitable position, if such is supported by the
format. The HTML format, for example, can place it into the <i class="term">alt</i>
attribute of image references.</p></dd>
<dt><a name="22"><b class="cmd">include</b> <i class="arg">filename</i></a></dt>
<dd><p>Templating. The contents of the named file are interpreted as text
written in the doctools markup and processed in the place of the
include command. The markup in the file has to be self-contained. It
is not possible for a markup command to cross the file boundaries.</p></dd>
<dt><a name="23"><b class="cmd">item</b></a></dt>
<dd><p>Text structure. List element. Itemized list. Automatically closes the
previous list element.</p></dd>
<dt><a name="24"><b class="cmd"><a href="../../../../index.html#key760">keywords</a></b> <i class="arg">args</i></a></dt>
<dd><p>Document information. Anywhere. This command registers all its plain text
arguments as keywords applying to this document. Each argument is a single
keyword. If this command is used multiple times all the arguments accumulate.</p></dd>
<dt><a name="25"><b class="cmd">lb</b></a></dt>
<dd><p>Text. The command is replaced with a left bracket. Use in free-form text.
Required to avoid interpretation of a left bracket as the start of a markup
command.</p></dd>
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
<i class="arg">version</i> of the module containing the command. All arguments have
to be plain text, without markup.</p></dd>
<dt><a name="30"><b class="cmd">manpage_end</b></a></dt>
<dd><p>Document structure. Command to end a manpage/document. Anything in the document
coming after this command is in error.</p></dd>
<dt><a name="31"><b class="cmd"><a href="../../../../index.html#key355">method</a></b> <i class="arg">text</i></a></dt>
<dd><p>Text markup. The argument text is marked up as the name of an
<i class="term"><a href="../../../../index.html#key238">object</a></i> <i class="term"><a href="../../../../index.html#key355">method</a></i>, i.e. subcommand of a Tcl command. The
text may have other markup already applied to it. Main uses are the
highlighting of method names in free-form text, and for the command
parameters of the markup commands <b class="cmd">call</b> and <b class="cmd">usage</b>.</p></dd>
<dt><a name="32"><b class="cmd">moddesc</b> <i class="arg">text</i></a></dt>
<dd><p>Document information. Header. Registers the plain text argument as a short
description of the module the manpage resides in.</p></dd>
<dt><a name="33"><b class="cmd">namespace</b> <i class="arg">text</i></a></dt>







|







383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
<i class="arg">version</i> of the module containing the command. All arguments have
to be plain text, without markup.</p></dd>
<dt><a name="30"><b class="cmd">manpage_end</b></a></dt>
<dd><p>Document structure. Command to end a manpage/document. Anything in the document
coming after this command is in error.</p></dd>
<dt><a name="31"><b class="cmd"><a href="../../../../index.html#key355">method</a></b> <i class="arg">text</i></a></dt>
<dd><p>Text markup. The argument text is marked up as the name of an
<i class="term"><a href="../../../../index.html#key237">object</a></i> <i class="term"><a href="../../../../index.html#key355">method</a></i>, i.e. subcommand of a Tcl command. The
text may have other markup already applied to it. Main uses are the
highlighting of method names in free-form text, and for the command
parameters of the markup commands <b class="cmd">call</b> and <b class="cmd">usage</b>.</p></dd>
<dt><a name="32"><b class="cmd">moddesc</b> <i class="arg">text</i></a></dt>
<dd><p>Document information. Header. Registers the plain text argument as a short
description of the module the manpage resides in.</p></dd>
<dt><a name="33"><b class="cmd">namespace</b> <i class="arg">text</i></a></dt>
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
by <b class="cmd">moddesc</b>.</p></dd>
<dt><a name="51"><b class="cmd">tkoption_def</b> <i class="arg">name</i> <i class="arg">dbname</i> <i class="arg">dbclass</i></a></dt>
<dd><p>Text structure. List element. Widget option list. Automatically closes
the previous list element. Specifies the <i class="arg">name</i> of the option as
used in scripts, the name used by the option database (<i class="arg">dbname</i>),
and its class (<i class="arg">dbclass</i>), i.e. its type. It is expected that the
name is marked up using <b class="cmd">option</b>.</p></dd>
<dt><a name="52"><b class="cmd"><a href="../../../../index.html#key124">type</a></b> <i class="arg">text</i></a></dt>
<dd><p>Text markup. The argument is marked up as the name of a
<i class="term">data type</i>. The text may have other markup already applied to
it. Main use is the highlighting of data types in free-form text.</p></dd>
<dt><a name="53"><b class="cmd"><a href="../uri/uri.html">uri</a></b> <i class="arg">text</i> <span class="opt">?<i class="arg">text</i>?</span></a></dt>
<dd><p>Text markup. The argument is marked up as an <i class="term"><a href="../../../../index.html#key505">uri</a></i> (i.e. a
<i class="term">uniform resource identifier</i>. The text may have other markup
already applied to it. Main use is the highlighting of uris in
free-form text. The second argument, should it be present, will be
interpreted the human-readable description of the uri. In other words,
as its label. Without an explicit label the uri will be its own label.</p></dd>
<dt><a name="54"><b class="cmd">usage</b> <i class="arg">args</i></a></dt>
<dd><p>Text markup. See <b class="cmd">call</b> for the full description, this command is







|




|







473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
by <b class="cmd">moddesc</b>.</p></dd>
<dt><a name="51"><b class="cmd">tkoption_def</b> <i class="arg">name</i> <i class="arg">dbname</i> <i class="arg">dbclass</i></a></dt>
<dd><p>Text structure. List element. Widget option list. Automatically closes
the previous list element. Specifies the <i class="arg">name</i> of the option as
used in scripts, the name used by the option database (<i class="arg">dbname</i>),
and its class (<i class="arg">dbclass</i>), i.e. its type. It is expected that the
name is marked up using <b class="cmd">option</b>.</p></dd>
<dt><a name="52"><b class="cmd"><a href="../../../../index.html#key123">type</a></b> <i class="arg">text</i></a></dt>
<dd><p>Text markup. The argument is marked up as the name of a
<i class="term">data type</i>. The text may have other markup already applied to
it. Main use is the highlighting of data types in free-form text.</p></dd>
<dt><a name="53"><b class="cmd"><a href="../uri/uri.html">uri</a></b> <i class="arg">text</i> <span class="opt">?<i class="arg">text</i>?</span></a></dt>
<dd><p>Text markup. The argument is marked up as an <i class="term"><a href="../../../../index.html#key506">uri</a></i> (i.e. a
<i class="term">uniform resource identifier</i>. The text may have other markup
already applied to it. Main use is the highlighting of uris in
free-form text. The second argument, should it be present, will be
interpreted the human-readable description of the uri. In other words,
as its label. Without an explicit label the uri will be its own label.</p></dd>
<dt><a name="54"><b class="cmd">usage</b> <i class="arg">args</i></a></dt>
<dd><p>Text markup. See <b class="cmd">call</b> for the full description, this command is
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
named document variable</p></dd>
<dt><a name="58"><b class="cmd"><a href="../../../../index.html#key229">widget</a></b> <i class="arg">text</i></a></dt>
<dd><p>Text markup. The argument is marked up as the name of a
<i class="term"><a href="../../../../index.html#key229">widget</a></i>. The text may have other markup already applied to
it. Main use is the highlighting of widget names in free-form text.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="doctools_intro.html">doctools_intro</a>, <a href="doctools_lang_faq.html">doctools_lang_faq</a>, <a href="doctools_lang_intro.html">doctools_lang_intro</a>, <a href="doctools_lang_syntax.html">doctools_lang_syntax</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key144">doctools commands</a>, <a href="../../../../index.html#key146">doctools language</a>, <a href="../../../../index.html#key147">doctools markup</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007-2010 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|







|








510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
named document variable</p></dd>
<dt><a name="58"><b class="cmd"><a href="../../../../index.html#key229">widget</a></b> <i class="arg">text</i></a></dt>
<dd><p>Text markup. The argument is marked up as the name of a
<i class="term"><a href="../../../../index.html#key229">widget</a></i>. The text may have other markup already applied to
it. Main use is the highlighting of widget names in free-form text.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="doctools_intro.html">doctools_intro</a>, <a href="doctools_lang_faq.html">doctools_lang_faq</a>, <a href="doctools_lang_intro.html">doctools_lang_intro</a>, <a href="doctools_lang_syntax.html">doctools_lang_syntax</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key144">doctools commands</a>, <a href="../../../../index.html#key147">doctools language</a>, <a href="../../../../index.html#key146">doctools markup</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007-2010 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools/doctools_lang_faq.html.

122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155



156
157
158
159
160
161
162
163
164
165
166

167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
</ul>
</li>
<li class="section"><a href="#section3">EXAMPLES</a>
<ul>
<li class="subsection"><a href="#subsection2">Where do I find doctools examples?</a></li>
</ul>
</li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
</div>
<div id="section2" class="section"><h2><a name="section2">OVERVIEW</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">What is this document?</a></h3>
<p>This document is currently mainly a placeholder, to be filled with
commonly asked questions about the doctools markup language and
companions, and their answers.</p>
<p>Please report any questions (and, if possible, answers) we should
consider for this document in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.</p>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">EXAMPLES</a></h2>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Where do I find doctools examples?</a></h3>
<p>The most examples of doctools markup currently known can be found in
the Tcllib and Tklib package bundles where basically the documentation
of all packages is written in it.
In Tcllib you will also find the sources for the doctools
documentation themselves, which makes use of nearly all of the
available markup commands.



You need one of</p>
<ol class="enumerated">
<li><p>A CVS snapshot of Tcllib. How to retrieve such a snapshot and the
tools required for this are described at
<a href="http://sourceforge.net/cvs/?group_id=12883">http://sourceforge.net/cvs/?group_id=12883</a></p></li>
<li><p>A Tcllib release archive. They are available at
<a href="http://sourceforge.net/project/showfiles.php?group_id=12883">http://sourceforge.net/project/showfiles.php?group_id=12883</a></p></li>
</ol>
</div>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>

<p>This document, will undoubtedly contain bugs and other problems.
Please report any such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
the package and/or the documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="doctools_lang_cmdref.html">doctools_lang_cmdref</a>, <a href="doctools_lang_intro.html">doctools_lang_intro</a>, <a href="doctools_lang_syntax.html">doctools_lang_syntax</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key144">doctools commands</a>, <a href="../../../../index.html#key146">doctools language</a>, <a href="../../../../index.html#key147">doctools markup</a>, <a href="../../../../index.html#key145">doctools syntax</a>, <a href="../../../../index.html#key353">examples</a>, <a href="../../../../index.html#key348">faq</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>







|











|
|

|
|




|
<
<
|
|
|
>
>
>
|

|

|
|
|



|
>
|
|
|

|





|







122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150


151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
</ul>
</li>
<li class="section"><a href="#section3">EXAMPLES</a>
<ul>
<li class="subsection"><a href="#subsection2">Where do I find doctools examples?</a></li>
</ul>
</li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
</div>
<div id="section2" class="section"><h2><a name="section2">OVERVIEW</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">What is this document?</a></h3>
<p>This document is currently mainly a placeholder, to be filled with
commonly asked questions about the doctools markup language
and companions, and their answers.</p>
<p>Please report any questions (and, if possible, answers) we should
consider for this document as explained in the section
<span class="sectref"><a href="#section4">Bugs, Ideas, Feedback</a></span> below.</p>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">EXAMPLES</a></h2>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Where do I find doctools examples?</a></h3>
<p>We have no direct examples of documents written using doctools


markup. However the doctools processor <b class="syscmd"><a href="../dtplite/dtplite.html">dtplite</a></b> does generate
a table of contents when processing a set of documents written in
doctools markup. The intermediate file for it uses doctools
markup and is not deleted when generation completes. Such files can
therefore serve as examples.</p>
<p><b class="syscmd"><a href="../dtplite/dtplite.html">dtplite</a></b> is distributed as part of Tcllib, so to get it you
need one of</p>
<ol class="enumerated">
<li><p>A snapshot of Tcllib. How to retrieve such a snapshot and the
tools required for this are described at
<a href="/wiki?name=Development+Snapshots">Development Snapshots</a></p></li>
<li><p>A Tcllib release archive. They are available at the <a href="/home">home</a>
page.</p></li>
</ol>
</div>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="doctools_lang_cmdref.html">doctools_lang_cmdref</a>, <a href="doctools_lang_intro.html">doctools_lang_intro</a>, <a href="doctools_lang_syntax.html">doctools_lang_syntax</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key144">doctools commands</a>, <a href="../../../../index.html#key147">doctools language</a>, <a href="../../../../index.html#key146">doctools markup</a>, <a href="../../../../index.html#key145">doctools syntax</a>, <a href="../../../../index.html#key351">examples</a>, <a href="../../../../index.html#key348">faq</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>

Changes to embedded/www/tcllib/files/modules/doctools/doctools_lang_intro.html.

125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<li class="subsection"><a href="#subsection6">Escapes</a></li>
<li class="subsection"><a href="#subsection7">Cross-references</a></li>
<li class="subsection"><a href="#subsection8">Examples</a></li>
<li class="subsection"><a href="#subsection9">Lists</a></li>
</ul>
</li>
<li class="section"><a href="#section2">FURTHER READING</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>







|







125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<li class="subsection"><a href="#subsection6">Escapes</a></li>
<li class="subsection"><a href="#subsection7">Cross-references</a></li>
<li class="subsection"><a href="#subsection8">Examples</a></li>
<li class="subsection"><a href="#subsection9">Lists</a></li>
</ul>
</li>
<li class="section"><a href="#section2">FURTHER READING</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
165
166
167
168
169
170
171










172


173
174
175
176
177
178
179
180
  ... [opt &quot;[arg key] [arg value]&quot;] ...
</pre>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Basic structure</a></h3>
<p>The most simple document which can be written in doctools is</p>
<pre class="example">
    [manpage_begin NAME SECTION VERSION]










    [description]


    [manpage_end]
</pre>
<p>This also shows us that all doctools documents are split into two
parts, the <i class="term">header</i> and the <i class="term">body</i>. Everything coming before
[<b class="cmd">description</b>] belongs to the header, and everything coming
after belongs to the body, with the whole document bracketed by the
two <b class="cmd">manpage_*</b> commands. Before and after these opening and
closing commands we have only <i class="term">whitespace</i>.</p>







>
>
>
>
>
>
>
>
>
>

>
>
|







165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
  ... [opt &quot;[arg key] [arg value]&quot;] ...
</pre>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Basic structure</a></h3>
<p>The most simple document which can be written in doctools is</p>
<pre class="example">
    [manpage_begin NAME SECTION VERSION]
[see_also doctools_intro]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_faq]
[see_also doctools_lang_syntax]
[keywords {doctools commands}]
[keywords {doctools language}]
[keywords {doctools markup}]
[keywords {doctools syntax}]
[keywords markup]
[keywords {semantic markup}]
    [description]
    [vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]
</pre>
<p>This also shows us that all doctools documents are split into two
parts, the <i class="term">header</i> and the <i class="term">body</i>. Everything coming before
[<b class="cmd">description</b>] belongs to the header, and everything coming
after belongs to the body, with the whole document bracketed by the
two <b class="cmd">manpage_*</b> commands. Before and after these opening and
closing commands we have only <i class="term">whitespace</i>.</p>
213
214
215
216
217
218
219










220
221


222
223
224
225
226
227
228
229
[<b class="cmd">require   PACKAGE</b>]
[description]
[manpage_end]
</pre>
<p>Remember that the whitespace is optional. The document</p>
<pre class="example">
    [manpage_begin NAME SECTION VERSION]










    [copyright {YEAR AUTHOR}][titledesc TITLE][moddesc MODULE_TITLE]
    [require PACKAGE VERSION][require PACKAGE][description]


    [manpage_end]
</pre>
<p>has the same meaning as the example before.</p>
<p>On the other hand, if <i class="term">whitespace</i> is present it consists not
only of any sequence of characters containing the space character,
horizontal and vertical tabs, carriage return, and newline, but it may
contain comment markup as well, in the form of the <b class="cmd"><a href="../../../../index.html#key163">comment</a></b>
command.</p>







>
>
>
>
>
>
>
>
>
>


>
>
|







225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
[<b class="cmd">require   PACKAGE</b>]
[description]
[manpage_end]
</pre>
<p>Remember that the whitespace is optional. The document</p>
<pre class="example">
    [manpage_begin NAME SECTION VERSION]
[see_also doctools_intro]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_faq]
[see_also doctools_lang_syntax]
[keywords {doctools commands}]
[keywords {doctools language}]
[keywords {doctools markup}]
[keywords {doctools syntax}]
[keywords markup]
[keywords {semantic markup}]
    [copyright {YEAR AUTHOR}][titledesc TITLE][moddesc MODULE_TITLE]
    [require PACKAGE VERSION][require PACKAGE][description]
    [vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]
</pre>
<p>has the same meaning as the example before.</p>
<p>On the other hand, if <i class="term">whitespace</i> is present it consists not
only of any sequence of characters containing the space character,
horizontal and vertical tabs, carriage return, and newline, but it may
contain comment markup as well, in the form of the <b class="cmd"><a href="../../../../index.html#key163">comment</a></b>
command.</p>
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
their predominant use is the highlighting of parts of a paragraph they
can also be used to mark up the arguments of list item commands, and
of other markup commands.</p>
<p>The commands available to us are</p>
<dl class="commands">
<dt><b class="cmd">arg</b></dt>
<dd><p>Its argument is a the name of a command argument.</p></dd>
<dt><b class="cmd"><a href="../../../../index.html#key236">class</a></b></dt>
<dd><p>Its argument is a class name.</p></dd>
<dt><b class="cmd">cmd</b></dt>
<dd><p>Its argument is a command name (Tcl command).</p></dd>
<dt><b class="cmd">const</b></dt>
<dd><p>Its argument is a constant.</p></dd>
<dt><b class="cmd">emph</b></dt>
<dd><p>General, non-semantic emphasis.</p></dd>







|







379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
their predominant use is the highlighting of parts of a paragraph they
can also be used to mark up the arguments of list item commands, and
of other markup commands.</p>
<p>The commands available to us are</p>
<dl class="commands">
<dt><b class="cmd">arg</b></dt>
<dd><p>Its argument is a the name of a command argument.</p></dd>
<dt><b class="cmd"><a href="../../../../index.html#key234">class</a></b></dt>
<dd><p>Its argument is a class name.</p></dd>
<dt><b class="cmd">cmd</b></dt>
<dd><p>Its argument is a command name (Tcl command).</p></dd>
<dt><b class="cmd">const</b></dt>
<dd><p>Its argument is a constant.</p></dd>
<dt><b class="cmd">emph</b></dt>
<dd><p>General, non-semantic emphasis.</p></dd>
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
<dt><b class="cmd">sectref</b></dt>
<dd><p>Its argument is the title of a section or subsection,
                    i.e. a section reference.</p></dd>
<dt><b class="cmd">syscmd</b></dt>
<dd><p>Its argument is a command name (external, system command).</p></dd>
<dt><b class="cmd"><a href="../term/term.html">term</a></b></dt>
<dd><p>Its argument is a concept, or general terminology.</p></dd>
<dt><b class="cmd"><a href="../../../../index.html#key124">type</a></b></dt>
<dd><p>Its argument is a type name.</p></dd>
<dt><b class="cmd"><a href="../uri/uri.html">uri</a></b></dt>
<dd><p>Its argument is a uniform resource identifier, i.e an
                    external reference. A second argument can be used
                    to specify an explicit label for the reference in
                    question.</p></dd>
<dt><b class="cmd">usage</b></dt>







|







408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
<dt><b class="cmd">sectref</b></dt>
<dd><p>Its argument is the title of a section or subsection,
                    i.e. a section reference.</p></dd>
<dt><b class="cmd">syscmd</b></dt>
<dd><p>Its argument is a command name (external, system command).</p></dd>
<dt><b class="cmd"><a href="../term/term.html">term</a></b></dt>
<dd><p>Its argument is a concept, or general terminology.</p></dd>
<dt><b class="cmd"><a href="../../../../index.html#key123">type</a></b></dt>
<dd><p>Its argument is a type name.</p></dd>
<dt><b class="cmd"><a href="../uri/uri.html">uri</a></b></dt>
<dd><p>Its argument is a uniform resource identifier, i.e an
                    external reference. A second argument can be used
                    to specify an explicit label for the reference in
                    question.</p></dd>
<dt><b class="cmd">usage</b></dt>
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
  impossible to directly use [<b class="cmd">lb</b>] and [<b class="cmd">rb</b>] within the text.
  ...
</pre>
</div>
<div id="subsection7" class="subsection"><h3><a name="subsection7">Cross-references</a></h3>
<p>The last two commands we have to discuss are for the declaration of
cross-references between documents, explicit and implicit. They are
<b class="cmd"><a href="../../../../index.html#key761">keywords</a></b> and <b class="cmd">see_also</b>. Both take an arbitrary number of
arguments, all of which have to be plain unmarked text. I.e. it is not
allowed to use markup on them. Both commands can be used multiple
times in a document. If that is done all arguments of all occurrences
of one of them are put together into a single set.</p>
<dl class="definitions">
<dt><b class="cmd"><a href="../../../../index.html#key761">keywords</a></b></dt>
<dd><p>The arguments of this command are interpreted as keywords describing
the document. A processor can use this information to create an index
indirectly linking the containing document to all documents with the
same keywords.</p></dd>
<dt><b class="cmd">see_also</b></dt>
<dd><p>The arguments of this command are interpreted as references to other
documents. A processor can format them as direct links to these







|





|







459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
  impossible to directly use [<b class="cmd">lb</b>] and [<b class="cmd">rb</b>] within the text.
  ...
</pre>
</div>
<div id="subsection7" class="subsection"><h3><a name="subsection7">Cross-references</a></h3>
<p>The last two commands we have to discuss are for the declaration of
cross-references between documents, explicit and implicit. They are
<b class="cmd"><a href="../../../../index.html#key760">keywords</a></b> and <b class="cmd">see_also</b>. Both take an arbitrary number of
arguments, all of which have to be plain unmarked text. I.e. it is not
allowed to use markup on them. Both commands can be used multiple
times in a document. If that is done all arguments of all occurrences
of one of them are put together into a single set.</p>
<dl class="definitions">
<dt><b class="cmd"><a href="../../../../index.html#key760">keywords</a></b></dt>
<dd><p>The arguments of this command are interpreted as keywords describing
the document. A processor can use this information to create an index
indirectly linking the containing document to all documents with the
same keywords.</p></dd>
<dt><b class="cmd">see_also</b></dt>
<dd><p>The arguments of this command are interpreted as references to other
documents. A processor can format them as direct links to these
595
596
597
598
599
600
601
602

603
604
605
606

607
608
609
610
611
612
613
614
615
616
617
618
619
620
their syntax.</p>
<p>To be able to validate a document while writing it, it is also
recommended to familiarize oneself with one of the applications for
the processing and conversion of doctools documents, i.e. either
Tcllib's easy and simple <b class="syscmd"><a href="../dtplite/dtplite.html">dtplite</a></b>, or Tclapps'
ultra-configurable <b class="syscmd">dtp</b>.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>

<p>This document, will undoubtedly contain bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have.</p>

</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="doctools_intro.html">doctools_intro</a>, <a href="doctools_lang_cmdref.html">doctools_lang_cmdref</a>, <a href="doctools_lang_faq.html">doctools_lang_faq</a>, <a href="doctools_lang_syntax.html">doctools_lang_syntax</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key144">doctools commands</a>, <a href="../../../../index.html#key146">doctools language</a>, <a href="../../../../index.html#key147">doctools markup</a>, <a href="../../../../index.html#key145">doctools syntax</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|
>
|

|
|
>





|








619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
their syntax.</p>
<p>To be able to validate a document while writing it, it is also
recommended to familiarize oneself with one of the applications for
the processing and conversion of doctools documents, i.e. either
Tcllib's easy and simple <b class="syscmd"><a href="../dtplite/dtplite.html">dtplite</a></b>, or Tclapps'
ultra-configurable <b class="syscmd">dtp</b>.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="doctools_intro.html">doctools_intro</a>, <a href="doctools_lang_cmdref.html">doctools_lang_cmdref</a>, <a href="doctools_lang_faq.html">doctools_lang_faq</a>, <a href="doctools_lang_syntax.html">doctools_lang_syntax</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key144">doctools commands</a>, <a href="../../../../index.html#key147">doctools language</a>, <a href="../../../../index.html#key146">doctools markup</a>, <a href="../../../../index.html#key145">doctools syntax</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools/doctools_lang_syntax.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Fundamentals</a></li>
<li class="section"><a href="#section3">Lexical definitions</a></li>
<li class="section"><a href="#section4">Syntax</a></li>
<li class="section"><a href="#section5">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Fundamentals</a></li>
<li class="section"><a href="#section3">Lexical definitions</a></li>
<li class="section"><a href="#section4">Syntax</a></li>
<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
207
208
209
210
211
212
213
214

215
216
217
218

219
220
221
222
223
224
225
226
227
228
229
230
231
232
def_list    = [ &lt;WHITE&gt; ] { (DEF|CALL)   paras }
enum_list   = [ &lt;WHITE&gt; ] { ENUM         paras }
item_list   = [ &lt;WHITE&gt; ] { ITEM         paras }
optd_list   = [ &lt;WHITE&gt; ] { OPT_DEF      paras }
tkoptd_list = [ &lt;WHITE&gt; ] { TKOPTION_DEF paras }
</pre>
</div>
<div id="section5" class="section"><h2><a name="section5">BUGS, IDEAS, FEEDBACK</a></h2>

<p>This document, will undoubtedly contain bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have.</p>

</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="doctools_intro.html">doctools_intro</a>, <a href="doctools_lang_cmdref.html">doctools_lang_cmdref</a>, <a href="doctools_lang_faq.html">doctools_lang_faq</a>, <a href="doctools_lang_intro.html">doctools_lang_intro</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key144">doctools commands</a>, <a href="../../../../index.html#key146">doctools language</a>, <a href="../../../../index.html#key147">doctools markup</a>, <a href="../../../../index.html#key145">doctools syntax</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|
>
|

|
|
>





|








207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
def_list    = [ &lt;WHITE&gt; ] { (DEF|CALL)   paras }
enum_list   = [ &lt;WHITE&gt; ] { ENUM         paras }
item_list   = [ &lt;WHITE&gt; ] { ITEM         paras }
optd_list   = [ &lt;WHITE&gt; ] { OPT_DEF      paras }
tkoptd_list = [ &lt;WHITE&gt; ] { TKOPTION_DEF paras }
</pre>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="doctools_intro.html">doctools_intro</a>, <a href="doctools_lang_cmdref.html">doctools_lang_cmdref</a>, <a href="doctools_lang_faq.html">doctools_lang_faq</a>, <a href="doctools_lang_intro.html">doctools_lang_intro</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key144">doctools commands</a>, <a href="../../../../index.html#key147">doctools language</a>, <a href="../../../../index.html#key146">doctools markup</a>, <a href="../../../../index.html#key145">doctools syntax</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools/doctools_plugin_apiref.html.

121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<li class="section"><a href="#section3">FRONTEND COMMANDS</a></li>
<li class="section"><a href="#section4">PLUGIN COMMANDS</a>
<ul>
<li class="subsection"><a href="#subsection1">Management commands</a></li>
<li class="subsection"><a href="#subsection2">Formatting commands</a></li>
</ul>
</li>
<li class="section"><a href="#section5">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<li class="section"><a href="#section3">FRONTEND COMMANDS</a></li>
<li class="section"><a href="#section4">PLUGIN COMMANDS</a>
<ul>
<li class="subsection"><a href="#subsection1">Management commands</a></li>
<li class="subsection"><a href="#subsection2">Formatting commands</a></li>
</ul>
</li>
<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
467
468
469
470
471
472
473
474

475
476
477
478

479
480
481
482
483
484
485
486
487
488
489
490
491
492
plain text.</p>
<p>The formatted text is expected as the result of the command,
and added to the output. If no special processing is required it has
to simply return its argument without change.</p></dd>
</dl>
</div>
</div>
<div id="section5" class="section"><h2><a name="section5">BUGS, IDEAS, FEEDBACK</a></h2>

<p>This document, will undoubtedly contain bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have.</p>

</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="doctools.html">doctools</a>, <a href="doctools_intro.html">doctools_intro</a>, <a href="doctools_lang_cmdref.html">doctools_lang_cmdref</a>, <a href="doctools_lang_faq.html">doctools_lang_faq</a>, <a href="doctools_lang_intro.html">doctools_lang_intro</a>, <a href="doctools_lang_syntax.html">doctools_lang_syntax</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key642">document</a>, <a href="../../../../index.html#key640">formatter</a>, <a href="../../../../index.html#key641">formatting engine</a>, <a href="../../../../index.html#key18">manpage</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007-2010 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|
>
|

|
|
>





|








467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
plain text.</p>
<p>The formatted text is expected as the result of the command,
and added to the output. If no special processing is required it has
to simply return its argument without change.</p></dd>
</dl>
</div>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="doctools.html">doctools</a>, <a href="doctools_intro.html">doctools_intro</a>, <a href="doctools_lang_cmdref.html">doctools_lang_cmdref</a>, <a href="doctools_lang_faq.html">doctools_lang_faq</a>, <a href="doctools_lang_intro.html">doctools_lang_intro</a>, <a href="doctools_lang_syntax.html">doctools_lang_syntax</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key642">document</a>, <a href="../../../../index.html#key640">formatter</a>, <a href="../../../../index.html#key641">formatting engine</a>, <a href="../../../../index.html#key17">manpage</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007-2010 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools/mpexpand.html.

114
115
116
117
118
119
120

121
122
123
124
125
126
127
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">NOTES</a></li>

<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







>







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">NOTES</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
172
173
174
175
176
177
178








179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
recognized through the extension &quot;<b class="file">.man</b>&quot;. If <i class="arg">-verbose</i> is
specified the command will list its actions before executing them.</p>
<p>The <i class="arg">module</i> information is passed to <b class="cmd">mpexpand</b>.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">NOTES</a></h2>
<p>Possible future formats are plain text, pdf and postscript.</p>








</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>expander(n), format(n), formatter(n)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key17">HTML</a>, <a href="../../../../index.html#key20">TMML</a>, <a href="../../../../index.html#key19">conversion</a>, <a href="../../../../index.html#key18">manpage</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key21">nroff</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;<br>
Copyright &copy; 2003 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







>
>
>
>
>
>
>
>





|









173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
recognized through the extension &quot;<b class="file">.man</b>&quot;. If <i class="arg">-verbose</i> is
specified the command will list its actions before executing them.</p>
<p>The <i class="arg">module</i> information is passed to <b class="cmd">mpexpand</b>.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">NOTES</a></h2>
<p>Possible future formats are plain text, pdf and postscript.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>expander(n), format(n), formatter(n)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key18">HTML</a>, <a href="../../../../index.html#key19">TMML</a>, <a href="../../../../index.html#key20">conversion</a>, <a href="../../../../index.html#key17">manpage</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key21">nroff</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;<br>
Copyright &copy; 2003 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools2base/html_cssdefaults.html.

137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package provides a single command providing access to the text of
the default CSS style to use for HTML markup generated by the various
HTML export plugins.</p>
<p>This is an internal package of doctools, for use by <i class="term"><a href="../../../../index.html#key165">export</a></i> plugins,
i.e. the packages converting doctools related documented into other
formats, most notably <i class="term"><a href="../../../../index.html#key17">HTML</a></i>.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::doctools::html::cssdefaults::contents</b></a></dt>
<dd><p>This command returns the text of the default CSS style to use for HTML
markup generated by the various HTML export plugins.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key383">CSS</a>, <a href="../../../../index.html#key17">HTML</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key382">style</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>







|












|




|







137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package provides a single command providing access to the text of
the default CSS style to use for HTML markup generated by the various
HTML export plugins.</p>
<p>This is an internal package of doctools, for use by <i class="term"><a href="../../../../index.html#key165">export</a></i> plugins,
i.e. the packages converting doctools related documented into other
formats, most notably <i class="term"><a href="../../../../index.html#key18">HTML</a></i>.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::doctools::html::cssdefaults::contents</b></a></dt>
<dd><p>This command returns the text of the default CSS style to use for HTML
markup generated by the various HTML export plugins.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key383">CSS</a>, <a href="../../../../index.html#key18">HTML</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key382">style</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>

Changes to embedded/www/tcllib/files/modules/doctools2base/nroff_manmacros.html.

150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
generated by the various NROFF export plugins.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key504">macros</a>, <a href="../../../../index.html#key503">man_macros</a>, <a href="../../../../index.html#key21">nroff</a>, <a href="../../../../index.html#key384">plugin</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
generated by the various NROFF export plugins.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key504">macros</a>, <a href="../../../../index.html#key503">man_macros</a>, <a href="../../../../index.html#key21">nroff</a>, <a href="../../../../index.html#key384">plugin</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/doctools2base/tcl_parse.html.

252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
Word nodes cannot be leaves.</p></li>
</ol>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key255">Tcl syntax</a>, <a href="../../../../index.html#key256">command</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key254">subst</a>, <a href="../../../../index.html#key253">word</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
Word nodes cannot be leaves.</p></li>
</ol>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key255">Tcl syntax</a>, <a href="../../../../index.html#key256">command</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key254">subst</a>, <a href="../../../../index.html#key253">word</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/doctools2base/tcllib_msgcat.html.

166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
result of <b class="cmd">msgcat::mcpreferences</b>.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key48">catalog package</a>, <a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key246">doctoc</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key42">i18n</a>, <a href="../../../../index.html#key46">internationalization</a>, <a href="../../../../index.html#key49">l10n</a>, <a href="../../../../index.html#key45">localization</a>, <a href="../../../../index.html#key43">message catalog</a>, <a href="../../../../index.html#key44">message package</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
result of <b class="cmd">msgcat::mcpreferences</b>.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key48">catalog package</a>, <a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key246">doctoc</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key42">i18n</a>, <a href="../../../../index.html#key46">internationalization</a>, <a href="../../../../index.html#key49">l10n</a>, <a href="../../../../index.html#key45">localization</a>, <a href="../../../../index.html#key43">message catalog</a>, <a href="../../../../index.html#key44">message package</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/doctools2idx/container.html.

185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
This is the only format directly known to this class. Conversions from
and to any other format are handled by export and import manager
objects. These may be attached to a container, but do not have to be,
it is merely a convenience.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Concepts</a></h2>
<ol class="enumerated">
<li><p>A <i class="term"><a href="../../../../index.html#key184">keyword index</a></i> consists of a (possibly empty) set of <i class="term"><a href="../../../../index.html#key761">keywords</a></i>.</p></li>
<li><p>Each keyword in the set is identified by its name.</p></li>
<li><p>Each keyword has a (possibly empty) set of <i class="term">references</i>.</p></li>
<li><p>A reference can be associated with more than one keyword.</p></li>
<li><p>A reference not associated with at least one keyword is not possible
however.</p></li>
<li><p>Each reference is identified by its target, specified as either an url
or symbolic filename, depending on the type of reference (<b class="const">url</b>,







|







185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
This is the only format directly known to this class. Conversions from
and to any other format are handled by export and import manager
objects. These may be attached to a container, but do not have to be,
it is merely a convenience.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Concepts</a></h2>
<ol class="enumerated">
<li><p>A <i class="term"><a href="../../../../index.html#key184">keyword index</a></i> consists of a (possibly empty) set of <i class="term"><a href="../../../../index.html#key760">keywords</a></i>.</p></li>
<li><p>Each keyword in the set is identified by its name.</p></li>
<li><p>Each keyword has a (possibly empty) set of <i class="term">references</i>.</p></li>
<li><p>A reference can be associated with more than one keyword.</p></li>
<li><p>A reference not associated with at least one keyword is not possible
however.</p></li>
<li><p>Each reference is identified by its target, specified as either an url
or symbolic filename, depending on the type of reference (<b class="const">url</b>,
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
</ol>
</div>
<div id="section3" class="section"><h2><a name="section3">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Package commands</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::doctools::idx</b> <i class="arg">objectName</i></a></dt>
<dd><p>This command creates a new container object with an associated Tcl
command whose name is <i class="arg">objectName</i>. This <i class="term"><a href="../../../../index.html#key238">object</a></i> command is
explained in full detail in the sections <span class="sectref"><a href="#subsection2">Object command</a></span>
and <span class="sectref"><a href="#subsection3">Object methods</a></span>. The object command will be created
under the current namespace if the <i class="arg">objectName</i> is not fully
qualified, and in the specified namespace otherwise.</p></dd>
</dl>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Object command</a></h3>







|







219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
</ol>
</div>
<div id="section3" class="section"><h2><a name="section3">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Package commands</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::doctools::idx</b> <i class="arg">objectName</i></a></dt>
<dd><p>This command creates a new container object with an associated Tcl
command whose name is <i class="arg">objectName</i>. This <i class="term"><a href="../../../../index.html#key237">object</a></i> command is
explained in full detail in the sections <span class="sectref"><a href="#subsection2">Object command</a></span>
and <span class="sectref"><a href="#subsection3">Object methods</a></span>. The object command will be created
under the current namespace if the <i class="arg">objectName</i> is not fully
qualified, and in the specified namespace otherwise.</p></dd>
</dl>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Object command</a></h3>
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
the data from the specified format to a serialization it can handle.
In that case an error will be thrown if the container has no import
manager attached to it.</p>
<p>The result of the method is the empty string.</p></dd>
<dt><a name="23"><i class="arg">objectName</i> <b class="method">deserialize +=</b> <i class="arg">data</i> <span class="opt">?<i class="arg">format</i>?</span></a></dt>
<dd><p>This method behaves like <b class="method">deserialize =</b> in its essentials,
except that it merges the keyword index in the <i class="arg">data</i> to its
contents instead of replacing it. 
The method will throw an error if merging is not possible, i.e. would
produce an invalid index. The existing content is left unchanged in
that case.</p>
<p>The result of the method is the empty string.</p></dd>
<dt><a name="24"><i class="arg">objectName</i> <b class="method">serialize</b> <span class="opt">?<i class="arg">format</i>?</span></a></dt>
<dd><p>This method returns the keyword index contained in the object. If no
<i class="arg">format</i> is not specified the returned result is the canonical







|







343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
the data from the specified format to a serialization it can handle.
In that case an error will be thrown if the container has no import
manager attached to it.</p>
<p>The result of the method is the empty string.</p></dd>
<dt><a name="23"><i class="arg">objectName</i> <b class="method">deserialize +=</b> <i class="arg">data</i> <span class="opt">?<i class="arg">format</i>?</span></a></dt>
<dd><p>This method behaves like <b class="method">deserialize =</b> in its essentials,
except that it merges the keyword index in the <i class="arg">data</i> to its
contents instead of replacing it.
The method will throw an error if merging is not possible, i.e. would
produce an invalid index. The existing content is left unchanged in
that case.</p>
<p>The result of the method is the empty string.</p></dd>
<dt><a name="24"><i class="arg">objectName</i> <b class="method">serialize</b> <span class="opt">?<i class="arg">format</i>?</span></a></dt>
<dd><p>This method returns the keyword index contained in the object. If no
<i class="arg">format</i> is not specified the returned result is the canonical
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
this order.</p>
<p>Any key here has to be associated with at least one keyword,
i.e. occur in at least one of the reference lists which are the values
in the <b class="const">keywords</b> dictionary, see previous item for its
definition.</p></dd>
</dl>
</li>
<li><p>The <i class="term"><a href="../../../../index.html#key124">type</a></i> of a reference can be one of two values,</p>
<dl class="definitions">
<dt><b class="const">manpage</b></dt>
<dd><p>The identifier of the reference is interpreted as symbolic file name,
refering to one of the documents the index was made for.</p></dd>
<dt><b class="const">url</b></dt>
<dd><p>The identifier of the reference is interpreted as an url, refering to
some external location, like a website, etc.</p></dd>







|







398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
this order.</p>
<p>Any key here has to be associated with at least one keyword,
i.e. occur in at least one of the reference lists which are the values
in the <b class="const">keywords</b> dictionary, see previous item for its
definition.</p></dd>
</dl>
</li>
<li><p>The <i class="term"><a href="../../../../index.html#key123">type</a></i> of a reference can be one of two values,</p>
<dl class="definitions">
<dt><b class="const">manpage</b></dt>
<dd><p>The identifier of the reference is interpreted as symbolic file name,
refering to one of the documents the index was made for.</p></dd>
<dt><b class="const">url</b></dt>
<dd><p>The identifier of the reference is interpreted as an url, refering to
some external location, like a website, etc.</p></dd>
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
</ol></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key17">HTML</a>, <a href="../../../../index.html#key20">TMML</a>, <a href="../../../../index.html#key19">conversion</a>, <a href="../../../../index.html#key352">docidx markup</a>, <a href="../../../../index.html#key185">documentation</a>, <a href="../../../../index.html#key331">formatting</a>, <a href="../../../../index.html#key563">generation</a>, <a href="../../../../index.html#key182">index</a>, <a href="../../../../index.html#key190">json</a>, <a href="../../../../index.html#key184">keyword index</a>, <a href="../../../../index.html#key186">latex</a>, <a href="../../../../index.html#key18">manpage</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key21">nroff</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key564">reference</a>, <a href="../../../../index.html#key562">tcler's wiki</a>, <a href="../../../../index.html#key481">text</a>, <a href="../../../../index.html#key508">url</a>, <a href="../../../../index.html#key183">wiki</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|




|








428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
</ol></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key18">HTML</a>, <a href="../../../../index.html#key19">TMML</a>, <a href="../../../../index.html#key20">conversion</a>, <a href="../../../../index.html#key352">docidx markup</a>, <a href="../../../../index.html#key185">documentation</a>, <a href="../../../../index.html#key331">formatting</a>, <a href="../../../../index.html#key563">generation</a>, <a href="../../../../index.html#key182">index</a>, <a href="../../../../index.html#key190">json</a>, <a href="../../../../index.html#key184">keyword index</a>, <a href="../../../../index.html#key186">latex</a>, <a href="../../../../index.html#key17">manpage</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key21">nroff</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key564">reference</a>, <a href="../../../../index.html#key562">tcler's wiki</a>, <a href="../../../../index.html#key480">text</a>, <a href="../../../../index.html#key508">url</a>, <a href="../../../../index.html#key183">wiki</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools2idx/export.html.

156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
<li><a href="#10"><b class="cmd"><a href="../../../../index.html#key165">export</a></b> <i class="arg">serial</i> <i class="arg">configuration</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package provides a class to manage the plugins for the export of
keyword indices to other formats, i.e. their conversion to, for
example <i class="term"><a href="../../../../index.html#key50">docidx</a></i>, <i class="term"><a href="../../../../index.html#key17">HTML</a></i>, etc.</p>
<p>This is one of the three public pillars the management of keyword
indices resides on. The other two pillars are</p>
<ol class="enumerated">
<li><p><i class="term"><a href="import.html">Importing keyword indices</a></i>, and</p></li>
<li><p><i class="term"><a href="container.html">Holding keyword indices</a></i></p></li>
</ol>
<p>For information about the <span class="sectref"><a href="#section2">Concepts</a></span> of keyword indices, and







|







156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
<li><a href="#10"><b class="cmd"><a href="../../../../index.html#key165">export</a></b> <i class="arg">serial</i> <i class="arg">configuration</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package provides a class to manage the plugins for the export of
keyword indices to other formats, i.e. their conversion to, for
example <i class="term"><a href="../../../../index.html#key50">docidx</a></i>, <i class="term"><a href="../../../../index.html#key18">HTML</a></i>, etc.</p>
<p>This is one of the three public pillars the management of keyword
indices resides on. The other two pillars are</p>
<ol class="enumerated">
<li><p><i class="term"><a href="import.html">Importing keyword indices</a></i>, and</p></li>
<li><p><i class="term"><a href="container.html">Holding keyword indices</a></i></p></li>
</ol>
<p>For information about the <span class="sectref"><a href="#section2">Concepts</a></span> of keyword indices, and
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
<i class="term">plugin writer</i>s reading and understanding the section
containing the <span class="sectref"><a href="#section4">Export plugin API v2 reference</a></span> is an
absolute necessity, as it specifies the interaction between this
package and its plugins in detail.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Concepts</a></h2>
<ol class="enumerated">
<li><p>A <i class="term"><a href="../../../../index.html#key184">keyword index</a></i> consists of a (possibly empty) set of <i class="term"><a href="../../../../index.html#key761">keywords</a></i>.</p></li>
<li><p>Each keyword in the set is identified by its name.</p></li>
<li><p>Each keyword has a (possibly empty) set of <i class="term">references</i>.</p></li>
<li><p>A reference can be associated with more than one keyword.</p></li>
<li><p>A reference not associated with at least one keyword is not possible
however.</p></li>
<li><p>Each reference is identified by its target, specified as either an url
or symbolic filename, depending on the type of reference (<b class="const">url</b>,







|







210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
<i class="term">plugin writer</i>s reading and understanding the section
containing the <span class="sectref"><a href="#section4">Export plugin API v2 reference</a></span> is an
absolute necessity, as it specifies the interaction between this
package and its plugins in detail.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Concepts</a></h2>
<ol class="enumerated">
<li><p>A <i class="term"><a href="../../../../index.html#key184">keyword index</a></i> consists of a (possibly empty) set of <i class="term"><a href="../../../../index.html#key760">keywords</a></i>.</p></li>
<li><p>Each keyword in the set is identified by its name.</p></li>
<li><p>Each keyword has a (possibly empty) set of <i class="term">references</i>.</p></li>
<li><p>A reference can be associated with more than one keyword.</p></li>
<li><p>A reference not associated with at least one keyword is not possible
however.</p></li>
<li><p>Each reference is identified by its target, specified as either an url
or symbolic filename, depending on the type of reference (<b class="const">url</b>,
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
</ol>
</div>
<div id="section3" class="section"><h2><a name="section3">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Package commands</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::doctools::idx::export</b> <i class="arg">objectName</i></a></dt>
<dd><p>This command creates a new export manager object with an associated
Tcl command whose name is <i class="arg">objectName</i>. This <i class="term"><a href="../../../../index.html#key238">object</a></i> command
is explained in full detail in the sections <span class="sectref"><a href="#subsection2">Object command</a></span>
and <span class="sectref"><a href="#subsection3">Object methods</a></span>. The object command will be created
under the current namespace if the <i class="arg">objectName</i> is not fully
qualified, and in the specified namespace otherwise.</p></dd>
</dl>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Object command</a></h3>







|







244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
</ol>
</div>
<div id="section3" class="section"><h2><a name="section3">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Package commands</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::doctools::idx::export</b> <i class="arg">objectName</i></a></dt>
<dd><p>This command creates a new export manager object with an associated
Tcl command whose name is <i class="arg">objectName</i>. This <i class="term"><a href="../../../../index.html#key237">object</a></i> command
is explained in full detail in the sections <span class="sectref"><a href="#subsection2">Object command</a></span>
and <span class="sectref"><a href="#subsection3">Object methods</a></span>. The object command will be created
under the current namespace if the <i class="arg">objectName</i> is not fully
qualified, and in the specified namespace otherwise.</p></dd>
</dl>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Object command</a></h3>
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
this order.</p>
<p>Any key here has to be associated with at least one keyword,
i.e. occur in at least one of the reference lists which are the values
in the <b class="const">keywords</b> dictionary, see previous item for its
definition.</p></dd>
</dl>
</li>
<li><p>The <i class="term"><a href="../../../../index.html#key124">type</a></i> of a reference can be one of two values,</p>
<dl class="definitions">
<dt><b class="const">manpage</b></dt>
<dd><p>The identifier of the reference is interpreted as symbolic file name,
refering to one of the documents the index was made for.</p></dd>
<dt><b class="const">url</b></dt>
<dd><p>The identifier of the reference is interpreted as an url, refering to
some external location, like a website, etc.</p></dd>







|







412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
this order.</p>
<p>Any key here has to be associated with at least one keyword,
i.e. occur in at least one of the reference lists which are the values
in the <b class="const">keywords</b> dictionary, see previous item for its
definition.</p></dd>
</dl>
</li>
<li><p>The <i class="term"><a href="../../../../index.html#key123">type</a></i> of a reference can be one of two values,</p>
<dl class="definitions">
<dt><b class="const">manpage</b></dt>
<dd><p>The identifier of the reference is interpreted as symbolic file name,
refering to one of the documents the index was made for.</p></dd>
<dt><b class="const">url</b></dt>
<dd><p>The identifier of the reference is interpreted as an url, refering to
some external location, like a website, etc.</p></dd>
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
</ol></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key17">HTML</a>, <a href="../../../../index.html#key19">conversion</a>, <a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key185">documentation</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key331">formatting</a>, <a href="../../../../index.html#key563">generation</a>, <a href="../../../../index.html#key182">index</a>, <a href="../../../../index.html#key190">json</a>, <a href="../../../../index.html#key184">keyword index</a>, <a href="../../../../index.html#key18">manpage</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key21">nroff</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key564">reference</a>, <a href="../../../../index.html#key562">tcler's wiki</a>, <a href="../../../../index.html#key481">text</a>, <a href="../../../../index.html#key508">url</a>, <a href="../../../../index.html#key183">wiki</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|




|








442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
</ol></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key18">HTML</a>, <a href="../../../../index.html#key20">conversion</a>, <a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key185">documentation</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key331">formatting</a>, <a href="../../../../index.html#key563">generation</a>, <a href="../../../../index.html#key182">index</a>, <a href="../../../../index.html#key190">json</a>, <a href="../../../../index.html#key184">keyword index</a>, <a href="../../../../index.html#key17">manpage</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key21">nroff</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key564">reference</a>, <a href="../../../../index.html#key562">tcler's wiki</a>, <a href="../../../../index.html#key480">text</a>, <a href="../../../../index.html#key508">url</a>, <a href="../../../../index.html#key183">wiki</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools2idx/export_docidx.html.

204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
implies that <b class="variable">newlines</b> is set. This effect is independent of the
value for <b class="variable">aligned</b> however.</p>
<p>If this flag is not set (the default), the output is formatted as per
the values of <b class="variable">newlines</b> and <b class="variable">aligned</b>, and no indenting is
done.</p></dd>
<dt>boolean <i class="arg">aligned</i></dt>
<dd><p>If this flag is set the generator ensures that the arguments for the
<b class="cmd"><a href="../../../../index.html#key18">manpage</a></b> and <b class="cmd"><a href="../../../../index.html#key508">url</a></b> commands in a keyword section are aligned
vertically for a nice table effect. To make this work this also
implies that <b class="variable">newlines</b> is set. This effect is independent of the
value for <b class="variable">indented</b> however.</p>
<p>If this flag is not set (the default), the output is formatted as per
the values of <b class="variable">newlines</b> and <b class="variable">indented</b>, and no alignment is
done.</p></dd>
</dl>







|







204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
implies that <b class="variable">newlines</b> is set. This effect is independent of the
value for <b class="variable">aligned</b> however.</p>
<p>If this flag is not set (the default), the output is formatted as per
the values of <b class="variable">newlines</b> and <b class="variable">aligned</b>, and no indenting is
done.</p></dd>
<dt>boolean <i class="arg">aligned</i></dt>
<dd><p>If this flag is set the generator ensures that the arguments for the
<b class="cmd"><a href="../../../../index.html#key17">manpage</a></b> and <b class="cmd"><a href="../../../../index.html#key508">url</a></b> commands in a keyword section are aligned
vertically for a nice table effect. To make this work this also
implies that <b class="variable">newlines</b> is set. This effect is independent of the
value for <b class="variable">indented</b> however.</p>
<p>If this flag is not set (the default), the output is formatted as per
the values of <b class="variable">newlines</b> and <b class="variable">indented</b>, and no alignment is
done.</p></dd>
</dl>
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
this order.</p>
<p>Any key here has to be associated with at least one keyword,
i.e. occur in at least one of the reference lists which are the values
in the <b class="const">keywords</b> dictionary, see previous item for its
definition.</p></dd>
</dl>
</li>
<li><p>The <i class="term"><a href="../../../../index.html#key124">type</a></i> of a reference can be one of two values,</p>
<dl class="definitions">
<dt><b class="const">manpage</b></dt>
<dd><p>The identifier of the reference is interpreted as symbolic file name,
refering to one of the documents the index was made for.</p></dd>
<dt><b class="const">url</b></dt>
<dd><p>The identifier of the reference is interpreted as an url, refering to
some external location, like a website, etc.</p></dd>







|







254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
this order.</p>
<p>Any key here has to be associated with at least one keyword,
i.e. occur in at least one of the reference lists which are the values
in the <b class="const">keywords</b> dictionary, see previous item for its
definition.</p></dd>
</dl>
</li>
<li><p>The <i class="term"><a href="../../../../index.html#key123">type</a></i> of a reference can be one of two values,</p>
<dl class="definitions">
<dt><b class="const">manpage</b></dt>
<dd><p>The identifier of the reference is interpreted as symbolic file name,
refering to one of the documents the index was made for.</p></dd>
<dt><b class="const">url</b></dt>
<dd><p>The identifier of the reference is interpreted as an url, refering to
some external location, like a website, etc.</p></dd>
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
</ol></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key182">index</a>, <a href="../../../../index.html#key115">serialization</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text formatter plugin</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|













284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
</ol></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key182">index</a>, <a href="../../../../index.html#key115">serialization</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text formatter plugin</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools2idx/export_html.html.

316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
this order.</p>
<p>Any key here has to be associated with at least one keyword,
i.e. occur in at least one of the reference lists which are the values
in the <b class="const">keywords</b> dictionary, see previous item for its
definition.</p></dd>
</dl>
</li>
<li><p>The <i class="term"><a href="../../../../index.html#key124">type</a></i> of a reference can be one of two values,</p>
<dl class="definitions">
<dt><b class="const">manpage</b></dt>
<dd><p>The identifier of the reference is interpreted as symbolic file name,
refering to one of the documents the index was made for.</p></dd>
<dt><b class="const">url</b></dt>
<dd><p>The identifier of the reference is interpreted as an url, refering to
some external location, like a website, etc.</p></dd>







|







316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
this order.</p>
<p>Any key here has to be associated with at least one keyword,
i.e. occur in at least one of the reference lists which are the values
in the <b class="const">keywords</b> dictionary, see previous item for its
definition.</p></dd>
</dl>
</li>
<li><p>The <i class="term"><a href="../../../../index.html#key123">type</a></i> of a reference can be one of two values,</p>
<dl class="definitions">
<dt><b class="const">manpage</b></dt>
<dd><p>The identifier of the reference is interpreted as symbolic file name,
refering to one of the documents the index was made for.</p></dd>
<dt><b class="const">url</b></dt>
<dd><p>The identifier of the reference is interpreted as an url, refering to
some external location, like a website, etc.</p></dd>
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
</ol></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key17">HTML</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key182">index</a>, <a href="../../../../index.html#key115">serialization</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text formatter plugin</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|




|








346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
</ol></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key18">HTML</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key182">index</a>, <a href="../../../../index.html#key115">serialization</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text formatter plugin</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools2idx/export_json.html.

269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
this order.</p>
<p>Any key here has to be associated with at least one keyword,
i.e. occur in at least one of the reference lists which are the values
in the <b class="const">keywords</b> dictionary, see previous item for its
definition.</p></dd>
</dl>
</li>
<li><p>The <i class="term"><a href="../../../../index.html#key124">type</a></i> of a reference can be one of two values,</p>
<dl class="definitions">
<dt><b class="const">manpage</b></dt>
<dd><p>The identifier of the reference is interpreted as symbolic file name,
refering to one of the documents the index was made for.</p></dd>
<dt><b class="const">url</b></dt>
<dd><p>The identifier of the reference is interpreted as an url, refering to
some external location, like a website, etc.</p></dd>







|







269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
this order.</p>
<p>Any key here has to be associated with at least one keyword,
i.e. occur in at least one of the reference lists which are the values
in the <b class="const">keywords</b> dictionary, see previous item for its
definition.</p></dd>
</dl>
</li>
<li><p>The <i class="term"><a href="../../../../index.html#key123">type</a></i> of a reference can be one of two values,</p>
<dl class="definitions">
<dt><b class="const">manpage</b></dt>
<dd><p>The identifier of the reference is interpreted as symbolic file name,
refering to one of the documents the index was made for.</p></dd>
<dt><b class="const">url</b></dt>
<dd><p>The identifier of the reference is interpreted as an url, refering to
some external location, like a website, etc.</p></dd>
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
</ol></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key257">JSON</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key182">index</a>, <a href="../../../../index.html#key115">serialization</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text formatter plugin</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|













299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
</ol></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key257">JSON</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key182">index</a>, <a href="../../../../index.html#key115">serialization</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text formatter plugin</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools2idx/export_nroff.html.

223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
this order.</p>
<p>Any key here has to be associated with at least one keyword,
i.e. occur in at least one of the reference lists which are the values
in the <b class="const">keywords</b> dictionary, see previous item for its
definition.</p></dd>
</dl>
</li>
<li><p>The <i class="term"><a href="../../../../index.html#key124">type</a></i> of a reference can be one of two values,</p>
<dl class="definitions">
<dt><b class="const">manpage</b></dt>
<dd><p>The identifier of the reference is interpreted as symbolic file name,
refering to one of the documents the index was made for.</p></dd>
<dt><b class="const">url</b></dt>
<dd><p>The identifier of the reference is interpreted as an url, refering to
some external location, like a website, etc.</p></dd>







|







223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
this order.</p>
<p>Any key here has to be associated with at least one keyword,
i.e. occur in at least one of the reference lists which are the values
in the <b class="const">keywords</b> dictionary, see previous item for its
definition.</p></dd>
</dl>
</li>
<li><p>The <i class="term"><a href="../../../../index.html#key123">type</a></i> of a reference can be one of two values,</p>
<dl class="definitions">
<dt><b class="const">manpage</b></dt>
<dd><p>The identifier of the reference is interpreted as symbolic file name,
refering to one of the documents the index was made for.</p></dd>
<dt><b class="const">url</b></dt>
<dd><p>The identifier of the reference is interpreted as an url, refering to
some external location, like a website, etc.</p></dd>
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
</ol></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key182">index</a>, <a href="../../../../index.html#key21">nroff</a>, <a href="../../../../index.html#key115">serialization</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text formatter plugin</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|













253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
</ol></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key182">index</a>, <a href="../../../../index.html#key21">nroff</a>, <a href="../../../../index.html#key115">serialization</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text formatter plugin</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools2idx/export_text.html.

210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
this order.</p>
<p>Any key here has to be associated with at least one keyword,
i.e. occur in at least one of the reference lists which are the values
in the <b class="const">keywords</b> dictionary, see previous item for its
definition.</p></dd>
</dl>
</li>
<li><p>The <i class="term"><a href="../../../../index.html#key124">type</a></i> of a reference can be one of two values,</p>
<dl class="definitions">
<dt><b class="const">manpage</b></dt>
<dd><p>The identifier of the reference is interpreted as symbolic file name,
refering to one of the documents the index was made for.</p></dd>
<dt><b class="const">url</b></dt>
<dd><p>The identifier of the reference is interpreted as an url, refering to
some external location, like a website, etc.</p></dd>







|







210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
this order.</p>
<p>Any key here has to be associated with at least one keyword,
i.e. occur in at least one of the reference lists which are the values
in the <b class="const">keywords</b> dictionary, see previous item for its
definition.</p></dd>
</dl>
</li>
<li><p>The <i class="term"><a href="../../../../index.html#key123">type</a></i> of a reference can be one of two values,</p>
<dl class="definitions">
<dt><b class="const">manpage</b></dt>
<dd><p>The identifier of the reference is interpreted as symbolic file name,
refering to one of the documents the index was made for.</p></dd>
<dt><b class="const">url</b></dt>
<dd><p>The identifier of the reference is interpreted as an url, refering to
some external location, like a website, etc.</p></dd>
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
</ol></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key182">index</a>, <a href="../../../../index.html#key164">plain text</a>, <a href="../../../../index.html#key115">serialization</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text formatter plugin</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|













240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
</ol></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key182">index</a>, <a href="../../../../index.html#key164">plain text</a>, <a href="../../../../index.html#key115">serialization</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text formatter plugin</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools2idx/export_wiki.html.

223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
this order.</p>
<p>Any key here has to be associated with at least one keyword,
i.e. occur in at least one of the reference lists which are the values
in the <b class="const">keywords</b> dictionary, see previous item for its
definition.</p></dd>
</dl>
</li>
<li><p>The <i class="term"><a href="../../../../index.html#key124">type</a></i> of a reference can be one of two values,</p>
<dl class="definitions">
<dt><b class="const">manpage</b></dt>
<dd><p>The identifier of the reference is interpreted as symbolic file name,
refering to one of the documents the index was made for.</p></dd>
<dt><b class="const">url</b></dt>
<dd><p>The identifier of the reference is interpreted as an url, refering to
some external location, like a website, etc.</p></dd>







|







223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
this order.</p>
<p>Any key here has to be associated with at least one keyword,
i.e. occur in at least one of the reference lists which are the values
in the <b class="const">keywords</b> dictionary, see previous item for its
definition.</p></dd>
</dl>
</li>
<li><p>The <i class="term"><a href="../../../../index.html#key123">type</a></i> of a reference can be one of two values,</p>
<dl class="definitions">
<dt><b class="const">manpage</b></dt>
<dd><p>The identifier of the reference is interpreted as symbolic file name,
refering to one of the documents the index was made for.</p></dd>
<dt><b class="const">url</b></dt>
<dd><p>The identifier of the reference is interpreted as an url, refering to
some external location, like a website, etc.</p></dd>
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
</ol></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key182">index</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key183">wiki</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text formatter plugin</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|













253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
</ol></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key182">index</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key183">wiki</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text formatter plugin</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools2idx/import.html.

209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
<i class="term">plugin writer</i>s reading and understanding the section
containing the <span class="sectref"><a href="#section4">Import plugin API v2 reference</a></span> is an
absolute necessity, as it specifies the interaction between this
package and its plugins in detail.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Concepts</a></h2>
<ol class="enumerated">
<li><p>A <i class="term"><a href="../../../../index.html#key184">keyword index</a></i> consists of a (possibly empty) set of <i class="term"><a href="../../../../index.html#key761">keywords</a></i>.</p></li>
<li><p>Each keyword in the set is identified by its name.</p></li>
<li><p>Each keyword has a (possibly empty) set of <i class="term">references</i>.</p></li>
<li><p>A reference can be associated with more than one keyword.</p></li>
<li><p>A reference not associated with at least one keyword is not possible
however.</p></li>
<li><p>Each reference is identified by its target, specified as either an url
or symbolic filename, depending on the type of reference (<b class="const">url</b>,







|







209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
<i class="term">plugin writer</i>s reading and understanding the section
containing the <span class="sectref"><a href="#section4">Import plugin API v2 reference</a></span> is an
absolute necessity, as it specifies the interaction between this
package and its plugins in detail.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Concepts</a></h2>
<ol class="enumerated">
<li><p>A <i class="term"><a href="../../../../index.html#key184">keyword index</a></i> consists of a (possibly empty) set of <i class="term"><a href="../../../../index.html#key760">keywords</a></i>.</p></li>
<li><p>Each keyword in the set is identified by its name.</p></li>
<li><p>Each keyword has a (possibly empty) set of <i class="term">references</i>.</p></li>
<li><p>A reference can be associated with more than one keyword.</p></li>
<li><p>A reference not associated with at least one keyword is not possible
however.</p></li>
<li><p>Each reference is identified by its target, specified as either an url
or symbolic filename, depending on the type of reference (<b class="const">url</b>,
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
</ol>
</div>
<div id="section3" class="section"><h2><a name="section3">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Package commands</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::doctools::idx::import</b> <i class="arg">objectName</i></a></dt>
<dd><p>This command creates a new import manager object with an associated
Tcl command whose name is <i class="arg">objectName</i>. This <i class="term"><a href="../../../../index.html#key238">object</a></i> command
is explained in full detail in the sections <span class="sectref"><a href="#subsection2">Object command</a></span>
and <span class="sectref"><a href="#subsection3">Object methods</a></span>. The object command will be created
under the current namespace if the <i class="arg">objectName</i> is not fully
qualified, and in the specified namespace otherwise.</p></dd>
</dl>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Object command</a></h3>







|







243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
</ol>
</div>
<div id="section3" class="section"><h2><a name="section3">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Package commands</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::doctools::idx::import</b> <i class="arg">objectName</i></a></dt>
<dd><p>This command creates a new import manager object with an associated
Tcl command whose name is <i class="arg">objectName</i>. This <i class="term"><a href="../../../../index.html#key237">object</a></i> command
is explained in full detail in the sections <span class="sectref"><a href="#subsection2">Object command</a></span>
and <span class="sectref"><a href="#subsection3">Object methods</a></span>. The object command will be created
under the current namespace if the <i class="arg">objectName</i> is not fully
qualified, and in the specified namespace otherwise.</p></dd>
</dl>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Object command</a></h3>
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
this order.</p>
<p>Any key here has to be associated with at least one keyword,
i.e. occur in at least one of the reference lists which are the values
in the <b class="const">keywords</b> dictionary, see previous item for its
definition.</p></dd>
</dl>
</li>
<li><p>The <i class="term"><a href="../../../../index.html#key124">type</a></i> of a reference can be one of two values,</p>
<dl class="definitions">
<dt><b class="const">manpage</b></dt>
<dd><p>The identifier of the reference is interpreted as symbolic file name,
refering to one of the documents the index was made for.</p></dd>
<dt><b class="const">url</b></dt>
<dd><p>The identifier of the reference is interpreted as an url, refering to
some external location, like a website, etc.</p></dd>







|







471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
this order.</p>
<p>Any key here has to be associated with at least one keyword,
i.e. occur in at least one of the reference lists which are the values
in the <b class="const">keywords</b> dictionary, see previous item for its
definition.</p></dd>
</dl>
</li>
<li><p>The <i class="term"><a href="../../../../index.html#key123">type</a></i> of a reference can be one of two values,</p>
<dl class="definitions">
<dt><b class="const">manpage</b></dt>
<dd><p>The identifier of the reference is interpreted as symbolic file name,
refering to one of the documents the index was made for.</p></dd>
<dt><b class="const">url</b></dt>
<dd><p>The identifier of the reference is interpreted as an url, refering to
some external location, like a website, etc.</p></dd>
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
</ol></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key19">conversion</a>, <a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key185">documentation</a>, <a href="../../../../index.html#key273">import</a>, <a href="../../../../index.html#key182">index</a>, <a href="../../../../index.html#key190">json</a>, <a href="../../../../index.html#key184">keyword index</a>, <a href="../../../../index.html#key18">manpage</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key564">reference</a>, <a href="../../../../index.html#key508">url</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|




|








501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
</ol></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key20">conversion</a>, <a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key185">documentation</a>, <a href="../../../../index.html#key273">import</a>, <a href="../../../../index.html#key182">index</a>, <a href="../../../../index.html#key190">json</a>, <a href="../../../../index.html#key184">keyword index</a>, <a href="../../../../index.html#key17">manpage</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key564">reference</a>, <a href="../../../../index.html#key508">url</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools2idx/import_docidx.html.

223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
this order.</p>
<p>Any key here has to be associated with at least one keyword,
i.e. occur in at least one of the reference lists which are the values
in the <b class="const">keywords</b> dictionary, see previous item for its
definition.</p></dd>
</dl>
</li>
<li><p>The <i class="term"><a href="../../../../index.html#key124">type</a></i> of a reference can be one of two values,</p>
<dl class="definitions">
<dt><b class="const">manpage</b></dt>
<dd><p>The identifier of the reference is interpreted as symbolic file name,
refering to one of the documents the index was made for.</p></dd>
<dt><b class="const">url</b></dt>
<dd><p>The identifier of the reference is interpreted as an url, refering to
some external location, like a website, etc.</p></dd>







|







223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
this order.</p>
<p>Any key here has to be associated with at least one keyword,
i.e. occur in at least one of the reference lists which are the values
in the <b class="const">keywords</b> dictionary, see previous item for its
definition.</p></dd>
</dl>
</li>
<li><p>The <i class="term"><a href="../../../../index.html#key123">type</a></i> of a reference can be one of two values,</p>
<dl class="definitions">
<dt><b class="const">manpage</b></dt>
<dd><p>The identifier of the reference is interpreted as symbolic file name,
refering to one of the documents the index was made for.</p></dd>
<dt><b class="const">url</b></dt>
<dd><p>The identifier of the reference is interpreted as an url, refering to
some external location, like a website, etc.</p></dd>
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
</ol></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key247">deserialization</a>, <a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key273">import</a>, <a href="../../../../index.html#key182">index</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text formatter plugin</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|













253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
</ol></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key247">deserialization</a>, <a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key273">import</a>, <a href="../../../../index.html#key182">index</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text formatter plugin</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools2idx/import_json.html.

246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
this order.</p>
<p>Any key here has to be associated with at least one keyword,
i.e. occur in at least one of the reference lists which are the values
in the <b class="const">keywords</b> dictionary, see previous item for its
definition.</p></dd>
</dl>
</li>
<li><p>The <i class="term"><a href="../../../../index.html#key124">type</a></i> of a reference can be one of two values,</p>
<dl class="definitions">
<dt><b class="const">manpage</b></dt>
<dd><p>The identifier of the reference is interpreted as symbolic file name,
refering to one of the documents the index was made for.</p></dd>
<dt><b class="const">url</b></dt>
<dd><p>The identifier of the reference is interpreted as an url, refering to
some external location, like a website, etc.</p></dd>







|







246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
this order.</p>
<p>Any key here has to be associated with at least one keyword,
i.e. occur in at least one of the reference lists which are the values
in the <b class="const">keywords</b> dictionary, see previous item for its
definition.</p></dd>
</dl>
</li>
<li><p>The <i class="term"><a href="../../../../index.html#key123">type</a></i> of a reference can be one of two values,</p>
<dl class="definitions">
<dt><b class="const">manpage</b></dt>
<dd><p>The identifier of the reference is interpreted as symbolic file name,
refering to one of the documents the index was made for.</p></dd>
<dt><b class="const">url</b></dt>
<dd><p>The identifier of the reference is interpreted as an url, refering to
some external location, like a website, etc.</p></dd>
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
</ol></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key257">JSON</a>, <a href="../../../../index.html#key247">deserialization</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key273">import</a>, <a href="../../../../index.html#key182">index</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text formatter plugin</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|













276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
</ol></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key257">JSON</a>, <a href="../../../../index.html#key247">deserialization</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key273">import</a>, <a href="../../../../index.html#key182">index</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text formatter plugin</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools2idx/introduction.html.

237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
        &lt;*&gt;     Multiple packages following the given form of naming.
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>doctools2doc_introduction, <a href="../doctools2toc/introduction.html">doctools2toc_introduction</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key19">conversion</a>, <a href="../../../../index.html#key331">formatting</a>, <a href="../../../../index.html#key182">index</a>, <a href="../../../../index.html#key184">keyword index</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>







|




|


|







237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
        &lt;*&gt;     Multiple packages following the given form of naming.
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../doctools/docidx_intro.html">docidx_intro</a>, <a href="../doctools/doctoc_intro.html">doctoc_intro</a>, <a href="../doctools/doctools.html">doctools</a>, doctools2doc_introduction, <a href="../doctools2toc/introduction.html">doctools2toc_introduction</a>, <a href="../doctools/doctools_lang_cmdref.html">doctools_lang_cmdref</a>, <a href="../doctools/doctools_lang_faq.html">doctools_lang_faq</a>, <a href="../doctools/doctools_lang_intro.html">doctools_lang_intro</a>, <a href="../doctools/doctools_lang_syntax.html">doctools_lang_syntax</a>, <a href="../doctools/doctools_plugin_apiref.html">doctools_plugin_apiref</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key20">conversion</a>, <a href="../../../../index.html#key331">formatting</a>, <a href="../../../../index.html#key182">index</a>, <a href="../../../../index.html#key184">keyword index</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key143">semantic markup</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>

Changes to embedded/www/tcllib/files/modules/doctools2idx/msgcat_c.html.

154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<p>This package has no exported API.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key501">C</a>, <a href="../../../../index.html#key48">catalog package</a>, <a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key42">i18n</a>, <a href="../../../../index.html#key46">internationalization</a>, <a href="../../../../index.html#key49">l10n</a>, <a href="../../../../index.html#key45">localization</a>, <a href="../../../../index.html#key43">message catalog</a>, <a href="../../../../index.html#key44">message package</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<p>This package has no exported API.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key501">C</a>, <a href="../../../../index.html#key48">catalog package</a>, <a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key42">i18n</a>, <a href="../../../../index.html#key46">internationalization</a>, <a href="../../../../index.html#key49">l10n</a>, <a href="../../../../index.html#key45">localization</a>, <a href="../../../../index.html#key43">message catalog</a>, <a href="../../../../index.html#key44">message package</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/doctools2idx/msgcat_de.html.

154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<p>This package has no exported API.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key245">DE</a>, <a href="../../../../index.html#key48">catalog package</a>, <a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key42">i18n</a>, <a href="../../../../index.html#key46">internationalization</a>, <a href="../../../../index.html#key49">l10n</a>, <a href="../../../../index.html#key45">localization</a>, <a href="../../../../index.html#key43">message catalog</a>, <a href="../../../../index.html#key44">message package</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<p>This package has no exported API.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key245">DE</a>, <a href="../../../../index.html#key48">catalog package</a>, <a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key42">i18n</a>, <a href="../../../../index.html#key46">internationalization</a>, <a href="../../../../index.html#key49">l10n</a>, <a href="../../../../index.html#key45">localization</a>, <a href="../../../../index.html#key43">message catalog</a>, <a href="../../../../index.html#key44">message package</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/doctools2idx/msgcat_en.html.

154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<p>This package has no exported API.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key47">EN</a>, <a href="../../../../index.html#key48">catalog package</a>, <a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key42">i18n</a>, <a href="../../../../index.html#key46">internationalization</a>, <a href="../../../../index.html#key49">l10n</a>, <a href="../../../../index.html#key45">localization</a>, <a href="../../../../index.html#key43">message catalog</a>, <a href="../../../../index.html#key44">message package</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<p>This package has no exported API.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key47">EN</a>, <a href="../../../../index.html#key48">catalog package</a>, <a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key42">i18n</a>, <a href="../../../../index.html#key46">internationalization</a>, <a href="../../../../index.html#key49">l10n</a>, <a href="../../../../index.html#key45">localization</a>, <a href="../../../../index.html#key43">message catalog</a>, <a href="../../../../index.html#key44">message package</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/doctools2idx/msgcat_fr.html.

154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<p>This package has no exported API.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key601">FR</a>, <a href="../../../../index.html#key48">catalog package</a>, <a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key42">i18n</a>, <a href="../../../../index.html#key46">internationalization</a>, <a href="../../../../index.html#key49">l10n</a>, <a href="../../../../index.html#key45">localization</a>, <a href="../../../../index.html#key43">message catalog</a>, <a href="../../../../index.html#key44">message package</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<p>This package has no exported API.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key601">FR</a>, <a href="../../../../index.html#key48">catalog package</a>, <a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key42">i18n</a>, <a href="../../../../index.html#key46">internationalization</a>, <a href="../../../../index.html#key49">l10n</a>, <a href="../../../../index.html#key45">localization</a>, <a href="../../../../index.html#key43">message catalog</a>, <a href="../../../../index.html#key44">message package</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/doctools2idx/parse.html.

300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
this order.</p>
<p>Any key here has to be associated with at least one keyword,
i.e. occur in at least one of the reference lists which are the values
in the <b class="const">keywords</b> dictionary, see previous item for its
definition.</p></dd>
</dl>
</li>
<li><p>The <i class="term"><a href="../../../../index.html#key124">type</a></i> of a reference can be one of two values,</p>
<dl class="definitions">
<dt><b class="const">manpage</b></dt>
<dd><p>The identifier of the reference is interpreted as symbolic file name,
refering to one of the documents the index was made for.</p></dd>
<dt><b class="const">url</b></dt>
<dd><p>The identifier of the reference is interpreted as an url, refering to
some external location, like a website, etc.</p></dd>







|







300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
this order.</p>
<p>Any key here has to be associated with at least one keyword,
i.e. occur in at least one of the reference lists which are the values
in the <b class="const">keywords</b> dictionary, see previous item for its
definition.</p></dd>
</dl>
</li>
<li><p>The <i class="term"><a href="../../../../index.html#key123">type</a></i> of a reference can be one of two values,</p>
<dl class="definitions">
<dt><b class="const">manpage</b></dt>
<dd><p>The identifier of the reference is interpreted as symbolic file name,
refering to one of the documents the index was made for.</p></dd>
<dt><b class="const">url</b></dt>
<dd><p>The identifier of the reference is interpreted as an url, refering to
some external location, like a website, etc.</p></dd>
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
</ol></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key370">lexer</a>, <a href="../../../../index.html#key9">parser</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|













330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
</ol></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key370">lexer</a>, <a href="../../../../index.html#key9">parser</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools2idx/structure.html.

241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
this order.</p>
<p>Any key here has to be associated with at least one keyword,
i.e. occur in at least one of the reference lists which are the values
in the <b class="const">keywords</b> dictionary, see previous item for its
definition.</p></dd>
</dl>
</li>
<li><p>The <i class="term"><a href="../../../../index.html#key124">type</a></i> of a reference can be one of two values,</p>
<dl class="definitions">
<dt><b class="const">manpage</b></dt>
<dd><p>The identifier of the reference is interpreted as symbolic file name,
refering to one of the documents the index was made for.</p></dd>
<dt><b class="const">url</b></dt>
<dd><p>The identifier of the reference is interpreted as an url, refering to
some external location, like a website, etc.</p></dd>







|







241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
this order.</p>
<p>Any key here has to be associated with at least one keyword,
i.e. occur in at least one of the reference lists which are the values
in the <b class="const">keywords</b> dictionary, see previous item for its
definition.</p></dd>
</dl>
</li>
<li><p>The <i class="term"><a href="../../../../index.html#key123">type</a></i> of a reference can be one of two values,</p>
<dl class="definitions">
<dt><b class="const">manpage</b></dt>
<dd><p>The identifier of the reference is interpreted as symbolic file name,
refering to one of the documents the index was made for.</p></dd>
<dt><b class="const">url</b></dt>
<dd><p>The identifier of the reference is interpreted as an url, refering to
some external location, like a website, etc.</p></dd>
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
</ol></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key247">deserialization</a>, <a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key115">serialization</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|













271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
</ol></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key247">deserialization</a>, <a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key115">serialization</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools2toc/container.html.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
</ol>
</div>
<div id="section3" class="section"><h2><a name="section3">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Package commands</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::doctools::toc</b> <i class="arg">objectName</i></a></dt>
<dd><p>This command creates a new container object with an associated Tcl
command whose name is <i class="arg">objectName</i>. This <i class="term"><a href="../../../../index.html#key238">object</a></i> command is
explained in full detail in the sections <span class="sectref"><a href="#subsection2">Object command</a></span>
and <span class="sectref"><a href="#subsection3">Object methods</a></span>. The object command will be created
under the current namespace if the <i class="arg">objectName</i> is not fully
qualified, and in the specified namespace otherwise.</p></dd>
</dl>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Object command</a></h3>







|







218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
</ol>
</div>
<div id="section3" class="section"><h2><a name="section3">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Package commands</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::doctools::toc</b> <i class="arg">objectName</i></a></dt>
<dd><p>This command creates a new container object with an associated Tcl
command whose name is <i class="arg">objectName</i>. This <i class="term"><a href="../../../../index.html#key237">object</a></i> command is
explained in full detail in the sections <span class="sectref"><a href="#subsection2">Object command</a></span>
and <span class="sectref"><a href="#subsection3">Object methods</a></span>. The object command will be created
under the current namespace if the <i class="arg">objectName</i> is not fully
qualified, and in the specified namespace otherwise.</p></dd>
</dl>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Object command</a></h3>
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
the data from the specified format to a serialization it can handle.
In that case an error will be thrown if the container has no import
manager attached to it.</p>
<p>The result of the method is the empty string.</p></dd>
<dt><a name="27"><i class="arg">objectName</i> <b class="method">deserialize +=</b> <i class="arg">data</i> <span class="opt">?<i class="arg">format</i>?</span></a></dt>
<dd><p>This method behaves like <b class="method">deserialize =</b> in its essentials,
except that it merges the table of contents in the <i class="arg">data</i> to its
contents instead of replacing it. 
The method will throw an error if merging is not possible, i.e. would
produce an invalid table. The existing content is left unchanged in
that case.</p>
<p>The result of the method is the empty string.</p></dd>
<dt><a name="28"><i class="arg">objectName</i> <b class="method">serialize</b> <span class="opt">?<i class="arg">format</i>?</span></a></dt>
<dd><p>This method returns the table of contents contained in the object. If no
<i class="arg">format</i> is not specified the returned result is the canonical







|







384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
the data from the specified format to a serialization it can handle.
In that case an error will be thrown if the container has no import
manager attached to it.</p>
<p>The result of the method is the empty string.</p></dd>
<dt><a name="27"><i class="arg">objectName</i> <b class="method">deserialize +=</b> <i class="arg">data</i> <span class="opt">?<i class="arg">format</i>?</span></a></dt>
<dd><p>This method behaves like <b class="method">deserialize =</b> in its essentials,
except that it merges the table of contents in the <i class="arg">data</i> to its
contents instead of replacing it.
The method will throw an error if merging is not possible, i.e. would
produce an invalid table. The existing content is left unchanged in
that case.</p>
<p>The result of the method is the empty string.</p></dd>
<dt><a name="28"><i class="arg">objectName</i> <b class="method">serialize</b> <span class="opt">?<i class="arg">format</i>?</span></a></dt>
<dd><p>This method returns the table of contents contained in the object. If no
<i class="arg">format</i> is not specified the returned result is the canonical
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
</ol></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key17">HTML</a>, <a href="../../../../index.html#key20">TMML</a>, <a href="../../../../index.html#key19">conversion</a>, <a href="../../../../index.html#key489">doctoc markup</a>, <a href="../../../../index.html#key185">documentation</a>, <a href="../../../../index.html#key331">formatting</a>, <a href="../../../../index.html#key563">generation</a>, <a href="../../../../index.html#key190">json</a>, <a href="../../../../index.html#key186">latex</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key21">nroff</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key564">reference</a>, <a href="../../../../index.html#key117">table</a>, <a href="../../../../index.html#key167">table of contents</a>, <a href="../../../../index.html#key562">tcler's wiki</a>, <a href="../../../../index.html#key481">text</a>, <a href="../../../../index.html#key183">wiki</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|




|








493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
</ol></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key18">HTML</a>, <a href="../../../../index.html#key19">TMML</a>, <a href="../../../../index.html#key20">conversion</a>, <a href="../../../../index.html#key488">doctoc markup</a>, <a href="../../../../index.html#key185">documentation</a>, <a href="../../../../index.html#key331">formatting</a>, <a href="../../../../index.html#key563">generation</a>, <a href="../../../../index.html#key190">json</a>, <a href="../../../../index.html#key186">latex</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key21">nroff</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key564">reference</a>, <a href="../../../../index.html#key117">table</a>, <a href="../../../../index.html#key167">table of contents</a>, <a href="../../../../index.html#key562">tcler's wiki</a>, <a href="../../../../index.html#key480">text</a>, <a href="../../../../index.html#key183">wiki</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools2toc/export.html.

156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
<li><a href="#10"><b class="cmd"><a href="../../../../index.html#key165">export</a></b> <i class="arg">serial</i> <i class="arg">configuration</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package provides a class to manage the plugins for the export of
tables of contents to other formats, i.e. their conversion to, for
example <i class="term"><a href="../../../../index.html#key246">doctoc</a></i>, <i class="term"><a href="../../../../index.html#key17">HTML</a></i>, etc.</p>
<p>This is one of the three public pillars the management of tables of
contents resides on. The other two pillars are</p>
<ol class="enumerated">
<li><p><i class="term">Importing tables of contents</i>, and</p></li>
<li><p><i class="term"><a href="container.html">Holding tables of contents</a></i></p></li>
</ol>
<p>For information about the <span class="sectref"><a href="#section2">Concepts</a></span> of tables of contents,







|







156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
<li><a href="#10"><b class="cmd"><a href="../../../../index.html#key165">export</a></b> <i class="arg">serial</i> <i class="arg">configuration</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package provides a class to manage the plugins for the export of
tables of contents to other formats, i.e. their conversion to, for
example <i class="term"><a href="../../../../index.html#key246">doctoc</a></i>, <i class="term"><a href="../../../../index.html#key18">HTML</a></i>, etc.</p>
<p>This is one of the three public pillars the management of tables of
contents resides on. The other two pillars are</p>
<ol class="enumerated">
<li><p><i class="term">Importing tables of contents</i>, and</p></li>
<li><p><i class="term"><a href="container.html">Holding tables of contents</a></i></p></li>
</ol>
<p>For information about the <span class="sectref"><a href="#section2">Concepts</a></span> of tables of contents,
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
</ol>
</div>
<div id="section3" class="section"><h2><a name="section3">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Package commands</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::doctools::toc::export</b> <i class="arg">objectName</i></a></dt>
<dd><p>This command creates a new export manager object with an associated
Tcl command whose name is <i class="arg">objectName</i>. This <i class="term"><a href="../../../../index.html#key238">object</a></i> command
is explained in full detail in the sections <span class="sectref"><a href="#subsection2">Object command</a></span>
and <span class="sectref"><a href="#subsection3">Object methods</a></span>. The object command will be created
under the current namespace if the <i class="arg">objectName</i> is not fully
qualified, and in the specified namespace otherwise.</p></dd>
</dl>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Object command</a></h3>







|







238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
</ol>
</div>
<div id="section3" class="section"><h2><a name="section3">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Package commands</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::doctools::toc::export</b> <i class="arg">objectName</i></a></dt>
<dd><p>This command creates a new export manager object with an associated
Tcl command whose name is <i class="arg">objectName</i>. This <i class="term"><a href="../../../../index.html#key237">object</a></i> command
is explained in full detail in the sections <span class="sectref"><a href="#subsection2">Object command</a></span>
and <span class="sectref"><a href="#subsection3">Object methods</a></span>. The object command will be created
under the current namespace if the <i class="arg">objectName</i> is not fully
qualified, and in the specified namespace otherwise.</p></dd>
</dl>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Object command</a></h3>
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
</ol></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key17">HTML</a>, <a href="../../../../index.html#key19">conversion</a>, <a href="../../../../index.html#key246">doctoc</a>, <a href="../../../../index.html#key185">documentation</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key331">formatting</a>, <a href="../../../../index.html#key563">generation</a>, <a href="../../../../index.html#key190">json</a>, <a href="../../../../index.html#key18">manpage</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key21">nroff</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key564">reference</a>, <a href="../../../../index.html#key117">table</a>, <a href="../../../../index.html#key167">table of contents</a>, <a href="../../../../index.html#key562">tcler's wiki</a>, <a href="../../../../index.html#key481">text</a>, <a href="../../../../index.html#key508">url</a>, <a href="../../../../index.html#key183">wiki</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|




|








458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
</ol></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key18">HTML</a>, <a href="../../../../index.html#key20">conversion</a>, <a href="../../../../index.html#key246">doctoc</a>, <a href="../../../../index.html#key185">documentation</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key331">formatting</a>, <a href="../../../../index.html#key563">generation</a>, <a href="../../../../index.html#key190">json</a>, <a href="../../../../index.html#key17">manpage</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key21">nroff</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key564">reference</a>, <a href="../../../../index.html#key117">table</a>, <a href="../../../../index.html#key167">table of contents</a>, <a href="../../../../index.html#key562">tcler's wiki</a>, <a href="../../../../index.html#key480">text</a>, <a href="../../../../index.html#key508">url</a>, <a href="../../../../index.html#key183">wiki</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools2toc/export_doctoc.html.

307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
</ol></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key246">doctoc</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key167">table of contents</a>, <a href="../../../../index.html#key166">toc</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
</ol></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key246">doctoc</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key167">table of contents</a>, <a href="../../../../index.html#key166">toc</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/doctools2toc/export_html.html.

340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
</ol></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key17">HTML</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key167">table of contents</a>, <a href="../../../../index.html#key166">toc</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text formatter plugin</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>







|




|







340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
</ol></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key18">HTML</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key167">table of contents</a>, <a href="../../../../index.html#key166">toc</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text formatter plugin</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>

Changes to embedded/www/tcllib/files/modules/doctools2toc/export_json.html.

343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
</ol></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key257">JSON</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key167">table of contents</a>, <a href="../../../../index.html#key166">toc</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
</ol></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key257">JSON</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key167">table of contents</a>, <a href="../../../../index.html#key166">toc</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/doctools2toc/export_nroff.html.

277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
</ol></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key21">nroff</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key167">table of contents</a>, <a href="../../../../index.html#key166">toc</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
</ol></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key21">nroff</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key167">table of contents</a>, <a href="../../../../index.html#key166">toc</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/doctools2toc/export_text.html.

263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
</ol></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key164">plain text</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key167">table of contents</a>, <a href="../../../../index.html#key166">toc</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
</ol></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key164">plain text</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key167">table of contents</a>, <a href="../../../../index.html#key166">toc</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/doctools2toc/export_wiki.html.

270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
</ol></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key167">table of contents</a>, <a href="../../../../index.html#key166">toc</a>, <a href="../../../../index.html#key183">wiki</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
</ol></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key167">table of contents</a>, <a href="../../../../index.html#key166">toc</a>, <a href="../../../../index.html#key183">wiki</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/doctools2toc/import.html.

237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
</ol>
</div>
<div id="section3" class="section"><h2><a name="section3">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Package commands</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::doctools::toc::import</b> <i class="arg">objectName</i></a></dt>
<dd><p>This command creates a new import manager object with an associated
Tcl command whose name is <i class="arg">objectName</i>. This <i class="term"><a href="../../../../index.html#key238">object</a></i> command
is explained in full detail in the sections <span class="sectref"><a href="#subsection2">Object command</a></span>
and <span class="sectref"><a href="#subsection3">Object methods</a></span>. The object command will be created
under the current namespace if the <i class="arg">objectName</i> is not fully
qualified, and in the specified namespace otherwise.</p></dd>
</dl>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Object command</a></h3>







|







237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
</ol>
</div>
<div id="section3" class="section"><h2><a name="section3">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Package commands</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::doctools::toc::import</b> <i class="arg">objectName</i></a></dt>
<dd><p>This command creates a new import manager object with an associated
Tcl command whose name is <i class="arg">objectName</i>. This <i class="term"><a href="../../../../index.html#key237">object</a></i> command
is explained in full detail in the sections <span class="sectref"><a href="#subsection2">Object command</a></span>
and <span class="sectref"><a href="#subsection3">Object methods</a></span>. The object command will be created
under the current namespace if the <i class="arg">objectName</i> is not fully
qualified, and in the specified namespace otherwise.</p></dd>
</dl>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Object command</a></h3>
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
</ol></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key19">conversion</a>, <a href="../../../../index.html#key246">doctoc</a>, <a href="../../../../index.html#key185">documentation</a>, <a href="../../../../index.html#key273">import</a>, <a href="../../../../index.html#key190">json</a>, <a href="../../../../index.html#key18">manpage</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key564">reference</a>, <a href="../../../../index.html#key117">table</a>, <a href="../../../../index.html#key167">table of contents</a>, <a href="../../../../index.html#key508">url</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|




|








519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
</ol></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key20">conversion</a>, <a href="../../../../index.html#key246">doctoc</a>, <a href="../../../../index.html#key185">documentation</a>, <a href="../../../../index.html#key273">import</a>, <a href="../../../../index.html#key190">json</a>, <a href="../../../../index.html#key17">manpage</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key564">reference</a>, <a href="../../../../index.html#key117">table</a>, <a href="../../../../index.html#key167">table of contents</a>, <a href="../../../../index.html#key508">url</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools2toc/import_doctoc.html.

277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
</ol></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key247">deserialization</a>, <a href="../../../../index.html#key246">doctoc</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key273">import</a>, <a href="../../../../index.html#key167">table of contents</a>, <a href="../../../../index.html#key166">toc</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
</ol></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key247">deserialization</a>, <a href="../../../../index.html#key246">doctoc</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key273">import</a>, <a href="../../../../index.html#key167">table of contents</a>, <a href="../../../../index.html#key166">toc</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/doctools2toc/import_json.html.

320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
</ol></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key257">JSON</a>, <a href="../../../../index.html#key247">deserialization</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key273">import</a>, <a href="../../../../index.html#key167">table of contents</a>, <a href="../../../../index.html#key166">toc</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
</ol></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key257">JSON</a>, <a href="../../../../index.html#key247">deserialization</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key273">import</a>, <a href="../../../../index.html#key167">table of contents</a>, <a href="../../../../index.html#key166">toc</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/doctools2toc/introduction.html.

237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
        &lt;*&gt;     Multiple packages following the given form of naming.
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>doctools2doc_introduction, <a href="../doctools2idx/introduction.html">doctools2idx_introduction</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key619">contents</a>, <a href="../../../../index.html#key19">conversion</a>, <a href="../../../../index.html#key331">formatting</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key143">semantic markup</a>, <a href="../../../../index.html#key167">table of contents</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>







|




|


|







237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
        &lt;*&gt;     Multiple packages following the given form of naming.
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../doctools/doctoc_intro.html">doctoc_intro</a>, <a href="../doctools/doctools.html">doctools</a>, doctools2doc_introduction, <a href="../doctools2idx/introduction.html">doctools2idx_introduction</a>, <a href="../doctools/doctools_lang_cmdref.html">doctools_lang_cmdref</a>, <a href="../doctools/doctools_lang_faq.html">doctools_lang_faq</a>, <a href="../doctools/doctools_lang_intro.html">doctools_lang_intro</a>, <a href="../doctools/doctools_lang_syntax.html">doctools_lang_syntax</a>, <a href="../doctools/doctools_plugin_apiref.html">doctools_plugin_apiref</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key619">contents</a>, <a href="../../../../index.html#key20">conversion</a>, <a href="../../../../index.html#key331">formatting</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key143">semantic markup</a>, <a href="../../../../index.html#key167">table of contents</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>

Changes to embedded/www/tcllib/files/modules/doctools2toc/msgcat_c.html.

154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<p>This package has no exported API.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key501">C</a>, <a href="../../../../index.html#key48">catalog package</a>, <a href="../../../../index.html#key246">doctoc</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key42">i18n</a>, <a href="../../../../index.html#key46">internationalization</a>, <a href="../../../../index.html#key49">l10n</a>, <a href="../../../../index.html#key45">localization</a>, <a href="../../../../index.html#key43">message catalog</a>, <a href="../../../../index.html#key44">message package</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<p>This package has no exported API.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key501">C</a>, <a href="../../../../index.html#key48">catalog package</a>, <a href="../../../../index.html#key246">doctoc</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key42">i18n</a>, <a href="../../../../index.html#key46">internationalization</a>, <a href="../../../../index.html#key49">l10n</a>, <a href="../../../../index.html#key45">localization</a>, <a href="../../../../index.html#key43">message catalog</a>, <a href="../../../../index.html#key44">message package</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/doctools2toc/msgcat_de.html.

154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<p>This package has no exported API.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key245">DE</a>, <a href="../../../../index.html#key48">catalog package</a>, <a href="../../../../index.html#key246">doctoc</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key42">i18n</a>, <a href="../../../../index.html#key46">internationalization</a>, <a href="../../../../index.html#key49">l10n</a>, <a href="../../../../index.html#key45">localization</a>, <a href="../../../../index.html#key43">message catalog</a>, <a href="../../../../index.html#key44">message package</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<p>This package has no exported API.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key245">DE</a>, <a href="../../../../index.html#key48">catalog package</a>, <a href="../../../../index.html#key246">doctoc</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key42">i18n</a>, <a href="../../../../index.html#key46">internationalization</a>, <a href="../../../../index.html#key49">l10n</a>, <a href="../../../../index.html#key45">localization</a>, <a href="../../../../index.html#key43">message catalog</a>, <a href="../../../../index.html#key44">message package</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/doctools2toc/msgcat_en.html.

154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<p>This package has no exported API.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key47">EN</a>, <a href="../../../../index.html#key48">catalog package</a>, <a href="../../../../index.html#key246">doctoc</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key42">i18n</a>, <a href="../../../../index.html#key46">internationalization</a>, <a href="../../../../index.html#key49">l10n</a>, <a href="../../../../index.html#key45">localization</a>, <a href="../../../../index.html#key43">message catalog</a>, <a href="../../../../index.html#key44">message package</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<p>This package has no exported API.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key47">EN</a>, <a href="../../../../index.html#key48">catalog package</a>, <a href="../../../../index.html#key246">doctoc</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key42">i18n</a>, <a href="../../../../index.html#key46">internationalization</a>, <a href="../../../../index.html#key49">l10n</a>, <a href="../../../../index.html#key45">localization</a>, <a href="../../../../index.html#key43">message catalog</a>, <a href="../../../../index.html#key44">message package</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/doctools2toc/msgcat_fr.html.

154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<p>This package has no exported API.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key601">FR</a>, <a href="../../../../index.html#key48">catalog package</a>, <a href="../../../../index.html#key246">doctoc</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key42">i18n</a>, <a href="../../../../index.html#key46">internationalization</a>, <a href="../../../../index.html#key49">l10n</a>, <a href="../../../../index.html#key45">localization</a>, <a href="../../../../index.html#key43">message catalog</a>, <a href="../../../../index.html#key44">message package</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<p>This package has no exported API.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key601">FR</a>, <a href="../../../../index.html#key48">catalog package</a>, <a href="../../../../index.html#key246">doctoc</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key42">i18n</a>, <a href="../../../../index.html#key46">internationalization</a>, <a href="../../../../index.html#key49">l10n</a>, <a href="../../../../index.html#key45">localization</a>, <a href="../../../../index.html#key43">message catalog</a>, <a href="../../../../index.html#key44">message package</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/doctools2toc/parse.html.

354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
</ol></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key246">doctoc</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key370">lexer</a>, <a href="../../../../index.html#key9">parser</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
</ol></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key246">doctoc</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key370">lexer</a>, <a href="../../../../index.html#key9">parser</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/doctools2toc/structure.html.

307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
</ol></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key247">deserialization</a>, <a href="../../../../index.html#key246">doctoc</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key115">serialization</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
</ol></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key247">deserialization</a>, <a href="../../../../index.html#key246">doctoc</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key115">serialization</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/dtplite/dtplite.html.

121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<li class="subsection"><a href="#subsection1">USE CASES</a></li>
<li class="subsection"><a href="#subsection2">COMMAND LINE</a></li>
<li class="subsection"><a href="#subsection3">OPTIONS</a></li>
<li class="subsection"><a href="#subsection4">FORMATS</a></li>
<li class="subsection"><a href="#subsection5">DIRECTORY STRUCTURES</a></li>
</ul>
</li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<li class="subsection"><a href="#subsection1">USE CASES</a></li>
<li class="subsection"><a href="#subsection2">COMMAND LINE</a></li>
<li class="subsection"><a href="#subsection3">OPTIONS</a></li>
<li class="subsection"><a href="#subsection4">FORMATS</a></li>
<li class="subsection"><a href="#subsection5">DIRECTORY STRUCTURES</a></li>
</ul>
</li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
of contents and keyword index for the set of documents before their
conversion to the chosen output format.
They are left in place, i.e. not deleted, to serve as demonstrations
of doctoc and docidx markup.</p></dd>
</dl>
</div>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the application it describes, will undoubtedly
contain bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
application and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../doctools/docidx_intro.html">docidx introduction</a>, <a href="../doctools/doctoc_intro.html">doctoc introduction</a>, <a href="../doctools/doctools_intro.html">doctools introduction</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key17">HTML</a>, <a href="../../../../index.html#key20">TMML</a>, <a href="../../../../index.html#key19">conversion</a>, <a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key246">doctoc</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key18">manpage</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key21">nroff</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004-2013 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|
|
|

|

|





|








409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
of contents and keyword index for the set of documents before their
conversion to the chosen output format.
They are left in place, i.e. not deleted, to serve as demonstrations
of doctoc and docidx markup.</p></dd>
</dl>
</div>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>doctools</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../doctools/docidx_intro.html">docidx introduction</a>, <a href="../doctools/doctoc_intro.html">doctoc introduction</a>, <a href="../doctools/doctools_intro.html">doctools introduction</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key18">HTML</a>, <a href="../../../../index.html#key19">TMML</a>, <a href="../../../../index.html#key20">conversion</a>, <a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key246">doctoc</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key17">manpage</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key21">nroff</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004-2013 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/exif/exif.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">COPYRIGHTS</a></li>
<li class="section"><a href="#section4">ACKNOWLEDGEMENTS</a></li>
<li class="section"><a href="#section5">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">COPYRIGHTS</a></li>
<li class="section"><a href="#section4">ACKNOWLEDGEMENTS</a></li>
<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
<p>(c) 2002 Darren New
Hold harmless the author, and any lawful use is allowed.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">ACKNOWLEDGEMENTS</a></h2>
<p>This code is a direct translation of version 1.3 of exif.pl by Chris
Breeze.  See the source for full headers, references, etc.</p>
</div>
<div id="section5" class="section"><h2><a name="section5">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>exif</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key160">exif</a>, <a href="../../../../index.html#key161">jpeg</a>, <a href="../../../../index.html#key818">maker note</a>, <a href="../../../../index.html#key132">tiff</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>File formats</p>
</div>
</div></body></html>







|



|










176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
<p>(c) 2002 Darren New
Hold harmless the author, and any lawful use is allowed.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">ACKNOWLEDGEMENTS</a></h2>
<p>This code is a direct translation of version 1.3 of exif.pl by Chris
Breeze.  See the source for full headers, references, etc.</p>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>exif</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key160">exif</a>, <a href="../../../../index.html#key161">jpeg</a>, <a href="../../../../index.html#key818">maker note</a>, <a href="../../../../index.html#key132">tiff</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>File formats</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/fileutil/fileutil.html.

111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<p>fileutil - Procedures implementing some file utilities</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<p>fileutil - Procedures implementing some file utilities</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
<dd><p><b class="cmd">file executable</b></p></dd>
<dt><em>f</em>ile</dt>
<dd><p><b class="cmd">file isfile</b></p></dd>
<dt><em>d</em>ir</dt>
<dd><p><b class="cmd">file isdirectory</b></p></dd>
</dl></dd>
<dt><a name="4"><b class="cmd">::fileutil::cat</b> (<span class="opt">?<i class="arg">options</i>?</span> <i class="arg">file</i>)...</a></dt>
<dd><p>A tcl implementation of the UNIX <b class="syscmd"><a href="../../../../index.html#key291">cat</a></b> command.  Returns the
contents of the specified file(s). The arguments are files to read,
with interspersed options configuring the process. If there are
problems reading any of the files, an error will occur, and no data
will be returned.</p>
<p>The options accepted are <b class="option">-encoding</b>, <b class="option">-translation</b>,
<b class="option">-eofchar</b>, and <b class="option">--</b>. With the exception of the last all
options take a single value as argument, as specified by the tcl







|







202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
<dd><p><b class="cmd">file executable</b></p></dd>
<dt><em>f</em>ile</dt>
<dd><p><b class="cmd">file isfile</b></p></dd>
<dt><em>d</em>ir</dt>
<dd><p><b class="cmd">file isdirectory</b></p></dd>
</dl></dd>
<dt><a name="4"><b class="cmd">::fileutil::cat</b> (<span class="opt">?<i class="arg">options</i>?</span> <i class="arg">file</i>)...</a></dt>
<dd><p>A tcl implementation of the UNIX <b class="syscmd"><a href="../../../../index.html#key292">cat</a></b> command.  Returns the
contents of the specified file(s). The arguments are files to read,
with interspersed options configuring the process. If there are
problems reading any of the files, an error will occur, and no data
will be returned.</p>
<p>The options accepted are <b class="option">-encoding</b>, <b class="option">-translation</b>,
<b class="option">-eofchar</b>, and <b class="option">--</b>. With the exception of the last all
options take a single value as argument, as specified by the tcl
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
jpeg, graphic png, graphic tiff, graphic bitmap, html, xml (with doctype
if available), message pgp, binary pdf, text ps, text eps, binary
gravity_wave_data_frame, compressed bzip, compressed gzip, compressed
zip, compressed tar, audio wave, audio mpeg, and link. It further
detects doctools, doctoc, and docidx documentation files, and
tklib diagrams.</p></dd>
<dt><a name="12"><b class="cmd">::fileutil::find</b> <span class="opt">?<i class="arg">basedir</i> <span class="opt">?<i class="arg">filtercmd</i>?</span>?</span></a></dt>
<dd><p>An implementation of the unix command <b class="syscmd"><a href="../../../../index.html#key606">find</a></b>. Adapted from the
Tcler's Wiki. Takes at most two arguments, the path to the directory
to start searching from and a command to use to evaluate interest in
each file. The path defaults to &quot;<b class="file">.</b>&quot;, i.e. the current
directory. The command defaults to the empty string, which means that
all files are of interest. The command takes care <em>not</em> to
lose itself in infinite loops upon encountering circular link
structures. The result of the command is a list containing the paths







|







283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
jpeg, graphic png, graphic tiff, graphic bitmap, html, xml (with doctype
if available), message pgp, binary pdf, text ps, text eps, binary
gravity_wave_data_frame, compressed bzip, compressed gzip, compressed
zip, compressed tar, audio wave, audio mpeg, and link. It further
detects doctools, doctoc, and docidx documentation files, and
tklib diagrams.</p></dd>
<dt><a name="12"><b class="cmd">::fileutil::find</b> <span class="opt">?<i class="arg">basedir</i> <span class="opt">?<i class="arg">filtercmd</i>?</span>?</span></a></dt>
<dd><p>An implementation of the unix command <b class="syscmd"><a href="../../../../index.html#key608">find</a></b>. Adapted from the
Tcler's Wiki. Takes at most two arguments, the path to the directory
to start searching from and a command to use to evaluate interest in
each file. The path defaults to &quot;<b class="file">.</b>&quot;, i.e. the current
directory. The command defaults to the empty string, which means that
all files are of interest. The command takes care <em>not</em> to
lose itself in infinite loops upon encountering circular link
structures. The result of the command is a list containing the paths
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
As implied in the previous sentence, the command is not able to compute
this relationship between the arguments if one of the paths is absolute
and the other relative.</p>
<p><em>Note:</em> The processing done by this command is purely lexical.
Symbolic links are <em>not</em> taken into account.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>fileutil</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key291">cat</a>, <a href="../../../../index.html#key121">file utilities</a>, <a href="../../../../index.html#key294">grep</a>, <a href="../../../../index.html#key293">temp file</a>, <a href="../../../../index.html#key292">test</a>, <a href="../../../../index.html#key295">touch</a>, <a href="../../../../index.html#key124">type</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>







|



|




|





452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
As implied in the previous sentence, the command is not able to compute
this relationship between the arguments if one of the paths is absolute
and the other relative.</p>
<p><em>Note:</em> The processing done by this command is purely lexical.
Symbolic links are <em>not</em> taken into account.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>fileutil</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key292">cat</a>, <a href="../../../../index.html#key121">file utilities</a>, <a href="../../../../index.html#key294">grep</a>, <a href="../../../../index.html#key293">temp file</a>, <a href="../../../../index.html#key291">test</a>, <a href="../../../../index.html#key295">touch</a>, <a href="../../../../index.html#key123">type</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/fileutil/multi.html.

112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PUBLIC API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PUBLIC API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
execute. See the section <b class="sectref">FILE API</b> of the
documentation for the package <b class="package"><a href="multiop.html">fileutil::multi::op</a></b> for
the set of acceptable commands, their syntax, and semantics.</p>
<p>The result of the command is the result generated by the last file
command it executed.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>fileutil</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key84">copy</a>, <a href="../../../../index.html#key121">file utilities</a>, <a href="../../../../index.html#key227">move</a>, <a href="../../../../index.html#key225">multi-file</a>, <a href="../../../../index.html#key226">remove</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>







|



|










155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
execute. See the section <b class="sectref">FILE API</b> of the
documentation for the package <b class="package"><a href="multiop.html">fileutil::multi::op</a></b> for
the set of acceptable commands, their syntax, and semantics.</p>
<p>The result of the command is the result generated by the last file
command it executed.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>fileutil</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key84">copy</a>, <a href="../../../../index.html#key121">file utilities</a>, <a href="../../../../index.html#key227">move</a>, <a href="../../../../index.html#key225">multi-file</a>, <a href="../../../../index.html#key226">remove</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/fileutil/multiop.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">CLASS API</a></li>
<li class="section"><a href="#section3">OBJECT API</a></li>
<li class="section"><a href="#section4">FILE API</a></li>
<li class="section"><a href="#section5">EXAMPLES</a></li>
<li class="section"><a href="#section6">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">CLASS API</a></li>
<li class="section"><a href="#section3">OBJECT API</a></li>
<li class="section"><a href="#section4">FILE API</a></li>
<li class="section"><a href="#section5">EXAMPLES</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
like qualifiers, and still take effect as if they had been written
before this command.</p>
<p>After the operation has been performed the object state the exclude
patterns and the alias name, if specified, are reset to their default
values (i.e. empty), but nothing else.</p></dd>
<dt><a name="30"><b class="cmd">the-set</b> <i class="arg">varname</i></a></dt>
<dd><p>Like <b class="cmd">the</b>, however the set of files to use is not specified
implicitly per a glob pattern, but contained and loaded from the 
specified variable. The operation <b class="cmd">expand</b> is not available
if this command is used.</p></dd>
<dt><a name="31"><b class="cmd">-&gt;</b> <i class="arg">varname</i></a></dt>
<dd><p>Saves the set of files from the last expansion into the specified
variable.</p></dd>
<dt><a name="32"><b class="cmd">strict</b></a></dt>
<dd><p>Make file expansion and definition of destination directory (<b class="cmd">in</b>







|







317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
like qualifiers, and still take effect as if they had been written
before this command.</p>
<p>After the operation has been performed the object state the exclude
patterns and the alias name, if specified, are reset to their default
values (i.e. empty), but nothing else.</p></dd>
<dt><a name="30"><b class="cmd">the-set</b> <i class="arg">varname</i></a></dt>
<dd><p>Like <b class="cmd">the</b>, however the set of files to use is not specified
implicitly per a glob pattern, but contained and loaded from the
specified variable. The operation <b class="cmd">expand</b> is not available
if this command is used.</p></dd>
<dt><a name="31"><b class="cmd">-&gt;</b> <i class="arg">varname</i></a></dt>
<dd><p>Saves the set of files from the last expansion into the specified
variable.</p></dd>
<dt><a name="32"><b class="cmd">strict</b></a></dt>
<dd><p>Make file expansion and definition of destination directory (<b class="cmd">in</b>
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
    from /sources          \\
    into /scratch           \\
    but not *.html not index \\
    the  index               \\
    as   pkgIndex.tcl
</pre>
</div>
<div id="section6" class="section"><h2><a name="section6">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>fileutil</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key84">copy</a>, <a href="../../../../index.html#key121">file utilities</a>, <a href="../../../../index.html#key227">move</a>, <a href="../../../../index.html#key225">multi-file</a>, <a href="../../../../index.html#key226">remove</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>







|



|










440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
    from /sources          \\
    into /scratch           \\
    but not *.html not index \\
    the  index               \\
    as   pkgIndex.tcl
</pre>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>fileutil</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key84">copy</a>, <a href="../../../../index.html#key121">file utilities</a>, <a href="../../../../index.html#key227">move</a>, <a href="../../../../index.html#key225">multi-file</a>, <a href="../../../../index.html#key226">remove</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/fileutil/traverse.html.

112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">OPTIONS</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">OPTIONS</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
error occured, and the error message. Errors thrown by the filter
callbacks are handled through this callback too. Errors thrown by the
error callback itself are not caught and ignored, but allowed to pass
to the caller, i.e. however invoked the <b class="method">next</b>. Any other
results from the callback are ignored.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>fileutil</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key704">directory traversal</a>, <a href="../../../../index.html#key703">traversal</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>







|



|










213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
error occured, and the error message. Errors thrown by the filter
callbacks are handled through this callback too. Errors thrown by the
error callback itself are not caught and ignored, but allowed to pass
to the caller, i.e. however invoked the <b class="method">next</b>. Any other
results from the callback are ignored.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>fileutil</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key704">directory traversal</a>, <a href="../../../../index.html#key703">traversal</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/ftp/ftp.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
<div id="section3" class="section"><h2><a name="section3">BUGS</a></h2>
<p>The correct execution of many commands depends upon the proper
behavior by the remote server, network and router configuration.</p>
<p>An update command placed in the procedure <b class="cmd">::ftp::DisplayMsg</b> may
run into persistent errors or infinite loops. The solution to this
problem is to use <b class="cmd">update idletasks</b> instead of <b class="cmd"><a href="../../../../index.html#key394">update</a></b>.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>ftp</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../ftpd/ftpd.html">ftpd</a>, <a href="../mime/mime.html">mime</a>, <a href="../pop3/pop3.html">pop3</a>, <a href="../mime/smtp.html">smtp</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key275">ftp</a>, <a href="../../../../index.html#key136">internet</a>, <a href="../../../../index.html#key276">net</a>, <a href="../../../../index.html#key274">rfc 959</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
</div></body></html>







|



|







|





423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
<div id="section3" class="section"><h2><a name="section3">BUGS</a></h2>
<p>The correct execution of many commands depends upon the proper
behavior by the remote server, network and router configuration.</p>
<p>An update command placed in the procedure <b class="cmd">::ftp::DisplayMsg</b> may
run into persistent errors or infinite loops. The solution to this
problem is to use <b class="cmd">update idletasks</b> instead of <b class="cmd"><a href="../../../../index.html#key394">update</a></b>.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>ftp</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../ftpd/ftpd.html">ftpd</a>, <a href="../mime/mime.html">mime</a>, <a href="../pop3/pop3.html">pop3</a>, <a href="../mime/smtp.html">smtp</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key275">ftp</a>, <a href="../../../../index.html#key138">internet</a>, <a href="../../../../index.html#key276">net</a>, <a href="../../../../index.html#key274">rfc 959</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/ftp/ftp_geturl.html.

112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
<dd><p>A listing of the contents of the directory in key value notation where
the file name is the key and its attributes the associated value.</p></dd>
<dt><i class="term">link</i></dt>
<dd><p>The attributes of the link, including the path it refers to.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>ftp</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../ftpd/ftpd.html">ftpd</a>, <a href="../mime/mime.html">mime</a>, <a href="../pop3/pop3.html">pop3</a>, <a href="../mime/smtp.html">smtp</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key275">ftp</a>, <a href="../../../../index.html#key136">internet</a>, <a href="../../../../index.html#key276">net</a>, <a href="../../../../index.html#key274">rfc 959</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
</div></body></html>







|



|







|





153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
<dd><p>A listing of the contents of the directory in key value notation where
the file name is the key and its attributes the associated value.</p></dd>
<dt><i class="term">link</i></dt>
<dd><p>The attributes of the link, including the path it refers to.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>ftp</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../ftpd/ftpd.html">ftpd</a>, <a href="../mime/mime.html">mime</a>, <a href="../pop3/pop3.html">pop3</a>, <a href="../mime/smtp.html">smtp</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key275">ftp</a>, <a href="../../../../index.html#key138">internet</a>, <a href="../../../../index.html#key276">net</a>, <a href="../../../../index.html#key274">rfc 959</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/ftpd/ftpd.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">CALLBACKS</a></li>
<li class="section"><a href="#section4">VARIABLES</a></li>
<li class="section"><a href="#section5">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">CALLBACKS</a></li>
<li class="section"><a href="#section4">VARIABLES</a></li>
<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
<dd><p>The current working directory for a session when someone first
connects to the FTPD or when the <b class="cmd">REIN</b> ftp command is received.</p></dd>
<dt><b class="variable">::ftpd::contact</b></dt>
<dd><p>The e-mail address of the person that is the contact for the ftp
server.  This address is printed out as part of the response to the
<b class="cmd">FTP HELP</b> command.</p></dd>
<dt><b class="variable">::ftpd::port</b></dt>
<dd><p>The port that the ftp server should listen on. 
If port is specified as zero, the operating system will allocate an 
unused port for use as a server socket; afterwards, the variable will 
contain the port number that was allocated.</p></dd>
<dt><b class="variable">::ftpd::welcome</b></dt>
<dd><p>The message that is printed out when the user first connects to the
ftp server.</p></dd>
<dt><b class="variable">::ftpd::CurrentSocket</b></dt>
<dd><p>Accessible to all callbacks and all filesystem commands (which are a
special form of callback) and contains the handle of the socket
channel which was active when the callback was invoked.</p></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>ftpd</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key275">ftp</a>, <a href="../../../../index.html#key586">ftpd</a>, <a href="../../../../index.html#key585">ftpserver</a>, <a href="../../../../index.html#key274">rfc 959</a>, <a href="../../../../index.html#key584">services</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
</div></body></html>







|
|
|










|



|










311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
<dd><p>The current working directory for a session when someone first
connects to the FTPD or when the <b class="cmd">REIN</b> ftp command is received.</p></dd>
<dt><b class="variable">::ftpd::contact</b></dt>
<dd><p>The e-mail address of the person that is the contact for the ftp
server.  This address is printed out as part of the response to the
<b class="cmd">FTP HELP</b> command.</p></dd>
<dt><b class="variable">::ftpd::port</b></dt>
<dd><p>The port that the ftp server should listen on.
If port is specified as zero, the operating system will allocate an
unused port for use as a server socket; afterwards, the variable will
contain the port number that was allocated.</p></dd>
<dt><b class="variable">::ftpd::welcome</b></dt>
<dd><p>The message that is printed out when the user first connects to the
ftp server.</p></dd>
<dt><b class="variable">::ftpd::CurrentSocket</b></dt>
<dd><p>Accessible to all callbacks and all filesystem commands (which are a
special form of callback) and contains the handle of the socket
channel which was active when the callback was invoked.</p></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>ftpd</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key275">ftp</a>, <a href="../../../../index.html#key586">ftpd</a>, <a href="../../../../index.html#key585">ftpserver</a>, <a href="../../../../index.html#key274">rfc 959</a>, <a href="../../../../index.html#key584">services</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/fumagic/cfront.html.

112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
each of the paths into a recognizer procedure and installs the result
in the current interpreter.</p>
<p>The name of each new procedure is derived from the name of the
file/directory used in its creation, with file/directory &quot;<b class="file">FOO</b>&quot;
causing the creation of procedure <b class="const">::fileutil::magic::/FOO::run</b>.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>fileutil :: magic</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>file(1), <a href="../fileutil/fileutil.html">fileutil</a>, magic(5)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key122">file recognition</a>, <a href="../../../../index.html#key123">file type</a>, <a href="../../../../index.html#key121">file utilities</a>, <a href="../../../../index.html#key228">mime</a>, <a href="../../../../index.html#key124">type</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>







|



|







|





165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
each of the paths into a recognizer procedure and installs the result
in the current interpreter.</p>
<p>The name of each new procedure is derived from the name of the
file/directory used in its creation, with file/directory &quot;<b class="file">FOO</b>&quot;
causing the creation of procedure <b class="const">::fileutil::magic::/FOO::run</b>.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>fileutil :: magic</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>file(1), <a href="../fileutil/fileutil.html">fileutil</a>, magic(5)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key122">file recognition</a>, <a href="../../../../index.html#key124">file type</a>, <a href="../../../../index.html#key121">file utilities</a>, <a href="../../../../index.html#key228">mime</a>, <a href="../../../../index.html#key123">type</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/fumagic/cgen.html.

112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
recognizer for the file types represented by the sub-tree rooted at
the <i class="arg">node</i>.
The generated script makes extensive use of the commands provided by
the recognizer runtime package <b class="package"><a href="rtcore.html">fileutil::magic::rt</a></b> to
perform its duties.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>fileutil :: magic</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>file(1), <a href="../fileutil/fileutil.html">fileutil</a>, magic(5)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key122">file recognition</a>, <a href="../../../../index.html#key123">file type</a>, <a href="../../../../index.html#key121">file utilities</a>, <a href="../../../../index.html#key228">mime</a>, <a href="../../../../index.html#key124">type</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>







|



|







|





161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
recognizer for the file types represented by the sub-tree rooted at
the <i class="arg">node</i>.
The generated script makes extensive use of the commands provided by
the recognizer runtime package <b class="package"><a href="rtcore.html">fileutil::magic::rt</a></b> to
perform its duties.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>fileutil :: magic</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>file(1), <a href="../fileutil/fileutil.html">fileutil</a>, magic(5)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key122">file recognition</a>, <a href="../../../../index.html#key124">file type</a>, <a href="../../../../index.html#key121">file utilities</a>, <a href="../../../../index.html#key228">mime</a>, <a href="../../../../index.html#key123">type</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/fumagic/filetypes.html.

112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">REFERENCES</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">REFERENCES</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
<ol class="enumerated">
<li><p><a href="ftp://ftp.astron.com/pub/file/">File(1) sources</a>
This site contains the current sources for the file command, including
the magic definitions used by it. The latter were used by us to
generate this recognizer.</p></li>
</ol>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>fileutil :: magic</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>file(1), <a href="../fileutil/fileutil.html">fileutil</a>, magic(5)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key122">file recognition</a>, <a href="../../../../index.html#key123">file type</a>, <a href="../../../../index.html#key121">file utilities</a>, <a href="../../../../index.html#key124">type</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>







|



|







|





153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
<ol class="enumerated">
<li><p><a href="ftp://ftp.astron.com/pub/file/">File(1) sources</a>
This site contains the current sources for the file command, including
the magic definitions used by it. The latter were used by us to
generate this recognizer.</p></li>
</ol>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>fileutil :: magic</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>file(1), <a href="../fileutil/fileutil.html">fileutil</a>, magic(5)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key122">file recognition</a>, <a href="../../../../index.html#key124">file type</a>, <a href="../../../../index.html#key121">file utilities</a>, <a href="../../../../index.html#key123">type</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/fumagic/mimetypes.html.

112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">REFERENCES</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">REFERENCES</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
<ol class="enumerated">
<li><p><a href="ftp://ftp.astron.com/pub/file/">File(1) sources</a>
This site contains the current sources for the file command, including
the magic definitions used by it. The latter were used by us to
generate this recognizer.</p></li>
</ol>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>fileutil :: magic</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>file(1), <a href="../fileutil/fileutil.html">fileutil</a>, magic(5)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key122">file recognition</a>, <a href="../../../../index.html#key123">file type</a>, <a href="../../../../index.html#key121">file utilities</a>, <a href="../../../../index.html#key228">mime</a>, <a href="../../../../index.html#key124">type</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>







|



|







|





152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
<ol class="enumerated">
<li><p><a href="ftp://ftp.astron.com/pub/file/">File(1) sources</a>
This site contains the current sources for the file command, including
the magic definitions used by it. The latter were used by us to
generate this recognizer.</p></li>
</ol>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>fileutil :: magic</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>file(1), <a href="../fileutil/fileutil.html">fileutil</a>, magic(5)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key122">file recognition</a>, <a href="../../../../index.html#key124">file type</a>, <a href="../../../../index.html#key121">file utilities</a>, <a href="../../../../index.html#key228">mime</a>, <a href="../../../../index.html#key123">type</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/fumagic/rtcore.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">NUMERIC TYPES</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">NUMERIC TYPES</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
</pre>
<p>The special comparison operator <b class="const">x</b> signals that no comparison
should be done, or, in other words, that the fetched value will always
match <i class="arg">val</i>.</p></dd>
<dt><a name="10"><b class="cmd">::fileutil::magic::rt::Nvx</b> <i class="arg">atlevel</i> <i class="arg">type</i> <i class="arg">offset</i> <span class="opt">?<i class="arg">qual</i>?</span></a></dt>
<dd><p>This command behaves like <b class="cmd">::fileutil::magic::rt::Nv</b>, except that
it additionally remembers the location in the file after the fetch in
the calling context, for the level <i class="arg">atlevel</i>, for later use by 
<b class="cmd">::fileutil::magic::rt::R</b>.</p></dd>
<dt><a name="11"><b class="cmd">::fileutil::magic::rt::Nx</b> <i class="arg">atlevel</i> <i class="arg">type</i> <i class="arg">offset</i> <i class="arg">comp</i> <i class="arg">val</i> <span class="opt">?<i class="arg">qual</i>?</span></a></dt>
<dd><p>This command behaves like <b class="cmd">::fileutil::magic::rt::N</b>, except that
it additionally remembers the location in the file after the fetch in
the calling context, for the level <i class="arg">atlevel</i>, for later use by 
<b class="cmd">::fileutil::magic::rt::R</b>.</p></dd>
<dt><a name="12"><b class="cmd">::fileutil::magic::rt::S</b> <i class="arg">offset</i> <i class="arg">comp</i> <i class="arg">val</i> <span class="opt">?<i class="arg">qual</i>?</span></a></dt>
<dd><p>This command behaves like <b class="cmd">::fileutil::magic::rt::N</b>, except that
it fetches and compares strings, not numeric data. The fetched value
is also stored in the internal string buffer instead of the numeric
buffer.</p></dd>
<dt><a name="13"><b class="cmd">::fileutil::magic::rt::Sx</b> <i class="arg">atlevel</i> <i class="arg">offset</i> <i class="arg">comp</i> <i class="arg">val</i> <span class="opt">?<i class="arg">qual</i>?</span></a></dt>
<dd><p>This command behaves like <b class="cmd">::fileutil::magic::rt::S</b>, except that
it additionally remembers the location in the file after the fetch in
the calling context, for the level <i class="arg">atlevel</i>, for later use by 
<b class="cmd">::fileutil::magic::rt::R</b>.</p></dd>
<dt><a name="14"><b class="cmd">::fileutil::magic::rt::L</b> <i class="arg">newlevel</i></a></dt>
<dd><p>This command sets the current level in the calling context to
<i class="arg">newlevel</i>. The command returns the empty string as its result.</p></dd>
<dt><a name="15"><b class="cmd">::fileutil::magic::rt::I</b> <i class="arg">base</i> <i class="arg">type</i> <i class="arg">delta</i></a></dt>
<dd><p>This command handles base locations specified indirectly through the
contents of the inspected file. It returns the sum of <i class="arg">delta</i> and







|




|









|







232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
</pre>
<p>The special comparison operator <b class="const">x</b> signals that no comparison
should be done, or, in other words, that the fetched value will always
match <i class="arg">val</i>.</p></dd>
<dt><a name="10"><b class="cmd">::fileutil::magic::rt::Nvx</b> <i class="arg">atlevel</i> <i class="arg">type</i> <i class="arg">offset</i> <span class="opt">?<i class="arg">qual</i>?</span></a></dt>
<dd><p>This command behaves like <b class="cmd">::fileutil::magic::rt::Nv</b>, except that
it additionally remembers the location in the file after the fetch in
the calling context, for the level <i class="arg">atlevel</i>, for later use by
<b class="cmd">::fileutil::magic::rt::R</b>.</p></dd>
<dt><a name="11"><b class="cmd">::fileutil::magic::rt::Nx</b> <i class="arg">atlevel</i> <i class="arg">type</i> <i class="arg">offset</i> <i class="arg">comp</i> <i class="arg">val</i> <span class="opt">?<i class="arg">qual</i>?</span></a></dt>
<dd><p>This command behaves like <b class="cmd">::fileutil::magic::rt::N</b>, except that
it additionally remembers the location in the file after the fetch in
the calling context, for the level <i class="arg">atlevel</i>, for later use by
<b class="cmd">::fileutil::magic::rt::R</b>.</p></dd>
<dt><a name="12"><b class="cmd">::fileutil::magic::rt::S</b> <i class="arg">offset</i> <i class="arg">comp</i> <i class="arg">val</i> <span class="opt">?<i class="arg">qual</i>?</span></a></dt>
<dd><p>This command behaves like <b class="cmd">::fileutil::magic::rt::N</b>, except that
it fetches and compares strings, not numeric data. The fetched value
is also stored in the internal string buffer instead of the numeric
buffer.</p></dd>
<dt><a name="13"><b class="cmd">::fileutil::magic::rt::Sx</b> <i class="arg">atlevel</i> <i class="arg">offset</i> <i class="arg">comp</i> <i class="arg">val</i> <span class="opt">?<i class="arg">qual</i>?</span></a></dt>
<dd><p>This command behaves like <b class="cmd">::fileutil::magic::rt::S</b>, except that
it additionally remembers the location in the file after the fetch in
the calling context, for the level <i class="arg">atlevel</i>, for later use by
<b class="cmd">::fileutil::magic::rt::R</b>.</p></dd>
<dt><a name="14"><b class="cmd">::fileutil::magic::rt::L</b> <i class="arg">newlevel</i></a></dt>
<dd><p>This command sets the current level in the calling context to
<i class="arg">newlevel</i>. The command returns the empty string as its result.</p></dd>
<dt><a name="15"><b class="cmd">::fileutil::magic::rt::I</b> <i class="arg">base</i> <i class="arg">type</i> <i class="arg">delta</i></a></dt>
<dd><p>This command handles base locations specified indirectly through the
contents of the inspected file. It returns the sum of <i class="arg">delta</i> and
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
<dd><p>32-bit integer timestamp, stored in native endianess</p></dd>
<dt><b class="const">beldate</b></dt>
<dd><p>see above, stored in big endian</p></dd>
<dt><b class="const">leldate</b></dt>
<dd><p>see above, stored in small/little endian</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>fileutil :: magic</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>file(1), <a href="../fileutil/fileutil.html">fileutil</a>, magic(5)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key122">file recognition</a>, <a href="../../../../index.html#key123">file type</a>, <a href="../../../../index.html#key121">file utilities</a>, <a href="../../../../index.html#key228">mime</a>, <a href="../../../../index.html#key124">type</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>







|



|







|





301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
<dd><p>32-bit integer timestamp, stored in native endianess</p></dd>
<dt><b class="const">beldate</b></dt>
<dd><p>see above, stored in big endian</p></dd>
<dt><b class="const">leldate</b></dt>
<dd><p>see above, stored in small/little endian</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>fileutil :: magic</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>file(1), <a href="../fileutil/fileutil.html">fileutil</a>, magic(5)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key122">file recognition</a>, <a href="../../../../index.html#key124">file type</a>, <a href="../../../../index.html#key121">file utilities</a>, <a href="../../../../index.html#key228">mime</a>, <a href="../../../../index.html#key123">type</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/generator/generator.html.

196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
series has been exhausted, the generator command returns an empty list and then
destroys itself. Rather than manually call a generator, however, the package
also provides a flexible <b class="method">foreach</b> command that loops through the values of
one or more generators. This loop construct mimicks the functionality of the
built-in Tcl <b class="cmd"><a href="../../../../index.html#key209">foreach</a></b> command, including handling multiple return values
and looping over multiple generators at once. Writing a generator is also a
simple task, much like writing a normal procedure: simply use the <b class="method">define</b>
command to define the generator, and then call <b class="method">yield</b> instead of <b class="cmd">return</b>. 
For example, we can define a generator for looping through the integers
in a particular range:</p>
<pre class="example">
    generator define range {n m} {
        for {set i $n} {$i &lt;= $m} {incr i} { generator yield $i }
    }
    generator foreach x [range 1 10] {







|







196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
series has been exhausted, the generator command returns an empty list and then
destroys itself. Rather than manually call a generator, however, the package
also provides a flexible <b class="method">foreach</b> command that loops through the values of
one or more generators. This loop construct mimicks the functionality of the
built-in Tcl <b class="cmd"><a href="../../../../index.html#key209">foreach</a></b> command, including handling multiple return values
and looping over multiple generators at once. Writing a generator is also a
simple task, much like writing a normal procedure: simply use the <b class="method">define</b>
command to define the generator, and then call <b class="method">yield</b> instead of <b class="cmd">return</b>.
For example, we can define a generator for looping through the integers
in a particular range:</p>
<pre class="example">
    generator define range {n m} {
        for {set i $n} {$i &lt;= $m} {incr i} { generator yield $i }
    }
    generator foreach x [range 1 10] {
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
returns an empty list and then destroys itself to free up resources. It is an
error to attempt to call an exhausted generator as the command no longer exists.</p></dd>
<dt><a name="2"><b class="cmd">generator</b> <b class="method">yield</b> <i class="arg">arg</i> <span class="opt">?<i class="arg">args..</i>?</span></a></dt>
<dd><p>Used in the definition of a generator, this command returns the next set of
values to the consumer. Once the <b class="method">yield</b> command has been called the
generator will suspend to allow the consumer to process that value. When the
next value is requested, the generator will resume as if the yield command had
just returned, and can continue processing to yield the next result. The 
<b class="method">yield</b> command must be called with at least one argument, but can be called with
multiple arguments, in which case this is equivalent to calling <b class="method">yield</b>
once for each argument.</p></dd>
<dt><a name="3"><b class="cmd">generator</b> <b class="method">foreach</b> <i class="arg">varList</i> <i class="arg">generator</i> <i class="arg">varList</i> <i class="arg">generator</i> <span class="opt">?...?</span> <i class="arg">body</i></a></dt>
<dd><p>Loops through one or more generators, assigning the next values to variables and
then executing the loop body. Works much like the built-in <b class="cmd"><a href="../../../../index.html#key209">foreach</a></b>
command, but working with generators rather than lists. Multiple generators can







|







241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
returns an empty list and then destroys itself to free up resources. It is an
error to attempt to call an exhausted generator as the command no longer exists.</p></dd>
<dt><a name="2"><b class="cmd">generator</b> <b class="method">yield</b> <i class="arg">arg</i> <span class="opt">?<i class="arg">args..</i>?</span></a></dt>
<dd><p>Used in the definition of a generator, this command returns the next set of
values to the consumer. Once the <b class="method">yield</b> command has been called the
generator will suspend to allow the consumer to process that value. When the
next value is requested, the generator will resume as if the yield command had
just returned, and can continue processing to yield the next result. The
<b class="method">yield</b> command must be called with at least one argument, but can be called with
multiple arguments, in which case this is equivalent to calling <b class="method">yield</b>
once for each argument.</p></dd>
<dt><a name="3"><b class="cmd">generator</b> <b class="method">foreach</b> <i class="arg">varList</i> <i class="arg">generator</i> <i class="arg">varList</i> <i class="arg">generator</i> <span class="opt">?...?</span> <i class="arg">body</i></a></dt>
<dd><p>Loops through one or more generators, assigning the next values to variables and
then executing the loop body. Works much like the built-in <b class="cmd"><a href="../../../../index.html#key209">foreach</a></b>
command, but working with generators rather than lists. Multiple generators can
504
505
506
507
508
509
510
511
512
513
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>Please report any errors in this document, or in the package it describes, to
<a href="mailto:[email protected]">Neil Madden</a>.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key215">control structure</a>, <a href="../../../../index.html#key210">coroutine</a>, <a href="../../../../index.html#key213">filter</a>, <a href="../../../../index.html#key212">foldl</a>, <a href="../../../../index.html#key216">foldr</a>, <a href="../../../../index.html#key209">foreach</a>, <a href="../../../../index.html#key217">generator</a>, <a href="../../../../index.html#key214">iterator</a>, <a href="../../../../index.html#key204">map</a>, <a href="../../../../index.html#key208">reduce</a>, <a href="../../../../index.html#key211">scanl</a></p>
</div>
</div></body></html>







|


504
505
506
507
508
509
510
511
512
513
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>Please report any errors in this document, or in the package it describes, to
<a href="mailto:[email protected]">Neil Madden</a>.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key215">control structure</a>, <a href="../../../../index.html#key210">coroutine</a>, <a href="../../../../index.html#key214">filter</a>, <a href="../../../../index.html#key212">foldl</a>, <a href="../../../../index.html#key217">foldr</a>, <a href="../../../../index.html#key209">foreach</a>, <a href="../../../../index.html#key216">generator</a>, <a href="../../../../index.html#key213">iterator</a>, <a href="../../../../index.html#key203">map</a>, <a href="../../../../index.html#key208">reduce</a>, <a href="../../../../index.html#key211">scanl</a></p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/gpx/gpx.html.

118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">DATA STRUCTURES</a></li>
<li class="section"><a href="#section4">EXAMPLE</a></li>
<li class="section"><a href="#section5">REFERENCES</a></li>
<li class="section"><a href="#section6">AUTHOR</a></li>
<li class="section"><a href="#section7">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">DATA STRUCTURES</a></li>
<li class="section"><a href="#section4">EXAMPLE</a></li>
<li class="section"><a href="#section5">REFERENCES</a></li>
<li class="section"><a href="#section6">AUTHOR</a></li>
<li class="section"><a href="#section7">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
<dt><a name="3"><b class="cmd">::gpx::GetGPXMetadata</b> <i class="arg">token</i></a></dt>
<dd><p>This procedure returns a dictionary of the metadata
associated with the GPX data identified by <i class="arg">token</i>.
The format of the metadata dictionary is described
below, but keys <em>version</em> and <em>creator</em>
will always be present.</p></dd>
<dt><a name="4"><b class="cmd">::gpx::GetWaypointCount</b> <i class="arg">token</i></a></dt>
<dd><p>This procedure returns the number of waypoints defined in the GPX 
data identified by <i class="arg">token</i>.</p></dd>
<dt><a name="5"><b class="cmd">::gpx::GetAllWaypoints</b> <i class="arg">token</i></a></dt>
<dd><p>This procedure returns the a list of waypoints defined in the GPX 
data identified by <i class="arg">token</i>. The format of each waypoint item
is described below.</p></dd>
<dt><a name="6"><b class="cmd">::gpx::GetTrackCount</b> <i class="arg">token</i></a></dt>
<dd><p>This procedure returns the number of tracks defined in the GPX 
data identified by <i class="arg">token</i>.</p></dd>
<dt><a name="7"><b class="cmd">::gpx::GetTrackMetadata</b> <i class="arg">token</i> <i class="arg">whichTrack</i></a></dt>
<dd><p>This procedure returns a dictionary of the metadata 
associated track number <i class="arg">whichTrack</i> (1 based) in 
the GPX data identified by <i class="arg">token</i>.
The format of the metadata dictionary is described below.</p></dd>
<dt><a name="8"><b class="cmd">::gpx::GetTrackPoints</b> <i class="arg">token</i> <i class="arg">whichTrack</i></a></dt>
<dd><p>The procedure returns a list of track points comprising track
number <i class="arg">whichTrack</i> (1 based) in the GPX data identified by
<i class="arg">token</i>. The format of the metadata dictionary is described below.</p></dd>
<dt><a name="9"><b class="cmd">::gpx::GetRouteCount</b> <i class="arg">token</i></a></dt>
<dd><p>This procedure returns the number of routes defined in the GPX 
data identified by <i class="arg">token</i>.</p></dd>
<dt><a name="10"><b class="cmd">::gpx::GetRouteMetadata</b> <i class="arg">token</i> <i class="arg">whichRoute</i></a></dt>
<dd><p>This procedure returns a dictionary of the metadata 
associated route number <i class="arg">whichRoute</i> (1 based) in 
the GPX data identified by <i class="arg">token</i>.
The format of the metadata dictionary is described below.</p></dd>
<dt><a name="11"><b class="cmd">::gpx::GetRoutePoints</b> <i class="arg">token</i> <i class="arg">whichRoute</i></a></dt>
<dd><p>The procedure returns a list of route points comprising route
number <i class="arg">whichRoute</i> (1 based) in the GPX data identified by
<i class="arg">token</i>. The format of the metadata dictionary is described below.</p></dd>
</dl>







|


|



|


|
|







|


|
|







172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
<dt><a name="3"><b class="cmd">::gpx::GetGPXMetadata</b> <i class="arg">token</i></a></dt>
<dd><p>This procedure returns a dictionary of the metadata
associated with the GPX data identified by <i class="arg">token</i>.
The format of the metadata dictionary is described
below, but keys <em>version</em> and <em>creator</em>
will always be present.</p></dd>
<dt><a name="4"><b class="cmd">::gpx::GetWaypointCount</b> <i class="arg">token</i></a></dt>
<dd><p>This procedure returns the number of waypoints defined in the GPX
data identified by <i class="arg">token</i>.</p></dd>
<dt><a name="5"><b class="cmd">::gpx::GetAllWaypoints</b> <i class="arg">token</i></a></dt>
<dd><p>This procedure returns the a list of waypoints defined in the GPX
data identified by <i class="arg">token</i>. The format of each waypoint item
is described below.</p></dd>
<dt><a name="6"><b class="cmd">::gpx::GetTrackCount</b> <i class="arg">token</i></a></dt>
<dd><p>This procedure returns the number of tracks defined in the GPX
data identified by <i class="arg">token</i>.</p></dd>
<dt><a name="7"><b class="cmd">::gpx::GetTrackMetadata</b> <i class="arg">token</i> <i class="arg">whichTrack</i></a></dt>
<dd><p>This procedure returns a dictionary of the metadata
associated track number <i class="arg">whichTrack</i> (1 based) in
the GPX data identified by <i class="arg">token</i>.
The format of the metadata dictionary is described below.</p></dd>
<dt><a name="8"><b class="cmd">::gpx::GetTrackPoints</b> <i class="arg">token</i> <i class="arg">whichTrack</i></a></dt>
<dd><p>The procedure returns a list of track points comprising track
number <i class="arg">whichTrack</i> (1 based) in the GPX data identified by
<i class="arg">token</i>. The format of the metadata dictionary is described below.</p></dd>
<dt><a name="9"><b class="cmd">::gpx::GetRouteCount</b> <i class="arg">token</i></a></dt>
<dd><p>This procedure returns the number of routes defined in the GPX
data identified by <i class="arg">token</i>.</p></dd>
<dt><a name="10"><b class="cmd">::gpx::GetRouteMetadata</b> <i class="arg">token</i> <i class="arg">whichRoute</i></a></dt>
<dd><p>This procedure returns a dictionary of the metadata
associated route number <i class="arg">whichRoute</i> (1 based) in
the GPX data identified by <i class="arg">token</i>.
The format of the metadata dictionary is described below.</p></dd>
<dt><a name="11"><b class="cmd">::gpx::GetRoutePoints</b> <i class="arg">token</i> <i class="arg">whichRoute</i></a></dt>
<dd><p>The procedure returns a list of route points comprising route
number <i class="arg">whichRoute</i> (1 based) in the GPX data identified by
<i class="arg">token</i>. The format of the metadata dictionary is described below.</p></dd>
</dl>
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
a sub-dictionary with keys <em>href</em> and optionally
<em>text</em> and <em>type</em>.</p></dd>
<dt>point item</dt>
<dd><p>Each item in a track or route list of points consists of
a list of three elements: <em>latitude</em>, <em>longitude</em> and
<em>metadata dictionary</em>. <em>Latitude</em> and <em>longitude</em>
are decimal numbers. The <em>metadata dictionary</em> format is
described above. For points in a track, typically there will 
always be ele (elevation) and time metadata keys.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">EXAMPLE</a></h2>
<pre class="example">
% set token [::gpx::Create myGpxFile.gpx]
% set version [dict get [::gpx::GetGPXMetadata $token] version]
% set trackCnt [::gpx::GetTrackCount $token]
% set firstPoint [lindex [::gpx::GetTrackPoints $token 1] 0]
% lassign $firstPoint lat lon ptMetadata
% puts &quot;first point in the first track is at $lat, $lon&quot;
% if {[dict exists $ptMetadata ele]} { 
     puts &quot;at elevation [dict get $ptMetadata ele] meters&quot;
  }
% ::gpx::Cleanup $token
</pre>
</div>
<div id="section5" class="section"><h2><a name="section5">REFERENCES</a></h2>
<ol class="enumerated">
<li><p>GPX: the GPS Exchange Format
   (<a href="http://www.topografix.com/gpx.asp">http://www.topografix.com/gpx.asp</a>)</p></li>
<li><p>GPX 1.1 Schema Documentation (<a href="http://www.topografix.com/GPX/1/1/">http://www.topografix.com/GPX/1/1/</a>)</p></li>
<li><p>GPX 1.0 Developer's Manual (<a href="http://www.topografix.com/gpx_manual.asp">http://www.topografix.com/gpx_manual.asp</a>)</p></li>
</ol>
</div>
<div id="section6" class="section"><h2><a name="section6">AUTHOR</a></h2>
<p>Keith Vetter</p>
</div>
<div id="section7" class="section"><h2><a name="section7">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>gpx</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key386">gps</a>, <a href="../../../../index.html#key652">gpx</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>File formats</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2010, Keith Vetter &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|











|
















|



|













221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
a sub-dictionary with keys <em>href</em> and optionally
<em>text</em> and <em>type</em>.</p></dd>
<dt>point item</dt>
<dd><p>Each item in a track or route list of points consists of
a list of three elements: <em>latitude</em>, <em>longitude</em> and
<em>metadata dictionary</em>. <em>Latitude</em> and <em>longitude</em>
are decimal numbers. The <em>metadata dictionary</em> format is
described above. For points in a track, typically there will
always be ele (elevation) and time metadata keys.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">EXAMPLE</a></h2>
<pre class="example">
% set token [::gpx::Create myGpxFile.gpx]
% set version [dict get [::gpx::GetGPXMetadata $token] version]
% set trackCnt [::gpx::GetTrackCount $token]
% set firstPoint [lindex [::gpx::GetTrackPoints $token 1] 0]
% lassign $firstPoint lat lon ptMetadata
% puts &quot;first point in the first track is at $lat, $lon&quot;
% if {[dict exists $ptMetadata ele]} {
     puts &quot;at elevation [dict get $ptMetadata ele] meters&quot;
  }
% ::gpx::Cleanup $token
</pre>
</div>
<div id="section5" class="section"><h2><a name="section5">REFERENCES</a></h2>
<ol class="enumerated">
<li><p>GPX: the GPS Exchange Format
   (<a href="http://www.topografix.com/gpx.asp">http://www.topografix.com/gpx.asp</a>)</p></li>
<li><p>GPX 1.1 Schema Documentation (<a href="http://www.topografix.com/GPX/1/1/">http://www.topografix.com/GPX/1/1/</a>)</p></li>
<li><p>GPX 1.0 Developer's Manual (<a href="http://www.topografix.com/gpx_manual.asp">http://www.topografix.com/gpx_manual.asp</a>)</p></li>
</ol>
</div>
<div id="section6" class="section"><h2><a name="section6">AUTHOR</a></h2>
<p>Keith Vetter</p>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>gpx</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key386">gps</a>, <a href="../../../../index.html#key652">gpx</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>File formats</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2010, Keith Vetter &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/grammar_aycock/aycock.html.

142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
<li><a href="#6"><i class="arg">parserName</i> <b class="method">save</b></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>The <b class="package">grammar::aycock</b> package
implements a parser generator for the class of parsers described
in John Aycock and R. Nigel Horspool. Practical Earley Parsing. 
<em>The Computer Journal,</em> <em>45</em>(6):620-630, 2002. 
<a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.12.4254">http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.12.4254</a></p>
</div>
<div id="section2" class="section"><h2><a name="section2">PROCEDURES</a></h2>
<p>The <b class="package">grammar::aycock</b> package exports the single procedure:</p>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::aycock::parser</b> <i class="arg">grammar</i> <span class="opt">?<b class="option">-verbose</b>?</span></a></dt>
<dd><p>Generates a parser for the given <i class="arg">grammar</i>, and returns its







|
|







142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
<li><a href="#6"><i class="arg">parserName</i> <b class="method">save</b></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>The <b class="package">grammar::aycock</b> package
implements a parser generator for the class of parsers described
in John Aycock and R. Nigel Horspool. Practical Earley Parsing.
<em>The Computer Journal,</em> <em>45</em>(6):620-630, 2002.
<a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.12.4254">http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.12.4254</a></p>
</div>
<div id="section2" class="section"><h2><a name="section2">PROCEDURES</a></h2>
<p>The <b class="package">grammar::aycock</b> package exports the single procedure:</p>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::aycock::parser</b> <i class="arg">grammar</i> <span class="opt">?<b class="option">-verbose</b>?</span></a></dt>
<dd><p>Generates a parser for the given <i class="arg">grammar</i>, and returns its
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
<dd><p>Invokes a parser returned from <b class="cmd">::aycock::parser</b>. <i class="arg">symList</i> is
a list of grammar symbols representing the terminals in an input
string, and <i class="arg">valList</i> is a list of their semantic values. The
result is the semantic value of the entire string when parsed.</p></dd>
<dt><a name="3"><i class="arg">parserName</i> <b class="method">destroy</b></a></dt>
<dd><p>Destroys a parser constructed by <b class="cmd">::aycock::parser</b>.</p></dd>
<dt><a name="4"><i class="arg">parserName</i> <b class="method">terminals</b></a></dt>
<dd><p>Returns a list of terminal symbols that may be presented in the 
<i class="arg">symList</i> argument to the <b class="method">parse</b> object command.</p></dd>
<dt><a name="5"><i class="arg">parserName</i> <b class="method">nonterminals</b></a></dt>
<dd><p>Returns a list of nonterminal symbols that were defined in the
parser's grammar.</p></dd>
<dt><a name="6"><i class="arg">parserName</i> <b class="method">save</b></a></dt>
<dd><p>Returns a Tcl script that will reconstruct the parser without
needing all the mechanism of the parser generator at run time.







|







167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
<dd><p>Invokes a parser returned from <b class="cmd">::aycock::parser</b>. <i class="arg">symList</i> is
a list of grammar symbols representing the terminals in an input
string, and <i class="arg">valList</i> is a list of their semantic values. The
result is the semantic value of the entire string when parsed.</p></dd>
<dt><a name="3"><i class="arg">parserName</i> <b class="method">destroy</b></a></dt>
<dd><p>Destroys a parser constructed by <b class="cmd">::aycock::parser</b>.</p></dd>
<dt><a name="4"><i class="arg">parserName</i> <b class="method">terminals</b></a></dt>
<dd><p>Returns a list of terminal symbols that may be presented in the
<i class="arg">symList</i> argument to the <b class="method">parse</b> object command.</p></dd>
<dt><a name="5"><i class="arg">parserName</i> <b class="method">nonterminals</b></a></dt>
<dd><p>Returns a list of nonterminal symbols that were defined in the
parser's grammar.</p></dd>
<dt><a name="6"><i class="arg">parserName</i> <b class="method">save</b></a></dt>
<dd><p>Returns a Tcl script that will reconstruct the parser without
needing all the mechanism of the parser generator at run time.

Changes to embedded/www/tcllib/files/modules/grammar_fa/dacceptor.html.

116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">ACCEPTOR METHODS</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">ACCEPTOR METHODS</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
to simply fail. No errors will be thrown. The method will process only
just that prefix of the input which is enough to fully determine
(non-)acceptance.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">EXAMPLES</a></h2>
</div>
<div id="section5" class="section"><h2><a name="section5">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>grammar_fa</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key308">acceptance</a>, <a href="../../../../index.html#key305">acceptor</a>, <a href="../../../../index.html#key302">automaton</a>, <a href="../../../../index.html#key307">finite automaton</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key306">regular expression</a>, <a href="../../../../index.html#key304">regular grammar</a>, <a href="../../../../index.html#key303">regular languages</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Grammars and finite automata</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
to simply fail. No errors will be thrown. The method will process only
just that prefix of the input which is enough to fully determine
(non-)acceptance.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">EXAMPLES</a></h2>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>grammar_fa</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key308">acceptance</a>, <a href="../../../../index.html#key305">acceptor</a>, <a href="../../../../index.html#key302">automaton</a>, <a href="../../../../index.html#key307">finite automaton</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key306">regular expression</a>, <a href="../../../../index.html#key304">regular grammar</a>, <a href="../../../../index.html#key303">regular languages</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Grammars and finite automata</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/grammar_fa/dexec.html.

117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">EXECUTOR METHODS</a></li>
<li class="section"><a href="#section4">EXECUTOR CALLBACK</a></li>
<li class="section"><a href="#section5">EXAMPLES</a></li>
<li class="section"><a href="#section6">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">EXECUTOR METHODS</a></li>
<li class="section"><a href="#section4">EXECUTOR CALLBACK</a></li>
<li class="section"><a href="#section5">EXAMPLES</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
do nothing, until the error condition has been cleared via an
invokation of method <b class="method">reset</b>.</p></dd>
<dt><a name="5"><i class="arg">daName</i> <b class="method">reset</b></a></dt>
<dd><p>Unconditionally sets the executor into the start state of the
underlying FA. This also clears any error condition  <b class="method">put</b> may
have encountered.</p></dd>
<dt><a name="6"><i class="arg">daName</i> <b class="method">state</b></a></dt>
<dd><p>Returns the current state of the underlying FA. This allow for 
introspection without the need to pass data from the callback command.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">EXECUTOR CALLBACK</a></h2>
<p>The callback command <i class="arg">cmdprefix</i> given to an executor via the
option <b class="option">-command</b> will be executed by the object at the global
level, using the syntax described below. Note that <i class="arg">cmdprefix</i> is







|







207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
do nothing, until the error condition has been cleared via an
invokation of method <b class="method">reset</b>.</p></dd>
<dt><a name="5"><i class="arg">daName</i> <b class="method">reset</b></a></dt>
<dd><p>Unconditionally sets the executor into the start state of the
underlying FA. This also clears any error condition  <b class="method">put</b> may
have encountered.</p></dd>
<dt><a name="6"><i class="arg">daName</i> <b class="method">state</b></a></dt>
<dd><p>Returns the current state of the underlying FA. This allow for
introspection without the need to pass data from the callback command.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">EXECUTOR CALLBACK</a></h2>
<p>The callback command <i class="arg">cmdprefix</i> given to an executor via the
option <b class="option">-command</b> will be executed by the object at the global
level, using the syntax described below. Note that <i class="arg">cmdprefix</i> is
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
<dd><p>The executor was reset.</p></dd>
<dt><a name="10"><i class="arg">cmdprefix</i> <b class="method">state</b> <i class="arg">stateid</i></a></dt>
<dd><p>The FA changed state due to a transition. <i class="arg">stateid</i> is the new state.</p></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">EXAMPLES</a></h2>
</div>
<div id="section6" class="section"><h2><a name="section6">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>grammar_fa</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key302">automaton</a>, <a href="../../../../index.html#key408">execution</a>, <a href="../../../../index.html#key307">finite automaton</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key306">regular expression</a>, <a href="../../../../index.html#key304">regular grammar</a>, <a href="../../../../index.html#key303">regular languages</a>, <a href="../../../../index.html#key409">running</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|



|







243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
<dd><p>The executor was reset.</p></dd>
<dt><a name="10"><i class="arg">cmdprefix</i> <b class="method">state</b> <i class="arg">stateid</i></a></dt>
<dd><p>The FA changed state due to a transition. <i class="arg">stateid</i> is the new state.</p></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">EXAMPLES</a></h2>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>grammar_fa</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key302">automaton</a>, <a href="../../../../index.html#key408">execution</a>, <a href="../../../../index.html#key307">finite automaton</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key306">regular expression</a>, <a href="../../../../index.html#key304">regular grammar</a>, <a href="../../../../index.html#key303">regular languages</a>, <a href="../../../../index.html#key409">running</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/grammar_fa/fa.html.

117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">FA METHODS</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">FINITE AUTOMATONS</a></li>
<li class="section"><a href="#section6">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">FA METHODS</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">FINITE AUTOMATONS</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
<p>For the graph representation this means that edges are additional
labeled with the output symbol to write when this edge is traversed
while matching input. Note that for an application &quot;writing an output
symbol&quot; can also be &quot;executing some code&quot;.</p>
<p>Transducers are not handled by this package. They will get their own
package in the future.</p>
</div>
<div id="section6" class="section"><h2><a name="section6">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>grammar_fa</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key302">automaton</a>, <a href="../../../../index.html#key307">finite automaton</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key306">regular expression</a>, <a href="../../../../index.html#key304">regular grammar</a>, <a href="../../../../index.html#key303">regular languages</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Grammars and finite automata</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004-2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
<p>For the graph representation this means that edges are additional
labeled with the output symbol to write when this edge is traversed
while matching input. Note that for an application &quot;writing an output
symbol&quot; can also be &quot;executing some code&quot;.</p>
<p>Transducers are not handled by this package. They will get their own
package in the future.</p>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>grammar_fa</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key302">automaton</a>, <a href="../../../../index.html#key307">finite automaton</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key306">regular expression</a>, <a href="../../../../index.html#key304">regular grammar</a>, <a href="../../../../index.html#key303">regular languages</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Grammars and finite automata</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004-2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/grammar_fa/faop.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
but uses a different algorithm to simplify the generated regular expressions.</p></dd>
<dt><a name="18"><b class="cmd">::grammar::fa::op::toTclRegexp</b> <i class="arg">regexp</i> <i class="arg">symdict</i></a></dt>
<dd><p>This command generates and returns a regular expression in Tcl syntax for the
regular expression <i class="arg">regexp</i>, if that is possible. <i class="arg">regexp</i> is in the
same format as expected by <b class="cmd">::grammar::fa::op::fromRegex</b>.</p>
<p>The command will fail and throw an error if <i class="arg">regexp</i> contains
complementation and intersection operations.</p>
<p>The argument <i class="arg">symdict</i> is a dictionary mapping symbol names to 
pairs of <i class="term">syntactic type</i> and Tcl-regexp. If a symbol 
occurring in the <i class="arg">regexp</i> is not listed in this dictionary then 
single-character symbols are considered to designate themselves 
whereas multiple-character symbols are considered to be a character 
class name.</p></dd>
<dt><a name="19"><b class="cmd">::grammar::fa::op::simplifyRegexp</b> <i class="arg">regexp</i></a></dt>
<dd><p>This command simplifies a regular expression by applying the following
algorithm first to the main expression and then recursively to all
sub-expressions:</p>
<ol class="enumerated">
<li><p>Convert the expression into a finite automaton.</p></li>
<li><p>Minimize the automaton.</p></li>
<li><p>Convert the automaton back to a regular expression.</p></li>
<li><p>Choose the shorter of original expression and expression from
the previous step.</p></li>
</ol></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">EXAMPLES</a></h2>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>grammar_fa</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key302">automaton</a>, <a href="../../../../index.html#key307">finite automaton</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key306">regular expression</a>, <a href="../../../../index.html#key304">regular grammar</a>, <a href="../../../../index.html#key303">regular languages</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Grammars and finite automata</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004-2008 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|
|
|
|
|
















|



|













422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
but uses a different algorithm to simplify the generated regular expressions.</p></dd>
<dt><a name="18"><b class="cmd">::grammar::fa::op::toTclRegexp</b> <i class="arg">regexp</i> <i class="arg">symdict</i></a></dt>
<dd><p>This command generates and returns a regular expression in Tcl syntax for the
regular expression <i class="arg">regexp</i>, if that is possible. <i class="arg">regexp</i> is in the
same format as expected by <b class="cmd">::grammar::fa::op::fromRegex</b>.</p>
<p>The command will fail and throw an error if <i class="arg">regexp</i> contains
complementation and intersection operations.</p>
<p>The argument <i class="arg">symdict</i> is a dictionary mapping symbol names to
pairs of <i class="term">syntactic type</i> and Tcl-regexp. If a symbol
occurring in the <i class="arg">regexp</i> is not listed in this dictionary then
single-character symbols are considered to designate themselves
whereas multiple-character symbols are considered to be a character
class name.</p></dd>
<dt><a name="19"><b class="cmd">::grammar::fa::op::simplifyRegexp</b> <i class="arg">regexp</i></a></dt>
<dd><p>This command simplifies a regular expression by applying the following
algorithm first to the main expression and then recursively to all
sub-expressions:</p>
<ol class="enumerated">
<li><p>Convert the expression into a finite automaton.</p></li>
<li><p>Minimize the automaton.</p></li>
<li><p>Convert the automaton back to a regular expression.</p></li>
<li><p>Choose the shorter of original expression and expression from
the previous step.</p></li>
</ol></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">EXAMPLES</a></h2>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>grammar_fa</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key302">automaton</a>, <a href="../../../../index.html#key307">finite automaton</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key306">regular expression</a>, <a href="../../../../index.html#key304">regular grammar</a>, <a href="../../../../index.html#key303">regular languages</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Grammars and finite automata</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004-2008 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/grammar_me/gasm.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">DEFINITIONS</a></li>
<li class="section"><a href="#section3">API</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">DEFINITIONS</a></li>
<li class="section"><a href="#section3">API</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
<p>The command returns the empty string as its result.</p></dd>
<dt><a name="19"><b class="cmd">::grammar::me::cpu::gasm::/CloseLoop</b></a></dt>
<dd><p>This command marks the <i class="term">anchor</i> as the last instruction in a loop
body, by creating the attribute <b class="const">LOOP</b>.</p>
<p>The command returns the empty string as its result.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>grammar_me</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key296">assembler</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key282">graph</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key280">tree</a>, <a href="../../../../index.html#key25">virtual machine</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Grammars and finite automata</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
<p>The command returns the empty string as its result.</p></dd>
<dt><a name="19"><b class="cmd">::grammar::me::cpu::gasm::/CloseLoop</b></a></dt>
<dd><p>This command marks the <i class="term">anchor</i> as the last instruction in a loop
body, by creating the attribute <b class="const">LOOP</b>.</p>
<p>The command returns the empty string as its result.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>grammar_me</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key296">assembler</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key283">graph</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key278">tree</a>, <a href="../../../../index.html#key24">virtual machine</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Grammars and finite automata</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/grammar_me/me_ast.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">AST VALUES</a></li>
<li class="section"><a href="#section3">AST OBJECTS</a></li>
<li class="section"><a href="#section4">EXTENDED AST OBJECTS</a></li>
<li class="section"><a href="#section5">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This document specifies various representations for the







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">AST VALUES</a></li>
<li class="section"><a href="#section3">AST OBJECTS</a></li>
<li class="section"><a href="#section4">EXTENDED AST OBJECTS</a></li>
<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This document specifies various representations for the
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
lexeme attribute, line number, and column index, in this order.</p></dd>
<dt>range_lc</dt>
<dd><p>This new attribute is defined for all nodes, and contains the
locations from attribute <i class="term">range</i> translated into line number and
column index. Lines are counted from 1, columns are counted from 0.</p></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>grammar_me</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key800">AST</a>, <a href="../../../../index.html#key722">abstract syntax tree</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Grammars and finite automata</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
lexeme attribute, line number, and column index, in this order.</p></dd>
<dt>range_lc</dt>
<dd><p>This new attribute is defined for all nodes, and contains the
locations from attribute <i class="term">range</i> translated into line number and
column index. Lines are counted from 1, columns are counted from 0.</p></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>grammar_me</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key800">AST</a>, <a href="../../../../index.html#key722">abstract syntax tree</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Grammars and finite automata</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/grammar_me/me_cpu.html.

119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a>
<ul>
<li class="subsection"><a href="#subsection1">CLASS API</a></li>
<li class="subsection"><a href="#subsection2">OBJECT API</a></li>
</ul>
</li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a>
<ul>
<li class="subsection"><a href="#subsection1">CLASS API</a></li>
<li class="subsection"><a href="#subsection2">OBJECT API</a></li>
</ul>
</li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
<dd><p>This method resets the machine to its initial state, discarding any
state it may have.</p></dd>
<dt><a name="27"><i class="arg">meName</i> <b class="method">destroy</b></a></dt>
<dd><p>This method deletes the object and releases all resurces it claimed.</p></dd>
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>grammar_me</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key25">virtual machine</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Grammars and finite automata</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005-2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
<dd><p>This method resets the machine to its initial state, discarding any
state it may have.</p></dd>
<dt><a name="27"><i class="arg">meName</i> <b class="method">destroy</b></a></dt>
<dd><p>This method deletes the object and releases all resurces it claimed.</p></dd>
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>grammar_me</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key24">virtual machine</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Grammars and finite automata</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005-2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/grammar_me/me_cpucore.html.

119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a>
<ul>
<li class="subsection"><a href="#subsection1">MATCH PROGRAM REPRESENTATION</a></li>
</ul>
</li>
<li class="section"><a href="#section3">CPU STATE</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a>
<ul>
<li class="subsection"><a href="#subsection1">MATCH PROGRAM REPRESENTATION</a></li>
</ul>
</li>
<li class="section"><a href="#section3">CPU STATE</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
</ul>
<p>If no limit <i class="arg">n</i> was set only the last two conditions are checked
for.</p></dd>
</dl>
<div id="subsection1" class="subsection"><h3><a name="subsection1">MATCH PROGRAM REPRESENTATION</a></h3>
<p>A match program is represented by nested Tcl list. The first element,
<i class="term">asm</i>, is a list of integer numbers, the instructions to execute,
and their arguments. The second element, <i class="term"><a href="../../../../index.html#key281">pool</a></i>, is a list of
strings, referenced by the instructions, for error messages, token
names, etc. The third element, <i class="term">tokmap</i>, provides ordering
information for the tokens, mapping their names to their numerical
rank. This element can be empty, forcing lexicographic comparison when
matching ranges.</p>
<p>All ME instructions are encoded as integer numbers, with the mapping
given below. A number of the instructions, those which handle error
messages, have been given an additional argument to supply that
message explicitly instead of having it constructed from token names,
etc. This allows the machine state to store only the message ids
instead of the full strings.</p>
<p>Jump destination arguments are absolute indices into the <i class="term">asm</i>
element, refering to the instruction to jump to. Any string arguments
are absolute indices into the <i class="term"><a href="../../../../index.html#key281">pool</a></i> element. Tokens, characters,
messages, and token (actually character) classes to match are coded as
references into the <i class="term"><a href="../../../../index.html#key281">pool</a></i> as well.</p>
<ol class="enumerated">
<li><p>&quot;<b class="cmd">ict_advance</b> <i class="arg">message</i>&quot;</p></li>
<li><p>&quot;<b class="cmd">ict_match_token</b> <i class="arg">tok</i> <i class="arg">message</i>&quot;</p></li>
<li><p>&quot;<b class="cmd">ict_match_tokrange</b> <i class="arg">tokbegin</i> <i class="arg">tokend</i> <i class="arg">message</i>&quot;</p></li>
<li><p>&quot;<b class="cmd">ict_match_tokclass</b> <i class="arg">code</i> <i class="arg">message</i>&quot;</p></li>
<li><p>&quot;<b class="cmd">inc_restore</b> <i class="arg">branchlabel</i> <i class="arg">nt</i>&quot;</p></li>
<li><p>&quot;<b class="cmd">inc_save</b> <i class="arg">nt</i>&quot;</p></li>







|













|

|







312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
</ul>
<p>If no limit <i class="arg">n</i> was set only the last two conditions are checked
for.</p></dd>
</dl>
<div id="subsection1" class="subsection"><h3><a name="subsection1">MATCH PROGRAM REPRESENTATION</a></h3>
<p>A match program is represented by nested Tcl list. The first element,
<i class="term">asm</i>, is a list of integer numbers, the instructions to execute,
and their arguments. The second element, <i class="term"><a href="../../../../index.html#key282">pool</a></i>, is a list of
strings, referenced by the instructions, for error messages, token
names, etc. The third element, <i class="term">tokmap</i>, provides ordering
information for the tokens, mapping their names to their numerical
rank. This element can be empty, forcing lexicographic comparison when
matching ranges.</p>
<p>All ME instructions are encoded as integer numbers, with the mapping
given below. A number of the instructions, those which handle error
messages, have been given an additional argument to supply that
message explicitly instead of having it constructed from token names,
etc. This allows the machine state to store only the message ids
instead of the full strings.</p>
<p>Jump destination arguments are absolute indices into the <i class="term">asm</i>
element, refering to the instruction to jump to. Any string arguments
are absolute indices into the <i class="term"><a href="../../../../index.html#key282">pool</a></i> element. Tokens, characters,
messages, and token (actually character) classes to match are coded as
references into the <i class="term"><a href="../../../../index.html#key282">pool</a></i> as well.</p>
<ol class="enumerated">
<li><p>&quot;<b class="cmd">ict_advance</b> <i class="arg">message</i>&quot;</p></li>
<li><p>&quot;<b class="cmd">ict_match_token</b> <i class="arg">tok</i> <i class="arg">message</i>&quot;</p></li>
<li><p>&quot;<b class="cmd">ict_match_tokrange</b> <i class="arg">tokbegin</i> <i class="arg">tokend</i> <i class="arg">message</i>&quot;</p></li>
<li><p>&quot;<b class="cmd">ict_match_tokclass</b> <i class="arg">code</i> <i class="arg">message</i>&quot;</p></li>
<li><p>&quot;<b class="cmd">inc_restore</b> <i class="arg">branchlabel</i> <i class="arg">nt</i>&quot;</p></li>
<li><p>&quot;<b class="cmd">inc_save</b> <i class="arg">nt</i>&quot;</p></li>
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
<ol class="enumerated">
<li><p><i class="term">code</i>: Match instructions, see <span class="sectref"><a href="#subsection1">MATCH PROGRAM REPRESENTATION</a></span>.</p></li>
<li><p><i class="term">pc</i>:   Program counter, <i class="term">int</i>.</p></li>
<li><p><i class="term">halt</i>: Halt flag, <i class="term">boolean</i>.</p></li>
<li><p><i class="term">eof</i>:  Eof flag, <i class="term">boolean</i></p></li>
<li><p><i class="term">tc</i>:   Terminal cache, and input queue. Structure see below.</p></li>
<li><p><i class="term">cl</i>:   Current location, <i class="term">int</i>.</p></li>
<li><p><i class="term">ct</i>:   Current token, <i class="term"><a href="../../../../index.html#key272">string</a></i>.</p></li>
<li><p><i class="term">ok</i>:   Match status, <i class="term">boolean</i>.</p></li>
<li><p><i class="term">sv</i>:   Semantic value, <i class="term"><a href="../../../../index.html#key278">list</a></i>.</p></li>
<li><p><i class="term">er</i>:   Error status, <i class="term"><a href="../../../../index.html#key278">list</a></i>.</p></li>
<li><p><i class="term">ls</i>:   Location stack, <i class="term"><a href="../../../../index.html#key278">list</a></i>.</p></li>
<li><p><i class="term">as</i>:   AST stack, <i class="term"><a href="../../../../index.html#key278">list</a></i>.</p></li>
<li><p><i class="term">ms</i>:   AST marker stack, <i class="term"><a href="../../../../index.html#key278">list</a></i>.</p></li>
<li><p><i class="term">es</i>:   Error stack, <i class="term"><a href="../../../../index.html#key278">list</a></i>.</p></li>
<li><p><i class="term">rs</i>:   Return stack, <i class="term"><a href="../../../../index.html#key278">list</a></i>.</p></li>
<li><p><i class="term">nc</i>:   Nonterminal cache, <i class="term">dictionary</i>.</p></li>
</ol>
<p><i class="term">tc</i>, the input queue of tokens waiting for processing and the
terminal cache containing the tokens already processing are one
unified data structure simply holding all tokens and their
information, with the current location separating that which has been
processed from that which is waiting.
Each element of the queue/cache is a list containing the token, its
lexeme information, line number, and column index, in this order.</p>
<p>All stacks have their top element aat the end, i.e. pushing an item is
equivalent to appending to the list representing the stack, and
popping it removes the last element.</p>
<p><i class="term">er</i>, the error status is either empty or a list of two elements,
a location in the input, and a list of messages, encoded as references
into the <i class="term"><a href="../../../../index.html#key281">pool</a></i> element of the <i class="term">code</i>.</p>
<p><i class="term">nc</i>, the nonterminal cache is keyed by nonterminal name and
location, each value a four-element list containing current location,
match status, semantic value, and error status, in this order.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>grammar_me</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key25">virtual machine</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Grammars and finite automata</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005-2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|

|
|
|
|
|
|
|














|




|



|




|








373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
<ol class="enumerated">
<li><p><i class="term">code</i>: Match instructions, see <span class="sectref"><a href="#subsection1">MATCH PROGRAM REPRESENTATION</a></span>.</p></li>
<li><p><i class="term">pc</i>:   Program counter, <i class="term">int</i>.</p></li>
<li><p><i class="term">halt</i>: Halt flag, <i class="term">boolean</i>.</p></li>
<li><p><i class="term">eof</i>:  Eof flag, <i class="term">boolean</i></p></li>
<li><p><i class="term">tc</i>:   Terminal cache, and input queue. Structure see below.</p></li>
<li><p><i class="term">cl</i>:   Current location, <i class="term">int</i>.</p></li>
<li><p><i class="term">ct</i>:   Current token, <i class="term"><a href="../../../../index.html#key270">string</a></i>.</p></li>
<li><p><i class="term">ok</i>:   Match status, <i class="term">boolean</i>.</p></li>
<li><p><i class="term">sv</i>:   Semantic value, <i class="term"><a href="../../../../index.html#key280">list</a></i>.</p></li>
<li><p><i class="term">er</i>:   Error status, <i class="term"><a href="../../../../index.html#key280">list</a></i>.</p></li>
<li><p><i class="term">ls</i>:   Location stack, <i class="term"><a href="../../../../index.html#key280">list</a></i>.</p></li>
<li><p><i class="term">as</i>:   AST stack, <i class="term"><a href="../../../../index.html#key280">list</a></i>.</p></li>
<li><p><i class="term">ms</i>:   AST marker stack, <i class="term"><a href="../../../../index.html#key280">list</a></i>.</p></li>
<li><p><i class="term">es</i>:   Error stack, <i class="term"><a href="../../../../index.html#key280">list</a></i>.</p></li>
<li><p><i class="term">rs</i>:   Return stack, <i class="term"><a href="../../../../index.html#key280">list</a></i>.</p></li>
<li><p><i class="term">nc</i>:   Nonterminal cache, <i class="term">dictionary</i>.</p></li>
</ol>
<p><i class="term">tc</i>, the input queue of tokens waiting for processing and the
terminal cache containing the tokens already processing are one
unified data structure simply holding all tokens and their
information, with the current location separating that which has been
processed from that which is waiting.
Each element of the queue/cache is a list containing the token, its
lexeme information, line number, and column index, in this order.</p>
<p>All stacks have their top element aat the end, i.e. pushing an item is
equivalent to appending to the list representing the stack, and
popping it removes the last element.</p>
<p><i class="term">er</i>, the error status is either empty or a list of two elements,
a location in the input, and a list of messages, encoded as references
into the <i class="term"><a href="../../../../index.html#key282">pool</a></i> element of the <i class="term">code</i>.</p>
<p><i class="term">nc</i>, the nonterminal cache is keyed by nonterminal name and
location, each value a four-element list containing current location,
match status, semantic value, and error status, in this order.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>grammar_me</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key24">virtual machine</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Grammars and finite automata</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005-2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/grammar_me/me_intro.html.

112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>grammar::me_intro - Introduction to virtual machines for parsing token streams</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This document is an introduction to and overview of the basic
facilities for the parsing and/or matching of <i class="term">token</i>
streams. One possibility often used for the token domain are
characters.</p>
<p>The packages themselves all provide variants of one
<i class="term"><a href="../../../../index.html#key25">virtual machine</a></i>, called a <i class="term">match engine</i> (short
<i class="term">ME</i>), which has all the facilities needed for the matching and
parsing of a stream, and which are either controlled directly, or are
customized with a match program. The virtual machine is basically a
pushdown automaton, with additional elements for backtracking and/or
handling of semantic data and construction of abstract syntax trees
(<i class="term"><a href="../../../../index.html#key800">AST</a></i>).</p>
<p>Because of the high degree of similarity in the actual implementations







|











|







112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>grammar::me_intro - Introduction to virtual machines for parsing token streams</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This document is an introduction to and overview of the basic
facilities for the parsing and/or matching of <i class="term">token</i>
streams. One possibility often used for the token domain are
characters.</p>
<p>The packages themselves all provide variants of one
<i class="term"><a href="../../../../index.html#key24">virtual machine</a></i>, called a <i class="term">match engine</i> (short
<i class="term">ME</i>), which has all the facilities needed for the matching and
parsing of a stream, and which are either controlled directly, or are
customized with a match program. The virtual machine is basically a
pushdown automaton, with additional elements for backtracking and/or
handling of semantic data and construction of abstract syntax trees
(<i class="term"><a href="../../../../index.html#key800">AST</a></i>).</p>
<p>Because of the high degree of similarity in the actual implementations
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
flow, and stacks, using bytecodes. Suspend/Resumable. Push/pull
operation.</p></dd>
<dt><b class="package"><a href="me_cpucore.html">grammar::me::cpu::core</a></b></dt>
<dd><p>Core functionality for state manipulation and stepping used in the
bytecode based implementation of ME virtual machines.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>grammar_me</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key22">CFG</a>, <a href="../../../../index.html#key27">CFL</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key24">TPDL</a>, <a href="../../../../index.html#key23">context-free grammar</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a>, <a href="../../../../index.html#key25">virtual machine</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Grammars and finite automata</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
flow, and stacks, using bytecodes. Suspend/Resumable. Push/pull
operation.</p></dd>
<dt><b class="package"><a href="me_cpucore.html">grammar::me::cpu::core</a></b></dt>
<dd><p>Core functionality for state manipulation and stepping used in the
bytecode based implementation of ME virtual machines.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>grammar_me</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key22">CFG</a>, <a href="../../../../index.html#key27">CFL</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key25">TPDL</a>, <a href="../../../../index.html#key23">context-free grammar</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a>, <a href="../../../../index.html#key24">virtual machine</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Grammars and finite automata</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/grammar_me/me_tcl.html.

116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">MACHINE STATE</a></li>
<li class="section"><a href="#section4">MACHINE INSTRUCTIONS</a></li>
<li class="section"><a href="#section5">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">MACHINE STATE</a></li>
<li class="section"><a href="#section4">MACHINE INSTRUCTIONS</a></li>
<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
<dd><p>This command returns a marker for the current state of the AST stack
<i class="term">AS</i>. The marker stack is not managed by the machine.</p></dd>
<dt><a name="35"><b class="cmd">::grammar::me::tcl::ias_pop2mark</b> <i class="arg">marker</i></a></dt>
<dd><p>The command takes the marker as argument as it comes from the
Tcl stack, not the machine state. It replaces <i class="term">ias_mpop</i>.</p></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>grammar_me</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key25">virtual machine</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Grammars and finite automata</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
<dd><p>This command returns a marker for the current state of the AST stack
<i class="term">AS</i>. The marker stack is not managed by the machine.</p></dd>
<dt><a name="35"><b class="cmd">::grammar::me::tcl::ias_pop2mark</b> <i class="arg">marker</i></a></dt>
<dd><p>The command takes the marker as argument as it comes from the
Tcl stack, not the machine state. It replaces <i class="term">ias_mpop</i>.</p></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>grammar_me</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key24">virtual machine</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Grammars and finite automata</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/grammar_me/me_util.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>grammar::me::util - AST utilities</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>grammar::me::util - AST utilities</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
<dd><p>This command converts an <i class="arg">ast</i> in (extended) object representation
into a value and returns it.
If a <i class="arg">root</i> node is specified the AST is generated from that node
downward. Otherwise the root of the tree object is used as the
starting point.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>grammar_me</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key722">abstract syntax tree</a>, <a href="../../../../index.html#key721">syntax tree</a>, <a href="../../../../index.html#key280">tree</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Grammars and finite automata</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
<dd><p>This command converts an <i class="arg">ast</i> in (extended) object representation
into a value and returns it.
If a <i class="arg">root</i> node is specified the AST is generated from that node
downward. Otherwise the root of the tree object is used as the
starting point.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>grammar_me</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key722">abstract syntax tree</a>, <a href="../../../../index.html#key721">syntax tree</a>, <a href="../../../../index.html#key278">tree</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Grammars and finite automata</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/grammar_me/me_vm.html.

125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<li class="subsection"><a href="#subsection4">CONTROL FLOW</a></li>
<li class="subsection"><a href="#subsection5">INPUT LOCATION HANDLING</a></li>
<li class="subsection"><a href="#subsection6">ERROR HANDLING</a></li>
<li class="subsection"><a href="#subsection7">SEMANTIC VALUES</a></li>
<li class="subsection"><a href="#subsection8">AST STACK HANDLING</a></li>
</ul>
</li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>Please go and read the document <b class="syscmd"><a href="me_intro.html">grammar::me_intro</a></b> first for







|







125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<li class="subsection"><a href="#subsection4">CONTROL FLOW</a></li>
<li class="subsection"><a href="#subsection5">INPUT LOCATION HANDLING</a></li>
<li class="subsection"><a href="#subsection6">ERROR HANDLING</a></li>
<li class="subsection"><a href="#subsection7">SEMANTIC VALUES</a></li>
<li class="subsection"><a href="#subsection8">AST STACK HANDLING</a></li>
</ul>
</li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>Please go and read the document <b class="syscmd"><a href="me_intro.html">grammar::me_intro</a></b> first for
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
indicated by the popped marker.</p></dd>
<dt><b class="cmd">ias_mpop</b></dt>
<dd><p>This instruction pops an entry from the AST Marker stack <i class="term">MS</i> and
discards it.</p></dd>
</dl>
</div>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>grammar_me</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key25">virtual machine</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Grammars and finite automata</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
indicated by the popped marker.</p></dd>
<dt><b class="cmd">ias_mpop</b></dt>
<dd><p>This instruction pops an entry from the AST Marker stack <i class="term">MS</i> and
discards it.</p></dd>
</dl>
</div>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>grammar_me</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key24">virtual machine</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Grammars and finite automata</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/grammar_peg/peg.html.

122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<li class="subsection"><a href="#subsection2">CONTAINER CLASS API</a></li>
<li class="subsection"><a href="#subsection3">CONTAINER OBJECT API</a></li>
<li class="subsection"><a href="#subsection4">PARSING EXPRESSIONS</a></li>
</ul>
</li>
<li class="section"><a href="#section2">PARSING EXPRESSION GRAMMARS</a></li>
<li class="section"><a href="#section3">REFERENCES</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<li class="subsection"><a href="#subsection2">CONTAINER CLASS API</a></li>
<li class="subsection"><a href="#subsection3">CONTAINER OBJECT API</a></li>
<li class="subsection"><a href="#subsection4">PARSING EXPRESSIONS</a></li>
</ul>
</li>
<li class="section"><a href="#section2">PARSING EXPRESSION GRAMMARS</a></li>
<li class="section"><a href="#section3">REFERENCES</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
</div>
<div id="section2" class="section"><h2><a name="section2">PARSING EXPRESSION GRAMMARS</a></h2>
<p>For the mathematically inclined, a PEG is a 4-tuple (VN,VT,R,eS) where</p>
<ul class="itemized">
<li><p>VN is a set of <i class="term">nonterminal symbols</i>,</p></li>
<li><p>VT is a set of <i class="term">terminal symbols</i>,</p></li>
<li><p>R is a finite set of rules, where each rule is a pair (A,e), A in VN,
and <i class="term"><a href="../../../../index.html#key792">e</a></i> a <i class="term"><a href="../../../../index.html#key8">parsing expression</a></i>.</p></li>
<li><p>eS is a parsing expression, the <i class="term">start expression</i>.</p></li>
</ul>
<p>Further constraints are</p>
<ul class="itemized">
<li><p>The intersection of VN and VT is empty.</p></li>
<li><p>For all A in VT exists exactly one pair (A,e) in R. In other words, R
is a function from nonterminal symbols to parsing expressions.</p></li>
</ul>
<p>Parsing expression are inductively defined via</p>
<ul class="itemized">
<li><p>The empty string (epsilon) is a parsing expression.</p></li>
<li><p>A terminal symbol <i class="term">a</i> is a parsing expression.</p></li>
<li><p>A nonterminal symbol <i class="term">A</i> is a parsing expression.</p></li>
<li><p><i class="term">e1</i><i class="term">e2</i> is a parsing expression for parsing expressions
<i class="term">e1</i> and <i class="term">2</i>. This is called <i class="term">sequence</i>.</p></li>
<li><p><i class="term">e1</i>/<i class="term">e2</i> is a parsing expression for parsing expressions
<i class="term">e1</i> and <i class="term">2</i>. This is called <i class="term">ordered choice</i>.</p></li>
<li><p><i class="term"><a href="../../../../index.html#key792">e</a></i>* is a parsing expression for parsing expression
<i class="term"><a href="../../../../index.html#key792">e</a></i>. This is called <i class="term">zero-or-more repetitions</i>, also known
as <i class="term">kleene closure</i>.</p></li>
<li><p><i class="term"><a href="../../../../index.html#key792">e</a></i>+ is a parsing expression for parsing expression
<i class="term"><a href="../../../../index.html#key792">e</a></i>. This is called <i class="term">one-or-more repetitions</i>, also known
as <i class="term">positive kleene closure</i>.</p></li>
<li><p>!<i class="term"><a href="../../../../index.html#key792">e</a></i> is a parsing expression for parsing expression
<i class="term">e1</i>. This is called a <i class="term">not lookahead predicate</i>.</p></li>
<li><p>&amp;<i class="term"><a href="../../../../index.html#key792">e</a></i> is a parsing expression for parsing expression
<i class="term">e1</i>. This is called an <i class="term">and lookahead predicate</i>.</p></li>
</ul>
<p>PEGs are used to define a grammatical structure for streams of symbols
over VT. They are a modern phrasing of older formalisms invented by
Alexander Birham. These formalisms were called TS (TMG recognition
scheme), and gTS (generalized TS). Later they were renamed to TPDL
(Top-Down Parsing Languages) and gTPDL (generalized TPDL).</p>







|

















|
|

|
|

|

|







520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
</div>
<div id="section2" class="section"><h2><a name="section2">PARSING EXPRESSION GRAMMARS</a></h2>
<p>For the mathematically inclined, a PEG is a 4-tuple (VN,VT,R,eS) where</p>
<ul class="itemized">
<li><p>VN is a set of <i class="term">nonterminal symbols</i>,</p></li>
<li><p>VT is a set of <i class="term">terminal symbols</i>,</p></li>
<li><p>R is a finite set of rules, where each rule is a pair (A,e), A in VN,
and <i class="term"><a href="../../../../index.html#key793">e</a></i> a <i class="term"><a href="../../../../index.html#key8">parsing expression</a></i>.</p></li>
<li><p>eS is a parsing expression, the <i class="term">start expression</i>.</p></li>
</ul>
<p>Further constraints are</p>
<ul class="itemized">
<li><p>The intersection of VN and VT is empty.</p></li>
<li><p>For all A in VT exists exactly one pair (A,e) in R. In other words, R
is a function from nonterminal symbols to parsing expressions.</p></li>
</ul>
<p>Parsing expression are inductively defined via</p>
<ul class="itemized">
<li><p>The empty string (epsilon) is a parsing expression.</p></li>
<li><p>A terminal symbol <i class="term">a</i> is a parsing expression.</p></li>
<li><p>A nonterminal symbol <i class="term">A</i> is a parsing expression.</p></li>
<li><p><i class="term">e1</i><i class="term">e2</i> is a parsing expression for parsing expressions
<i class="term">e1</i> and <i class="term">2</i>. This is called <i class="term">sequence</i>.</p></li>
<li><p><i class="term">e1</i>/<i class="term">e2</i> is a parsing expression for parsing expressions
<i class="term">e1</i> and <i class="term">2</i>. This is called <i class="term">ordered choice</i>.</p></li>
<li><p><i class="term"><a href="../../../../index.html#key793">e</a></i>* is a parsing expression for parsing expression
<i class="term"><a href="../../../../index.html#key793">e</a></i>. This is called <i class="term">zero-or-more repetitions</i>, also known
as <i class="term">kleene closure</i>.</p></li>
<li><p><i class="term"><a href="../../../../index.html#key793">e</a></i>+ is a parsing expression for parsing expression
<i class="term"><a href="../../../../index.html#key793">e</a></i>. This is called <i class="term">one-or-more repetitions</i>, also known
as <i class="term">positive kleene closure</i>.</p></li>
<li><p>!<i class="term"><a href="../../../../index.html#key793">e</a></i> is a parsing expression for parsing expression
<i class="term">e1</i>. This is called a <i class="term">not lookahead predicate</i>.</p></li>
<li><p>&amp;<i class="term"><a href="../../../../index.html#key793">e</a></i> is a parsing expression for parsing expression
<i class="term">e1</i>. This is called an <i class="term">and lookahead predicate</i>.</p></li>
</ul>
<p>PEGs are used to define a grammatical structure for streams of symbols
over VT. They are a modern phrasing of older formalisms invented by
Alexander Birham. These formalisms were called TS (TMG recognition
scheme), and gTS (generalized TS). Later they were renamed to TPDL
(Top-Down Parsing Languages) and gTPDL (generalized TPDL).</p>
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
offering a clear, accessible, and thorough discussion of many
different parsing techniques with their interrelations and
applicabilities, including error recovery techniques.</p></li>
<li><p><a href="http://scifac.ru.ac.za/compilers/">Compilers and Compiler Generators</a>, an online book using
CoCo/R, a generator for recursive descent parsers.</p></li>
</ol>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>grammar_peg</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Grammars and finite automata</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
offering a clear, accessible, and thorough discussion of many
different parsing techniques with their interrelations and
applicabilities, including error recovery techniques.</p></li>
<li><p><a href="http://scifac.ru.ac.za/compilers/">Compilers and Compiler Generators</a>, an online book using
CoCo/R, a generator for recursive descent parsers.</p></li>
</ol>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>grammar_peg</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Grammars and finite automata</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/grammar_peg/peg_interp.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">THE INTERPRETER API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">THE INTERPRETER API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
syntax tree, however in the case of an error it will be only partial
and possibly malformed.</p>
<p>The abstract syntax tree is represented by a nested list, as
described in section <b class="sectref">AST VALUES</b> of
document <i class="term"><a href="../grammar_me/me_ast.html">grammar::me_ast</a></i>.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>grammar_peg</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a>, <a href="../../../../index.html#key25">virtual machine</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Grammars and finite automata</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005-2011 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
syntax tree, however in the case of an error it will be only partial
and possibly malformed.</p>
<p>The abstract syntax tree is represented by a nested list, as
described in section <b class="sectref">AST VALUES</b> of
document <i class="term"><a href="../grammar_me/me_ast.html">grammar::me_ast</a></i>.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>grammar_peg</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a>, <a href="../../../../index.html#key24">virtual machine</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Grammars and finite automata</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005-2011 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/hook/hook.html.

177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
coupling of this kind. This package defines a new command, <b class="cmd">hook</b>,
which implements just such a mechanism.</p>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Bindings</a></h3>
<p>The <b class="cmd">hook</b> command manages a collection of hook bindings. A hook
binding has four elements:</p>
<ol class="enumerated">
<li><p>A <i class="term"><a href="../../../../index.html#key658">subject</a></i>: the name of the entity that will be calling the
hook.</p></li>
<li><p>The <i class="term"><a href="../../../../index.html#key659">hook</a></i> itself. A hook usually reflects some occurrence in the
life of the <i class="term"><a href="../../../../index.html#key658">subject</a></i> that other entities might care to know
about. A <i class="term"><a href="../../../../index.html#key659">hook</a></i> has a name, and may also have arguments. Hook
names are arbitrary strings. Each <i class="term"><a href="../../../../index.html#key658">subject</a></i> must document the
names and arguments of the hooks it can call.</p></li>
<li><p>The name of the <i class="term"><a href="../../../../index.html#key630">observer</a></i> that wishes to receive the <i class="term"><a href="../../../../index.html#key659">hook</a></i>
from the <i class="term"><a href="../../../../index.html#key658">subject</a></i>.</p></li>
<li><p>A command prefix to which the <i class="term"><a href="../../../../index.html#key659">hook</a></i> arguments will be appended 
when the binding is executed.</p></li>
</ol>
</div>
<div id="subsection3" class="subsection"><h3><a name="subsection3">Subjects and observers</a></h3>
<p>For convenience, this document collectively refers to subjects and
observers as <i class="term">objects</i>, while placing no requirements on how
these <i class="term">objects</i> are actually implemented. An object can be a







|


|

|


|
|







177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
coupling of this kind. This package defines a new command, <b class="cmd">hook</b>,
which implements just such a mechanism.</p>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Bindings</a></h3>
<p>The <b class="cmd">hook</b> command manages a collection of hook bindings. A hook
binding has four elements:</p>
<ol class="enumerated">
<li><p>A <i class="term"><a href="../../../../index.html#key657">subject</a></i>: the name of the entity that will be calling the
hook.</p></li>
<li><p>The <i class="term"><a href="../../../../index.html#key659">hook</a></i> itself. A hook usually reflects some occurrence in the
life of the <i class="term"><a href="../../../../index.html#key657">subject</a></i> that other entities might care to know
about. A <i class="term"><a href="../../../../index.html#key659">hook</a></i> has a name, and may also have arguments. Hook
names are arbitrary strings. Each <i class="term"><a href="../../../../index.html#key657">subject</a></i> must document the
names and arguments of the hooks it can call.</p></li>
<li><p>The name of the <i class="term"><a href="../../../../index.html#key630">observer</a></i> that wishes to receive the <i class="term"><a href="../../../../index.html#key659">hook</a></i>
from the <i class="term"><a href="../../../../index.html#key657">subject</a></i>.</p></li>
<li><p>A command prefix to which the <i class="term"><a href="../../../../index.html#key659">hook</a></i> arguments will be appended
when the binding is executed.</p></li>
</ol>
</div>
<div id="subsection3" class="subsection"><h3><a name="subsection3">Subjects and observers</a></h3>
<p>For convenience, this document collectively refers to subjects and
observers as <i class="term">objects</i>, while placing no requirements on how
these <i class="term">objects</i> are actually implemented. An object can be a
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
</ol>
<p>If the <b class="option">-errorcommand</b> configuration option has a non-empty
value, its value will be invoked for all errors and other exceptional
returns in observer bindings. See <b class="cmd">hook configure</b>, below, for
more information on configuration options.</p></dd>
<dt><a name="3"><b class="cmd">hook</b> <b class="method">forget</b> <i class="arg">object</i></a></dt>
<dd><p>This command deletes any existing bindings in which the named
<i class="arg">object</i> appears as either the <i class="term"><a href="../../../../index.html#key658">subject</a></i> or the
<i class="term"><a href="../../../../index.html#key630">observer</a></i>.
Bindings deleted by this method will never be called again. In
particular,</p>
<ol class="enumerated">
<li><p>If an observer is forgotten during a call to <b class="cmd">hook call</b>, any
uncalled binding it might have had to the relevant subject and hook
will <em>not</em> be called subsequently.</p></li>
<li><p>If a subject <b class="variable">$s</b> is forgotten during a call to</p>
<pre class="example">hook call $s $h</pre>
<p>then <b class="cmd">hook call</b> will return as soon as the current binding
returns.  No further bindings will be called.</p></li>
</ol></dd>
<dt><a name="4"><b class="cmd">hook</b> <b class="method">cget</b> <i class="arg">option</i></a></dt>
<dd><p>This command returns the value of one of the <b class="cmd">hook</b> command's
configuration options.</p></dd>
<dt><a name="5"><b class="cmd">hook</b> <b class="method">configure</b> <b class="option">option</b> <i class="arg">value</i> ...</a></dt>
<dd><p>This command sets the value of one or more of the <b class="cmd">hook</b> command's
configuration options:</p>
<dl class="options">
<dt><b class="option">-errorcommand</b> <i class="arg">cmdPrefix</i></dt>
<dd><p>If the value of this option is the empty string, &quot;&quot;, then errors 
and other exception returns in binding scripts are propagated 
normally. Otherwise, it must be a command prefix taking three 
additional arguments:</p>
<ol class="enumerated">
<li><p>a 4-element list {subject hook arglist observer},</p></li>
<li><p>the result string, and</p></li>
<li><p>the return options dictionary.</p></li>
</ol>
<p>Given this information, the <b class="option">-errorcommand</b> can choose to log
the error, call <b class="cmd">interp bgerror</b>, delete the errant binding
(thus preventing the error from arising a second time) and so forth.</p></dd>
<dt><b class="option">-tracecommand</b> <i class="arg">cmdPrefix</i></dt>
<dd><p>The option's value should be a command prefix taking four 
arguments:</p>
<ol class="enumerated">
<li><p>a <i class="term"><a href="../../../../index.html#key658">subject</a></i>,</p></li>
<li><p>a <i class="term"><a href="../../../../index.html#key659">hook</a></i>,</p></li>
<li><p>a list of the hook's argument values, and</p></li>
<li><p>a list of <i class="term">objects</i> the hook was called for.</p></li>
</ol>
<p>The command will be called for each hook that is called. This allows
the application to trace hook execution for debugging purposes.</p></dd>
</dl></dd>







|




















|
|
|










|


|







320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
</ol>
<p>If the <b class="option">-errorcommand</b> configuration option has a non-empty
value, its value will be invoked for all errors and other exceptional
returns in observer bindings. See <b class="cmd">hook configure</b>, below, for
more information on configuration options.</p></dd>
<dt><a name="3"><b class="cmd">hook</b> <b class="method">forget</b> <i class="arg">object</i></a></dt>
<dd><p>This command deletes any existing bindings in which the named
<i class="arg">object</i> appears as either the <i class="term"><a href="../../../../index.html#key657">subject</a></i> or the
<i class="term"><a href="../../../../index.html#key630">observer</a></i>.
Bindings deleted by this method will never be called again. In
particular,</p>
<ol class="enumerated">
<li><p>If an observer is forgotten during a call to <b class="cmd">hook call</b>, any
uncalled binding it might have had to the relevant subject and hook
will <em>not</em> be called subsequently.</p></li>
<li><p>If a subject <b class="variable">$s</b> is forgotten during a call to</p>
<pre class="example">hook call $s $h</pre>
<p>then <b class="cmd">hook call</b> will return as soon as the current binding
returns.  No further bindings will be called.</p></li>
</ol></dd>
<dt><a name="4"><b class="cmd">hook</b> <b class="method">cget</b> <i class="arg">option</i></a></dt>
<dd><p>This command returns the value of one of the <b class="cmd">hook</b> command's
configuration options.</p></dd>
<dt><a name="5"><b class="cmd">hook</b> <b class="method">configure</b> <b class="option">option</b> <i class="arg">value</i> ...</a></dt>
<dd><p>This command sets the value of one or more of the <b class="cmd">hook</b> command's
configuration options:</p>
<dl class="options">
<dt><b class="option">-errorcommand</b> <i class="arg">cmdPrefix</i></dt>
<dd><p>If the value of this option is the empty string, &quot;&quot;, then errors
and other exception returns in binding scripts are propagated
normally. Otherwise, it must be a command prefix taking three
additional arguments:</p>
<ol class="enumerated">
<li><p>a 4-element list {subject hook arglist observer},</p></li>
<li><p>the result string, and</p></li>
<li><p>the return options dictionary.</p></li>
</ol>
<p>Given this information, the <b class="option">-errorcommand</b> can choose to log
the error, call <b class="cmd">interp bgerror</b>, delete the errant binding
(thus preventing the error from arising a second time) and so forth.</p></dd>
<dt><b class="option">-tracecommand</b> <i class="arg">cmdPrefix</i></dt>
<dd><p>The option's value should be a command prefix taking four
arguments:</p>
<ol class="enumerated">
<li><p>a <i class="term"><a href="../../../../index.html#key657">subject</a></i>,</p></li>
<li><p>a <i class="term"><a href="../../../../index.html#key659">hook</a></i>,</p></li>
<li><p>a list of the hook's argument values, and</p></li>
<li><p>a list of <i class="term">objects</i> the hook was called for.</p></li>
</ol>
<p>The command will be called for each hook that is called. This allows
the application to trace hook execution for debugging purposes.</p></dd>
</dl></dd>
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
<div id="section5" class="section"><h2><a name="section5">Credits</a></h2>
<p>Hook has been designed and implemented by William H. Duquette.</p>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>hook</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../uev/uevent.html">uevent(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key519">callback</a>, <a href="../../../../index.html#key521">event</a>, <a href="../../../../index.html#key659">hook</a>, <a href="../../../../index.html#key630">observer</a>, <a href="../../../../index.html#key657">producer</a>, <a href="../../../../index.html#key660">publisher</a>, <a href="../../../../index.html#key658">subject</a>, <a href="../../../../index.html#key656">subscriber</a>, <a href="../../../../index.html#key661">uevent</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2010, by William H. Duquette</p>
</div>
</div></body></html>







|







|








395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
<div id="section5" class="section"><h2><a name="section5">Credits</a></h2>
<p>Hook has been designed and implemented by William H. Duquette.</p>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>hook</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../uev/uevent.html">uevent(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key519">callback</a>, <a href="../../../../index.html#key521">event</a>, <a href="../../../../index.html#key659">hook</a>, <a href="../../../../index.html#key630">observer</a>, <a href="../../../../index.html#key658">producer</a>, <a href="../../../../index.html#key660">publisher</a>, <a href="../../../../index.html#key657">subject</a>, <a href="../../../../index.html#key656">subscriber</a>, <a href="../../../../index.html#key661">uevent</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2010, by William H. Duquette</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/html/html.html.

111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<p>html - Procedures to generate HTML structures</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<p>html - Procedures to generate HTML structures</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
<dt><a name="26"><b class="cmd">::html::hdrRow</b> <i class="arg">args</i></a></dt>
<dd><p>Generate a table row, including <i class="term">tr</i> and <i class="term">th</i> tags.
Each value in <i class="arg">args</i> is place into its own table cell.
This uses <b class="cmd">::html::cell</b>.</p></dd>
<dt><a name="27"><b class="cmd">::html::head</b> <i class="arg">title</i></a></dt>
<dd><p>Generate the <i class="term">head</i> section that includes the page <i class="term">title</i>.
If previous calls have been made to
<b class="cmd">::html::author</b>, 
<b class="cmd">::html::keywords</b>, 
<b class="cmd">::html::description</b>, 
or
<b class="cmd">::html::meta</b>
then additional tags are inserted into the <i class="term">head</i> section.
This leaves an open <i class="term"><a href="../../../../index.html#key597">html</a></i> tag pushed on the stack with
<b class="cmd">::html::openTag</b>.</p></dd>
<dt><a name="28"><b class="cmd">::html::headTag</b> <i class="arg">string</i></a></dt>
<dd><p>Save a tag for inclusion in the <i class="term">head</i> section generated by







|
|
|







300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
<dt><a name="26"><b class="cmd">::html::hdrRow</b> <i class="arg">args</i></a></dt>
<dd><p>Generate a table row, including <i class="term">tr</i> and <i class="term">th</i> tags.
Each value in <i class="arg">args</i> is place into its own table cell.
This uses <b class="cmd">::html::cell</b>.</p></dd>
<dt><a name="27"><b class="cmd">::html::head</b> <i class="arg">title</i></a></dt>
<dd><p>Generate the <i class="term">head</i> section that includes the page <i class="term">title</i>.
If previous calls have been made to
<b class="cmd">::html::author</b>,
<b class="cmd">::html::keywords</b>,
<b class="cmd">::html::description</b>,
or
<b class="cmd">::html::meta</b>
then additional tags are inserted into the <i class="term">head</i> section.
This leaves an open <i class="term"><a href="../../../../index.html#key597">html</a></i> tag pushed on the stack with
<b class="cmd">::html::openTag</b>.</p></dd>
<dt><a name="28"><b class="cmd">::html::headTag</b> <i class="arg">string</i></a></dt>
<dd><p>Save a tag for inclusion in the <i class="term">head</i> section generated by
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
which is a Tcl dictionary. Each generated row contains a name, value pair. The
information is shown in the same order as specified in the dictionary. The
argument <i class="arg">param</i> is for the <i class="term"><a href="../../../../index.html#key117">table</a></i> tag  and has to contain a
pre-formatted string.</p></dd>
<dt><a name="53"><b class="cmd">::html::textarea</b> <i class="arg">name</i> <span class="opt">?<i class="arg">param</i>?</span> <span class="opt">?<i class="arg">current</i>?</span></a></dt>
<dd><p>Generate a <i class="term">textarea</i> tag wrapped around its current values.</p></dd>
<dt><a name="54"><b class="cmd">::html::textInput</b> <i class="arg">name value args</i></a></dt>
<dd><p>Generate an <i class="term">input</i> form tag with type <i class="term"><a href="../../../../index.html#key481">text</a></i>.  This uses
<b class="cmd">::html::formValue</b>.  The args is any additional tag attributes
you want to put into the <i class="term">input</i> tag.</p></dd>
<dt><a name="55"><b class="cmd">::html::textInputRow</b> <i class="arg">label name value args</i></a></dt>
<dd><p>Generate an <i class="term">input</i> form tag with type <i class="term"><a href="../../../../index.html#key481">text</a></i> formatted into a table row
with an associated label.  The args is any additional tag attributes
you want to put into the <i class="term">input</i> tag.</p></dd>
<dt><a name="56"><b class="cmd">::html::varEmpty</b> <i class="arg">name</i></a></dt>
<dd><p>This returns 1 if the named variable either does not exist or has the
empty string for its value.</p></dd>
<dt><a name="57"><b class="cmd">::html::while</b> <i class="arg">test body</i></a></dt>
<dd><p>This procedure is similar to the built-in Tcl <b class="cmd">while</b> control
structure.  Rather than evaluating the body, it returns the subst'ed
<i class="arg">body</i>.  Each iteration of the loop causes another string to be
concatenated to the result value.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>html</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../htmlparse/htmlparse.html">htmlparse</a>, <a href="../ncgi/ncgi.html">ncgi</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key600">checkbox</a>, <a href="../../../../index.html#key598">checkbutton</a>, <a href="../../../../index.html#key596">form</a>, <a href="../../../../index.html#key597">html</a>, <a href="../../../../index.html#key599">radiobutton</a>, <a href="../../../../index.html#key117">table</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>CGI programming</p>
</div>
</div></body></html>







|



|












|



|













422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
which is a Tcl dictionary. Each generated row contains a name, value pair. The
information is shown in the same order as specified in the dictionary. The
argument <i class="arg">param</i> is for the <i class="term"><a href="../../../../index.html#key117">table</a></i> tag  and has to contain a
pre-formatted string.</p></dd>
<dt><a name="53"><b class="cmd">::html::textarea</b> <i class="arg">name</i> <span class="opt">?<i class="arg">param</i>?</span> <span class="opt">?<i class="arg">current</i>?</span></a></dt>
<dd><p>Generate a <i class="term">textarea</i> tag wrapped around its current values.</p></dd>
<dt><a name="54"><b class="cmd">::html::textInput</b> <i class="arg">name value args</i></a></dt>
<dd><p>Generate an <i class="term">input</i> form tag with type <i class="term"><a href="../../../../index.html#key480">text</a></i>.  This uses
<b class="cmd">::html::formValue</b>.  The args is any additional tag attributes
you want to put into the <i class="term">input</i> tag.</p></dd>
<dt><a name="55"><b class="cmd">::html::textInputRow</b> <i class="arg">label name value args</i></a></dt>
<dd><p>Generate an <i class="term">input</i> form tag with type <i class="term"><a href="../../../../index.html#key480">text</a></i> formatted into a table row
with an associated label.  The args is any additional tag attributes
you want to put into the <i class="term">input</i> tag.</p></dd>
<dt><a name="56"><b class="cmd">::html::varEmpty</b> <i class="arg">name</i></a></dt>
<dd><p>This returns 1 if the named variable either does not exist or has the
empty string for its value.</p></dd>
<dt><a name="57"><b class="cmd">::html::while</b> <i class="arg">test body</i></a></dt>
<dd><p>This procedure is similar to the built-in Tcl <b class="cmd">while</b> control
structure.  Rather than evaluating the body, it returns the subst'ed
<i class="arg">body</i>.  Each iteration of the loop causes another string to be
concatenated to the result value.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>html</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../htmlparse/htmlparse.html">htmlparse</a>, <a href="../ncgi/ncgi.html">ncgi</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key600">checkbox</a>, <a href="../../../../index.html#key598">checkbutton</a>, <a href="../../../../index.html#key596">form</a>, <a href="../../../../index.html#key597">html</a>, <a href="../../../../index.html#key599">radiobutton</a>, <a href="../../../../index.html#key117">table</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>CGI programming</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/htmlparse/htmlparse.html.

111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<p>htmlparse - Procedures to parse HTML strings</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<p>htmlparse - Procedures to parse HTML strings</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
<dt><a name="6"><b class="cmd">::htmlparse::removeFormDefs</b> <i class="arg">tree</i></a></dt>
<dd><p>Like <b class="cmd">::htmlparse::removeVisualFluff</b> this command is here to cut
down on the size of the tree as generated by
<b class="cmd">::htmlparse::2tree</b>. It removes all nodes representing forms and
form elements. Its only argument is the name of the tree to cut down.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>htmlparse</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../struct/struct_tree.html">struct::tree</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key597">html</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key54">queue</a>, <a href="../../../../index.html#key280">tree</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
</div></body></html>







|



|







|





297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
<dt><a name="6"><b class="cmd">::htmlparse::removeFormDefs</b> <i class="arg">tree</i></a></dt>
<dd><p>Like <b class="cmd">::htmlparse::removeVisualFluff</b> this command is here to cut
down on the size of the tree as generated by
<b class="cmd">::htmlparse::2tree</b>. It removes all nodes representing forms and
form elements. Its only argument is the name of the tree to cut down.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>htmlparse</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../struct/struct_tree.html">struct::tree</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key597">html</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key54">queue</a>, <a href="../../../../index.html#key278">tree</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/http/autoproxy.html.

117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">OPTIONS</a></li>
<li class="section"><a href="#section4">Basic Authentication</a></li>
<li class="section"><a href="#section5">EXAMPLES</a></li>
<li class="section"><a href="#section6">REFERENCES</a></li>
<li class="section"><a href="#section7">BUGS</a></li>
<li class="section"><a href="#section8">AUTHORS</a></li>
<li class="section"><a href="#section9">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">OPTIONS</a></li>
<li class="section"><a href="#section4">Basic Authentication</a></li>
<li class="section"><a href="#section5">EXAMPLES</a></li>
<li class="section"><a href="#section6">REFERENCES</a></li>
<li class="section"><a href="#section7">BUGS</a></li>
<li class="section"><a href="#section8">AUTHORS</a></li>
<li class="section"><a href="#section9">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
system standard locations and can be configured to negotiate
authentication with the proxy if required.</p>
<p>On Unix the standard for identifying the local HTTP proxy server
seems to be to use the environment variable http_proxy or ftp_proxy and
no_proxy to list those domains to be excluded from proxying.
On Windows we can retrieve the Internet Settings values from the registry
to obtain pretty much the same information.
With this information we can setup a suitable filter procedure for the 
Tcl http package and arrange for automatic use of the proxy.</p>
<p>There seem to be a number of ways that the http_proxy environment
variable may be set up. Either a plain host:port or more commonly a
URL and sometimes the URL may contain authentication parameters or
these may be requested from the user or provided via http_proxy_user
and http_proxy_pass. This package attempts to deal with all these
schemes. It will do it's best to get the required parameters from the
environment or registry and if it fails can be reconfigured.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::autoproxy::init</b></a></dt>
<dd><p>Initialize the autoproxy package from system resources. Under unix
this means we look for environment variables. Under windows we look
for the same environment variables but also look at the registry
settings used by Internet Explorer.</p></dd>
<dt><a name="2"><b class="cmd">::autoproxy::cget</b> <i class="arg">-option</i></a></dt>
<dd><p>Retrieve individual package configuration options. See <span class="sectref"><a href="#section3">OPTIONS</a></span>.</p></dd>
<dt><a name="3"><b class="cmd">::autoproxy::configure</b> <span class="opt">?-option <i class="arg">value</i>?</span></a></dt>
<dd><p>Configure the autoproxy package. Calling <b class="cmd">configure</b> with no
options will return a list of all option names and values. 
See <span class="sectref"><a href="#section3">OPTIONS</a></span>.</p></dd>
<dt><a name="4"><b class="cmd">::autoproxy::tls_connect</b> <i class="arg">args</i></a></dt>
<dd><p>Connect to a secure socket through a proxy. HTTP proxy servers permit
the use of the CONNECT HTTP command to open a link through the proxy
to the target machine. This function hides the details. For use with
the http package see <b class="cmd">tls_socket</b>.</p>
<p>The <i class="arg">args</i> list may contain any of the <b class="package"><a href="../../../../index.html#key311">tls</a></b> package options but







|




















|







150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
system standard locations and can be configured to negotiate
authentication with the proxy if required.</p>
<p>On Unix the standard for identifying the local HTTP proxy server
seems to be to use the environment variable http_proxy or ftp_proxy and
no_proxy to list those domains to be excluded from proxying.
On Windows we can retrieve the Internet Settings values from the registry
to obtain pretty much the same information.
With this information we can setup a suitable filter procedure for the
Tcl http package and arrange for automatic use of the proxy.</p>
<p>There seem to be a number of ways that the http_proxy environment
variable may be set up. Either a plain host:port or more commonly a
URL and sometimes the URL may contain authentication parameters or
these may be requested from the user or provided via http_proxy_user
and http_proxy_pass. This package attempts to deal with all these
schemes. It will do it's best to get the required parameters from the
environment or registry and if it fails can be reconfigured.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::autoproxy::init</b></a></dt>
<dd><p>Initialize the autoproxy package from system resources. Under unix
this means we look for environment variables. Under windows we look
for the same environment variables but also look at the registry
settings used by Internet Explorer.</p></dd>
<dt><a name="2"><b class="cmd">::autoproxy::cget</b> <i class="arg">-option</i></a></dt>
<dd><p>Retrieve individual package configuration options. See <span class="sectref"><a href="#section3">OPTIONS</a></span>.</p></dd>
<dt><a name="3"><b class="cmd">::autoproxy::configure</b> <span class="opt">?-option <i class="arg">value</i>?</span></a></dt>
<dd><p>Configure the autoproxy package. Calling <b class="cmd">configure</b> with no
options will return a list of all option names and values.
See <span class="sectref"><a href="#section3">OPTIONS</a></span>.</p></dd>
<dt><a name="4"><b class="cmd">::autoproxy::tls_connect</b> <i class="arg">args</i></a></dt>
<dd><p>Connect to a secure socket through a proxy. HTTP proxy servers permit
the use of the CONNECT HTTP command to open a link through the proxy
to the target machine. This function hides the details. For use with
the http package see <b class="cmd">tls_socket</b>.</p>
<p>The <i class="arg">args</i> list may contain any of the <b class="package"><a href="../../../../index.html#key311">tls</a></b> package options but
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
be configured here as well.</p></dd>
<dt><b class="option">-port</b> number</dt>
<dd></dd>
<dt><b class="option">-proxy_port</b> number</dt>
<dd><p>Set the proxy port number. This is normally set up by <b class="cmd">init</b>.
e.g. <b class="cmd">configure</b> <b class="option">-port</b> <i class="arg">3128</i></p></dd>
<dt><b class="option">-no_proxy</b> list</dt>
<dd><p>You may manipulate the <b class="option">no_proxy</b> list that was setup by 
<b class="cmd">init</b>. The value of this option is a tcl list of
strings that are matched against the http request host using the tcl
<b class="cmd">string match</b> command. Therefore glob patterns are permitted.
For instance, <b class="cmd">configure</b> <b class="option">-no_proxy</b> <i class="arg">*.localdomain</i></p></dd>
<dt><b class="option">-authProc</b> procedure</dt>
<dd><p>This option may be used to set an application defined procedure to be
called when <b class="cmd">configure</b> <b class="option">-basic</b> is called with either no or







|







210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
be configured here as well.</p></dd>
<dt><b class="option">-port</b> number</dt>
<dd></dd>
<dt><b class="option">-proxy_port</b> number</dt>
<dd><p>Set the proxy port number. This is normally set up by <b class="cmd">init</b>.
e.g. <b class="cmd">configure</b> <b class="option">-port</b> <i class="arg">3128</i></p></dd>
<dt><b class="option">-no_proxy</b> list</dt>
<dd><p>You may manipulate the <b class="option">no_proxy</b> list that was setup by
<b class="cmd">init</b>. The value of this option is a tcl list of
strings that are matched against the http request host using the tcl
<b class="cmd">string match</b> command. Therefore glob patterns are permitted.
For instance, <b class="cmd">configure</b> <b class="option">-no_proxy</b> <i class="arg">*.localdomain</i></p></dd>
<dt><b class="option">-authProc</b> procedure</dt>
<dd><p>This option may be used to set an application defined procedure to be
called when <b class="cmd">configure</b> <b class="option">-basic</b> is called with either no or
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
<div id="section7" class="section"><h2><a name="section7">BUGS</a></h2>
<p>At this time only Basic authentication (1) (2) is supported. It is
planned to add support for Digest (2) and NTLM in the future.</p>
</div>
<div id="section8" class="section"><h2><a name="section8">AUTHORS</a></h2>
<p>Pat Thoyts</p>
</div>
<div id="section9" class="section"><h2><a name="section9">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>http :: autoproxy</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>http(n)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key790">authentication</a>, <a href="../../../../index.html#key506">http</a>, <a href="../../../../index.html#key813">proxy</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
</div></body></html>







|



|







|





279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
<div id="section7" class="section"><h2><a name="section7">BUGS</a></h2>
<p>At this time only Basic authentication (1) (2) is supported. It is
planned to add support for Digest (2) and NTLM in the future.</p>
</div>
<div id="section8" class="section"><h2><a name="section8">AUTHORS</a></h2>
<p>Pat Thoyts</p>
</div>
<div id="section9" class="section"><h2><a name="section9">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>http :: autoproxy</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>http(n)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key790">authentication</a>, <a href="../../../../index.html#key505">http</a>, <a href="../../../../index.html#key813">proxy</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/ident/ident.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>ident - Ident protocol client</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>ident - Ident protocol client</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
<dd><p>Fatal errors happen when no ident server is listening on the remote
side, or when the ident server gives a response that does not conform
to the RFC. A detailed error message is returned under the
<b class="const">error</b> key.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>ident</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key415">ident</a>, <a href="../../../../index.html#key417">identification</a>, <a href="../../../../index.html#key416">rfc 1413</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004 Reinhard Max &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
<dd><p>Fatal errors happen when no ident server is listening on the remote
side, or when the ident server gives a response that does not conform
to the RFC. A detailed error message is returned under the
<b class="const">error</b> key.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>ident</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key416">ident</a>, <a href="../../../../index.html#key417">identification</a>, <a href="../../../../index.html#key415">rfc 1413</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004 Reinhard Max &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/imap4/imap4.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PROCEDURES</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">REFERENCES</a></li>
<li class="section"><a href="#section5">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PROCEDURES</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">REFERENCES</a></li>
<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
can be used to establish to a secure connection
via TSL/SSL if set to true. In this case default connection port
defaults to 993.</p>
<p><em>Note:</em>
For connecting via SSL the Tcl module <em>tls</em> must be already
loaded otherwise an error is raised.</p>
<pre class="example">
    package require tls              ; # must be loaded for TLS/SSL   
    set ::imap4::use_ssl 1           ; # request a secure connection
    set chan [::imap4::open $server] ; # default port is now 993 </pre>
</dd>
<dt><a name="2"><b class="cmd">::imap4::login</b> <i class="arg">chan</i> <i class="arg">user</i> <i class="arg">pass</i></a></dt>
<dd><p>Login using the IMAP LOGIN command, 0 is returned on successful login.</p>
<p><i class="arg">chan</i> - imap channel</p>
<p><i class="arg">user</i> - username</p>







|







176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
can be used to establish to a secure connection
via TSL/SSL if set to true. In this case default connection port
defaults to 993.</p>
<p><em>Note:</em>
For connecting via SSL the Tcl module <em>tls</em> must be already
loaded otherwise an error is raised.</p>
<pre class="example">
    package require tls              ; # must be loaded for TLS/SSL
    set ::imap4::use_ssl 1           ; # request a secure connection
    set chan [::imap4::open $server] ; # default port is now 993 </pre>
</dd>
<dt><a name="2"><b class="cmd">::imap4::login</b> <i class="arg">chan</i> <i class="arg">user</i> <i class="arg">pass</i></a></dt>
<dd><p>Login using the IMAP LOGIN command, 0 is returned on successful login.</p>
<p><i class="arg">chan</i> - imap channel</p>
<p><i class="arg">user</i> - username</p>
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
of available information options for the mailbox is returned.</p>
<p>If the required information name is suffixed with a ? character,
the command returns true if the information is available, or
false if it is not.</p>
<p><i class="arg">chan</i> - imap channel</p>
<p><i class="arg">opt</i> - mailbox option to retrieve</p>
<p>Currently supported options:
<em>EXISTS</em> (noof msgs), 
<em>RECENT</em> (noof 'recent' flagged msgs), 
<em>FLAGS</em></p>
<p>In conjunction with OK:
<em>PERMFLAGS</em>, <em>UIDNEXT</em>, <em>UIDVAL</em>, <em>UNSEEN</em></p>
<p>Div. states:
<em>CURRENT</em>, <em>FOUND</em>, <em>PERM</em>.</p>
<pre class="example">
    ::imap4::select $chan INBOX







|
|







272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
of available information options for the mailbox is returned.</p>
<p>If the required information name is suffixed with a ? character,
the command returns true if the information is available, or
false if it is not.</p>
<p><i class="arg">chan</i> - imap channel</p>
<p><i class="arg">opt</i> - mailbox option to retrieve</p>
<p>Currently supported options:
<em>EXISTS</em> (noof msgs),
<em>RECENT</em> (noof 'recent' flagged msgs),
<em>FLAGS</em></p>
<p>In conjunction with OK:
<em>PERMFLAGS</em>, <em>UIDNEXT</em>, <em>UIDVAL</em>, <em>UNSEEN</em></p>
<p>Div. states:
<em>CURRENT</em>, <em>FOUND</em>, <em>PERM</em>.</p>
<pre class="example">
    ::imap4::select $chan INBOX
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455

456
457
458
459
460
461
462
463
<p><i class="arg">chan</i> - imap channel</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">EXAMPLES</a></h2>
<pre class="example">
    set user myusername
    set pass xtremescrt
    set server imap.test.tld 
    set FOLDER INBOX
    # Connect to server
    set imap [::imap4::open $server]
    ::imap4::login $imap $user $pass
    ::imap4::select $imap $FOLDER
    # Output all the information about that mailbox
    foreach info [::imap4::mboxinfo $imap] {
        puts &quot;$info -&gt; [::imap4::mboxinfo $imap $info]&quot;
    }
    # fetch 3 records inline 
    set fields {from: to: subject: size}
    foreach rec [::imap4::fetch $imap :3 -inline {*}$fields] {
        puts -nonewline &quot;#[incr idx])&quot;
        for {set j 0} {$j&lt;[llength $fields]} {incr j} {
            puts &quot;\t[lindex $fields $j] [lindex $rec $j]&quot;
        }
    }
    
    # Show all the information available about the message ID 1
    puts &quot;Available info about message 1: [::imap4::msginfo $imap 1]&quot;
    
    # Use the capability stuff
    puts &quot;Capabilities: [::imap4::isableto $imap]&quot;
    puts &quot;Is able to imap4rev1? [::imap4::isableto $imap imap4rev1]&quot;
    
    # Cleanup
    ::imap4::cleanup $imap
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">REFERENCES</a></h2>
<p>Mark R. Crispin, &quot;INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1&quot;,
RFC 3501, March 2003, <a href="http://www.rfc-editor.org/rfc/rfc3501.txt">http://www.rfc-editor.org/rfc/rfc3501.txt</a></p>
<p>OpenSSL, <a href="http://www.openssl.org/">http://www.openssl.org/</a></p>
</div>
<div id="section5" class="section"><h2><a name="section5">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Only a small part of rfc3501 implemented.</p>
<p>Please report such in the category <em>imap4</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>

</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../ftp/ftp.html">ftp</a>, <a href="../../../../index.html#key506">http</a>, <a href="../../../../index.html#key789">imap</a>, <a href="../mime/mime.html">mime</a>, <a href="../pop3/pop3.html">pop3</a>, <a href="../../../../index.html#key311">tls</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key315">email</a>, <a href="../../../../index.html#key789">imap</a>, <a href="../../../../index.html#key136">internet</a>, <a href="../../../../index.html#key310">mail</a>, <a href="../../../../index.html#key276">net</a>, <a href="../../../../index.html#key788">rfc3501</a>, <a href="../../../../index.html#key342">ssl</a>, <a href="../../../../index.html#key311">tls</a></p>
</div>
</div></body></html>







|









|







<


<



<









|


<
|
|

|
>


|


|


406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430

431
432

433
434
435

436
437
438
439
440
441
442
443
444
445
446
447

448
449
450
451
452
453
454
455
456
457
458
459
460
<p><i class="arg">chan</i> - imap channel</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">EXAMPLES</a></h2>
<pre class="example">
    set user myusername
    set pass xtremescrt
    set server imap.test.tld
    set FOLDER INBOX
    # Connect to server
    set imap [::imap4::open $server]
    ::imap4::login $imap $user $pass
    ::imap4::select $imap $FOLDER
    # Output all the information about that mailbox
    foreach info [::imap4::mboxinfo $imap] {
        puts &quot;$info -&gt; [::imap4::mboxinfo $imap $info]&quot;
    }
    # fetch 3 records inline
    set fields {from: to: subject: size}
    foreach rec [::imap4::fetch $imap :3 -inline {*}$fields] {
        puts -nonewline &quot;#[incr idx])&quot;
        for {set j 0} {$j&lt;[llength $fields]} {incr j} {
            puts &quot;\t[lindex $fields $j] [lindex $rec $j]&quot;
        }
    }

    # Show all the information available about the message ID 1
    puts &quot;Available info about message 1: [::imap4::msginfo $imap 1]&quot;

    # Use the capability stuff
    puts &quot;Capabilities: [::imap4::isableto $imap]&quot;
    puts &quot;Is able to imap4rev1? [::imap4::isableto $imap imap4rev1]&quot;

    # Cleanup
    ::imap4::cleanup $imap
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">REFERENCES</a></h2>
<p>Mark R. Crispin, &quot;INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1&quot;,
RFC 3501, March 2003, <a href="http://www.rfc-editor.org/rfc/rfc3501.txt">http://www.rfc-editor.org/rfc/rfc3501.txt</a></p>
<p>OpenSSL, <a href="http://www.openssl.org/">http://www.openssl.org/</a></p>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category <em>imap4</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.
Only a small part of rfc3501 implemented.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../ftp/ftp.html">ftp</a>, <a href="../../../../index.html#key505">http</a>, <a href="../../../../index.html#key789">imap</a>, <a href="../mime/mime.html">mime</a>, <a href="../pop3/pop3.html">pop3</a>, <a href="../../../../index.html#key311">tls</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key315">email</a>, <a href="../../../../index.html#key789">imap</a>, <a href="../../../../index.html#key138">internet</a>, <a href="../../../../index.html#key310">mail</a>, <a href="../../../../index.html#key276">net</a>, <a href="../../../../index.html#key788">rfc3501</a>, <a href="../../../../index.html#key342">ssl</a>, <a href="../../../../index.html#key311">tls</a></p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/inifile/ini.html.

111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<p>inifile - Parsing of Windows INI files</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.2</b></li>







|







111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<p>inifile - Parsing of Windows INI files</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.2</b></li>
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
section or key will return an empty string.</p></dd>
<dt><a name="14"><b class="cmd">::ini::commentchar</b> <span class="opt">?char?</span></a></dt>
<dd><p>Reads and sets the comment character. Lines that begin with this character are treated as
comments. When comments are written out each line is preceded by this character. The default
is <b class="const">;</b>.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>inifile</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
</div></body></html>







|



|







192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
section or key will return an empty string.</p></dd>
<dt><a name="14"><b class="cmd">::ini::commentchar</b> <span class="opt">?char?</span></a></dt>
<dd><p>Reads and sets the comment character. Lines that begin with this character are treated as
comments. When comments are written out each line is preceded by this character. The default
is <b class="const">;</b>.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>inifile</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/interp/deleg_method.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
the name of the method itself.</p>
<p>Normally the generated method marshalls the <i class="arg">arguments</i>, and
returns the result from the remote method as its own result. If
however the option <b class="option">-async</b> was specified then the generated
method will not wait for a result and return immediately.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>interp</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key31">comm</a>, <a href="../../../../index.html#key32">delegation</a>, <a href="../../../../index.html#key33">interpreter</a>, <a href="../../../../index.html#key355">method</a>, <a href="../../../../index.html#key356">snit</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
the name of the method itself.</p>
<p>Normally the generated method marshalls the <i class="arg">arguments</i>, and
returns the result from the remote method as its own result. If
however the option <b class="option">-async</b> was specified then the generated
method will not wait for a result and return immediately.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>interp</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key33">comm</a>, <a href="../../../../index.html#key32">delegation</a>, <a href="../../../../index.html#key31">interpreter</a>, <a href="../../../../index.html#key355">method</a>, <a href="../../../../index.html#key356">snit</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/interp/deleg_proc.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
stripped from the call.</p>
<p>Normally the generated procedure marshalls the <i class="arg">arguments</i>, and
returns the result from the remote procedure as its own result. If
however the option <b class="option">-async</b> was specified then the generated
procedure will not wait for a result and return immediately.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>interp</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key31">comm</a>, <a href="../../../../index.html#key32">delegation</a>, <a href="../../../../index.html#key33">interpreter</a>, <a href="../../../../index.html#key34">procedure</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
stripped from the call.</p>
<p>Normally the generated procedure marshalls the <i class="arg">arguments</i>, and
returns the result from the remote procedure as its own result. If
however the option <b class="option">-async</b> was specified then the generated
procedure will not wait for a result and return immediately.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>interp</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key33">comm</a>, <a href="../../../../index.html#key32">delegation</a>, <a href="../../../../index.html#key31">interpreter</a>, <a href="../../../../index.html#key34">procedure</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/interp/tcllib_interp.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
Like for <b class="cmd">::interp::snitLink</b> the method references are actually
command prefixes.
This command allows the creation of more complex command-method
mappings than <b class="cmd">::interp::snitLink</b>.</p>
<p>The result of the command is the empty string.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>interp</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key756">alias</a>, <a href="../../../../index.html#key757">empty interpreter</a>, <a href="../../../../index.html#key33">interpreter</a>, <a href="../../../../index.html#key355">method</a>, <a href="../../../../index.html#key356">snit</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
Like for <b class="cmd">::interp::snitLink</b> the method references are actually
command prefixes.
This command allows the creation of more complex command-method
mappings than <b class="cmd">::interp::snitLink</b>.</p>
<p>The result of the command is the empty string.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>interp</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key756">alias</a>, <a href="../../../../index.html#key757">empty interpreter</a>, <a href="../../../../index.html#key31">interpreter</a>, <a href="../../../../index.html#key355">method</a>, <a href="../../../../index.html#key356">snit</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/irc/irc.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Per-connection Commands</a></li>
<li class="section"><a href="#section3">Callback Commands</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Per-connection Commands</a></li>
<li class="section"><a href="#section3">Callback Commands</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
<dd><p>Returns a list of any additional arguments after the target.</p></dd>
<dt><a name="35"><b class="cmd">header</b></a></dt>
<dd><p>Returns the entire event header (everything up to the :) as a proper list.</p></dd>
<dt><a name="36"><b class="cmd">msg</b></a></dt>
<dd><p>Returns the message portion of the command (the part after the :).</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>irc</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>rfc 1459</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key676">chat</a>, <a href="../../../../index.html#key725">irc</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
</div></body></html>







|



|













301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
<dd><p>Returns a list of any additional arguments after the target.</p></dd>
<dt><a name="35"><b class="cmd">header</b></a></dt>
<dd><p>Returns the entire event header (everything up to the :) as a proper list.</p></dd>
<dt><a name="36"><b class="cmd">msg</b></a></dt>
<dd><p>Returns the message portion of the command (the part after the :).</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>irc</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>rfc 1459</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key676">chat</a>, <a href="../../../../index.html#key725">irc</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/irc/picoirc.html.

133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<li><a href="#2"><b class="cmd">::picoirc::post</b> <i class="arg">context</i> <i class="arg">channel</i> <i class="arg">message</i></a></li>
<li><a href="#3"><b class="cmd">::picoirc::splituri</b> <i class="arg">uri</i></a></li>
<li><a href="#4"><b class="cmd">::picoirc::send</b> <i class="arg">context</i> <i class="arg">line</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package provides a general purpose minimal IRC client suitable for 
embedding in other applications. All communication with the parent
application is done via an application provided callback procedure.
Each connection has its own state so you can hook up multiple servers
in a single application instance.</p>
<p>To initiate an IRC connection you must call <b class="cmd">picoirc::connect</b>
with a callback procedure, a nick-name to use on IRC and the IRC URL
that describes the connection. This will return a variable name that







|







133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<li><a href="#2"><b class="cmd">::picoirc::post</b> <i class="arg">context</i> <i class="arg">channel</i> <i class="arg">message</i></a></li>
<li><a href="#3"><b class="cmd">::picoirc::splituri</b> <i class="arg">uri</i></a></li>
<li><a href="#4"><b class="cmd">::picoirc::send</b> <i class="arg">context</i> <i class="arg">line</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package provides a general purpose minimal IRC client suitable for
embedding in other applications. All communication with the parent
application is done via an application provided callback procedure.
Each connection has its own state so you can hook up multiple servers
in a single application instance.</p>
<p>To initiate an IRC connection you must call <b class="cmd">picoirc::connect</b>
with a callback procedure, a nick-name to use on IRC and the IRC URL
that describes the connection. This will return a variable name that
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
</div>
<div id="section3" class="section"><h2><a name="section3">CALLBACK</a></h2>
<p>The callback must look like:</p>
<pre class="example">
proc Callback {context state args} {
}
</pre>
<p>where context is the irc context variable name (in case you need to pass 
it back to a picoirc procedure). state is one of a number of states as
described below.</p>
<dl class="options">
<dt><b class="option">init</b></dt>
<dd><p>called just before the socket is created</p></dd>
<dt><b class="option">connect</b></dt>
<dd><p>called once we have connected, before we join any channels</p></dd>
<dt><b class="option">close</b></dt>
<dd><p>called when the socket gets closed, before the context is deleted. If
an error occurs before we get connected the only argument will be the
socket error message.</p></dd>
<dt><b class="option">userlist</b> <i class="arg">channel</i> <i class="arg">nicklist</i></dt>
<dd><p>called to notify the application of an updated userlist. This is
generated when the output of the NAMES irc command is seen. The
package collects the entire output which can span a number of output
lines from the server and calls this callback when they have all been
received.</p></dd>
<dt><b class="option">chat</b> <i class="arg">target</i> <i class="arg">nick</i> <i class="arg">message</i> <i class="arg">type</i></dt>
<dd><p>called when a message arrives. <i class="arg">target</i> is the identity that the
message was targetted for. This can be the logged in nick or a channel
name. <i class="arg">nick</i> is the name of the sender of the message. 
<i class="arg">message</i> is the message text. <i class="arg">type</i> is set to &quot;ACTION&quot; if the
message was sent as a CTCP ACTION</p></dd>
<dt><b class="option">system</b> <i class="arg">channel</i> <i class="arg">message</i></dt>
<dd><p>called when a system message is received</p></dd>
<dt><b class="option">topic</b> <i class="arg">channel</i> <i class="arg">topic</i></dt>
<dd><p>called when the channel topic string is seen. <i class="arg">topic</i> is the text
of the channel topic.</p></dd>







|




















|







177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
</div>
<div id="section3" class="section"><h2><a name="section3">CALLBACK</a></h2>
<p>The callback must look like:</p>
<pre class="example">
proc Callback {context state args} {
}
</pre>
<p>where context is the irc context variable name (in case you need to pass
it back to a picoirc procedure). state is one of a number of states as
described below.</p>
<dl class="options">
<dt><b class="option">init</b></dt>
<dd><p>called just before the socket is created</p></dd>
<dt><b class="option">connect</b></dt>
<dd><p>called once we have connected, before we join any channels</p></dd>
<dt><b class="option">close</b></dt>
<dd><p>called when the socket gets closed, before the context is deleted. If
an error occurs before we get connected the only argument will be the
socket error message.</p></dd>
<dt><b class="option">userlist</b> <i class="arg">channel</i> <i class="arg">nicklist</i></dt>
<dd><p>called to notify the application of an updated userlist. This is
generated when the output of the NAMES irc command is seen. The
package collects the entire output which can span a number of output
lines from the server and calls this callback when they have all been
received.</p></dd>
<dt><b class="option">chat</b> <i class="arg">target</i> <i class="arg">nick</i> <i class="arg">message</i> <i class="arg">type</i></dt>
<dd><p>called when a message arrives. <i class="arg">target</i> is the identity that the
message was targetted for. This can be the logged in nick or a channel
name. <i class="arg">nick</i> is the name of the sender of the message.
<i class="arg">message</i> is the message text. <i class="arg">type</i> is set to &quot;ACTION&quot; if the
message was sent as a CTCP ACTION</p></dd>
<dt><b class="option">system</b> <i class="arg">channel</i> <i class="arg">message</i></dt>
<dd><p>called when a system message is received</p></dd>
<dt><b class="option">topic</b> <i class="arg">channel</i> <i class="arg">topic</i></dt>
<dd><p>called when the channel topic string is seen. <i class="arg">topic</i> is the text
of the channel topic.</p></dd>
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
<p>PicoIRC:[package provide picoirc]:Tcl [info patchlevel]</p></dd>
<dt><b class="option">debug</b> <i class="arg">type</i> <i class="arg">raw</i></dt>
<dd><p>called when data is either being read or written to the network
socket. <i class="arg">type</i> is set to <b class="const">read</b> when reading data and
<b class="const">write</b> if the data is to be written. <i class="arg">raw</i> is the
unprocessed IRC protocol data.</p>
<p>In both cases the application can return a break error code to
interrupt further processing of the raw data. If this is a 
<b class="const">read</b> operation then the package will not handle this line. If
the operation is <b class="const">write</b> then the package will not send the
data. This callback is intended for debugging protocol issues but
could be used to redirect all input and output if desired.</p></dd>
</dl>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>







|







227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
<p>PicoIRC:[package provide picoirc]:Tcl [info patchlevel]</p></dd>
<dt><b class="option">debug</b> <i class="arg">type</i> <i class="arg">raw</i></dt>
<dd><p>called when data is either being read or written to the network
socket. <i class="arg">type</i> is set to <b class="const">read</b> when reading data and
<b class="const">write</b> if the data is to be written. <i class="arg">raw</i> is the
unprocessed IRC protocol data.</p>
<p>In both cases the application can return a break error code to
interrupt further processing of the raw data. If this is a
<b class="const">read</b> operation then the package will not handle this line. If
the operation is <b class="const">write</b> then the package will not send the
data. This callback is intended for debugging protocol issues but
could be used to redirect all input and output if desired.</p></dd>
</dl>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>

Changes to embedded/www/tcllib/files/modules/javascript/javascript.html.

111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<p>javascript - Procedures to generate HTML and Java Script structures.</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<p>javascript - Procedures to generate HTML and Java Script structures.</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
<dd><p>Create an HTML checkbox and tie its value to that of its parent
checkbox.  If the child is checked, the parent is automatically
checked.  The <i class="arg">parentName</i> argument is the name of the child's
parent html checkbox object.  The <i class="arg">childName</i> argument is the name
of child html checkbox object to create.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>javascript</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../html/html.html">html</a>, <a href="../ncgi/ncgi.html">ncgi</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key600">checkbox</a>, <a href="../../../../index.html#key597">html</a>, <a href="../../../../index.html#key191">javascript</a>, <a href="../../../../index.html#key719">selectionbox</a>, <a href="../../../../index.html#key718">submitbutton</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>CGI programming</p>
</div>
</div></body></html>







|



|













192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
<dd><p>Create an HTML checkbox and tie its value to that of its parent
checkbox.  If the child is checked, the parent is automatically
checked.  The <i class="arg">parentName</i> argument is the name of the child's
parent html checkbox object.  The <i class="arg">childName</i> argument is the name
of child html checkbox object to create.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>javascript</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../html/html.html">html</a>, <a href="../ncgi/ncgi.html">ncgi</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key600">checkbox</a>, <a href="../../../../index.html#key597">html</a>, <a href="../../../../index.html#key191">javascript</a>, <a href="../../../../index.html#key719">selectionbox</a>, <a href="../../../../index.html#key718">submitbutton</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>CGI programming</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/jpeg/jpeg.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">LIMITATIONS</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">LIMITATIONS</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
	DateTime {2001:06:09 15:17:32}
    }
</pre>
<p>Throws an error if <i class="arg">file</i> is not a JPEG image.</p></dd>
<dt><a name="6"><b class="cmd">::jpeg::getExifFromChannel</b> <i class="arg">channel</i> <span class="opt">?<i class="arg">section</i>?</span></a></dt>
<dd><p>This command is as per <b class="cmd">::jpeg::getExif</b> except that it uses a
previously opened channel.  <i class="arg">channel</i> should be a seekable channel
and <i class="arg">section</i> is as described in the documentation of 
<b class="cmd">::jpeg::getExif</b>
Note: the jpeg parser expects that the start of the channel is the
start of the image data. If working with an image embedded in a
container file format it may be necessary to read the jpeg data into
a temporary container: either a temporary file or a memory channel.</p></dd>
<dt><a name="7"><b class="cmd">::jpeg::formatExif</b> <i class="arg">keys</i></a></dt>
<dd><p>Takes a list of key-value pairs as returned by <b class="cmd">getExif</b> and formats







|







198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
	DateTime {2001:06:09 15:17:32}
    }
</pre>
<p>Throws an error if <i class="arg">file</i> is not a JPEG image.</p></dd>
<dt><a name="6"><b class="cmd">::jpeg::getExifFromChannel</b> <i class="arg">channel</i> <span class="opt">?<i class="arg">section</i>?</span></a></dt>
<dd><p>This command is as per <b class="cmd">::jpeg::getExif</b> except that it uses a
previously opened channel.  <i class="arg">channel</i> should be a seekable channel
and <i class="arg">section</i> is as described in the documentation of
<b class="cmd">::jpeg::getExif</b>
Note: the jpeg parser expects that the start of the channel is the
start of the image data. If working with an image embedded in a
container file format it may be necessary to read the jpeg data into
a temporary container: either a temporary file or a memory channel.</p></dd>
<dt><a name="7"><b class="cmd">::jpeg::formatExif</b> <i class="arg">keys</i></a></dt>
<dd><p>Takes a list of key-value pairs as returned by <b class="cmd">getExif</b> and formats
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
</div>
<div id="section3" class="section"><h2><a name="section3">LIMITATIONS</a></h2>
<p>can only work with files
cant write exif data
gps exif data not parsed
makernote data not yet implemented</p>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>jpeg</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key163">comment</a>, <a href="../../../../index.html#key160">exif</a>, <a href="../../../../index.html#key133">image</a>, <a href="../../../../index.html#key162">jfif</a>, <a href="../../../../index.html#key161">jpeg</a>, <a href="../../../../index.html#key159">thumbnail</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>File formats</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004-2005, Code: Aaron Faupell &lt;[email protected]&gt;<br>
Copyright &copy; 2007, Code:  Andreas Kupries &lt;[email protected]&gt;<br>
Copyright &copy; 2004-2009, Doc:  Andreas Kupries &lt;[email protected]&gt;<br>
Copyright &copy; 2011, Code: Pat Thoyts &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|











267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
</div>
<div id="section3" class="section"><h2><a name="section3">LIMITATIONS</a></h2>
<p>can only work with files
cant write exif data
gps exif data not parsed
makernote data not yet implemented</p>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>jpeg</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key163">comment</a>, <a href="../../../../index.html#key160">exif</a>, <a href="../../../../index.html#key134">image</a>, <a href="../../../../index.html#key162">jfif</a>, <a href="../../../../index.html#key161">jpeg</a>, <a href="../../../../index.html#key159">thumbnail</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>File formats</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004-2005, Code: Aaron Faupell &lt;[email protected]&gt;<br>
Copyright &copy; 2007, Code:  Andreas Kupries &lt;[email protected]&gt;<br>
Copyright &copy; 2004-2009, Doc:  Andreas Kupries &lt;[email protected]&gt;<br>
Copyright &copy; 2011, Code: Pat Thoyts &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/json/json.html.

198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
Image {IDs {116 943 234 38793} Thumbnail {Width 100 Height 125 Url http://www.example.com/image/481989943} Width 800 Height 600 Title {View from 15th Floor}}
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>json</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key189">data exchange</a>, <a href="../../../../index.html#key188">exchange format</a>, <a href="../../../../index.html#key191">javascript</a>, <a href="../../../../index.html#key190">json</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
Image {IDs {116 943 234 38793} Thumbnail {Width 100 Height 125 Url http://www.example.com/image/481989943} Width 800 Height 600 Title {View from 15th Floor}}
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>json</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key189">data exchange</a>, <a href="../../../../index.html#key188">exchange format</a>, <a href="../../../../index.html#key191">javascript</a>, <a href="../../../../index.html#key190">json</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/json/json_write.html.

182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
object as its result, with the keys formatted as JSON strings.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>json</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key189">data exchange</a>, <a href="../../../../index.html#key188">exchange format</a>, <a href="../../../../index.html#key191">javascript</a>, <a href="../../../../index.html#key190">json</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
object as its result, with the keys formatted as JSON strings.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>json</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key189">data exchange</a>, <a href="../../../../index.html#key188">exchange format</a>, <a href="../../../../index.html#key191">javascript</a>, <a href="../../../../index.html#key190">json</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/lambda/lambda.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">AUTHORS</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">AUTHORS</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
the <i class="arg">namespace</i>, with the arguments set to the values supplied at
both construction and invokation time.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">AUTHORS</a></h2>
<p>Andreas Kupries</p>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>lambda</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>apply(n), proc(n)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key574">anonymous procedure</a>, <a href="../../../../index.html#key519">callback</a>, <a href="../../../../index.html#key572">command prefix</a>, <a href="../../../../index.html#key575">currying</a>, <a href="../../../../index.html#key573">lambda</a>, <a href="../../../../index.html#key571">partial application</a>, <a href="../../../../index.html#key570">proc</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Utility</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2011 Andreas Kupries, BSD licensed</p>
</div>
</div></body></html>







|



|







|








185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
the <i class="arg">namespace</i>, with the arguments set to the values supplied at
both construction and invokation time.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">AUTHORS</a></h2>
<p>Andreas Kupries</p>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>lambda</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>apply(n), proc(n)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key574">anonymous procedure</a>, <a href="../../../../index.html#key519">callback</a>, <a href="../../../../index.html#key573">command prefix</a>, <a href="../../../../index.html#key575">currying</a>, <a href="../../../../index.html#key572">lambda</a>, <a href="../../../../index.html#key571">partial application</a>, <a href="../../../../index.html#key570">proc</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Utility</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2011 Andreas Kupries, BSD licensed</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/ldap/ldap.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
<dt><a name="5"><b class="cmd">::ldap::bind</b> <i class="arg">handle</i> <span class="opt">?<i class="arg">name</i>?</span> <span class="opt">?<i class="arg">password</i>?</span></a></dt>
<dd><p>This command authenticates the ldap connection refered to by the token
in <i class="arg">handle</i>, with a user name and associated password. It blocks
until a response from the ldap server arrives. Its result is the empty
string.
Both <i class="arg">name</i> and <i class="arg">passwd</i> default to the empty string if they
are not specified.
By leaving out <i class="arg">name</i> and <i class="arg">passwd</i> you can make an anonymous bind to 
the ldap server.
You can issue <b class="cmd">::ldap::bind</b> again to bind with different credentials.</p></dd>
<dt><a name="6"><b class="cmd">::ldap::bindSASL</b> <i class="arg">handle</i> <span class="opt">?<i class="arg">name</i>?</span> <span class="opt">?<i class="arg">password</i>?</span></a></dt>
<dd><p>This command uses SASL authentication mechanisms to do a multistage bind.
Its otherwise identical to the standard <b class="cmd">::ldap::bind</b>.
This feature is currently experimental and subject to change. See the documentation
for the <b class="package"><a href="../sasl/sasl.html">SASL</a></b> and the &quot;<b class="file">SASL.txt</b>&quot; in the tcllib CVS repository for 
details how to setup and use SASL with openldap.</p></dd>
<dt><a name="7"><b class="cmd">::ldap::unbind</b> <i class="arg">handle</i></a></dt>
<dd><p>This command asks the ldap server to release the last bind done for
the connection refered to by the token in <i class="arg">handle</i>.
The <i class="arg">handle</i> is invalid after the unbind, as the server closes the connection. 
So this is effectivly just a more polite disconnect operation.</p></dd>
<dt><a name="8"><b class="cmd">::ldap::search</b> <i class="arg">handle</i> <i class="arg">baseObject</i> <i class="arg">filterString</i> <i class="arg">attributes</i> <i class="arg">options</i></a></dt>
<dd><p>This command performs a LDAP search below the <i class="arg">baseObject</i> tree
using a complex LDAP search expression <i class="arg">filterString</i> and returns
the specified <i class="arg">attributes</i> of all matching objects (DNs). If the
list of <i class="arg">attributes</i> was empty all attributes are returned. The
command blocks until it has received all results.







|






|




|







198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
<dt><a name="5"><b class="cmd">::ldap::bind</b> <i class="arg">handle</i> <span class="opt">?<i class="arg">name</i>?</span> <span class="opt">?<i class="arg">password</i>?</span></a></dt>
<dd><p>This command authenticates the ldap connection refered to by the token
in <i class="arg">handle</i>, with a user name and associated password. It blocks
until a response from the ldap server arrives. Its result is the empty
string.
Both <i class="arg">name</i> and <i class="arg">passwd</i> default to the empty string if they
are not specified.
By leaving out <i class="arg">name</i> and <i class="arg">passwd</i> you can make an anonymous bind to
the ldap server.
You can issue <b class="cmd">::ldap::bind</b> again to bind with different credentials.</p></dd>
<dt><a name="6"><b class="cmd">::ldap::bindSASL</b> <i class="arg">handle</i> <span class="opt">?<i class="arg">name</i>?</span> <span class="opt">?<i class="arg">password</i>?</span></a></dt>
<dd><p>This command uses SASL authentication mechanisms to do a multistage bind.
Its otherwise identical to the standard <b class="cmd">::ldap::bind</b>.
This feature is currently experimental and subject to change. See the documentation
for the <b class="package"><a href="../sasl/sasl.html">SASL</a></b> and the &quot;<b class="file">SASL.txt</b>&quot; in the tcllib CVS repository for
details how to setup and use SASL with openldap.</p></dd>
<dt><a name="7"><b class="cmd">::ldap::unbind</b> <i class="arg">handle</i></a></dt>
<dd><p>This command asks the ldap server to release the last bind done for
the connection refered to by the token in <i class="arg">handle</i>.
The <i class="arg">handle</i> is invalid after the unbind, as the server closes the connection.
So this is effectivly just a more polite disconnect operation.</p></dd>
<dt><a name="8"><b class="cmd">::ldap::search</b> <i class="arg">handle</i> <i class="arg">baseObject</i> <i class="arg">filterString</i> <i class="arg">attributes</i> <i class="arg">options</i></a></dt>
<dd><p>This command performs a LDAP search below the <i class="arg">baseObject</i> tree
using a complex LDAP search expression <i class="arg">filterString</i> and returns
the specified <i class="arg">attributes</i> of all matching objects (DNs). If the
list of <i class="arg">attributes</i> was empty all attributes are returned. The
command blocks until it has received all results.
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
attribute names. In other words, it is in the form</p>
<pre class="example">
    {dn1 {attr1 {val11 val12 ...} attr2 {val21...} ...}} {dn2 {a1 {v11 ...} ...}} ...
</pre>
</dd>
<dt><a name="9"><b class="cmd">::ldap::searchInit</b> <i class="arg">handle</i> <i class="arg">baseObject</i> <i class="arg">filterString</i> <i class="arg">attributes</i> <i class="arg">options</i></a></dt>
<dd><p>This command initiates a LDAP search below the <i class="arg">baseObject</i> tree
using a complex LDAP search expression <i class="arg">filterString</i>. 
The search gets the specified <i class="arg">attributes</i> of all matching objects (DNs). 
The command itself just starts the search, to retrieve the actual results, use 
<b class="cmd">::ldap::searchNext</b>. 
A search can be terminated at any time by
<b class="cmd">::ldap::searchEnd</b>. This informs the server that no further results should be sent by sending and ABANDON message
and cleans up the internal state of the search.
Only one <b class="cmd">::ldap::search</b> can be active at a given time, this
includes the introspection commands <b class="cmd">::ldap::info saslmechanisms</b>, <b class="cmd">ldap::info control</b> and 
<b class="cmd">ldap::info extensions</b>, which invoke a search internally.
Error responses from the server due to wrong arguments or similar things are returned
with the first <b class="cmd">::ldap::searchNext</b> call and should be checked and dealed with there.
If the list of requested <i class="arg">attributes</i> is empty all attributes will be returned.
The parameter <i class="arg">options</i> specifies the options to be used in the search,
and has the following format:</p>
<pre class="example">
    {-option1 value1 -option2 value2 ... }
</pre>
<p>Following options are available:</p>
<dl class="options">
<dt><b class="option">-scope</b> base one sub</dt>
<dd><p>Control the scope of the search to be one of <b class="const">base</b>, <b class="const">one</b>, or <b class="const">sub</b>,  to  specify  a  base
object,  one-level or  subtree  search.   The  default is <b class="const">sub</b>.</p></dd>
<dt><b class="option">-derefaliases</b> never search find always</dt>
<dd><p>Control how aliases dereferencing is done.  Should be one of <b class="const">never</b>, <b class="const">always</b>, <b class="const">search</b>,  or  <b class="const">find</b>  to
specify that aliases are never dereferenced, always dereferenced, dereferenced when searching, or
dereferenced only when locating the base object for the search.  
The default is to never dereference aliases.</p></dd>
<dt><b class="option">-sizelimit</b> num</dt>
<dd><p>Determines the maximum number of entries to return in a search. If specified as
0 no limit is enforced. The server may enforce a configuration dependent sizelimit,
which may be lower than the one given by this option. The default is 0, no limit.</p></dd>
<dt><b class="option">-timelimit</b> seconds</dt>
<dd><p>Asks the server to use a timelimit of <i class="arg">seconds</i> for the search. Zero means no 
limit. The default is 0, no limit.</p></dd>
<dt><b class="option">-attrsonly</b> boolean</dt>
<dd><p>If set to 1 only the attribute names but not the values will be present in the search result.
The default is to retrieve attribute names and values.</p></dd>
<dt><b class="option">-referencevar</b> varname</dt>
<dd><p>If set the search result reference LDAPURIs, if any, are returned in the given variable.
The caller can than decide to follow those references and query other LDAP servers for







|
|
|
|




|

















|






|







232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
attribute names. In other words, it is in the form</p>
<pre class="example">
    {dn1 {attr1 {val11 val12 ...} attr2 {val21...} ...}} {dn2 {a1 {v11 ...} ...}} ...
</pre>
</dd>
<dt><a name="9"><b class="cmd">::ldap::searchInit</b> <i class="arg">handle</i> <i class="arg">baseObject</i> <i class="arg">filterString</i> <i class="arg">attributes</i> <i class="arg">options</i></a></dt>
<dd><p>This command initiates a LDAP search below the <i class="arg">baseObject</i> tree
using a complex LDAP search expression <i class="arg">filterString</i>.
The search gets the specified <i class="arg">attributes</i> of all matching objects (DNs).
The command itself just starts the search, to retrieve the actual results, use
<b class="cmd">::ldap::searchNext</b>.
A search can be terminated at any time by
<b class="cmd">::ldap::searchEnd</b>. This informs the server that no further results should be sent by sending and ABANDON message
and cleans up the internal state of the search.
Only one <b class="cmd">::ldap::search</b> can be active at a given time, this
includes the introspection commands <b class="cmd">::ldap::info saslmechanisms</b>, <b class="cmd">ldap::info control</b> and
<b class="cmd">ldap::info extensions</b>, which invoke a search internally.
Error responses from the server due to wrong arguments or similar things are returned
with the first <b class="cmd">::ldap::searchNext</b> call and should be checked and dealed with there.
If the list of requested <i class="arg">attributes</i> is empty all attributes will be returned.
The parameter <i class="arg">options</i> specifies the options to be used in the search,
and has the following format:</p>
<pre class="example">
    {-option1 value1 -option2 value2 ... }
</pre>
<p>Following options are available:</p>
<dl class="options">
<dt><b class="option">-scope</b> base one sub</dt>
<dd><p>Control the scope of the search to be one of <b class="const">base</b>, <b class="const">one</b>, or <b class="const">sub</b>,  to  specify  a  base
object,  one-level or  subtree  search.   The  default is <b class="const">sub</b>.</p></dd>
<dt><b class="option">-derefaliases</b> never search find always</dt>
<dd><p>Control how aliases dereferencing is done.  Should be one of <b class="const">never</b>, <b class="const">always</b>, <b class="const">search</b>,  or  <b class="const">find</b>  to
specify that aliases are never dereferenced, always dereferenced, dereferenced when searching, or
dereferenced only when locating the base object for the search.
The default is to never dereference aliases.</p></dd>
<dt><b class="option">-sizelimit</b> num</dt>
<dd><p>Determines the maximum number of entries to return in a search. If specified as
0 no limit is enforced. The server may enforce a configuration dependent sizelimit,
which may be lower than the one given by this option. The default is 0, no limit.</p></dd>
<dt><b class="option">-timelimit</b> seconds</dt>
<dd><p>Asks the server to use a timelimit of <i class="arg">seconds</i> for the search. Zero means no
limit. The default is 0, no limit.</p></dd>
<dt><b class="option">-attrsonly</b> boolean</dt>
<dd><p>If set to 1 only the attribute names but not the values will be present in the search result.
The default is to retrieve attribute names and values.</p></dd>
<dt><b class="option">-referencevar</b> varname</dt>
<dd><p>If set the search result reference LDAPURIs, if any, are returned in the given variable.
The caller can than decide to follow those references and query other LDAP servers for
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
the tree. If this argument is given, the argument <i class="arg">deleteOld</i>
must be specified also.
The command blocks until the operation has completed. Its result
is the empty string.</p></dd>
<dt><a name="18"><b class="cmd">::ldap::info</b> <b class="cmd"><a href="../../../../index.html#key425">ip</a></b> <i class="arg">handle</i></a></dt>
<dd><p>This command returns the IP address of the remote LDAP server the handle is connected to.</p></dd>
<dt><a name="19"><b class="cmd">::ldap::info</b> <b class="cmd">bound</b> <i class="arg">handle</i></a></dt>
<dd><p>This command returns 1 if a handle has successfully completed a <b class="cmd">::ldap::bind</b>. 
If no bind was done or it failed, a 0 is returned.</p></dd>
<dt><a name="20"><b class="cmd">::ldap::info</b> <b class="cmd">bounduser</b> <i class="arg">handle</i></a></dt>
<dd><p>This command returns the username used in the bind operation if a handle has successfully completed a <b class="cmd">::ldap::bind</b>. 
If no bound was done or it failed, an empty string is returned.</p></dd>
<dt><a name="21"><b class="cmd">::ldap::info</b> <b class="cmd">connections</b></a></dt>
<dd><p>This command returns all currently existing ldap connection handles.</p></dd>
<dt><a name="22"><b class="cmd">::ldap::info</b> <b class="cmd"><a href="../../../../index.html#key311">tls</a></b> <i class="arg">handle</i></a></dt>
<dd><p>This command returns 1 if the ldap connection <i class="arg">handle</i> used TLS/SSL for
connection via <b class="cmd">ldap::secure_connect</b> or completed <b class="cmd">ldap::starttls</b>, 0 otherwise.</p></dd>
<dt><a name="23"><b class="cmd">::ldap::info</b> <b class="cmd">saslmechanisms</b> <i class="arg">handle</i></a></dt>







|


|







382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
the tree. If this argument is given, the argument <i class="arg">deleteOld</i>
must be specified also.
The command blocks until the operation has completed. Its result
is the empty string.</p></dd>
<dt><a name="18"><b class="cmd">::ldap::info</b> <b class="cmd"><a href="../../../../index.html#key425">ip</a></b> <i class="arg">handle</i></a></dt>
<dd><p>This command returns the IP address of the remote LDAP server the handle is connected to.</p></dd>
<dt><a name="19"><b class="cmd">::ldap::info</b> <b class="cmd">bound</b> <i class="arg">handle</i></a></dt>
<dd><p>This command returns 1 if a handle has successfully completed a <b class="cmd">::ldap::bind</b>.
If no bind was done or it failed, a 0 is returned.</p></dd>
<dt><a name="20"><b class="cmd">::ldap::info</b> <b class="cmd">bounduser</b> <i class="arg">handle</i></a></dt>
<dd><p>This command returns the username used in the bind operation if a handle has successfully completed a <b class="cmd">::ldap::bind</b>.
If no bound was done or it failed, an empty string is returned.</p></dd>
<dt><a name="21"><b class="cmd">::ldap::info</b> <b class="cmd">connections</b></a></dt>
<dd><p>This command returns all currently existing ldap connection handles.</p></dd>
<dt><a name="22"><b class="cmd">::ldap::info</b> <b class="cmd"><a href="../../../../index.html#key311">tls</a></b> <i class="arg">handle</i></a></dt>
<dd><p>This command returns 1 if the ldap connection <i class="arg">handle</i> used TLS/SSL for
connection via <b class="cmd">ldap::secure_connect</b> or completed <b class="cmd">ldap::starttls</b>, 0 otherwise.</p></dd>
<dt><a name="23"><b class="cmd">::ldap::info</b> <b class="cmd">saslmechanisms</b> <i class="arg">handle</i></a></dt>
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
    # Delete
    ldap::modify $handle $dn {} [list drink water  pager &quot;&quot;]
    # Move
    ldap::modifyDN $handle $dn &quot;cn=Tester&quot;
    # Kill the test object, and shut the connection down.
    set dn &quot;cn=Tester,ou=People,o=University of Michigan,c=US&quot;
    ldap::delete $handle $dn
 
    ldap::unbind     $handle
    ldap::disconnect $handle
</pre>
<p>And a another example, a simple query, and processing the
results.</p>
<pre class="example">
    package require ldap
    set handle [ldap::connect ldap.acme.com 389]
    ldap::bind $handle
    set results [ldap::search $handle &quot;o=acme,dc=com&quot; &quot;(uid=jdoe)&quot; {}]
    foreach result $results {
	foreach {object attributes} $result break
	# The processing here is similar to what 'parray' does.
	# I.e. finding the longest attribute name and then
	# generating properly aligned output listing all attributes
	# and their values.
	set width 0
	set sortedAttribs {}
	foreach {type values} $attributes {
	    if {[string length $type] &gt; $width} {
		set width [string length $type] 
	    }
	    lappend sortedAttribs [list $type $values]
	}     
	puts &quot;object='$object'&quot;
	foreach sortedAttrib  $sortedAttribs {
	    foreach {type values} $sortedAttrib break
	    foreach value $values {
		regsub -all &quot;\[\x01-\x1f\]&quot; $value ? value
		puts [format &quot;  %-${width}s %s&quot; $type $value]
	    }
	}
	puts &quot;&quot;
    }
    ldap::unbind $handle
    ldap::disconnect $handle
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>ldap</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.
One know bug is the usage of <b class="cmd"><a href="../../../../index.html#key393">vwait</a></b> inside the dispatch mechanism, which makes
it currently unsafe to use this code in code that also enters the event loop.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key141">directory access</a>, <a href="../../../../index.html#key136">internet</a>, <a href="../../../../index.html#key138">ldap</a>, <a href="../../../../index.html#key135">ldap client</a>, <a href="../../../../index.html#key139">protocol</a>, <a href="../../../../index.html#key137">rfc 2251</a>, <a href="../../../../index.html#key140">rfc 4511</a>, <a href="../../../../index.html#key142">x.500</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004 Andreas Kupries &lt;[email protected]&gt;<br>
Copyright &copy; 2004 Jochen Loewer &lt;[email protected]&gt;<br>
Copyright &copy; 2006 Michael Schlenker &lt;[email protected]&gt;</p>
</div>
</div></body></html>







<




















|


|














|



|

|
<
<


|










446
447
448
449
450
451
452

453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497


498
499
500
501
502
503
504
505
506
507
508
509
510
    # Delete
    ldap::modify $handle $dn {} [list drink water  pager &quot;&quot;]
    # Move
    ldap::modifyDN $handle $dn &quot;cn=Tester&quot;
    # Kill the test object, and shut the connection down.
    set dn &quot;cn=Tester,ou=People,o=University of Michigan,c=US&quot;
    ldap::delete $handle $dn

    ldap::unbind     $handle
    ldap::disconnect $handle
</pre>
<p>And a another example, a simple query, and processing the
results.</p>
<pre class="example">
    package require ldap
    set handle [ldap::connect ldap.acme.com 389]
    ldap::bind $handle
    set results [ldap::search $handle &quot;o=acme,dc=com&quot; &quot;(uid=jdoe)&quot; {}]
    foreach result $results {
	foreach {object attributes} $result break
	# The processing here is similar to what 'parray' does.
	# I.e. finding the longest attribute name and then
	# generating properly aligned output listing all attributes
	# and their values.
	set width 0
	set sortedAttribs {}
	foreach {type values} $attributes {
	    if {[string length $type] &gt; $width} {
		set width [string length $type]
	    }
	    lappend sortedAttribs [list $type $values]
	}
	puts &quot;object='$object'&quot;
	foreach sortedAttrib  $sortedAttribs {
	    foreach {type values} $sortedAttrib break
	    foreach value $values {
		regsub -all &quot;\[\x01-\x1f\]&quot; $value ? value
		puts [format &quot;  %-${width}s %s&quot; $type $value]
	    }
	}
	puts &quot;&quot;
    }
    ldap::unbind $handle
    ldap::disconnect $handle
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>ldap</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>


</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key142">directory access</a>, <a href="../../../../index.html#key138">internet</a>, <a href="../../../../index.html#key137">ldap</a>, <a href="../../../../index.html#key135">ldap client</a>, <a href="../../../../index.html#key140">protocol</a>, <a href="../../../../index.html#key136">rfc 2251</a>, <a href="../../../../index.html#key139">rfc 4511</a>, <a href="../../../../index.html#key141">x.500</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004 Andreas Kupries &lt;[email protected]&gt;<br>
Copyright &copy; 2004 Jochen Loewer &lt;[email protected]&gt;<br>
Copyright &copy; 2006 Michael Schlenker &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/ldap/ldapx.html.

141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
<li class="subsection"><a href="#subsection11">Ldif Instance Data</a></li>
<li class="subsection"><a href="#subsection12">Ldif Options</a></li>
<li class="subsection"><a href="#subsection13">Ldif Methods</a></li>
<li class="subsection"><a href="#subsection14">Ldif Example</a></li>
</ul>
</li>
<li class="section"><a href="#section6">References</a></li>
<li class="section"><a href="#section7">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
<li class="subsection"><a href="#subsection11">Ldif Instance Data</a></li>
<li class="subsection"><a href="#subsection12">Ldif Options</a></li>
<li class="subsection"><a href="#subsection13">Ldif Methods</a></li>
<li class="subsection"><a href="#subsection14">Ldif Example</a></li>
</ul>
</li>
<li class="section"><a href="#section6">References</a></li>
<li class="section"><a href="#section7">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
    liout destroy
    liin destroy
</pre>
</div>
</div>
<div id="section6" class="section"><h2><a name="section6">References</a></h2>
</div>
<div id="section7" class="section"><h2><a name="section7">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>ldap</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key141">directory access</a>, <a href="../../../../index.html#key136">internet</a>, <a href="../../../../index.html#key138">ldap</a>, <a href="../../../../index.html#key135">ldap client</a>, <a href="../../../../index.html#key479">ldif</a>, <a href="../../../../index.html#key139">protocol</a>, <a href="../../../../index.html#key137">rfc 2251</a>, <a href="../../../../index.html#key478">rfc 2849</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Pierre David &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
    liout destroy
    liin destroy
</pre>
</div>
</div>
<div id="section6" class="section"><h2><a name="section6">References</a></h2>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>ldap</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key142">directory access</a>, <a href="../../../../index.html#key138">internet</a>, <a href="../../../../index.html#key137">ldap</a>, <a href="../../../../index.html#key135">ldap client</a>, <a href="../../../../index.html#key479">ldif</a>, <a href="../../../../index.html#key140">protocol</a>, <a href="../../../../index.html#key136">rfc 2251</a>, <a href="../../../../index.html#key478">rfc 2849</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Pierre David &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/log/log.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">LEVELS</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">LEVELS</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
<li><p>debug</p></li>
</ul>
<p><em>Note</em> that by default all messages with levels <b class="const">warning</b> down to
<b class="const">debug</b> are suppressed. This is done intentionally, because (we believe
that) in most situations debugging output is not wanted. Most people wish to
have such output only when actually debugging an application.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>log</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key69">log</a>, <a href="../../../../index.html#key99">log level</a>, <a href="../../../../index.html#key344">message</a>, <a href="../../../../index.html#key785">message level</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2001-2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
<li><p>debug</p></li>
</ul>
<p><em>Note</em> that by default all messages with levels <b class="const">warning</b> down to
<b class="const">debug</b> are suppressed. This is done intentionally, because (we believe
that) in most situations debugging output is not wanted. Most people wish to
have such output only when actually debugging an application.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>log</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key69">log</a>, <a href="../../../../index.html#key99">log level</a>, <a href="../../../../index.html#key344">message</a>, <a href="../../../../index.html#key785">message level</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2001-2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/log/logger.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">IMPLEMENTATION</a></li>
<li class="section"><a href="#section3">Logprocs and Callstack</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">IMPLEMENTATION</a></li>
<li class="section"><a href="#section3">Logprocs and Callstack</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
When a logger service is initialized, it &quot;inherits&quot; properties from its
parents.  For instance, if there were a service <i class="term">foo</i>, and
we did a <b class="cmd">logger::init</b> <i class="arg">foo::bar</i> (to create a <i class="term">bar</i>
service underneath <i class="term">foo</i>), <i class="term">bar</i> would copy the current
configuration of the <i class="term">foo</i> service, although it would of
course, also be possible to then separately configure <i class="term">bar</i>.
If a logger service is initialized and the parent does not yet exist, the
parent is also created. 
The new logger service is initialized with the default loglevel set 
with <b class="cmd">logger::setlevel</b>.</p></dd>
<dt><a name="2"><b class="cmd">logger::import</b> <span class="opt">?<b class="option">-all</b>?</span> <span class="opt">?<b class="option">-force</b>?</span> <span class="opt">?<b class="option">-prefix</b> <i class="arg">prefix</i>?</span> <span class="opt">?<b class="option">-namespace</b> <i class="arg">namespace</i>?</span> <i class="arg">service</i></a></dt>
<dd><p>Import the logger service commands into the current namespace. Without the <b class="option">-all</b> option
only the commands corresponding to the log levels are imported. If <b class="option">-all</b> is given, 
all the <b class="cmd">${log}::cmd</b> style commands are imported. If the import would overwrite a command
an error is returned and no command is imported. Use the <b class="option">-force</b> option to force the import
and overwrite existing commands without complaining.
If the <b class="option">-prefix</b> option is given, the commands are imported with the given <i class="arg">prefix</i>
prepended to their names. 
If the <b class="option">-namespace</b> option is given, the commands are imported into the given namespace. If the
namespace does not exist, it is created. If a namespace without a leading :: is given, it is interpreted as
a child namespace to the current namespace.</p></dd>
<dt><a name="3"><b class="cmd">logger::initNamespace</b> <i class="arg">ns</i> <span class="opt">?<i class="arg">level</i>?</span></a></dt>
<dd><p>Convenience command for setting up a namespace for logging. Creates a
logger service named after the namespace <i class="arg">ns</i> (a :: prefix is
stripped), imports all the log commands into the namespace, and sets







|
|



|




|







193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
When a logger service is initialized, it &quot;inherits&quot; properties from its
parents.  For instance, if there were a service <i class="term">foo</i>, and
we did a <b class="cmd">logger::init</b> <i class="arg">foo::bar</i> (to create a <i class="term">bar</i>
service underneath <i class="term">foo</i>), <i class="term">bar</i> would copy the current
configuration of the <i class="term">foo</i> service, although it would of
course, also be possible to then separately configure <i class="term">bar</i>.
If a logger service is initialized and the parent does not yet exist, the
parent is also created.
The new logger service is initialized with the default loglevel set
with <b class="cmd">logger::setlevel</b>.</p></dd>
<dt><a name="2"><b class="cmd">logger::import</b> <span class="opt">?<b class="option">-all</b>?</span> <span class="opt">?<b class="option">-force</b>?</span> <span class="opt">?<b class="option">-prefix</b> <i class="arg">prefix</i>?</span> <span class="opt">?<b class="option">-namespace</b> <i class="arg">namespace</i>?</span> <i class="arg">service</i></a></dt>
<dd><p>Import the logger service commands into the current namespace. Without the <b class="option">-all</b> option
only the commands corresponding to the log levels are imported. If <b class="option">-all</b> is given,
all the <b class="cmd">${log}::cmd</b> style commands are imported. If the import would overwrite a command
an error is returned and no command is imported. Use the <b class="option">-force</b> option to force the import
and overwrite existing commands without complaining.
If the <b class="option">-prefix</b> option is given, the commands are imported with the given <i class="arg">prefix</i>
prepended to their names.
If the <b class="option">-namespace</b> option is given, the commands are imported into the given namespace. If the
namespace does not exist, it is created. If a namespace without a leading :: is given, it is interpreted as
a child namespace to the current namespace.</p></dd>
<dt><a name="3"><b class="cmd">logger::initNamespace</b> <i class="arg">ns</i> <span class="opt">?<i class="arg">level</i>?</span></a></dt>
<dd><p>Convenience command for setting up a namespace for logging. Creates a
logger service named after the namespace <i class="arg">ns</i> (a :: prefix is
stripped), imports all the log commands into the namespace, and sets
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
it.</p></dd>
<dt><a name="19"><b class="cmd">${log}::enable</b> <i class="arg">level</i></a></dt>
<dd><p>Enable logging, in the service referenced by <b class="variable">${log}</b>, and its
children, at and above the level specified.  Note that this does <em>not</em> disable logging below this level, so you should probably use
<b class="cmd">setlevel</b> instead.</p></dd>
<dt><a name="20"><b class="cmd">${log}::disable</b> <i class="arg">level</i></a></dt>
<dd><p>Disable logging, in the service referenced by <b class="variable">${log}</b>, and its
children, at and below the level specified. Note that this does <em>not</em> enable logging above this level, 
so you should probably use <b class="cmd">setlevel</b> instead.
Disabling the loglevel <b class="const">emergency</b> switches logging off for the service and its children.</p></dd>
<dt><a name="21"><b class="cmd">${log}::lvlchangeproc</b> <i class="arg">command</i></a></dt>
<dd></dd>
<dt><a name="22"><b class="cmd">${log}::lvlchangeproc</b></a></dt>
<dd><p>Set the script to call when the log instance in question changes its log level.
If called without a command it returns the currently registered command. The command gets two arguments







|







257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
it.</p></dd>
<dt><a name="19"><b class="cmd">${log}::enable</b> <i class="arg">level</i></a></dt>
<dd><p>Enable logging, in the service referenced by <b class="variable">${log}</b>, and its
children, at and above the level specified.  Note that this does <em>not</em> disable logging below this level, so you should probably use
<b class="cmd">setlevel</b> instead.</p></dd>
<dt><a name="20"><b class="cmd">${log}::disable</b> <i class="arg">level</i></a></dt>
<dd><p>Disable logging, in the service referenced by <b class="variable">${log}</b>, and its
children, at and below the level specified. Note that this does <em>not</em> enable logging above this level,
so you should probably use <b class="cmd">setlevel</b> instead.
Disabling the loglevel <b class="const">emergency</b> switches logging off for the service and its children.</p></dd>
<dt><a name="21"><b class="cmd">${log}::lvlchangeproc</b> <i class="arg">command</i></a></dt>
<dd></dd>
<dt><a name="22"><b class="cmd">${log}::lvlchangeproc</b></a></dt>
<dd><p>Set the script to call when the log instance in question changes its log level.
If called without a command it returns the currently registered command. The command gets two arguments
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
</dd>
<dt><a name="23"><b class="cmd">${log}::logproc</b> <i class="arg">level</i></a></dt>
<dd></dd>
<dt><a name="24"><b class="cmd">${log}::logproc</b> <i class="arg">level</i> <i class="arg">command</i></a></dt>
<dd></dd>
<dt><a name="25"><b class="cmd">${log}::logproc</b> <i class="arg">level</i> <i class="arg">argname</i> <i class="arg">body</i></a></dt>
<dd><p>This command comes in three forms - the third, older one is deprecated
and may be removed from future versions of the logger package.  
The current set version takes one argument, a command to be executed when the
level is called.  The callback command takes on argument, the text to
be logged. If called only with a valid level <b class="cmd">logproc</b> returns the name of the command
currently registered as callback command.
<b class="cmd">logproc</b> specifies which command will perform the actual logging
for a given level.  The logger package ships with default commands for
all log levels, but with <b class="cmd">logproc</b> it is possible to replace them







|







280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
</dd>
<dt><a name="23"><b class="cmd">${log}::logproc</b> <i class="arg">level</i></a></dt>
<dd></dd>
<dt><a name="24"><b class="cmd">${log}::logproc</b> <i class="arg">level</i> <i class="arg">command</i></a></dt>
<dd></dd>
<dt><a name="25"><b class="cmd">${log}::logproc</b> <i class="arg">level</i> <i class="arg">argname</i> <i class="arg">body</i></a></dt>
<dd><p>This command comes in three forms - the third, older one is deprecated
and may be removed from future versions of the logger package.
The current set version takes one argument, a command to be executed when the
level is called.  The callback command takes on argument, the text to
be logged. If called only with a valid level <b class="cmd">logproc</b> returns the name of the command
currently registered as callback command.
<b class="cmd">logproc</b> specifies which command will perform the actual logging
for a given level.  The logger package ships with default commands for
all log levels, but with <b class="cmd">logproc</b> it is possible to replace them
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
<p>Trace logs are slightly different: instead of a plain text argument,
the argument provided to the logproc is a dictionary consisting of the
<b class="const">enter</b> or <b class="const">leave</b> keyword along with another dictionary of
details about the trace.  These include:</p>
<ul class="itemized">
<li><p><b class="const">proc</b> - Name of the procedure being traced.</p></li>
<li><p><b class="const">level</b> - The stack level for the procedure invocation
(from <b class="cmd"><a href="../../../../index.html#key90">info</a></b> <b class="cmd">level</b>).</p></li>
<li><p><b class="const">script</b> - The name of the file in which the procedure is
defined, or an empty string if defined in interactive mode.</p></li>
<li><p><b class="const">caller</b> - The name of the procedure calling the procedure
being traced, or an empty string if the procedure was called from the
global scope (stack level 0).</p></li>
<li><p><b class="const">procargs</b> - A dictionary consisting of the names of arguments
to the procedure paired with values given for those arguments (<b class="const">enter</b>







|







304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
<p>Trace logs are slightly different: instead of a plain text argument,
the argument provided to the logproc is a dictionary consisting of the
<b class="const">enter</b> or <b class="const">leave</b> keyword along with another dictionary of
details about the trace.  These include:</p>
<ul class="itemized">
<li><p><b class="const">proc</b> - Name of the procedure being traced.</p></li>
<li><p><b class="const">level</b> - The stack level for the procedure invocation
(from <b class="cmd"><a href="../../../../index.html#key91">info</a></b> <b class="cmd">level</b>).</p></li>
<li><p><b class="const">script</b> - The name of the file in which the procedure is
defined, or an empty string if defined in interactive mode.</p></li>
<li><p><b class="const">caller</b> - The name of the procedure calling the procedure
being traced, or an empty string if the procedure was called from the
global scope (stack level 0).</p></li>
<li><p><b class="const">procargs</b> - A dictionary consisting of the names of arguments
to the procedure paired with values given for those arguments (<b class="const">enter</b>
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
  set log [::logger::init example]
  ${log}::logproc trace tracecmd
  proc foo { args } {
      puts &quot;In foo&quot;
      bar 1
      return &quot;foo_result&quot;
  }
    
  proc bar { x } {
      puts &quot;In bar&quot;
      return &quot;bar_result&quot;
  }
  ${log}::trace add foo bar
  ${log}::trace on
  foo
# Output:
enter {proc ::foo level 1 script {} caller {} procargs {args {}}}
In foo
enter {proc ::bar level 2 script {} caller ::foo procargs {x 1}}
In bar
leave {proc ::bar level 2 script {} caller ::foo status ok result bar_result}
leave {proc ::foo level 1 script {} caller {} status ok result foo_result}
</pre>
</dd>
<dt><a name="33"><b class="cmd">${log}::trace</b> <b class="cmd">on</b></a></dt>
<dd><p>Turns on trace logging for procedures registered through the <b class="cmd"><a href="../../../../index.html#key71">trace</a></b>
<b class="cmd">add</b> command.  This is similar to the <b class="cmd">enable</b> command for other
logging levels, but allows trace logging to take place at any level.
The trace logging mechanism takes advantage of the execution trace feature
of Tcl 8.4 and later.  The <b class="cmd"><a href="../../../../index.html#key71">trace</a></b> <b class="cmd">on</b> command will return an
error if called from earlier versions of Tcl.</p></dd>
<dt><a name="34"><b class="cmd">${log}::trace</b> <b class="cmd">off</b></a></dt>
<dd><p>Turns off trace logging for procedures registered for trace logging
through the <b class="cmd"><a href="../../../../index.html#key71">trace</a></b> <b class="cmd">add</b> command.  This is similar to the
<b class="cmd">disable</b> command for other logging levels, but allows trace logging
to take place at any level.
Procedures are not unregistered, so logging for them can be turned back
on with the <b class="cmd"><a href="../../../../index.html#key71">trace</a></b> <b class="cmd">on</b> command.  There is no overhead imposed
by trace registration when trace logging is disabled.</p></dd>
<dt><a name="35"><b class="cmd">${log}::trace</b> <b class="cmd">status</b> <span class="opt">?procName?</span> <span class="opt">?...?</span></a></dt>
<dd><p>This command returns a list of the procedures currently registered for
trace logging, or a flag indicating whether or not a trace is registered
for one or more specified procedures.</p></dd>
<dt><a name="36"><b class="cmd">${log}::trace</b> <b class="cmd">add</b> <i class="arg">procName</i> <span class="opt">?...?</span></a></dt>
<dd></dd>
<dt><a name="37"><b class="cmd">${log}::trace</b> <b class="cmd">add</b> <span class="opt">?-ns?</span> <i class="arg">nsName</i> <span class="opt">?...?</span></a></dt>
<dd><p>This command registers one or more procedures for logging of entry/exit
traces.  Procedures can be specified via a list of procedure names or
namespace names (in which case all procedure within the namespace
are targeted by the operation).  By default, each name is first
interpreted as a procedure name or glob-style search pattern, and if
not found its interpreted as a namespace name.  The <i class="arg">-ns</i> option can
be used to force interpretation of all provided arguments as namespace names.
Procedures must be defined prior to registering them for tracing
through the <b class="cmd"><a href="../../../../index.html#key71">trace</a></b> <b class="cmd">add</b> command.  Any procedure or namespace
names/patterns that don't match any existing procedures will be
silently ignored.</p></dd>
<dt><a name="38"><b class="cmd">${log}::trace</b> <b class="cmd"><a href="../../../../index.html#key226">remove</a></b> <i class="arg">procName</i> <span class="opt">?...?</span></a></dt>
<dd></dd>
<dt><a name="39"><b class="cmd">${log}::trace</b> <b class="cmd"><a href="../../../../index.html#key226">remove</a></b> <span class="opt">?-ns?</span> <i class="arg">nsName</i> <span class="opt">?...?</span></a></dt>
<dd><p>This command unregisters one or more procedures so that they will no
longer have trace logging performed, with the same matching rules as
that of the <b class="cmd"><a href="../../../../index.html#key71">trace</a></b> <b class="cmd">add</b> command.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">IMPLEMENTATION</a></h2>
<p>The logger package is implemented in such a way as to optimize (for
Tcl 8.4 and newer) log procedures which are disabled.  They are
aliased to a proc which has no body, which is compiled to a no op in
bytecode.  This should make the peformance hit minimal.  If you really







<

















|



|



|



|
















|







|







354
355
356
357
358
359
360

361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
  set log [::logger::init example]
  ${log}::logproc trace tracecmd
  proc foo { args } {
      puts &quot;In foo&quot;
      bar 1
      return &quot;foo_result&quot;
  }

  proc bar { x } {
      puts &quot;In bar&quot;
      return &quot;bar_result&quot;
  }
  ${log}::trace add foo bar
  ${log}::trace on
  foo
# Output:
enter {proc ::foo level 1 script {} caller {} procargs {args {}}}
In foo
enter {proc ::bar level 2 script {} caller ::foo procargs {x 1}}
In bar
leave {proc ::bar level 2 script {} caller ::foo status ok result bar_result}
leave {proc ::foo level 1 script {} caller {} status ok result foo_result}
</pre>
</dd>
<dt><a name="33"><b class="cmd">${log}::trace</b> <b class="cmd">on</b></a></dt>
<dd><p>Turns on trace logging for procedures registered through the <b class="cmd"><a href="../../../../index.html#key70">trace</a></b>
<b class="cmd">add</b> command.  This is similar to the <b class="cmd">enable</b> command for other
logging levels, but allows trace logging to take place at any level.
The trace logging mechanism takes advantage of the execution trace feature
of Tcl 8.4 and later.  The <b class="cmd"><a href="../../../../index.html#key70">trace</a></b> <b class="cmd">on</b> command will return an
error if called from earlier versions of Tcl.</p></dd>
<dt><a name="34"><b class="cmd">${log}::trace</b> <b class="cmd">off</b></a></dt>
<dd><p>Turns off trace logging for procedures registered for trace logging
through the <b class="cmd"><a href="../../../../index.html#key70">trace</a></b> <b class="cmd">add</b> command.  This is similar to the
<b class="cmd">disable</b> command for other logging levels, but allows trace logging
to take place at any level.
Procedures are not unregistered, so logging for them can be turned back
on with the <b class="cmd"><a href="../../../../index.html#key70">trace</a></b> <b class="cmd">on</b> command.  There is no overhead imposed
by trace registration when trace logging is disabled.</p></dd>
<dt><a name="35"><b class="cmd">${log}::trace</b> <b class="cmd">status</b> <span class="opt">?procName?</span> <span class="opt">?...?</span></a></dt>
<dd><p>This command returns a list of the procedures currently registered for
trace logging, or a flag indicating whether or not a trace is registered
for one or more specified procedures.</p></dd>
<dt><a name="36"><b class="cmd">${log}::trace</b> <b class="cmd">add</b> <i class="arg">procName</i> <span class="opt">?...?</span></a></dt>
<dd></dd>
<dt><a name="37"><b class="cmd">${log}::trace</b> <b class="cmd">add</b> <span class="opt">?-ns?</span> <i class="arg">nsName</i> <span class="opt">?...?</span></a></dt>
<dd><p>This command registers one or more procedures for logging of entry/exit
traces.  Procedures can be specified via a list of procedure names or
namespace names (in which case all procedure within the namespace
are targeted by the operation).  By default, each name is first
interpreted as a procedure name or glob-style search pattern, and if
not found its interpreted as a namespace name.  The <i class="arg">-ns</i> option can
be used to force interpretation of all provided arguments as namespace names.
Procedures must be defined prior to registering them for tracing
through the <b class="cmd"><a href="../../../../index.html#key70">trace</a></b> <b class="cmd">add</b> command.  Any procedure or namespace
names/patterns that don't match any existing procedures will be
silently ignored.</p></dd>
<dt><a name="38"><b class="cmd">${log}::trace</b> <b class="cmd"><a href="../../../../index.html#key226">remove</a></b> <i class="arg">procName</i> <span class="opt">?...?</span></a></dt>
<dd></dd>
<dt><a name="39"><b class="cmd">${log}::trace</b> <b class="cmd"><a href="../../../../index.html#key226">remove</a></b> <span class="opt">?-ns?</span> <i class="arg">nsName</i> <span class="opt">?...?</span></a></dt>
<dd><p>This command unregisters one or more procedures so that they will no
longer have trace logging performed, with the same matching rules as
that of the <b class="cmd"><a href="../../../../index.html#key70">trace</a></b> <b class="cmd">add</b> command.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">IMPLEMENTATION</a></h2>
<p>The logger package is implemented in such a way as to optimize (for
Tcl 8.4 and newer) log procedures which are disabled.  They are
aliased to a proc which has no body, which is compiled to a no op in
bytecode.  This should make the peformance hit minimal.  If you really
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
          puts &quot;$txt&quot;
          puts &quot;Caller: $caller&quot;
          puts &quot;Variables in callers scope:&quot;
          foreach {var value} $val {
          	puts &quot;$var = $value&quot;
          }
     }
     
     # install as logproc
     ${log}::logproc debug log_local_var
     </pre>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>logger</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key69">log</a>, <a href="../../../../index.html#key99">log level</a>, <a href="../../../../index.html#key97">logger</a>, <a href="../../../../index.html#key98">service</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>







<




|



|










450
451
452
453
454
455
456

457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
          puts &quot;$txt&quot;
          puts &quot;Caller: $caller&quot;
          puts &quot;Variables in callers scope:&quot;
          foreach {var value} $val {
          	puts &quot;$var = $value&quot;
          }
     }

     # install as logproc
     ${log}::logproc debug log_local_var
     </pre>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>logger</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key69">log</a>, <a href="../../../../index.html#key99">log level</a>, <a href="../../../../index.html#key97">logger</a>, <a href="../../../../index.html#key98">service</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/log/loggerAppender.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>logger::appender - Collection of predefined appenders for logger</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>logger::appender - Collection of predefined appenders for logger</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
contain the name of the procedure.</p></dd>
</dl></dd>
<dt><a name="2"><b class="cmd">::logger::appender::colorConsole</b> <b class="option">-level</b> <i class="arg">level</i> <b class="option">-service</b> <i class="arg">service</i> <span class="opt">?<i class="arg">options</i>...?</span></a></dt>
<dd><p>See <b class="cmd">::logger::appender::colorConsole</b> for a description of the
applicable options.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>logger</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key397">appender</a>, <a href="../../../../index.html#key97">logger</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 Aamer Akhter &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
contain the name of the procedure.</p></dd>
</dl></dd>
<dt><a name="2"><b class="cmd">::logger::appender::colorConsole</b> <b class="option">-level</b> <i class="arg">level</i> <b class="option">-service</b> <i class="arg">service</i> <span class="opt">?<i class="arg">options</i>...?</span></a></dt>
<dd><p>See <b class="cmd">::logger::appender::colorConsole</b> for a description of the
applicable options.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>logger</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key397">appender</a>, <a href="../../../../index.html#key97">logger</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 Aamer Akhter &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/log/loggerUtils.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>logger::utils - Utilities for logger</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>logger::utils - Utilities for logger</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
  logger::utils::applyAppender -appender console
  set log [logger::init applyAppender-3]
  ${log}::error &quot;this is an error&quot;
</pre>
</dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>logger</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key397">appender</a>, <a href="../../../../index.html#key97">logger</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 Aamer Akhter &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
  logger::utils::applyAppender -appender console
  set log [logger::init applyAppender-3]
  ${log}::error &quot;this is an error&quot;
</pre>
</dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>logger</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key397">appender</a>, <a href="../../../../index.html#key97">logger</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 Aamer Akhter &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/map/map_geocode_nominatim.html.

218
219
220
221
222
223
224
225
226
227
<div id="section3" class="section"><h2><a name="section3">References</a></h2>
<ol class="enumerated">
<li><p><a href="http://wiki.openstreetmap.org/wiki/Nominatim">http://wiki.openstreetmap.org/wiki/Nominatim</a></p></li>
<li><p><a href="http://open.mapquestapi.com/nominatim/">http://open.mapquestapi.com/nominatim/</a></p></li>
</ol>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key566">geocoding</a>, <a href="../../../../index.html#key506">http</a>, <a href="../../../../index.html#key201">location</a>, <a href="../../../../index.html#key204">map</a>, <a href="../../../../index.html#key565">nominatim</a>, <a href="../../../../index.html#key61">server</a>, <a href="../../../../index.html#key508">url</a></p>
</div>
</div></body></html>







|


218
219
220
221
222
223
224
225
226
227
<div id="section3" class="section"><h2><a name="section3">References</a></h2>
<ol class="enumerated">
<li><p><a href="http://wiki.openstreetmap.org/wiki/Nominatim">http://wiki.openstreetmap.org/wiki/Nominatim</a></p></li>
<li><p><a href="http://open.mapquestapi.com/nominatim/">http://open.mapquestapi.com/nominatim/</a></p></li>
</ol>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key566">geocoding</a>, <a href="../../../../index.html#key505">http</a>, <a href="../../../../index.html#key202">location</a>, <a href="../../../../index.html#key203">map</a>, <a href="../../../../index.html#key565">nominatim</a>, <a href="../../../../index.html#key61">server</a>, <a href="../../../../index.html#key508">url</a></p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/map/map_slippy.html.

276
277
278
279
280
281
282
283
284
285
</div>
<div id="section4" class="section"><h2><a name="section4">References</a></h2>
<ol class="enumerated">
<li><p><a href="http://wiki.openstreetmap.org/wiki/Main_Page">http://wiki.openstreetmap.org/wiki/Main_Page</a></p></li>
</ol>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key199">geodesy</a>, <a href="../../../../index.html#key203">geography</a>, <a href="../../../../index.html#key198">latitute</a>, <a href="../../../../index.html#key201">location</a>, <a href="../../../../index.html#key205">longitude</a>, <a href="../../../../index.html#key204">map</a>, <a href="../../../../index.html#key202">slippy</a>, <a href="../../../../index.html#key200">zoom</a></p>
</div>
</div></body></html>







|


276
277
278
279
280
281
282
283
284
285
</div>
<div id="section4" class="section"><h2><a name="section4">References</a></h2>
<ol class="enumerated">
<li><p><a href="http://wiki.openstreetmap.org/wiki/Main_Page">http://wiki.openstreetmap.org/wiki/Main_Page</a></p></li>
</ol>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key199">geodesy</a>, <a href="../../../../index.html#key204">geography</a>, <a href="../../../../index.html#key198">latitute</a>, <a href="../../../../index.html#key202">location</a>, <a href="../../../../index.html#key205">longitude</a>, <a href="../../../../index.html#key203">map</a>, <a href="../../../../index.html#key201">slippy</a>, <a href="../../../../index.html#key200">zoom</a></p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/map/map_slippy_cache.html.

193
194
195
196
197
198
199
200
201
202
</div>
<div id="section3" class="section"><h2><a name="section3">References</a></h2>
<ol class="enumerated">
<li><p><a href="http://wiki.openstreetmap.org/wiki/Main_Page">http://wiki.openstreetmap.org/wiki/Main_Page</a></p></li>
</ol>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key361">cache</a>, <a href="../../../../index.html#key362">filesystem</a>, <a href="../../../../index.html#key201">location</a>, <a href="../../../../index.html#key204">map</a>, <a href="../../../../index.html#key202">slippy</a>, <a href="../../../../index.html#key363">tile</a>, <a href="../../../../index.html#key200">zoom</a></p>
</div>
</div></body></html>







|


193
194
195
196
197
198
199
200
201
202
</div>
<div id="section3" class="section"><h2><a name="section3">References</a></h2>
<ol class="enumerated">
<li><p><a href="http://wiki.openstreetmap.org/wiki/Main_Page">http://wiki.openstreetmap.org/wiki/Main_Page</a></p></li>
</ol>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key361">cache</a>, <a href="../../../../index.html#key362">filesystem</a>, <a href="../../../../index.html#key202">location</a>, <a href="../../../../index.html#key203">map</a>, <a href="../../../../index.html#key201">slippy</a>, <a href="../../../../index.html#key363">tile</a>, <a href="../../../../index.html#key200">zoom</a></p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/map/map_slippy_fetcher.html.

182
183
184
185
186
187
188
189
190
191
</div>
<div id="section3" class="section"><h2><a name="section3">References</a></h2>
<ol class="enumerated">
<li><p><a href="http://wiki.openstreetmap.org/wiki/Main_Page">http://wiki.openstreetmap.org/wiki/Main_Page</a></p></li>
</ol>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key506">http</a>, <a href="../../../../index.html#key201">location</a>, <a href="../../../../index.html#key204">map</a>, <a href="../../../../index.html#key61">server</a>, <a href="../../../../index.html#key202">slippy</a>, <a href="../../../../index.html#key363">tile</a>, <a href="../../../../index.html#key508">url</a>, <a href="../../../../index.html#key200">zoom</a></p>
</div>
</div></body></html>







|


182
183
184
185
186
187
188
189
190
191
</div>
<div id="section3" class="section"><h2><a name="section3">References</a></h2>
<ol class="enumerated">
<li><p><a href="http://wiki.openstreetmap.org/wiki/Main_Page">http://wiki.openstreetmap.org/wiki/Main_Page</a></p></li>
</ol>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key505">http</a>, <a href="../../../../index.html#key202">location</a>, <a href="../../../../index.html#key203">map</a>, <a href="../../../../index.html#key61">server</a>, <a href="../../../../index.html#key201">slippy</a>, <a href="../../../../index.html#key363">tile</a>, <a href="../../../../index.html#key508">url</a>, <a href="../../../../index.html#key200">zoom</a></p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/mapproj/mapproj.html.

333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
<dd><p>Longitude of the point to be projected, in degrees.</p></dd>
<dt><i class="arg">phi</i></dt>
<dd><p>Latitude of the point to be projected, in degrees.</p></dd>
<dt><i class="arg">lambda_0</i></dt>
<dd><p>Longitude of the center of the sheet, in degrees.  For many projections,
this figure is also the reference meridian of the projection.</p></dd>
<dt><i class="arg">phi_0</i></dt>
<dd><p>Latitude of the center of the sheet, in degrees.  For the azimuthal 
projections, this figure is also the latitude of the center of the projection.</p></dd>
<dt><i class="arg">phi_1</i></dt>
<dd><p>Latitude of the first reference parallel, for projections that use reference
parallels.</p></dd>
<dt><i class="arg">phi_2</i></dt>
<dd><p>Latitude of the second reference parallel, for projections that use reference 
parallels.</p></dd>
<dt><i class="arg">x</i></dt>
<dd><p>X co-ordinate of a point on the map, in units of Earth radii.</p></dd>
<dt><i class="arg">y</i></dt>
<dd><p>Y co-ordinate of a point on the map, in units of Earth radii.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Results</a></h2>
<p>For all of the procedures whose names begin with 'to', the return value 
is a list comprising an <em>x</em> co-ordinate and a <em>y</em> co-ordinate.
The co-ordinates are relative to the center of the map sheet to be drawn,
measured in Earth radii at the reference location on the map.
For all of the functions whose names begin with 'from', the return value
is a list comprising the longitude and latitude, in degrees.</p>
</div>
<div id="section5" class="section"><h2><a name="section5">Choosing a projection</a></h2>
<p>This package offers a great many projections, because no single projection
is appropriate to all maps.  This section attempts to provide guidance
on how to choose a projection.</p>
<p>First, consider the type of data that you intend to display on the map.
If the data are <em>directional</em> (<em>e.g.,</em> winds, ocean currents, or 
magnetic fields) then you need to use a projection that preserves
angles; these are known as <em>conformal</em> projections.  Conformal
projections include the Mercator, the Albers azimuthal equal-area,
the stereographic, and the Peirce Quincuncial projection.  If the
data are <em>thematic</em>, describing properties of land or water, such
as temperature, population density, land use, or demographics; then
you need a projection that will show these data with the areas on the map
proportional to the areas in real life.  These so-called <em>equal area</em>
projections include the various cylindrical equal area projections,
the sinusoidal projection, the Lambert azimuthal equal-area projection, 
the Albers equal-area conic projection, and several of the world-map 
projections (Miller Cylindrical, Mollweide, Eckert IV, Eckert VI, Robinson,
and Hammer). If the significant factor in your data is distance from a
central point or line (such as air routes), then you will do best with
an <em>equidistant</em> projection such as <em>plate carr&eacute;e</em>,
Cassini, azimuthal equidistant, or conic equidistant.  If direction from 
a central point is a critical factor in your data (for instance,
air routes, radio antenna pointing), then you will almost surely want to
use one of the azimuthal projections. Appropriate choices are azimuthal
equidistant, azimuthal equal-area, stereographic, and perhaps orthographic.</p>
<p>Next, consider how much of the Earth your map will cover, and the general
shape of the area of interest.  For maps of the entire Earth,
the cylindrical equal area, Eckert IV and VI, Mollweide, Robinson, and Hammer
projections are good overall choices.  The Mercator projection is traditional,
but the extreme distortions of area at high latitudes make it
a poor choice unless a conformal projection is required. The Peirce
projection is a better choice of conformal projection, having less distortion
of landforms.  The Miller Cylindrical is a compromise designed to give 
shapes similar to the traditional Mercator, but with less polar stretching.
The Peirce Quincuncial projection shows all the continents with acceptable
distortion if a reference meridian close to +20 degrees is chosen.
The Robinson projection yields attractive maps for things like political
divisions, but should be avoided in presenting scientific data, since other
projections have moe useful geometric properties.</p>
<p>If the map will cover a hemisphere, then choose stereographic, 
azimuthal-equidistant, Hammer, or Mollweide projections; these all project
the hemisphere into a circle.</p>
<p>If the map will cover a large area (at least a few hundred km on a side), 
but less than
a hemisphere, then you have several choices.  Azimuthal projections
are usually good (choose stereographic, azimuthal equidistant, or
Lambert azimuthal equal-area according to whether shapes, distances from 
a central point, or areas are important).  Azimuthal projections (and possibly 
the Cassini projection) are the only
really good choices for mapping the polar regions.</p>
<p>If the large area is in one of the temperate zones and is round or has
a primarily east-west extent, then the conic projections are good choices.
Choose the Lambert conformal conic, the conic equidistant, or the Albers
equal-area conic according to whether shape, distance, or area are the
most important parameters.  For any of these, the reference parallels
should be chosen at approximately 1/6 and 5/6 of the range of latitudes
to be displayed.  For instance, maps of the 48 coterminous United States
are attractive with reference parallels of 28.5 and 45.5 degrees.</p>
<p>If the large area is equatorial and is round or has a primarily east-west
extent, then the Mercator projection is a good choice for a conformal 
projection; Lambert cylindrical equal-area and sinusoidal projections are
good equal-area projections; and the <em>plate carr&eacute;e</em> is a
good equidistant projection.</p>
<p>Large areas having a primarily North-South aspect, particularly those
spanning the Equator, need some other choices.  The Cassini projection
is a good choice for an equidistant projection (for instance, a Cassini
projection with a central meridian of 80 degrees West produces an







|





|








|











|









|
|




|











|






|


|



|
|











|







333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
<dd><p>Longitude of the point to be projected, in degrees.</p></dd>
<dt><i class="arg">phi</i></dt>
<dd><p>Latitude of the point to be projected, in degrees.</p></dd>
<dt><i class="arg">lambda_0</i></dt>
<dd><p>Longitude of the center of the sheet, in degrees.  For many projections,
this figure is also the reference meridian of the projection.</p></dd>
<dt><i class="arg">phi_0</i></dt>
<dd><p>Latitude of the center of the sheet, in degrees.  For the azimuthal
projections, this figure is also the latitude of the center of the projection.</p></dd>
<dt><i class="arg">phi_1</i></dt>
<dd><p>Latitude of the first reference parallel, for projections that use reference
parallels.</p></dd>
<dt><i class="arg">phi_2</i></dt>
<dd><p>Latitude of the second reference parallel, for projections that use reference
parallels.</p></dd>
<dt><i class="arg">x</i></dt>
<dd><p>X co-ordinate of a point on the map, in units of Earth radii.</p></dd>
<dt><i class="arg">y</i></dt>
<dd><p>Y co-ordinate of a point on the map, in units of Earth radii.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Results</a></h2>
<p>For all of the procedures whose names begin with 'to', the return value
is a list comprising an <em>x</em> co-ordinate and a <em>y</em> co-ordinate.
The co-ordinates are relative to the center of the map sheet to be drawn,
measured in Earth radii at the reference location on the map.
For all of the functions whose names begin with 'from', the return value
is a list comprising the longitude and latitude, in degrees.</p>
</div>
<div id="section5" class="section"><h2><a name="section5">Choosing a projection</a></h2>
<p>This package offers a great many projections, because no single projection
is appropriate to all maps.  This section attempts to provide guidance
on how to choose a projection.</p>
<p>First, consider the type of data that you intend to display on the map.
If the data are <em>directional</em> (<em>e.g.,</em> winds, ocean currents, or
magnetic fields) then you need to use a projection that preserves
angles; these are known as <em>conformal</em> projections.  Conformal
projections include the Mercator, the Albers azimuthal equal-area,
the stereographic, and the Peirce Quincuncial projection.  If the
data are <em>thematic</em>, describing properties of land or water, such
as temperature, population density, land use, or demographics; then
you need a projection that will show these data with the areas on the map
proportional to the areas in real life.  These so-called <em>equal area</em>
projections include the various cylindrical equal area projections,
the sinusoidal projection, the Lambert azimuthal equal-area projection,
the Albers equal-area conic projection, and several of the world-map
projections (Miller Cylindrical, Mollweide, Eckert IV, Eckert VI, Robinson,
and Hammer). If the significant factor in your data is distance from a
central point or line (such as air routes), then you will do best with
an <em>equidistant</em> projection such as <em>plate carr&eacute;e</em>,
Cassini, azimuthal equidistant, or conic equidistant.  If direction from
a central point is a critical factor in your data (for instance,
air routes, radio antenna pointing), then you will almost surely want to
use one of the azimuthal projections. Appropriate choices are azimuthal
equidistant, azimuthal equal-area, stereographic, and perhaps orthographic.</p>
<p>Next, consider how much of the Earth your map will cover, and the general
shape of the area of interest.  For maps of the entire Earth,
the cylindrical equal area, Eckert IV and VI, Mollweide, Robinson, and Hammer
projections are good overall choices.  The Mercator projection is traditional,
but the extreme distortions of area at high latitudes make it
a poor choice unless a conformal projection is required. The Peirce
projection is a better choice of conformal projection, having less distortion
of landforms.  The Miller Cylindrical is a compromise designed to give
shapes similar to the traditional Mercator, but with less polar stretching.
The Peirce Quincuncial projection shows all the continents with acceptable
distortion if a reference meridian close to +20 degrees is chosen.
The Robinson projection yields attractive maps for things like political
divisions, but should be avoided in presenting scientific data, since other
projections have moe useful geometric properties.</p>
<p>If the map will cover a hemisphere, then choose stereographic,
azimuthal-equidistant, Hammer, or Mollweide projections; these all project
the hemisphere into a circle.</p>
<p>If the map will cover a large area (at least a few hundred km on a side),
but less than
a hemisphere, then you have several choices.  Azimuthal projections
are usually good (choose stereographic, azimuthal equidistant, or
Lambert azimuthal equal-area according to whether shapes, distances from
a central point, or areas are important).  Azimuthal projections (and possibly
the Cassini projection) are the only
really good choices for mapping the polar regions.</p>
<p>If the large area is in one of the temperate zones and is round or has
a primarily east-west extent, then the conic projections are good choices.
Choose the Lambert conformal conic, the conic equidistant, or the Albers
equal-area conic according to whether shape, distance, or area are the
most important parameters.  For any of these, the reference parallels
should be chosen at approximately 1/6 and 5/6 of the range of latitudes
to be displayed.  For instance, maps of the 48 coterminous United States
are attractive with reference parallels of 28.5 and 45.5 degrees.</p>
<p>If the large area is equatorial and is round or has a primarily east-west
extent, then the Mercator projection is a good choice for a conformal
projection; Lambert cylindrical equal-area and sinusoidal projections are
good equal-area projections; and the <em>plate carr&eacute;e</em> is a
good equidistant projection.</p>
<p>Large areas having a primarily North-South aspect, particularly those
spanning the Equator, need some other choices.  The Cassini projection
is a good choice for an equidistant projection (for instance, a Cassini
projection with a central meridian of 80 degrees West produces an
444
445
446
447
448
449
450
451
452
453
454
455
456
map on which all great circles (the shortest distance between
two points on the Earth's surface) are rendered as straight lines.
While this projection is useful for navigational planning, it
has extreme distortions of shape and area, and can display
only a limited area of the Earth (substantially less than a hemisphere).</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key199">geodesy</a>, <a href="../../../../index.html#key204">map</a>, <a href="../../../../index.html#key620">projection</a></p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Kevin B. Kenny &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|





444
445
446
447
448
449
450
451
452
453
454
455
456
map on which all great circles (the shortest distance between
two points on the Earth's surface) are rendered as straight lines.
While this projection is useful for navigational planning, it
has extreme distortions of shape and area, and can display
only a limited area of the Earth (substantially less than a hemisphere).</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key199">geodesy</a>, <a href="../../../../index.html#key203">map</a>, <a href="../../../../index.html#key620">projection</a></p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Kevin B. Kenny &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/math/bigfloat.html.

121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<li class="section"><a href="#section4">COMPARISONS</a></li>
<li class="section"><a href="#section5">ANALYSIS</a></li>
<li class="section"><a href="#section6">ROUNDING</a></li>
<li class="section"><a href="#section7">PRECISION</a></li>
<li class="section"><a href="#section8">WHAT ABOUT TCL 8.4 ?</a></li>
<li class="section"><a href="#section9">NAMESPACES AND OTHER PACKAGES</a></li>
<li class="section"><a href="#section10">EXAMPLES</a></li>
<li class="section"><a href="#section11">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<li class="section"><a href="#section4">COMPARISONS</a></li>
<li class="section"><a href="#section5">ANALYSIS</a></li>
<li class="section"><a href="#section6">ROUNDING</a></li>
<li class="section"><a href="#section7">PRECISION</a></li>
<li class="section"><a href="#section8">WHAT ABOUT TCL 8.4 ?</a></li>
<li class="section"><a href="#section9">NAMESPACES AND OTHER PACKAGES</a></li>
<li class="section"><a href="#section10">EXAMPLES</a></li>
<li class="section"><a href="#section11">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
<li><a href="#10"><b class="cmd">mul</b> <i class="arg">x</i> <i class="arg">y</i></a></li>
<li><a href="#11"><b class="cmd">div</b> <i class="arg">x</i> <i class="arg">y</i></a></li>
<li><a href="#12"><b class="cmd">mod</b> <i class="arg">x</i> <i class="arg">y</i></a></li>
<li><a href="#13"><b class="cmd">abs</b> <i class="arg">x</i></a></li>
<li><a href="#14"><b class="cmd">opp</b> <i class="arg">x</i></a></li>
<li><a href="#15"><b class="cmd">pow</b> <i class="arg">x</i> <i class="arg">n</i></a></li>
<li><a href="#16"><b class="cmd">iszero</b> <i class="arg">x</i></a></li>
<li><a href="#17"><b class="cmd"><a href="../../../../index.html#key540">equal</a></b> <i class="arg">x</i> <i class="arg">y</i></a></li>
<li><a href="#18"><b class="cmd">compare</b> <i class="arg">x</i> <i class="arg">y</i></a></li>
<li><a href="#19"><b class="cmd">sqrt</b> <i class="arg">x</i></a></li>
<li><a href="#20"><b class="cmd"><a href="../log/log.html">log</a></b> <i class="arg">x</i></a></li>
<li><a href="#21"><b class="cmd">exp</b> <i class="arg">x</i></a></li>
<li><a href="#22"><b class="cmd">cos</b> <i class="arg">x</i></a></li>
<li><a href="#23"><b class="cmd">sin</b> <i class="arg">x</i></a></li>
<li><a href="#24"><b class="cmd">tan</b> <i class="arg">x</i></a></li>
<li><a href="#25"><b class="cmd">cotan</b> <i class="arg">x</i></a></li>
<li><a href="#26"><b class="cmd">acos</b> <i class="arg">x</i></a></li>
<li><a href="#27"><b class="cmd">asin</b> <i class="arg">x</i></a></li>
<li><a href="#28"><b class="cmd">atan</b> <i class="arg">x</i></a></li>
<li><a href="#29"><b class="cmd">cosh</b> <i class="arg">x</i></a></li>
<li><a href="#30"><b class="cmd">sinh</b> <i class="arg">x</i></a></li>
<li><a href="#31"><b class="cmd">tanh</b> <i class="arg">x</i></a></li>
<li><a href="#32"><b class="cmd"><a href="../../../../index.html#key793">pi</a></b> <i class="arg">n</i></a></li>
<li><a href="#33"><b class="cmd">rad2deg</b> <i class="arg">radians</i></a></li>
<li><a href="#34"><b class="cmd">deg2rad</b> <i class="arg">degrees</i></a></li>
<li><a href="#35"><b class="cmd">round</b> <i class="arg">x</i></a></li>
<li><a href="#36"><b class="cmd">ceil</b> <i class="arg">x</i></a></li>
<li><a href="#37"><b class="cmd">floor</b> <i class="arg">x</i></a></li>
</ul>
</div>







|














|







150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
<li><a href="#10"><b class="cmd">mul</b> <i class="arg">x</i> <i class="arg">y</i></a></li>
<li><a href="#11"><b class="cmd">div</b> <i class="arg">x</i> <i class="arg">y</i></a></li>
<li><a href="#12"><b class="cmd">mod</b> <i class="arg">x</i> <i class="arg">y</i></a></li>
<li><a href="#13"><b class="cmd">abs</b> <i class="arg">x</i></a></li>
<li><a href="#14"><b class="cmd">opp</b> <i class="arg">x</i></a></li>
<li><a href="#15"><b class="cmd">pow</b> <i class="arg">x</i> <i class="arg">n</i></a></li>
<li><a href="#16"><b class="cmd">iszero</b> <i class="arg">x</i></a></li>
<li><a href="#17"><b class="cmd"><a href="../../../../index.html#key539">equal</a></b> <i class="arg">x</i> <i class="arg">y</i></a></li>
<li><a href="#18"><b class="cmd">compare</b> <i class="arg">x</i> <i class="arg">y</i></a></li>
<li><a href="#19"><b class="cmd">sqrt</b> <i class="arg">x</i></a></li>
<li><a href="#20"><b class="cmd"><a href="../log/log.html">log</a></b> <i class="arg">x</i></a></li>
<li><a href="#21"><b class="cmd">exp</b> <i class="arg">x</i></a></li>
<li><a href="#22"><b class="cmd">cos</b> <i class="arg">x</i></a></li>
<li><a href="#23"><b class="cmd">sin</b> <i class="arg">x</i></a></li>
<li><a href="#24"><b class="cmd">tan</b> <i class="arg">x</i></a></li>
<li><a href="#25"><b class="cmd">cotan</b> <i class="arg">x</i></a></li>
<li><a href="#26"><b class="cmd">acos</b> <i class="arg">x</i></a></li>
<li><a href="#27"><b class="cmd">asin</b> <i class="arg">x</i></a></li>
<li><a href="#28"><b class="cmd">atan</b> <i class="arg">x</i></a></li>
<li><a href="#29"><b class="cmd">cosh</b> <i class="arg">x</i></a></li>
<li><a href="#30"><b class="cmd">sinh</b> <i class="arg">x</i></a></li>
<li><a href="#31"><b class="cmd">tanh</b> <i class="arg">x</i></a></li>
<li><a href="#32"><b class="cmd"><a href="../../../../index.html#key792">pi</a></b> <i class="arg">n</i></a></li>
<li><a href="#33"><b class="cmd">rad2deg</b> <i class="arg">radians</i></a></li>
<li><a href="#34"><b class="cmd">deg2rad</b> <i class="arg">degrees</i></a></li>
<li><a href="#35"><b class="cmd">round</b> <i class="arg">x</i></a></li>
<li><a href="#36"><b class="cmd">ceil</b> <i class="arg">x</i></a></li>
<li><a href="#37"><b class="cmd">floor</b> <i class="arg">x</i></a></li>
</ul>
</div>
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
puts [tostr [fromstr 0.002]] ;# 0.e-2
</pre>
<p>See <span class="sectref"><a href="#section7">PRECISION</a></span> for that matter.
See also <b class="cmd">iszero</b> for how to detect zeros, which is useful when performing a division.</p></dd>
<dt><a name="3"><b class="cmd">fromdouble</b> <i class="arg">double</i> <span class="opt">?<i class="arg">decimals</i>?</span></a></dt>
<dd><p>Converts a double (a simple floating-point value) to a BigFloat, with
exactly <i class="arg">decimals</i> digits.  Without the <i class="arg">decimals</i> argument,
it behaves like <b class="cmd">fromstr</b>. 
Here, the only important feature you might care of is the ability
to create BigFloats with a fixed number of <i class="arg">decimals</i>.</p>
<pre class="example">
tostr [fromstr 1.111 4]
# returns : 1.111000 (3 zeros)
tostr [fromdouble 1.111 4]
# returns : 1.111







|







251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
puts [tostr [fromstr 0.002]] ;# 0.e-2
</pre>
<p>See <span class="sectref"><a href="#section7">PRECISION</a></span> for that matter.
See also <b class="cmd">iszero</b> for how to detect zeros, which is useful when performing a division.</p></dd>
<dt><a name="3"><b class="cmd">fromdouble</b> <i class="arg">double</i> <span class="opt">?<i class="arg">decimals</i>?</span></a></dt>
<dd><p>Converts a double (a simple floating-point value) to a BigFloat, with
exactly <i class="arg">decimals</i> digits.  Without the <i class="arg">decimals</i> argument,
it behaves like <b class="cmd">fromstr</b>.
Here, the only important feature you might care of is the ability
to create BigFloats with a fixed number of <i class="arg">decimals</i>.</p>
<pre class="example">
tostr [fromstr 1.111 4]
# returns : 1.111000 (3 zeros)
tostr [fromdouble 1.111 4]
# returns : 1.111
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
tostr  $a ; # 0.e-2
iszero $a ; # false
set a [fromstr 0.001] ; # uncertainty interval : 0.000, 0.002
tostr  $a ; # 0.e-2
iszero $a ; # true
</pre>
</dd>
<dt><a name="17"><b class="cmd"><a href="../../../../index.html#key540">equal</a></b> <i class="arg">x</i> <i class="arg">y</i></a></dt>
<dd><p>Returns 1 if <em>x</em> and <em>y</em> are equal, 0 elsewhere.</p></dd>
<dt><a name="18"><b class="cmd">compare</b> <i class="arg">x</i> <i class="arg">y</i></a></dt>
<dd><p>Returns 0 if both BigFloat arguments are equal,
1 if <em>x</em> is greater than <em>y</em>,
and -1 if <em>x</em> is lower than <em>y</em>.
You would not be able to compare an integer to a BigFloat :
the operands should be both BigFloats, or both integers.</p></dd>







|







333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
tostr  $a ; # 0.e-2
iszero $a ; # false
set a [fromstr 0.001] ; # uncertainty interval : 0.000, 0.002
tostr  $a ; # 0.e-2
iszero $a ; # true
</pre>
</dd>
<dt><a name="17"><b class="cmd"><a href="../../../../index.html#key539">equal</a></b> <i class="arg">x</i> <i class="arg">y</i></a></dt>
<dd><p>Returns 1 if <em>x</em> and <em>y</em> are equal, 0 elsewhere.</p></dd>
<dt><a name="18"><b class="cmd">compare</b> <i class="arg">x</i> <i class="arg">y</i></a></dt>
<dd><p>Returns 0 if both BigFloat arguments are equal,
1 if <em>x</em> is greater than <em>y</em>,
and -1 if <em>x</em> is lower than <em>y</em>.
You would not be able to compare an integer to a BigFloat :
the operands should be both BigFloats, or both integers.</p></dd>
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
<dt><a name="30"><b class="cmd">sinh</b> <i class="arg">x</i></a></dt>
<dd></dd>
<dt><a name="31"><b class="cmd">tanh</b> <i class="arg">x</i></a></dt>
<dd><p>The above functions return, respectively, the following :
square root, logarithm, exponential, cosine, sine,
tangent, cotangent, arc cosine, arc sine, arc tangent, hyperbolic
cosine, hyperbolic sine, hyperbolic tangent, of a BigFloat named <em>x</em>.</p></dd>
<dt><a name="32"><b class="cmd"><a href="../../../../index.html#key793">pi</a></b> <i class="arg">n</i></a></dt>
<dd><p>Returns a BigFloat representing the Pi constant with <em>n</em> digits after the dot.
<em>n</em> is a positive integer.</p></dd>
<dt><a name="33"><b class="cmd">rad2deg</b> <i class="arg">radians</i></a></dt>
<dd></dd>
<dt><a name="34"><b class="cmd">deg2rad</b> <i class="arg">degrees</i></a></dt>
<dd><p><i class="arg">radians</i> - angle expressed in radians (BigFloat)</p>
<p><i class="arg">degrees</i> - angle expressed in degrees (BigFloat)</p>







|







374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
<dt><a name="30"><b class="cmd">sinh</b> <i class="arg">x</i></a></dt>
<dd></dd>
<dt><a name="31"><b class="cmd">tanh</b> <i class="arg">x</i></a></dt>
<dd><p>The above functions return, respectively, the following :
square root, logarithm, exponential, cosine, sine,
tangent, cotangent, arc cosine, arc sine, arc tangent, hyperbolic
cosine, hyperbolic sine, hyperbolic tangent, of a BigFloat named <em>x</em>.</p></dd>
<dt><a name="32"><b class="cmd"><a href="../../../../index.html#key792">pi</a></b> <i class="arg">n</i></a></dt>
<dd><p>Returns a BigFloat representing the Pi constant with <em>n</em> digits after the dot.
<em>n</em> is a positive integer.</p></dd>
<dt><a name="33"><b class="cmd">rad2deg</b> <i class="arg">radians</i></a></dt>
<dd></dd>
<dt><a name="34"><b class="cmd">deg2rad</b> <i class="arg">degrees</i></a></dt>
<dd><p><i class="arg">radians</i> - angle expressed in radians (BigFloat)</p>
<p><i class="arg">degrees</i> - angle expressed in degrees (BigFloat)</p>
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
holds its uncertainty as 1 at the level of the last digit.</p></li>
<li><p>During computations, the uncertainty of each result
is internally computed the closest to the reality, thus saving the memory used.</p></li>
<li><p>When converting back to string, the digits that are printed
are not subject to uncertainty. However, some rounding is done, as not doing so
causes severe problems.</p></li>
</ul>
<p>Uncertainties are kept in the internal representation of the number ; 
it is recommended to use <b class="cmd">tostr</b> only for outputting data (on the screen or in a file),
and NEVER call <b class="cmd">fromstr</b> with the result of <b class="cmd">tostr</b>.
It is better to always keep operands in their internal representation.
Due to the internals of this library, the uncertainty interval may be slightly
wider than expected, but this should not cause false digits.</p>
<p>Now you may ask this question : What precision am I going to get
after calling add, sub, mul or div?
First you set a number from the string representation and,
by the way, its uncertainty is set:</p>
<pre class="example">
set a [fromstr 1.230]
# $a belongs to [1.229, 1.231]
set a [fromstr 1.000]
# $a belongs to [0.999, 1.001]
# $a has a relative uncertainty of 0.1% : 0.001(the uncertainty)/1.000(the medium value)
</pre>
<p>The uncertainty of the sum, or the difference, of two numbers, is the sum 
of their respective uncertainties.</p>
<pre class="example">
set a [fromstr 1.230]
set b [fromstr 2.340]
set sum [add $a $b]]
# the result is : [3.568, 3.572] (the last digit is known with an uncertainty of 2)
tostr $sum ; # 3.57
</pre>
<p>But when, for example, we add or substract an integer to a BigFloat, 
the relative uncertainty of the result is unchanged. So it is desirable 
not to convert integers to BigFloats:</p>
<pre class="example">
set a [fromstr 0.999999999]
# now something dangerous
set b [fromstr 2.000]
# the result has only 3 digits
tostr [add $a $b]







|
















|








|
|







408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
holds its uncertainty as 1 at the level of the last digit.</p></li>
<li><p>During computations, the uncertainty of each result
is internally computed the closest to the reality, thus saving the memory used.</p></li>
<li><p>When converting back to string, the digits that are printed
are not subject to uncertainty. However, some rounding is done, as not doing so
causes severe problems.</p></li>
</ul>
<p>Uncertainties are kept in the internal representation of the number ;
it is recommended to use <b class="cmd">tostr</b> only for outputting data (on the screen or in a file),
and NEVER call <b class="cmd">fromstr</b> with the result of <b class="cmd">tostr</b>.
It is better to always keep operands in their internal representation.
Due to the internals of this library, the uncertainty interval may be slightly
wider than expected, but this should not cause false digits.</p>
<p>Now you may ask this question : What precision am I going to get
after calling add, sub, mul or div?
First you set a number from the string representation and,
by the way, its uncertainty is set:</p>
<pre class="example">
set a [fromstr 1.230]
# $a belongs to [1.229, 1.231]
set a [fromstr 1.000]
# $a belongs to [0.999, 1.001]
# $a has a relative uncertainty of 0.1% : 0.001(the uncertainty)/1.000(the medium value)
</pre>
<p>The uncertainty of the sum, or the difference, of two numbers, is the sum
of their respective uncertainties.</p>
<pre class="example">
set a [fromstr 1.230]
set b [fromstr 2.340]
set sum [add $a $b]]
# the result is : [3.568, 3.572] (the last digit is known with an uncertainty of 2)
tostr $sum ; # 3.57
</pre>
<p>But when, for example, we add or substract an integer to a BigFloat,
the relative uncertainty of the result is unchanged. So it is desirable
not to convert integers to BigFloats:</p>
<pre class="example">
set a [fromstr 0.999999999]
# now something dangerous
set b [fromstr 2.000]
# the result has only 3 digits
tostr [add $a $b]
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
to the cos function:</p>
<pre class="example">
puts [tostr [cos [fromstr 0. 10]]]; # -&gt; 1.000000000
puts [tostr [cos [fromstr 0. 5]]]; # -&gt; 1.0000
puts [tostr [cos [fromstr 0e-10]]]; # -&gt; 1.000000000
puts [tostr [cos [fromstr 1e-10]]]; # -&gt; 1.000000000
</pre>
<p>BigFloats with different internal representations may be converted 
to the same string.</p>
<p>For most analysis functions (cosine, square root, logarithm, etc.), determining the precision
of the result is difficult.
It seems however that in many cases, the loss of precision in the result
is of one or two digits.
There are some exceptions : for example,</p>
<pre class="example">







|







467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
to the cos function:</p>
<pre class="example">
puts [tostr [cos [fromstr 0. 10]]]; # -&gt; 1.000000000
puts [tostr [cos [fromstr 0. 5]]]; # -&gt; 1.0000
puts [tostr [cos [fromstr 0e-10]]]; # -&gt; 1.000000000
puts [tostr [cos [fromstr 1e-10]]]; # -&gt; 1.000000000
</pre>
<p>BigFloats with different internal representations may be converted
to the same string.</p>
<p>For most analysis functions (cosine, square root, logarithm, etc.), determining the precision
of the result is difficult.
It seems however that in many cases, the loss of precision in the result
is of one or two digits.
There are some exceptions : for example,</p>
<pre class="example">
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
<pre class="example">
namespace import ::math::bigfloat::*
</pre>
<p>If you matter much about avoiding names conflicts,
I considere it should be resolved by the following :</p>
<pre class="example">
package require math::bigfloat
# beware: namespace ensembles are not available in Tcl 8.4 
namespace eval ::math::bigfloat {namespace ensemble create -command ::bigfloat}
# from now, the bigfloat command takes as subcommands all original math::bigfloat::* commands
set a [bigfloat sub [bigfloat fromstr 2.000] [bigfloat fromstr 0.530]]
puts [bigfloat tostr $a]
</pre>
</div>
<div id="section10" class="section"><h2><a name="section10">EXAMPLES</a></h2>







|







520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
<pre class="example">
namespace import ::math::bigfloat::*
</pre>
<p>If you matter much about avoiding names conflicts,
I considere it should be resolved by the following :</p>
<pre class="example">
package require math::bigfloat
# beware: namespace ensembles are not available in Tcl 8.4
namespace eval ::math::bigfloat {namespace ensemble create -command ::bigfloat}
# from now, the bigfloat command takes as subcommands all original math::bigfloat::* commands
set a [bigfloat sub [bigfloat fromstr 2.000] [bigfloat fromstr 0.530]]
puts [bigfloat tostr $a]
</pre>
</div>
<div id="section10" class="section"><h2><a name="section10">EXAMPLES</a></h2>
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
set opposite3 [deg2rad [degree-angle 51  0 50 500]]
set sinProduct [mul [sin $angle1] [sin $angle2]]
set cosProduct [mul [cos $angle1] [cos $angle2]]
set angle3 [asin [add [mul $sinProduct [cos $opposite3]] $cosProduct]]
puts &quot;angle3 : [tostr [rad2deg $angle3]]&quot;
</pre>
</div>
<div id="section11" class="section"><h2><a name="section11">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: bignum :: float</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key731">computations</a>, <a href="../../../../index.html#key372">floating-point</a>, <a href="../../../../index.html#key730">interval</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key268">multiprecision</a>, <a href="../../../../index.html#key269">tcl</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004-2008, by Stephane Arnold &lt;stephanearnold at yahoo dot fr&gt;</p>
</div>
</div></body></html>







|



|




|








554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
set opposite3 [deg2rad [degree-angle 51  0 50 500]]
set sinProduct [mul [sin $angle1] [sin $angle2]]
set cosProduct [mul [cos $angle1] [cos $angle2]]
set angle3 [asin [add [mul $sinProduct [cos $opposite3]] $cosProduct]]
puts &quot;angle3 : [tostr [rad2deg $angle3]]&quot;
</pre>
</div>
<div id="section11" class="section"><h2><a name="section11">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: bignum :: float</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key731">computations</a>, <a href="../../../../index.html#key372">floating-point</a>, <a href="../../../../index.html#key730">interval</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key269">multiprecision</a>, <a href="../../../../index.html#key268">tcl</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004-2008, by Stephane Arnold &lt;stephanearnold at yahoo dot fr&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/math/bignum.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">EXAMPLES</a></li>
<li class="section"><a href="#section3">API</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">EXAMPLES</a></li>
<li class="section"><a href="#section3">API</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
<dd><p>Return true if the bit at the <em>bit</em> position of <em>bignum</em>
is on, otherwise false is returned. If <em>bit</em> is out of
range, it is considered as set to zero.</p></dd>
<dt><a name="34"><b class="cmd">::math::bignum::bits</b> <i class="arg">bignum</i></a></dt>
<dd><p>Return the number of bits needed to represent bignum in radix 2.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: bignum</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key267">bignums</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key268">multiprecision</a>, <a href="../../../../index.html#key269">tcl</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004 Salvatore Sanfilippo &lt;antirez at invece dot org&gt;<br>
Copyright &copy; 2004 Arjen Markus &lt;arjenmarkus at users dot sourceforge dot net&gt;</p>
</div>
</div></body></html>







|



|




|









327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
<dd><p>Return true if the bit at the <em>bit</em> position of <em>bignum</em>
is on, otherwise false is returned. If <em>bit</em> is out of
range, it is considered as set to zero.</p></dd>
<dt><a name="34"><b class="cmd">::math::bignum::bits</b> <i class="arg">bignum</i></a></dt>
<dd><p>Return the number of bits needed to represent bignum in radix 2.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: bignum</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key267">bignums</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key269">multiprecision</a>, <a href="../../../../index.html#key268">tcl</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004 Salvatore Sanfilippo &lt;antirez at invece dot org&gt;<br>
Copyright &copy; 2004 Arjen Markus &lt;arjenmarkus at users dot sourceforge dot net&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/math/calculus.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PROCEDURES</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PROCEDURES</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
   set Diff   1.0e-2
   set decay  0.0001
   set length 100.0
   set y [::math::calculus::boundaryValueSecondOrder \
      coeffs force {0.0 1.0} [list $length 0.0] 100]
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: calculus</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>romberg</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>







|



|







450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
   set Diff   1.0e-2
   set decay  0.0001
   set length 100.0
   set y [::math::calculus::boundaryValueSecondOrder \
      coeffs force {0.0 1.0} [list $length 0.0] 100]
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: calculus</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>romberg</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>

Changes to embedded/www/tcllib/files/modules/math/combinatorics.html.

112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.2</b></li>







|







112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.2</b></li>
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
  t**(x-1)*exp(-t) dt
</pre>
<p>The approximation used in the Tcl Math Library is from Lanczos,
<em>ISIAM J. Numerical Analysis, series B,</em> volume 1, p. 86.
For &quot;<b class="variable">x</b> &gt; 1&quot;, the absolute error of the result is claimed to be
smaller than 5.5*10**-10 -- that is, the resulting value of Gamma when</p>
<pre class="example">
  exp( ln_Gamma( x) ) 
</pre>
<p>is computed is expected to be precise to better than nine significant
figures.</p></dd>
<dt><a name="2"><b class="cmd">::math::factorial</b> <i class="arg">x</i></a></dt>
<dd><p>Returns the factorial of the argument <i class="arg">x</i>.</p>
<p>For integer <i class="arg">x</i>, 0 &lt;= <i class="arg">x</i> &lt;= 12, an exact integer result is
returned.</p>







|







149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
  t**(x-1)*exp(-t) dt
</pre>
<p>The approximation used in the Tcl Math Library is from Lanczos,
<em>ISIAM J. Numerical Analysis, series B,</em> volume 1, p. 86.
For &quot;<b class="variable">x</b> &gt; 1&quot;, the absolute error of the result is claimed to be
smaller than 5.5*10**-10 -- that is, the resulting value of Gamma when</p>
<pre class="example">
  exp( ln_Gamma( x) )
</pre>
<p>is computed is expected to be precise to better than nine significant
figures.</p></dd>
<dt><a name="2"><b class="cmd">::math::factorial</b> <i class="arg">x</i></a></dt>
<dd><p>Returns the factorial of the argument <i class="arg">x</i>.</p>
<p>For integer <i class="arg">x</i>, 0 &lt;= <i class="arg">x</i> &lt;= 12, an exact integer result is
returned.</p>
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
   Beta(z,w) = Beta(w,z) = Gamma(z) * Gamma(w) / Gamma(z+w)
</pre>
<p>Results are returned as a floating point number precise to better than
nine significant digits provided that <i class="arg">w</i> and <i class="arg">z</i> are both at
least 1.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
</div></body></html>







|



|







186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
   Beta(z,w) = Beta(w,z) = Gamma(z) * Gamma(w) / Gamma(z+w)
</pre>
<p>Results are returned as a floating point number precise to better than
nine significant digits provided that <i class="arg">w</i> and <i class="arg">z</i> are both at
least 1.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/math/constants.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PROCEDURES</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PROCEDURES</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
<dd><p>Import the constants whose names are given as arguments</p></dd>
<dt><a name="2"><b class="cmd">::math::constants::print-constants</b> <i class="arg">args</i></a></dt>
<dd><p>Print the constants whose names are given as arguments on the screen
(name, value and description) or, if no arguments are given, print all
defined constants. This is mainly a convenience procedure.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: constants</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key590">constants</a>, <a href="../../../../index.html#key794">degrees</a>, <a href="../../../../index.html#key792">e</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key793">pi</a>, <a href="../../../../index.html#key591">radians</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004 Arjen Markus &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
<dd><p>Import the constants whose names are given as arguments</p></dd>
<dt><a name="2"><b class="cmd">::math::constants::print-constants</b> <i class="arg">args</i></a></dt>
<dd><p>Print the constants whose names are given as arguments on the screen
(name, value and description) or, if no arguments are given, print all
defined constants. This is mainly a convenience procedure.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: constants</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key590">constants</a>, <a href="../../../../index.html#key794">degrees</a>, <a href="../../../../index.html#key793">e</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key792">pi</a>, <a href="../../../../index.html#key591">radians</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004 Arjen Markus &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/math/decimal.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">EXAMPLES</a></li>
<li class="section"><a href="#section3">API</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">EXAMPLES</a></li>
<li class="section"><a href="#section3">API</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
<dt><a name="36"><b class="cmd">::math::decimal::round_ceiling</b> <i class="arg">decimal</i> <i class="arg">digits</i></a></dt>
<dd><p>Rounds <em>decimal</em> to <em>digits</em> number of decimal points with the following rules: Round toward Infinity</p></dd>
<dt><a name="37"><b class="cmd">::math::decimal::round_05up</b> <i class="arg">decimal</i> <i class="arg">digits</i></a></dt>
<dd><p>Rounds <em>decimal</em> to <em>digits</em> number of decimal points with the following rules: Round zero or five away from 0. The same as round-up, except that rounding up only occurs if the digit to be rounded up is 0 or 5, and after overflow
the result is the same as for round-down.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>Decimal</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key743">decimal</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key269">tcl</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2011 Mark Alston &lt;mark at beernut dot com&gt;</p>
</div>
</div></body></html>







|


|
|




|








304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
<dt><a name="36"><b class="cmd">::math::decimal::round_ceiling</b> <i class="arg">decimal</i> <i class="arg">digits</i></a></dt>
<dd><p>Rounds <em>decimal</em> to <em>digits</em> number of decimal points with the following rules: Round toward Infinity</p></dd>
<dt><a name="37"><b class="cmd">::math::decimal::round_05up</b> <i class="arg">decimal</i> <i class="arg">digits</i></a></dt>
<dd><p>Rounds <em>decimal</em> to <em>digits</em> number of decimal points with the following rules: Round zero or five away from 0. The same as round-up, except that rounding up only occurs if the digit to be rounded up is 0 or 5, and after overflow
the result is the same as for round-down.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>decimal</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key743">decimal</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key268">tcl</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2011 Mark Alston &lt;mark at beernut dot com&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/math/fourier.html.

112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">GENERAL INFORMATION</a></li>
<li class="section"><a href="#section3">PROCEDURES</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">GENERAL INFORMATION</a></li>
<li class="section"><a href="#section3">PROCEDURES</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
<dt>float <i class="arg">cutoff</i></dt>
<dd><p>Cut-off frequency</p></dd>
<dt>list <i class="arg">in_data</i></dt>
<dd><p>List of data (amplitudes)</p></dd>
</dl></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: fourier</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key787">FFT</a>, <a href="../../../../index.html#key786">Fourier transform</a>, <a href="../../../../index.html#key778">complex numbers</a>, <a href="../../../../index.html#key602">mathematics</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
</div></body></html>







|



|










228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
<dt>float <i class="arg">cutoff</i></dt>
<dd><p>Cut-off frequency</p></dd>
<dt>list <i class="arg">in_data</i></dt>
<dd><p>List of data (amplitudes)</p></dd>
</dl></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: fourier</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key787">FFT</a>, <a href="../../../../index.html#key786">Fourier transform</a>, <a href="../../../../index.html#key778">complex numbers</a>, <a href="../../../../index.html#key602">mathematics</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/math/fuzzy.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PROCEDURES</a></li>
<li class="section"><a href="#section3">TEST CASES</a></li>
<li class="section"><a href="#section4">REFERENCES</a></li>
<li class="section"><a href="#section5">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PROCEDURES</a></li>
<li class="section"><a href="#section3">TEST CASES</a></li>
<li class="section"><a href="#section4">REFERENCES</a></li>
<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
APL QUOTE QUAD 8(4):20-24, June 1978. Note that TFLOOR=FL5 took five
years of refereed evolution (publication).</p>
<p>L. M. Breed, &quot;Definitions for Fuzzy Floor and Ceiling&quot;,
APL QUOTE QUAD 8(3):16-23, March 1978.</p>
<p>D. Knuth, Art of Computer Programming,
Vol. 1, Problem 1.2.4-5.</p>
</div>
<div id="section5" class="section"><h2><a name="section5">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: fuzzy</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key372">floating-point</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key371">rounding</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
</div></body></html>







|



|










229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
APL QUOTE QUAD 8(4):20-24, June 1978. Note that TFLOOR=FL5 took five
years of refereed evolution (publication).</p>
<p>L. M. Breed, &quot;Definitions for Fuzzy Floor and Ceiling&quot;,
APL QUOTE QUAD 8(3):16-23, March 1978.</p>
<p>D. Knuth, Art of Computer Programming,
Vol. 1, Problem 1.2.4-5.</p>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: fuzzy</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key372">floating-point</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key371">rounding</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/math/interpolate.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PROCEDURES</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PROCEDURES</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
0.7: 5.41804227941
0.8: 4.11
0.9: 3.95675857843
1.0: 4.12
</pre>
<p>As you can see, the values at the abscissae are reproduced perfectly.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: interpolate</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key819">interpolation</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key820">spatial interpolation</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|



|







316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
0.7: 5.41804227941
0.8: 4.11
0.9: 3.95675857843
1.0: 4.12
</pre>
<p>As you can see, the values at the abscissae are reproduced perfectly.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: interpolate</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key819">interpolation</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key820">spatial interpolation</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/math/linalg.html.

118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PROCEDURES</a></li>
<li class="section"><a href="#section3">STORAGE</a></li>
<li class="section"><a href="#section4">REMARKS ON THE IMPLEMENTATION</a></li>
<li class="section"><a href="#section5">TODO</a></li>
<li class="section"><a href="#section6">NAMING CONFLICT</a></li>
<li class="section"><a href="#section7">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PROCEDURES</a></li>
<li class="section"><a href="#section3">STORAGE</a></li>
<li class="section"><a href="#section4">REMARKS ON THE IMPLEMENTATION</a></li>
<li class="section"><a href="#section5">TODO</a></li>
<li class="section"><a href="#section6">NAMING CONFLICT</a></li>
<li class="section"><a href="#section7">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
<pre class="example">
namespace eval compute {
    rename ::scale scaleTk
    scaleTk .scale ...
}
</pre>
</div>
<div id="section7" class="section"><h2><a name="section7">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: linearalgebra</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key64">least squares</a>, <a href="../../../../index.html#key65">linear algebra</a>, <a href="../../../../index.html#key62">linear equations</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key63">matrices</a>, <a href="../../../../index.html#key55">matrix</a>, <a href="../../../../index.html#key66">vectors</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004-2008 Arjen Markus &lt;[email protected]&gt;<br>
Copyright &copy; 2004 Ed Hume &lt;http://www.hume.com/contact.us.htm&gt;<br>
Copyright &copy; 2008 Michael Buadin &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|










970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
<pre class="example">
namespace eval compute {
    rename ::scale scaleTk
    scaleTk .scale ...
}
</pre>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: linearalgebra</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key65">least squares</a>, <a href="../../../../index.html#key64">linear algebra</a>, <a href="../../../../index.html#key63">linear equations</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key62">matrices</a>, <a href="../../../../index.html#key55">matrix</a>, <a href="../../../../index.html#key66">vectors</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004-2008 Arjen Markus &lt;[email protected]&gt;<br>
Copyright &copy; 2004 Ed Hume &lt;http://www.hume.com/contact.us.htm&gt;<br>
Copyright &copy; 2008 Michael Buadin &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/math/machineparameters.html.

117
118
119
120
121
122
123

124
125
126
127
128
129
130
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">EXAMPLE</a></li>
<li class="section"><a href="#section3">REFERENCES</a></li>
<li class="section"><a href="#section4">CLASS API</a></li>
<li class="section"><a href="#section5">OBJECT API</a></li>

<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">snit</b></li>







>







117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">EXAMPLE</a></li>
<li class="section"><a href="#section3">REFERENCES</a></li>
<li class="section"><a href="#section4">CLASS API</a></li>
<li class="section"><a href="#section5">OBJECT API</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">snit</b></li>
275
276
277
278
279
280
281








282
283
284
285
286
<li><p>-vmin : largest negative value before (gradual) underflow occurs</p></li>
</ul></dd>
<dt><a name="7"><i class="arg">objectname</i> <b class="method">tostring</b></a></dt>
<dd><p>Return a report for machine parameters.</p></dd>
<dt><a name="8"><i class="arg">objectname</i> <b class="method">print</b></a></dt>
<dd><p>Print machine parameters on standard output.</p></dd>
</dl>








</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2008 Michael Baudin &lt;[email protected]&gt;</p>
</div>
</div></body></html>







>
>
>
>
>
>
>
>





276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
<li><p>-vmin : largest negative value before (gradual) underflow occurs</p></li>
</ul></dd>
<dt><a name="7"><i class="arg">objectname</i> <b class="method">tostring</b></a></dt>
<dd><p>Return a report for machine parameters.</p></dd>
<dt><a name="8"><i class="arg">objectname</i> <b class="method">print</b></a></dt>
<dd><p>Print machine parameters on standard output.</p></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2008 Michael Baudin &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/math/math.html.

111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BASIC COMMANDS</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BASIC COMMANDS</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
<dt><a name="10"><b class="cmd">::math::stats</b> <i class="arg">value</i> <i class="arg">value</i> <span class="opt">?<i class="arg">value ...</i>?</span></a></dt>
<dd><p>Return the mean, standard deviation, and coefficient of variation (as
percent) as a list.</p></dd>
<dt><a name="11"><b class="cmd">::math::sum</b> <i class="arg">value</i> <span class="opt">?<i class="arg">value ...</i>?</span></a></dt>
<dd><p>Return the sum of one or more numeric values.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key187">statistics</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
</div></body></html>







|



|










204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
<dt><a name="10"><b class="cmd">::math::stats</b> <i class="arg">value</i> <i class="arg">value</i> <span class="opt">?<i class="arg">value ...</i>?</span></a></dt>
<dd><p>Return the mean, standard deviation, and coefficient of variation (as
percent) as a list.</p></dd>
<dt><a name="11"><b class="cmd">::math::sum</b> <i class="arg">value</i> <span class="opt">?<i class="arg">value ...</i>?</span></a></dt>
<dd><p>Return the sum of one or more numeric values.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key187">statistics</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/math/math_geometry.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PROCEDURES</a></li>
<li class="section"><a href="#section3">References</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PROCEDURES</a></li>
<li class="section"><a href="#section3">References</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
<div id="section3" class="section"><h2><a name="section3">References</a></h2>
<ol class="enumerated">
<li><p><a href="http:/wiki.tcl.tk/12070">Polygon Intersection</a></p></li>
<li><p><a href="http://en.wikipedia.org/wiki/Line-line_intersection">http://en.wikipedia.org/wiki/Line-line_intersection</a></p></li>
<li><p><a href="http://local.wasp.uwa.edu.au/~pbourke/geometry/lineline2d/">http://local.wasp.uwa.edu.au/~pbourke/geometry/lineline2d/</a></p></li>
</ol>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: geometry</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key559">angle</a>, <a href="../../../../index.html#key455">distance</a>, <a href="../../../../index.html#key556">line</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key557">plane geometry</a>, <a href="../../../../index.html#key558">point</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2001 by Ideogramic ApS and other parties<br>
Copyright &copy; 2004 by Arjen Markus<br>
Copyright &copy; 2010 by Andreas Kupries<br>
Copyright &copy; 2010 by Kevin Kenny</p>
</div>
</div></body></html>







|



|




|











464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
<div id="section3" class="section"><h2><a name="section3">References</a></h2>
<ol class="enumerated">
<li><p><a href="http:/wiki.tcl.tk/12070">Polygon Intersection</a></p></li>
<li><p><a href="http://en.wikipedia.org/wiki/Line-line_intersection">http://en.wikipedia.org/wiki/Line-line_intersection</a></p></li>
<li><p><a href="http://local.wasp.uwa.edu.au/~pbourke/geometry/lineline2d/">http://local.wasp.uwa.edu.au/~pbourke/geometry/lineline2d/</a></p></li>
</ol>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: geometry</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key559">angle</a>, <a href="../../../../index.html#key455">distance</a>, <a href="../../../../index.html#key557">line</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key556">plane geometry</a>, <a href="../../../../index.html#key558">point</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2001 by Ideogramic ApS and other parties<br>
Copyright &copy; 2004 by Arjen Markus<br>
Copyright &copy; 2010 by Andreas Kupries<br>
Copyright &copy; 2010 by Kevin Kenny</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/math/numtheory.html.

112
113
114
115
116
117
118

119
120
121
122
123
124
125
<p>math::numtheory - Number Theory</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>

<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







>







112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<p>math::numtheory - Number Theory</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
161
162
163
164
165
166
167








168
169
170
171
172
173
174
175
176
177
178
<dd><p>which controls how many times the Miller-Rabin test should be
    repeated with randomly chosen bases. Each repetition reduces the
    probability of a false positive by a factor at least 4. The
    default for <i class="arg">repetitions</i> is 4.</p></dd>
</dl>
<p>Unknown options are silently ignored.</p></dd>
</dl>








</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key746">number theory</a>, <a href="../../../../index.html#key747">prime</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2010 Lars Hellstr&ouml;m &lt;Lars dot Hellstrom at residenset dot net&gt;</p>
</div>
</div></body></html>







>
>
>
>
>
>
>
>











162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
<dd><p>which controls how many times the Miller-Rabin test should be
    repeated with randomly chosen bases. Each repetition reduces the
    probability of a false positive by a factor at least 4. The
    default for <i class="arg">repetitions</i> is 4.</p></dd>
</dl>
<p>Unknown options are silently ignored.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: numtheory</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key746">number theory</a>, <a href="../../../../index.html#key747">prime</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2010 Lars Hellstr&ouml;m &lt;Lars dot Hellstrom at residenset dot net&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/math/optimize.html.

116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PROCEDURES</a></li>
<li class="section"><a href="#section3">NOTES</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PROCEDURES</a></li>
<li class="section"><a href="#section3">NOTES</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
<pre class="example">
   -x  -y &lt;= -1
</pre>
<p>The theory of linear programming is the subject of many a text book and
the Simplex algorithm that is implemented here is the best-known
method to solve this type of problems, but it is not the only one.</p>
</div>
<div id="section5" class="section"><h2><a name="section5">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: optimize</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key289">linear program</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key288">maximum</a>, <a href="../../../../index.html#key287">minimum</a>, <a href="../../../../index.html#key290">optimization</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004 Arjen Markus &lt;[email protected]&gt;<br>
Copyright &copy; 2004,2005 Kevn B. Kenny &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|









370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
<pre class="example">
   -x  -y &lt;= -1
</pre>
<p>The theory of linear programming is the subject of many a text book and
the Simplex algorithm that is implemented here is the best-known
method to solve this type of problems, but it is not the only one.</p>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: optimize</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key290">linear program</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key288">maximum</a>, <a href="../../../../index.html#key287">minimum</a>, <a href="../../../../index.html#key289">optimization</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004 Arjen Markus &lt;[email protected]&gt;<br>
Copyright &copy; 2004,2005 Kevn B. Kenny &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/math/polynomials.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PROCEDURES</a></li>
<li class="section"><a href="#section3">REMARKS ON THE IMPLEMENTATION</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PROCEDURES</a></li>
<li class="section"><a href="#section3">REMARKS ON THE IMPLEMENTATION</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
Horn's rule, which guarantees numerical stability and a minimum of
arithmetic operations.
To recognise that a polynomial definition is indeed a correct
definition, it consists of a list of two elements: the keyword
&quot;POLYNOMIAL&quot; and the list of coefficients in descending order. The
latter makes it easier to implement Horner's rule.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: polynomials</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key801">polynomial functions</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004 Arjen Markus &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
Horn's rule, which guarantees numerical stability and a minimum of
arithmetic operations.
To recognise that a polynomial definition is indeed a correct
definition, it consists of a list of two elements: the keyword
&quot;POLYNOMIAL&quot; and the list of coefficients in descending order. The
latter makes it easier to implement Horner's rule.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: polynomials</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key801">polynomial functions</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004 Arjen Markus &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/math/qcomplex.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">AVAILABLE PROCEDURES</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">AVAILABLE PROCEDURES</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
<dt>complex <i class="arg">z1</i> (in)</dt>
<dd><p>The complex number to be raised to a power</p></dd>
<dt>complex <i class="arg">z2</i> (in)</dt>
<dd><p>The complex power to be used</p></dd>
</dl></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: complexnumbers</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key778">complex numbers</a>, <a href="../../../../index.html#key67">math</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004 Arjen Markus &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
<dt>complex <i class="arg">z1</i> (in)</dt>
<dd><p>The complex number to be raised to a power</p></dd>
<dt>complex <i class="arg">z2</i> (in)</dt>
<dd><p>The complex power to be used</p></dd>
</dl></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: complexnumbers</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key778">complex numbers</a>, <a href="../../../../index.html#key67">math</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004 Arjen Markus &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/math/rational_funcs.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PROCEDURES</a></li>
<li class="section"><a href="#section3">REMARKS ON THE IMPLEMENTATION</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PROCEDURES</a></li>
<li class="section"><a href="#section3">REMARKS ON THE IMPLEMENTATION</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">REMARKS ON THE IMPLEMENTATION</a></h2>
<p>The implementation of the rational functions relies on the
math::polynomials package. For further remarks see the documentation on
that package.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: rationalfunctions</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key639">rational functions</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 Arjen Markus &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">REMARKS ON THE IMPLEMENTATION</a></h2>
<p>The implementation of the rational functions relies on the
math::polynomials package. For further remarks see the documentation on
that package.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: rationalfunctions</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key639">rational functions</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 Arjen Markus &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/math/roman.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
<dt><a name="4"><b class="cmd">::math::roman::expr</b> <i class="arg">args</i></a></dt>
<dd><p>Evaluate an expression where the operands are all roman numerals.</p></dd>
</dl>
<p>Of these commands both <em>toroman</em> and <em>tointeger</em> are exported
for easier use. The other two are not, as they could interfer or be
confused with existing Tcl commands.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: roman</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key19">conversion</a>, <a href="../../../../index.html#key334">integer</a>, <a href="../../../../index.html#key333">roman numeral</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 Kenneth Green &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
<dt><a name="4"><b class="cmd">::math::roman::expr</b> <i class="arg">args</i></a></dt>
<dd><p>Evaluate an expression where the operands are all roman numerals.</p></dd>
</dl>
<p>Of these commands both <em>toroman</em> and <em>tointeger</em> are exported
for easier use. The other two are not, as they could interfer or be
confused with existing Tcl commands.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: roman</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key20">conversion</a>, <a href="../../../../index.html#key334">integer</a>, <a href="../../../../index.html#key333">roman numeral</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 Kenneth Green &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/math/romberg.html.

118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PROCEDURES</a></li>
<li class="section"><a href="#section3">PARAMETERS</a></li>
<li class="section"><a href="#section4">OPTIONS</a></li>
<li class="section"><a href="#section5">DESCRIPTION</a></li>
<li class="section"><a href="#section6">IMPROPER INTEGRALS</a></li>
<li class="section"><a href="#section7">OTHER CHANGES OF VARIABLE</a></li>
<li class="section"><a href="#section8">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PROCEDURES</a></li>
<li class="section"><a href="#section3">PARAMETERS</a></li>
<li class="section"><a href="#section4">OPTIONS</a></li>
<li class="section"><a href="#section5">DESCRIPTION</a></li>
<li class="section"><a href="#section6">IMPROPER INTEGRALS</a></li>
<li class="section"><a href="#section7">OTHER CHANGES OF VARIABLE</a></li>
<li class="section"><a href="#section8">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
as we would any of the other <b class="cmd">romberg</b> procedures:</p>
<pre class="example">
foreach { value error } [romberg_sine f -1.0 1.0] break
puts [format &quot;integral is %.6g +/- %.6g&quot; $value $error]
integral is 3.97746 +/- 2.3557e-010
</pre>
</div>
<div id="section8" class="section"><h2><a name="section8">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: calculus</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="calculus.html">math::calculus</a>, <a href="interpolate.html">math::interpolate</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004 Kevin B. Kenny &lt;[email protected]&gt;. All rights reserved. Redistribution permitted under the terms of the Open Publication License &lt;http://www.opencontent.org/openpub/&gt;</p>
</div>
</div></body></html>







|



|













379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
as we would any of the other <b class="cmd">romberg</b> procedures:</p>
<pre class="example">
foreach { value error } [romberg_sine f -1.0 1.0] break
puts [format &quot;integral is %.6g +/- %.6g&quot; $value $error]
integral is 3.97746 +/- 2.3557e-010
</pre>
</div>
<div id="section8" class="section"><h2><a name="section8">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: calculus</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="calculus.html">math::calculus</a>, <a href="interpolate.html">math::interpolate</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004 Kevin B. Kenny &lt;[email protected]&gt;. All rights reserved. Redistribution permitted under the terms of the Open Publication License &lt;http://www.opencontent.org/openpub/&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/math/special.html.

117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">OVERVIEW</a></li>
<li class="section"><a href="#section3">PROCEDURES</a></li>
<li class="section"><a href="#section4">THE ORTHOGONAL POLYNOMIALS</a></li>
<li class="section"><a href="#section5">REMARKS ON THE IMPLEMENTATION</a></li>
<li class="section"><a href="#section6">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">OVERVIEW</a></li>
<li class="section"><a href="#section3">PROCEDURES</a></li>
<li class="section"><a href="#section4">THE ORTHOGONAL POLYNOMIALS</a></li>
<li class="section"><a href="#section5">REMARKS ON THE IMPLEMENTATION</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
statistics package.</p>
<p>The computation of the complete elliptic integrals uses the AGM
algorithm.</p>
<p>Much information about these functions can be found in:</p>
<p>Abramowitz and Stegun: <em>Handbook of Mathematical Functions</em>
(Dover, ISBN 486-61272-4)</p>
</div>
<div id="section6" class="section"><h2><a name="section6">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: special</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key668">Bessel functions</a>, <a href="../../../../index.html#key666">error function</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key667">special functions</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004 Arjen Markus &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
statistics package.</p>
<p>The computation of the complete elliptic integrals uses the AGM
algorithm.</p>
<p>Much information about these functions can be found in:</p>
<p>Abramowitz and Stegun: <em>Handbook of Mathematical Functions</em>
(Dover, ISBN 486-61272-4)</p>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: special</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key668">Bessel functions</a>, <a href="../../../../index.html#key666">error function</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key667">special functions</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004 Arjen Markus &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/math/statistics.html.

117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#section2">GENERAL PROCEDURES</a></li>
<li class="section"><a href="#section3">MULTIVARIATE LINEAR REGRESSION</a></li>
<li class="section"><a href="#section4">STATISTICAL DISTRIBUTIONS</a></li>
<li class="section"><a href="#section5">DATA MANIPULATION</a></li>
<li class="section"><a href="#section6">PLOT PROCEDURES</a></li>
<li class="section"><a href="#section7">THINGS TO DO</a></li>
<li class="section"><a href="#section8">EXAMPLES</a></li>
<li class="section"><a href="#section9">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#section2">GENERAL PROCEDURES</a></li>
<li class="section"><a href="#section3">MULTIVARIATE LINEAR REGRESSION</a></li>
<li class="section"><a href="#section4">STATISTICAL DISTRIBUTIONS</a></li>
<li class="section"><a href="#section5">DATA MANIPULATION</a></li>
<li class="section"><a href="#section6">PLOT PROCEDURES</a></li>
<li class="section"><a href="#section7">THINGS TO DO</a></li>
<li class="section"><a href="#section8">EXAMPLES</a></li>
<li class="section"><a href="#section9">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
<li><p>There is a strong correlation between two time series, as displayed by
the raw data and especially by the correlation functions.</p></li>
<li><p>Both time series show a significant periodic component</p></li>
<li><p>The histograms are not very useful in identifying the nature of the time
series - they do not show the periodic nature.</p></li>
</ul>
</div>
<div id="section9" class="section"><h2><a name="section9">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: statistics</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key603">data analysis</a>, <a href="../../../../index.html#key602">mathematics</a>, <a href="../../../../index.html#key187">statistics</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
</div></body></html>







|



|










1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
<li><p>There is a strong correlation between two time series, as displayed by
the raw data and especially by the correlation functions.</p></li>
<li><p>Both time series show a significant periodic component</p></li>
<li><p>The histograms are not very useful in identifying the nature of the time
series - they do not show the periodic nature.</p></li>
</ul>
</div>
<div id="section9" class="section"><h2><a name="section9">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: statistics</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key603">data analysis</a>, <a href="../../../../index.html#key602">mathematics</a>, <a href="../../../../index.html#key187">statistics</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/math/symdiff.html.

145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
</div>
<div id="section2" class="section"><h2><a name="section2">Procedures</a></h2>
<p>The <b class="cmd">math::calculus::symdiff</b> package exports the two procedures:</p>
<dl class="definitions">
<dt><a name="1"><b class="cmd">math::calculus::symdiff::symdiff</b> <i class="arg">expression</i> <i class="arg">variable</i></a></dt>
<dd><p>Differentiates the given <i class="arg">expression</i> with respect to the specified
<i class="arg">variable</i>. (See <span class="sectref"><a href="#section3">Expressions</a></span> below for a discussion of the
subset of Tcl math expressions that are acceptable to 
<b class="cmd">math::calculus::symdiff</b>.)
The result is a Tcl expression that evaluates the derivative. Returns an
error if <i class="arg">expression</i> is not a well-formed expression or is not
differentiable.</p></dd>
<dt><a name="2"><b class="cmd">math::calculus::jacobian</b> <i class="arg">variableDict</i></a></dt>
<dd><p>Computes the Jacobian of a system of equations.
The system is given by the dictionary <i class="arg">variableDict</i>, whose keys
are the names of variables in the system, and whose values are Tcl expressions
giving the values of those variables. (See <span class="sectref"><a href="#section3">Expressions</a></span> below
for a discussion of the subset of Tcl math expressions that are acceptable
to <b class="cmd">math::calculus::symdiff</b>. The result is a list of lists: 
the i'th element of the j'th sublist is the partial derivative of 
the i'th variable with respect to the j'th variable. Returns an error if
any of the expressions cannot be differentiated, or if <i class="arg">variableDict</i> 
is not a well-formed dictionary.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Expressions</a></h2>
<p>The <b class="cmd">math::calculus::symdiff</b> package accepts only a small subset of the expressions
that are acceptable to Tcl commands such as <b class="cmd">expr</b> or <b class="cmd">if</b>.
Specifically, the only constructs accepted are:</p>
<ul class="itemized">
<li><p>Floating-point constants such as <b class="const">5</b> or <b class="const">3.14159e+00</b>.</p></li>
<li><p>References to Tcl variable using $-substitution. The variable names
must consist of alphanumerics and underscores: the <b class="const">${...}</b> notation
is not accepted.</p></li>
<li><p>Parentheses.</p></li>
<li><p>The <b class="const">+</b>, <b class="const">-</b>, <b class="const">*</b>, <b class="const">/</b>. and <b class="const">**</b> 
operators.</p></li>
<li><p>Calls to the functions <b class="cmd">acos</b>, <b class="cmd">asin</b>, <b class="cmd">atan</b>,
<b class="cmd">atan2</b>, <b class="cmd">cos</b>, <b class="cmd">cosh</b>, <b class="cmd">exp</b>, <b class="cmd">hypot</b>, <b class="cmd"><a href="../log/log.html">log</a></b>,
<b class="cmd">log10</b>, <b class="cmd">pow</b>, <b class="cmd">sin</b>, <b class="cmd">sinh</b>. <b class="cmd">sqrt</b>, <b class="cmd">tan</b>,
and <b class="cmd">tanh</b>.</p></li>
</ul>
<p>Command substitution, backslash substitution, and argument expansion are







|










|
|

|













|







145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
</div>
<div id="section2" class="section"><h2><a name="section2">Procedures</a></h2>
<p>The <b class="cmd">math::calculus::symdiff</b> package exports the two procedures:</p>
<dl class="definitions">
<dt><a name="1"><b class="cmd">math::calculus::symdiff::symdiff</b> <i class="arg">expression</i> <i class="arg">variable</i></a></dt>
<dd><p>Differentiates the given <i class="arg">expression</i> with respect to the specified
<i class="arg">variable</i>. (See <span class="sectref"><a href="#section3">Expressions</a></span> below for a discussion of the
subset of Tcl math expressions that are acceptable to
<b class="cmd">math::calculus::symdiff</b>.)
The result is a Tcl expression that evaluates the derivative. Returns an
error if <i class="arg">expression</i> is not a well-formed expression or is not
differentiable.</p></dd>
<dt><a name="2"><b class="cmd">math::calculus::jacobian</b> <i class="arg">variableDict</i></a></dt>
<dd><p>Computes the Jacobian of a system of equations.
The system is given by the dictionary <i class="arg">variableDict</i>, whose keys
are the names of variables in the system, and whose values are Tcl expressions
giving the values of those variables. (See <span class="sectref"><a href="#section3">Expressions</a></span> below
for a discussion of the subset of Tcl math expressions that are acceptable
to <b class="cmd">math::calculus::symdiff</b>. The result is a list of lists:
the i'th element of the j'th sublist is the partial derivative of
the i'th variable with respect to the j'th variable. Returns an error if
any of the expressions cannot be differentiated, or if <i class="arg">variableDict</i>
is not a well-formed dictionary.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Expressions</a></h2>
<p>The <b class="cmd">math::calculus::symdiff</b> package accepts only a small subset of the expressions
that are acceptable to Tcl commands such as <b class="cmd">expr</b> or <b class="cmd">if</b>.
Specifically, the only constructs accepted are:</p>
<ul class="itemized">
<li><p>Floating-point constants such as <b class="const">5</b> or <b class="const">3.14159e+00</b>.</p></li>
<li><p>References to Tcl variable using $-substitution. The variable names
must consist of alphanumerics and underscores: the <b class="const">${...}</b> notation
is not accepted.</p></li>
<li><p>Parentheses.</p></li>
<li><p>The <b class="const">+</b>, <b class="const">-</b>, <b class="const">*</b>, <b class="const">/</b>. and <b class="const">**</b>
operators.</p></li>
<li><p>Calls to the functions <b class="cmd">acos</b>, <b class="cmd">asin</b>, <b class="cmd">atan</b>,
<b class="cmd">atan2</b>, <b class="cmd">cos</b>, <b class="cmd">cosh</b>, <b class="cmd">exp</b>, <b class="cmd">hypot</b>, <b class="cmd"><a href="../log/log.html">log</a></b>,
<b class="cmd">log10</b>, <b class="cmd">pow</b>, <b class="cmd">sin</b>, <b class="cmd">sinh</b>. <b class="cmd">sqrt</b>, <b class="cmd">tan</b>,
and <b class="cmd">tanh</b>.</p></li>
</ul>
<p>Command substitution, backslash substitution, and argument expansion are
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
==&gt; {{$a} {$b}} {{$c} {$d}}
</pre>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: calculus</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="calculus.html">math::calculus</a>, <a href="interpolate.html">math::interpolate</a></p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2010 by Kevin B. Kenny &lt;[email protected]&gt;<br>
Redistribution permitted under the terms of the Open Publication License &lt;http://www.opencontent.org/openpub/&gt;</p>
</div>
</div></body></html>







|











196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
==&gt; {{$a} {$b}} {{$c} {$d}}
</pre>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>math :: calculus</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="calculus.html">math::calculus</a>, <a href="interpolate.html">math::interpolate</a></p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2010 by Kevin B. Kenny &lt;[email protected]&gt;<br>
Redistribution permitted under the terms of the Open Publication License &lt;http://www.opencontent.org/openpub/&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/md4/md4.html.

116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">PROGRAMMING INTERFACE</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">REFERENCES</a></li>
<li class="section"><a href="#section6">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">PROGRAMMING INTERFACE</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">REFERENCES</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::md4::md4</b> <span class="opt">?<i class="arg">-hex</i>?</span> [ <i class="arg">-channel channel</i> | <i class="arg">-file filename</i> | <i class="arg">string</i> ]</a></dt>
<dd><p>Calculate the MD4 digest of the data given in string. This is returned
as a binary string by default. Giving the <i class="arg">-hex</i> option will
return a hexadecimal encoded version of the digest.</p>
<p>The data to be hashed can be specified either as a string argument to
the md4 command, or as a filename or a pre-opened channel. If the 
<i class="arg">-filename</i> argument is given then the file is opened, the data read
and hashed and the file is closed. If the <i class="arg">-channel</i> argument is
given then data is read from the channel until the end of file. The
channel is not closed.</p>
<p>Only one of <i class="arg">-file</i>, <i class="arg">-channel</i> or <i class="arg">string</i> should be given.</p></dd>
<dt><a name="2"><b class="cmd">::md4::hmac</b> <span class="opt">?<i class="arg">-hex</i>?</span> <i class="arg">-key key</i> [ <i class="arg">-channel channel</i> | <i class="arg">-file filename</i> | <i class="arg">string</i> ]</a></dt>
<dd><p>Calculate an Hashed Message Authentication digest (HMAC) using the MD4
digest algorithm. HMACs are described in RFC 2104 (4) and provide an MD4
digest that includes a key. All options other than <i class="arg">-key</i> are as
for the <b class="cmd">::md4::md4</b> command.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">PROGRAMMING INTERFACE</a></h2>
<p>For the programmer, the MD4 hash can be viewed as a bucket into which
one pours data. When you have finished, you extract a value that is
derived from the data that was poured into the bucket. The programming
interface to the MD4 hash operates on a token (equivalent to the
bucket). You call <b class="cmd">MD4Init</b> to obtain a token and then call 
<b class="cmd">MD4Update</b> as many times as required to add data to the hash. To
release any resources and obtain the hash value, you then call 
<b class="cmd">MD4Final</b>. An equivalent set of functions gives you a keyed digest (HMAC).</p>
<dl class="definitions">
<dt><a name="3"><b class="cmd">::md4::MD4Init</b></a></dt>
<dd><p>Begins a new MD4 hash. Returns a token ID that must be used for the
remaining functions.</p></dd>
<dt><a name="4"><b class="cmd">::md4::MD4Update</b> <i class="arg">token</i> <i class="arg">data</i></a></dt>
<dd><p>Add data to the hash identified by token. Calling 
<em>MD4Update $token &quot;abcd&quot;</em> is equivalent to calling
<em>MD4Update $token &quot;ab&quot;</em> followed by 
<em>MD4Update $token &quot;cb&quot;</em>. See <span class="sectref"><a href="#section4">EXAMPLES</a></span>.</p></dd>
<dt><a name="5"><b class="cmd">::md4::MD4Final</b> <i class="arg">token</i></a></dt>
<dd><p>Returns the hash value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a binary string of 16 bytes representing the 128 bit MD4
digest value.</p></dd>
<dt><a name="6"><b class="cmd">::md4::HMACInit</b> <i class="arg">key</i></a></dt>







|

















|

|






|

|







161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::md4::md4</b> <span class="opt">?<i class="arg">-hex</i>?</span> [ <i class="arg">-channel channel</i> | <i class="arg">-file filename</i> | <i class="arg">string</i> ]</a></dt>
<dd><p>Calculate the MD4 digest of the data given in string. This is returned
as a binary string by default. Giving the <i class="arg">-hex</i> option will
return a hexadecimal encoded version of the digest.</p>
<p>The data to be hashed can be specified either as a string argument to
the md4 command, or as a filename or a pre-opened channel. If the
<i class="arg">-filename</i> argument is given then the file is opened, the data read
and hashed and the file is closed. If the <i class="arg">-channel</i> argument is
given then data is read from the channel until the end of file. The
channel is not closed.</p>
<p>Only one of <i class="arg">-file</i>, <i class="arg">-channel</i> or <i class="arg">string</i> should be given.</p></dd>
<dt><a name="2"><b class="cmd">::md4::hmac</b> <span class="opt">?<i class="arg">-hex</i>?</span> <i class="arg">-key key</i> [ <i class="arg">-channel channel</i> | <i class="arg">-file filename</i> | <i class="arg">string</i> ]</a></dt>
<dd><p>Calculate an Hashed Message Authentication digest (HMAC) using the MD4
digest algorithm. HMACs are described in RFC 2104 (4) and provide an MD4
digest that includes a key. All options other than <i class="arg">-key</i> are as
for the <b class="cmd">::md4::md4</b> command.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">PROGRAMMING INTERFACE</a></h2>
<p>For the programmer, the MD4 hash can be viewed as a bucket into which
one pours data. When you have finished, you extract a value that is
derived from the data that was poured into the bucket. The programming
interface to the MD4 hash operates on a token (equivalent to the
bucket). You call <b class="cmd">MD4Init</b> to obtain a token and then call
<b class="cmd">MD4Update</b> as many times as required to add data to the hash. To
release any resources and obtain the hash value, you then call
<b class="cmd">MD4Final</b>. An equivalent set of functions gives you a keyed digest (HMAC).</p>
<dl class="definitions">
<dt><a name="3"><b class="cmd">::md4::MD4Init</b></a></dt>
<dd><p>Begins a new MD4 hash. Returns a token ID that must be used for the
remaining functions.</p></dd>
<dt><a name="4"><b class="cmd">::md4::MD4Update</b> <i class="arg">token</i> <i class="arg">data</i></a></dt>
<dd><p>Add data to the hash identified by token. Calling
<em>MD4Update $token &quot;abcd&quot;</em> is equivalent to calling
<em>MD4Update $token &quot;ab&quot;</em> followed by
<em>MD4Update $token &quot;cb&quot;</em>. See <span class="sectref"><a href="#section4">EXAMPLES</a></span>.</p></dd>
<dt><a name="5"><b class="cmd">::md4::MD4Final</b> <i class="arg">token</i></a></dt>
<dd><p>Returns the hash value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a binary string of 16 bytes representing the 128 bit MD4
digest value.</p></dd>
<dt><a name="6"><b class="cmd">::md4::HMACInit</b> <i class="arg">key</i></a></dt>
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
       April 1992. (<a href="http://www.rfc-editor.org/rfc/rfc1320.txt">http://www.rfc-editor.org/rfc/rfc1320.txt</a>)</p></li>
<li><p>Rivest, R., &quot;The MD4 message digest algorithm&quot;, in A.J.  Menezes
       and S.A. Vanstone, editors, Advances in Cryptology - CRYPTO '90
       Proceedings, pages 303-311, Springer-Verlag, 1991.</p></li>
<li><p>Rivest, R., &quot;The MD5 Message-Digest Algorithm&quot;, RFC 1321, MIT and
       RSA Data Security, Inc, April 1992.
	(<a href="http://www.rfc-editor.org/rfc/rfc1321.txt">http://www.rfc-editor.org/rfc/rfc1321.txt</a>)</p></li>
<li><p>Krawczyk, H., Bellare, M. and Canetti, R. &quot;HMAC: Keyed-Hashing for 
      Message Authentication&quot;, RFC 2104, February 1997.
	(<a href="http://www.rfc-editor.org/rfc/rfc2104.txt">http://www.rfc-editor.org/rfc/rfc2104.txt</a>)</p></li>
</ol>
</div>
<div id="section6" class="section"><h2><a name="section6">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>md4</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../md5/md5.html">md5</a>, <a href="../sha1/sha1.html">sha1</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key224">hashing</a>, <a href="../../../../index.html#key358">md4</a>, <a href="../../../../index.html#key223">message-digest</a>, <a href="../../../../index.html#key357">rfc 1320</a>, <a href="../../../../index.html#key360">rfc 1321</a>, <a href="../../../../index.html#key222">rfc 2104</a>, <a href="../../../../index.html#key148">security</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003, Pat Thoyts &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|




|



|







|








235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
       April 1992. (<a href="http://www.rfc-editor.org/rfc/rfc1320.txt">http://www.rfc-editor.org/rfc/rfc1320.txt</a>)</p></li>
<li><p>Rivest, R., &quot;The MD4 message digest algorithm&quot;, in A.J.  Menezes
       and S.A. Vanstone, editors, Advances in Cryptology - CRYPTO '90
       Proceedings, pages 303-311, Springer-Verlag, 1991.</p></li>
<li><p>Rivest, R., &quot;The MD5 Message-Digest Algorithm&quot;, RFC 1321, MIT and
       RSA Data Security, Inc, April 1992.
	(<a href="http://www.rfc-editor.org/rfc/rfc1321.txt">http://www.rfc-editor.org/rfc/rfc1321.txt</a>)</p></li>
<li><p>Krawczyk, H., Bellare, M. and Canetti, R. &quot;HMAC: Keyed-Hashing for
      Message Authentication&quot;, RFC 2104, February 1997.
	(<a href="http://www.rfc-editor.org/rfc/rfc2104.txt">http://www.rfc-editor.org/rfc/rfc2104.txt</a>)</p></li>
</ol>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>md4</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../md5/md5.html">md5</a>, <a href="../sha1/sha1.html">sha1</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key224">hashing</a>, <a href="../../../../index.html#key359">md4</a>, <a href="../../../../index.html#key223">message-digest</a>, <a href="../../../../index.html#key358">rfc 1320</a>, <a href="../../../../index.html#key360">rfc 1321</a>, <a href="../../../../index.html#key222">rfc 2104</a>, <a href="../../../../index.html#key148">security</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003, Pat Thoyts &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/md5/md5.html.

116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">PROGRAMMING INTERFACE</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">REFERENCES</a></li>
<li class="section"><a href="#section6">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">PROGRAMMING INTERFACE</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">REFERENCES</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
algorithm as described in RFC 1321 (1). This algorithm takes
an arbitrary quantity of data and generates a 128-bit message digest
from the input. The MD5 algorithm is related to the MD4 algorithm (2)
but has been strengthened against certain types of potential
attack. MD5 should be used in preference to MD4 for new applications.</p>
<p>If you have <b class="package">critcl</b> and have built the <b class="package">tcllibc</b>
package then the implementation of the hashing function will be
performed by compiled code. Alternatively if you have either 
<b class="package">cryptkit</b> or <b class="package">Trf</b> then either of these can be used to
accelerate the digest computation. If no suitable compiled package is
available then the pure-Tcl implementation wil be used. The
programming interface remains the same in all cases.</p>
<p><em>Note</em> the previous version of this package always returned a
hex encoded string. This has been changed to simplify the programming
interface and to make this version more compatible with other
implementations. To obtain the previous usage, either explicitly
specify package version 1 or use the <i class="arg">-hex</i> option to the 
<b class="cmd">md5</b> command.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::md5::md5</b> <span class="opt">?<i class="arg">-hex</i>?</span> [ <i class="arg">-channel channel</i> | <i class="arg">-file filename</i> | <i class="arg">string</i> ]</a></dt>
<dd><p>Calculate the MD5 digest of the data given in string. This is returned
as a binary string by default. Giving the <i class="arg">-hex</i> option will
return a hexadecimal encoded version of the digest.</p>
<p>The data to be hashed can be specified either as a string argument to
the <b class="cmd">md5</b> command, or as a filename or a pre-opened channel. If the 
<i class="arg">-filename</i> argument is given then the file is opened, the data read
and hashed and the file is closed. If the <i class="arg">-channel</i> argument is
given then data is read from the channel until the end of file. The
channel is not closed.</p>
<p>Only one of <i class="arg">-file</i>, <i class="arg">-channel</i> or <i class="arg">string</i> should be given.</p></dd>
<dt><a name="2"><b class="cmd">::md5::hmac</b> <span class="opt">?<i class="arg">-hex</i>?</span> <i class="arg">-key key</i> [ <i class="arg">-channel channel</i> | <i class="arg">-file filename</i> | <i class="arg">string</i> ]</a></dt>
<dd><p>Calculate an Hashed Message Authentication digest (HMAC) using the MD5
digest algorithm. HMACs are described in RFC 2104 (3) and provide an MD5
digest that includes a key. All options other than <i class="arg">-key</i> are as
for the <b class="cmd">::md5::md5</b> command.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">PROGRAMMING INTERFACE</a></h2>
<p>For the programmer, the MD5 hash can be viewed as a bucket into which
one pours data. When you have finished, you extract a value that is
derived from the data that was poured into the bucket. The programming
interface to the MD5 hash operates on a token (equivalent to the
bucket). You call <b class="cmd">MD5Init</b> to obtain a token and then call 
<b class="cmd">MD5Update</b> as many times as required to add data to the hash. To
release any resources and obtain the hash value, you then call 
<b class="cmd">MD5Final</b>. An equivalent set of functions gives you a keyed digest
(HMAC).</p>
<dl class="definitions">
<dt><a name="3"><b class="cmd">::md5::MD5Init</b></a></dt>
<dd><p>Begins a new MD5 hash. Returns a token ID that must be used for the
remaining functions.</p></dd>
<dt><a name="4"><b class="cmd">::md5::MD5Update</b> <i class="arg">token</i> <i class="arg">data</i></a></dt>
<dd><p>Add data to the hash identified by token. Calling 
<em>MD5Update $token &quot;abcd&quot;</em> is equivalent to calling
<em>MD5Update $token &quot;ab&quot;</em> followed by 
<em>MD5Update $token &quot;cb&quot;</em>. See <span class="sectref"><a href="#section4">EXAMPLES</a></span>.</p></dd>
<dt><a name="5"><b class="cmd">::md5::MD5Final</b> <i class="arg">token</i></a></dt>
<dd><p>Returns the hash value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a binary string of 16 bytes representing the 128 bit MD5
digest value.</p></dd>
<dt><a name="6"><b class="cmd">::md5::HMACInit</b> <i class="arg">key</i></a></dt>







|








|









|

















|

|







|

|







150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
algorithm as described in RFC 1321 (1). This algorithm takes
an arbitrary quantity of data and generates a 128-bit message digest
from the input. The MD5 algorithm is related to the MD4 algorithm (2)
but has been strengthened against certain types of potential
attack. MD5 should be used in preference to MD4 for new applications.</p>
<p>If you have <b class="package">critcl</b> and have built the <b class="package">tcllibc</b>
package then the implementation of the hashing function will be
performed by compiled code. Alternatively if you have either
<b class="package">cryptkit</b> or <b class="package">Trf</b> then either of these can be used to
accelerate the digest computation. If no suitable compiled package is
available then the pure-Tcl implementation wil be used. The
programming interface remains the same in all cases.</p>
<p><em>Note</em> the previous version of this package always returned a
hex encoded string. This has been changed to simplify the programming
interface and to make this version more compatible with other
implementations. To obtain the previous usage, either explicitly
specify package version 1 or use the <i class="arg">-hex</i> option to the
<b class="cmd">md5</b> command.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::md5::md5</b> <span class="opt">?<i class="arg">-hex</i>?</span> [ <i class="arg">-channel channel</i> | <i class="arg">-file filename</i> | <i class="arg">string</i> ]</a></dt>
<dd><p>Calculate the MD5 digest of the data given in string. This is returned
as a binary string by default. Giving the <i class="arg">-hex</i> option will
return a hexadecimal encoded version of the digest.</p>
<p>The data to be hashed can be specified either as a string argument to
the <b class="cmd">md5</b> command, or as a filename or a pre-opened channel. If the
<i class="arg">-filename</i> argument is given then the file is opened, the data read
and hashed and the file is closed. If the <i class="arg">-channel</i> argument is
given then data is read from the channel until the end of file. The
channel is not closed.</p>
<p>Only one of <i class="arg">-file</i>, <i class="arg">-channel</i> or <i class="arg">string</i> should be given.</p></dd>
<dt><a name="2"><b class="cmd">::md5::hmac</b> <span class="opt">?<i class="arg">-hex</i>?</span> <i class="arg">-key key</i> [ <i class="arg">-channel channel</i> | <i class="arg">-file filename</i> | <i class="arg">string</i> ]</a></dt>
<dd><p>Calculate an Hashed Message Authentication digest (HMAC) using the MD5
digest algorithm. HMACs are described in RFC 2104 (3) and provide an MD5
digest that includes a key. All options other than <i class="arg">-key</i> are as
for the <b class="cmd">::md5::md5</b> command.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">PROGRAMMING INTERFACE</a></h2>
<p>For the programmer, the MD5 hash can be viewed as a bucket into which
one pours data. When you have finished, you extract a value that is
derived from the data that was poured into the bucket. The programming
interface to the MD5 hash operates on a token (equivalent to the
bucket). You call <b class="cmd">MD5Init</b> to obtain a token and then call
<b class="cmd">MD5Update</b> as many times as required to add data to the hash. To
release any resources and obtain the hash value, you then call
<b class="cmd">MD5Final</b>. An equivalent set of functions gives you a keyed digest
(HMAC).</p>
<dl class="definitions">
<dt><a name="3"><b class="cmd">::md5::MD5Init</b></a></dt>
<dd><p>Begins a new MD5 hash. Returns a token ID that must be used for the
remaining functions.</p></dd>
<dt><a name="4"><b class="cmd">::md5::MD5Update</b> <i class="arg">token</i> <i class="arg">data</i></a></dt>
<dd><p>Add data to the hash identified by token. Calling
<em>MD5Update $token &quot;abcd&quot;</em> is equivalent to calling
<em>MD5Update $token &quot;ab&quot;</em> followed by
<em>MD5Update $token &quot;cb&quot;</em>. See <span class="sectref"><a href="#section4">EXAMPLES</a></span>.</p></dd>
<dt><a name="5"><b class="cmd">::md5::MD5Final</b> <i class="arg">token</i></a></dt>
<dd><p>Returns the hash value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a binary string of 16 bytes representing the 128 bit MD5
digest value.</p></dd>
<dt><a name="6"><b class="cmd">::md5::HMACInit</b> <i class="arg">key</i></a></dt>
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
<div id="section5" class="section"><h2><a name="section5">REFERENCES</a></h2>
<ol class="enumerated">
<li><p>Rivest, R., &quot;The MD5 Message-Digest Algorithm&quot;, RFC 1321, MIT and
       RSA Data Security, Inc, April 1992.
	(<a href="http://www.rfc-editor.org/rfc/rfc1321.txt">http://www.rfc-editor.org/rfc/rfc1321.txt</a>)</p></li>
<li><p>Rivest, R., &quot;The MD4 Message Digest Algorithm&quot;, RFC 1320, MIT,
       April 1992. (<a href="http://www.rfc-editor.org/rfc/rfc1320.txt">http://www.rfc-editor.org/rfc/rfc1320.txt</a>)</p></li>
<li><p>Krawczyk, H., Bellare, M. and Canetti, R. &quot;HMAC: Keyed-Hashing for 
      Message Authentication&quot;, RFC 2104, February 1997.
	(<a href="http://www.rfc-editor.org/rfc/rfc2104.txt">http://www.rfc-editor.org/rfc/rfc2104.txt</a>)</p></li>
</ol>
</div>
<div id="section6" class="section"><h2><a name="section6">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>md5</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../md4/md4.html">md4</a>, <a href="../sha1/sha1.html">sha1</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key224">hashing</a>, <a href="../../../../index.html#key644">md5</a>, <a href="../../../../index.html#key223">message-digest</a>, <a href="../../../../index.html#key357">rfc 1320</a>, <a href="../../../../index.html#key360">rfc 1321</a>, <a href="../../../../index.html#key222">rfc 2104</a>, <a href="../../../../index.html#key148">security</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003, Pat Thoyts &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|




|



|







|








241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
<div id="section5" class="section"><h2><a name="section5">REFERENCES</a></h2>
<ol class="enumerated">
<li><p>Rivest, R., &quot;The MD5 Message-Digest Algorithm&quot;, RFC 1321, MIT and
       RSA Data Security, Inc, April 1992.
	(<a href="http://www.rfc-editor.org/rfc/rfc1321.txt">http://www.rfc-editor.org/rfc/rfc1321.txt</a>)</p></li>
<li><p>Rivest, R., &quot;The MD4 Message Digest Algorithm&quot;, RFC 1320, MIT,
       April 1992. (<a href="http://www.rfc-editor.org/rfc/rfc1320.txt">http://www.rfc-editor.org/rfc/rfc1320.txt</a>)</p></li>
<li><p>Krawczyk, H., Bellare, M. and Canetti, R. &quot;HMAC: Keyed-Hashing for
      Message Authentication&quot;, RFC 2104, February 1997.
	(<a href="http://www.rfc-editor.org/rfc/rfc2104.txt">http://www.rfc-editor.org/rfc/rfc2104.txt</a>)</p></li>
</ol>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>md5</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../md4/md4.html">md4</a>, <a href="../sha1/sha1.html">sha1</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key224">hashing</a>, <a href="../../../../index.html#key644">md5</a>, <a href="../../../../index.html#key223">message-digest</a>, <a href="../../../../index.html#key358">rfc 1320</a>, <a href="../../../../index.html#key360">rfc 1321</a>, <a href="../../../../index.html#key222">rfc 2104</a>, <a href="../../../../index.html#key148">security</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003, Pat Thoyts &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/md5crypt/md5crypt.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">SALT</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">SALT</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
$apr1$01234567$IXBaQywhAhc0d75ZbaSDp/
</pre>
<pre class="example">
% md5crypt::md5crypt password [md5crypt::salt]
$1$dFmvyRmO$T.V3OmzqeEf3hqJp2WFcb.
</pre>
</div>
<div id="section5" class="section"><h2><a name="section5">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>md5crypt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../md5/md5.html">md5</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>







|



|







184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
$apr1$01234567$IXBaQywhAhc0d75ZbaSDp/
</pre>
<pre class="example">
% md5crypt::md5crypt password [md5crypt::salt]
$1$dFmvyRmO$T.V3OmzqeEf3hqJp2WFcb.
</pre>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>md5crypt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../md5/md5.html">md5</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>

Changes to embedded/www/tcllib/files/modules/mime/mime.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">KNOWN BUGS</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">KNOWN BUGS</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
<dt><a name="12"><b class="cmd">::mime::reversemapencoding</b> <i class="arg">charset_type</i></a></dt>
<dd><p>This command maps MIME charset types onto tcl encoding names.  Those
that are unknown return &quot;&quot;.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">KNOWN BUGS</a></h2>
<dl class="definitions">
<dt>SourceForge Tcllib Bug #447037</dt>
<dd><p>This problem affects only people which are using Tcl and Mime on a
64-bit system. The currently recommended fix for this problem is to
upgrade to Tcl version 8.4. This version has extended 64 bit support
and the bug does not appear anymore.</p>
<p>The problem could have been generally solved by requiring the use of
Tcl 8.4 for this package. We decided against this solution as it would
force a large number of unaffected users to upgrade their Tcl
interpreter for no reason.</p>
<p>See <a href="http://sourceforge.net/tracker/?func=detail&aid=447037&group_id=12883&atid=112883">http://sourceforge.net/tracker/?func=detail&amp;aid=447037&amp;group_id=12883&amp;atid=112883</a>
for additional information.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>mime</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../ftp/ftp.html">ftp</a>, <a href="../../../../index.html#key506">http</a>, <a href="../pop3/pop3.html">pop3</a>, <a href="smtp.html">smtp</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key315">email</a>, <a href="../../../../index.html#key136">internet</a>, <a href="../../../../index.html#key310">mail</a>, <a href="../../../../index.html#key228">mime</a>, <a href="../../../../index.html#key276">net</a>, <a href="../../../../index.html#key798">rfc 2045</a>, <a href="../../../../index.html#key799">rfc 2046</a>, <a href="../../../../index.html#key797">rfc 2049</a>, <a href="../../../../index.html#key312">rfc 821</a>, <a href="../../../../index.html#key313">rfc 822</a>, <a href="../../../../index.html#key317">smtp</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 1999-2000 Marshall T. Rose</p>
</div>
</div></body></html>







|








<
|


|



|




|


|








334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349

350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
<dt><a name="12"><b class="cmd">::mime::reversemapencoding</b> <i class="arg">charset_type</i></a></dt>
<dd><p>This command maps MIME charset types onto tcl encoding names.  Those
that are unknown return &quot;&quot;.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">KNOWN BUGS</a></h2>
<dl class="definitions">
<dt>Tcllib Bug #447037</dt>
<dd><p>This problem affects only people which are using Tcl and Mime on a
64-bit system. The currently recommended fix for this problem is to
upgrade to Tcl version 8.4. This version has extended 64 bit support
and the bug does not appear anymore.</p>
<p>The problem could have been generally solved by requiring the use of
Tcl 8.4 for this package. We decided against this solution as it would
force a large number of unaffected users to upgrade their Tcl
interpreter for no reason.</p>

<p>See <a href="/tktview?name=447037">Ticket 447037</a> for additional information.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>mime</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../ftp/ftp.html">ftp</a>, <a href="../../../../index.html#key505">http</a>, <a href="../pop3/pop3.html">pop3</a>, <a href="smtp.html">smtp</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key315">email</a>, <a href="../../../../index.html#key138">internet</a>, <a href="../../../../index.html#key310">mail</a>, <a href="../../../../index.html#key228">mime</a>, <a href="../../../../index.html#key276">net</a>, <a href="../../../../index.html#key798">rfc 2045</a>, <a href="../../../../index.html#key799">rfc 2046</a>, <a href="../../../../index.html#key797">rfc 2049</a>, <a href="../../../../index.html#key312">rfc 821</a>, <a href="../../../../index.html#key313">rfc 822</a>, <a href="../../../../index.html#key317">smtp</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 1999-2000 Marshall T. Rose</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/mime/smtp.html.

116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Authentication</a></li>
<li class="section"><a href="#section3">EXAMPLE</a></li>
<li class="section"><a href="#section4">REFERENCES</a></li>
<li class="section"><a href="#section5">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Authentication</a></li>
<li class="section"><a href="#section3">EXAMPLE</a></li>
<li class="section"><a href="#section4">REFERENCES</a></li>
<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
present the header isn't examined for recipient addresses). If the
string contains more than one address they will be separated by
commas.</p></dd>
<dt><b class="option">-header</b></dt>
<dd><p>A list containing two elements, an smtp header and its associated
value (the -header option may occur zero or more times).</p></dd>
<dt><b class="option">-usetls</b></dt>
<dd><p>This package supports the RFC 3207 TLS extension (3) by default provided the 
tls package is available. You can turn this off with this boolean option.</p></dd>
<dt><b class="option">-tlspolicy</b></dt>
<dd><p>This option lets you specify a command to be called if an error occurs 
during TLS setup. The command is called with the SMTP code and diagnostic
message appended. The command should return 'secure' or 'insecure' where
insecure will cause the package to continue on the unencrypted channel.
Returning 'secure' will cause the socket to be closed and the next server
in the <b class="option">-servers</b> list to be tried.</p></dd>
<dt><b class="option">-username</b></dt>
<dd></dd>







|


|







170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
present the header isn't examined for recipient addresses). If the
string contains more than one address they will be separated by
commas.</p></dd>
<dt><b class="option">-header</b></dt>
<dd><p>A list containing two elements, an smtp header and its associated
value (the -header option may occur zero or more times).</p></dd>
<dt><b class="option">-usetls</b></dt>
<dd><p>This package supports the RFC 3207 TLS extension (3) by default provided the
tls package is available. You can turn this off with this boolean option.</p></dd>
<dt><b class="option">-tlspolicy</b></dt>
<dd><p>This option lets you specify a command to be called if an error occurs
during TLS setup. The command is called with the SMTP code and diagnostic
message appended. The command should return 'secure' or 'insecure' where
insecure will cause the package to continue on the unencrypted channel.
Returning 'secure' will cause the socket to be closed and the next server
in the <b class="option">-servers</b> list to be tried.</p></dd>
<dt><b class="option">-username</b></dt>
<dd></dd>
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
<li><p>Jonathan B. Postel, &quot;SIMPLE MAIL TRANSFER PROTOCOL&quot;, RFC 821, August 1982.
    (<a href="http://www.rfc-editor.org/rfc/rfc821.txt">http://www.rfc-editor.org/rfc/rfc821.txt</a>)</p></li>
<li><p>J. Klensin, &quot;Simple Mail Transfer Protocol&quot;, RFC 2821, April 2001.
    (<a href="http://www.rfc-editor.org/rfc/rfc2821.txt">http://www.rfc-editor.org/rfc/rfc2821.txt</a>)</p></li>
<li><p>P. Hoffman, &quot;SMTP Service Extension for Secure SMTP over Transport
    Layer Security&quot;, RFC 3207, February 2002.
    (<a href="http://www.rfc-editor.org/rfc/rfc3207.txt">http://www.rfc-editor.org/rfc/rfc3207.txt</a>)</p></li>
<li><p>J. Myers, &quot;SMTP Service Extension for Authentication&quot;, 
    RFC 2554, March 1999.
    (<a href="http://www.rfc-editor.org/rfc/rfc2554.txt">http://www.rfc-editor.org/rfc/rfc2554.txt</a>)</p></li>
</ol>
</div>
<div id="section5" class="section"><h2><a name="section5">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>smtp</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../ftp/ftp.html">ftp</a>, <a href="../../../../index.html#key506">http</a>, <a href="mime.html">mime</a>, <a href="../pop3/pop3.html">pop3</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key315">email</a>, <a href="../../../../index.html#key136">internet</a>, <a href="../../../../index.html#key310">mail</a>, <a href="../../../../index.html#key228">mime</a>, <a href="../../../../index.html#key276">net</a>, <a href="../../../../index.html#key316">rfc 2554</a>, <a href="../../../../index.html#key309">rfc 2821</a>, <a href="../../../../index.html#key314">rfc 3207</a>, <a href="../../../../index.html#key312">rfc 821</a>, <a href="../../../../index.html#key313">rfc 822</a>, <a href="../../../../index.html#key317">smtp</a>, <a href="../../../../index.html#key311">tls</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 1999-2000 Marshall T. Rose and others</p>
</div>
</div></body></html>







|




|



|




|


|








246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
<li><p>Jonathan B. Postel, &quot;SIMPLE MAIL TRANSFER PROTOCOL&quot;, RFC 821, August 1982.
    (<a href="http://www.rfc-editor.org/rfc/rfc821.txt">http://www.rfc-editor.org/rfc/rfc821.txt</a>)</p></li>
<li><p>J. Klensin, &quot;Simple Mail Transfer Protocol&quot;, RFC 2821, April 2001.
    (<a href="http://www.rfc-editor.org/rfc/rfc2821.txt">http://www.rfc-editor.org/rfc/rfc2821.txt</a>)</p></li>
<li><p>P. Hoffman, &quot;SMTP Service Extension for Secure SMTP over Transport
    Layer Security&quot;, RFC 3207, February 2002.
    (<a href="http://www.rfc-editor.org/rfc/rfc3207.txt">http://www.rfc-editor.org/rfc/rfc3207.txt</a>)</p></li>
<li><p>J. Myers, &quot;SMTP Service Extension for Authentication&quot;,
    RFC 2554, March 1999.
    (<a href="http://www.rfc-editor.org/rfc/rfc2554.txt">http://www.rfc-editor.org/rfc/rfc2554.txt</a>)</p></li>
</ol>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>smtp</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../ftp/ftp.html">ftp</a>, <a href="../../../../index.html#key505">http</a>, <a href="mime.html">mime</a>, <a href="../pop3/pop3.html">pop3</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key315">email</a>, <a href="../../../../index.html#key138">internet</a>, <a href="../../../../index.html#key310">mail</a>, <a href="../../../../index.html#key228">mime</a>, <a href="../../../../index.html#key276">net</a>, <a href="../../../../index.html#key316">rfc 2554</a>, <a href="../../../../index.html#key309">rfc 2821</a>, <a href="../../../../index.html#key314">rfc 3207</a>, <a href="../../../../index.html#key312">rfc 821</a>, <a href="../../../../index.html#key313">rfc 822</a>, <a href="../../../../index.html#key317">smtp</a>, <a href="../../../../index.html#key311">tls</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 1999-2000 Marshall T. Rose and others</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/multiplexer/multiplexer.html.

111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<p>multiplexer - One-to-many communication with sockets.</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<p>multiplexer - One-to-many communication with sockets.</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
<dt><b class="option">debuglevel</b></dt>
<dd><p>Sets the debug level to use for the multiplexer instance, according to
those specified by the <b class="package"><a href="../log/logger.html">logger</a></b> package (debug, info, notice,
warn, error, critical).</p></dd>
</dl></dd>
<dt><a name="4"><b class="cmd">${multiplexer_instance}::AddFilter</b> <i class="arg">cmdprefix</i></a></dt>
<dd><p>Command to add a filter for data that passes through the multiplexer
instance. 
The registered <i class="arg">cmdprefix</i> is called when data arrives at a
multiplexer instance. If there is more than one filter command
registered at the instance they will be called in the order of
registristation, and each filter will get the result of the preceding
filter as its argument. The first filter gets the incoming data as its
argument. The result returned by the last filter is the data which
will be broadcast to all clients of the multiplexer instance.







|







166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
<dt><b class="option">debuglevel</b></dt>
<dd><p>Sets the debug level to use for the multiplexer instance, according to
those specified by the <b class="package"><a href="../log/logger.html">logger</a></b> package (debug, info, notice,
warn, error, critical).</p></dd>
</dl></dd>
<dt><a name="4"><b class="cmd">${multiplexer_instance}::AddFilter</b> <i class="arg">cmdprefix</i></a></dt>
<dd><p>Command to add a filter for data that passes through the multiplexer
instance.
The registered <i class="arg">cmdprefix</i> is called when data arrives at a
multiplexer instance. If there is more than one filter command
registered at the instance they will be called in the order of
registristation, and each filter will get the result of the preceding
filter as its argument. The first filter gets the incoming data as its
argument. The result returned by the last filter is the data which
will be broadcast to all clients of the multiplexer instance.
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
<dt><a name="9"><b class="cmd">cmdprefix</b> <i class="arg">chan</i> <i class="arg">clientaddress</i> <i class="arg">clientport</i></a></dt>
<dd><p>The arguments contain information about the client which signaled the
EOF: The channel connecting us to the client, its ip-address, and its
ip-port.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>multiplexer</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key676">chat</a>, <a href="../../../../index.html#key677">multiplexer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>







|



|










214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
<dt><a name="9"><b class="cmd">cmdprefix</b> <i class="arg">chan</i> <i class="arg">clientaddress</i> <i class="arg">clientport</i></a></dt>
<dd><p>The arguments contain information about the client which signaled the
EOF: The channel connecting us to the client, its ip-address, and its
ip-port.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>multiplexer</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key676">chat</a>, <a href="../../../../index.html#key677">multiplexer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/namespacex/namespacex.html.

180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
<dt><a name="10"><b class="cmd">::namespacex state drop</b> <i class="arg">namespace</i></a></dt>
<dd><p>This command unsets all variables in the specified <i class="arg">namespace</i> and
its child namespaces.
The result of the command is the empty string.</p></dd>
</dl>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key95">extended namespace</a>, <a href="../../../../index.html#key90">info</a>, <a href="../../../../index.html#key93">namespace unknown</a>, <a href="../../../../index.html#key94">namespace utilities</a>, <a href="../../../../index.html#key92">state (de)serialization</a>, <a href="../../../../index.html#key96">unknown hooking</a>, <a href="../../../../index.html#key91">utilities</a></p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 200? Neil Madden (http://wiki.tcl.tk/12790)<br>
Copyright &copy; 200? Various (http://wiki.tcl.tk/1489)<br>
Copyright &copy; 2010 Documentation, Andreas Kupries</p>
</div>
</div></body></html>







|







180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
<dt><a name="10"><b class="cmd">::namespacex state drop</b> <i class="arg">namespace</i></a></dt>
<dd><p>This command unsets all variables in the specified <i class="arg">namespace</i> and
its child namespaces.
The result of the command is the empty string.</p></dd>
</dl>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key95">extended namespace</a>, <a href="../../../../index.html#key91">info</a>, <a href="../../../../index.html#key94">namespace unknown</a>, <a href="../../../../index.html#key93">namespace utilities</a>, <a href="../../../../index.html#key92">state (de)serialization</a>, <a href="../../../../index.html#key96">unknown hooking</a>, <a href="../../../../index.html#key90">utilities</a></p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 200? Neil Madden (http://wiki.tcl.tk/12790)<br>
Copyright &copy; 200? Various (http://wiki.tcl.tk/1489)<br>
Copyright &copy; 2010 Documentation, Andreas Kupries</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/ncgi/ncgi.html.

111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">EXAMPLES</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">EXAMPLES</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
puts &quot;&lt;html&gt; File uploaded at &lt;a href=\&quot;/images/$filedesc\&quot;&gt;$filedesc&lt;/a&gt; &lt;/html&gt;&quot;
set filename /www/images/$filedesc
set fh [open $filename w]
puts -nonewline $fh $filedata
close $fh
</pre>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>ncgi</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../html/html.html">html</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key665">CGI</a>, <a href="../../../../index.html#key664">cookie</a>, <a href="../../../../index.html#key596">form</a>, <a href="../../../../index.html#key597">html</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>CGI programming</p>
</div>
</div></body></html>







|



|













353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
puts &quot;&lt;html&gt; File uploaded at &lt;a href=\&quot;/images/$filedesc\&quot;&gt;$filedesc&lt;/a&gt; &lt;/html&gt;&quot;
set filename /www/images/$filedesc
set fh [open $filename w]
puts -nonewline $fh $filedata
close $fh
</pre>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>ncgi</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../html/html.html">html</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key665">CGI</a>, <a href="../../../../index.html#key664">cookie</a>, <a href="../../../../index.html#key596">form</a>, <a href="../../../../index.html#key597">html</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>CGI programming</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/nmea/nmea.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
<dd><p>Sets the rate at which lines are processed from the open file, in milliseconds. The rate remains
consistant across files, there does not need to be a file currently open to use this command.
Set to 0 to disable automatic line processing.</p></dd>
<dt><a name="9"><b class="cmd">::nmea::log</b> <span class="opt">?file?</span></a></dt>
<dd><p>Starts or stops input logging. If a file name is specified then all NMEA data recieved on
the open port will be logged to the <span class="opt">?file?</span> in append mode. If file is an empty string then
any logging will be stopped. If no file is specified then returns a boolean value indicating
if logging is currently enabled. Data written to the port by <b class="cmd">write</b>, 
 data read from files, or input made using <b class="cmd">input</b>, is not logged.</p></dd>
<dt><a name="10"><b class="cmd">::nmea::checksum</b> <i class="arg">data</i></a></dt>
<dd><p>Returns the checksum of the supplied data.</p></dd>
<dt><a name="11"><b class="cmd">::nmea::write</b> <i class="arg">sentence</i> <i class="arg">data</i></a></dt>
<dd><p>If there is a currently open port, this command will write the specified sentence and data to the port
in proper NMEA checksummed format.</p></dd>
<dt><a name="12"><b class="cmd">::nmea::event</b> <i class="arg">setence</i> <span class="opt">?command?</span></a></dt>
<dd><p>Registers a handler proc for a given NMEA <i class="arg">sentence</i>. There may be at most one handler per
sentence, any existing handler is replaced.  
If no command is specified, returns the name of the current handler for the given <i class="arg">setence</i>
or an empty string if none exists. In addition to the incoming sentences there are 2 builtin types,
EOF and DEFAULT. The handler for the DEFAULT setence is invoked if there is not a specific handler
for that sentence. The EOF handler is invoked when End Of File is reached on the open file or port.</p>
<p>The handler procedures, with the exception of the builtin types,must take exactly one argument,
which is a list of the data values.
The DEFAULT handler should have two arguments, the sentence type and the data values.







|








|







182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
<dd><p>Sets the rate at which lines are processed from the open file, in milliseconds. The rate remains
consistant across files, there does not need to be a file currently open to use this command.
Set to 0 to disable automatic line processing.</p></dd>
<dt><a name="9"><b class="cmd">::nmea::log</b> <span class="opt">?file?</span></a></dt>
<dd><p>Starts or stops input logging. If a file name is specified then all NMEA data recieved on
the open port will be logged to the <span class="opt">?file?</span> in append mode. If file is an empty string then
any logging will be stopped. If no file is specified then returns a boolean value indicating
if logging is currently enabled. Data written to the port by <b class="cmd">write</b>,
 data read from files, or input made using <b class="cmd">input</b>, is not logged.</p></dd>
<dt><a name="10"><b class="cmd">::nmea::checksum</b> <i class="arg">data</i></a></dt>
<dd><p>Returns the checksum of the supplied data.</p></dd>
<dt><a name="11"><b class="cmd">::nmea::write</b> <i class="arg">sentence</i> <i class="arg">data</i></a></dt>
<dd><p>If there is a currently open port, this command will write the specified sentence and data to the port
in proper NMEA checksummed format.</p></dd>
<dt><a name="12"><b class="cmd">::nmea::event</b> <i class="arg">setence</i> <span class="opt">?command?</span></a></dt>
<dd><p>Registers a handler proc for a given NMEA <i class="arg">sentence</i>. There may be at most one handler per
sentence, any existing handler is replaced.
If no command is specified, returns the name of the current handler for the given <i class="arg">setence</i>
or an empty string if none exists. In addition to the incoming sentences there are 2 builtin types,
EOF and DEFAULT. The handler for the DEFAULT setence is invoked if there is not a specific handler
for that sentence. The EOF handler is invoked when End Of File is reached on the open file or port.</p>
<p>The handler procedures, with the exception of the builtin types,must take exactly one argument,
which is a list of the data values.
The DEFAULT handler should have two arguments, the sentence type and the data values.
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
proc handle_unknown {name data} {
    puts &quot;unknown data type $name&quot;
}
</pre>
</dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>nmea</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key386">gps</a>, <a href="../../../../index.html#key385">nmea</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006-2009, Aaron Faupell &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
proc handle_unknown {name data} {
    puts &quot;unknown data type $name&quot;
}
</pre>
</dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>nmea</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key386">gps</a>, <a href="../../../../index.html#key385">nmea</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006-2009, Aaron Faupell &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/nns/nns_auto.html.

116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">OPTIONS</a></li>
<li class="section"><a href="#section4">EVENTS</a></li>
<li class="section"><a href="#section5">DESIGN</a></li>
<li class="section"><a href="#section6">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">OPTIONS</a></li>
<li class="section"><a href="#section4">EVENTS</a></li>
<li class="section"><a href="#section5">DESIGN</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
timer is canceled, a <i class="term">re-connection</i> event generated, and the
package proceeds to re-enter the remembered bound names and continous
searches.</p>
<p>Another loss of the connection, be it during or after re-entering the
remembered information simply restarts the timer and subsequent
reconnection attempts.</p>
</div>
<div id="section6" class="section"><h2><a name="section6">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>nameserv</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="nns_client.html">nameserv(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>







|



|







200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
timer is canceled, a <i class="term">re-connection</i> event generated, and the
package proceeds to re-enter the remembered bound names and continous
searches.</p>
<p>Another loss of the connection, be it during or after re-entering the
remembered information simply restarts the timer and subsequent
reconnection attempts.</p>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>nameserv</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="nns_client.html">nameserv(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>

Changes to embedded/www/tcllib/files/modules/nns/nns_client.html.

118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">CONNECTION HANDLING</a></li>
<li class="section"><a href="#section4">EVENTS</a></li>
<li class="section"><a href="#section5">OPTIONS</a></li>
<li class="section"><a href="#section6">ASYNCHRONOUS AND CONTINUOUS SEARCHES</a></li>
<li class="section"><a href="#section7">HISTORY</a></li>
<li class="section"><a href="#section8">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">CONNECTION HANDLING</a></li>
<li class="section"><a href="#section4">EVENTS</a></li>
<li class="section"><a href="#section5">OPTIONS</a></li>
<li class="section"><a href="#section6">ASYNCHRONOUS AND CONTINUOUS SEARCHES</a></li>
<li class="section"><a href="#section7">HISTORY</a></li>
<li class="section"><a href="#section8">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
<dt>0.2</dt>
<dd><p>Extended the client with the ability to generate events when it loses
its connection to the name service. Based on package <b class="package"><a href="../uev/uevent.html">uevent</a></b>.</p></dd>
<dt>0.1</dt>
<dd><p>Initial implementation of the client.</p></dd>
</dl>
</div>
<div id="section8" class="section"><h2><a name="section8">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>nameserv</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="nns_common.html">nameserv::common(n)</a>, <a href="nns_server.html">nameserv::server(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>







|



|







375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
<dt>0.2</dt>
<dd><p>Extended the client with the ability to generate events when it loses
its connection to the name service. Based on package <b class="package"><a href="../uev/uevent.html">uevent</a></b>.</p></dd>
<dt>0.1</dt>
<dd><p>Initial implementation of the client.</p></dd>
</dl>
</div>
<div id="section8" class="section"><h2><a name="section8">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>nameserv</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="nns_common.html">nameserv::common(n)</a>, <a href="nns_server.html">nameserv::server(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>

Changes to embedded/www/tcllib/files/modules/nns/nns_common.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
<dl class="definitions">
<dt><a name="1"><b class="cmd">::nameserv::common::port</b></a></dt>
<dd><p>The result returned by the command is the id of the default TCP/IP
port a nameservice server will listen on, and a name service client
will try to connect to.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>nameserv</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>nameserv::client(n), <a href="nns_server.html">nameserv::server(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>







|



|







151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
<dl class="definitions">
<dt><a name="1"><b class="cmd">::nameserv::common::port</b></a></dt>
<dd><p>The result returned by the command is the id of the default TCP/IP
port a nameservice server will listen on, and a name service client
will try to connect to.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>nameserv</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>nameserv::client(n), <a href="nns_server.html">nameserv::server(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>

Changes to embedded/www/tcllib/files/modules/nns/nns_intro.html.

190
191
192
193
194
195
196

197
198
199
200
201
202
203
204
205
206
207
208
209
<b class="package"><a href="nns_server.html">nameserv::server</a></b> to talk to each other. It is of no interest
to users of either the packages or applications.</p>
<p>Developers wishing to modify and/or extend or to just understand the
internals of the nameservice facility however are strongly advised to
read it.</p>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>

<p>This document, will undoubtedly contain bugs and other problems.
Please report such in the category <em>nameserv</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.
Please also report any ideas for enhancements you may have.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="nns_client.html">nameserv(n)</a>, <a href="nns_auto.html">nameserv::auto(n)</a>, <a href="nns_common.html">nameserv::common(n)</a>, <a href="nns_protocol.html">nameserv::protocol(n)</a>, <a href="nns_server.html">nameserv::server(n)</a>, <a href="../../apps/nnsd.html">nnsd(n)</a>, nss(n)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key30">client</a>, <a href="../../../../index.html#key29">name service</a>, <a href="../../../../index.html#key61">server</a></p>
</div>







>
|

|

|
<







190
191
192
193
194
195
196
197
198
199
200
201
202

203
204
205
206
207
208
209
<b class="package"><a href="nns_server.html">nameserv::server</a></b> to talk to each other. It is of no interest
to users of either the packages or applications.</p>
<p>Developers wishing to modify and/or extend or to just understand the
internals of the nameservice facility however are strongly advised to
read it.</p>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>nameserv</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>

</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="nns_client.html">nameserv(n)</a>, <a href="nns_auto.html">nameserv::auto(n)</a>, <a href="nns_common.html">nameserv::common(n)</a>, <a href="nns_protocol.html">nameserv::protocol(n)</a>, <a href="nns_server.html">nameserv::server(n)</a>, <a href="../../apps/nnsd.html">nnsd(n)</a>, nss(n)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key30">client</a>, <a href="../../../../index.html#key29">name service</a>, <a href="../../../../index.html#key61">server</a></p>
</div>

Changes to embedded/www/tcllib/files/modules/nns/nns_protocol.html.

119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section2">Nano Name Service Protocol Version 1</a>
<ul>
<li class="subsection"><a href="#subsection1">Basic Layer</a></li>
<li class="subsection"><a href="#subsection2">Message Layer</a></li>
</ul>
</li>
<li class="section"><a href="#section3">Nano Name Service Protocol Extension: Continuous Search</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section2">Nano Name Service Protocol Version 1</a>
<ul>
<li class="subsection"><a href="#subsection1">Basic Layer</a></li>
<li class="subsection"><a href="#subsection2">Message Layer</a></li>
</ul>
</li>
<li class="section"><a href="#section3">Nano Name Service Protocol Extension: Continuous Search</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
<p>The <i class="arg">response</i> has to be a dictionary containing the matching
names as keys, and mapping them to the data associated with it at
<b class="method">Bind</b>-time.
The argument coming before the response tells the client whether the
names in the response were added or removed from the service.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>nameserv</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../comm/comm_wire.html">comm_wire(n)</a>, <a href="nns_client.html">nameserv(n)</a>, <a href="nns_server.html">nameserv::server(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key31">comm</a>, <a href="../../../../index.html#key29">name service</a>, <a href="../../../../index.html#key139">protocol</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007-2008 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|







|








243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
<p>The <i class="arg">response</i> has to be a dictionary containing the matching
names as keys, and mapping them to the data associated with it at
<b class="method">Bind</b>-time.
The argument coming before the response tells the client whether the
names in the response were added or removed from the service.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>nameserv</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../comm/comm_wire.html">comm_wire(n)</a>, <a href="nns_client.html">nameserv(n)</a>, <a href="nns_server.html">nameserv::server(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key33">comm</a>, <a href="../../../../index.html#key29">name service</a>, <a href="../../../../index.html#key140">protocol</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007-2008 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/nns/nns_server.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">OPTIONS</a></li>
<li class="section"><a href="#section4">HISTORY</a></li>
<li class="section"><a href="#section5">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">OPTIONS</a></li>
<li class="section"><a href="#section4">HISTORY</a></li>
<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
continuous searches.</p></dd>
<dt>0.2</dt>
<dd><p>Changed name of -local switch to -localonly.</p></dd>
<dt>0.1</dt>
<dd><p>Initial implementation of the server.</p></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>nameserv</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>nameserv::client(n), <a href="nns_common.html">nameserv::common(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>







|



|







226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
continuous searches.</p></dd>
<dt>0.2</dt>
<dd><p>Changed name of -local switch to -localonly.</p></dd>
<dt>0.1</dt>
<dd><p>Initial implementation of the server.</p></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>nameserv</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>nameserv::client(n), <a href="nns_common.html">nameserv::common(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>

Changes to embedded/www/tcllib/files/modules/nntp/nntp.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">EXAMPLE</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">EXAMPLE</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
(including <i class="arg">msgid1</i> and <i class="arg">msgid2</i>) are queried.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">EXAMPLE</a></h2>
<p>A bigger example for posting a single article.</p>
<pre class="example">
    package require nntp 
    set n [nntp::nntp NNTP_SERVER] 
    $n post &quot;From: [email protected] (USER_FULL) 
    Path: COMPUTERNAME!USERNAME 
    Newsgroups: alt.test 
    Subject: Tcl test post -ignore 
    Message-ID: &lt;[pid][clock seconds] 
    @COMPUTERNAME&gt; 
    Date: [clock format [clock seconds] -format &quot;%a, %d % 
    b %y %H:%M:%S GMT&quot; -gmt true] 
    
    Test message body&quot; 
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>nntp</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key510">news</a>, <a href="../../../../index.html#key635">nntp</a>, <a href="../../../../index.html#key638">nntpclient</a>, <a href="../../../../index.html#key636">rfc 1036</a>, <a href="../../../../index.html#key637">rfc 977</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
</div></body></html>







|
|
|
|
|
|
|
|
|
|
<
|


|



|




|





371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387

388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
(including <i class="arg">msgid1</i> and <i class="arg">msgid2</i>) are queried.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">EXAMPLE</a></h2>
<p>A bigger example for posting a single article.</p>
<pre class="example">
    package require nntp
    set n [nntp::nntp NNTP_SERVER]
    $n post &quot;From: [email protected] (USER_FULL)
    Path: COMPUTERNAME!USERNAME
    Newsgroups: alt.test
    Subject: Tcl test post -ignore
    Message-ID: &lt;[pid][clock seconds]
    @COMPUTERNAME&gt;
    Date: [clock format [clock seconds] -format &quot;%a, %d %
    b %y %H:%M:%S GMT&quot; -gmt true]

    Test message body&quot;
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>nntp</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key511">news</a>, <a href="../../../../index.html#key635">nntp</a>, <a href="../../../../index.html#key638">nntpclient</a>, <a href="../../../../index.html#key636">rfc 1036</a>, <a href="../../../../index.html#key637">rfc 977</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/ntp/ntp_time.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">AUTHORS</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">AUTHORS</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
<li><a href="#10"><b class="cmd">::time::cleanup</b> <i class="arg">token</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package implements a client for the RFC 868 TIME protocol
(<a href="http://www.rfc-editor.org/rfc/rfc868.txt">http://www.rfc-editor.org/rfc/rfc868.txt</a>) and also a minimal
client for the RFC 2030 Simple Network Time Protocol 
(<a href="http://www.rfc-editor.org/rfc/rfc2030.txt">http://www.rfc-editor.org/rfc/rfc2030.txt</a>).
RFC 868 returns the time in seconds since 1 January 1900
to either tcp or udp clients. RFC 2030 also gives this time but also
provides a fractional part which is not used in this client.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::time::gettime</b> <span class="opt">?<i class="arg">options</i>?</span> <i class="arg">timeserver</i> <span class="opt">?<i class="arg">port</i>?</span></a></dt>
<dd><p>Get the time from <i class="arg">timeserver</i>. You may specify any of the options
listed for the <b class="cmd">configure</b> command here. This command returns a
token which must then be used with the remaining commands in this
package. Once you have finished, you should use <b class="cmd"><a href="../../../../index.html#key168">cleanup</a></b> to
release all resources. The default port is <b class="const">37</b>.</p></dd>
<dt><a name="2"><b class="cmd">::time::getsntp</b> <span class="opt">?<i class="arg">options</i>?</span> <i class="arg">timeserver</i> <span class="opt">?<i class="arg">port</i>?</span></a></dt>
<dd><p>Get the time from an SNTP server. This accepts exactly the same
arguments as <b class="cmd">::time::gettime</b> except that the default port is 
<b class="const">123</b>. The result is a token as per <b class="cmd">::time::gettime</b> and
should be handled in the same way.</p>
<p>Note that it is unlikely that any SNTP server will reply using tcp so
you will require the <b class="package">tcludp</b> or the <b class="package">ceptcl</b>
package. If a suitable package can be loaded then the udp protocol
will be used by default.</p></dd>
<dt><a name="3"><b class="cmd">::time::configure</b> <span class="opt">?<i class="arg">options</i>?</span></a></dt>







|















|







144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
<li><a href="#10"><b class="cmd">::time::cleanup</b> <i class="arg">token</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package implements a client for the RFC 868 TIME protocol
(<a href="http://www.rfc-editor.org/rfc/rfc868.txt">http://www.rfc-editor.org/rfc/rfc868.txt</a>) and also a minimal
client for the RFC 2030 Simple Network Time Protocol
(<a href="http://www.rfc-editor.org/rfc/rfc2030.txt">http://www.rfc-editor.org/rfc/rfc2030.txt</a>).
RFC 868 returns the time in seconds since 1 January 1900
to either tcp or udp clients. RFC 2030 also gives this time but also
provides a fractional part which is not used in this client.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::time::gettime</b> <span class="opt">?<i class="arg">options</i>?</span> <i class="arg">timeserver</i> <span class="opt">?<i class="arg">port</i>?</span></a></dt>
<dd><p>Get the time from <i class="arg">timeserver</i>. You may specify any of the options
listed for the <b class="cmd">configure</b> command here. This command returns a
token which must then be used with the remaining commands in this
package. Once you have finished, you should use <b class="cmd"><a href="../../../../index.html#key168">cleanup</a></b> to
release all resources. The default port is <b class="const">37</b>.</p></dd>
<dt><a name="2"><b class="cmd">::time::getsntp</b> <span class="opt">?<i class="arg">options</i>?</span> <i class="arg">timeserver</i> <span class="opt">?<i class="arg">port</i>?</span></a></dt>
<dd><p>Get the time from an SNTP server. This accepts exactly the same
arguments as <b class="cmd">::time::gettime</b> except that the default port is
<b class="const">123</b>. The result is a token as per <b class="cmd">::time::gettime</b> and
should be handled in the same way.</p>
<p>Note that it is unlikely that any SNTP server will reply using tcp so
you will require the <b class="package">tcludp</b> or the <b class="package">ceptcl</b>
package. If a suitable package can be loaded then the udp protocol
will be used by default.</p></dd>
<dt><a name="3"><b class="cmd">::time::configure</b> <span class="opt">?<i class="arg">options</i>?</span></a></dt>
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
}
time::getsntp -command on_time pool.ntp.org
</pre>
</div>
<div id="section3" class="section"><h2><a name="section3">AUTHORS</a></h2>
<p>Pat Thoyts</p>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>ntp</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>ntp</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>







|



|







232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
}
time::getsntp -command on_time pool.ntp.org
</pre>
</div>
<div id="section3" class="section"><h2><a name="section3">AUTHORS</a></h2>
<p>Pat Thoyts</p>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>ntp</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>ntp</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>

Changes to embedded/www/tcllib/files/modules/ooutil/ooutil.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">AUTHORS</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">AUTHORS</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
</pre>
</dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">AUTHORS</a></h2>
<p>Donal Fellows, Andreas Kupries</p>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>oo::util</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../snit/snit.html">snit(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key749">TclOO</a>, <a href="../../../../index.html#key519">callback</a>, <a href="../../../../index.html#key750">class methods</a>, <a href="../../../../index.html#key752">class variables</a>, <a href="../../../../index.html#key572">command prefix</a>, <a href="../../../../index.html#key575">currying</a>, <a href="../../../../index.html#key748">method reference</a>, <a href="../../../../index.html#key753">my method</a>, <a href="../../../../index.html#key751">singleton</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Utility</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2011-2013 Andreas Kupries, BSD licensed</p>
</div>
</div></body></html>







|



|







|








255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
</pre>
</dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">AUTHORS</a></h2>
<p>Donal Fellows, Andreas Kupries</p>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>oo::util</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../snit/snit.html">snit(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key749">TclOO</a>, <a href="../../../../index.html#key519">callback</a>, <a href="../../../../index.html#key750">class methods</a>, <a href="../../../../index.html#key753">class variables</a>, <a href="../../../../index.html#key573">command prefix</a>, <a href="../../../../index.html#key575">currying</a>, <a href="../../../../index.html#key748">method reference</a>, <a href="../../../../index.html#key752">my method</a>, <a href="../../../../index.html#key751">singleton</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Utility</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2011-2013 Andreas Kupries, BSD licensed</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/otp/otp.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">REFERENCES</a></li>
<li class="section"><a href="#section5">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">REFERENCES</a></li>
<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
system as described in RFC 2289 (1). This system uses message-digest
algorithms to sequentially hash a passphrase to create single-use
passwords. The resulting data is then provided to the user as either
hexadecimal digits or encoded using a dictionary of 2048 words. This
system is used by OpenBSD for secure login and can be used as a SASL
mechanism for authenticating users.</p>
<p>In this implementation we provide support for four algorithms that are
included in the tcllib distribution: MD5 (2), MD4 (3), RIPE-MD160 (4) 
and SHA-1 (5).</p>
</div>
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::otp::otp-md4</b> <span class="opt">?<i class="arg">-hex</i>?</span> <span class="opt">?<i class="arg">-words</i>?</span> <i class="arg">-seed seed</i> <i class="arg">-count count</i> <i class="arg">data</i></a></dt>
<dd></dd>
<dt><a name="2"><b class="cmd">::otp::otp-md5</b> <span class="opt">?<i class="arg">-hex</i>?</span> <span class="opt">?<i class="arg">-words</i>?</span> <i class="arg">-seed seed</i> <i class="arg">-count count</i> <i class="arg">data</i></a></dt>







|







145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
system as described in RFC 2289 (1). This system uses message-digest
algorithms to sequentially hash a passphrase to create single-use
passwords. The resulting data is then provided to the user as either
hexadecimal digits or encoded using a dictionary of 2048 words. This
system is used by OpenBSD for secure login and can be used as a SASL
mechanism for authenticating users.</p>
<p>In this implementation we provide support for four algorithms that are
included in the tcllib distribution: MD5 (2), MD4 (3), RIPE-MD160 (4)
and SHA-1 (5).</p>
</div>
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::otp::otp-md4</b> <span class="opt">?<i class="arg">-hex</i>?</span> <span class="opt">?<i class="arg">-words</i>?</span> <i class="arg">-seed seed</i> <i class="arg">-count count</i> <i class="arg">data</i></a></dt>
<dd></dd>
<dt><a name="2"><b class="cmd">::otp::otp-md5</b> <span class="opt">?<i class="arg">-hex</i>?</span> <span class="opt">?<i class="arg">-words</i>?</span> <i class="arg">-seed seed</i> <i class="arg">-count count</i> <i class="arg">data</i></a></dt>
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
<li><p>Haller, N. et al., &quot;A One-Time Password System&quot;, RFC 2289, February 1998.
	<a href="http://www.rfc-editor.org/rfc/rfc2289.txt">http://www.rfc-editor.org/rfc/rfc2289.txt</a></p></li>
<li><p>Rivest, R., &quot;The MD5 Message-Digest Algorithm&quot;, RFC 1321, MIT and
       RSA Data Security, Inc, April 1992.
	(<a href="http://www.rfc-editor.org/rfc/rfc1321.txt">http://www.rfc-editor.org/rfc/rfc1321.txt</a>)</p></li>
<li><p>Rivest, R., &quot;The MD4 Message Digest Algorithm&quot;, RFC 1320, MIT,
       April 1992. (<a href="http://www.rfc-editor.org/rfc/rfc1320.txt">http://www.rfc-editor.org/rfc/rfc1320.txt</a>)</p></li>
<li><p>H. Dobbertin, A. Bosselaers, B. Preneel, 
        &quot;RIPEMD-160, a strengthened version of RIPEMD&quot;
        <a href="http://www.esat.kuleuven.ac.be/~cosicart/pdf/AB-9601/AB-9601.pdf">http://www.esat.kuleuven.ac.be/~cosicart/pdf/AB-9601/AB-9601.pdf</a></p></li>
<li><p>&quot;Secure Hash Standard&quot;, National Institute of Standards
        and Technology, U.S. Department Of Commerce, April 1995.
	(<a href="http://www.itl.nist.gov/fipspubs/fip180-1.htm">http://www.itl.nist.gov/fipspubs/fip180-1.htm</a>)</p></li>
</ol>
</div>
<div id="section5" class="section"><h2><a name="section5">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>otp</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../sasl/sasl.html">SASL</a>, <a href="../md4/md4.html">md4</a>, <a href="../md5/md5.html">md5</a>, <a href="../ripemd/ripemd160.html">ripemd160</a>, <a href="../sha1/sha1.html">sha1</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>







|







|



|







179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
<li><p>Haller, N. et al., &quot;A One-Time Password System&quot;, RFC 2289, February 1998.
	<a href="http://www.rfc-editor.org/rfc/rfc2289.txt">http://www.rfc-editor.org/rfc/rfc2289.txt</a></p></li>
<li><p>Rivest, R., &quot;The MD5 Message-Digest Algorithm&quot;, RFC 1321, MIT and
       RSA Data Security, Inc, April 1992.
	(<a href="http://www.rfc-editor.org/rfc/rfc1321.txt">http://www.rfc-editor.org/rfc/rfc1321.txt</a>)</p></li>
<li><p>Rivest, R., &quot;The MD4 Message Digest Algorithm&quot;, RFC 1320, MIT,
       April 1992. (<a href="http://www.rfc-editor.org/rfc/rfc1320.txt">http://www.rfc-editor.org/rfc/rfc1320.txt</a>)</p></li>
<li><p>H. Dobbertin, A. Bosselaers, B. Preneel,
        &quot;RIPEMD-160, a strengthened version of RIPEMD&quot;
        <a href="http://www.esat.kuleuven.ac.be/~cosicart/pdf/AB-9601/AB-9601.pdf">http://www.esat.kuleuven.ac.be/~cosicart/pdf/AB-9601/AB-9601.pdf</a></p></li>
<li><p>&quot;Secure Hash Standard&quot;, National Institute of Standards
        and Technology, U.S. Department Of Commerce, April 1995.
	(<a href="http://www.itl.nist.gov/fipspubs/fip180-1.htm">http://www.itl.nist.gov/fipspubs/fip180-1.htm</a>)</p></li>
</ol>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>otp</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../sasl/sasl.html">SASL</a>, <a href="../md4/md4.html">md4</a>, <a href="../md5/md5.html">md5</a>, <a href="../ripemd/ripemd160.html">ripemd160</a>, <a href="../sha1/sha1.html">sha1</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>

Changes to embedded/www/tcllib/files/modules/page/page_intro.html.

112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140

141
142
143
144

145
146
147
148
149
150
151
152
153
154
155
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>page_intro - page introduction</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p><i class="term"><a href="../../../../index.html#key194">page</a></i> (short for <em>parser generator</em>) stands for a set of
related packages which help in the construction of parser generators,
and other utilities doing text processing.</p>
<p>They are mainly geared towards supporting the Tcllib application
<b class="syscmd"><a href="../../apps/page.html">page</a></b>, with the package <b class="package">page::pluginmgr</b> in a central
role as the plugin management for the application. The other packages
are performing low-level text processing and utility tasks geared
towards parser generation and mainly accessed by <b class="syscmd"><a href="../../apps/page.html">page</a></b> through
plugins.</p>
<p>The packages implementing the plugins are not documented as regular
packages, as they cannot be loaded into a general interpreter, like
tclsh, without extensive preparation of the interpreter. Preparation
which is done for them by the plugin manager.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>

<p>This document, will undoubtedly contain bugs and other problems.
Please report such in the category <em>page</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have.</p>

</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key194">page</a>, <a href="../../../../index.html#key192">parser generator</a>, <a href="../../../../index.html#key195">text processing</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Page Parser Generator</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|




















|
>
|

|
|
>











112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>page_intro - page introduction</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p><i class="term"><a href="../../../../index.html#key194">page</a></i> (short for <em>parser generator</em>) stands for a set of
related packages which help in the construction of parser generators,
and other utilities doing text processing.</p>
<p>They are mainly geared towards supporting the Tcllib application
<b class="syscmd"><a href="../../apps/page.html">page</a></b>, with the package <b class="package">page::pluginmgr</b> in a central
role as the plugin management for the application. The other packages
are performing low-level text processing and utility tasks geared
towards parser generation and mainly accessed by <b class="syscmd"><a href="../../apps/page.html">page</a></b> through
plugins.</p>
<p>The packages implementing the plugins are not documented as regular
packages, as they cannot be loaded into a general interpreter, like
tclsh, without extensive preparation of the interpreter. Preparation
which is done for them by the plugin manager.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>page</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key194">page</a>, <a href="../../../../index.html#key192">parser generator</a>, <a href="../../../../index.html#key195">text processing</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Page Parser Generator</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/page/page_pluginmgr.html.

120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">CONFIG PLUGIN API</a></li>
<li class="section"><a href="#section4">READER PLUGIN API</a></li>
<li class="section"><a href="#section5">WRITER PLUGIN API</a></li>
<li class="section"><a href="#section6">TRANSFORM PLUGIN API</a></li>
<li class="section"><a href="#section7">PREDEFINED PLUGINS</a></li>
<li class="section"><a href="#section8">FEATURES</a></li>
<li class="section"><a href="#section9">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">CONFIG PLUGIN API</a></li>
<li class="section"><a href="#section4">READER PLUGIN API</a></li>
<li class="section"><a href="#section5">WRITER PLUGIN API</a></li>
<li class="section"><a href="#section6">TRANSFORM PLUGIN API</a></li>
<li class="section"><a href="#section7">PREDEFINED PLUGINS</a></li>
<li class="section"><a href="#section8">FEATURES</a></li>
<li class="section"><a href="#section9">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
691
692
693
694
695
696
697
698

699
700
701
702

703
704
705
706
707
708
709
710
711
712
713
</dl>
</div>
<div id="section8" class="section"><h2><a name="section8">FEATURES</a></h2>
<p>The plugin manager currently checks the plugins for only one feature,
<b class="const">timeable</b>. A plugin supporting this feature is assumed to be
able to collect timing statistics on request.</p>
</div>
<div id="section9" class="section"><h2><a name="section9">BUGS, IDEAS, FEEDBACK</a></h2>

<p>This document, will undoubtedly contain bugs and other problems.
Please report such in the category <em>page</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have.</p>

</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key194">page</a>, <a href="../../../../index.html#key192">parser generator</a>, <a href="../../../../index.html#key195">text processing</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Page Parser Generator</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|
>
|

|
|
>











691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
</dl>
</div>
<div id="section8" class="section"><h2><a name="section8">FEATURES</a></h2>
<p>The plugin manager currently checks the plugins for only one feature,
<b class="const">timeable</b>. A plugin supporting this feature is assumed to be
able to collect timing statistics on request.</p>
</div>
<div id="section9" class="section"><h2><a name="section9">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>page</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key194">page</a>, <a href="../../../../index.html#key192">parser generator</a>, <a href="../../../../index.html#key195">text processing</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Page Parser Generator</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/page/page_util_flow.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">FLOW API</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">FLOW API</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
185
186
187
188
189
190
191
192

193
194
195
196

197
198
199
200
201
202
203
204
205
206
207
<dd><p>Invoking this method requests that all the nodes found in the list
<i class="arg">nodelist</i> are visited after the current iteration.</p></dd>
<dt><a name="4"><i class="arg">flow</i> <b class="method">visita</b> <i class="arg">node</i>...</a></dt>
<dd><p>This is the variadic arguments form of the method <b class="method">visitl</b>, see
above.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>

<p>This document, will undoubtedly contain bugs and other problems.
Please report such in the category <em>page</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have.</p>

</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key375">dataflow</a>, <a href="../../../../index.html#key196">graph walking</a>, <a href="../../../../index.html#key194">page</a>, <a href="../../../../index.html#key192">parser generator</a>, <a href="../../../../index.html#key195">text processing</a>, <a href="../../../../index.html#key193">tree walking</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Page Parser Generator</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|
>
|

|
|
>


|








185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
<dd><p>Invoking this method requests that all the nodes found in the list
<i class="arg">nodelist</i> are visited after the current iteration.</p></dd>
<dt><a name="4"><i class="arg">flow</i> <b class="method">visita</b> <i class="arg">node</i>...</a></dt>
<dd><p>This is the variadic arguments form of the method <b class="method">visitl</b>, see
above.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>page</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key375">dataflow</a>, <a href="../../../../index.html#key197">graph walking</a>, <a href="../../../../index.html#key194">page</a>, <a href="../../../../index.html#key192">parser generator</a>, <a href="../../../../index.html#key195">text processing</a>, <a href="../../../../index.html#key193">tree walking</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Page Parser Generator</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/page/page_util_norm_lemon.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
147
148
149
150
151
152
153
154

155
156
157
158

159
160
161
162
163
164
165
166
167
168
169
<dt><a name="1"><b class="cmd">::page::util::norm::lemon</b> <i class="arg">tree</i></a></dt>
<dd><p>This command assumes the <i class="arg">tree</i> object contains for a lemon
grammar. It normalizes this tree in place. The result is called a
<i class="term">Normalized Lemon Grammar Tree</i>.</p>
<p>The exact operations performed are left undocumented for the moment.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>

<p>This document, will undoubtedly contain bugs and other problems.
Please report such in the category <em>page</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have.</p>

</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key196">graph walking</a>, <a href="../../../../index.html#key197">lemon</a>, <a href="../../../../index.html#key120">normalization</a>, <a href="../../../../index.html#key194">page</a>, <a href="../../../../index.html#key192">parser generator</a>, <a href="../../../../index.html#key195">text processing</a>, <a href="../../../../index.html#key193">tree walking</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Page Parser Generator</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|
>
|

|
|
>


|








147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
<dt><a name="1"><b class="cmd">::page::util::norm::lemon</b> <i class="arg">tree</i></a></dt>
<dd><p>This command assumes the <i class="arg">tree</i> object contains for a lemon
grammar. It normalizes this tree in place. The result is called a
<i class="term">Normalized Lemon Grammar Tree</i>.</p>
<p>The exact operations performed are left undocumented for the moment.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>page</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key197">graph walking</a>, <a href="../../../../index.html#key196">lemon</a>, <a href="../../../../index.html#key120">normalization</a>, <a href="../../../../index.html#key194">page</a>, <a href="../../../../index.html#key192">parser generator</a>, <a href="../../../../index.html#key195">text processing</a>, <a href="../../../../index.html#key193">tree walking</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Page Parser Generator</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/page/page_util_norm_peg.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
185
186
187
188
189
190
191
192

193
194
195
196

197
198
199
200
201
202
203
204
205
206
207
by unary operations, characters, and nonterminals. At last the
tree is flattened by the removal of superfluous inner nodes.</p>
<p>The order matters, to shed as much nodes as possible early, and
to avoid unnecessary work later.</p></li>
</ol></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>

<p>This document, will undoubtedly contain bugs and other problems.
Please report such in the category <em>page</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have.</p>

</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key196">graph walking</a>, <a href="../../../../index.html#key120">normalization</a>, <a href="../../../../index.html#key194">page</a>, <a href="../../../../index.html#key192">parser generator</a>, <a href="../../../../index.html#key195">text processing</a>, <a href="../../../../index.html#key193">tree walking</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Page Parser Generator</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|
>
|

|
|
>


|








185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
by unary operations, characters, and nonterminals. At last the
tree is flattened by the removal of superfluous inner nodes.</p>
<p>The order matters, to shed as much nodes as possible early, and
to avoid unnecessary work later.</p></li>
</ol></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>page</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key197">graph walking</a>, <a href="../../../../index.html#key120">normalization</a>, <a href="../../../../index.html#key194">page</a>, <a href="../../../../index.html#key192">parser generator</a>, <a href="../../../../index.html#key195">text processing</a>, <a href="../../../../index.html#key193">tree walking</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Page Parser Generator</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/page/page_util_peg.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
198
199
200
201
202
203
204
205

206
207
208
209

210
211
212
213
214
215
216
217
218
219
220
<dt><a name="8"><b class="cmd">::page::util::peg::printTclExpr</b> <i class="arg">pe</i></a></dt>
<dd><p>This command converts the parsing expression contained in the nested
list <i class="arg">pe</i> into a Tcl string which can be placed into a Tcl script.
See the package <b class="package"><a href="../grammar_peg/peg.html">grammar::peg</a></b> for the exact syntax of
<i class="arg">pe</i>.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>

<p>This document, will undoubtedly contain bugs and other problems.
Please report such in the category <em>page</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have.</p>

</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key194">page</a>, <a href="../../../../index.html#key192">parser generator</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key195">text processing</a>, <a href="../../../../index.html#key300">transformation</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Page Parser Generator</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|
>
|

|
|
>











198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
<dt><a name="8"><b class="cmd">::page::util::peg::printTclExpr</b> <i class="arg">pe</i></a></dt>
<dd><p>This command converts the parsing expression contained in the nested
list <i class="arg">pe</i> into a Tcl string which can be placed into a Tcl script.
See the package <b class="package"><a href="../grammar_peg/peg.html">grammar::peg</a></b> for the exact syntax of
<i class="arg">pe</i>.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>page</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key194">page</a>, <a href="../../../../index.html#key192">parser generator</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key195">text processing</a>, <a href="../../../../index.html#key300">transformation</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Page Parser Generator</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/page/page_util_quote.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
167
168
169
170
171
172
173
174

175
176
177
178

179
180
181
182
183
184
185
186
187
188
189
<dt><a name="4"><b class="cmd">::page::util::quote::quote'tclcom</b> <i class="arg">char</i></a></dt>
<dd><p>This command takes a Tcl character (internal representation) and
converts it into a string which is accepted by the Tcl parser when
used within a Tcl comment. The string is returned as the result of
this command.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>

<p>This document, will undoubtedly contain bugs and other problems.
Please report such in the category <em>page</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have.</p>

</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key194">page</a>, <a href="../../../../index.html#key192">parser generator</a>, <a href="../../../../index.html#key587">quoting</a>, <a href="../../../../index.html#key195">text processing</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Page Parser Generator</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|
>
|

|
|
>











167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
<dt><a name="4"><b class="cmd">::page::util::quote::quote'tclcom</b> <i class="arg">char</i></a></dt>
<dd><p>This command takes a Tcl character (internal representation) and
converts it into a string which is accepted by the Tcl parser when
used within a Tcl comment. The string is returned as the result of
this command.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>page</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key194">page</a>, <a href="../../../../index.html#key192">parser generator</a>, <a href="../../../../index.html#key587">quoting</a>, <a href="../../../../index.html#key195">text processing</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Page Parser Generator</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/pki/pki.html.

117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">REFERENCES</a></li>
<li class="section"><a href="#section5">AUTHORS</a></li>
<li class="section"><a href="#section6">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">REFERENCES</a></li>
<li class="section"><a href="#section5">AUTHORS</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
either PEM or DER encoded.</p></dd>
<dt><a name="13"><b class="cmd">::pki::x509::create_cert</b> <i class="arg">signreqlist</i> <i class="arg">cakeylist</i> <i class="arg">serial_number</i> <i class="arg">notBefore</i> <i class="arg">notAfter</i> <i class="arg">isCA</i> <i class="arg">extensions</i> <span class="opt">?<i class="arg">encodePem</i>?</span> <span class="opt">?<i class="arg">algo</i>?</span></a></dt>
<dd><p>Sign a signing request (usually from <b class="cmd">::pki::pkcs::create_csr</b> or
<b class="cmd">::pki::pkcs::parse_csr</b>) with a Certificate Authority (CA) certificate.
The <i class="arg">signreqlist</i> argument should be the parsed signing request.
The <i class="arg">cakeylist</i> argument should be the parsed CA certificate.
The <i class="arg">serial_number</i> argument should be a serial number unique to
this certificate from this certificate authority.  
The <i class="arg">notBefore</i> and <i class="arg">notAfter</i> arguments should contain the
time before and after which (respectively) the certificate should
be considered invalid.  The time should be encoded as something
<b class="cmd">clock format</b> will accept (i.e., the results of <b class="cmd">clock seconds</b>
and <b class="cmd">clock add</b>).
The <i class="arg">isCA</i> argument is a boolean argumen describing whether or not
the signed certificate should be a a CA certificate.  If specified as
true the &quot;id-ce-basicConstraints&quot; extension is added with the arguments
of &quot;critical&quot; being true, &quot;allowCA&quot; being true, and caDepth being
-1 (infinite).
The <i class="arg">extensions</i> argument is a list of extensions and their parameters
that should be encoded into the created certificate.   Currently only one
extension is understood (&quot;id-ce-basicConstraints&quot;).  It accepts three
arguments <i class="arg">critical</i> <i class="arg">allowCA</i> <i class="arg">caDepth</i>.  The <i class="arg">critical</i>
argument to this extension (and any extension) whether or not the
validator should reject the certificate as invalid if it does not
understand the extension (if set to &quot;true&quot;) or should ignore the extension
(if set to &quot;false&quot;).  The <i class="arg">allowCA</i> argument is used to specify
as a boolean value whether or not we can be used a certificate
authority (CA).  The <i class="arg">caDepth</i> argument indicates how many children 
CAs can be children of this CA in a depth-wise fashion.  A value of &quot;0&quot;
for the <i class="arg">caDepth</i> argument means that this CA cannot sign a CA
certificate and have the result be valid.  A value of &quot;-1&quot; indicates
infinite depth.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">EXAMPLES</a></h2>
<pre class="example">
</pre>
<pre class="example">
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">REFERENCES</a></h2>
<ol class="enumerated">
<li></li>
</ol>
</div>
<div id="section5" class="section"><h2><a name="section5">AUTHORS</a></h2>
<p>Roy Keene</p>
</div>
<div id="section6" class="section"><h2><a name="section6">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>rsa</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../aes/aes.html">aes(n)</a>, <a href="../blowfish/blowfish.html">blowfish(n)</a>, <a href="../des/des.html">des(n)</a>, <a href="../md5/md5.html">md5(n)</a>, <a href="../sha1/sha1.html">sha1(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key179">cipher</a>, <a href="../../../../index.html#key149">data integrity</a>, <a href="../../../../index.html#key152">encryption</a>, <a href="../../../../index.html#key178">public key cipher</a>, <a href="../../../../index.html#key177">rsa</a>, <a href="../../../../index.html#key148">security</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2010, 2011, 2012, 2013, Roy Keene, Andreas Kupries</p>
</div>
</div></body></html>







|



















|




















|



|







|








259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
either PEM or DER encoded.</p></dd>
<dt><a name="13"><b class="cmd">::pki::x509::create_cert</b> <i class="arg">signreqlist</i> <i class="arg">cakeylist</i> <i class="arg">serial_number</i> <i class="arg">notBefore</i> <i class="arg">notAfter</i> <i class="arg">isCA</i> <i class="arg">extensions</i> <span class="opt">?<i class="arg">encodePem</i>?</span> <span class="opt">?<i class="arg">algo</i>?</span></a></dt>
<dd><p>Sign a signing request (usually from <b class="cmd">::pki::pkcs::create_csr</b> or
<b class="cmd">::pki::pkcs::parse_csr</b>) with a Certificate Authority (CA) certificate.
The <i class="arg">signreqlist</i> argument should be the parsed signing request.
The <i class="arg">cakeylist</i> argument should be the parsed CA certificate.
The <i class="arg">serial_number</i> argument should be a serial number unique to
this certificate from this certificate authority.
The <i class="arg">notBefore</i> and <i class="arg">notAfter</i> arguments should contain the
time before and after which (respectively) the certificate should
be considered invalid.  The time should be encoded as something
<b class="cmd">clock format</b> will accept (i.e., the results of <b class="cmd">clock seconds</b>
and <b class="cmd">clock add</b>).
The <i class="arg">isCA</i> argument is a boolean argumen describing whether or not
the signed certificate should be a a CA certificate.  If specified as
true the &quot;id-ce-basicConstraints&quot; extension is added with the arguments
of &quot;critical&quot; being true, &quot;allowCA&quot; being true, and caDepth being
-1 (infinite).
The <i class="arg">extensions</i> argument is a list of extensions and their parameters
that should be encoded into the created certificate.   Currently only one
extension is understood (&quot;id-ce-basicConstraints&quot;).  It accepts three
arguments <i class="arg">critical</i> <i class="arg">allowCA</i> <i class="arg">caDepth</i>.  The <i class="arg">critical</i>
argument to this extension (and any extension) whether or not the
validator should reject the certificate as invalid if it does not
understand the extension (if set to &quot;true&quot;) or should ignore the extension
(if set to &quot;false&quot;).  The <i class="arg">allowCA</i> argument is used to specify
as a boolean value whether or not we can be used a certificate
authority (CA).  The <i class="arg">caDepth</i> argument indicates how many children
CAs can be children of this CA in a depth-wise fashion.  A value of &quot;0&quot;
for the <i class="arg">caDepth</i> argument means that this CA cannot sign a CA
certificate and have the result be valid.  A value of &quot;-1&quot; indicates
infinite depth.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">EXAMPLES</a></h2>
<pre class="example">
</pre>
<pre class="example">
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">REFERENCES</a></h2>
<ol class="enumerated">
<li></li>
</ol>
</div>
<div id="section5" class="section"><h2><a name="section5">AUTHORS</a></h2>
<p>Roy Keene</p>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>rsa</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../aes/aes.html">aes(n)</a>, <a href="../blowfish/blowfish.html">blowfish(n)</a>, <a href="../des/des.html">des(n)</a>, <a href="../md5/md5.html">md5(n)</a>, <a href="../sha1/sha1.html">sha1(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key179">cipher</a>, <a href="../../../../index.html#key150">data integrity</a>, <a href="../../../../index.html#key153">encryption</a>, <a href="../../../../index.html#key178">public key cipher</a>, <a href="../../../../index.html#key177">rsa</a>, <a href="../../../../index.html#key148">security</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2010, 2011, 2012, 2013, Roy Keene, Andreas Kupries</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/pluginmgr/pluginmgr.html.

121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<ul>
<li class="subsection"><a href="#subsection1">PACKAGE COMMANDS</a></li>
<li class="subsection"><a href="#subsection2">OBJECT COMMAND</a></li>
<li class="subsection"><a href="#subsection3">OBJECT METHODS</a></li>
<li class="subsection"><a href="#subsection4">OBJECT CONFIGURATION</a></li>
</ul>
</li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<ul>
<li class="subsection"><a href="#subsection1">PACKAGE COMMANDS</a></li>
<li class="subsection"><a href="#subsection2">OBJECT COMMAND</a></li>
<li class="subsection"><a href="#subsection3">OBJECT METHODS</a></li>
<li class="subsection"><a href="#subsection4">OBJECT CONFIGURATION</a></li>
</ul>
</li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
they may need.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">PUBLIC API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">PACKAGE COMMANDS</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::pluginmgr</b> <i class="arg">objectName</i> <span class="opt">?<i class="arg">option value</i>...?</span></a></dt>
<dd><p>This command creates a new plugin manager object with an associated
Tcl command whose name is <i class="arg">objectName</i>. This <i class="term"><a href="../../../../index.html#key238">object</a></i> command
is explained in full detail in the sections <span class="sectref"><a href="#subsection2">OBJECT COMMAND</a></span>
and <span class="sectref"><a href="#subsection3">OBJECT METHODS</a></span>. The object command will be created
under the current namespace if the <i class="arg">objectName</i> is not fully
qualified, and in the specified namespace otherwise.</p>
<p>The options and their values coming after the name of the object are
used to set the initial configuration of the mamager object,
specifying the applicable plugins and their API.</p></dd>







|







188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
they may need.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">PUBLIC API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">PACKAGE COMMANDS</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::pluginmgr</b> <i class="arg">objectName</i> <span class="opt">?<i class="arg">option value</i>...?</span></a></dt>
<dd><p>This command creates a new plugin manager object with an associated
Tcl command whose name is <i class="arg">objectName</i>. This <i class="term"><a href="../../../../index.html#key237">object</a></i> command
is explained in full detail in the sections <span class="sectref"><a href="#subsection2">OBJECT COMMAND</a></span>
and <span class="sectref"><a href="#subsection3">OBJECT METHODS</a></span>. The object command will be created
under the current namespace if the <i class="arg">objectName</i> is not fully
qualified, and in the specified namespace otherwise.</p>
<p>The options and their values coming after the name of the object are
used to set the initial configuration of the mamager object,
specifying the applicable plugins and their API.</p></dd>
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
arguments. Any return value will be ignored.</p>
<p>Its purpose is give a user of the plugin management the ability to
define commands, packages, etc. a chosen plugin may need while being
loaded.</p></dd>
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pluginmgr</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key180">plugin management</a>, <a href="../../../../index.html#key181">plugin search</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
arguments. Any return value will be ignored.</p>
<p>Its purpose is give a user of the plugin management the ability to
define commands, packages, etc. a chosen plugin may need while being
loaded.</p></dd>
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pluginmgr</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key180">plugin management</a>, <a href="../../../../index.html#key181">plugin search</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/png/png.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
<dt><a name="10"><b class="cmd">::png::image</b> <i class="arg">file</i></a></dt>
<dd><p>Given a PNG file returns the image in the list of scanlines format used by Tk_GetColor.</p></dd>
<dt><a name="11"><b class="cmd">::png::write</b> <i class="arg">file</i> <i class="arg">data</i></a></dt>
<dd><p>Takes a list of scanlines in the Tk_GetColor format and writes the represented image
to <i class="arg">file</i>.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>png</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key163">comment</a>, <a href="../../../../index.html#key133">image</a>, <a href="../../../../index.html#key687">png</a>, <a href="../../../../index.html#key686">timestamp</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>File formats</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004, Code: Aaron Faupell &lt;[email protected]&gt;<br>
Copyright &copy; 2004, Doc:  Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|









232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
<dt><a name="10"><b class="cmd">::png::image</b> <i class="arg">file</i></a></dt>
<dd><p>Given a PNG file returns the image in the list of scanlines format used by Tk_GetColor.</p></dd>
<dt><a name="11"><b class="cmd">::png::write</b> <i class="arg">file</i> <i class="arg">data</i></a></dt>
<dd><p>Takes a list of scanlines in the Tk_GetColor format and writes the represented image
to <i class="arg">file</i>.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>png</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key163">comment</a>, <a href="../../../../index.html#key134">image</a>, <a href="../../../../index.html#key687">png</a>, <a href="../../../../index.html#key686">timestamp</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>File formats</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004, Code: Aaron Faupell &lt;[email protected]&gt;<br>
Copyright &copy; 2004, Doc:  Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/pop3/pop3.html.

261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
given, then the listing only for that message is returned.</p></dd>
<dt><a name="8"><b class="cmd">::pop3::top</b> <i class="arg">chan</i> <i class="arg">msg</i> <i class="arg">n</i></a></dt>
<dd><p>Optional POP3 command, not all servers may support this.
<b class="cmd">::pop3::top</b> retrieves headers of a message, specified by
parameter <i class="arg">msg</i>, and number of <i class="arg">n</i> lines from the message
body.</p></dd>
<dt><a name="9"><b class="cmd">::pop3::uidl</b> <i class="arg">chan</i> <span class="opt">?<i class="arg">msg</i>?</span></a></dt>
<dd><p>Optional POP3 command, not all servers may support this. 
<b class="cmd">::pop3::uidl</b> returns the uid listing of the mailbox. If the
parameter <i class="arg">msg</i> is specified, then the listing only for that
message is returned.</p></dd>
<dt><a name="10"><b class="cmd">::pop3::capa</b> <i class="arg">chan</i></a></dt>
<dd><p>Optional POP3 command, not all servers may support this. 
<b class="cmd">::pop3::capa</b> returns a list of the capabilities of the server.
TOP, SASL, UIDL, LOGIN-DELAY and STLS are typical capabilities.
See IETF RFC 2449.</p></dd>
<dt><a name="11"><b class="cmd">::pop3::close</b> <i class="arg">chan</i></a></dt>
<dd><p>Gracefully close the connect after sending a POP3 QUIT command down
the socket.</p></dd>
</dl>







|




|







261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
given, then the listing only for that message is returned.</p></dd>
<dt><a name="8"><b class="cmd">::pop3::top</b> <i class="arg">chan</i> <i class="arg">msg</i> <i class="arg">n</i></a></dt>
<dd><p>Optional POP3 command, not all servers may support this.
<b class="cmd">::pop3::top</b> retrieves headers of a message, specified by
parameter <i class="arg">msg</i>, and number of <i class="arg">n</i> lines from the message
body.</p></dd>
<dt><a name="9"><b class="cmd">::pop3::uidl</b> <i class="arg">chan</i> <span class="opt">?<i class="arg">msg</i>?</span></a></dt>
<dd><p>Optional POP3 command, not all servers may support this.
<b class="cmd">::pop3::uidl</b> returns the uid listing of the mailbox. If the
parameter <i class="arg">msg</i> is specified, then the listing only for that
message is returned.</p></dd>
<dt><a name="10"><b class="cmd">::pop3::capa</b> <i class="arg">chan</i></a></dt>
<dd><p>Optional POP3 command, not all servers may support this.
<b class="cmd">::pop3::capa</b> returns a list of the capabilities of the server.
TOP, SASL, UIDL, LOGIN-DELAY and STLS are typical capabilities.
See IETF RFC 2449.</p></dd>
<dt><a name="11"><b class="cmd">::pop3::close</b> <i class="arg">chan</i></a></dt>
<dd><p>Gracefully close the connect after sending a POP3 QUIT command down
the socket.</p></dd>
</dl>
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
	...
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pop3</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key315">email</a>, <a href="../../../../index.html#key310">mail</a>, <a href="../../../../index.html#key423">pop</a>, <a href="../../../../index.html#key422">pop3</a>, <a href="../../../../index.html#key421">rfc 1939</a>, <a href="../../../../index.html#key339">secure</a>, <a href="../../../../index.html#key342">ssl</a>, <a href="../../../../index.html#key311">tls</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
</div></body></html>







|










309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
	...
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pop3</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key315">email</a>, <a href="../../../../index.html#key310">mail</a>, <a href="../../../../index.html#key423">pop</a>, <a href="../../../../index.html#key422">pop3</a>, <a href="../../../../index.html#key421">rfc 1939</a>, <a href="../../../../index.html#key339">secure</a>, <a href="../../../../index.html#key342">ssl</a>, <a href="../../../../index.html#key311">tls</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/pop3d/pop3d.html.

323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
<li><p><a href="http://www.rfc-editor.org/rfc/rfc2449.txt">RFC 2449</a></p></li>
</ol>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pop3d</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key136">internet</a>, <a href="../../../../index.html#key654">network</a>, <a href="../../../../index.html#key422">pop3</a>, <a href="../../../../index.html#key139">protocol</a>, <a href="../../../../index.html#key421">rfc 1939</a>, <a href="../../../../index.html#key339">secure</a>, <a href="../../../../index.html#key342">ssl</a>, <a href="../../../../index.html#key311">tls</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002-2009 Andreas Kupries &lt;[email protected]&gt;<br>
Copyright &copy; 2005 Reinhard Max  &lt;[email protected]&gt;</p>







|




|







323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
<li><p><a href="http://www.rfc-editor.org/rfc/rfc2449.txt">RFC 2449</a></p></li>
</ol>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pop3d</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key138">internet</a>, <a href="../../../../index.html#key654">network</a>, <a href="../../../../index.html#key422">pop3</a>, <a href="../../../../index.html#key140">protocol</a>, <a href="../../../../index.html#key421">rfc 1939</a>, <a href="../../../../index.html#key339">secure</a>, <a href="../../../../index.html#key342">ssl</a>, <a href="../../../../index.html#key311">tls</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002-2009 Andreas Kupries &lt;[email protected]&gt;<br>
Copyright &copy; 2005 Reinhard Max  &lt;[email protected]&gt;</p>

Changes to embedded/www/tcllib/files/modules/pop3d/pop3d_dbox.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>pop3d::dbox - Simple mailbox database for pop3d</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>pop3d::dbox - Simple mailbox database for pop3d</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
The <i class="arg">msgId</i> has to be in the range &quot;1 ...
[<i class="arg">dbName</i> <b class="method">stat</b>]&quot; or this
call will fail. If <b class="method">stat</b> was not called
before this call, <b class="method">get</b> will assume
that there are zero messages in the mailbox.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pop3d</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key136">internet</a>, <a href="../../../../index.html#key654">network</a>, <a href="../../../../index.html#key422">pop3</a>, <a href="../../../../index.html#key139">protocol</a>, <a href="../../../../index.html#key313">rfc 822</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
The <i class="arg">msgId</i> has to be in the range &quot;1 ...
[<i class="arg">dbName</i> <b class="method">stat</b>]&quot; or this
call will fail. If <b class="method">stat</b> was not called
before this call, <b class="method">get</b> will assume
that there are zero messages in the mailbox.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pop3d</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key138">internet</a>, <a href="../../../../index.html#key654">network</a>, <a href="../../../../index.html#key422">pop3</a>, <a href="../../../../index.html#key140">protocol</a>, <a href="../../../../index.html#key313">rfc 822</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/pop3d/pop3d_udb.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>pop3d::udb - Simple user database for pop3d</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>pop3d::udb - Simple user database for pop3d</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
<dt><a name="10"><i class="arg">dbName</i> <b class="method">save</b> <span class="opt">?<i class="arg">file</i>?</span></a></dt>
<dd><p>Saves the contents of the database into the given <i class="arg">file</i>. If the
file is not specified the system will use the path last used in a call
to <i class="arg">dbName</i> <b class="method">read</b>. The generated file can be read by the
<b class="method">read</b> method.</p></dd>
<dt><a name="11"><i class="arg">dbName</i> <b class="method">read</b> <i class="arg">file</i></a></dt>
<dd><p>Reads the specified <i class="arg">file</i> and adds the contained user definitions
to the database. As the file is actually <b class="cmd"><a href="../../../../index.html#key412">source</a></b>'d a safe
interpreter is employed to safeguard against malicious code. This
interpreter knows the <b class="cmd">add</b> command for adding users and their
associated data to this database. This command has the same argument
signature as the method <b class="method">add</b>. The path of the <i class="arg">file</i> is
remembered internally so that it can be used in the next call of
<i class="arg">dbName</i> <b class="method">save</b> without an argument.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pop3d</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key136">internet</a>, <a href="../../../../index.html#key654">network</a>, <a href="../../../../index.html#key422">pop3</a>, <a href="../../../../index.html#key139">protocol</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|








|



|




|








189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
<dt><a name="10"><i class="arg">dbName</i> <b class="method">save</b> <span class="opt">?<i class="arg">file</i>?</span></a></dt>
<dd><p>Saves the contents of the database into the given <i class="arg">file</i>. If the
file is not specified the system will use the path last used in a call
to <i class="arg">dbName</i> <b class="method">read</b>. The generated file can be read by the
<b class="method">read</b> method.</p></dd>
<dt><a name="11"><i class="arg">dbName</i> <b class="method">read</b> <i class="arg">file</i></a></dt>
<dd><p>Reads the specified <i class="arg">file</i> and adds the contained user definitions
to the database. As the file is actually <b class="cmd"><a href="../../../../index.html#key411">source</a></b>'d a safe
interpreter is employed to safeguard against malicious code. This
interpreter knows the <b class="cmd">add</b> command for adding users and their
associated data to this database. This command has the same argument
signature as the method <b class="method">add</b>. The path of the <i class="arg">file</i> is
remembered internally so that it can be used in the next call of
<i class="arg">dbName</i> <b class="method">save</b> without an argument.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pop3d</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key138">internet</a>, <a href="../../../../index.html#key654">network</a>, <a href="../../../../index.html#key422">pop3</a>, <a href="../../../../index.html#key140">protocol</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/profiler/profiler.html.

112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
<b class="const">exclusiveTime</b>, <b class="const">compileTime</b>, <b class="const">nonCompileTime</b>,
<b class="const">totalRuntime</b>, <b class="const">avgExclusiveTime</b>, and
<b class="const">avgRuntime</b>.  The return result is a list of lists, where each
sublist consists of a function name and the value of <i class="arg">key</i> for
that function.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>profiler</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key101">performance</a>, <a href="../../../../index.html#key629">profile</a>, <a href="../../../../index.html#key628">speed</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>







|



|




|





204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
<b class="const">exclusiveTime</b>, <b class="const">compileTime</b>, <b class="const">nonCompileTime</b>,
<b class="const">totalRuntime</b>, <b class="const">avgExclusiveTime</b>, and
<b class="const">avgRuntime</b>.  The return result is a list of lists, where each
sublist consists of a function name and the value of <i class="arg">key</i> for
that function.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>profiler</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key102">performance</a>, <a href="../../../../index.html#key629">profile</a>, <a href="../../../../index.html#key628">speed</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/pt/pt_astree.html.

329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
<p><img alt="expr_ast" src="../../../../image/expr_ast.png"></p>
</div>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
<p><img alt="expr_ast" src="../../../../image/expr_ast.png"></p>
</div>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/pt/pt_cparam_config_critcl.html.

164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
value.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
value.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/pt/pt_from_api.html.

522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
</pre>
</div>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
</pre>
</div>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/pt/pt_introduction.html.

274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/pt/pt_json_language.html.

520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
</pre>
</div>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
</pre>
</div>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/pt/pt_param.html.

568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
======================= =======================		====================
</pre>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a>, <a href="../../../../index.html#key25">virtual machine</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>







|




|







568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
======================= =======================		====================
</pre>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a>, <a href="../../../../index.html#key24">virtual machine</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>

Changes to embedded/www/tcllib/files/modules/pt/pt_parser_api.html.

464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
</pre>
</div>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
</pre>
</div>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_container.html.

298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
the data from the specified format to a serialization it can handle.
In that case the method will fail with an error if the container has
no import manager attached to it.</p>
<p>The result of the method is the empty string.</p></dd>
<dt><a name="12"><i class="arg">objectName</i> <b class="method">deserialize +=</b> <i class="arg">data</i> <span class="opt">?<i class="arg">format</i>?</span></a></dt>
<dd><p>This method behaves like <b class="method">deserialize =</b> in its essentials,
except that it merges the grammar in the <i class="arg">data</i> to its
contents instead of replacing it. 
The method will fail with an error and leave the grammar unchanged if
merging is not possible, i.e. would produce an invalid grammar.</p>
<p>The result of the method is the empty string.</p></dd>
<dt><a name="13"><i class="arg">objectName</i> <b class="method">start</b></a></dt>
<dd><p>This method returns the current start expression of the grammar.</p></dd>
<dt><a name="14"><i class="arg">objectName</i> <b class="method">start</b> <i class="arg">pe</i></a></dt>
<dd><p>This method defines the <i class="term">start expression</i> of the grammar. It







|







298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
the data from the specified format to a serialization it can handle.
In that case the method will fail with an error if the container has
no import manager attached to it.</p>
<p>The result of the method is the empty string.</p></dd>
<dt><a name="12"><i class="arg">objectName</i> <b class="method">deserialize +=</b> <i class="arg">data</i> <span class="opt">?<i class="arg">format</i>?</span></a></dt>
<dd><p>This method behaves like <b class="method">deserialize =</b> in its essentials,
except that it merges the grammar in the <i class="arg">data</i> to its
contents instead of replacing it.
The method will fail with an error and leave the grammar unchanged if
merging is not possible, i.e. would produce an invalid grammar.</p>
<p>The result of the method is the empty string.</p></dd>
<dt><a name="13"><i class="arg">objectName</i> <b class="method">start</b></a></dt>
<dd><p>This method returns the current start expression of the grammar.</p></dd>
<dt><a name="14"><i class="arg">objectName</i> <b class="method">start</b> <i class="arg">pe</i></a></dt>
<dd><p>This method defines the <i class="term">start expression</i> of the grammar. It
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
</pre>
</div>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|













647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
</pre>
</div>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_container_peg.html.

146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
<b class="package"><a href="pt_peg_container.html">pt::peg::container</a></b>. Instead of duplicating its contents the
reader is asked to read the referenced document.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
<b class="package"><a href="pt_peg_container.html">pt::peg::container</a></b>. Instead of duplicating its contents the
reader is asked to read the referenced document.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_export.html.

168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
Do you have trouble understanding this document ?
In that case please read the overview provided by the
<i class="term"><a href="pt_introduction.html">Introduction to Parser Tools</a></i>. This document is the
entrypoint to the whole system the current package is a part of.</p>
<p>This package provides a manager for parsing expression grammars, with
each instance handling a set of plugins for the export of them to
other formats, i.e. their conversion to, for example <i class="term"><a href="../../../../index.html#key21">nroff</a></i>,
<i class="term"><a href="../../../../index.html#key17">HTML</a></i>, etc.</p>
<p>It resides in the Export section of the Core Layer of Parser Tools,
and is one of the three pillars the management of parsing expression
grammars resides on.</p>
<p><img alt="arch_core_export" src="../../../../image/arch_core_export.png"></p>
<p>The other two pillars are, as shown above</p>
<ol class="enumerated">
<li><p><i class="term"><a href="pt_peg_import.html">PEG Import</a></i>, and</p></li>







|







168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
Do you have trouble understanding this document ?
In that case please read the overview provided by the
<i class="term"><a href="pt_introduction.html">Introduction to Parser Tools</a></i>. This document is the
entrypoint to the whole system the current package is a part of.</p>
<p>This package provides a manager for parsing expression grammars, with
each instance handling a set of plugins for the export of them to
other formats, i.e. their conversion to, for example <i class="term"><a href="../../../../index.html#key21">nroff</a></i>,
<i class="term"><a href="../../../../index.html#key18">HTML</a></i>, etc.</p>
<p>It resides in the Export section of the Core Layer of Parser Tools,
and is one of the three pillars the management of parsing expression
grammars resides on.</p>
<p><img alt="arch_core_export" src="../../../../image/arch_core_export.png"></p>
<p>The other two pillars are, as shown above</p>
<ol class="enumerated">
<li><p><i class="term"><a href="pt_peg_import.html">PEG Import</a></i>, and</p></li>
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
its plugins in detail.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Package commands</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::pt::peg::export</b> <i class="arg">objectName</i></a></dt>
<dd><p>This command creates a new export manager object with an associated
Tcl command whose name is <i class="arg">objectName</i>. This <i class="term"><a href="../../../../index.html#key238">object</a></i> command
is explained in full detail in the sections <span class="sectref"><a href="#subsection2">Object command</a></span>
and <span class="sectref"><a href="#subsection3">Object methods</a></span>. The object command will be created
under the current namespace if the <i class="arg">objectName</i> is not fully
qualified, and in the specified namespace otherwise.</p></dd>
</dl>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Object command</a></h3>







|







220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
its plugins in detail.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Package commands</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::pt::peg::export</b> <i class="arg">objectName</i></a></dt>
<dd><p>This command creates a new export manager object with an associated
Tcl command whose name is <i class="arg">objectName</i>. This <i class="term"><a href="../../../../index.html#key237">object</a></i> command
is explained in full detail in the sections <span class="sectref"><a href="#subsection2">Object command</a></span>
and <span class="sectref"><a href="#subsection3">Object methods</a></span>. The object command will be created
under the current namespace if the <i class="arg">objectName</i> is not fully
qualified, and in the specified namespace otherwise.</p></dd>
</dl>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Object command</a></h3>
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
</pre>
</div>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|













519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
</pre>
</div>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_export_container.html.

532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
</pre>
</div>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key332">CONTAINER</a>, <a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
</pre>
</div>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key332">CONTAINER</a>, <a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_export_json.html.

585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
</pre>
</div>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key257">JSON</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
</pre>
</div>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key257">JSON</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_export_peg.html.

575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
</pre>
</div>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
</pre>
</div>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key165">export</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_from_container.html.

144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
Another way of looking at this is, the CONTAINER output is its own
import package.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
Another way of looking at this is, the CONTAINER output is its own
import package.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_from_json.html.

553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
</pre>
</div>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key257">JSON</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key19">conversion</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key116">format conversion</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>







|




|







553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
</pre>
</div>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key257">JSON</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key20">conversion</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key116">format conversion</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_from_peg.html.

533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
</pre>
</div>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key19">conversion</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key116">format conversion</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>







|




|







533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
</pre>
</div>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key20">conversion</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key116">format conversion</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_import.html.

222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
its plugins in detail.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Package commands</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::pt::peg::import</b> <i class="arg">objectName</i></a></dt>
<dd><p>This command creates a new import manager object with an associated
Tcl command whose name is <i class="arg">objectName</i>. This <i class="term"><a href="../../../../index.html#key238">object</a></i> command
is explained in full detail in the sections <span class="sectref"><a href="#subsection2">Object command</a></span>
and <span class="sectref"><a href="#subsection3">Object methods</a></span>. The object command will be created
under the current namespace if the <i class="arg">objectName</i> is not fully
qualified, and in the specified namespace otherwise.</p></dd>
</dl>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Object command</a></h3>







|







222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
its plugins in detail.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Package commands</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::pt::peg::import</b> <i class="arg">objectName</i></a></dt>
<dd><p>This command creates a new import manager object with an associated
Tcl command whose name is <i class="arg">objectName</i>. This <i class="term"><a href="../../../../index.html#key237">object</a></i> command
is explained in full detail in the sections <span class="sectref"><a href="#subsection2">Object command</a></span>
and <span class="sectref"><a href="#subsection3">Object methods</a></span>. The object command will be created
under the current namespace if the <i class="arg">objectName</i> is not fully
qualified, and in the specified namespace otherwise.</p></dd>
</dl>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Object command</a></h3>
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
</pre>
</div>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|













535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
</pre>
</div>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_import_container.html.

144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
Another way of looking at this is, the CONTAINER output is its own
import package.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
Another way of looking at this is, the CONTAINER output is its own
import package.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_import_json.html.

561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
</pre>
</div>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key257">JSON</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key273">import</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
</pre>
</div>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key257">JSON</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key273">import</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_import_peg.html.

543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
</pre>
</div>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key273">import</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
</pre>
</div>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key273">import</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key384">plugin</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_interp.html.

461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
</pre>
</div>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
</pre>
</div>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_introduction.html.

193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
<div id="section2" class="section"><h2><a name="section2">Formal definition</a></h2>
<p>For the mathematically inclined, a Parsing Expression Grammar is a
4-tuple (VN,VT,R,eS) where</p>
<ul class="itemized">
<li><p>VN is a set of <i class="term">nonterminal symbols</i>,</p></li>
<li><p>VT is a set of <i class="term">terminal symbols</i>,</p></li>
<li><p>R is a finite set of rules, where each rule is a pair (A,e), A in VN,
and <i class="term"><a href="../../../../index.html#key792">e</a></i> a <i class="term"><a href="../../../../index.html#key8">parsing expression</a></i>.</p></li>
<li><p>eS is a parsing expression, the <i class="term">start expression</i>.</p></li>
</ul>
<p>Further constraints are</p>
<ul class="itemized">
<li><p>The intersection of VN and VT is empty.</p></li>
<li><p>For all A in VT exists exactly one pair (A,e) in R. In other words, R
is a function from nonterminal symbols to parsing expressions.</p></li>
</ul>
<p>Parsing expressions are inductively defined via</p>
<ul class="itemized">
<li><p>The empty string (epsilon) is a parsing expression.</p></li>
<li><p>A terminal symbol <i class="term">a</i> is a parsing expression.</p></li>
<li><p>A nonterminal symbol <i class="term">A</i> is a parsing expression.</p></li>
<li><p><i class="term">e1</i><i class="term">e2</i> is a parsing expression for parsing expressions
<i class="term">e1</i> and <i class="term">2</i>. This is called <i class="term">sequence</i>.</p></li>
<li><p><i class="term">e1</i>/<i class="term">e2</i> is a parsing expression for parsing expressions
<i class="term">e1</i> and <i class="term">2</i>. This is called <i class="term">ordered choice</i>.</p></li>
<li><p><i class="term"><a href="../../../../index.html#key792">e</a></i>* is a parsing expression for parsing expression
<i class="term"><a href="../../../../index.html#key792">e</a></i>. This is called <i class="term">zero-or-more repetitions</i>, also known
as <i class="term">kleene closure</i>.</p></li>
<li><p><i class="term"><a href="../../../../index.html#key792">e</a></i>+ is a parsing expression for parsing expression
<i class="term"><a href="../../../../index.html#key792">e</a></i>. This is called <i class="term">one-or-more repetitions</i>, also known
as <i class="term">positive kleene closure</i>.</p></li>
<li><p>!<i class="term"><a href="../../../../index.html#key792">e</a></i> is a parsing expression for parsing expression
<i class="term">e1</i>. This is called a <i class="term">not lookahead predicate</i>.</p></li>
<li><p>&amp;<i class="term"><a href="../../../../index.html#key792">e</a></i> is a parsing expression for parsing expression
<i class="term">e1</i>. This is called an <i class="term">and lookahead predicate</i>.</p></li>
</ul>
<p>PEGs are used to define a grammatical structure for streams of symbols
over VT. They are a modern phrasing of older formalisms invented by
Alexander Birham. These formalisms were called TS (TMG recognition
scheme), and gTS (generalized TS). Later they were renamed to TPDL
(Top-Down Parsing Languages) and gTPDL (generalized TPDL).</p>







|

















|
|

|
|

|

|







193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
<div id="section2" class="section"><h2><a name="section2">Formal definition</a></h2>
<p>For the mathematically inclined, a Parsing Expression Grammar is a
4-tuple (VN,VT,R,eS) where</p>
<ul class="itemized">
<li><p>VN is a set of <i class="term">nonterminal symbols</i>,</p></li>
<li><p>VT is a set of <i class="term">terminal symbols</i>,</p></li>
<li><p>R is a finite set of rules, where each rule is a pair (A,e), A in VN,
and <i class="term"><a href="../../../../index.html#key793">e</a></i> a <i class="term"><a href="../../../../index.html#key8">parsing expression</a></i>.</p></li>
<li><p>eS is a parsing expression, the <i class="term">start expression</i>.</p></li>
</ul>
<p>Further constraints are</p>
<ul class="itemized">
<li><p>The intersection of VN and VT is empty.</p></li>
<li><p>For all A in VT exists exactly one pair (A,e) in R. In other words, R
is a function from nonterminal symbols to parsing expressions.</p></li>
</ul>
<p>Parsing expressions are inductively defined via</p>
<ul class="itemized">
<li><p>The empty string (epsilon) is a parsing expression.</p></li>
<li><p>A terminal symbol <i class="term">a</i> is a parsing expression.</p></li>
<li><p>A nonterminal symbol <i class="term">A</i> is a parsing expression.</p></li>
<li><p><i class="term">e1</i><i class="term">e2</i> is a parsing expression for parsing expressions
<i class="term">e1</i> and <i class="term">2</i>. This is called <i class="term">sequence</i>.</p></li>
<li><p><i class="term">e1</i>/<i class="term">e2</i> is a parsing expression for parsing expressions
<i class="term">e1</i> and <i class="term">2</i>. This is called <i class="term">ordered choice</i>.</p></li>
<li><p><i class="term"><a href="../../../../index.html#key793">e</a></i>* is a parsing expression for parsing expression
<i class="term"><a href="../../../../index.html#key793">e</a></i>. This is called <i class="term">zero-or-more repetitions</i>, also known
as <i class="term">kleene closure</i>.</p></li>
<li><p><i class="term"><a href="../../../../index.html#key793">e</a></i>+ is a parsing expression for parsing expression
<i class="term"><a href="../../../../index.html#key793">e</a></i>. This is called <i class="term">one-or-more repetitions</i>, also known
as <i class="term">positive kleene closure</i>.</p></li>
<li><p>!<i class="term"><a href="../../../../index.html#key793">e</a></i> is a parsing expression for parsing expression
<i class="term">e1</i>. This is called a <i class="term">not lookahead predicate</i>.</p></li>
<li><p>&amp;<i class="term"><a href="../../../../index.html#key793">e</a></i> is a parsing expression for parsing expression
<i class="term">e1</i>. This is called an <i class="term">and lookahead predicate</i>.</p></li>
</ul>
<p>PEGs are used to define a grammatical structure for streams of symbols
over VT. They are a modern phrasing of older formalisms invented by
Alexander Birham. These formalisms were called TS (TMG recognition
scheme), and gTS (generalized TS). Later they were renamed to TPDL
(Top-Down Parsing Languages) and gTPDL (generalized TPDL).</p>
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
CoCo/R, a generator for recursive descent parsers.</p></li>
</ol>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|













250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
CoCo/R, a generator for recursive descent parsers.</p></li>
</ol>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_language.html.

233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
simply placing the parts adjacent to each other.</p>
<p>Here are the operators, from highest to lowest priority (i.e. strength
of binding):</p>
<pre class="example">
    # Binary operators.
    &lt;&lt;expression-1&gt;&gt;     &lt;&lt;expression-2&gt;&gt;  # sequence. parse 1, then 2.
    &lt;&lt;expression-1&gt;&gt;  /  &lt;&lt;expression-2&gt;&gt;  # alternative. try to parse 1, and parse 2 if 1 failed to parse.
    # Prefix operators. Lookahead constraints. Same priority. 
    &amp; &lt;&lt;expression&gt;&gt;  # Parse expression, ok on successful parse.
    ! &lt;&lt;expression&gt;&gt;  # Ditto, except ok on failure to parse.
    # Suffix operators. Repetition. Same priority.
    &lt;&lt;expression&gt;&gt; ?  # Parse expression none, or once (repeat 0 or 1).
    &lt;&lt;expression&gt;&gt; *  # Parse expression zero or more times.
    &lt;&lt;expression&gt;&gt; +  # Parse expression one or more times.
    # Expression nesting







|







233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
simply placing the parts adjacent to each other.</p>
<p>Here are the operators, from highest to lowest priority (i.e. strength
of binding):</p>
<pre class="example">
    # Binary operators.
    &lt;&lt;expression-1&gt;&gt;     &lt;&lt;expression-2&gt;&gt;  # sequence. parse 1, then 2.
    &lt;&lt;expression-1&gt;&gt;  /  &lt;&lt;expression-2&gt;&gt;  # alternative. try to parse 1, and parse 2 if 1 failed to parse.
    # Prefix operators. Lookahead constraints. Same priority.
    &amp; &lt;&lt;expression&gt;&gt;  # Parse expression, ok on successful parse.
    ! &lt;&lt;expression&gt;&gt;  # Ditto, except ok on failure to parse.
    # Suffix operators. Repetition. Same priority.
    &lt;&lt;expression&gt;&gt; ?  # Parse expression none, or once (repeat 0 or 1).
    &lt;&lt;expression&gt;&gt; *  # Parse expression zero or more times.
    &lt;&lt;expression&gt;&gt; +  # Parse expression one or more times.
    # Expression nesting
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
control characters, or characters outside of the encoding the text is
in.</p>
<p>All the escaped forms are started with a backslash character ('\',
unicode codepoint 0x5C). This is then followed by a series of octal
digits, or 'u' and hexedecimal digits, or a regular character from a
fixed set for various control characters. Some examples:</p>
<pre class="example">
    \n \r \t \' \&quot; \[ \] \\ # 
    \000 up to \277         # octal escape, all ascii character, leading 0's can be removed.
    \u2CA7                  # hexadecimal escape, all unicode characters.
    #                       # Here 2ca7 &lt;=&gt; Koptic Small Letter Tau
</pre>
</div>
<div id="subsection5" class="subsection"><h3><a name="subsection5">Whitespace and comments</a></h3>
<p>One issue not touched upon so far is whitespace and comments.</p>







|







332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
control characters, or characters outside of the encoding the text is
in.</p>
<p>All the escaped forms are started with a backslash character ('\',
unicode codepoint 0x5C). This is then followed by a series of octal
digits, or 'u' and hexedecimal digits, or a regular character from a
fixed set for various control characters. Some examples:</p>
<pre class="example">
    \n \r \t \' \&quot; \[ \] \\ #
    \000 up to \277         # octal escape, all ascii character, leading 0's can be removed.
    \u2CA7                  # hexadecimal escape, all unicode characters.
    #                       # Here 2ca7 &lt;=&gt; Koptic Small Letter Tau
</pre>
</div>
<div id="subsection5" class="subsection"><h3><a name="subsection5">Whitespace and comments</a></h3>
<p>One issue not touched upon so far is whitespace and comments.</p>
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
</pre>
</div>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|













510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
</pre>
</div>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_to_container.html.

546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
</pre>
</div>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key332">CONTAINER</a>, <a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key19">conversion</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key116">format conversion</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>







|




|







546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
</pre>
</div>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key332">CONTAINER</a>, <a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key20">conversion</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key116">format conversion</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_to_cparam.html.

567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
</pre>
</div>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key796">CPARAM</a>, <a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key19">conversion</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key116">format conversion</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>







|




|







567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
</pre>
</div>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key796">CPARAM</a>, <a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key20">conversion</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key116">format conversion</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_to_json.html.

603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
</pre>
</div>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key257">JSON</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key19">conversion</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key116">format conversion</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>







|




|







603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
</pre>
</div>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key257">JSON</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key20">conversion</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key116">format conversion</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_to_param.html.

1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
</pre>
</div>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key496">PARAM</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key19">conversion</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key116">format conversion</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>







|




|







1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
</pre>
</div>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key496">PARAM</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key20">conversion</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key116">format conversion</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_to_peg.html.

588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
</pre>
</div>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key19">conversion</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key116">format conversion</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>







|




|







588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
</pre>
</div>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key20">conversion</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key116">format conversion</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_to_tclparam.html.

550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
</pre>
</div>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key114">TCLPARAM</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key19">conversion</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key116">format conversion</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>







|




|







550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
</pre>
</div>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key114">TCLPARAM</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key20">conversion</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key116">format conversion</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Parsing and Grammars</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>

Changes to embedded/www/tcllib/files/modules/pt/pt_pegrammar.html.

464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
</pre>
</div>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
</pre>
</div>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/pt/pt_pexpr_op.html.

327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
</pre>
</div>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
</pre>
</div>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/pt/pt_pexpression.html.

453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
</pre>
</div>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
</pre>
</div>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/pt/pt_pgen.html.

280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
for some input, note how the parser instance follows the specified
<i class="term"><a href="pt_parser_api.html">Parser API</a></i>.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
for some input, note how the parser instance follows the specified
<i class="term"><a href="pt_parser_api.html">Parser API</a></i>.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/pt/pt_rdengine.html.

813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
</dl>
</div>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
</dl>
</div>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/pt/pt_tclparam_config_snit.html.

164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
value.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
value.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/pt/pt_tclparam_config_tcloo.html.

164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
value.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
value.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/pt/pt_to_api.html.

536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
</pre>
</div>
</div>
<div id="section8" class="section"><h2><a name="section8">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
</pre>
</div>
</div>
<div id="section8" class="section"><h2><a name="section8">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>pt</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key3">EBNF</a>, <a href="../../../../index.html#key15">LL(k)</a>, <a href="../../../../index.html#key6">PEG</a>, <a href="../../../../index.html#key7">TDPL</a>, <a href="../../../../index.html#key4">context-free languages</a>, <a href="../../../../index.html#key0">expression</a>, <a href="../../../../index.html#key11">grammar</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key9">parser</a>, <a href="../../../../index.html#key8">parsing expression</a>, <a href="../../../../index.html#key14">parsing expression grammar</a>, <a href="../../../../index.html#key1">push down automaton</a>, <a href="../../../../index.html#key10">recursive descent</a>, <a href="../../../../index.html#key2">state</a>, <a href="../../../../index.html#key13">top-down parsing languages</a>, <a href="../../../../index.html#key12">transducer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/rc4/rc4.html.

117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">PROGRAMMING INTERFACE</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">AUTHORS</a></li>
<li class="section"><a href="#section6">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">PROGRAMMING INTERFACE</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">AUTHORS</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
<li><a href="#2"><b class="cmd">::rc4::RC4Init</b> <i class="arg">keydata</i></a></li>
<li><a href="#3"><b class="cmd">::rc4::RC4</b> <i class="arg">Key</i> <i class="arg">data</i></a></li>
<li><a href="#4"><b class="cmd">::rc4::RC4Final</b> <i class="arg">Key</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package is an implementation in Tcl of the RC4 stream cipher 
developed by Ron Rivest of RSA Data Security Inc. The cipher was a
trade secret of RSA but was reverse-engineered and published to the
internet in 1994. It is used in a number of network protocols for
securing communications. To evade trademark restrictions this cipher
is sometimes known as ARCFOUR.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::rc4::rc4</b> <span class="opt">?<i class="arg">-hex</i>?</span> <i class="arg">-key keyvalue</i> <span class="opt">?<i class="arg">-command lst</i>?</span> <span class="opt">?<i class="arg">-out channel</i>?</span> [ <i class="arg">-in channel</i> | <i class="arg">-infile filename</i> | <i class="arg">string</i> ]</a></dt>
<dd><p>Perform the RC4 algorithm on either the data provided by the argument
or on the data read from the <i class="arg">-in</i> channel. If an <i class="arg">-out</i>
channel is given then the result will be written to this channel.
Giving the <i class="arg">-hex</i> option will return a hexadecimal encoded
version of the result if not using an <i class="arg">-out</i> channel.</p>
<p>The data to be processes can be specified either as a string argument to
the rc4 command, or as a filename or a pre-opened channel. If the 
<i class="arg">-infile</i> argument is given then the file is opened, the data read
and processed and the file is closed. If the <i class="arg">-in</i> argument is
given then data is read from the channel until the end of file. The
channel is not closed. If the <i class="arg">-out</i> argument is given then the
processing result is written to this channel.</p>
<p>If <i class="arg">-command</i> is provided then the rc4 command does not return
anything. Instead the command provided is called with the rc4 result data







|















|







139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
<li><a href="#2"><b class="cmd">::rc4::RC4Init</b> <i class="arg">keydata</i></a></li>
<li><a href="#3"><b class="cmd">::rc4::RC4</b> <i class="arg">Key</i> <i class="arg">data</i></a></li>
<li><a href="#4"><b class="cmd">::rc4::RC4Final</b> <i class="arg">Key</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package is an implementation in Tcl of the RC4 stream cipher
developed by Ron Rivest of RSA Data Security Inc. The cipher was a
trade secret of RSA but was reverse-engineered and published to the
internet in 1994. It is used in a number of network protocols for
securing communications. To evade trademark restrictions this cipher
is sometimes known as ARCFOUR.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::rc4::rc4</b> <span class="opt">?<i class="arg">-hex</i>?</span> <i class="arg">-key keyvalue</i> <span class="opt">?<i class="arg">-command lst</i>?</span> <span class="opt">?<i class="arg">-out channel</i>?</span> [ <i class="arg">-in channel</i> | <i class="arg">-infile filename</i> | <i class="arg">string</i> ]</a></dt>
<dd><p>Perform the RC4 algorithm on either the data provided by the argument
or on the data read from the <i class="arg">-in</i> channel. If an <i class="arg">-out</i>
channel is given then the result will be written to this channel.
Giving the <i class="arg">-hex</i> option will return a hexadecimal encoded
version of the result if not using an <i class="arg">-out</i> channel.</p>
<p>The data to be processes can be specified either as a string argument to
the rc4 command, or as a filename or a pre-opened channel. If the
<i class="arg">-infile</i> argument is given then the file is opened, the data read
and processed and the file is closed. If the <i class="arg">-in</i> argument is
given then data is read from the channel until the end of file. The
channel is not closed. If the <i class="arg">-out</i> argument is given then the
processing result is written to this channel.</p>
<p>If <i class="arg">-command</i> is provided then the rc4 command does not return
anything. Instead the command provided is called with the rc4 result data
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
<dt><a name="2"><b class="cmd">::rc4::RC4Init</b> <i class="arg">keydata</i></a></dt>
<dd><p>Initialize a new RC4 key. The <i class="arg">keydata</i> is any amount of binary
data and is used to initialize the cipher internal state.</p></dd>
<dt><a name="3"><b class="cmd">::rc4::RC4</b> <i class="arg">Key</i> <i class="arg">data</i></a></dt>
<dd><p>Encrypt or decrypt the input data using the key obtained by calling
<b class="cmd">RC4Init</b>.</p></dd>
<dt><a name="4"><b class="cmd">::rc4::RC4Final</b> <i class="arg">Key</i></a></dt>
<dd><p>This should be called to clean up resources associated with 
<i class="arg">Key</i>. Once this function has been called the key is destroyed.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">EXAMPLES</a></h2>
<pre class="example">
% set keydata [binary format H* 0123456789abcdef]
% rc4::rc4 -hex -key $keydata HelloWorld







|







178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
<dt><a name="2"><b class="cmd">::rc4::RC4Init</b> <i class="arg">keydata</i></a></dt>
<dd><p>Initialize a new RC4 key. The <i class="arg">keydata</i> is any amount of binary
data and is used to initialize the cipher internal state.</p></dd>
<dt><a name="3"><b class="cmd">::rc4::RC4</b> <i class="arg">Key</i> <i class="arg">data</i></a></dt>
<dd><p>Encrypt or decrypt the input data using the key obtained by calling
<b class="cmd">RC4Init</b>.</p></dd>
<dt><a name="4"><b class="cmd">::rc4::RC4Final</b> <i class="arg">Key</i></a></dt>
<dd><p>This should be called to clean up resources associated with
<i class="arg">Key</i>. Once this function has been called the key is destroyed.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">EXAMPLES</a></h2>
<pre class="example">
% set keydata [binary format H* 0123456789abcdef]
% rc4::rc4 -hex -key $keydata HelloWorld
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
 }
 rc4::rc4 -in $socket -command [list ::Finish $ApplicationState]
</pre>
</div>
<div id="section5" class="section"><h2><a name="section5">AUTHORS</a></h2>
<p>Pat Thoyts</p>
</div>
<div id="section6" class="section"><h2><a name="section6">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>rc4</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../aes/aes.html">aes(n)</a>, <a href="../blowfish/blowfish.html">blowfish(n)</a>, <a href="../des/des.html">des(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key151">arcfour</a>, <a href="../../../../index.html#key149">data integrity</a>, <a href="../../../../index.html#key152">encryption</a>, <a href="../../../../index.html#key150">rc4</a>, <a href="../../../../index.html#key148">security</a>, <a href="../../../../index.html#key153">stream cipher</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003, Pat Thoyts &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|







|








206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
 }
 rc4::rc4 -in $socket -command [list ::Finish $ApplicationState]
</pre>
</div>
<div id="section5" class="section"><h2><a name="section5">AUTHORS</a></h2>
<p>Pat Thoyts</p>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>rc4</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../aes/aes.html">aes(n)</a>, <a href="../blowfish/blowfish.html">blowfish(n)</a>, <a href="../des/des.html">des(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key151">arcfour</a>, <a href="../../../../index.html#key150">data integrity</a>, <a href="../../../../index.html#key153">encryption</a>, <a href="../../../../index.html#key149">rc4</a>, <a href="../../../../index.html#key148">security</a>, <a href="../../../../index.html#key152">stream cipher</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003, Pat Thoyts &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/rcs/rcs.html.

116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">TEXT DICT DATA STRUCTURE</a></li>
<li class="section"><a href="#section4">RCS PATCH FORMAT</a></li>
<li class="section"><a href="#section5">RCS PATCH COMMAND LIST</a></li>
<li class="section"><a href="#section6">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">TEXT DICT DATA STRUCTURE</a></li>
<li class="section"><a href="#section4">RCS PATCH FORMAT</a></li>
<li class="section"><a href="#section5">RCS PATCH COMMAND LIST</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
<li><a href="#5"><b class="cmd">::rcs::decodeRcsPatch</b> <i class="arg">text</i></a></li>
<li><a href="#6"><b class="cmd">::rcs::encodeRcsPatch</b> <i class="arg">pcmds</i></a></li>
<li><a href="#7"><b class="cmd">::rcs::applyRcsPatch</b> <i class="arg">text</i> <i class="arg">pcmds</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>The <i class="term">Revision Control System</i>, short <i class="term"><a href="../../../../index.html#key614">RCS</a></i>, is a set of
applications and related data formats which allow a system to persist
the history of changes to a text. It, and its relative SCCS are the
basis for many other such systems, like <i class="term"><a href="../../../../index.html#key613">CVS</a></i>, etc.</p>
<p>This package <em>does not</em> implement RCS.</p>
<p>It only provides a number of low level commands which should be useful
in the implementation of any revision management system, namely:</p>
<ol class="enumerated">
<li><p>The conversion of texts into and out of a data structures which allow
the easy modification of such text by <i class="term">patches</i>, i.e. sequences
of instructions for the transformation of one text into an other.</p></li>







|


|







141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
<li><a href="#5"><b class="cmd">::rcs::decodeRcsPatch</b> <i class="arg">text</i></a></li>
<li><a href="#6"><b class="cmd">::rcs::encodeRcsPatch</b> <i class="arg">pcmds</i></a></li>
<li><a href="#7"><b class="cmd">::rcs::applyRcsPatch</b> <i class="arg">text</i> <i class="arg">pcmds</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>The <i class="term">Revision Control System</i>, short <i class="term"><a href="../../../../index.html#key613">RCS</a></i>, is a set of
applications and related data formats which allow a system to persist
the history of changes to a text. It, and its relative SCCS are the
basis for many other such systems, like <i class="term"><a href="../../../../index.html#key614">CVS</a></i>, etc.</p>
<p>This package <em>does not</em> implement RCS.</p>
<p>It only provides a number of low level commands which should be useful
in the implementation of any revision management system, namely:</p>
<ol class="enumerated">
<li><p>The conversion of texts into and out of a data structures which allow
the easy modification of such text by <i class="term">patches</i>, i.e. sequences
of instructions for the transformation of one text into an other.</p></li>
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
file is created if it did not exist, and must be writable. The result
of the command is the empty string.</p></dd>
<dt><a name="5"><b class="cmd">::rcs::decodeRcsPatch</b> <i class="arg">text</i></a></dt>
<dd><p>Converts the <i class="arg">text</i> argument into a patch command list (PCL) as
specified in the section <span class="sectref"><a href="#section5">RCS PATCH COMMAND LIST</a></span> and
returns this list as its result.
It is assumed that the input text is in <i class="term"><a href="../../../../index.html#key615">diff -n format</a></i>, also
known as <i class="term"><a href="../../../../index.html#key611">RCS patch</a></i> format, as specified in the section
<span class="sectref"><a href="#section4">RCS PATCH FORMAT</a></span>.
Please note that the command ignores no-ops in the input, in other
words the resulting PCL contains only instructions doing something.</p></dd>
<dt><a name="6"><b class="cmd">::rcs::encodeRcsPatch</b> <i class="arg">pcmds</i></a></dt>
<dd><p>This command provides the complementary operation to
<b class="cmd">::rcs::decodeRcsPatch</b>. It convert a patch comand list (PCL) list
as specified in the section <span class="sectref"><a href="#section5">RCS PATCH COMMAND LIST</a></span> back







|







186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
file is created if it did not exist, and must be writable. The result
of the command is the empty string.</p></dd>
<dt><a name="5"><b class="cmd">::rcs::decodeRcsPatch</b> <i class="arg">text</i></a></dt>
<dd><p>Converts the <i class="arg">text</i> argument into a patch command list (PCL) as
specified in the section <span class="sectref"><a href="#section5">RCS PATCH COMMAND LIST</a></span> and
returns this list as its result.
It is assumed that the input text is in <i class="term"><a href="../../../../index.html#key615">diff -n format</a></i>, also
known as <i class="term"><a href="../../../../index.html#key612">RCS patch</a></i> format, as specified in the section
<span class="sectref"><a href="#section4">RCS PATCH FORMAT</a></span>.
Please note that the command ignores no-ops in the input, in other
words the resulting PCL contains only instructions doing something.</p></dd>
<dt><a name="6"><b class="cmd">::rcs::encodeRcsPatch</b> <i class="arg">pcmds</i></a></dt>
<dd><p>This command provides the complementary operation to
<b class="cmd">::rcs::decodeRcsPatch</b>. It convert a patch comand list (PCL) list
as specified in the section <span class="sectref"><a href="#section5">RCS PATCH COMMAND LIST</a></span> back
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
cause the dictionary to become non-canonical.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">RCS PATCH FORMAT</a></h2>
<p>A <i class="term"><a href="../../../../index.html#key645">patch</a></i> is in general a series of instructions how to transform
an input text T into a different text T', and also encoded in text
form as well.</p>
<p>The text format for patches understood by this package is a very
simple one, known under the names <i class="term"><a href="../../../../index.html#key611">RCS patch</a></i> or
<i class="term"><a href="../../../../index.html#key615">diff -n format</a></i>.</p>
<p>Patches in this format contain only two different commands, for the
deletion of old text, and addition of new text. The replacement of
some text by a different text is handled as combination of a deletion
following by an addition.</p>
<p>The format is line oriented, with each line containing either a
command or text data associated with the preceding command.
The first line of a <i class="term"><a href="../../../../index.html#key611">RCS patch</a></i> is always a command line.</p>
<p>The commands are:</p>
<dl class="definitions">
<dt>&quot;&quot;</dt>
<dd><p>The empty line is a command which does nothing.</p></dd>
<dt>&quot;a<b class="variable">start</b> <b class="variable">n</b>&quot;</dt>
<dd><p>A line starting with the character <b class="const">a</b> is a command for the
addition of text to the output. It is followed by <b class="variable">n</b> lines of







|







|







247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
cause the dictionary to become non-canonical.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">RCS PATCH FORMAT</a></h2>
<p>A <i class="term"><a href="../../../../index.html#key645">patch</a></i> is in general a series of instructions how to transform
an input text T into a different text T', and also encoded in text
form as well.</p>
<p>The text format for patches understood by this package is a very
simple one, known under the names <i class="term"><a href="../../../../index.html#key612">RCS patch</a></i> or
<i class="term"><a href="../../../../index.html#key615">diff -n format</a></i>.</p>
<p>Patches in this format contain only two different commands, for the
deletion of old text, and addition of new text. The replacement of
some text by a different text is handled as combination of a deletion
following by an addition.</p>
<p>The format is line oriented, with each line containing either a
command or text data associated with the preceding command.
The first line of a <i class="term"><a href="../../../../index.html#key612">RCS patch</a></i> is always a command line.</p>
<p>The commands are:</p>
<dl class="definitions">
<dt>&quot;&quot;</dt>
<dd><p>The empty line is a command which does nothing.</p></dd>
<dt>&quot;a<b class="variable">start</b> <b class="variable">n</b>&quot;</dt>
<dd><p>A line starting with the character <b class="const">a</b> is a command for the
addition of text to the output. It is followed by <b class="variable">n</b> lines of
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
<p>An example for a patch command is shown below, it represents the
example RCS patch found in section <span class="sectref"><a href="#section4">RCS PATCH FORMAT</a></span>.</p>
<pre class="example">{{d 1 2} {d 4 1} {a 4 {The named is the mother of all things.
}} {a 11 {They both may be called deep and profound.
Deeper and more profound,
The door of all subtleties!}}}</pre>
</div>
<div id="section6" class="section"><h2><a name="section6">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>rcs</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../../../../index.html#key318">struct</a>, <a href="../textutil/textutil.html">textutil</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key613">CVS</a>, <a href="../../../../index.html#key614">RCS</a>, <a href="../../../../index.html#key611">RCS patch</a>, <a href="../../../../index.html#key612">SCCS</a>, <a href="../../../../index.html#key615">diff -n format</a>, <a href="../../../../index.html#key616">patching</a>, <a href="../../../../index.html#key618">text conversion</a>, <a href="../../../../index.html#key617">text differences</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005, Andreas Kupries &lt;[email protected]&gt;<br>
Copyright &copy; 2005, Colin McCormack &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|







|









323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
<p>An example for a patch command is shown below, it represents the
example RCS patch found in section <span class="sectref"><a href="#section4">RCS PATCH FORMAT</a></span>.</p>
<pre class="example">{{d 1 2} {d 4 1} {a 4 {The named is the mother of all things.
}} {a 11 {They both may be called deep and profound.
Deeper and more profound,
The door of all subtleties!}}}</pre>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>rcs</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../../../../index.html#key318">struct</a>, <a href="../textutil/textutil.html">textutil</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key614">CVS</a>, <a href="../../../../index.html#key613">RCS</a>, <a href="../../../../index.html#key612">RCS patch</a>, <a href="../../../../index.html#key611">SCCS</a>, <a href="../../../../index.html#key615">diff -n format</a>, <a href="../../../../index.html#key616">patching</a>, <a href="../../../../index.html#key618">text conversion</a>, <a href="../../../../index.html#key617">text differences</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005, Andreas Kupries &lt;[email protected]&gt;<br>
Copyright &copy; 2005, Colin McCormack &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/report/report.html.

119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">REGIONS</a></li>
<li class="section"><a href="#section3">LINES</a></li>
<li class="section"><a href="#section4">TEMPLATES</a></li>
<li class="section"><a href="#section5">STYLES</a></li>
<li class="section"><a href="#section6">REPORT METHODS</a></li>
<li class="section"><a href="#section7">EXAMPLES</a></li>
<li class="section"><a href="#section8">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">REGIONS</a></li>
<li class="section"><a href="#section3">LINES</a></li>
<li class="section"><a href="#section4">TEMPLATES</a></li>
<li class="section"><a href="#section5">STYLES</a></li>
<li class="section"><a href="#section6">REPORT METHODS</a></li>
<li class="section"><a href="#section7">EXAMPLES</a></li>
<li class="section"><a href="#section8">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
<li><a href="#14"><i class="arg">reportName</i> <b class="method">bcaption</b> <i class="arg">size</i></a></li>
<li><a href="#15"><i class="arg">reportName</i> <b class="cmd">size</b> <i class="arg">column</i> <span class="opt">?<i class="arg">number</i>|<b class="const">dyn</b>?</span></a></li>
<li><a href="#16"><i class="arg">reportName</i> <b class="cmd">sizes</b> <span class="opt">?<i class="arg">size-list</i>?</span></a></li>
<li><a href="#17"><i class="arg">reportName</i> <b class="cmd">pad</b> <i class="arg">column</i> <span class="opt">?<b class="const">left</b>|<b class="const">right</b>|<b class="const">both</b> <span class="opt">?<i class="arg">padstring</i>?</span>?</span></a></li>
<li><a href="#18"><i class="arg">reportName</i> <b class="cmd">justify</b> <i class="arg">column</i> <span class="opt">?<b class="const">left</b>|<b class="const">right</b>|<b class="const">center</b>?</span></a></li>
<li><a href="#19"><i class="arg">reportName</i> <b class="cmd">printmatrix</b> <i class="arg">matrix</i></a></li>
<li><a href="#20"><i class="arg">reportName</i> <b class="cmd">printmatrix2channel</b> <i class="arg">matrix chan</i></a></li>
<li><a href="#21"><i class="arg">reportName</i> <b class="cmd"><a href="../../../../index.html#key482">columns</a></b></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package provides report objects which can be used by the
formatting methods of matrix objects to generate tabular reports of
the matrix in various forms. The report objects defined here break







|







152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
<li><a href="#14"><i class="arg">reportName</i> <b class="method">bcaption</b> <i class="arg">size</i></a></li>
<li><a href="#15"><i class="arg">reportName</i> <b class="cmd">size</b> <i class="arg">column</i> <span class="opt">?<i class="arg">number</i>|<b class="const">dyn</b>?</span></a></li>
<li><a href="#16"><i class="arg">reportName</i> <b class="cmd">sizes</b> <span class="opt">?<i class="arg">size-list</i>?</span></a></li>
<li><a href="#17"><i class="arg">reportName</i> <b class="cmd">pad</b> <i class="arg">column</i> <span class="opt">?<b class="const">left</b>|<b class="const">right</b>|<b class="const">both</b> <span class="opt">?<i class="arg">padstring</i>?</span>?</span></a></li>
<li><a href="#18"><i class="arg">reportName</i> <b class="cmd">justify</b> <i class="arg">column</i> <span class="opt">?<b class="const">left</b>|<b class="const">right</b>|<b class="const">center</b>?</span></a></li>
<li><a href="#19"><i class="arg">reportName</i> <b class="cmd">printmatrix</b> <i class="arg">matrix</i></a></li>
<li><a href="#20"><i class="arg">reportName</i> <b class="cmd">printmatrix2channel</b> <i class="arg">matrix chan</i></a></li>
<li><a href="#21"><i class="arg">reportName</i> <b class="cmd"><a href="../../../../index.html#key484">columns</a></b></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package provides report objects which can be used by the
formatting methods of matrix objects to generate tabular reports of
the matrix in various forms. The report objects defined here break
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
data region is allowed to be empty.</p></dd>
<dt><a name="20"><i class="arg">reportName</i> <b class="cmd">printmatrix2channel</b> <i class="arg">matrix chan</i></a></dt>
<dd><p>Formats the <i class="arg">matrix</i> according to the configuration of the report
and writes the result into the channel <i class="arg">chan</i>. The matrix has to
have the same number of columns as the report. The matrix also has to
have enough rows so that the top and bottom caption regions do not
overlap. The data region is allowed to be empty.</p></dd>
<dt><a name="21"><i class="arg">reportName</i> <b class="cmd"><a href="../../../../index.html#key482">columns</a></b></a></dt>
<dd><p>Returns the number of columns in the report.</p></dd>
</dl>
<p>The methods <b class="method">size</b>, <b class="method">pad</b> and <b class="method">justify</b> all take
a column index as their first argument. This index is allowed to use
all the forms of an index as accepted by the <b class="cmd">lindex</b> command. The
allowed range for indices is
	&quot;0,...,[<b class="variable">reportName</b> columns]-1&quot;.</p>







|







400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
data region is allowed to be empty.</p></dd>
<dt><a name="20"><i class="arg">reportName</i> <b class="cmd">printmatrix2channel</b> <i class="arg">matrix chan</i></a></dt>
<dd><p>Formats the <i class="arg">matrix</i> according to the configuration of the report
and writes the result into the channel <i class="arg">chan</i>. The matrix has to
have the same number of columns as the report. The matrix also has to
have enough rows so that the top and bottom caption regions do not
overlap. The data region is allowed to be empty.</p></dd>
<dt><a name="21"><i class="arg">reportName</i> <b class="cmd"><a href="../../../../index.html#key484">columns</a></b></a></dt>
<dd><p>Returns the number of columns in the report.</p></dd>
</dl>
<p>The methods <b class="method">size</b>, <b class="method">pad</b> and <b class="method">justify</b> all take
a column index as their first argument. This index is allowed to use
all the forms of an index as accepted by the <b class="cmd">lindex</b> command. The
allowed range for indices is
	&quot;0,...,[<b class="variable">reportName</b> columns]-1&quot;.</p>
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
    |   |true numeric       |       |       |        |
    +---+-------------------+-------+-------+--------+
    %
    % # alternate way of doing the above
    % m format 2string r
</pre>
</div>
<div id="section8" class="section"><h2><a name="section8">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>report</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key55">matrix</a>, <a href="../../../../index.html#key118">report</a>, <a href="../../../../index.html#key117">table</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
    |   |true numeric       |       |       |        |
    +---+-------------------+-------+-------+--------+
    %
    % # alternate way of doing the above
    % m format 2string r
</pre>
</div>
<div id="section8" class="section"><h2><a name="section8">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>report</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key55">matrix</a>, <a href="../../../../index.html#key118">report</a>, <a href="../../../../index.html#key117">table</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/ripemd/ripemd128.html.

116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">PROGRAMMING INTERFACE</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">REFERENCES</a></li>
<li class="section"><a href="#section6">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">PROGRAMMING INTERFACE</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">REFERENCES</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
<li><a href="#8"><b class="cmd">::ripemd::RIPEHMAC128Final</b> <i class="arg">token</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package is an implementation in Tcl of the RIPEMD-128 message-digest
algorithm (1). This algorithm takes an arbitrary quantity of data and
generates a 128-bit message digest from the input. The RIPEMD-128 
algorithm is based upon the MD4 algorithm (2, 4) but has been
cryptographically strengthened against weaknesses that have been found
in MD4 (4). RIPEMD-128 has been designed to be a drop-in replacement
for MD4 and MD5 (5). If security is the major consideration, then
RIPEMD-160 or SHA1 should be considered.</p>
<p>This package will use <b class="package">Trf</b> to
accelerate the digest computation if available. In
the absence of an accelerator package the pure-Tcl implementation will
be used.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::ripemd::ripemd128</b> <span class="opt">?<i class="arg">-hex</i>?</span> [ <i class="arg">-channel channel</i> | <i class="arg">-file filename</i> | <i class="arg">string</i> ]</a></dt>
<dd><p>Calculate the RIPEMD-128 digest of the data given in string. This is
returned as a binary string by default. Giving the <i class="arg">-hex</i> option
will return a hexadecimal encoded version of the digest.</p>
<p>The data to be hashed can be specified either as a string argument to
the ripemd128 command, or as a filename or a pre-opened channel. If the 
<i class="arg">-filename</i> argument is given then the file is opened, the data read
and hashed and the file is closed. If the <i class="arg">-channel</i> argument is
given then data is read from the channel until the end of file. The
channel is not closed.</p>
<p>Only one of <i class="arg">-file</i>, <i class="arg">-channel</i> or <i class="arg">string</i> should be given.</p></dd>
<dt><a name="2"><b class="cmd">::ripemd::hmac128</b> <span class="opt">?<i class="arg">-hex</i>?</span> <i class="arg">-key key</i> [ <i class="arg">-channel channel</i> | <i class="arg">-file filename</i> | <i class="arg">string</i> ]</a></dt>
<dd><p>Calculate an Hashed Message Authentication digest (HMAC) using the
RIPEMD-128 digest algorithm. HMACs are described in RFC 2104 (6) and
provide a RIPEMD-128 digest that includes a key. All options other
than <i class="arg">-key</i> are as for the <b class="cmd">::ripemd::ripemd128</b> command.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">PROGRAMMING INTERFACE</a></h2>
<p>For the programmer, hash functions can be viewed as a bucket into which
one pours data. When you have finished, you extract a value that is
uniquely derived from the data that was poured into the bucket. The 
programming interface to the hash operates on a token (equivalent to the
bucket). You call <b class="cmd">RIPEMD128Init</b> to obtain a token and then call 
<b class="cmd">RIPEMD128Update</b> as many times as required to add data to the hash. To
release any resources and obtain the hash value, you then call 
<b class="cmd">RIPEMD128Final</b>. An equivalent set of functions gives you a keyed
digest (HMAC).</p>
<p>If you have <b class="package">critcl</b> and have built the <b class="package">tcllibc</b>
package then the implementation of the hashing function will be
performed by compiled code. Alternatively if both the Trf and Memchan
extensions are available then these will be used. Finally the package
will revert to a pure-Tcl implementation.  The programming interface
remains the same, however.</p>
<dl class="definitions">
<dt><a name="3"><b class="cmd">::ripemd::RIPEMD128Init</b></a></dt>
<dd><p>Begins a new RIPEMD-128 hash. Returns a token ID that must be used for the
remaining functions.</p></dd>
<dt><a name="4"><b class="cmd">::ripemd::RIPEMD128Update</b> <i class="arg">token</i> <i class="arg">data</i></a></dt>
<dd><p>Add data to the hash identified by token. Calling 
<em>RIPEMD128Update $token &quot;abcd&quot;</em> is equivalent to calling
<em>RIPEMD128Update $token &quot;ab&quot;</em> followed by 
<em>RIPEMD128Update $token &quot;cb&quot;</em>. See <span class="sectref"><a href="#section4">EXAMPLES</a></span>.</p></dd>
<dt><a name="5"><b class="cmd">::ripemd::RIPEMD128Final</b> <i class="arg">token</i></a></dt>
<dd><p>Returns the hash value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a binary string of 16 bytes representing the 128 bit
RIPEMD-128 digest value.</p></dd>
<dt><a name="6"><b class="cmd">::ripemd::RIPEHMAC128Init</b> <i class="arg">key</i></a></dt>







|

















|















|

|

|













|

|







144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
<li><a href="#8"><b class="cmd">::ripemd::RIPEHMAC128Final</b> <i class="arg">token</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package is an implementation in Tcl of the RIPEMD-128 message-digest
algorithm (1). This algorithm takes an arbitrary quantity of data and
generates a 128-bit message digest from the input. The RIPEMD-128
algorithm is based upon the MD4 algorithm (2, 4) but has been
cryptographically strengthened against weaknesses that have been found
in MD4 (4). RIPEMD-128 has been designed to be a drop-in replacement
for MD4 and MD5 (5). If security is the major consideration, then
RIPEMD-160 or SHA1 should be considered.</p>
<p>This package will use <b class="package">Trf</b> to
accelerate the digest computation if available. In
the absence of an accelerator package the pure-Tcl implementation will
be used.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::ripemd::ripemd128</b> <span class="opt">?<i class="arg">-hex</i>?</span> [ <i class="arg">-channel channel</i> | <i class="arg">-file filename</i> | <i class="arg">string</i> ]</a></dt>
<dd><p>Calculate the RIPEMD-128 digest of the data given in string. This is
returned as a binary string by default. Giving the <i class="arg">-hex</i> option
will return a hexadecimal encoded version of the digest.</p>
<p>The data to be hashed can be specified either as a string argument to
the ripemd128 command, or as a filename or a pre-opened channel. If the
<i class="arg">-filename</i> argument is given then the file is opened, the data read
and hashed and the file is closed. If the <i class="arg">-channel</i> argument is
given then data is read from the channel until the end of file. The
channel is not closed.</p>
<p>Only one of <i class="arg">-file</i>, <i class="arg">-channel</i> or <i class="arg">string</i> should be given.</p></dd>
<dt><a name="2"><b class="cmd">::ripemd::hmac128</b> <span class="opt">?<i class="arg">-hex</i>?</span> <i class="arg">-key key</i> [ <i class="arg">-channel channel</i> | <i class="arg">-file filename</i> | <i class="arg">string</i> ]</a></dt>
<dd><p>Calculate an Hashed Message Authentication digest (HMAC) using the
RIPEMD-128 digest algorithm. HMACs are described in RFC 2104 (6) and
provide a RIPEMD-128 digest that includes a key. All options other
than <i class="arg">-key</i> are as for the <b class="cmd">::ripemd::ripemd128</b> command.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">PROGRAMMING INTERFACE</a></h2>
<p>For the programmer, hash functions can be viewed as a bucket into which
one pours data. When you have finished, you extract a value that is
uniquely derived from the data that was poured into the bucket. The
programming interface to the hash operates on a token (equivalent to the
bucket). You call <b class="cmd">RIPEMD128Init</b> to obtain a token and then call
<b class="cmd">RIPEMD128Update</b> as many times as required to add data to the hash. To
release any resources and obtain the hash value, you then call
<b class="cmd">RIPEMD128Final</b>. An equivalent set of functions gives you a keyed
digest (HMAC).</p>
<p>If you have <b class="package">critcl</b> and have built the <b class="package">tcllibc</b>
package then the implementation of the hashing function will be
performed by compiled code. Alternatively if both the Trf and Memchan
extensions are available then these will be used. Finally the package
will revert to a pure-Tcl implementation.  The programming interface
remains the same, however.</p>
<dl class="definitions">
<dt><a name="3"><b class="cmd">::ripemd::RIPEMD128Init</b></a></dt>
<dd><p>Begins a new RIPEMD-128 hash. Returns a token ID that must be used for the
remaining functions.</p></dd>
<dt><a name="4"><b class="cmd">::ripemd::RIPEMD128Update</b> <i class="arg">token</i> <i class="arg">data</i></a></dt>
<dd><p>Add data to the hash identified by token. Calling
<em>RIPEMD128Update $token &quot;abcd&quot;</em> is equivalent to calling
<em>RIPEMD128Update $token &quot;ab&quot;</em> followed by
<em>RIPEMD128Update $token &quot;cb&quot;</em>. See <span class="sectref"><a href="#section4">EXAMPLES</a></span>.</p></dd>
<dt><a name="5"><b class="cmd">::ripemd::RIPEMD128Final</b> <i class="arg">token</i></a></dt>
<dd><p>Returns the hash value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a binary string of 16 bytes representing the 128 bit
RIPEMD-128 digest value.</p></dd>
<dt><a name="6"><b class="cmd">::ripemd::RIPEHMAC128Init</b> <i class="arg">key</i></a></dt>
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
% ripemd::RIPEMD128Update $tok &quot;RIPEMD-128&quot;
% ripemd::Hex [ripemd::RIPEMD128Final $tok]
3cab177bae65205d81e7978f63556c63
</pre>
</div>
<div id="section5" class="section"><h2><a name="section5">REFERENCES</a></h2>
<ol class="enumerated">
<li><p>H. Dobbertin, A. Bosselaers, B. Preneel, 
        &quot;RIPEMD-160, a strengthened version of RIPEMD&quot;
        <a href="http://www.esat.kuleuven.ac.be/~cosicart/pdf/AB-9601/AB-9601.pdf">http://www.esat.kuleuven.ac.be/~cosicart/pdf/AB-9601/AB-9601.pdf</a></p></li>
<li><p>Rivest, R., &quot;The MD4 Message Digest Algorithm&quot;, RFC 1320, MIT,
       April 1992. (<a href="http://www.rfc-editor.org/rfc/rfc1320.txt">http://www.rfc-editor.org/rfc/rfc1320.txt</a>)</p></li>
<li><p>Rivest, R., &quot;The MD4 message digest algorithm&quot;, in A.J.  Menezes
       and S.A. Vanstone, editors, Advances in Cryptology - CRYPTO '90
       Proceedings, pages 303-311, Springer-Verlag, 1991.</p></li>
<li><p>Dobbertin, H., &quot;Cryptanalysis of MD4&quot;, Journal of Cryptology
        vol 11 (4), pp. 253-271 (1998)</p></li>
<li><p>Rivest, R., &quot;The MD5 Message-Digest Algorithm&quot;, RFC 1321, MIT and
       RSA Data Security, Inc, April 1992.
	(<a href="http://www.rfc-editor.org/rfc/rfc1321.txt">http://www.rfc-editor.org/rfc/rfc1321.txt</a>)</p></li>
<li><p>Krawczyk, H., Bellare, M. and Canetti, R. &quot;HMAC: Keyed-Hashing for 
      Message Authentication&quot;, RFC 2104, February 1997.
	(<a href="http://www.rfc-editor.org/rfc/rfc2104.txt">http://www.rfc-editor.org/rfc/rfc2104.txt</a>)</p></li>
</ol>
</div>
<div id="section6" class="section"><h2><a name="section6">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>ripemd</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../md4/md4.html">md4</a>, <a href="../md5/md5.html">md5</a>, <a href="ripemd160.html">ripemd160</a>, <a href="../sha1/sha1.html">sha1</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key359">RIPEMD</a>, <a href="../../../../index.html#key224">hashing</a>, <a href="../../../../index.html#key358">md4</a>, <a href="../../../../index.html#key223">message-digest</a>, <a href="../../../../index.html#key357">rfc 1320</a>, <a href="../../../../index.html#key360">rfc 1321</a>, <a href="../../../../index.html#key222">rfc 2104</a>, <a href="../../../../index.html#key148">security</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004, Pat Thoyts &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|












|




|



|







|








235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
% ripemd::RIPEMD128Update $tok &quot;RIPEMD-128&quot;
% ripemd::Hex [ripemd::RIPEMD128Final $tok]
3cab177bae65205d81e7978f63556c63
</pre>
</div>
<div id="section5" class="section"><h2><a name="section5">REFERENCES</a></h2>
<ol class="enumerated">
<li><p>H. Dobbertin, A. Bosselaers, B. Preneel,
        &quot;RIPEMD-160, a strengthened version of RIPEMD&quot;
        <a href="http://www.esat.kuleuven.ac.be/~cosicart/pdf/AB-9601/AB-9601.pdf">http://www.esat.kuleuven.ac.be/~cosicart/pdf/AB-9601/AB-9601.pdf</a></p></li>
<li><p>Rivest, R., &quot;The MD4 Message Digest Algorithm&quot;, RFC 1320, MIT,
       April 1992. (<a href="http://www.rfc-editor.org/rfc/rfc1320.txt">http://www.rfc-editor.org/rfc/rfc1320.txt</a>)</p></li>
<li><p>Rivest, R., &quot;The MD4 message digest algorithm&quot;, in A.J.  Menezes
       and S.A. Vanstone, editors, Advances in Cryptology - CRYPTO '90
       Proceedings, pages 303-311, Springer-Verlag, 1991.</p></li>
<li><p>Dobbertin, H., &quot;Cryptanalysis of MD4&quot;, Journal of Cryptology
        vol 11 (4), pp. 253-271 (1998)</p></li>
<li><p>Rivest, R., &quot;The MD5 Message-Digest Algorithm&quot;, RFC 1321, MIT and
       RSA Data Security, Inc, April 1992.
	(<a href="http://www.rfc-editor.org/rfc/rfc1321.txt">http://www.rfc-editor.org/rfc/rfc1321.txt</a>)</p></li>
<li><p>Krawczyk, H., Bellare, M. and Canetti, R. &quot;HMAC: Keyed-Hashing for
      Message Authentication&quot;, RFC 2104, February 1997.
	(<a href="http://www.rfc-editor.org/rfc/rfc2104.txt">http://www.rfc-editor.org/rfc/rfc2104.txt</a>)</p></li>
</ol>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>ripemd</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../md4/md4.html">md4</a>, <a href="../md5/md5.html">md5</a>, <a href="ripemd160.html">ripemd160</a>, <a href="../sha1/sha1.html">sha1</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key357">RIPEMD</a>, <a href="../../../../index.html#key224">hashing</a>, <a href="../../../../index.html#key359">md4</a>, <a href="../../../../index.html#key223">message-digest</a>, <a href="../../../../index.html#key358">rfc 1320</a>, <a href="../../../../index.html#key360">rfc 1321</a>, <a href="../../../../index.html#key222">rfc 2104</a>, <a href="../../../../index.html#key148">security</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004, Pat Thoyts &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/ripemd/ripemd160.html.

116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">PROGRAMMING INTERFACE</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">REFERENCES</a></li>
<li class="section"><a href="#section6">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">PROGRAMMING INTERFACE</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">REFERENCES</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
<li><a href="#8"><b class="cmd">::ripemd::RIPEHMAC160Final</b> <i class="arg">token</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package is an implementation in Tcl of the RIPEMD-160 message-digest
algorithm (1). This algorithm takes an arbitrary quantity of data and
generates a 160-bit message digest from the input. The RIPEMD-160 
algorithm is based upon the MD4 algorithm (2, 4) but has been
cryptographically strengthened against weaknesses that have been found
in MD4 (4).</p>
<p>This package will use <b class="package">cryptkit</b> or <b class="package">Trf</b> to
accelerate the digest computation if either package is available. In
the absence of an accelerator package the pure-Tcl implementation will
be used.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::ripemd::ripemd160</b> <span class="opt">?<i class="arg">-hex</i>?</span> [ <i class="arg">-channel channel</i> | <i class="arg">-file filename</i> | <i class="arg">string</i> ]</a></dt>
<dd><p>Calculate the RIPEMD-160 digest of the data given in string. This is
returned as a binary string by default. Giving the <i class="arg">-hex</i> option
will return a hexadecimal encoded version of the digest.</p>
<p>The data to be hashed can be specified either as a string argument to
the ripemd160 command, or as a filename or a pre-opened channel. If the 
<i class="arg">-filename</i> argument is given then the file is opened, the data read
and hashed and the file is closed. If the <i class="arg">-channel</i> argument is
given then data is read from the channel until the end of file. The
channel is not closed.</p>
<p>Only one of <i class="arg">-file</i>, <i class="arg">-channel</i> or <i class="arg">string</i> should be given.</p></dd>
<dt><a name="2"><b class="cmd">::ripemd::hmac160</b> <span class="opt">?<i class="arg">-hex</i>?</span> <i class="arg">-key key</i> [ <i class="arg">-channel channel</i> | <i class="arg">-file filename</i> | <i class="arg">string</i> ]</a></dt>
<dd><p>Calculate an Hashed Message Authentication digest (HMAC) using the
RIPEMD-160 digest algorithm. HMACs are described in RFC 2104 (5) and
provide a RIPEMD-160 digest that includes a key. All options other
than <i class="arg">-key</i> are as for the <b class="cmd">::ripemd::ripemd160</b> command.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">PROGRAMMING INTERFACE</a></h2>
<p>For the programmer, hash functions can be viewed as a bucket into which
one pours data. When you have finished, you extract a value that is
uniquely derived from the data that was poured into the bucket. The 
programming interface to the hash operates on a token (equivalent to the
bucket). You call <b class="cmd">RIPEMD160Init</b> to obtain a token and then call 
<b class="cmd">RIPEMD160Update</b> as many times as required to add data to the hash. To
release any resources and obtain the hash value, you then call 
<b class="cmd">RIPEMD160Final</b>. An equivalent set of functions gives you a keyed
digest (HMAC).</p>
<dl class="definitions">
<dt><a name="3"><b class="cmd">::ripemd::RIPEMD160Init</b></a></dt>
<dd><p>Begins a new RIPEMD-160 hash. Returns a token ID that must be used for the
remaining functions.</p></dd>
<dt><a name="4"><b class="cmd">::ripemd::RIPEMD160Update</b> <i class="arg">token</i> <i class="arg">data</i></a></dt>
<dd><p>Add data to the hash identified by token. Calling 
<em>RIPEMD160Update $token &quot;abcd&quot;</em> is equivalent to calling
<em>RIPEMD160Update $token &quot;ab&quot;</em> followed by 
<em>RIPEMD160Update $token &quot;cb&quot;</em>. See <span class="sectref"><a href="#section4">EXAMPLES</a></span>.</p></dd>
<dt><a name="5"><b class="cmd">::ripemd::RIPEMD160Final</b> <i class="arg">token</i></a></dt>
<dd><p>Returns the hash value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a binary string of 16 bytes representing the 160 bit
RIPEMD-160 digest value.</p></dd>
<dt><a name="6"><b class="cmd">::ripemd::RIPEHMAC160Init</b> <i class="arg">key</i></a></dt>







|















|















|

|

|







|

|







144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
<li><a href="#8"><b class="cmd">::ripemd::RIPEHMAC160Final</b> <i class="arg">token</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package is an implementation in Tcl of the RIPEMD-160 message-digest
algorithm (1). This algorithm takes an arbitrary quantity of data and
generates a 160-bit message digest from the input. The RIPEMD-160
algorithm is based upon the MD4 algorithm (2, 4) but has been
cryptographically strengthened against weaknesses that have been found
in MD4 (4).</p>
<p>This package will use <b class="package">cryptkit</b> or <b class="package">Trf</b> to
accelerate the digest computation if either package is available. In
the absence of an accelerator package the pure-Tcl implementation will
be used.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::ripemd::ripemd160</b> <span class="opt">?<i class="arg">-hex</i>?</span> [ <i class="arg">-channel channel</i> | <i class="arg">-file filename</i> | <i class="arg">string</i> ]</a></dt>
<dd><p>Calculate the RIPEMD-160 digest of the data given in string. This is
returned as a binary string by default. Giving the <i class="arg">-hex</i> option
will return a hexadecimal encoded version of the digest.</p>
<p>The data to be hashed can be specified either as a string argument to
the ripemd160 command, or as a filename or a pre-opened channel. If the
<i class="arg">-filename</i> argument is given then the file is opened, the data read
and hashed and the file is closed. If the <i class="arg">-channel</i> argument is
given then data is read from the channel until the end of file. The
channel is not closed.</p>
<p>Only one of <i class="arg">-file</i>, <i class="arg">-channel</i> or <i class="arg">string</i> should be given.</p></dd>
<dt><a name="2"><b class="cmd">::ripemd::hmac160</b> <span class="opt">?<i class="arg">-hex</i>?</span> <i class="arg">-key key</i> [ <i class="arg">-channel channel</i> | <i class="arg">-file filename</i> | <i class="arg">string</i> ]</a></dt>
<dd><p>Calculate an Hashed Message Authentication digest (HMAC) using the
RIPEMD-160 digest algorithm. HMACs are described in RFC 2104 (5) and
provide a RIPEMD-160 digest that includes a key. All options other
than <i class="arg">-key</i> are as for the <b class="cmd">::ripemd::ripemd160</b> command.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">PROGRAMMING INTERFACE</a></h2>
<p>For the programmer, hash functions can be viewed as a bucket into which
one pours data. When you have finished, you extract a value that is
uniquely derived from the data that was poured into the bucket. The
programming interface to the hash operates on a token (equivalent to the
bucket). You call <b class="cmd">RIPEMD160Init</b> to obtain a token and then call
<b class="cmd">RIPEMD160Update</b> as many times as required to add data to the hash. To
release any resources and obtain the hash value, you then call
<b class="cmd">RIPEMD160Final</b>. An equivalent set of functions gives you a keyed
digest (HMAC).</p>
<dl class="definitions">
<dt><a name="3"><b class="cmd">::ripemd::RIPEMD160Init</b></a></dt>
<dd><p>Begins a new RIPEMD-160 hash. Returns a token ID that must be used for the
remaining functions.</p></dd>
<dt><a name="4"><b class="cmd">::ripemd::RIPEMD160Update</b> <i class="arg">token</i> <i class="arg">data</i></a></dt>
<dd><p>Add data to the hash identified by token. Calling
<em>RIPEMD160Update $token &quot;abcd&quot;</em> is equivalent to calling
<em>RIPEMD160Update $token &quot;ab&quot;</em> followed by
<em>RIPEMD160Update $token &quot;cb&quot;</em>. See <span class="sectref"><a href="#section4">EXAMPLES</a></span>.</p></dd>
<dt><a name="5"><b class="cmd">::ripemd::RIPEMD160Final</b> <i class="arg">token</i></a></dt>
<dd><p>Returns the hash value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a binary string of 16 bytes representing the 160 bit
RIPEMD-160 digest value.</p></dd>
<dt><a name="6"><b class="cmd">::ripemd::RIPEHMAC160Init</b> <i class="arg">key</i></a></dt>
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
% ripemd::RIPEMD160Update $tok &quot;RIPEMD-160&quot;
% ripemd::Hex [ripemd::RIPEMD160Final $tok]
0829dea75a1a7074c702896723fe37763481a0a7
</pre>
</div>
<div id="section5" class="section"><h2><a name="section5">REFERENCES</a></h2>
<ol class="enumerated">
<li><p>H. Dobbertin, A. Bosselaers, B. Preneel, 
        &quot;RIPEMD-160, a strengthened version of RIPEMD&quot;
        <a href="http://www.esat.kuleuven.ac.be/~cosicart/pdf/AB-9601/AB-9601.pdf">http://www.esat.kuleuven.ac.be/~cosicart/pdf/AB-9601/AB-9601.pdf</a></p></li>
<li><p>Rivest, R., &quot;The MD4 Message Digest Algorithm&quot;, RFC 1320, MIT,
       April 1992. (<a href="http://www.rfc-editor.org/rfc/rfc1320.txt">http://www.rfc-editor.org/rfc/rfc1320.txt</a>)</p></li>
<li><p>Rivest, R., &quot;The MD4 message digest algorithm&quot;, in A.J.  Menezes
       and S.A. Vanstone, editors, Advances in Cryptology - CRYPTO '90
       Proceedings, pages 303-311, Springer-Verlag, 1991.</p></li>
<li><p>Dobbertin, H., &quot;Cryptanalysis of MD4&quot;, Journal of Cryptology
        vol 11 (4), pp. 253-271 (1998)</p></li>
<li><p>Krawczyk, H., Bellare, M. and Canetti, R. &quot;HMAC: Keyed-Hashing for 
      Message Authentication&quot;, RFC 2104, February 1997.
	(<a href="http://www.rfc-editor.org/rfc/rfc2104.txt">http://www.rfc-editor.org/rfc/rfc2104.txt</a>)</p></li>
</ol>
</div>
<div id="section6" class="section"><h2><a name="section6">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>ripemd</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../md4/md4.html">md4</a>, <a href="../md5/md5.html">md5</a>, <a href="ripemd128.html">ripemd128</a>, <a href="../sha1/sha1.html">sha1</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key359">RIPEMD</a>, <a href="../../../../index.html#key224">hashing</a>, <a href="../../../../index.html#key358">md4</a>, <a href="../../../../index.html#key223">message-digest</a>, <a href="../../../../index.html#key357">rfc 1320</a>, <a href="../../../../index.html#key360">rfc 1321</a>, <a href="../../../../index.html#key222">rfc 2104</a>, <a href="../../../../index.html#key148">security</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004, Pat Thoyts &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|









|




|



|







|








227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
% ripemd::RIPEMD160Update $tok &quot;RIPEMD-160&quot;
% ripemd::Hex [ripemd::RIPEMD160Final $tok]
0829dea75a1a7074c702896723fe37763481a0a7
</pre>
</div>
<div id="section5" class="section"><h2><a name="section5">REFERENCES</a></h2>
<ol class="enumerated">
<li><p>H. Dobbertin, A. Bosselaers, B. Preneel,
        &quot;RIPEMD-160, a strengthened version of RIPEMD&quot;
        <a href="http://www.esat.kuleuven.ac.be/~cosicart/pdf/AB-9601/AB-9601.pdf">http://www.esat.kuleuven.ac.be/~cosicart/pdf/AB-9601/AB-9601.pdf</a></p></li>
<li><p>Rivest, R., &quot;The MD4 Message Digest Algorithm&quot;, RFC 1320, MIT,
       April 1992. (<a href="http://www.rfc-editor.org/rfc/rfc1320.txt">http://www.rfc-editor.org/rfc/rfc1320.txt</a>)</p></li>
<li><p>Rivest, R., &quot;The MD4 message digest algorithm&quot;, in A.J.  Menezes
       and S.A. Vanstone, editors, Advances in Cryptology - CRYPTO '90
       Proceedings, pages 303-311, Springer-Verlag, 1991.</p></li>
<li><p>Dobbertin, H., &quot;Cryptanalysis of MD4&quot;, Journal of Cryptology
        vol 11 (4), pp. 253-271 (1998)</p></li>
<li><p>Krawczyk, H., Bellare, M. and Canetti, R. &quot;HMAC: Keyed-Hashing for
      Message Authentication&quot;, RFC 2104, February 1997.
	(<a href="http://www.rfc-editor.org/rfc/rfc2104.txt">http://www.rfc-editor.org/rfc/rfc2104.txt</a>)</p></li>
</ol>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>ripemd</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../md4/md4.html">md4</a>, <a href="../md5/md5.html">md5</a>, <a href="ripemd128.html">ripemd128</a>, <a href="../sha1/sha1.html">sha1</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key357">RIPEMD</a>, <a href="../../../../index.html#key224">hashing</a>, <a href="../../../../index.html#key359">md4</a>, <a href="../../../../index.html#key223">message-digest</a>, <a href="../../../../index.html#key358">rfc 1320</a>, <a href="../../../../index.html#key360">rfc 1321</a>, <a href="../../../../index.html#key222">rfc 2104</a>, <a href="../../../../index.html#key148">security</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004, Pat Thoyts &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/sasl/sasl.html.

120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">OPTIONS</a></li>
<li class="section"><a href="#section4">CALLBACK PROCEDURE</a></li>
<li class="section"><a href="#section5">MECHANISMS</a></li>
<li class="section"><a href="#section6">EXAMPLES</a></li>
<li class="section"><a href="#section7">REFERENCES</a></li>
<li class="section"><a href="#section8">AUTHORS</a></li>
<li class="section"><a href="#section9">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">OPTIONS</a></li>
<li class="section"><a href="#section4">CALLBACK PROCEDURE</a></li>
<li class="section"><a href="#section5">MECHANISMS</a></li>
<li class="section"><a href="#section6">EXAMPLES</a></li>
<li class="section"><a href="#section7">REFERENCES</a></li>
<li class="section"><a href="#section8">AUTHORS</a></li>
<li class="section"><a href="#section9">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
<dd><p>Contruct a new SASL context. See <span class="sectref"><a href="#section3">OPTIONS</a></span> for details of the
possible options to this command. A context token is required for most
of the SASL procedures.</p></dd>
<dt><a name="2"><b class="cmd">::SASL::configure</b> <i class="arg">option value</i> <span class="opt">?<i class="arg">...</i>?</span></a></dt>
<dd><p>Modify and inspect the SASL context option. See <span class="sectref"><a href="#section3">OPTIONS</a></span> for
further details.</p></dd>
<dt><a name="3"><b class="cmd">::SASL::step</b> <i class="arg">context</i> <i class="arg">challenge</i> <span class="opt">?<i class="arg">...</i>?</span></a></dt>
<dd><p>This is the core procedure for using the SASL framework. The 
<b class="cmd">step</b> procedure should be called until it returns 0. Each step takes a
server challenge string and the response is calculated and stored in
the context. Each mechanism may require one or more steps. For some
steps there may be no server challenge required in which case an empty
string should be provided for this parameter. All mechanisms should accept
an initial empty challenge.</p></dd>
<dt><a name="4"><b class="cmd">::SASL::response</b> <i class="arg">context</i></a></dt>
<dd><p>Returns the next response string that should be sent to the server.</p></dd>
<dt><a name="5"><b class="cmd">::SASL::reset</b> <i class="arg">context</i></a></dt>
<dd><p>Re-initialize the SASL context. Discards any internal state and
permits the token to be reused.</p></dd>
<dt><a name="6"><b class="cmd">::SASL::cleanup</b> <i class="arg">context</i></a></dt>
<dd><p>Release all resources associated with the SASL context. The context
token may not be used again after this procedure has been called.</p></dd>
<dt><a name="7"><b class="cmd">::SASL::mechanisms</b> <span class="opt">?<i class="arg">type</i>?</span> <span class="opt">?<i class="arg">minimum</i>?</span></a></dt>
<dd><p>Returns a list of all the available SASL mechanisms. The list is
sorted by the mechanism preference value (see <b class="cmd">register</b>) with the
preferred mechanisms and the head of the list. Any mechanism with a 
preference value less than the<i class="arg">minimum</i> (which defaults to 0) is removed
from the returned list. This permits a security threshold to be set. Mechanisms
with a preference less that 25 transmit authentication are particularly
susceptible to eavesdropping and should not be provided unless a secure
channel is in use (eg: tls).</p>
<p>The <i class="arg">type</i> parameter
may be one of <i class="arg">client</i> or <i class="arg">server</i> and defaults to <i class="arg">client</i>.
Only mechanisms that have an implementation matching the <i class="arg">type</i> are 
returned (this permits servers to correctly declare support only for 
mechanisms that actually provide a server implementation).</p></dd>
<dt><a name="8"><b class="cmd">::SASL::register</b> <i class="arg">mechanism</i> <i class="arg">preference</i> <i class="arg">clientproc</i> <span class="opt">?<i class="arg">serverproc</i>?</span></a></dt>
<dd><p>New mechanisms can be added to the package by registering the
mechanism name and the implementing procedures. The server procedure
is optional. The preference value is an integer that is used to order
the list returned by the <b class="cmd">mechanisms</b> command. Higher values
indicate a preferred mechanism. If the mechanism is already registered







|

















|







|
|







169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
<dd><p>Contruct a new SASL context. See <span class="sectref"><a href="#section3">OPTIONS</a></span> for details of the
possible options to this command. A context token is required for most
of the SASL procedures.</p></dd>
<dt><a name="2"><b class="cmd">::SASL::configure</b> <i class="arg">option value</i> <span class="opt">?<i class="arg">...</i>?</span></a></dt>
<dd><p>Modify and inspect the SASL context option. See <span class="sectref"><a href="#section3">OPTIONS</a></span> for
further details.</p></dd>
<dt><a name="3"><b class="cmd">::SASL::step</b> <i class="arg">context</i> <i class="arg">challenge</i> <span class="opt">?<i class="arg">...</i>?</span></a></dt>
<dd><p>This is the core procedure for using the SASL framework. The
<b class="cmd">step</b> procedure should be called until it returns 0. Each step takes a
server challenge string and the response is calculated and stored in
the context. Each mechanism may require one or more steps. For some
steps there may be no server challenge required in which case an empty
string should be provided for this parameter. All mechanisms should accept
an initial empty challenge.</p></dd>
<dt><a name="4"><b class="cmd">::SASL::response</b> <i class="arg">context</i></a></dt>
<dd><p>Returns the next response string that should be sent to the server.</p></dd>
<dt><a name="5"><b class="cmd">::SASL::reset</b> <i class="arg">context</i></a></dt>
<dd><p>Re-initialize the SASL context. Discards any internal state and
permits the token to be reused.</p></dd>
<dt><a name="6"><b class="cmd">::SASL::cleanup</b> <i class="arg">context</i></a></dt>
<dd><p>Release all resources associated with the SASL context. The context
token may not be used again after this procedure has been called.</p></dd>
<dt><a name="7"><b class="cmd">::SASL::mechanisms</b> <span class="opt">?<i class="arg">type</i>?</span> <span class="opt">?<i class="arg">minimum</i>?</span></a></dt>
<dd><p>Returns a list of all the available SASL mechanisms. The list is
sorted by the mechanism preference value (see <b class="cmd">register</b>) with the
preferred mechanisms and the head of the list. Any mechanism with a
preference value less than the<i class="arg">minimum</i> (which defaults to 0) is removed
from the returned list. This permits a security threshold to be set. Mechanisms
with a preference less that 25 transmit authentication are particularly
susceptible to eavesdropping and should not be provided unless a secure
channel is in use (eg: tls).</p>
<p>The <i class="arg">type</i> parameter
may be one of <i class="arg">client</i> or <i class="arg">server</i> and defaults to <i class="arg">client</i>.
Only mechanisms that have an implementation matching the <i class="arg">type</i> are
returned (this permits servers to correctly declare support only for
mechanisms that actually provide a server implementation).</p></dd>
<dt><a name="8"><b class="cmd">::SASL::register</b> <i class="arg">mechanism</i> <i class="arg">preference</i> <i class="arg">clientproc</i> <span class="opt">?<i class="arg">serverproc</i>?</span></a></dt>
<dd><p>New mechanisms can be added to the package by registering the
mechanism name and the implementing procedures. The server procedure
is optional. The preference value is an integer that is used to order
the list returned by the <b class="cmd">mechanisms</b> command. Higher values
indicate a preferred mechanism. If the mechanism is already registered
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
<dt>username</dt>
<dd><p>The callback procedure should return the users authentication identity.
Read [1] for a discussion about the specific meaning of
authorization and authentication identities within SASL.</p></dd>
<dt>password</dt>
<dd><p>The callback procedure should return the password that matches the
authentication identity as used within the current realm.</p>
<p>For server mechanisms the password callback should always be called with 
the authentication identity and the realm as the first two parameters.</p></dd>
<dt>realm</dt>
<dd><p>Some SASL mechanisms use realms to partition authentication identities.
The realm string is protocol dependent and is often the current DNS
domain or in the case of the NTLM mechanism it is the Windows NT domain name.</p></dd>
<dt>hostname</dt>
<dd><p>Returns the client host name - typically [info host].</p></dd>







|







253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
<dt>username</dt>
<dd><p>The callback procedure should return the users authentication identity.
Read [1] for a discussion about the specific meaning of
authorization and authentication identities within SASL.</p></dd>
<dt>password</dt>
<dd><p>The callback procedure should return the password that matches the
authentication identity as used within the current realm.</p>
<p>For server mechanisms the password callback should always be called with
the authentication identity and the realm as the first two parameters.</p></dd>
<dt>realm</dt>
<dd><p>Some SASL mechanisms use realms to partition authentication identities.
The realm string is protocol dependent and is often the current DNS
domain or in the case of the NTLM mechanism it is the Windows NT domain name.</p></dd>
<dt>hostname</dt>
<dd><p>Returns the client host name - typically [info host].</p></dd>
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
password which helps to make the system more secure. As in CRAM-MD5
the password is hashed with a server nonce and other data before being
transmitted across the network. Specified in [3].</p></dd>
<dt>OTP</dt>
<dd><p>OTP is the One-Time Password system described in RFC 2289 [6].
This mechanism is secure against replay attacks and also avoids storing
password or password equivalents on the server. Only a digest of a seed
and a passphrase is ever transmitted across the network. Requires the 
<b class="package"><a href="../otp/otp.html">otp</a></b> package from tcllib and one or more of the cryptographic 
digest packages (md5 or sha-1 are the most commonly used).</p></dd>
<dt>NTLM</dt>
<dd><p>This is a proprietary protocol developed by Microsoft [5] and is
in common use for authenticating users in a Windows network
environment. NTLM uses DES encryption and MD4 digests of the users
password to authenticate a connection. Certain weaknesses have been
found in NTLM and thus there are a number of versions of the protocol.
As this mechanism has additional dependencies it is made available as
a separate sub-package. To enable this mechanism your application must 
load the SASL::NTLM package.</p></dd>
<dt>X-GOOGLE-TOKEN</dt>
<dd><p>This is a proprietary protocol developed by Google and used for 
authenticating users for the Google Talk service. This mechanism makes
a pair of HTTP requests over an SSL channel and so this mechanism 
depends upon the availability of the tls and http packages. To enable
this mechanism your application must load the SASL::XGoogleToken package.
In addition you are recommended to make use of the autoproxy package to 
handle HTTP proxies reasonably transparently.</p></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">EXAMPLES</a></h2>
<p>See the examples subdirectory for more complete samples using SASL
with network protocols. The following should give an idea how the SASL
commands are to be used. In reality this should be event







|
|








|


|

|


|







294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
password which helps to make the system more secure. As in CRAM-MD5
the password is hashed with a server nonce and other data before being
transmitted across the network. Specified in [3].</p></dd>
<dt>OTP</dt>
<dd><p>OTP is the One-Time Password system described in RFC 2289 [6].
This mechanism is secure against replay attacks and also avoids storing
password or password equivalents on the server. Only a digest of a seed
and a passphrase is ever transmitted across the network. Requires the
<b class="package"><a href="../otp/otp.html">otp</a></b> package from tcllib and one or more of the cryptographic
digest packages (md5 or sha-1 are the most commonly used).</p></dd>
<dt>NTLM</dt>
<dd><p>This is a proprietary protocol developed by Microsoft [5] and is
in common use for authenticating users in a Windows network
environment. NTLM uses DES encryption and MD4 digests of the users
password to authenticate a connection. Certain weaknesses have been
found in NTLM and thus there are a number of versions of the protocol.
As this mechanism has additional dependencies it is made available as
a separate sub-package. To enable this mechanism your application must
load the SASL::NTLM package.</p></dd>
<dt>X-GOOGLE-TOKEN</dt>
<dd><p>This is a proprietary protocol developed by Google and used for
authenticating users for the Google Talk service. This mechanism makes
a pair of HTTP requests over an SSL channel and so this mechanism
depends upon the availability of the tls and http packages. To enable
this mechanism your application must load the SASL::XGoogleToken package.
In addition you are recommended to make use of the autoproxy package to
handle HTTP proxies reasonably transparently.</p></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">EXAMPLES</a></h2>
<p>See the examples subdirectory for more complete samples using SASL
with network protocols. The following should give an idea how the SASL
commands are to be used. In reality this should be event
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
    RFC 2289, February 1998,
    (<a href="http://www.ieft.org/rfc/rfc2289.txt">http://www.ieft.org/rfc/rfc2289.txt</a>)</p></li>
</ol>
</div>
<div id="section8" class="section"><h2><a name="section8">AUTHORS</a></h2>
<p>Pat Thoyts</p>
</div>
<div id="section9" class="section"><h2><a name="section9">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>sasl</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key791">SASL</a>, <a href="../../../../index.html#key790">authentication</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005-2006, Pat Thoyts &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
    RFC 2289, February 1998,
    (<a href="http://www.ieft.org/rfc/rfc2289.txt">http://www.ieft.org/rfc/rfc2289.txt</a>)</p></li>
</ol>
</div>
<div id="section8" class="section"><h2><a name="section8">AUTHORS</a></h2>
<p>Pat Thoyts</p>
</div>
<div id="section9" class="section"><h2><a name="section9">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>sasl</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key791">SASL</a>, <a href="../../../../index.html#key790">authentication</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005-2006, Pat Thoyts &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/sha1/sha1.html.

116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">PROGRAMMING INTERFACE</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">REFERENCES</a></li>
<li class="section"><a href="#section6">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">PROGRAMMING INTERFACE</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">REFERENCES</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::sha1::sha1</b> <span class="opt">?<i class="arg">-hex|-bin</i>?</span> [ <i class="arg">-channel channel</i> | <i class="arg">-file filename</i> | <i class="arg">string</i> ]</a></dt>
<dd><p>The command takes a message and returns the SHA1 digest of this message
as a hexadecimal string. You may request the result as binary data by
giving <i class="arg">-bin</i>.</p>
<p>The data to be hashed can be specified either as a string argument to
the <b class="cmd">sha1</b> command, or as a filename or a pre-opened channel. If the 
<i class="arg">-filename</i> argument is given then the file is opened, the data read
and hashed and the file is closed. If the <i class="arg">-channel</i> argument is
given then data is read from the channel until the end of file. The
channel is not closed. <em>NOTE</em> use of the channel or filename
options results in the internal use of <b class="cmd"><a href="../../../../index.html#key393">vwait</a></b>. To avoid nested
event loops in Tk or tclhttpd applications you should use the
incremental programming API (see below).</p>
<p>Only one of <i class="arg">-file</i>, <i class="arg">-channel</i> or <i class="arg">string</i> should be given.</p></dd>
<dt><a name="2"><b class="cmd">::sha1::hmac</b> <i class="arg">key</i> <i class="arg">string</i></a></dt>
<dd></dd>
<dt><a name="3"><b class="cmd">::sha1::hmac</b> <span class="opt">?<i class="arg">-hex|-bin</i>?</span> <i class="arg">-key key</i> [ <i class="arg">-channel channel</i> | <i class="arg">-file filename</i> | <i class="arg">string</i> ]</a></dt>
<dd><p>Calculate an Hashed Message Authentication digest (HMAC) using the SHA1
digest algorithm. HMACs are described in RFC 2104 (3) and provide an SHA1
digest that includes a key. All options other than <i class="arg">-key</i> are as
for the <b class="cmd">::sha1::sha1</b> command.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">PROGRAMMING INTERFACE</a></h2>
<p>For the programmer, the SHA1 hash can be viewed as a bucket into which
one pours data. When you have finished, you extract a value that is
derived from the data that was poured into the bucket. The programming
interface to the SHA1 hash operates on a token (equivalent to the
bucket). You call <b class="cmd">SHA1Init</b> to obtain a token and then call 
<b class="cmd">SHA1Update</b> as many times as required to add data to the hash. To
release any resources and obtain the hash value, you then call 
<b class="cmd">SHA1Final</b>. An equivalent set of functions gives you a keyed digest
(HMAC).</p>
<p>If you have <b class="package">critcl</b> and have built the <b class="package">tcllibc</b> package
then the implementation of the hashing function will be performed by compiled
code. Failing that if you have the <b class="package">Trf</b> package then this can
be used otherwise there is a pure-tcl equivalent. The programming
interface remains the same in all cases.</p>
<dl class="definitions">
<dt><a name="4"><b class="cmd">::sha1::SHA1Init</b></a></dt>
<dd><p>Begins a new SHA1 hash. Returns a token ID that must be used for the
remaining functions.</p></dd>
<dt><a name="5"><b class="cmd">::sha1::SHA1Update</b> <i class="arg">token</i> <i class="arg">data</i></a></dt>
<dd><p>Add data to the hash identified by token. Calling 
<em>SHA1Update $token &quot;abcd&quot;</em> is equivalent to calling
<em>SHA1Update $token &quot;ab&quot;</em> followed by 
<em>SHA1Update $token &quot;cb&quot;</em>. See <span class="sectref"><a href="#section4">EXAMPLES</a></span>.</p></dd>
<dt><a name="6"><b class="cmd">::sha1::SHA1Final</b> <i class="arg">token</i></a></dt>
<dd><p>Returns the hash value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a binary string of 20 bytes representing the 160 bit SHA1
digest value.</p></dd>
<dt><a name="7"><b class="cmd">::sha1::HMACInit</b> <i class="arg">key</i></a></dt>







|




|

















|

|












|

|







160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::sha1::sha1</b> <span class="opt">?<i class="arg">-hex|-bin</i>?</span> [ <i class="arg">-channel channel</i> | <i class="arg">-file filename</i> | <i class="arg">string</i> ]</a></dt>
<dd><p>The command takes a message and returns the SHA1 digest of this message
as a hexadecimal string. You may request the result as binary data by
giving <i class="arg">-bin</i>.</p>
<p>The data to be hashed can be specified either as a string argument to
the <b class="cmd">sha1</b> command, or as a filename or a pre-opened channel. If the
<i class="arg">-filename</i> argument is given then the file is opened, the data read
and hashed and the file is closed. If the <i class="arg">-channel</i> argument is
given then data is read from the channel until the end of file. The
channel is not closed. <em>NOTE</em> use of the channel or filename
options results in the internal use of <b class="cmd"><a href="../../../../index.html#key395">vwait</a></b>. To avoid nested
event loops in Tk or tclhttpd applications you should use the
incremental programming API (see below).</p>
<p>Only one of <i class="arg">-file</i>, <i class="arg">-channel</i> or <i class="arg">string</i> should be given.</p></dd>
<dt><a name="2"><b class="cmd">::sha1::hmac</b> <i class="arg">key</i> <i class="arg">string</i></a></dt>
<dd></dd>
<dt><a name="3"><b class="cmd">::sha1::hmac</b> <span class="opt">?<i class="arg">-hex|-bin</i>?</span> <i class="arg">-key key</i> [ <i class="arg">-channel channel</i> | <i class="arg">-file filename</i> | <i class="arg">string</i> ]</a></dt>
<dd><p>Calculate an Hashed Message Authentication digest (HMAC) using the SHA1
digest algorithm. HMACs are described in RFC 2104 (3) and provide an SHA1
digest that includes a key. All options other than <i class="arg">-key</i> are as
for the <b class="cmd">::sha1::sha1</b> command.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">PROGRAMMING INTERFACE</a></h2>
<p>For the programmer, the SHA1 hash can be viewed as a bucket into which
one pours data. When you have finished, you extract a value that is
derived from the data that was poured into the bucket. The programming
interface to the SHA1 hash operates on a token (equivalent to the
bucket). You call <b class="cmd">SHA1Init</b> to obtain a token and then call
<b class="cmd">SHA1Update</b> as many times as required to add data to the hash. To
release any resources and obtain the hash value, you then call
<b class="cmd">SHA1Final</b>. An equivalent set of functions gives you a keyed digest
(HMAC).</p>
<p>If you have <b class="package">critcl</b> and have built the <b class="package">tcllibc</b> package
then the implementation of the hashing function will be performed by compiled
code. Failing that if you have the <b class="package">Trf</b> package then this can
be used otherwise there is a pure-tcl equivalent. The programming
interface remains the same in all cases.</p>
<dl class="definitions">
<dt><a name="4"><b class="cmd">::sha1::SHA1Init</b></a></dt>
<dd><p>Begins a new SHA1 hash. Returns a token ID that must be used for the
remaining functions.</p></dd>
<dt><a name="5"><b class="cmd">::sha1::SHA1Update</b> <i class="arg">token</i> <i class="arg">data</i></a></dt>
<dd><p>Add data to the hash identified by token. Calling
<em>SHA1Update $token &quot;abcd&quot;</em> is equivalent to calling
<em>SHA1Update $token &quot;ab&quot;</em> followed by
<em>SHA1Update $token &quot;cb&quot;</em>. See <span class="sectref"><a href="#section4">EXAMPLES</a></span>.</p></dd>
<dt><a name="6"><b class="cmd">::sha1::SHA1Final</b> <i class="arg">token</i></a></dt>
<dd><p>Returns the hash value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a binary string of 20 bytes representing the 160 bit SHA1
digest value.</p></dd>
<dt><a name="7"><b class="cmd">::sha1::HMACInit</b> <i class="arg">key</i></a></dt>
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
<div id="section5" class="section"><h2><a name="section5">REFERENCES</a></h2>
<ol class="enumerated">
<li><p>&quot;Secure Hash Standard&quot;, National Institute of Standards
        and Technology, U.S. Department Of Commerce, April 1995.
	(<a href="http://www.itl.nist.gov/fipspubs/fip180-1.htm">http://www.itl.nist.gov/fipspubs/fip180-1.htm</a>)</p></li>
<li><p>Rivest, R., &quot;The MD4 Message Digest Algorithm&quot;, RFC 1320, MIT,
       April 1992. (<a href="http://www.rfc-editor.org/rfc/rfc1320.txt">http://www.rfc-editor.org/rfc/rfc1320.txt</a>)</p></li>
<li><p>Krawczyk, H., Bellare, M. and Canetti, R. &quot;HMAC: Keyed-Hashing for 
      Message Authentication&quot;, RFC 2104, February 1997.
	(<a href="http://www.rfc-editor.org/rfc/rfc2104.txt">http://www.rfc-editor.org/rfc/rfc2104.txt</a>)</p></li>
</ol>
</div>
<div id="section6" class="section"><h2><a name="section6">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>sha1</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../md4/md4.html">md4</a>, <a href="../md5/md5.html">md5</a>, <a href="../ripemd/ripemd128.html">ripemd128</a>, <a href="../ripemd/ripemd160.html">ripemd160</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key220">FIPS 180-1</a>, <a href="../../../../index.html#key224">hashing</a>, <a href="../../../../index.html#key223">message-digest</a>, <a href="../../../../index.html#key222">rfc 2104</a>, <a href="../../../../index.html#key148">security</a>, <a href="../../../../index.html#key419">sha1</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005, Pat Thoyts &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|




|



|







|








242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
<div id="section5" class="section"><h2><a name="section5">REFERENCES</a></h2>
<ol class="enumerated">
<li><p>&quot;Secure Hash Standard&quot;, National Institute of Standards
        and Technology, U.S. Department Of Commerce, April 1995.
	(<a href="http://www.itl.nist.gov/fipspubs/fip180-1.htm">http://www.itl.nist.gov/fipspubs/fip180-1.htm</a>)</p></li>
<li><p>Rivest, R., &quot;The MD4 Message Digest Algorithm&quot;, RFC 1320, MIT,
       April 1992. (<a href="http://www.rfc-editor.org/rfc/rfc1320.txt">http://www.rfc-editor.org/rfc/rfc1320.txt</a>)</p></li>
<li><p>Krawczyk, H., Bellare, M. and Canetti, R. &quot;HMAC: Keyed-Hashing for
      Message Authentication&quot;, RFC 2104, February 1997.
	(<a href="http://www.rfc-editor.org/rfc/rfc2104.txt">http://www.rfc-editor.org/rfc/rfc2104.txt</a>)</p></li>
</ol>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>sha1</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../md4/md4.html">md4</a>, <a href="../md5/md5.html">md5</a>, <a href="../ripemd/ripemd128.html">ripemd128</a>, <a href="../ripemd/ripemd160.html">ripemd160</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key221">FIPS 180-1</a>, <a href="../../../../index.html#key224">hashing</a>, <a href="../../../../index.html#key223">message-digest</a>, <a href="../../../../index.html#key222">rfc 2104</a>, <a href="../../../../index.html#key148">security</a>, <a href="../../../../index.html#key419">sha1</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005, Pat Thoyts &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/sha1/sha256.html.

116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">PROGRAMMING INTERFACE</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">REFERENCES</a></li>
<li class="section"><a href="#section6">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">PROGRAMMING INTERFACE</a></li>
<li class="section"><a href="#section4">EXAMPLES</a></li>
<li class="section"><a href="#section5">REFERENCES</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::sha2::sha256</b> <span class="opt">?<i class="arg">-hex|-bin</i>?</span> [ <i class="arg">-channel channel</i> | <i class="arg">-file filename</i> | <i class="arg">string</i> ]</a></dt>
<dd><p>The command takes a message and returns the SHA256 digest of this
message as a hexadecimal string. You may request the result as binary
data by giving <i class="arg">-bin</i>.</p>
<p>The data to be hashed can be specified either as a string argument to
the <b class="cmd">sha256</b> command, or as a filename or a pre-opened channel. If the 
<i class="arg">-filename</i> argument is given then the file is opened, the data read
and hashed and the file is closed. If the <i class="arg">-channel</i> argument is
given then data is read from the channel until the end of file. The
channel is not closed. <em>NOTE</em> use of the channel or filename
options results in the internal use of <b class="cmd"><a href="../../../../index.html#key393">vwait</a></b>. To avoid nested
event loops in Tk or tclhttpd applications you should use the
incremental programming API (see below).</p>
<p>Only one of <i class="arg">-file</i>, <i class="arg">-channel</i> or <i class="arg">string</i> should be given.</p></dd>
<dt><a name="2"><b class="cmd">::sha2::sha224</b> <span class="opt">?<i class="arg">-hex|-bin</i>?</span> [ <i class="arg">-channel channel</i> | <i class="arg">-file filename</i> | <i class="arg">string</i> ]</a></dt>
<dd><p>Like <b class="cmd">::sha2::sha256</b>, except that the SHA224 digest is returned.</p></dd>
<dt><a name="3"><b class="cmd">::sha2::hmac</b> <i class="arg">key</i> <i class="arg">string</i></a></dt>
<dd></dd>







|




|







162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::sha2::sha256</b> <span class="opt">?<i class="arg">-hex|-bin</i>?</span> [ <i class="arg">-channel channel</i> | <i class="arg">-file filename</i> | <i class="arg">string</i> ]</a></dt>
<dd><p>The command takes a message and returns the SHA256 digest of this
message as a hexadecimal string. You may request the result as binary
data by giving <i class="arg">-bin</i>.</p>
<p>The data to be hashed can be specified either as a string argument to
the <b class="cmd">sha256</b> command, or as a filename or a pre-opened channel. If the
<i class="arg">-filename</i> argument is given then the file is opened, the data read
and hashed and the file is closed. If the <i class="arg">-channel</i> argument is
given then data is read from the channel until the end of file. The
channel is not closed. <em>NOTE</em> use of the channel or filename
options results in the internal use of <b class="cmd"><a href="../../../../index.html#key395">vwait</a></b>. To avoid nested
event loops in Tk or tclhttpd applications you should use the
incremental programming API (see below).</p>
<p>Only one of <i class="arg">-file</i>, <i class="arg">-channel</i> or <i class="arg">string</i> should be given.</p></dd>
<dt><a name="2"><b class="cmd">::sha2::sha224</b> <span class="opt">?<i class="arg">-hex|-bin</i>?</span> [ <i class="arg">-channel channel</i> | <i class="arg">-file filename</i> | <i class="arg">string</i> ]</a></dt>
<dd><p>Like <b class="cmd">::sha2::sha256</b>, except that the SHA224 digest is returned.</p></dd>
<dt><a name="3"><b class="cmd">::sha2::hmac</b> <i class="arg">key</i> <i class="arg">string</i></a></dt>
<dd></dd>
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
<dl class="definitions">
<dt><a name="5"><b class="cmd">::sha2::SHA256Init</b></a></dt>
<dd></dd>
<dt><a name="6"><b class="cmd">::sha2::SHA224Init</b></a></dt>
<dd><p>Begins a new SHA256/SHA224 hash. Returns a token ID that must be used
for the remaining functions.</p></dd>
<dt><a name="7"><b class="cmd">::sha2::SHA256Update</b> <i class="arg">token</i> <i class="arg">data</i></a></dt>
<dd><p>Add data to the hash identified by token. Calling 
<em>SHA256Update $token &quot;abcd&quot;</em> is equivalent to calling
<em>SHA256Update $token &quot;ab&quot;</em> followed by 
<em>SHA256Update $token &quot;cb&quot;</em>. See <span class="sectref"><a href="#section4">EXAMPLES</a></span>.
Note that this command is used for both SHA256 and SHA224. Only the
initialization and finalization commands of both hashes differ.</p></dd>
<dt><a name="8"><b class="cmd">::sha2::SHA256Final</b> <i class="arg">token</i></a></dt>
<dd></dd>
<dt><a name="9"><b class="cmd">::sha2::SHA224Final</b> <i class="arg">token</i></a></dt>
<dd><p>Returns the hash value and releases any resources held by this







|

|







203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
<dl class="definitions">
<dt><a name="5"><b class="cmd">::sha2::SHA256Init</b></a></dt>
<dd></dd>
<dt><a name="6"><b class="cmd">::sha2::SHA224Init</b></a></dt>
<dd><p>Begins a new SHA256/SHA224 hash. Returns a token ID that must be used
for the remaining functions.</p></dd>
<dt><a name="7"><b class="cmd">::sha2::SHA256Update</b> <i class="arg">token</i> <i class="arg">data</i></a></dt>
<dd><p>Add data to the hash identified by token. Calling
<em>SHA256Update $token &quot;abcd&quot;</em> is equivalent to calling
<em>SHA256Update $token &quot;ab&quot;</em> followed by
<em>SHA256Update $token &quot;cb&quot;</em>. See <span class="sectref"><a href="#section4">EXAMPLES</a></span>.
Note that this command is used for both SHA256 and SHA224. Only the
initialization and finalization commands of both hashes differ.</p></dd>
<dt><a name="8"><b class="cmd">::sha2::SHA256Final</b> <i class="arg">token</i></a></dt>
<dd></dd>
<dt><a name="9"><b class="cmd">::sha2::SHA224Final</b> <i class="arg">token</i></a></dt>
<dd><p>Returns the hash value and releases any resources held by this
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
<div id="section5" class="section"><h2><a name="section5">REFERENCES</a></h2>
<ol class="enumerated">
<li><p>&quot;Secure Hash Standard&quot;, National Institute of Standards
        and Technology, U.S. Department Of Commerce, April 1995.
	(<a href="http://www.itl.nist.gov/fipspubs/fip180-1.htm">http://www.itl.nist.gov/fipspubs/fip180-1.htm</a>)</p></li>
<li><p>Rivest, R., &quot;The MD4 Message Digest Algorithm&quot;, RFC 1320, MIT,
       April 1992. (<a href="http://www.rfc-editor.org/rfc/rfc1320.txt">http://www.rfc-editor.org/rfc/rfc1320.txt</a>)</p></li>
<li><p>Krawczyk, H., Bellare, M. and Canetti, R. &quot;HMAC: Keyed-Hashing for 
      Message Authentication&quot;, RFC 2104, February 1997.
	(<a href="http://www.rfc-editor.org/rfc/rfc2104.txt">http://www.rfc-editor.org/rfc/rfc2104.txt</a>)</p></li>
</ol>
</div>
<div id="section6" class="section"><h2><a name="section6">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>sha1</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../md4/md4.html">md4</a>, <a href="../md5/md5.html">md5</a>, <a href="../ripemd/ripemd128.html">ripemd128</a>, <a href="../ripemd/ripemd160.html">ripemd160</a>, <a href="sha1.html">sha1</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key220">FIPS 180-1</a>, <a href="../../../../index.html#key224">hashing</a>, <a href="../../../../index.html#key223">message-digest</a>, <a href="../../../../index.html#key222">rfc 2104</a>, <a href="../../../../index.html#key148">security</a>, <a href="../../../../index.html#key221">sha256</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2008, Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|




|



|







|








251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
<div id="section5" class="section"><h2><a name="section5">REFERENCES</a></h2>
<ol class="enumerated">
<li><p>&quot;Secure Hash Standard&quot;, National Institute of Standards
        and Technology, U.S. Department Of Commerce, April 1995.
	(<a href="http://www.itl.nist.gov/fipspubs/fip180-1.htm">http://www.itl.nist.gov/fipspubs/fip180-1.htm</a>)</p></li>
<li><p>Rivest, R., &quot;The MD4 Message Digest Algorithm&quot;, RFC 1320, MIT,
       April 1992. (<a href="http://www.rfc-editor.org/rfc/rfc1320.txt">http://www.rfc-editor.org/rfc/rfc1320.txt</a>)</p></li>
<li><p>Krawczyk, H., Bellare, M. and Canetti, R. &quot;HMAC: Keyed-Hashing for
      Message Authentication&quot;, RFC 2104, February 1997.
	(<a href="http://www.rfc-editor.org/rfc/rfc2104.txt">http://www.rfc-editor.org/rfc/rfc2104.txt</a>)</p></li>
</ol>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>sha1</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../md4/md4.html">md4</a>, <a href="../md5/md5.html">md5</a>, <a href="../ripemd/ripemd128.html">ripemd128</a>, <a href="../ripemd/ripemd160.html">ripemd160</a>, <a href="sha1.html">sha1</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key221">FIPS 180-1</a>, <a href="../../../../index.html#key224">hashing</a>, <a href="../../../../index.html#key223">message-digest</a>, <a href="../../../../index.html#key222">rfc 2104</a>, <a href="../../../../index.html#key148">security</a>, <a href="../../../../index.html#key220">sha256</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2008, Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/simulation/annealing.html.

312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
solution you may want to try different values of the trials parameter
for instance. Also ensure that the function to be minimized depends on
all or most parameters - see the source code for a counter example and
run that.</p></li>
</ul>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key290">optimization</a>, <a href="../../../../index.html#key301">simulated annealing</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2008 Arjen Markus &lt;[email protected]&gt;</p>
</div>







|







312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
solution you may want to try different values of the trials parameter
for instance. Also ensure that the function to be minimized depends on
all or most parameters - see the source code for a counter example and
run that.</p></li>
</ul>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key289">optimization</a>, <a href="../../../../index.html#key301">simulated annealing</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2008 Arjen Markus &lt;[email protected]&gt;</p>
</div>

Changes to embedded/www/tcllib/files/modules/simulation/simulation_random.html.

291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
<dd><p>Width of the block (y-direction)</p></dd>
<dt>float <i class="arg">depth</i></dt>
<dd><p>Depth of the block (z-direction)</p></dd>
</dl></dd>
</dl>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key621">random numbers</a>, <a href="../../../../index.html#key622">simulation</a>, <a href="../../../../index.html#key623">statistical distribution</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004 Arjen Markus &lt;[email protected]&gt;</p>
</div>







|







291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
<dd><p>Width of the block (y-direction)</p></dd>
<dt>float <i class="arg">depth</i></dt>
<dd><p>Depth of the block (z-direction)</p></dd>
</dl></dd>
</dl>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key623">random numbers</a>, <a href="../../../../index.html#key622">simulation</a>, <a href="../../../../index.html#key621">statistical distribution</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004 Arjen Markus &lt;[email protected]&gt;</p>
</div>

Changes to embedded/www/tcllib/files/modules/smtpd/smtpd.html.

119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">SECURITY</a></li>
<li class="section"><a href="#section3">COMMANDS</a></li>
<li class="section"><a href="#section4">CALLBACKS</a></li>
<li class="section"><a href="#section5">VARIABLES</a></li>
<li class="section"><a href="#section6">AUTHOR</a></li>
<li class="section"><a href="#section7">LICENSE</a></li>
<li class="section"><a href="#section8">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">SECURITY</a></li>
<li class="section"><a href="#section3">COMMANDS</a></li>
<li class="section"><a href="#section4">CALLBACKS</a></li>
<li class="section"><a href="#section5">VARIABLES</a></li>
<li class="section"><a href="#section6">AUTHOR</a></li>
<li class="section"><a href="#section7">LICENSE</a></li>
<li class="section"><a href="#section8">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
package a little more complicated to read. If there is a good reason
for running multiple SMTP services then it will only be necessary to
fix the <b class="variable">options</b> array and the <b class="variable">::smtpd::stopped</b> variable
usage.</p>
<p>As the server code uses <b class="cmd">fileevent</b>(n) handlers to process the
input on sockets you will need to run the event loop. This means
either you should be running from within <b class="syscmd">wish</b>(1) or you
should <b class="cmd"><a href="../../../../index.html#key393">vwait</a></b>(n) on the <b class="variable">::smtpd::stopped</b> variable which is
set when the server is stopped.</p></dd>
<dt><a name="2"><b class="cmd">::smtpd::stop</b></a></dt>
<dd><p>Halt the server and release the listening socket. If the server has
not been started then this command does nothing.
The <b class="variable">::smtpd::stopped</b> variable is set for use with
<b class="cmd"><a href="../../../../index.html#key393">vwait</a></b>(n).</p>
<p>It should be noted that stopping the server does not disconnect any
currently active sessions as these are operating over an independent
channel. Only explicitly tracking and closing these sessions, or
exiting the server process will close down all the running
sessions. This is similar to the usual unix daemon practice where the
server performs a <b class="syscmd">fork</b>(2) and the client session continues on
the child process.</p></dd>







|





|







185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
package a little more complicated to read. If there is a good reason
for running multiple SMTP services then it will only be necessary to
fix the <b class="variable">options</b> array and the <b class="variable">::smtpd::stopped</b> variable
usage.</p>
<p>As the server code uses <b class="cmd">fileevent</b>(n) handlers to process the
input on sockets you will need to run the event loop. This means
either you should be running from within <b class="syscmd">wish</b>(1) or you
should <b class="cmd"><a href="../../../../index.html#key395">vwait</a></b>(n) on the <b class="variable">::smtpd::stopped</b> variable which is
set when the server is stopped.</p></dd>
<dt><a name="2"><b class="cmd">::smtpd::stop</b></a></dt>
<dd><p>Halt the server and release the listening socket. If the server has
not been started then this command does nothing.
The <b class="variable">::smtpd::stopped</b> variable is set for use with
<b class="cmd"><a href="../../../../index.html#key395">vwait</a></b>(n).</p>
<p>It should be noted that stopping the server does not disconnect any
currently active sessions as these are operating over an independent
channel. Only explicitly tracking and closing these sessions, or
exiting the server process will close down all the running
sessions. This is similar to the usual unix daemon practice where the
server performs a <b class="syscmd">fork</b>(2) and the client session continues on
the child process.</p></dd>
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
an error. For example, to reject mail from user &quot;denied&quot;:</p>
<pre class="example">
 proc validate_sender {address} {
    eval array set addr [mime::parseaddress $address]
    if {[string match &quot;denied&quot; $addr(local)]} {
         error &quot;mailbox $addr(local) denied&quot;
    }
    return    
 }
</pre>
<p>The content of any error message will not be passed back to the client.</p></dd>
<dt><b class="cmd">validate_recipient</b> callback</dt>
<dd><p>The validate_recipient callback is similar to the validate_sender
callback and permits you to verify a local mailbox and accept mail for
a local user address during RCPT command handling. To reject mail,







|







263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
an error. For example, to reject mail from user &quot;denied&quot;:</p>
<pre class="example">
 proc validate_sender {address} {
    eval array set addr [mime::parseaddress $address]
    if {[string match &quot;denied&quot; $addr(local)]} {
         error &quot;mailbox $addr(local) denied&quot;
    }
    return
 }
</pre>
<p>The content of any error message will not be passed back to the client.</p></dd>
<dt><b class="cmd">validate_recipient</b> callback</dt>
<dd><p>The validate_recipient callback is similar to the validate_sender
callback and permits you to verify a local mailbox and accept mail for
a local user address during RCPT command handling. To reject mail,
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
recipient has yet been defined.</p></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">VARIABLES</a></h2>
<dl class="definitions">
<dt><b class="variable">::smtpd::stopped</b></dt>
<dd><p>This variable is set to <b class="const">true</b> during the <b class="cmd">::smtpd::stop</b>
command to permit the use of the <b class="cmd"><a href="../../../../index.html#key393">vwait</a></b>(n) command.</p></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">AUTHOR</a></h2>
<p>Written by Pat Thoyts <a href="mailto:[email protected]">mailto:[email protected]</a>.</p>
</div>
<div id="section7" class="section"><h2><a name="section7">LICENSE</a></h2>
<p>This software is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the file
&quot;<b class="file">license.terms</b>&quot; for more details.</p>
</div>
<div id="section8" class="section"><h2><a name="section8">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>smtpd</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key309">rfc 2821</a>, <a href="../../../../index.html#key312">rfc 821</a>, <a href="../../../../index.html#key584">services</a>, <a href="../../../../index.html#key317">smtp</a>, <a href="../../../../index.html#key653">smtpd</a>, <a href="../../../../index.html#key335">socket</a>, <a href="../../../../index.html#key393">vwait</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; Pat Thoyts &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|











|



|




|








309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
recipient has yet been defined.</p></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">VARIABLES</a></h2>
<dl class="definitions">
<dt><b class="variable">::smtpd::stopped</b></dt>
<dd><p>This variable is set to <b class="const">true</b> during the <b class="cmd">::smtpd::stop</b>
command to permit the use of the <b class="cmd"><a href="../../../../index.html#key395">vwait</a></b>(n) command.</p></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">AUTHOR</a></h2>
<p>Written by Pat Thoyts <a href="mailto:[email protected]">mailto:[email protected]</a>.</p>
</div>
<div id="section7" class="section"><h2><a name="section7">LICENSE</a></h2>
<p>This software is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the file
&quot;<b class="file">license.terms</b>&quot; for more details.</p>
</div>
<div id="section8" class="section"><h2><a name="section8">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>smtpd</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key309">rfc 2821</a>, <a href="../../../../index.html#key312">rfc 821</a>, <a href="../../../../index.html#key584">services</a>, <a href="../../../../index.html#key317">smtp</a>, <a href="../../../../index.html#key653">smtpd</a>, <a href="../../../../index.html#key335">socket</a>, <a href="../../../../index.html#key395">vwait</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; Pat Thoyts &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/snit/snit.html.

134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
<li class="subsection"><a href="#subsection12">Defining Validation Types</a></li>
</ul>
</li>
<li class="section"><a href="#section4">CAVEATS</a></li>
<li class="section"><a href="#section5">KNOWN BUGS</a></li>
<li class="section"><a href="#section6">HISTORY</a></li>
<li class="section"><a href="#section7">CREDITS</a></li>
<li class="section"><a href="#section8">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
<li class="subsection"><a href="#subsection12">Defining Validation Types</a></li>
</ul>
</li>
<li class="section"><a href="#section4">CAVEATS</a></li>
<li class="section"><a href="#section5">KNOWN BUGS</a></li>
<li class="section"><a href="#section6">HISTORY</a></li>
<li class="section"><a href="#section7">CREDITS</a></li>
<li class="section"><a href="#section8">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>Snit is a pure Tcl object and megawidget system.  It's
unique among Tcl object systems in that it's based not on inheritance
but on delegation.  Object systems based on inheritance only allow you
to inherit from classes defined using the same system, which is
limiting.  In Tcl, an object is 
anything that acts like an object; it shouldn't matter how the object
was implemented.  Snit is intended to help you build applications out of
the materials at hand; thus, Snit is designed to be able to
incorporate and build on any object, whether it's a hand-coded object,
a <b class="package"><a href="../../../../index.html#key207">Tk</a></b> widget, an <b class="package"><a href="../../../../index.html#key237">Incr Tcl</a></b> object,
a <b class="package"><a href="../../../../index.html#key235">BWidget</a></b> or almost anything else.</p>
<p>This man page is intended to be a reference only; see the accompanying
<b class="cmd"><a href="snitfaq.html">snitfaq</a></b> for a gentler, more tutorial introduction to Snit
concepts.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">SNIT VERSIONS</a></h2>
<p>This man page covers both Snit 2.2 and Snit 1.3.  The primary







|




|







246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>Snit is a pure Tcl object and megawidget system.  It's
unique among Tcl object systems in that it's based not on inheritance
but on delegation.  Object systems based on inheritance only allow you
to inherit from classes defined using the same system, which is
limiting.  In Tcl, an object is
anything that acts like an object; it shouldn't matter how the object
was implemented.  Snit is intended to help you build applications out of
the materials at hand; thus, Snit is designed to be able to
incorporate and build on any object, whether it's a hand-coded object,
a <b class="package"><a href="../../../../index.html#key207">Tk</a></b> widget, an <b class="package"><a href="../../../../index.html#key238">Incr Tcl</a></b> object,
a <b class="package"><a href="../../../../index.html#key235">BWidget</a></b> or almost anything else.</p>
<p>This man page is intended to be a reference only; see the accompanying
<b class="cmd"><a href="snitfaq.html">snitfaq</a></b> for a gentler, more tutorial introduction to Snit
concepts.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">SNIT VERSIONS</a></h2>
<p>This man page covers both Snit 2.2 and Snit 1.3.  The primary
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
new type, along with other activities.</p>
<p>The <b class="cmd">snit::type</b> <i class="arg">definition</i> block is a script that may
contain the following definitions:</p>
<dl class="definitions">
<dt><a name="2"><b class="cmd">typevariable</b> <i class="arg">name</i> <span class="opt">?<b class="const">-array</b>?</span> <span class="opt">?<i class="arg">value</i>?</span></a></dt>
<dd><p>Defines a type variable with the specified <i class="arg">name</i>, and optionally
the specified <i class="arg">value</i>.  Type variables are shared by all instances
of the type.  If the <b class="const">-array</b> option is included, then 
<i class="arg">value</i> should be a dictionary; it will be
assigned to the variable using <b class="cmd">array set</b>.</p></dd>
<dt><a name="3"><b class="cmd">typemethod</b> <i class="arg">name</i> <i class="arg">arglist</i> <i class="arg">body</i></a></dt>
<dd><p>Defines a type method, a subcommand of the new type command,
with the specified name, argument list, and
body.  The <i class="arg">arglist</i> is a normal Tcl argument list and may contain
default arguments and the <b class="variable">args</b> argument; however, it may not
contain the argument names <b class="variable">type</b>, <b class="variable">self</b>, <b class="variable">selfns</b>, or
<b class="variable">win</b>.</p>
<p>The variable <b class="variable">type</b> is automatically defined in the <i class="arg">body</i> to
the type's fully-qualified name.  In addition,
type variables are automatically visible in the <i class="arg">body</i> 
of every type method.</p>
<p>If the <i class="arg">name</i> consists of two or more tokens, Snit handles it specially:</p>
<pre class="example">    typemethod {a b} {arg} { puts &quot;Got $arg&quot; }
</pre>
<p>This statement implicitly defines a type method called <b class="const">a</b> which
has a subcommand <b class="const">b</b>.  <b class="const">b</b> is called like this:</p>
<pre class="example">    $type a b &quot;Hello, world!&quot;
</pre>
<p><b class="const">a</b> may have any number of subcommands.  This makes it possible
to define a hierarchical command structure; see <b class="cmd"><a href="../../../../index.html#key355">method</a></b>, below, 
for more examples.</p>
<p>Type methods can call commands from the namespace in which the type is
defined without importing them, e.g., if the type name is 
<b class="cmd">::parentns::typename</b>, then the type's type methods can call
<b class="cmd">::parentns::someproc</b> just as <b class="cmd">someproc</b>.  
<em>Snit 1.x Incompatibility:</em> This does not work in Snit 1.x, as
it depends on <b class="cmd">namespace path</b>, a new command in Tcl 8.5.</p>
<p><em>Snit 1.x Incompatibility:</em> In Snit 1.x, the following
following two calls to this type method are equivalent:</p>
<pre class="example">    $type a b &quot;Hello, world!&quot;
    $type {a b} &quot;Hello, world!&quot;
</pre>
<p>In Snit 2.2, the second form is invalid.</p></dd>
<dt><a name="4"><b class="cmd">typeconstructor</b> <i class="arg">body</i></a></dt>
<dd><p>The type constructor's <i class="arg">body</i> is executed once when the
type is first defined; it is typically used to
initialize array-valued type variables and to add
entries to <span class="sectref"><a href="#subsection9">The Tk Option Database</a></span>.</p>
<p>The variable <b class="variable">type</b> is automatically defined in the <i class="arg">body</i>, 
and contains the type's fully-qualified name.  In addition,
type variables are automatically visible in the <i class="arg">body</i> of the type 
constructor.</p>
<p>A type may define at most one type constructor.</p>
<p>The type constructor can call commands from the namespace in which the type is
defined without importing them, e.g., if the type name is 
<b class="cmd">::parentns::typename</b>, then the type constructor can call
<b class="cmd">::parentns::someproc</b> just as <b class="cmd">someproc</b>.  
<em>Snit 1.x Incompatibility:</em> This does not work in Snit 1.x, as
it depends on <b class="cmd">namespace path</b>, a new command in Tcl 8.5.</p></dd>
<dt><a name="5"><b class="cmd">variable</b> <i class="arg">name</i> <span class="opt">?<b class="const">-array</b>?</span> <span class="opt">?<i class="arg">value</i>?</span></a></dt>
<dd><p>Defines an instance variable, a private variable associated with each
instance of this type, and optionally its initial value.  
If the <b class="const">-array</b> option is included, then 
<i class="arg">value</i> should be a dictionary; it will be
assigned to the variable using <b class="cmd">array set</b>.</p></dd>
<dt><a name="6"><b class="cmd"><a href="../../../../index.html#key355">method</a></b> <i class="arg">name</i> <i class="arg">arglist</i> <i class="arg">body</i></a></dt>
<dd><p>Defines an instance method, a subcommand of each instance of this
type, with the specified name, argument list and body.
The <i class="arg">arglist</i> is a normal Tcl argument list and may contain
default arguments and the <b class="variable">args</b> argument.</p>







|











|









|


|

|













|

|



|

|




|
|







282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
new type, along with other activities.</p>
<p>The <b class="cmd">snit::type</b> <i class="arg">definition</i> block is a script that may
contain the following definitions:</p>
<dl class="definitions">
<dt><a name="2"><b class="cmd">typevariable</b> <i class="arg">name</i> <span class="opt">?<b class="const">-array</b>?</span> <span class="opt">?<i class="arg">value</i>?</span></a></dt>
<dd><p>Defines a type variable with the specified <i class="arg">name</i>, and optionally
the specified <i class="arg">value</i>.  Type variables are shared by all instances
of the type.  If the <b class="const">-array</b> option is included, then
<i class="arg">value</i> should be a dictionary; it will be
assigned to the variable using <b class="cmd">array set</b>.</p></dd>
<dt><a name="3"><b class="cmd">typemethod</b> <i class="arg">name</i> <i class="arg">arglist</i> <i class="arg">body</i></a></dt>
<dd><p>Defines a type method, a subcommand of the new type command,
with the specified name, argument list, and
body.  The <i class="arg">arglist</i> is a normal Tcl argument list and may contain
default arguments and the <b class="variable">args</b> argument; however, it may not
contain the argument names <b class="variable">type</b>, <b class="variable">self</b>, <b class="variable">selfns</b>, or
<b class="variable">win</b>.</p>
<p>The variable <b class="variable">type</b> is automatically defined in the <i class="arg">body</i> to
the type's fully-qualified name.  In addition,
type variables are automatically visible in the <i class="arg">body</i>
of every type method.</p>
<p>If the <i class="arg">name</i> consists of two or more tokens, Snit handles it specially:</p>
<pre class="example">    typemethod {a b} {arg} { puts &quot;Got $arg&quot; }
</pre>
<p>This statement implicitly defines a type method called <b class="const">a</b> which
has a subcommand <b class="const">b</b>.  <b class="const">b</b> is called like this:</p>
<pre class="example">    $type a b &quot;Hello, world!&quot;
</pre>
<p><b class="const">a</b> may have any number of subcommands.  This makes it possible
to define a hierarchical command structure; see <b class="cmd"><a href="../../../../index.html#key355">method</a></b>, below,
for more examples.</p>
<p>Type methods can call commands from the namespace in which the type is
defined without importing them, e.g., if the type name is
<b class="cmd">::parentns::typename</b>, then the type's type methods can call
<b class="cmd">::parentns::someproc</b> just as <b class="cmd">someproc</b>.
<em>Snit 1.x Incompatibility:</em> This does not work in Snit 1.x, as
it depends on <b class="cmd">namespace path</b>, a new command in Tcl 8.5.</p>
<p><em>Snit 1.x Incompatibility:</em> In Snit 1.x, the following
following two calls to this type method are equivalent:</p>
<pre class="example">    $type a b &quot;Hello, world!&quot;
    $type {a b} &quot;Hello, world!&quot;
</pre>
<p>In Snit 2.2, the second form is invalid.</p></dd>
<dt><a name="4"><b class="cmd">typeconstructor</b> <i class="arg">body</i></a></dt>
<dd><p>The type constructor's <i class="arg">body</i> is executed once when the
type is first defined; it is typically used to
initialize array-valued type variables and to add
entries to <span class="sectref"><a href="#subsection9">The Tk Option Database</a></span>.</p>
<p>The variable <b class="variable">type</b> is automatically defined in the <i class="arg">body</i>,
and contains the type's fully-qualified name.  In addition,
type variables are automatically visible in the <i class="arg">body</i> of the type
constructor.</p>
<p>A type may define at most one type constructor.</p>
<p>The type constructor can call commands from the namespace in which the type is
defined without importing them, e.g., if the type name is
<b class="cmd">::parentns::typename</b>, then the type constructor can call
<b class="cmd">::parentns::someproc</b> just as <b class="cmd">someproc</b>.
<em>Snit 1.x Incompatibility:</em> This does not work in Snit 1.x, as
it depends on <b class="cmd">namespace path</b>, a new command in Tcl 8.5.</p></dd>
<dt><a name="5"><b class="cmd">variable</b> <i class="arg">name</i> <span class="opt">?<b class="const">-array</b>?</span> <span class="opt">?<i class="arg">value</i>?</span></a></dt>
<dd><p>Defines an instance variable, a private variable associated with each
instance of this type, and optionally its initial value.
If the <b class="const">-array</b> option is included, then
<i class="arg">value</i> should be a dictionary; it will be
assigned to the variable using <b class="cmd">array set</b>.</p></dd>
<dt><a name="6"><b class="cmd"><a href="../../../../index.html#key355">method</a></b> <i class="arg">name</i> <i class="arg">arglist</i> <i class="arg">body</i></a></dt>
<dd><p>Defines an instance method, a subcommand of each instance of this
type, with the specified name, argument list and body.
The <i class="arg">arglist</i> is a normal Tcl argument list and may contain
default arguments and the <b class="variable">args</b> argument.</p>
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
Droop, droop
%
</pre>
<p>What we've done is implicitly defined a &quot;tail&quot; method with subcommands
&quot;wag&quot; and &quot;droop&quot;.  Consequently, it's an error to define &quot;tail&quot;
explicitly.</p>
<p>Methods can call commands from the namespace in which the type is
defined without importing them, e.g., if the type name is 
<b class="cmd">::parentns::typename</b>, then the type's methods can call
<b class="cmd">::parentns::someproc</b> just as <b class="cmd">someproc</b>.  
<em>Snit 1.x Incompatibility:</em> This does not work in Snit 1.x, as
it depends on <b class="cmd">namespace path</b>, a new command in Tcl 8.5.</p>
<p><em>Snit 1.x Incompatibility:</em> In Snit 1.x, the following
following two calls to this method are equivalent:</p>
<pre class="example">    $self a b &quot;Hello, world!&quot;
    $self {a b} &quot;Hello, world!&quot;
</pre>







|

|







383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
Droop, droop
%
</pre>
<p>What we've done is implicitly defined a &quot;tail&quot; method with subcommands
&quot;wag&quot; and &quot;droop&quot;.  Consequently, it's an error to define &quot;tail&quot;
explicitly.</p>
<p>Methods can call commands from the namespace in which the type is
defined without importing them, e.g., if the type name is
<b class="cmd">::parentns::typename</b>, then the type's methods can call
<b class="cmd">::parentns::someproc</b> just as <b class="cmd">someproc</b>.
<em>Snit 1.x Incompatibility:</em> This does not work in Snit 1.x, as
it depends on <b class="cmd">namespace path</b>, a new command in Tcl 8.5.</p>
<p><em>Snit 1.x Incompatibility:</em> In Snit 1.x, the following
following two calls to this method are equivalent:</p>
<pre class="example">    $self a b &quot;Hello, world!&quot;
    $self {a b} &quot;Hello, world!&quot;
</pre>
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
to the previous example:</p>
<pre class="example">    option -font {Courier 12}
</pre>
<p>See <span class="sectref"><a href="#subsection9">The Tk Option Database</a></span> for more information about
resource and class names.</p>
<p>Options are normally set and retrieved using the standard
instance methods <b class="method">configure</b> and <b class="method">cget</b>; within instance code
(method bodies, etc.), option values are available through the 
<b class="variable">options</b> array:</p>
<pre class="example">    set myfont $options(-font)
</pre>
<p>If the type defines any option handlers (e.g., <b class="const">-configuremethod</b>), 
then it should probably use <b class="method">configure</b> and <b class="method">cget</b> to 
access its options to avoid subtle errors.</p>
<p>The <b class="cmd">option</b> statement may include the following options:</p>
<dl class="definitions">
<dt><b class="const">-default</b> <i class="arg">defvalue</i></dt>
<dd><p>Defines the option's default value; the option's default value 
will be &quot;&quot; otherwise.</p></dd>
<dt><b class="const">-readonly</b> <i class="arg">flag</i></dt>
<dd><p>The <i class="arg">flag</i> can be any Boolean value recognized by Tcl.  
If <i class="arg">flag</i> is true, then the option is read-only--it can only
be set using <b class="method">configure</b> or <b class="method">configurelist</b> 
at creation time, i.e., in the type's constructor.</p></dd>
<dt><b class="const">-type</b> <i class="arg">type</i></dt>
<dd><p>Every locally-defined option may define its validation type, which may
be either the name of a validation type or a specification for a
validation subtype</p>
<p>For example, an option may declare that its value must be an integer
by specifying <b class="cmd">snit::integer</b> as its validation type:</p>
<pre class="example">    option -number -type snit::integer
</pre>
<p>It may also declare that its value is an integer between 1 and 10
by specifying a validation subtype:</p>
<pre class="example">    option -number -type {snit::integer -min 1 -max 10}
</pre>
<p>If a validation type or subtype is defined for an option, then
it will be used to validate the option's value whenever it is
changed by the object's <b class="method">configure</b> or 
<b class="method">configurelist</b> methods.  In addition, all such options
will have their values validated automatically immediately
after the constructor executes.</p>
<p>Snit defines a family of validation types and subtypes, and it's
quite simple to define new ones.  See
<span class="sectref"><a href="#subsection11">Validation Types</a></span> for the complete list, and
<span class="sectref"><a href="#subsection12">Defining Validation Types</a></span> for an explanation of how







|



|
|




|


|

|















|







417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
to the previous example:</p>
<pre class="example">    option -font {Courier 12}
</pre>
<p>See <span class="sectref"><a href="#subsection9">The Tk Option Database</a></span> for more information about
resource and class names.</p>
<p>Options are normally set and retrieved using the standard
instance methods <b class="method">configure</b> and <b class="method">cget</b>; within instance code
(method bodies, etc.), option values are available through the
<b class="variable">options</b> array:</p>
<pre class="example">    set myfont $options(-font)
</pre>
<p>If the type defines any option handlers (e.g., <b class="const">-configuremethod</b>),
then it should probably use <b class="method">configure</b> and <b class="method">cget</b> to
access its options to avoid subtle errors.</p>
<p>The <b class="cmd">option</b> statement may include the following options:</p>
<dl class="definitions">
<dt><b class="const">-default</b> <i class="arg">defvalue</i></dt>
<dd><p>Defines the option's default value; the option's default value
will be &quot;&quot; otherwise.</p></dd>
<dt><b class="const">-readonly</b> <i class="arg">flag</i></dt>
<dd><p>The <i class="arg">flag</i> can be any Boolean value recognized by Tcl.
If <i class="arg">flag</i> is true, then the option is read-only--it can only
be set using <b class="method">configure</b> or <b class="method">configurelist</b>
at creation time, i.e., in the type's constructor.</p></dd>
<dt><b class="const">-type</b> <i class="arg">type</i></dt>
<dd><p>Every locally-defined option may define its validation type, which may
be either the name of a validation type or a specification for a
validation subtype</p>
<p>For example, an option may declare that its value must be an integer
by specifying <b class="cmd">snit::integer</b> as its validation type:</p>
<pre class="example">    option -number -type snit::integer
</pre>
<p>It may also declare that its value is an integer between 1 and 10
by specifying a validation subtype:</p>
<pre class="example">    option -number -type {snit::integer -min 1 -max 10}
</pre>
<p>If a validation type or subtype is defined for an option, then
it will be used to validate the option's value whenever it is
changed by the object's <b class="method">configure</b> or
<b class="method">configurelist</b> methods.  In addition, all such options
will have their values validated automatically immediately
after the constructor executes.</p>
<p>Snit defines a family of validation types and subtypes, and it's
quite simple to define new ones.  See
<span class="sectref"><a href="#subsection11">Validation Types</a></span> for the complete list, and
<span class="sectref"><a href="#subsection12">Defining Validation Types</a></span> for an explanation of how
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
For example, this code is equivalent to (though slower than)
Snit's default handling of <b class="cmd">cget</b>:</p>
<pre class="example">    option -font -cgetmethod GetOption
    method GetOption {option} {
        return $options($option)
    }
</pre>
<p>Note that it's possible for any number of options to share a 
<b class="const">-cgetmethod</b>.</p></dd>
<dt><b class="const">-configuremethod</b> <i class="arg">methodName</i></dt>
<dd><p>Every locally-defined option may define a <b class="const">-configuremethod</b>;
it is called when the option's value is set using the
<b class="method">configure</b> or <b class="method">configurelist</b> methods.  It is the
named method's responsibility to save the option's value; in other
words, the value will not be saved to the <b class="variable">options()</b> array unless
the method saves it there.</p>
<p>The named method must take two arguments, the option name and
its new value.  For example, this code is equivalent to 
(though slower than) Snit's default handling of <b class="cmd">configure</b>:</p>
<pre class="example">    option -font -configuremethod SetOption
    method SetOption {option value} {
        set options($option) $value
    }
</pre>
<p>Note that it's possible for any number of options to share a 
single <b class="const">-configuremethod</b>.</p></dd>
<dt><b class="const">-validatemethod</b> <i class="arg">methodName</i></dt>
<dd><p>Every locally-defined option may define a <b class="const">-validatemethod</b>;
it is called when the option's value is set using the
<b class="method">configure</b> or <b class="method">configurelist</b> methods, just before
the <b class="const">-configuremethod</b> (if any).  It is the
named method's responsibility to validate the option's new value,
and to throw an error if the value is invalid.</p>
<p>The named method must take two arguments, the option name and
its new value.  For example, this code verifies that 
<b class="const">-flag</b>'s value is a valid Boolean value:</p>
<pre class="example">    option -font -validatemethod CheckBoolean
    method CheckBoolean {option value} {
        if {![string is boolean -strict $value]} {
            error &quot;option $option must have a boolean value.&quot;
        }
    }
</pre>
<p>Note that it's possible for any number of options to share a 
single <b class="const">-validatemethod</b>.</p></dd>
</dl></dd>
<dt><a name="9"><b class="cmd">constructor</b> <i class="arg">arglist</i> <i class="arg">body</i></a></dt>
<dd><p>The constructor definition specifies a <i class="arg">body</i> of code to be
executed when a new instance is created.  The <i class="arg">arglist</i> is a 
normal Tcl argument list and may contain default arguments and 
the <b class="variable">args</b> argument.</p>
<p>As with methods, the arguments <b class="variable">type</b>, <b class="variable">self</b>, <b class="variable">selfns</b>, 
and <b class="variable">win</b> are defined implicitly, and all type and instance 
variables are automatically visible in its <i class="arg">body</i>.</p>
<p>If the <i class="arg">definition</i> doesn't explicitly define the constructor,
Snit defines one implicitly.  If the type declares at least one option
(whether locally or by delegation), the default constructor will 
be defined as follows:</p>
<pre class="example">    constructor {args} {
        $self configurelist $args
    }
</pre>
<p>For standard Tk widget behavior, the argument list should be 
the single name <b class="const">args</b>, as shown.</p>
<p>If the <i class="arg">definition</i> defines neither a constructor nor
any options, the default constructor is defined as follows:</p>
<pre class="example">    constructor {} {}
</pre>
<p>As with methods, the constructor can call commands from the namespace
in which the type is
defined without importing them, e.g., if the type name is 
<b class="cmd">::parentns::typename</b>, then the constructor can call
<b class="cmd">::parentns::someproc</b> just as <b class="cmd">someproc</b>.  
<em>Snit 1.x Incompatibility:</em> This does not work in Snit 1.x, as
it depends on <b class="cmd">namespace path</b>, a new command in Tcl 8.5.</p></dd>
<dt><a name="10"><b class="cmd">destructor</b> <i class="arg">body</i></a></dt>
<dd><p>The destructor is used to code any actions that must take place when
an instance of the type is destroyed: typically, the destruction of
anything created in the constructor.</p>
<p>The destructor takes no explicit arguments; as with methods, the 
arguments <b class="variable">type</b>, <b class="variable">self</b>, <b class="variable">selfns</b>, and <b class="variable">win</b>, are 
defined implicitly, and all type and instance 
variables are automatically visible in its <i class="arg">body</i>.
As with methods, the destructor can call commands from the namespace
in which the type is
defined without importing them, e.g., if the type name is 
<b class="cmd">::parentns::typename</b>, then the destructor can call
<b class="cmd">::parentns::someproc</b> just as <b class="cmd">someproc</b>.  
<em>Snit 1.x Incompatibility:</em> This does not work in Snit 1.x, as
it depends on <b class="cmd">namespace path</b>, a new command in Tcl 8.5.</p></dd>
<dt><a name="11"><b class="cmd"><a href="../../../../index.html#key570">proc</a></b> <i class="arg">name</i> <i class="arg">args</i> <i class="arg">body</i></a></dt>
<dd><p>Defines a new Tcl procedure in the type's namespace.</p>
<p>The defined proc differs from a normal Tcl proc in that all type
variables are automatically visible.  The proc can access 
instance variables as well, provided that it is passed
<b class="variable">selfns</b> (with precisely that name) as one of its arguments.</p>
<p>Although they are not implicitly defined for procs, the argument names
<b class="const">type</b>, <b class="const">self</b>, and <b class="const">win</b> should be avoided.</p>
<p>As with methods and typemethods, procs can call commands from the namespace
in which the type is
defined without importing them, e.g., if the type name is 
<b class="cmd">::parentns::typename</b>, then the proc can call
<b class="cmd">::parentns::someproc</b> just as <b class="cmd">someproc</b>.  
<em>Snit 1.x Incompatibility:</em> This does not work in Snit 1.x, as
it depends on <b class="cmd">namespace path</b>, a new command in Tcl 8.5.</p></dd>
<dt><a name="12"><b class="cmd">delegate</b> <b class="const">method</b> <i class="arg">name</i> <b class="const">to</b> <i class="arg">comp</i> <span class="opt">?<b class="const">as</b> <i class="arg">target</i>?</span></a></dt>
<dd><p>Delegates method <i class="arg">name</i> to component <i class="arg">comp</i>.  That is, when
method <i class="arg">name</i> is called on an instance of this type, the method
and its arguments will be passed to the named component's command
instead.  That is, the following statement</p>







|









|






|









|








|




|
|

|
|



|





|







|

|






|
|
|



|

|





|






|

|







470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
For example, this code is equivalent to (though slower than)
Snit's default handling of <b class="cmd">cget</b>:</p>
<pre class="example">    option -font -cgetmethod GetOption
    method GetOption {option} {
        return $options($option)
    }
</pre>
<p>Note that it's possible for any number of options to share a
<b class="const">-cgetmethod</b>.</p></dd>
<dt><b class="const">-configuremethod</b> <i class="arg">methodName</i></dt>
<dd><p>Every locally-defined option may define a <b class="const">-configuremethod</b>;
it is called when the option's value is set using the
<b class="method">configure</b> or <b class="method">configurelist</b> methods.  It is the
named method's responsibility to save the option's value; in other
words, the value will not be saved to the <b class="variable">options()</b> array unless
the method saves it there.</p>
<p>The named method must take two arguments, the option name and
its new value.  For example, this code is equivalent to
(though slower than) Snit's default handling of <b class="cmd">configure</b>:</p>
<pre class="example">    option -font -configuremethod SetOption
    method SetOption {option value} {
        set options($option) $value
    }
</pre>
<p>Note that it's possible for any number of options to share a
single <b class="const">-configuremethod</b>.</p></dd>
<dt><b class="const">-validatemethod</b> <i class="arg">methodName</i></dt>
<dd><p>Every locally-defined option may define a <b class="const">-validatemethod</b>;
it is called when the option's value is set using the
<b class="method">configure</b> or <b class="method">configurelist</b> methods, just before
the <b class="const">-configuremethod</b> (if any).  It is the
named method's responsibility to validate the option's new value,
and to throw an error if the value is invalid.</p>
<p>The named method must take two arguments, the option name and
its new value.  For example, this code verifies that
<b class="const">-flag</b>'s value is a valid Boolean value:</p>
<pre class="example">    option -font -validatemethod CheckBoolean
    method CheckBoolean {option value} {
        if {![string is boolean -strict $value]} {
            error &quot;option $option must have a boolean value.&quot;
        }
    }
</pre>
<p>Note that it's possible for any number of options to share a
single <b class="const">-validatemethod</b>.</p></dd>
</dl></dd>
<dt><a name="9"><b class="cmd">constructor</b> <i class="arg">arglist</i> <i class="arg">body</i></a></dt>
<dd><p>The constructor definition specifies a <i class="arg">body</i> of code to be
executed when a new instance is created.  The <i class="arg">arglist</i> is a
normal Tcl argument list and may contain default arguments and
the <b class="variable">args</b> argument.</p>
<p>As with methods, the arguments <b class="variable">type</b>, <b class="variable">self</b>, <b class="variable">selfns</b>,
and <b class="variable">win</b> are defined implicitly, and all type and instance
variables are automatically visible in its <i class="arg">body</i>.</p>
<p>If the <i class="arg">definition</i> doesn't explicitly define the constructor,
Snit defines one implicitly.  If the type declares at least one option
(whether locally or by delegation), the default constructor will
be defined as follows:</p>
<pre class="example">    constructor {args} {
        $self configurelist $args
    }
</pre>
<p>For standard Tk widget behavior, the argument list should be
the single name <b class="const">args</b>, as shown.</p>
<p>If the <i class="arg">definition</i> defines neither a constructor nor
any options, the default constructor is defined as follows:</p>
<pre class="example">    constructor {} {}
</pre>
<p>As with methods, the constructor can call commands from the namespace
in which the type is
defined without importing them, e.g., if the type name is
<b class="cmd">::parentns::typename</b>, then the constructor can call
<b class="cmd">::parentns::someproc</b> just as <b class="cmd">someproc</b>.
<em>Snit 1.x Incompatibility:</em> This does not work in Snit 1.x, as
it depends on <b class="cmd">namespace path</b>, a new command in Tcl 8.5.</p></dd>
<dt><a name="10"><b class="cmd">destructor</b> <i class="arg">body</i></a></dt>
<dd><p>The destructor is used to code any actions that must take place when
an instance of the type is destroyed: typically, the destruction of
anything created in the constructor.</p>
<p>The destructor takes no explicit arguments; as with methods, the
arguments <b class="variable">type</b>, <b class="variable">self</b>, <b class="variable">selfns</b>, and <b class="variable">win</b>, are
defined implicitly, and all type and instance
variables are automatically visible in its <i class="arg">body</i>.
As with methods, the destructor can call commands from the namespace
in which the type is
defined without importing them, e.g., if the type name is
<b class="cmd">::parentns::typename</b>, then the destructor can call
<b class="cmd">::parentns::someproc</b> just as <b class="cmd">someproc</b>.
<em>Snit 1.x Incompatibility:</em> This does not work in Snit 1.x, as
it depends on <b class="cmd">namespace path</b>, a new command in Tcl 8.5.</p></dd>
<dt><a name="11"><b class="cmd"><a href="../../../../index.html#key570">proc</a></b> <i class="arg">name</i> <i class="arg">args</i> <i class="arg">body</i></a></dt>
<dd><p>Defines a new Tcl procedure in the type's namespace.</p>
<p>The defined proc differs from a normal Tcl proc in that all type
variables are automatically visible.  The proc can access
instance variables as well, provided that it is passed
<b class="variable">selfns</b> (with precisely that name) as one of its arguments.</p>
<p>Although they are not implicitly defined for procs, the argument names
<b class="const">type</b>, <b class="const">self</b>, and <b class="const">win</b> should be avoided.</p>
<p>As with methods and typemethods, procs can call commands from the namespace
in which the type is
defined without importing them, e.g., if the type name is
<b class="cmd">::parentns::typename</b>, then the proc can call
<b class="cmd">::parentns::someproc</b> just as <b class="cmd">someproc</b>.
<em>Snit 1.x Incompatibility:</em> This does not work in Snit 1.x, as
it depends on <b class="cmd">namespace path</b>, a new command in Tcl 8.5.</p></dd>
<dt><a name="12"><b class="cmd">delegate</b> <b class="const">method</b> <i class="arg">name</i> <b class="const">to</b> <i class="arg">comp</i> <span class="opt">?<b class="const">as</b> <i class="arg">target</i>?</span></a></dt>
<dd><p>Delegates method <i class="arg">name</i> to component <i class="arg">comp</i>.  That is, when
method <i class="arg">name</i> is called on an instance of this type, the method
and its arguments will be passed to the named component's command
instead.  That is, the following statement</p>
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
<pre class="example">    delegate method wagtail to tail as &quot;wag briskly&quot;
</pre>
<p>A method cannot be both locally defined and delegated.</p>
<p><b class="const">Note:</b> All forms of <b class="cmd">delegate method</b> can delegate to
both instance components and type components.</p></dd>
<dt><a name="13"><b class="cmd">delegate</b> <b class="const">method</b> <i class="arg">name</i> <span class="opt">?<b class="const">to</b> <i class="arg">comp</i>?</span> <b class="const">using</b> <i class="arg">pattern</i></a></dt>
<dd><p>In this form of the <b class="cmd">delegate</b> statement, the <b class="const">using</b> clause
is used to specify the precise form of the command to which method 
<i class="arg">name</i> name is delegated.  In this form, the <b class="const">to</b> clause is
optional, since the chosen command might not involve any particular
component.</p>
<p>The value of the <b class="const">using</b> clause is a list that may contain 
any or all of the following substitution codes; these codes are
substituted with the described value to build the delegated command
prefix.  Note that the following two statements are equivalent:</p>
<pre class="example">    delegate method wag to tail
    delegate method wag to tail using &quot;%c %m&quot;
</pre>
<p>Each element of the list becomes a single element of the delegated







|



|







592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
<pre class="example">    delegate method wagtail to tail as &quot;wag briskly&quot;
</pre>
<p>A method cannot be both locally defined and delegated.</p>
<p><b class="const">Note:</b> All forms of <b class="cmd">delegate method</b> can delegate to
both instance components and type components.</p></dd>
<dt><a name="13"><b class="cmd">delegate</b> <b class="const">method</b> <i class="arg">name</i> <span class="opt">?<b class="const">to</b> <i class="arg">comp</i>?</span> <b class="const">using</b> <i class="arg">pattern</i></a></dt>
<dd><p>In this form of the <b class="cmd">delegate</b> statement, the <b class="const">using</b> clause
is used to specify the precise form of the command to which method
<i class="arg">name</i> name is delegated.  In this form, the <b class="const">to</b> clause is
optional, since the chosen command might not involve any particular
component.</p>
<p>The value of the <b class="const">using</b> clause is a list that may contain
any or all of the following substitution codes; these codes are
substituted with the described value to build the delegated command
prefix.  Note that the following two statements are equivalent:</p>
<pre class="example">    delegate method wag to tail
    delegate method wag to tail using &quot;%c %m&quot;
</pre>
<p>Each element of the list becomes a single element of the delegated
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
<p>The optional <b class="const">as</b> clause allows you to specify the delegated
method name and possibly add some arguments:</p>
<pre class="example">    delegate typemethod lostdogs to pound as &quot;get lostdogs&quot;
</pre>
<p>A type method cannot be both locally defined and delegated.</p></dd>
<dt><a name="21"><b class="cmd">delegate</b> <b class="const">typemethod</b> <i class="arg">name</i> <span class="opt">?<b class="const">to</b> <i class="arg">comp</i>?</span> <b class="const">using</b> <i class="arg">pattern</i></a></dt>
<dd><p>In this form of the <b class="cmd">delegate</b> statement, the <b class="const">using</b> clause
is used to specify the precise form of the command to which type method 
<i class="arg">name</i> name is delegated.  In this form, the <b class="const">to</b> clause is
optional, since the chosen command might not involve any particular
type component.</p>
<p>The value of the <b class="const">using</b> clause is a list that may contain 
any or all of the following substitution codes; these codes are
substituted with the described value to build the delegated command
prefix.  Note that the following two statements are equivalent:</p>
<pre class="example">    delegate typemethod lostdogs to pound
    delegate typemethod lostdogs to pound using &quot;%c %m&quot;
</pre>
<p>Each element of the list becomes a single element of the delegated







|



|







720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
<p>The optional <b class="const">as</b> clause allows you to specify the delegated
method name and possibly add some arguments:</p>
<pre class="example">    delegate typemethod lostdogs to pound as &quot;get lostdogs&quot;
</pre>
<p>A type method cannot be both locally defined and delegated.</p></dd>
<dt><a name="21"><b class="cmd">delegate</b> <b class="const">typemethod</b> <i class="arg">name</i> <span class="opt">?<b class="const">to</b> <i class="arg">comp</i>?</span> <b class="const">using</b> <i class="arg">pattern</i></a></dt>
<dd><p>In this form of the <b class="cmd">delegate</b> statement, the <b class="const">using</b> clause
is used to specify the precise form of the command to which type method
<i class="arg">name</i> name is delegated.  In this form, the <b class="const">to</b> clause is
optional, since the chosen command might not involve any particular
type component.</p>
<p>The value of the <b class="const">using</b> clause is a list that may contain
any or all of the following substitution codes; these codes are
substituted with the described value to build the delegated command
prefix.  Note that the following two statements are equivalent:</p>
<pre class="example">    delegate typemethod lostdogs to pound
    delegate typemethod lostdogs to pound using &quot;%c %m&quot;
</pre>
<p>Each element of the list becomes a single element of the delegated
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
specify a list of <i class="arg">exceptions</i>, i.e., type method names that will not
be so delegated. The <b class="const">using</b> clause is defined as given above.
In this form, the statement must contain the <b class="const">to</b> clause, the
<b class="const">using</b> clause, or both.</p>
<p><b class="const">Note:</b> By default, Snit interprets <b class="cmd">$type foo</b>, where
<b class="const">foo</b> is
not a defined type method, as equivalent to <b class="cmd">$type create foo</b>, where
<b class="const">foo</b> is the name of a new instance of the type.  If you 
use <b class="const">delegate typemethod *</b>, then the <b class="method">create</b> type
method must always be used explicitly.</p>
<p>The &quot;*&quot; can be a list of two or more tokens whose last
element is &quot;*&quot;, as in the following example:</p>
<pre class="example">    delegate typemethod {tail *} to tail
</pre>
<p>This implicitly defines the type method <b class="cmd">tail</b> whose subcommands will
be delegated to the <b class="variable">tail</b> type component.</p></dd>
<dt><a name="23"><b class="cmd">typecomponent</b> <i class="arg">comp</i> <span class="opt">?<b class="const">-public</b> <i class="arg">typemethod</i>?</span> <span class="opt">?<b class="const">-inherit</b> <i class="arg">flag</i>?</span></a></dt>
<dd><p>Explicitly declares a type component called <i class="arg">comp</i>, and automatically
defines the component's type variable.  A type component is an arbitrary
command to which type methods and instance methods can be delegated;
the command's name is stored in a type variable.</p>
<p>If the <b class="const">-public</b> option is specified, then the type component is made
public by defining a <i class="arg">typemethod</i> whose subcommands are delegated to
the type component, e.g., specifying <b class="const">-public mytypemethod</b> 
is equivalent to the following:</p>
<pre class="example">    typecomponent mycomp
    delegate typemethod {mytypemethod *} to mycomp
</pre>
<p>If the <b class="const">-inherit</b> option is specified, then <i class="arg">flag</i> must be a
Boolean value; if <i class="arg">flag</i> is true then all unknown type methods
will be delegated to this type component. (See the note on &quot;delegate
typemethod *&quot;, above.) The name <b class="const">-inherit</b>
implies that this type inherits, in a sense, the behavior of
the type component. That is, <b class="const">-inherit yes</b> is equivalent to:</p>
<pre class="example">    typecomponent mycomp
    delegate typemethod * to mycomp
</pre>
</dd>
<dt><a name="24"><b class="cmd">pragma</b> <span class="opt">?<i class="arg">options...</i>?</span></a></dt>
<dd><p>The <b class="cmd">pragma</b> statement provides control over how Snit generates a
type.  It takes the following options; in each case, <i class="arg">flag</i> must
be a Boolean value recognized by Tcl, e.g., <b class="const">0</b>, <b class="const">1</b>, 
<b class="const">yes</b>, <b class="const">no</b>, and so
on.</p>
<p>By setting the <b class="const">-hastypeinfo</b>, <b class="const">-hastypedestroy</b>, and
<b class="const">-hasinstances</b> pragmas to false and defining appropriate
type methods, you can create an ensemble command without any extraneous
behavior.</p>
<dl class="definitions">
<dt><b class="const">-canreplace</b> <i class="arg">flag</i></dt>
<dd><p>If false (the default) Snit will not create an instance of a
<b class="cmd">snit::type</b> that has the same name as an existing command; this
prevents subtle errors.  Setting this pragma to true restores the
behavior of Snit V0.93 and earlier versions.</p></dd>
<dt><b class="const">-hastypeinfo</b> <i class="arg">flag</i></dt>
<dd><p>If true (the default), the generated type will have a type method
called <b class="cmd"><a href="../../../../index.html#key90">info</a></b> that is used for type introspection; the <b class="cmd"><a href="../../../../index.html#key90">info</a></b>
type method is documented below.  If false, it will not.</p></dd>
<dt><b class="const">-hastypedestroy</b> <i class="arg">flag</i></dt>
<dd><p>If true (the default), the generated type will have a type method
called <b class="cmd">destroy</b> that is used to destroy the type and all of its
instances.  The <b class="cmd">destroy</b> type method is documented below.  If
false, it will not.</p></dd>
<dt><b class="const">-hastypemethods</b> <i class="arg">flag</i></dt>
<dd><p>If true (the default), the generated type's type command will have 
subcommands (type methods) as usual.  If false, the type command
will serve only to create instances of the type; the first argument
is the instance name.</p>
<p>This pragma and <b class="const">-hasinstances</b> cannot both be set false.</p></dd>
<dt><b class="const">-hasinstances</b> <i class="arg">flag</i></dt>
<dd><p>If true (the default), the generated type will have a type method 
called <b class="cmd">create</b> that is used to create instances of the type,
along with a variety of instance-related features.  If false, it will
not.</p>
<p>This pragma and <b class="const">-hastypemethods</b> cannot both be set false.</p></dd>
<dt><b class="const">-hasinfo</b> <i class="arg">flag</i></dt>
<dd><p>If true (the default), instances of the generated type will have 
an instance method called <b class="method">info</b> that is used for 
instance introspection; the <b class="method">info</b>
method is documented below.  If false, it will not.</p></dd>
<dt><b class="const">-simpledispatch</b> <i class="arg">flag</i></dt>
<dd><p>This pragma is intended to make simple, heavily-used abstract
data types (e.g., stacks and queues) more efficient.</p>
<p>If false (the default), instance methods are dispatched normally.  If
true, a faster dispatching scheme is used instead.
The speed comes at a price; with <b class="const">-simpledispatch yes</b> you 
get the following limitations:</p>
<ul class="itemized">
<li><p>Methods cannot be delegated.</p></li>
<li><p><b class="cmd">uplevel</b> and <b class="cmd">upvar</b> do not work as expected: the
caller's scope is two levels up rather than one.</p></li>
<li><p>The option-handling methods 
(<b class="cmd">cget</b>, <b class="cmd">configure</b>, and <b class="cmd">configurelist</b>) are very
slightly slower.</p></li>
</ul></dd>
</dl></dd>
<dt><a name="25"><b class="cmd">expose</b> <i class="arg">comp</i></a></dt>
<dd></dd>
<dt><a name="26"><b class="cmd">expose</b> <i class="arg">comp</i> <b class="const">as</b> <i class="arg">method</i></a></dt>
<dd><p><b class="const">Deprecated.</b>  To expose component <i class="arg">comp</i> publicly, use
<b class="cmd">component</b>'s <b class="const">-public</b> option.</p></dd>
<dt><a name="27"><b class="cmd">onconfigure</b> <i class="arg">name</i> <i class="arg">arglist</i> <i class="arg">body</i></a></dt>
<dd><p><b class="const">Deprecated.</b>  Define <b class="cmd">option</b>'s <b class="const">-configuremethod</b> 
option instead.</p>
<p>As of version 0.95, the following definitions,</p>
<pre class="example">    option -myoption
    onconfigure -myoption {value} {
        # Code to save the option's value
    }
</pre>
<p>are implemented as follows:</p>
<pre class="example">    option -myoption -configuremethod _configure-myoption
    method _configure-myoption {_option value} {
        # Code to save the option's value
    }
</pre>
</dd>
<dt><a name="28"><b class="cmd">oncget</b> <i class="arg">name</i> <i class="arg">body</i></a></dt>
<dd><p><b class="const">Deprecated.</b>  Define <b class="cmd">option</b>'s <b class="const">-cgetmethod</b> 
option instead.</p>
<p>As of version 0.95, the following definitions,</p>
<pre class="example">    option -myoption
    oncget -myoption {
        # Code to return the option's value
    }
</pre>







|















|

















|














|







|





|





|
|







|





|










|















|







763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
specify a list of <i class="arg">exceptions</i>, i.e., type method names that will not
be so delegated. The <b class="const">using</b> clause is defined as given above.
In this form, the statement must contain the <b class="const">to</b> clause, the
<b class="const">using</b> clause, or both.</p>
<p><b class="const">Note:</b> By default, Snit interprets <b class="cmd">$type foo</b>, where
<b class="const">foo</b> is
not a defined type method, as equivalent to <b class="cmd">$type create foo</b>, where
<b class="const">foo</b> is the name of a new instance of the type.  If you
use <b class="const">delegate typemethod *</b>, then the <b class="method">create</b> type
method must always be used explicitly.</p>
<p>The &quot;*&quot; can be a list of two or more tokens whose last
element is &quot;*&quot;, as in the following example:</p>
<pre class="example">    delegate typemethod {tail *} to tail
</pre>
<p>This implicitly defines the type method <b class="cmd">tail</b> whose subcommands will
be delegated to the <b class="variable">tail</b> type component.</p></dd>
<dt><a name="23"><b class="cmd">typecomponent</b> <i class="arg">comp</i> <span class="opt">?<b class="const">-public</b> <i class="arg">typemethod</i>?</span> <span class="opt">?<b class="const">-inherit</b> <i class="arg">flag</i>?</span></a></dt>
<dd><p>Explicitly declares a type component called <i class="arg">comp</i>, and automatically
defines the component's type variable.  A type component is an arbitrary
command to which type methods and instance methods can be delegated;
the command's name is stored in a type variable.</p>
<p>If the <b class="const">-public</b> option is specified, then the type component is made
public by defining a <i class="arg">typemethod</i> whose subcommands are delegated to
the type component, e.g., specifying <b class="const">-public mytypemethod</b>
is equivalent to the following:</p>
<pre class="example">    typecomponent mycomp
    delegate typemethod {mytypemethod *} to mycomp
</pre>
<p>If the <b class="const">-inherit</b> option is specified, then <i class="arg">flag</i> must be a
Boolean value; if <i class="arg">flag</i> is true then all unknown type methods
will be delegated to this type component. (See the note on &quot;delegate
typemethod *&quot;, above.) The name <b class="const">-inherit</b>
implies that this type inherits, in a sense, the behavior of
the type component. That is, <b class="const">-inherit yes</b> is equivalent to:</p>
<pre class="example">    typecomponent mycomp
    delegate typemethod * to mycomp
</pre>
</dd>
<dt><a name="24"><b class="cmd">pragma</b> <span class="opt">?<i class="arg">options...</i>?</span></a></dt>
<dd><p>The <b class="cmd">pragma</b> statement provides control over how Snit generates a
type.  It takes the following options; in each case, <i class="arg">flag</i> must
be a Boolean value recognized by Tcl, e.g., <b class="const">0</b>, <b class="const">1</b>,
<b class="const">yes</b>, <b class="const">no</b>, and so
on.</p>
<p>By setting the <b class="const">-hastypeinfo</b>, <b class="const">-hastypedestroy</b>, and
<b class="const">-hasinstances</b> pragmas to false and defining appropriate
type methods, you can create an ensemble command without any extraneous
behavior.</p>
<dl class="definitions">
<dt><b class="const">-canreplace</b> <i class="arg">flag</i></dt>
<dd><p>If false (the default) Snit will not create an instance of a
<b class="cmd">snit::type</b> that has the same name as an existing command; this
prevents subtle errors.  Setting this pragma to true restores the
behavior of Snit V0.93 and earlier versions.</p></dd>
<dt><b class="const">-hastypeinfo</b> <i class="arg">flag</i></dt>
<dd><p>If true (the default), the generated type will have a type method
called <b class="cmd"><a href="../../../../index.html#key91">info</a></b> that is used for type introspection; the <b class="cmd"><a href="../../../../index.html#key91">info</a></b>
type method is documented below.  If false, it will not.</p></dd>
<dt><b class="const">-hastypedestroy</b> <i class="arg">flag</i></dt>
<dd><p>If true (the default), the generated type will have a type method
called <b class="cmd">destroy</b> that is used to destroy the type and all of its
instances.  The <b class="cmd">destroy</b> type method is documented below.  If
false, it will not.</p></dd>
<dt><b class="const">-hastypemethods</b> <i class="arg">flag</i></dt>
<dd><p>If true (the default), the generated type's type command will have
subcommands (type methods) as usual.  If false, the type command
will serve only to create instances of the type; the first argument
is the instance name.</p>
<p>This pragma and <b class="const">-hasinstances</b> cannot both be set false.</p></dd>
<dt><b class="const">-hasinstances</b> <i class="arg">flag</i></dt>
<dd><p>If true (the default), the generated type will have a type method
called <b class="cmd">create</b> that is used to create instances of the type,
along with a variety of instance-related features.  If false, it will
not.</p>
<p>This pragma and <b class="const">-hastypemethods</b> cannot both be set false.</p></dd>
<dt><b class="const">-hasinfo</b> <i class="arg">flag</i></dt>
<dd><p>If true (the default), instances of the generated type will have
an instance method called <b class="method">info</b> that is used for
instance introspection; the <b class="method">info</b>
method is documented below.  If false, it will not.</p></dd>
<dt><b class="const">-simpledispatch</b> <i class="arg">flag</i></dt>
<dd><p>This pragma is intended to make simple, heavily-used abstract
data types (e.g., stacks and queues) more efficient.</p>
<p>If false (the default), instance methods are dispatched normally.  If
true, a faster dispatching scheme is used instead.
The speed comes at a price; with <b class="const">-simpledispatch yes</b> you
get the following limitations:</p>
<ul class="itemized">
<li><p>Methods cannot be delegated.</p></li>
<li><p><b class="cmd">uplevel</b> and <b class="cmd">upvar</b> do not work as expected: the
caller's scope is two levels up rather than one.</p></li>
<li><p>The option-handling methods
(<b class="cmd">cget</b>, <b class="cmd">configure</b>, and <b class="cmd">configurelist</b>) are very
slightly slower.</p></li>
</ul></dd>
</dl></dd>
<dt><a name="25"><b class="cmd">expose</b> <i class="arg">comp</i></a></dt>
<dd></dd>
<dt><a name="26"><b class="cmd">expose</b> <i class="arg">comp</i> <b class="const">as</b> <i class="arg">method</i></a></dt>
<dd><p><b class="const">Deprecated.</b>  To expose component <i class="arg">comp</i> publicly, use
<b class="cmd">component</b>'s <b class="const">-public</b> option.</p></dd>
<dt><a name="27"><b class="cmd">onconfigure</b> <i class="arg">name</i> <i class="arg">arglist</i> <i class="arg">body</i></a></dt>
<dd><p><b class="const">Deprecated.</b>  Define <b class="cmd">option</b>'s <b class="const">-configuremethod</b>
option instead.</p>
<p>As of version 0.95, the following definitions,</p>
<pre class="example">    option -myoption
    onconfigure -myoption {value} {
        # Code to save the option's value
    }
</pre>
<p>are implemented as follows:</p>
<pre class="example">    option -myoption -configuremethod _configure-myoption
    method _configure-myoption {_option value} {
        # Code to save the option's value
    }
</pre>
</dd>
<dt><a name="28"><b class="cmd">oncget</b> <i class="arg">name</i> <i class="arg">body</i></a></dt>
<dd><p><b class="const">Deprecated.</b>  Define <b class="cmd">option</b>'s <b class="const">-cgetmethod</b>
option instead.</p>
<p>As of version 0.95, the following definitions,</p>
<pre class="example">    option -myoption
    oncget -myoption {
        # Code to return the option's value
    }
</pre>
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
<dt><a name="30"><b class="cmd">widgetclass</b> <i class="arg">name</i></a></dt>
<dd><p>Sets the <b class="cmd">snit::widget</b>'s widget class to <i class="arg">name</i>, overriding
the default.  See <span class="sectref"><a href="#subsection9">The Tk Option Database</a></span> for more
information.</p></dd>
<dt><a name="31"><b class="cmd">hulltype</b> <i class="arg">type</i></a></dt>
<dd><p>Determines the kind of widget used as the <b class="cmd">snit::widget</b>'s hull.
The <i class="arg">type</i> may be <b class="const">frame</b> (the default), <b class="const">toplevel</b>,
<b class="const">labelframe</b>; the qualified equivalents of these, 
<b class="const">tk::frame</b>, <b class="const">tk::toplevel</b>, and <b class="const">tk::labelframe</b>;
or, if available, the equivalent Tile widgets:
<b class="const">ttk::frame</b>, <b class="const">ttk::toplevel</b>, and 
<b class="const">ttk::labelframe</b>.  In practice, any widget that supports the
<b class="const">-class</b> option can be used as a hull widget by 
<b class="cmd">lappend</b>'ing its name to the variable <b class="variable">snit::hulltypes</b>.</p></dd>
</dl></dd>
<dt><a name="32"><b class="cmd">snit::widgetadaptor</b> <i class="arg">name</i> <i class="arg">definition</i></a></dt>
<dd><p>This command defines a Snit megawidget type with the specified name.
It differs from <b class="cmd">snit::widget</b> in that the instance's <b class="variable">hull</b>
component is not created automatically, but is created in the
constructor and installed using the <b class="cmd">installhull</b> command.  Once







|


|

|







918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
<dt><a name="30"><b class="cmd">widgetclass</b> <i class="arg">name</i></a></dt>
<dd><p>Sets the <b class="cmd">snit::widget</b>'s widget class to <i class="arg">name</i>, overriding
the default.  See <span class="sectref"><a href="#subsection9">The Tk Option Database</a></span> for more
information.</p></dd>
<dt><a name="31"><b class="cmd">hulltype</b> <i class="arg">type</i></a></dt>
<dd><p>Determines the kind of widget used as the <b class="cmd">snit::widget</b>'s hull.
The <i class="arg">type</i> may be <b class="const">frame</b> (the default), <b class="const">toplevel</b>,
<b class="const">labelframe</b>; the qualified equivalents of these,
<b class="const">tk::frame</b>, <b class="const">tk::toplevel</b>, and <b class="const">tk::labelframe</b>;
or, if available, the equivalent Tile widgets:
<b class="const">ttk::frame</b>, <b class="const">ttk::toplevel</b>, and
<b class="const">ttk::labelframe</b>.  In practice, any widget that supports the
<b class="const">-class</b> option can be used as a hull widget by
<b class="cmd">lappend</b>'ing its name to the variable <b class="variable">snit::hulltypes</b>.</p></dd>
</dl></dd>
<dt><a name="32"><b class="cmd">snit::widgetadaptor</b> <i class="arg">name</i> <i class="arg">definition</i></a></dt>
<dd><p>This command defines a Snit megawidget type with the specified name.
It differs from <b class="cmd">snit::widget</b> in that the instance's <b class="variable">hull</b>
component is not created automatically, but is created in the
constructor and installed using the <b class="cmd">installhull</b> command.  Once
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
instance methods can't be redefined.</p></dd>
<dt><a name="35"><b class="cmd">snit::macro</b> <i class="arg">name</i> <i class="arg">arglist</i> <i class="arg">body</i></a></dt>
<dd><p>Defines a Snit macro with the specified <i class="arg">name</i>, <i class="arg">arglist</i>, and
<i class="arg">body</i>.  Macros are used to define new type and widget
definition statements in terms of the statements defined in this man
page.</p>
<p>A macro is simply a Tcl proc that is defined in the slave interpreter
used to compile type and widget definitions.  Thus, macros have 
access to all of the type and widget definition statements.  See 
<span class="sectref"><a href="#subsection10">Macros and Meta-programming</a></span> for more details.</p>
<p>The macro <i class="arg">name</i> cannot be the same as any standard Tcl command, 
or any Snit type or widget definition statement, e.g., you can't
redefine the <b class="cmd"><a href="../../../../index.html#key355">method</a></b> or <b class="cmd">delegate</b> statements, or the 
standard <b class="cmd"><a href="../../../../index.html#key279">set</a></b>, <b class="cmd"><a href="../../../../index.html#key278">list</a></b>, or <b class="cmd"><a href="../../../../index.html#key272">string</a></b> commands.</p></dd>
<dt><a name="36"><b class="cmd">snit::compile</b> <i class="arg">which</i> <i class="arg">type</i> <i class="arg">body</i></a></dt>
<dd><p>Snit defines a type, widget, or widgetadaptor by &quot;compiling&quot; the
definition into a Tcl script; this script is then evaluated in the
Tcl interpreter, which actually defines the new type.</p>
<p>This command exposes the &quot;compiler&quot;.  Given a definition <i class="arg">body</i>
for the named <i class="arg">type</i>, where <i class="arg">which</i> is <b class="const">type</b>, 
<b class="const">widget</b>, or <b class="const">widgetadaptor</b>, <b class="cmd">snit::compile</b> returns a list
of two elements.  The first element is the fully qualified type name;
the second element is the definition script.</p>
<p><b class="cmd">snit::compile</b> is useful when additional processing
must be done on the Snit-generated code--if it must be instrumented,
for example, or run through the TclDevKit compiler.  In addition, the
returned script could be saved in a &quot;.tcl&quot; file and used to define the
type as part of an application or library, thus saving the compilation
overhead at application start-up.  Note that the
same version of Snit must be used at run-time as at compile-time.</p></dd>
</dl>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">The Type Command</a></h3>
<p>A type or widget definition creates a type command, which is used to
create instances of the type.  The type command has this form:</p>
<dl class="definitions">
<dt><a name="37"><b class="cmd">$type</b> <i class="arg">typemethod</i> <i class="arg">args</i>...</a></dt>
<dd><p>The <i class="arg">typemethod</i> can be any of the 
<span class="sectref"><a href="#subsection3">Standard Type Methods</a></span> (e.g., <b class="method">create</b>), 
or any type method defined in the type
definition.
The subsequent <i class="arg">args</i> depend on the specific <i class="arg">typemethod</i>
chosen.</p>
<p>The type command is most often used to create new instances of the 
type; hence, the <b class="method">create</b> method is assumed if the first
argument to the type command doesn't name a valid type method, unless
the type definition includes <b class="cmd">delegate typemethod *</b> or the 
<b class="const">-hasinstances</b> pragma is set to false.</p>
<p>Furthermore, if the <b class="const">-hastypemethods</b> pragma is false, then
Snit type commands can be called with no arguments at
all; in this case, the type command creates an instance with an
automatically generated name.  In other words, provided that the 
<b class="const">-hastypemethods</b> pragma is false and the type
has instances, the following commands are equivalent:</p>
<pre class="example">snit::type dog { ... }
set mydog [dog create %AUTO%]
set mydog [dog %AUTO%]
set mydog [dog]
</pre>







|
|

|

|
|





|

















|
|




|


|




|







951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
instance methods can't be redefined.</p></dd>
<dt><a name="35"><b class="cmd">snit::macro</b> <i class="arg">name</i> <i class="arg">arglist</i> <i class="arg">body</i></a></dt>
<dd><p>Defines a Snit macro with the specified <i class="arg">name</i>, <i class="arg">arglist</i>, and
<i class="arg">body</i>.  Macros are used to define new type and widget
definition statements in terms of the statements defined in this man
page.</p>
<p>A macro is simply a Tcl proc that is defined in the slave interpreter
used to compile type and widget definitions.  Thus, macros have
access to all of the type and widget definition statements.  See
<span class="sectref"><a href="#subsection10">Macros and Meta-programming</a></span> for more details.</p>
<p>The macro <i class="arg">name</i> cannot be the same as any standard Tcl command,
or any Snit type or widget definition statement, e.g., you can't
redefine the <b class="cmd"><a href="../../../../index.html#key355">method</a></b> or <b class="cmd">delegate</b> statements, or the
standard <b class="cmd"><a href="../../../../index.html#key279">set</a></b>, <b class="cmd"><a href="../../../../index.html#key280">list</a></b>, or <b class="cmd"><a href="../../../../index.html#key270">string</a></b> commands.</p></dd>
<dt><a name="36"><b class="cmd">snit::compile</b> <i class="arg">which</i> <i class="arg">type</i> <i class="arg">body</i></a></dt>
<dd><p>Snit defines a type, widget, or widgetadaptor by &quot;compiling&quot; the
definition into a Tcl script; this script is then evaluated in the
Tcl interpreter, which actually defines the new type.</p>
<p>This command exposes the &quot;compiler&quot;.  Given a definition <i class="arg">body</i>
for the named <i class="arg">type</i>, where <i class="arg">which</i> is <b class="const">type</b>,
<b class="const">widget</b>, or <b class="const">widgetadaptor</b>, <b class="cmd">snit::compile</b> returns a list
of two elements.  The first element is the fully qualified type name;
the second element is the definition script.</p>
<p><b class="cmd">snit::compile</b> is useful when additional processing
must be done on the Snit-generated code--if it must be instrumented,
for example, or run through the TclDevKit compiler.  In addition, the
returned script could be saved in a &quot;.tcl&quot; file and used to define the
type as part of an application or library, thus saving the compilation
overhead at application start-up.  Note that the
same version of Snit must be used at run-time as at compile-time.</p></dd>
</dl>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">The Type Command</a></h3>
<p>A type or widget definition creates a type command, which is used to
create instances of the type.  The type command has this form:</p>
<dl class="definitions">
<dt><a name="37"><b class="cmd">$type</b> <i class="arg">typemethod</i> <i class="arg">args</i>...</a></dt>
<dd><p>The <i class="arg">typemethod</i> can be any of the
<span class="sectref"><a href="#subsection3">Standard Type Methods</a></span> (e.g., <b class="method">create</b>),
or any type method defined in the type
definition.
The subsequent <i class="arg">args</i> depend on the specific <i class="arg">typemethod</i>
chosen.</p>
<p>The type command is most often used to create new instances of the
type; hence, the <b class="method">create</b> method is assumed if the first
argument to the type command doesn't name a valid type method, unless
the type definition includes <b class="cmd">delegate typemethod *</b> or the
<b class="const">-hasinstances</b> pragma is set to false.</p>
<p>Furthermore, if the <b class="const">-hastypemethods</b> pragma is false, then
Snit type commands can be called with no arguments at
all; in this case, the type command creates an instance with an
automatically generated name.  In other words, provided that the
<b class="const">-hastypemethods</b> pragma is false and the type
has instances, the following commands are equivalent:</p>
<pre class="example">snit::type dog { ... }
set mydog [dog create %AUTO%]
set mydog [dog %AUTO%]
set mydog [dog]
</pre>
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
name, it is assumed to be a name in the namespace in which the call to
<b class="cmd">snit::type</b> appears.  The method returns the fully-qualified
instance name.</p>
<p>For <b class="cmd">snit::widget</b>s and <b class="cmd">snit::widgetadaptor</b>s, <i class="arg">name</i>
must be a valid widget name; the method returns the widget name.</p>
<p>So long as <i class="arg">name</i> does not conflict with any defined type method
name the <b class="method">create</b> keyword may be omitted, unless
the type definition includes <b class="cmd">delegate typemethod *</b> or the 
<b class="const">-hasinstances</b> pragma is set to false.</p>
<p>If the <i class="arg">name</i> includes the string <b class="const">%AUTO%</b>, it will be
replaced with the string <b class="const">$type$counter</b> where <b class="const">$type</b> is
the type name and <b class="const">$counter</b> is a counter that increments each
time <b class="const">%AUTO%</b> is used for this type.</p>
<p>By default, any arguments following the <i class="arg">name</i> will be a list of
<i class="arg">option</i> names and their <i class="arg">value</i>s; however, a type's
constructor can specify a different argument list.</p>
<p>As of Snit V0.95, <b class="method">create</b> will throw an error if the <i class="arg">name</i>
is the same as any existing command--note that this was always true
for <b class="cmd">snit::widget</b>s and <b class="cmd">snit::widgetadaptor</b>s.  You can
restore the previous behavior using the <b class="const">-canreplace</b> pragma.</p></dd>
<dt><a name="39"><b class="cmd">$type</b> <b class="method">info typevars</b> <span class="opt">?<i class="arg">pattern</i>?</span></a></dt>
<dd><p>Returns a list of the type's type variables (excluding Snit internal
variables); all variable names are fully-qualified.</p>
<p>If <i class="arg">pattern</i> is given, it's used as a <b class="cmd">string match</b>
pattern; only names that match the pattern are returned.</p></dd>
<dt><a name="40"><b class="cmd">$type</b> <b class="method">info typemethods</b> <span class="opt">?<i class="arg">pattern</i>?</span></a></dt>
<dd><p>Returns a list of the names of the  type's type methods.  
If the type has hierarchical 
type methods, whether locally-defined or delegated, only the first
word of each will be included in the list.</p>
<p>If the type
definition includes <b class="cmd">delegate typemethod *</b>, the list will
include only the names of those implicitly delegated type methods 
that have been called at least once and are still in the type method cache.</p>
<p>If <i class="arg">pattern</i> is given, it's used as a <b class="cmd">string match</b>
pattern; only names that match the pattern are returned.</p></dd>
<dt><a name="41"><b class="cmd">$type</b> <b class="method">info args</b> <i class="arg">method</i></a></dt>
<dd><p>Returns a list containing the names of the arguments to the type's
<i class="arg">method</i>, in order. This method cannot be applied to delegated
type methods.</p></dd>







|


















|
|




|







1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
name, it is assumed to be a name in the namespace in which the call to
<b class="cmd">snit::type</b> appears.  The method returns the fully-qualified
instance name.</p>
<p>For <b class="cmd">snit::widget</b>s and <b class="cmd">snit::widgetadaptor</b>s, <i class="arg">name</i>
must be a valid widget name; the method returns the widget name.</p>
<p>So long as <i class="arg">name</i> does not conflict with any defined type method
name the <b class="method">create</b> keyword may be omitted, unless
the type definition includes <b class="cmd">delegate typemethod *</b> or the
<b class="const">-hasinstances</b> pragma is set to false.</p>
<p>If the <i class="arg">name</i> includes the string <b class="const">%AUTO%</b>, it will be
replaced with the string <b class="const">$type$counter</b> where <b class="const">$type</b> is
the type name and <b class="const">$counter</b> is a counter that increments each
time <b class="const">%AUTO%</b> is used for this type.</p>
<p>By default, any arguments following the <i class="arg">name</i> will be a list of
<i class="arg">option</i> names and their <i class="arg">value</i>s; however, a type's
constructor can specify a different argument list.</p>
<p>As of Snit V0.95, <b class="method">create</b> will throw an error if the <i class="arg">name</i>
is the same as any existing command--note that this was always true
for <b class="cmd">snit::widget</b>s and <b class="cmd">snit::widgetadaptor</b>s.  You can
restore the previous behavior using the <b class="const">-canreplace</b> pragma.</p></dd>
<dt><a name="39"><b class="cmd">$type</b> <b class="method">info typevars</b> <span class="opt">?<i class="arg">pattern</i>?</span></a></dt>
<dd><p>Returns a list of the type's type variables (excluding Snit internal
variables); all variable names are fully-qualified.</p>
<p>If <i class="arg">pattern</i> is given, it's used as a <b class="cmd">string match</b>
pattern; only names that match the pattern are returned.</p></dd>
<dt><a name="40"><b class="cmd">$type</b> <b class="method">info typemethods</b> <span class="opt">?<i class="arg">pattern</i>?</span></a></dt>
<dd><p>Returns a list of the names of the  type's type methods.
If the type has hierarchical
type methods, whether locally-defined or delegated, only the first
word of each will be included in the list.</p>
<p>If the type
definition includes <b class="cmd">delegate typemethod *</b>, the list will
include only the names of those implicitly delegated type methods
that have been called at least once and are still in the type method cache.</p>
<p>If <i class="arg">pattern</i> is given, it's used as a <b class="cmd">string match</b>
pattern; only names that match the pattern are returned.</p></dd>
<dt><a name="41"><b class="cmd">$type</b> <b class="method">info args</b> <i class="arg">method</i></a></dt>
<dd><p>Returns a list containing the names of the arguments to the type's
<i class="arg">method</i>, in order. This method cannot be applied to delegated
type methods.</p></dd>
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
<div id="subsection4" class="subsection"><h3><a name="subsection4">The Instance Command</a></h3>
<p>A Snit type or widget's <b class="method">create</b> type method creates objects of
the type; each object has a unique name that is also a Tcl command.
This command is used to access the object's methods and data, and has
this form:</p>
<dl class="definitions">
<dt><a name="46"><b class="cmd">$object</b> <i class="arg">method</i> <i class="arg">args...</i></a></dt>
<dd><p>The <i class="arg">method</i> can be any of the 
<span class="sectref"><a href="#subsection5">Standard Instance Methods</a></span>, or any instance method 
defined in the type definition.
The subsequent <i class="arg">args</i> depend on the specific <i class="arg">method</i> chosen.</p></dd>
</dl>
</div>
<div id="subsection5" class="subsection"><h3><a name="subsection5">Standard Instance Methods</a></h3>
<p>In addition to any delegated or locally-defined instance methods in
the type's definition, all Snit objects will have at least the







|
|







1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
<div id="subsection4" class="subsection"><h3><a name="subsection4">The Instance Command</a></h3>
<p>A Snit type or widget's <b class="method">create</b> type method creates objects of
the type; each object has a unique name that is also a Tcl command.
This command is used to access the object's methods and data, and has
this form:</p>
<dl class="definitions">
<dt><a name="46"><b class="cmd">$object</b> <i class="arg">method</i> <i class="arg">args...</i></a></dt>
<dd><p>The <i class="arg">method</i> can be any of the
<span class="sectref"><a href="#subsection5">Standard Instance Methods</a></span>, or any instance method
defined in the type definition.
The subsequent <i class="arg">args</i> depend on the specific <i class="arg">method</i> chosen.</p></dd>
</dl>
</div>
<div id="subsection5" class="subsection"><h3><a name="subsection5">Standard Instance Methods</a></h3>
<p>In addition to any delegated or locally-defined instance methods in
the type's definition, all Snit objects will have at least the
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
pattern; only names that match the pattern are returned.</p></dd>
<dt><a name="53"><b class="cmd">$object</b> <b class="method">info typevars</b> <span class="opt">?<i class="arg">pattern</i>?</span></a></dt>
<dd><p>Returns a list of the object's type's type variables (excluding Snit
internal variables).  The names are fully qualified.</p>
<p>If <i class="arg">pattern</i> is given, it's used as a <b class="cmd">string match</b>
pattern; only names that match the pattern are returned.</p></dd>
<dt><a name="54"><b class="cmd">$object</b> <b class="method">info typemethods</b> <span class="opt">?<i class="arg">pattern</i>?</span></a></dt>
<dd><p>Returns a list of the names of the  type's type methods.  
If the type has hierarchical 
type methods, whether locally-defined or delegated, only the first
word of each will be included in the list.</p>
<p>If the type
definition includes <b class="cmd">delegate typemethod *</b>, the list will
include only the names of those implicitly delegated type methods 
that have been called at least once and are still in the type method cache.</p>
<p>If <i class="arg">pattern</i> is given, it's used as a <b class="cmd">string match</b>
pattern; only names that match the pattern are returned.</p>
<p><em>Snit 1.x Incompatibility:</em>  In Snit 1.x, the full multi-word
names of hierarchical type methods are included in the return value.</p></dd>
<dt><a name="55"><b class="cmd">$object</b> <b class="method">info options</b> <span class="opt">?<i class="arg">pattern</i>?</span></a></dt>
<dd><p>Returns a list of the object's option names.  This always includes
local options and explicitly delegated options.  If unknown options
are delegated as well, and if the component to which they are
delegated responds to <b class="cmd">$object configure</b> like Tk widgets do,
then the result will include all possible unknown options that can
be delegated to the component.</p>
<p>If <i class="arg">pattern</i> is given, it's used as a <b class="cmd">string match</b>
pattern; only names that match the pattern are returned.</p>
<p>Note that the return value might be different for different instances
of the same type, if component object types can vary from one instance
to another.</p></dd>
<dt><a name="56"><b class="cmd">$object</b> <b class="method">info methods</b> <span class="opt">?<i class="arg">pattern</i>?</span></a></dt>
<dd><p>Returns a list of the names of the instance's methods.
If the type has hierarchical methods, whether locally-defined or 
delegated, only the first word of each will be included in the list.</p>
<p>If the type
definition includes <b class="cmd">delegate method *</b>, the list will
include only the names of those implicitly delegated methods that have
been called at least once and are still in the method cache.</p>
<p>If <i class="arg">pattern</i> is given, it's used as a <b class="cmd">string match</b>
pattern; only names that match the pattern are returned.</p>







|
|




|



















|







1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
pattern; only names that match the pattern are returned.</p></dd>
<dt><a name="53"><b class="cmd">$object</b> <b class="method">info typevars</b> <span class="opt">?<i class="arg">pattern</i>?</span></a></dt>
<dd><p>Returns a list of the object's type's type variables (excluding Snit
internal variables).  The names are fully qualified.</p>
<p>If <i class="arg">pattern</i> is given, it's used as a <b class="cmd">string match</b>
pattern; only names that match the pattern are returned.</p></dd>
<dt><a name="54"><b class="cmd">$object</b> <b class="method">info typemethods</b> <span class="opt">?<i class="arg">pattern</i>?</span></a></dt>
<dd><p>Returns a list of the names of the  type's type methods.
If the type has hierarchical
type methods, whether locally-defined or delegated, only the first
word of each will be included in the list.</p>
<p>If the type
definition includes <b class="cmd">delegate typemethod *</b>, the list will
include only the names of those implicitly delegated type methods
that have been called at least once and are still in the type method cache.</p>
<p>If <i class="arg">pattern</i> is given, it's used as a <b class="cmd">string match</b>
pattern; only names that match the pattern are returned.</p>
<p><em>Snit 1.x Incompatibility:</em>  In Snit 1.x, the full multi-word
names of hierarchical type methods are included in the return value.</p></dd>
<dt><a name="55"><b class="cmd">$object</b> <b class="method">info options</b> <span class="opt">?<i class="arg">pattern</i>?</span></a></dt>
<dd><p>Returns a list of the object's option names.  This always includes
local options and explicitly delegated options.  If unknown options
are delegated as well, and if the component to which they are
delegated responds to <b class="cmd">$object configure</b> like Tk widgets do,
then the result will include all possible unknown options that can
be delegated to the component.</p>
<p>If <i class="arg">pattern</i> is given, it's used as a <b class="cmd">string match</b>
pattern; only names that match the pattern are returned.</p>
<p>Note that the return value might be different for different instances
of the same type, if component object types can vary from one instance
to another.</p></dd>
<dt><a name="56"><b class="cmd">$object</b> <b class="method">info methods</b> <span class="opt">?<i class="arg">pattern</i>?</span></a></dt>
<dd><p>Returns a list of the names of the instance's methods.
If the type has hierarchical methods, whether locally-defined or
delegated, only the first word of each will be included in the list.</p>
<p>If the type
definition includes <b class="cmd">delegate method *</b>, the list will
include only the names of those implicitly delegated methods that have
been called at least once and are still in the method cache.</p>
<p>If <i class="arg">pattern</i> is given, it's used as a <b class="cmd">string match</b>
pattern; only names that match the pattern are returned.</p>
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
created with the type, and can be used without qualification.</p>
<dl class="definitions">
<dt><a name="60"><b class="cmd">mymethod</b> <i class="arg">name</i> <span class="opt">?<i class="arg">args...</i>?</span></a></dt>
<dd><p>The <b class="cmd">mymethod</b> command is used for formatting callback commands to
be passed to other objects.  It returns a command that when called
will invoke method <i class="arg">name</i> with the specified arguments, plus of
course any arguments added by the caller.  In other words, both of the
following commands will cause the object's 
<b class="method">dosomething</b> method to be called when the <b class="cmd">$button</b> is pressed:</p>
<pre class="example">    $button configure -command [list $self dosomething myargument]
       
    $button configure -command [mymethod dosomething myargument]
</pre>
<p>The chief distinction between the two is that the latter form will not
break if the object's command is renamed.</p></dd>
<dt><a name="61"><b class="cmd">mytypemethod</b> <i class="arg">name</i> <span class="opt">?<i class="arg">args...</i>?</span></a></dt>
<dd><p>The <b class="cmd">mytypemethod</b> command is used for formatting callback commands to
be passed to other objects.  It returns a command that when called
will invoke type method <i class="arg">name</i> with the specified arguments, plus of
course any arguments added by the caller.  In other words, both of the
following commands will cause the object's <b class="method">dosomething</b> type method
to be called when <b class="cmd">$button</b> is pressed:</p>
<pre class="example">    $button configure -command [list $type dosomething myargument]
       
    $button configure -command [mytypemethod dosomething myargument]
</pre>
<p>Type commands cannot be renamed, so in practice there's little
difference between the two forms.  <b class="cmd">mytypemethod</b> is provided for
parallelism with <b class="cmd">mymethod</b>.</p></dd>
<dt><a name="62"><b class="cmd">myproc</b> <i class="arg">name</i> <span class="opt">?<i class="arg">args...</i>?</span></a></dt>
<dd><p>The <b class="cmd">myproc</b> command is used for formatting callback commands to
be passed to other objects.  It returns a command that when called
will invoke the type proc <i class="arg">name</i> with the specified arguments, plus of
course any arguments added by the caller.  In other words, both of the
following commands will cause the object's <b class="method">dosomething</b> proc
to be called when <b class="cmd">$button</b> is pressed:</p>
<pre class="example">    $button configure -command [list ${type}::dosomething myargument]
       
    $button configure -command [myproc dosomething myargument]
</pre>
</dd>
<dt><a name="63"><b class="cmd">myvar</b> <i class="arg">name</i></a></dt>
<dd><p>Given an instance variable name, returns the fully qualified name.
Use this if you're passing the variable to some other object, e.g., as
a <b class="option">-textvariable</b> to a Tk label widget.</p></dd>







|


<












<













<







1197
1198
1199
1200
1201
1202
1203
1204
1205
1206

1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218

1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231

1232
1233
1234
1235
1236
1237
1238
created with the type, and can be used without qualification.</p>
<dl class="definitions">
<dt><a name="60"><b class="cmd">mymethod</b> <i class="arg">name</i> <span class="opt">?<i class="arg">args...</i>?</span></a></dt>
<dd><p>The <b class="cmd">mymethod</b> command is used for formatting callback commands to
be passed to other objects.  It returns a command that when called
will invoke method <i class="arg">name</i> with the specified arguments, plus of
course any arguments added by the caller.  In other words, both of the
following commands will cause the object's
<b class="method">dosomething</b> method to be called when the <b class="cmd">$button</b> is pressed:</p>
<pre class="example">    $button configure -command [list $self dosomething myargument]

    $button configure -command [mymethod dosomething myargument]
</pre>
<p>The chief distinction between the two is that the latter form will not
break if the object's command is renamed.</p></dd>
<dt><a name="61"><b class="cmd">mytypemethod</b> <i class="arg">name</i> <span class="opt">?<i class="arg">args...</i>?</span></a></dt>
<dd><p>The <b class="cmd">mytypemethod</b> command is used for formatting callback commands to
be passed to other objects.  It returns a command that when called
will invoke type method <i class="arg">name</i> with the specified arguments, plus of
course any arguments added by the caller.  In other words, both of the
following commands will cause the object's <b class="method">dosomething</b> type method
to be called when <b class="cmd">$button</b> is pressed:</p>
<pre class="example">    $button configure -command [list $type dosomething myargument]

    $button configure -command [mytypemethod dosomething myargument]
</pre>
<p>Type commands cannot be renamed, so in practice there's little
difference between the two forms.  <b class="cmd">mytypemethod</b> is provided for
parallelism with <b class="cmd">mymethod</b>.</p></dd>
<dt><a name="62"><b class="cmd">myproc</b> <i class="arg">name</i> <span class="opt">?<i class="arg">args...</i>?</span></a></dt>
<dd><p>The <b class="cmd">myproc</b> command is used for formatting callback commands to
be passed to other objects.  It returns a command that when called
will invoke the type proc <i class="arg">name</i> with the specified arguments, plus of
course any arguments added by the caller.  In other words, both of the
following commands will cause the object's <b class="method">dosomething</b> proc
to be called when <b class="cmd">$button</b> is pressed:</p>
<pre class="example">    $button configure -command [list ${type}::dosomething myargument]

    $button configure -command [myproc dosomething myargument]
</pre>
</dd>
<dt><a name="63"><b class="cmd">myvar</b> <i class="arg">name</i></a></dt>
<dd><p>Given an instance variable name, returns the fully qualified name.
Use this if you're passing the variable to some other object, e.g., as
a <b class="option">-textvariable</b> to a Tk label widget.</p></dd>
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
If <i class="arg">option</i> doesn't appear in the list, then the <i class="arg">defvalue</i> is
returned.
If the option is locally-defined option, and <i class="arg">defvalue</i> is
not specified, then the option's default value as specified in the
type definition will be returned instead.</p></dd>
<dt><a name="66"><b class="cmd">install</b> <i class="arg">compName</i> <b class="const">using</b> <i class="arg">objType</i> <i class="arg">objName</i> <i class="arg">args...</i></a></dt>
<dd><p>Creates a new object of type <i class="arg">objType</i> called <i class="arg">objName</i>
and installs it as component <i class="arg">compName</i>, 
as described in <span class="sectref"><a href="#subsection7">Components and Delegation</a></span>.  Any additional
<i class="arg">args...</i> are passed along with the name to the <i class="arg">objType</i>
command.
If this is a <b class="cmd">snit::type</b>, then the following two commands are
equivalent:</p>
<pre class="example">    install myComp using myObjType $self.myComp args...
    set myComp [myObjType $self.myComp args...]







|







1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
If <i class="arg">option</i> doesn't appear in the list, then the <i class="arg">defvalue</i> is
returned.
If the option is locally-defined option, and <i class="arg">defvalue</i> is
not specified, then the option's default value as specified in the
type definition will be returned instead.</p></dd>
<dt><a name="66"><b class="cmd">install</b> <i class="arg">compName</i> <b class="const">using</b> <i class="arg">objType</i> <i class="arg">objName</i> <i class="arg">args...</i></a></dt>
<dd><p>Creates a new object of type <i class="arg">objType</i> called <i class="arg">objName</i>
and installs it as component <i class="arg">compName</i>,
as described in <span class="sectref"><a href="#subsection7">Components and Delegation</a></span>.  Any additional
<i class="arg">args...</i> are passed along with the name to the <i class="arg">objType</i>
command.
If this is a <b class="cmd">snit::type</b>, then the following two commands are
equivalent:</p>
<pre class="example">    install myComp using myObjType $self.myComp args...
    set myComp [myObjType $self.myComp args...]
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
with the options, methods, and so forth; such instance variables are
automatically visible in all instance code (e.g., method bodies).  However,
instance code can use the <b class="cmd">variable</b> command to declare instance variables
that don't appear in the type definition, and also to bring variables
from other namespaces into scope in the usual way.</p>
<p>It's generally clearest to define all instance variables in the type
definition, and omit declaring them in methods and so forth.</p>
<p>Note that this is an instance-specific version of the standard Tcl 
<b class="cmd">::variable</b> command.</p></dd>
<dt><a name="70"><b class="cmd">typevariable</b> <i class="arg">name</i></a></dt>
<dd><p>Normally, type variables are defined in the type definition, along
with the instance variables; such type variables are automatically
visible in all of the type's code.  However, type methods, instance
methods and so forth can use <b class="cmd">typevariable</b> to declare type 
variables that don't appear in the type definition.</p>
<p>It's generally clearest to declare all type variables in the type
definition, and omit declaring them in methods, type methods, etc.</p></dd>
<dt><a name="71"><b class="cmd">varname</b> <i class="arg">name</i></a></dt>
<dd><p><b class="const">Deprecated.</b>  Use <b class="cmd">myvar</b> instead.</p>
<p>Given an instance variable name, returns the fully qualified name.
Use this if you're passing the variable to some other object, e.g., as







|





|







1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
with the options, methods, and so forth; such instance variables are
automatically visible in all instance code (e.g., method bodies).  However,
instance code can use the <b class="cmd">variable</b> command to declare instance variables
that don't appear in the type definition, and also to bring variables
from other namespaces into scope in the usual way.</p>
<p>It's generally clearest to define all instance variables in the type
definition, and omit declaring them in methods and so forth.</p>
<p>Note that this is an instance-specific version of the standard Tcl
<b class="cmd">::variable</b> command.</p></dd>
<dt><a name="70"><b class="cmd">typevariable</b> <i class="arg">name</i></a></dt>
<dd><p>Normally, type variables are defined in the type definition, along
with the instance variables; such type variables are automatically
visible in all of the type's code.  However, type methods, instance
methods and so forth can use <b class="cmd">typevariable</b> to declare type
variables that don't appear in the type definition.</p>
<p>It's generally clearest to declare all type variables in the type
definition, and omit declaring them in methods, type methods, etc.</p></dd>
<dt><a name="71"><b class="cmd">varname</b> <i class="arg">name</i></a></dt>
<dd><p><b class="const">Deprecated.</b>  Use <b class="cmd">myvar</b> instead.</p>
<p>Given an instance variable name, returns the fully qualified name.
Use this if you're passing the variable to some other object, e.g., as
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
</dl>
</div>
<div id="subsection7" class="subsection"><h3><a name="subsection7">Components and Delegation</a></h3>
<p>When an object includes other objects, as when a toolbar contains
buttons or a GUI object contains an object that references a database,
the included object is called a component.  The standard way to handle
component objects owned by a Snit object is to declare them using
<b class="cmd">component</b>, which creates a component instance variable.  
In the following example, a <b class="cmd">dog</b> object has a
<b class="cmd">tail</b> object:</p>
<pre class="example">    snit::type dog {
        component mytail
    
        constructor {args} {
            set mytail [tail %AUTO% -partof $self]
            $self configurelist $args
        }
    
        method wag {} {
            $mytail wag
        }
    }
    
    snit::type tail {
        option -length 5
        option -partof
        method wag {} { return &quot;Wag, wag, wag.&quot;}
    }
</pre>
<p>Because the <b class="cmd">tail</b> object's name is stored in an instance







|




<




<




<







1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344

1345
1346
1347
1348

1349
1350
1351
1352

1353
1354
1355
1356
1357
1358
1359
</dl>
</div>
<div id="subsection7" class="subsection"><h3><a name="subsection7">Components and Delegation</a></h3>
<p>When an object includes other objects, as when a toolbar contains
buttons or a GUI object contains an object that references a database,
the included object is called a component.  The standard way to handle
component objects owned by a Snit object is to declare them using
<b class="cmd">component</b>, which creates a component instance variable.
In the following example, a <b class="cmd">dog</b> object has a
<b class="cmd">tail</b> object:</p>
<pre class="example">    snit::type dog {
        component mytail

        constructor {args} {
            set mytail [tail %AUTO% -partof $self]
            $self configurelist $args
        }

        method wag {} {
            $mytail wag
        }
    }

    snit::type tail {
        option -length 5
        option -partof
        method wag {} { return &quot;Wag, wag, wag.&quot;}
    }
</pre>
<p>Because the <b class="cmd">tail</b> object's name is stored in an instance
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
<span class="sectref"><a href="#subsection9">The Tk Option Database</a></span>.</p>
<p>In the above examples, the <b class="cmd">dog</b> object's <b class="method">wag</b> method
simply calls the <b class="cmd">tail</b> component's <b class="method">wag</b> method.  In OO
jargon, this is called delegation.  Snit provides an easier way to do
this:</p>
<pre class="example">    snit::type dog {
        delegate method wag to mytail
    
        constructor {args} {
            install mytail using tail %AUTO% -partof $self
            $self configurelist $args
        }
    }
</pre>
<p>The <b class="cmd">delegate</b> statement in the type definition implicitly defines







<







1377
1378
1379
1380
1381
1382
1383

1384
1385
1386
1387
1388
1389
1390
<span class="sectref"><a href="#subsection9">The Tk Option Database</a></span>.</p>
<p>In the above examples, the <b class="cmd">dog</b> object's <b class="method">wag</b> method
simply calls the <b class="cmd">tail</b> component's <b class="method">wag</b> method.  In OO
jargon, this is called delegation.  Snit provides an easier way to do
this:</p>
<pre class="example">    snit::type dog {
        delegate method wag to mytail

        constructor {args} {
            install mytail using tail %AUTO% -partof $self
            $self configurelist $args
        }
    }
</pre>
<p>The <b class="cmd">delegate</b> statement in the type definition implicitly defines
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
    }
</pre>
<p>In this case, a <b class="cmd">dog</b> object will handle its own <b class="method">bark</b>
method; but <b class="method">wag</b> will be passed along to <b class="cmd">mytail</b>.  Any
other method, being recognized by neither <b class="cmd">dog</b> nor <b class="cmd">tail</b>,
will simply raise an error.</p>
<p>Option delegation is similar to method delegation, except for the
interactions with the Tk option database; this is described in 
<span class="sectref"><a href="#subsection9">The Tk Option Database</a></span>.</p>
</div>
<div id="subsection8" class="subsection"><h3><a name="subsection8">Type Components and Delegation</a></h3>
<p>The relationship between type components and instance components is
identical to that between type variables and instance variables, and
that between type methods and instance methods.  Just as an instance
component is an instance variable that holds the name of a command, so
a type component is a type variable that holds the name of a command.
In essence, a type component is a component that's shared by every
instance of the type.</p>
<p>Just as <b class="cmd">delegate method</b> can be used to delegate methods to
instance components, as described in 
<span class="sectref"><a href="#subsection7">Components and Delegation</a></span>, so <b class="cmd">delegate typemethod</b>
can be used to delegate type methods to type components.</p>
<p>Note also that as of Snit 0.95 <b class="cmd">delegate method</b> can delegate
methods to both instance components and type components.</p>
</div>
<div id="subsection9" class="subsection"><h3><a name="subsection9">The Tk Option Database</a></h3>
<p>This section describes how Snit interacts with the Tk option database,







|











|







1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
    }
</pre>
<p>In this case, a <b class="cmd">dog</b> object will handle its own <b class="method">bark</b>
method; but <b class="method">wag</b> will be passed along to <b class="cmd">mytail</b>.  Any
other method, being recognized by neither <b class="cmd">dog</b> nor <b class="cmd">tail</b>,
will simply raise an error.</p>
<p>Option delegation is similar to method delegation, except for the
interactions with the Tk option database; this is described in
<span class="sectref"><a href="#subsection9">The Tk Option Database</a></span>.</p>
</div>
<div id="subsection8" class="subsection"><h3><a name="subsection8">Type Components and Delegation</a></h3>
<p>The relationship between type components and instance components is
identical to that between type variables and instance variables, and
that between type methods and instance methods.  Just as an instance
component is an instance variable that holds the name of a command, so
a type component is a type variable that holds the name of a command.
In essence, a type component is a component that's shared by every
instance of the type.</p>
<p>Just as <b class="cmd">delegate method</b> can be used to delegate methods to
instance components, as described in
<span class="sectref"><a href="#subsection7">Components and Delegation</a></span>, so <b class="cmd">delegate typemethod</b>
can be used to delegate type methods to type components.</p>
<p>Note also that as of Snit 0.95 <b class="cmd">delegate method</b> can delegate
methods to both instance components and type components.</p>
</div>
<div id="subsection9" class="subsection"><h3><a name="subsection9">The Tk Option Database</a></h3>
<p>This section describes how Snit interacts with the Tk option database,
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
<b class="cmd">cget</b> commands.</p>
<p>The resource and class names are used to initialize option default
values by querying the Tk option database.  The resource name is
usually just the option name minus the hyphen, but may contain
uppercase letters at word boundaries; the class name is usually just
the resource name with an initial capital, but not always.  For
example, here are the option, resource, and class names for several
<b class="cmd"><a href="../../../../index.html#key481">text</a></b> widget options:</p>
<pre class="example">    -background         background         Background 
    -borderwidth        borderWidth        BorderWidth 
    -insertborderwidth  insertBorderWidth  BorderWidth 
    -padx               padX               Pad 
</pre>
<p>As is easily seen, sometimes the resource and class names can be
inferred from the option name, but not always.</p>
<p>Snit options also have a resource name and a class name.  By default,
these names follow the rule given above: the resource name is the
option name without the hyphen, and the class name is the resource
name with an initial capital.  This is true for both locally-defined
options and explicitly delegated options:</p>
<pre class="example">    snit::widget mywidget {
        option -background
        delegate option -borderwidth to hull
        delegate option * to text
	# ...
    }
</pre>
<p>In this case, the widget class name is &quot;Mywidget&quot;.  The widget has the
following options: <b class="option">-background</b>, which is locally defined, and
<b class="option">-borderwidth</b>, which is explicitly delegated; all other widgets are
delegated to a component called &quot;text&quot;, which is probably a Tk
<b class="cmd"><a href="../../../../index.html#key481">text</a></b> widget.  If so, <b class="cmd">mywidget</b> has all the same options as
a <b class="cmd"><a href="../../../../index.html#key481">text</a></b> widget.  The option, resource, and class names are as
follows:</p>
<pre class="example">    -background  background  Background
    -borderwidth borderwidth Borderwidth
    -padx        padX        Pad
</pre>
<p>Note that the locally defined option, <b class="option">-background</b>, happens to have
the same three names as the standard Tk <b class="option">-background</b> option; and
<b class="option">-pad</b>, which is delegated implicitly to the <b class="variable">text</b>
component, has the
same three names for <b class="cmd">mywidget</b> as it does for the <b class="cmd"><a href="../../../../index.html#key481">text</a></b>
widget.  <b class="option">-borderwidth</b>, on the other hand, has different resource and
class names than usual, because the internal word &quot;width&quot; isn't
capitalized.  For consistency, it should be; this is done as follows:</p>
<pre class="example">    snit::widget mywidget {
	option -background
	delegate option {-borderwidth borderWidth} to hull
	delegate option * to text
	# ...
    }
</pre>
<p>The class name will default to &quot;BorderWidth&quot;, as expected.</p>
<p>Suppose, however, that <b class="cmd">mywidget</b> also delegated 
<b class="option">-padx</b> and
<b class="option">-pady</b> to the hull.  In this case, both the resource name and the
class name must be specified explicitly:</p>
<pre class="example">    snit::widget mywidget {
	option -background
	delegate option {-borderwidth borderWidth} to hull
	delegate option {-padx padX Pad} to hull







|
|
|
|
|



















|
|









|











|







1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
<b class="cmd">cget</b> commands.</p>
<p>The resource and class names are used to initialize option default
values by querying the Tk option database.  The resource name is
usually just the option name minus the hyphen, but may contain
uppercase letters at word boundaries; the class name is usually just
the resource name with an initial capital, but not always.  For
example, here are the option, resource, and class names for several
<b class="cmd"><a href="../../../../index.html#key480">text</a></b> widget options:</p>
<pre class="example">    -background         background         Background
    -borderwidth        borderWidth        BorderWidth
    -insertborderwidth  insertBorderWidth  BorderWidth
    -padx               padX               Pad
</pre>
<p>As is easily seen, sometimes the resource and class names can be
inferred from the option name, but not always.</p>
<p>Snit options also have a resource name and a class name.  By default,
these names follow the rule given above: the resource name is the
option name without the hyphen, and the class name is the resource
name with an initial capital.  This is true for both locally-defined
options and explicitly delegated options:</p>
<pre class="example">    snit::widget mywidget {
        option -background
        delegate option -borderwidth to hull
        delegate option * to text
	# ...
    }
</pre>
<p>In this case, the widget class name is &quot;Mywidget&quot;.  The widget has the
following options: <b class="option">-background</b>, which is locally defined, and
<b class="option">-borderwidth</b>, which is explicitly delegated; all other widgets are
delegated to a component called &quot;text&quot;, which is probably a Tk
<b class="cmd"><a href="../../../../index.html#key480">text</a></b> widget.  If so, <b class="cmd">mywidget</b> has all the same options as
a <b class="cmd"><a href="../../../../index.html#key480">text</a></b> widget.  The option, resource, and class names are as
follows:</p>
<pre class="example">    -background  background  Background
    -borderwidth borderwidth Borderwidth
    -padx        padX        Pad
</pre>
<p>Note that the locally defined option, <b class="option">-background</b>, happens to have
the same three names as the standard Tk <b class="option">-background</b> option; and
<b class="option">-pad</b>, which is delegated implicitly to the <b class="variable">text</b>
component, has the
same three names for <b class="cmd">mywidget</b> as it does for the <b class="cmd"><a href="../../../../index.html#key480">text</a></b>
widget.  <b class="option">-borderwidth</b>, on the other hand, has different resource and
class names than usual, because the internal word &quot;width&quot; isn't
capitalized.  For consistency, it should be; this is done as follows:</p>
<pre class="example">    snit::widget mywidget {
	option -background
	delegate option {-borderwidth borderWidth} to hull
	delegate option * to text
	# ...
    }
</pre>
<p>The class name will default to &quot;BorderWidth&quot;, as expected.</p>
<p>Suppose, however, that <b class="cmd">mywidget</b> also delegated
<b class="option">-padx</b> and
<b class="option">-pady</b> to the hull.  In this case, both the resource name and the
class name must be specified explicitly:</p>
<pre class="example">    snit::widget mywidget {
	option -background
	delegate option {-borderwidth borderWidth} to hull
	delegate option {-padx padX Pad} to hull
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
<p>The question is, what are the values of variables A, B, C and D?</p>
<p>The value of A is &quot;sunken&quot;.  The hull is a Tk frame that has been
given the widget class &quot;Mywidget&quot;; it will automatically query the
option database and pick up this value.  Since the <b class="option">-relief</b>
option is implicitly delegated to the hull, Snit takes no action.</p>
<p>The value of B is &quot;red&quot;.  The hull will automatically pick up the
value &quot;green&quot; for its <b class="option">-background</b> option, just as it picked up the
<b class="option">-relief</b> value.  However, Snit knows that 
<b class="option">-hullbackground</b> is mapped to
the hull's <b class="option">-background</b> option; hence, it queries the option database
for <b class="option">-hullbackground</b> and gets &quot;red&quot; and updates the hull 
accordingly.</p>
<p>The value of C is also &quot;red&quot;, because <b class="option">-background</b> is implicitly
delegated to the hull; thus, retrieving it is the same as retrieving
<b class="option">-hullbackground</b>.  Note that this case is unusual; in practice,
<b class="option">-background</b> would probably be explicitly delegated to some other
component.</p>
<p>The value of D is &quot;5&quot;, but not for the reason you think.  Note that as
it is defined above, the resource name for <b class="option">-borderwidth</b>
defaults to &quot;borderwidth&quot;, whereas the option database entry is 
&quot;borderWidth&quot;.  As with <b class="option">-relief</b>, the hull picks up its 
own <b class="option">-borderwidth</b> option before Snit does anything.  Because the
option is delegated under its own name, Snit assumes that the correct 
thing has happened, and doesn't worry about it any further.</p>
<p>For <b class="cmd">snit::widgetadaptor</b>s, the case is somewhat altered.  Widget
adaptors retain the widget class of their hull, and the hull is not
created automatically by Snit.  Instead, the <b class="cmd">snit::widgetadaptor</b>
must call <b class="cmd">installhull</b> in its constructor.  The normal way to do
this is as follows:</p>
<pre class="example">    snit::widgetadaptor mywidget {
	# ...
	constructor {args} {
	    # ...
	    installhull using text -foreground white
	    #
	}
	#...
    }
</pre>
<p>In this case, the <b class="cmd">installhull</b> command will create the hull using
a command like this:</p>
<pre class="example">    set hull [text $win -foreground white]
</pre>
<p>The hull is a <b class="cmd"><a href="../../../../index.html#key481">text</a></b> widget, so its widget class is &quot;Text&quot;.  Just
as with <b class="cmd">snit::widget</b> hulls, Snit assumes that it will pick up
all of its normal option values automatically; options delegated from
a different name are initialized from the option database in the same
way.</p>
<p><b class="const">Initializing options delegated to other components:</b>
Non-hull components are matched against the option database in two
ways.  First, a component widget remains a widget still, and therefore







|


|








|
|

|




















|







1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
<p>The question is, what are the values of variables A, B, C and D?</p>
<p>The value of A is &quot;sunken&quot;.  The hull is a Tk frame that has been
given the widget class &quot;Mywidget&quot;; it will automatically query the
option database and pick up this value.  Since the <b class="option">-relief</b>
option is implicitly delegated to the hull, Snit takes no action.</p>
<p>The value of B is &quot;red&quot;.  The hull will automatically pick up the
value &quot;green&quot; for its <b class="option">-background</b> option, just as it picked up the
<b class="option">-relief</b> value.  However, Snit knows that
<b class="option">-hullbackground</b> is mapped to
the hull's <b class="option">-background</b> option; hence, it queries the option database
for <b class="option">-hullbackground</b> and gets &quot;red&quot; and updates the hull
accordingly.</p>
<p>The value of C is also &quot;red&quot;, because <b class="option">-background</b> is implicitly
delegated to the hull; thus, retrieving it is the same as retrieving
<b class="option">-hullbackground</b>.  Note that this case is unusual; in practice,
<b class="option">-background</b> would probably be explicitly delegated to some other
component.</p>
<p>The value of D is &quot;5&quot;, but not for the reason you think.  Note that as
it is defined above, the resource name for <b class="option">-borderwidth</b>
defaults to &quot;borderwidth&quot;, whereas the option database entry is
&quot;borderWidth&quot;.  As with <b class="option">-relief</b>, the hull picks up its
own <b class="option">-borderwidth</b> option before Snit does anything.  Because the
option is delegated under its own name, Snit assumes that the correct
thing has happened, and doesn't worry about it any further.</p>
<p>For <b class="cmd">snit::widgetadaptor</b>s, the case is somewhat altered.  Widget
adaptors retain the widget class of their hull, and the hull is not
created automatically by Snit.  Instead, the <b class="cmd">snit::widgetadaptor</b>
must call <b class="cmd">installhull</b> in its constructor.  The normal way to do
this is as follows:</p>
<pre class="example">    snit::widgetadaptor mywidget {
	# ...
	constructor {args} {
	    # ...
	    installhull using text -foreground white
	    #
	}
	#...
    }
</pre>
<p>In this case, the <b class="cmd">installhull</b> command will create the hull using
a command like this:</p>
<pre class="example">    set hull [text $win -foreground white]
</pre>
<p>The hull is a <b class="cmd"><a href="../../../../index.html#key480">text</a></b> widget, so its widget class is &quot;Text&quot;.  Just
as with <b class="cmd">snit::widget</b> hulls, Snit assumes that it will pick up
all of its normal option values automatically; options delegated from
a different name are initialized from the option database in the same
way.</p>
<p><b class="const">Initializing options delegated to other components:</b>
Non-hull components are matched against the option database in two
ways.  First, a component widget remains a widget still, and therefore
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
        mypkg::property mood happy
    }
</pre>
<p>This leaves the global namespace open for application authors.</p>
</div>
<div id="subsection11" class="subsection"><h3><a name="subsection11">Validation Types</a></h3>
<p>A validation type is an object that can be used to validate
Tcl values of a particular kind.  For example, 
<b class="cmd">snit::integer</b> is used to validate that a Tcl value is
an integer.</p>
<p>Every validation type has a <b class="method">validate</b> method which is used to
do the validation. This method must take a single argument, the value
to be validated; further, it must do nothing if the value is valid,
but throw an error if the value is invalid:</p>
<pre class="example">    snit::integer validate 5     ;# Does nothing







|







1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
        mypkg::property mood happy
    }
</pre>
<p>This leaves the global namespace open for application authors.</p>
</div>
<div id="subsection11" class="subsection"><h3><a name="subsection11">Validation Types</a></h3>
<p>A validation type is an object that can be used to validate
Tcl values of a particular kind.  For example,
<b class="cmd">snit::integer</b> is used to validate that a Tcl value is
an integer.</p>
<p>Every validation type has a <b class="method">validate</b> method which is used to
do the validation. This method must take a single argument, the value
to be validated; further, it must do nothing if the value is valid,
but throw an error if the value is invalid:</p>
<pre class="example">    snit::integer validate 5     ;# Does nothing
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
<pre class="example">    snit::enum ::dog::breed -values {mutt retriever sheepdog}
    snit::type dog {
        # Define subtypes on the fly...
        option -breed -type {
            snit::enum -values {mutt retriever sheepdog}
        }
        # Or use predefined subtypes...
        option -breed -type ::dog::breed 
    }
</pre>
<p>Any object that has a <b class="method">validate</b> method with the semantics
described above can be used as a validation type; see 
<span class="sectref"><a href="#subsection12">Defining Validation Types</a></span> for information on how to define
new ones.</p>
<p>Snit defines the following validation types:</p>
<dl class="definitions">
<dt><a name="74"><b class="cmd">snit::boolean</b> <b class="const">validate</b> <span class="opt">?<i class="arg">value</i>?</span></a></dt>
<dd></dd>
<dt><a name="75"><b class="cmd">snit::boolean</b> <i class="arg">name</i></a></dt>







|



|







1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
<pre class="example">    snit::enum ::dog::breed -values {mutt retriever sheepdog}
    snit::type dog {
        # Define subtypes on the fly...
        option -breed -type {
            snit::enum -values {mutt retriever sheepdog}
        }
        # Or use predefined subtypes...
        option -breed -type ::dog::breed
    }
</pre>
<p>Any object that has a <b class="method">validate</b> method with the semantics
described above can be used as a validation type; see
<span class="sectref"><a href="#subsection12">Defining Validation Types</a></span> for information on how to define
new ones.</p>
<p>Snit defines the following validation types:</p>
<dl class="definitions">
<dt><a name="74"><b class="cmd">snit::boolean</b> <b class="const">validate</b> <span class="opt">?<i class="arg">value</i>?</span></a></dt>
<dd></dd>
<dt><a name="75"><b class="cmd">snit::boolean</b> <i class="arg">name</i></a></dt>
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
<dt><a name="81"><b class="cmd">snit::fpixels</b> <i class="arg">name</i> <span class="opt">?<i class="arg">option</i> <i class="arg">value</i>...?</span></a></dt>
<dd><p><em>Tk programs only.</em> Validates screen distances, in any of the
forms accepted by <b class="cmd">winfo fpixels</b>. Subtypes may be created with the
following options:</p>
<dl class="definitions">
<dt><b class="const">-min</b> <i class="arg">min</i></dt>
<dd><p>Specifies a minimum bound; a value is invalid if it is strictly
less than <i class="arg">min</i>.  The bound may be expressed in any of the 
forms accepted by <b class="cmd">winfo fpixels</b>.</p></dd>
<dt><b class="const">-max</b> <i class="arg">max</i></dt>
<dd><p>Specifies a maximum bound; a value is invalid if it is strictly
greater than <i class="arg">max</i>.  The bound may be expressed in any of the 
forms accepted by <b class="cmd">winfo fpixels</b>.</p></dd>
</dl></dd>
<dt><a name="82"><b class="cmd">snit::integer</b> <b class="const">validate</b> <span class="opt">?<i class="arg">value</i>?</span></a></dt>
<dd></dd>
<dt><a name="83"><b class="cmd">snit::integer</b> <i class="arg">name</i> <span class="opt">?<i class="arg">option</i> <i class="arg">value</i>...?</span></a></dt>
<dd><p>Validates integer values.  Subtypes may be created with the
following options:</p>







|



|







1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
<dt><a name="81"><b class="cmd">snit::fpixels</b> <i class="arg">name</i> <span class="opt">?<i class="arg">option</i> <i class="arg">value</i>...?</span></a></dt>
<dd><p><em>Tk programs only.</em> Validates screen distances, in any of the
forms accepted by <b class="cmd">winfo fpixels</b>. Subtypes may be created with the
following options:</p>
<dl class="definitions">
<dt><b class="const">-min</b> <i class="arg">min</i></dt>
<dd><p>Specifies a minimum bound; a value is invalid if it is strictly
less than <i class="arg">min</i>.  The bound may be expressed in any of the
forms accepted by <b class="cmd">winfo fpixels</b>.</p></dd>
<dt><b class="const">-max</b> <i class="arg">max</i></dt>
<dd><p>Specifies a maximum bound; a value is invalid if it is strictly
greater than <i class="arg">max</i>.  The bound may be expressed in any of the
forms accepted by <b class="cmd">winfo fpixels</b>.</p></dd>
</dl></dd>
<dt><a name="82"><b class="cmd">snit::integer</b> <b class="const">validate</b> <span class="opt">?<i class="arg">value</i>?</span></a></dt>
<dd></dd>
<dt><a name="83"><b class="cmd">snit::integer</b> <i class="arg">name</i> <span class="opt">?<i class="arg">option</i> <i class="arg">value</i>...?</span></a></dt>
<dd><p>Validates integer values.  Subtypes may be created with the
following options:</p>
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
<dd><p>Validates Tcl lists. Subtypes may be created with the
following options:</p>
<dl class="definitions">
<dt><b class="const">-minlen</b> <i class="arg">min</i></dt>
<dd><p>Specifies a minimum list length; the value is invalid if it has
fewer than <i class="arg">min</i> elements.  Defaults to 0.</p></dd>
<dt><b class="const">-maxlen</b> <i class="arg">max</i></dt>
<dd><p>Specifies a maximum list length; the value is invalid if it 
more than <i class="arg">max</i> elements.</p></dd>
<dt><b class="const">-type</b> <i class="arg">type</i></dt>
<dd><p>Specifies the type of the list elements; <i class="arg">type</i> must be
the name of a validation type or subtype.  In the
following example, the value of <b class="const">-numbers</b> must be a list
of integers.</p>
<pre class="example">    option -numbers -type {snit::listtype -type snit::integer}







|







1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
<dd><p>Validates Tcl lists. Subtypes may be created with the
following options:</p>
<dl class="definitions">
<dt><b class="const">-minlen</b> <i class="arg">min</i></dt>
<dd><p>Specifies a minimum list length; the value is invalid if it has
fewer than <i class="arg">min</i> elements.  Defaults to 0.</p></dd>
<dt><b class="const">-maxlen</b> <i class="arg">max</i></dt>
<dd><p>Specifies a maximum list length; the value is invalid if it
more than <i class="arg">max</i> elements.</p></dd>
<dt><b class="const">-type</b> <i class="arg">type</i></dt>
<dd><p>Specifies the type of the list elements; <i class="arg">type</i> must be
the name of a validation type or subtype.  In the
following example, the value of <b class="const">-numbers</b> must be a list
of integers.</p>
<pre class="example">    option -numbers -type {snit::listtype -type snit::integer}
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
<dt><a name="87"><b class="cmd">snit::pixels</b> <i class="arg">name</i> <span class="opt">?<i class="arg">option</i> <i class="arg">value</i>...?</span></a></dt>
<dd><p><em>Tk programs only.</em> Validates screen distances, in any of the
forms accepted by <b class="cmd">winfo pixels</b>. Subtypes may be created with the
following options:</p>
<dl class="definitions">
<dt><b class="const">-min</b> <i class="arg">min</i></dt>
<dd><p>Specifies a minimum bound; a value is invalid if it is strictly
less than <i class="arg">min</i>.  The bound may be expressed in any of the 
forms accepted by <b class="cmd">winfo pixels</b>.</p></dd>
<dt><b class="const">-max</b> <i class="arg">max</i></dt>
<dd><p>Specifies a maximum bound; a value is invalid if it is strictly
greater than <i class="arg">max</i>.  The bound may be expressed in any of the 
forms accepted by <b class="cmd">winfo pixels</b>.</p></dd>
</dl></dd>
<dt><a name="88"><b class="cmd">snit::stringtype</b> <b class="const">validate</b> <span class="opt">?<i class="arg">value</i>?</span></a></dt>
<dd></dd>
<dt><a name="89"><b class="cmd">snit::stringtype</b> <i class="arg">name</i> <span class="opt">?<i class="arg">option</i> <i class="arg">value</i>...?</span></a></dt>
<dd><p>Validates Tcl strings. The base type is of little use by itself,
since very Tcl value is also a valid string.  Subtypes may be created with the







|



|







1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
<dt><a name="87"><b class="cmd">snit::pixels</b> <i class="arg">name</i> <span class="opt">?<i class="arg">option</i> <i class="arg">value</i>...?</span></a></dt>
<dd><p><em>Tk programs only.</em> Validates screen distances, in any of the
forms accepted by <b class="cmd">winfo pixels</b>. Subtypes may be created with the
following options:</p>
<dl class="definitions">
<dt><b class="const">-min</b> <i class="arg">min</i></dt>
<dd><p>Specifies a minimum bound; a value is invalid if it is strictly
less than <i class="arg">min</i>.  The bound may be expressed in any of the
forms accepted by <b class="cmd">winfo pixels</b>.</p></dd>
<dt><b class="const">-max</b> <i class="arg">max</i></dt>
<dd><p>Specifies a maximum bound; a value is invalid if it is strictly
greater than <i class="arg">max</i>.  The bound may be expressed in any of the
forms accepted by <b class="cmd">winfo pixels</b>.</p></dd>
</dl></dd>
<dt><a name="88"><b class="cmd">snit::stringtype</b> <b class="const">validate</b> <span class="opt">?<i class="arg">value</i>?</span></a></dt>
<dd></dd>
<dt><a name="89"><b class="cmd">snit::stringtype</b> <i class="arg">name</i> <span class="opt">?<i class="arg">option</i> <i class="arg">value</i>...?</span></a></dt>
<dd><p>Validates Tcl strings. The base type is of little use by itself,
since very Tcl value is also a valid string.  Subtypes may be created with the
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
</dl></dd>
<dt><a name="90"><b class="cmd">snit::window</b> <b class="const">validate</b> <span class="opt">?<i class="arg">value</i>?</span></a></dt>
<dd></dd>
<dt><a name="91"><b class="cmd">snit::window</b> <i class="arg">name</i></a></dt>
<dd><p><em>Tk programs only.</em>  Validates Tk window names.  The value must
cause <b class="cmd">winfo exists</b> to return true; otherwise, the value is
invalid.  It's possible to define subtypes--that is, instances--of
<b class="cmd">snit::window</b>, but as it has no options at present there's no 
reason to do so.</p></dd>
</dl>
</div>
<div id="subsection12" class="subsection"><h3><a name="subsection12">Defining Validation Types</a></h3>
<p>There are three ways to define a new validation type: as a subtype of
one of Snit's validation types, as a validation type command, and as
a full-fledged validation type similar to those provided by Snit.
Defining subtypes of Snit's validation types is described above,
under <span class="sectref"><a href="#subsection11">Validation Types</a></span>.</p>
<p>The next simplest way to create a new validation type is as a 
validation type command.  A validation type is simply an
object that has a <b class="method">validate</b> method; the <b class="method">validate</b>
method must take one argument, a value, return the value if it is
valid, and throw an error with <b class="cmd">-errorcode</b> INVALID if the
value is invalid.  This can be done with a simple <b class="cmd"><a href="../../../../index.html#key570">proc</a></b>.  For
example, the <b class="cmd">snit::boolean</b> validate type could have been
implemented like this:</p>
<pre class="example">    proc ::snit::boolean {&quot;validate&quot; value} {
        if {![string is boolean -strict $value]} {
            return -code error -errorcode INVALID \ 
                &quot;invalid boolean \&quot;$value\&quot;, should be one of: 1, 0, ...&quot;
        }
        return $value
    }
</pre>
<p>A validation type defined in this way cannot be subtyped, of course;
but for many applications this will be sufficient.</p>
<p>Finally, one can define a full-fledged, subtype-able validation type
as a <b class="cmd">snit::type</b>.  Here's a skeleton to get you started:</p>
<pre class="example">    snit::type myinteger {
        # First, define any options you'd like to use to define
        # subtypes.  Give them defaults such that they won't take
        # effect if they aren't used, and marked them &quot;read-only&quot;.
        # After all, you shouldn't be changing their values after
        # a subtype is defined.
        #
        # For example:
        option -min -default &quot;&quot; -readonly 1
        option -max -default &quot;&quot; -readonly 1
        # Next, define a &quot;validate&quot; type method which should do the
        # validation in the basic case.  This will allow the
        # type command to be used as a validation type.  
        typemethod validate {value} {
            if {![string is integer -strict $value]} {
                return -code error -errorcode INVALID \ 
                    &quot;invalid value \&quot;$value\&quot;, expected integer&quot;
            }
            return $value
        }
        # Next, the constructor should validate the subtype options,
        # if any.  Since they are all readonly, we don't need to worry
        # about validating the options on change.
        constructor {args} {







|









|









<
|




















|


|
<







1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942

1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967

1968
1969
1970
1971
1972
1973
1974
</dl></dd>
<dt><a name="90"><b class="cmd">snit::window</b> <b class="const">validate</b> <span class="opt">?<i class="arg">value</i>?</span></a></dt>
<dd></dd>
<dt><a name="91"><b class="cmd">snit::window</b> <i class="arg">name</i></a></dt>
<dd><p><em>Tk programs only.</em>  Validates Tk window names.  The value must
cause <b class="cmd">winfo exists</b> to return true; otherwise, the value is
invalid.  It's possible to define subtypes--that is, instances--of
<b class="cmd">snit::window</b>, but as it has no options at present there's no
reason to do so.</p></dd>
</dl>
</div>
<div id="subsection12" class="subsection"><h3><a name="subsection12">Defining Validation Types</a></h3>
<p>There are three ways to define a new validation type: as a subtype of
one of Snit's validation types, as a validation type command, and as
a full-fledged validation type similar to those provided by Snit.
Defining subtypes of Snit's validation types is described above,
under <span class="sectref"><a href="#subsection11">Validation Types</a></span>.</p>
<p>The next simplest way to create a new validation type is as a
validation type command.  A validation type is simply an
object that has a <b class="method">validate</b> method; the <b class="method">validate</b>
method must take one argument, a value, return the value if it is
valid, and throw an error with <b class="cmd">-errorcode</b> INVALID if the
value is invalid.  This can be done with a simple <b class="cmd"><a href="../../../../index.html#key570">proc</a></b>.  For
example, the <b class="cmd">snit::boolean</b> validate type could have been
implemented like this:</p>
<pre class="example">    proc ::snit::boolean {&quot;validate&quot; value} {
        if {![string is boolean -strict $value]} {

            return -code error -errorcode INVALID  &quot;invalid boolean \&quot;$value\&quot;, should be one of: 1, 0, ...&quot;
        }
        return $value
    }
</pre>
<p>A validation type defined in this way cannot be subtyped, of course;
but for many applications this will be sufficient.</p>
<p>Finally, one can define a full-fledged, subtype-able validation type
as a <b class="cmd">snit::type</b>.  Here's a skeleton to get you started:</p>
<pre class="example">    snit::type myinteger {
        # First, define any options you'd like to use to define
        # subtypes.  Give them defaults such that they won't take
        # effect if they aren't used, and marked them &quot;read-only&quot;.
        # After all, you shouldn't be changing their values after
        # a subtype is defined.
        #
        # For example:
        option -min -default &quot;&quot; -readonly 1
        option -max -default &quot;&quot; -readonly 1
        # Next, define a &quot;validate&quot; type method which should do the
        # validation in the basic case.  This will allow the
        # type command to be used as a validation type.
        typemethod validate {value} {
            if {![string is integer -strict $value]} {
                return -code error -errorcode INVALID  &quot;invalid value \&quot;$value\&quot;, expected integer&quot;

            }
            return $value
        }
        # Next, the constructor should validate the subtype options,
        # if any.  Since they are all readonly, we don't need to worry
        # about validating the options on change.
        constructor {args} {
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
            $type validate $value
            # Now we know it's a valid integer.
            if {(&quot;&quot; != $options(-min) &amp;&amp; $value &lt; $options(-min))  ||
                (&quot;&quot; != $options(-max) &amp;&amp; $value &gt; $options(-max))} {
                # It's out of range; format a detailed message about
                # the error, and throw it.
                set msg &quot;....&quot;
                
                return -code error -errorcode INVALID $msg
            }
            # Otherwise, if it's valid just return it.
            return $valid
        }
    }
</pre>
<p>And now you have a type that can be subtyped.</p>
<p>The file &quot;validate.tcl&quot; in the Snit distribution defines all of Snit's
validation types; you can find the complete implementation for 
<b class="cmd">snit::integer</b> and the other types there, to use as examples for
your own types.</p>
</div>
</div>
<div id="section4" class="section"><h2><a name="section4">CAVEATS</a></h2>
<p>If you have problems, find bugs, or new ideas you are hereby cordially
invited to submit a report of your problem, bug, or idea at the
SourceForge trackers for tcllib, which can be found at
<a href="http://sourceforge.net/projects/tcllib/">http://sourceforge.net/projects/tcllib/</a>.
The relevant category is <em>snit</em>.</p>
<p>Additionally, you might wish to join the Snit mailing list;
see <a href="http://www.wjduquette.com/snit">http://www.wjduquette.com/snit</a> for details.</p>
<p>One particular area to watch is using <b class="cmd">snit::widgetadaptor</b> to
adapt megawidgets created by other megawidget packages; correct
widget destruction depends on the order of the &lt;Destroy&gt; bindings.
The wisest course is simply not to do this.</p>
</div>
<div id="section5" class="section"><h2><a name="section5">KNOWN BUGS</a></h2>
<ul class="itemized">
<li><p>Error stack traces returned by Snit 1.x are extremely ugly and typically
contain far too much information about Snit internals.  The error
messages are much improved in Snit 2.2.</p></li>
<li><p>Also see the SourceForge Trackers at
<a href="http://sourceforge.net/projects/tcllib/">http://sourceforge.net/projects/tcllib/</a>, category <em>snit</em>.</p></li>
</ul>
</div>
<div id="section6" class="section"><h2><a name="section6">HISTORY</a></h2>
<p>During the course of developing Notebook
(See <a href="http://www.wjduquette.com/notebook">http://www.wjduquette.com/notebook</a>), my Tcl-based personal
notebook application, I found I was writing it as a collection of
objects.  I wasn't using any particular object-oriented framework; I







<









|






|
|
<
<












|
|







1984
1985
1986
1987
1988
1989
1990

1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008


2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
            $type validate $value
            # Now we know it's a valid integer.
            if {(&quot;&quot; != $options(-min) &amp;&amp; $value &lt; $options(-min))  ||
                (&quot;&quot; != $options(-max) &amp;&amp; $value &gt; $options(-max))} {
                # It's out of range; format a detailed message about
                # the error, and throw it.
                set msg &quot;....&quot;

                return -code error -errorcode INVALID $msg
            }
            # Otherwise, if it's valid just return it.
            return $valid
        }
    }
</pre>
<p>And now you have a type that can be subtyped.</p>
<p>The file &quot;validate.tcl&quot; in the Snit distribution defines all of Snit's
validation types; you can find the complete implementation for
<b class="cmd">snit::integer</b> and the other types there, to use as examples for
your own types.</p>
</div>
</div>
<div id="section4" class="section"><h2><a name="section4">CAVEATS</a></h2>
<p>If you have problems, find bugs, or new ideas you are hereby cordially
invited to submit a report of your problem, bug, or idea as explained
in the section <span class="sectref"><a href="#section8">Bugs, Ideas, Feedback</a></span> below.</p>


<p>Additionally, you might wish to join the Snit mailing list;
see <a href="http://www.wjduquette.com/snit">http://www.wjduquette.com/snit</a> for details.</p>
<p>One particular area to watch is using <b class="cmd">snit::widgetadaptor</b> to
adapt megawidgets created by other megawidget packages; correct
widget destruction depends on the order of the &lt;Destroy&gt; bindings.
The wisest course is simply not to do this.</p>
</div>
<div id="section5" class="section"><h2><a name="section5">KNOWN BUGS</a></h2>
<ul class="itemized">
<li><p>Error stack traces returned by Snit 1.x are extremely ugly and typically
contain far too much information about Snit internals.  The error
messages are much improved in Snit 2.2.</p></li>
<li><p>Also see the Project Trackers as explained in the section
<span class="sectref"><a href="#section8">Bugs, Ideas, Feedback</a></span> below.</p></li>
</ul>
</div>
<div id="section6" class="section"><h2><a name="section6">HISTORY</a></h2>
<p>During the course of developing Notebook
(See <a href="http://www.wjduquette.com/notebook">http://www.wjduquette.com/notebook</a>), my Tcl-based personal
notebook application, I found I was writing it as a collection of
objects.  I wasn't using any particular object-oriented framework; I
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
Snit home page (see <a href="http://www.wjduquette.com/snit">http://www.wjduquette.com/snit</a>).</p>
</div>
<div id="section7" class="section"><h2><a name="section7">CREDITS</a></h2>
<p>Snit has been designed and implemented from the very beginning by
William H. Duquette.  However, much credit belongs to the following
people for using Snit and providing me with valuable feedback: Rolf
Ade, Colin McCormack, Jose Nazario, Jeff Godfrey, Maurice Diamanti,
Egon Pasztor, David S. Cargo, Tom Krehbiel, Michael Cleverly, 
Andreas Kupries, Marty Backe, Andy Goth, Jeff Hobbs, Brian
Griffin, Donal Fellows, Miguel Sofer, Kenneth Green, 
and Anton Kovalenko.  
If I've forgotten anyone, my apologies; let me know and I'll add 
your name to the list.</p>
</div>
<div id="section8" class="section"><h2><a name="section8">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>snit</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key235">BWidget</a>, <a href="../../../../index.html#key230">C++</a>, <a href="../../../../index.html#key237">Incr Tcl</a>, <a href="../../../../index.html#key779">Snit</a>, <a href="../../../../index.html#key234">adaptors</a>, <a href="../../../../index.html#key236">class</a>, <a href="../../../../index.html#key232">mega widget</a>, <a href="../../../../index.html#key238">object</a>, <a href="../../../../index.html#key231">object oriented</a>, <a href="../../../../index.html#key124">type</a>, <a href="../../../../index.html#key229">widget</a>, <a href="../../../../index.html#key233">widget adaptors</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003-2009, by William H. Duquette</p>
</div>
</div></body></html>







|

|
|
|


|



|




|








2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
Snit home page (see <a href="http://www.wjduquette.com/snit">http://www.wjduquette.com/snit</a>).</p>
</div>
<div id="section7" class="section"><h2><a name="section7">CREDITS</a></h2>
<p>Snit has been designed and implemented from the very beginning by
William H. Duquette.  However, much credit belongs to the following
people for using Snit and providing me with valuable feedback: Rolf
Ade, Colin McCormack, Jose Nazario, Jeff Godfrey, Maurice Diamanti,
Egon Pasztor, David S. Cargo, Tom Krehbiel, Michael Cleverly,
Andreas Kupries, Marty Backe, Andy Goth, Jeff Hobbs, Brian
Griffin, Donal Fellows, Miguel Sofer, Kenneth Green,
and Anton Kovalenko.
If I've forgotten anyone, my apologies; let me know and I'll add
your name to the list.</p>
</div>
<div id="section8" class="section"><h2><a name="section8">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>snit</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key235">BWidget</a>, <a href="../../../../index.html#key231">C++</a>, <a href="../../../../index.html#key238">Incr Tcl</a>, <a href="../../../../index.html#key779">Snit</a>, <a href="../../../../index.html#key236">adaptors</a>, <a href="../../../../index.html#key234">class</a>, <a href="../../../../index.html#key233">mega widget</a>, <a href="../../../../index.html#key237">object</a>, <a href="../../../../index.html#key230">object oriented</a>, <a href="../../../../index.html#key123">type</a>, <a href="../../../../index.html#key229">widget</a>, <a href="../../../../index.html#key232">widget adaptors</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003-2009, by William H. Duquette</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/snit/snitfaq.html.

358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
<li class="subsection"><a href="#subsection158">What is a macro?</a></li>
<li class="subsection"><a href="#subsection159">What are macros good for?</a></li>
<li class="subsection"><a href="#subsection160">How do I do conditional compilation?</a></li>
<li class="subsection"><a href="#subsection161">How do I define new type definition syntax?</a></li>
<li class="subsection"><a href="#subsection162">Are there are restrictions on macro names?</a></li>
</ul>
</li>
<li class="section"><a href="#section23">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
</div>
<div id="section2" class="section"><h2><a name="section2">OVERVIEW</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">What is this document?</a></h3>
<p>This is an atypical FAQ list, in that few of the questions are
frequently asked.  Rather, these are the questions I think a newcomer
to Snit should be asking.  This file is not a complete reference to
Snit, however; that information is in the <b class="cmd"><a href="snit.html">snit</a></b> man page.</p>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">What is Snit?</a></h3>
<p>Snit is a framework for defining abstract data types and megawidgets
in pure Tcl.  The name &quot;Snit&quot; stands for &quot;Snit's Not Incr Tcl&quot;, 
signifying that Snit takes a different approach to defining objects 
than does Incr Tcl, the best known object framework for Tcl.  Had
I realized that Snit would become at all popular, I'd probably have
chosen something else.</p>
<p>The primary purpose of Snit is to be <i class="term">object glue</i>--to help you
compose diverse objects from diverse sources into types and
megawidgets with clean, convenient interfaces so that you can more
easily build your application.</p>







|
















|
|







358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
<li class="subsection"><a href="#subsection158">What is a macro?</a></li>
<li class="subsection"><a href="#subsection159">What are macros good for?</a></li>
<li class="subsection"><a href="#subsection160">How do I do conditional compilation?</a></li>
<li class="subsection"><a href="#subsection161">How do I define new type definition syntax?</a></li>
<li class="subsection"><a href="#subsection162">Are there are restrictions on macro names?</a></li>
</ul>
</li>
<li class="section"><a href="#section23">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
</div>
<div id="section2" class="section"><h2><a name="section2">OVERVIEW</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">What is this document?</a></h3>
<p>This is an atypical FAQ list, in that few of the questions are
frequently asked.  Rather, these are the questions I think a newcomer
to Snit should be asking.  This file is not a complete reference to
Snit, however; that information is in the <b class="cmd"><a href="snit.html">snit</a></b> man page.</p>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">What is Snit?</a></h3>
<p>Snit is a framework for defining abstract data types and megawidgets
in pure Tcl.  The name &quot;Snit&quot; stands for &quot;Snit's Not Incr Tcl&quot;,
signifying that Snit takes a different approach to defining objects
than does Incr Tcl, the best known object framework for Tcl.  Had
I realized that Snit would become at all popular, I'd probably have
chosen something else.</p>
<p>The primary purpose of Snit is to be <i class="term">object glue</i>--to help you
compose diverse objects from diverse sources into types and
megawidgets with clean, convenient interfaces so that you can more
easily build your application.</p>
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
systems based on inheritance only allow you to inherit from classes
defined using the same system, and that's a shame.  In Tcl, an object
is anything that acts like an object; it shouldn't matter how the
object was implemented.  I designed Snit to help me build applications
out of the materials at hand; thus, Snit is designed to be able to
incorporate and build on any object, whether it's a hand-coded object,
a Tk widget, an Incr Tcl object, a BWidget or almost anything else.</p>
<p>Note that you can achieve the effect of inheritance using 
<span class="sectref"><a href="#section14">COMPONENTS</a></span> and <span class="sectref"><a href="#section16">DELEGATION</a></span>--and you can inherit
from anything that looks like a Tcl object.</p>
</div>
<div id="subsection7" class="subsection"><h3><a name="subsection7">What can I do with Snit?</a></h3>
<p>Using Snit, a programmer can:</p>
<ul class="itemized">
<li><p>Create abstract data types and Tk megawidgets.</p></li>







|







438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
systems based on inheritance only allow you to inherit from classes
defined using the same system, and that's a shame.  In Tcl, an object
is anything that acts like an object; it shouldn't matter how the
object was implemented.  I designed Snit to help me build applications
out of the materials at hand; thus, Snit is designed to be able to
incorporate and build on any object, whether it's a hand-coded object,
a Tk widget, an Incr Tcl object, a BWidget or almost anything else.</p>
<p>Note that you can achieve the effect of inheritance using
<span class="sectref"><a href="#section14">COMPONENTS</a></span> and <span class="sectref"><a href="#section16">DELEGATION</a></span>--and you can inherit
from anything that looks like a Tcl object.</p>
</div>
<div id="subsection7" class="subsection"><h3><a name="subsection7">What can I do with Snit?</a></h3>
<p>Using Snit, a programmer can:</p>
<ul class="itemized">
<li><p>Create abstract data types and Tk megawidgets.</p></li>
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
<p>Tcl will find and load the latest version that's available relative to
the version of Tcl being used.  In this case, be careful to avoid
using any incompatible features.</p>
</div>
<div id="subsection10" class="subsection"><h3><a name="subsection10">How are Snit 1.3 and Snit 2.2 incompatible?</a></h3>
<p>To the extent possible, Snit 2.2 is intended to be a drop-in
replacement for Snit 1.3. Unfortunately, some incompatibilities were
inevitable because Snit 2.2 uses Tcl 8.5's new 
<b class="cmd">namespace ensemble</b> mechanism to implement subcommand dispatch.
This approach is much faster than the mechanism used in Snit 1.3, and
also results in much better error messages; however, it also places
new constraints on the implementation.</p>
<p>There are four specific incompatibilities between Snit 1.3 and Snit 2.2.</p>
<ul class="itemized">
<li><p>Snit 1.3 supports implicit naming of objects.  Suppose you define a
new <b class="cmd">snit::type</b> called <b class="cmd">dog</b>.  You can create instances of
<b class="cmd">dog</b> in three ways:</p>
<pre class="example">dog spot               ;# Explicit naming
set obj1 [dog %AUTO%]  ;# Automatic naming
set obj2 [dog]         ;# Implicit naming
</pre>
<p>In Snit 2.2, type commands are defined using the <b class="cmd">namespace ensemble</b>
mechanism; and <b class="cmd">namespace ensemble</b> doesn't allow an ensemble command
to be called without a subcommand.  In short, using 
<b class="cmd">namespace ensemble</b> there's no way to support implicit naming.</p>
<p>All is not lost, however.  If the type has no type methods, then the
type command is a simple command rather than an ensemble, and 
<b class="cmd">namespace ensemble</b> is not used.  In this case, implicit naming
is still possible.</p>
<p>In short, you can have implicit naming if you're willing to do without
type methods (including the standard type methods, like 
<b class="cmd">$type info</b>).  To do so, use the <b class="const">-hastypemethods</b> pragma:</p>
<pre class="example">pragma -hastypemethods 0</pre>
</li>
<li><p>Hierarchical methods and type methods are implemented differently in
Snit 2.2.</p>
<p>A hierarchical method is an instance method which has
subcommands; these subcommands are themselves methods.  The Tk text
widget's <b class="cmd">tag</b> command and its subcommands are examples of 
hierarchical methods.  You can implement such subcommands in Snit
simply by including multiple words in the method names:</p>
<pre class="example">method {tag configure} {tag args} { ... }
method {tag cget} {tag option} {...}
</pre>
<p>Here we've implicitly defined a <b class="cmd">tag</b> method which has two
subcommands, <b class="cmd">configure</b> and <b class="cmd">cget</b>.</p>
<p>In Snit 1.3, hierarchical methods could be called in two ways:</p>
<pre class="example">$obj tag cget -myoption      ;# The good way
$obj {tag cget} -myoption    ;# The weird way
</pre>
<p>In the second call, we see that a hierarchical method or type method
is simply one whose name contains multiple words.</p>
<p>In Snit 2.2 this is no longer the case, and the &quot;weird&quot; way of calling
hierarchical methods and type methods no longer works.</p></li>
<li><p>The third incompatibility derives from the second.  In Snit 1.3,
hierarchical methods were also simply methods whose name contains
multiple words.  As a result, <b class="cmd">$obj info methods</b> returned the
full names of all hierarchical methods.  In the example above, 
the list returned by <b class="cmd">$obj info methods</b> would include
<b class="cmd">tag configure</b> and <b class="cmd">tag cget</b> but not <b class="cmd">tag</b>, since
<b class="cmd">tag</b> is defined only implicitly.</p>
<p>In Snit 2.2, hierarchical methods and type methods are no longer
simply ones whose
name contains multiple words; in the above example, the list returned
by <b class="cmd">$obj info methods</b> would include <b class="cmd">tag</b> but not
<b class="cmd">tag configure</b> or <b class="cmd">tag cget</b>.</p></li>
<li><p>The fourth incompatibility is due to a new feature.  Snit 2.2 uses
the new <b class="cmd">namespace path</b> command so that a type's code can 
call any command defined in the type's parent namespace without
qualification or importation.  For example, suppose you have a 
package called <b class="cmd">mypackage</b> which defines a number of commands
including a type, <b class="cmd">::mypackage::mytype</b>.  Thanks to 
<b class="cmd">namespace path</b>, the type's code can call any of the other
commands defined in <b class="cmd">::mypackage::</b>.</p>
<p>This is extremely convenient.  However, it also means that commands
defined in the parent namespace, <b class="cmd">::mypackage::</b> can block the
type's access to identically named commands in the global namespace.
This can lead to bugs.  For example, Tcllib includes a type called
<b class="cmd">::tie::std::file</b>.  This type's code calls the standard
<b class="cmd"><a href="../../../../index.html#key35">file</a></b> command.  When run with Snit 2.2, the code broke--
the type's command, <b class="cmd">::tie::std::file</b>, is itself a command
in the type's parent namespace, and so instead of calling 
the standard <b class="cmd"><a href="../../../../index.html#key35">file</a></b> command, the type found itself calling
itself.</p></li>
</ul>
</div>
<div id="subsection11" class="subsection"><h3><a name="subsection11">Are there other differences between Snit 1.x and Snit 2.2?</a></h3>
<p>Yes.</p>
<ul class="itemized">
<li><p>Method dispatch is considerably faster.</p></li>
<li><p>Many error messages and stack traces are cleaner.</p></li>
<li><p>The <b class="const">-simpledispatch</b> pragma is obsolete, and ignored if
present. In Snit 1.x, <b class="const">-simpledispatch</b> substitutes a faster
mechanism for method dispatch, at the cost of losing certain features.
Snit 2.2 method dispatch is faster still in all cases, so 
<b class="const">-simpledispatch</b> is no longer needed.</p></li>
<li><p>In Snit 2.2, a type's code (methods, type methods, etc.) can call commands
from the type's parent namespace without qualifying or importing
them, i.e., type <b class="cmd">::parentns::mytype</b>'s code can call
<b class="cmd">::parentns::someproc</b> as just <b class="cmd">someproc</b>.</p>
<p>This is extremely useful when a type is defined as part of a larger
package, and shares a parent namespace with the rest of the package;







|















|


|



|







|


















|









|

|

|









|












|







492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
<p>Tcl will find and load the latest version that's available relative to
the version of Tcl being used.  In this case, be careful to avoid
using any incompatible features.</p>
</div>
<div id="subsection10" class="subsection"><h3><a name="subsection10">How are Snit 1.3 and Snit 2.2 incompatible?</a></h3>
<p>To the extent possible, Snit 2.2 is intended to be a drop-in
replacement for Snit 1.3. Unfortunately, some incompatibilities were
inevitable because Snit 2.2 uses Tcl 8.5's new
<b class="cmd">namespace ensemble</b> mechanism to implement subcommand dispatch.
This approach is much faster than the mechanism used in Snit 1.3, and
also results in much better error messages; however, it also places
new constraints on the implementation.</p>
<p>There are four specific incompatibilities between Snit 1.3 and Snit 2.2.</p>
<ul class="itemized">
<li><p>Snit 1.3 supports implicit naming of objects.  Suppose you define a
new <b class="cmd">snit::type</b> called <b class="cmd">dog</b>.  You can create instances of
<b class="cmd">dog</b> in three ways:</p>
<pre class="example">dog spot               ;# Explicit naming
set obj1 [dog %AUTO%]  ;# Automatic naming
set obj2 [dog]         ;# Implicit naming
</pre>
<p>In Snit 2.2, type commands are defined using the <b class="cmd">namespace ensemble</b>
mechanism; and <b class="cmd">namespace ensemble</b> doesn't allow an ensemble command
to be called without a subcommand.  In short, using
<b class="cmd">namespace ensemble</b> there's no way to support implicit naming.</p>
<p>All is not lost, however.  If the type has no type methods, then the
type command is a simple command rather than an ensemble, and
<b class="cmd">namespace ensemble</b> is not used.  In this case, implicit naming
is still possible.</p>
<p>In short, you can have implicit naming if you're willing to do without
type methods (including the standard type methods, like
<b class="cmd">$type info</b>).  To do so, use the <b class="const">-hastypemethods</b> pragma:</p>
<pre class="example">pragma -hastypemethods 0</pre>
</li>
<li><p>Hierarchical methods and type methods are implemented differently in
Snit 2.2.</p>
<p>A hierarchical method is an instance method which has
subcommands; these subcommands are themselves methods.  The Tk text
widget's <b class="cmd">tag</b> command and its subcommands are examples of
hierarchical methods.  You can implement such subcommands in Snit
simply by including multiple words in the method names:</p>
<pre class="example">method {tag configure} {tag args} { ... }
method {tag cget} {tag option} {...}
</pre>
<p>Here we've implicitly defined a <b class="cmd">tag</b> method which has two
subcommands, <b class="cmd">configure</b> and <b class="cmd">cget</b>.</p>
<p>In Snit 1.3, hierarchical methods could be called in two ways:</p>
<pre class="example">$obj tag cget -myoption      ;# The good way
$obj {tag cget} -myoption    ;# The weird way
</pre>
<p>In the second call, we see that a hierarchical method or type method
is simply one whose name contains multiple words.</p>
<p>In Snit 2.2 this is no longer the case, and the &quot;weird&quot; way of calling
hierarchical methods and type methods no longer works.</p></li>
<li><p>The third incompatibility derives from the second.  In Snit 1.3,
hierarchical methods were also simply methods whose name contains
multiple words.  As a result, <b class="cmd">$obj info methods</b> returned the
full names of all hierarchical methods.  In the example above,
the list returned by <b class="cmd">$obj info methods</b> would include
<b class="cmd">tag configure</b> and <b class="cmd">tag cget</b> but not <b class="cmd">tag</b>, since
<b class="cmd">tag</b> is defined only implicitly.</p>
<p>In Snit 2.2, hierarchical methods and type methods are no longer
simply ones whose
name contains multiple words; in the above example, the list returned
by <b class="cmd">$obj info methods</b> would include <b class="cmd">tag</b> but not
<b class="cmd">tag configure</b> or <b class="cmd">tag cget</b>.</p></li>
<li><p>The fourth incompatibility is due to a new feature.  Snit 2.2 uses
the new <b class="cmd">namespace path</b> command so that a type's code can
call any command defined in the type's parent namespace without
qualification or importation.  For example, suppose you have a
package called <b class="cmd">mypackage</b> which defines a number of commands
including a type, <b class="cmd">::mypackage::mytype</b>.  Thanks to
<b class="cmd">namespace path</b>, the type's code can call any of the other
commands defined in <b class="cmd">::mypackage::</b>.</p>
<p>This is extremely convenient.  However, it also means that commands
defined in the parent namespace, <b class="cmd">::mypackage::</b> can block the
type's access to identically named commands in the global namespace.
This can lead to bugs.  For example, Tcllib includes a type called
<b class="cmd">::tie::std::file</b>.  This type's code calls the standard
<b class="cmd"><a href="../../../../index.html#key35">file</a></b> command.  When run with Snit 2.2, the code broke--
the type's command, <b class="cmd">::tie::std::file</b>, is itself a command
in the type's parent namespace, and so instead of calling
the standard <b class="cmd"><a href="../../../../index.html#key35">file</a></b> command, the type found itself calling
itself.</p></li>
</ul>
</div>
<div id="subsection11" class="subsection"><h3><a name="subsection11">Are there other differences between Snit 1.x and Snit 2.2?</a></h3>
<p>Yes.</p>
<ul class="itemized">
<li><p>Method dispatch is considerably faster.</p></li>
<li><p>Many error messages and stack traces are cleaner.</p></li>
<li><p>The <b class="const">-simpledispatch</b> pragma is obsolete, and ignored if
present. In Snit 1.x, <b class="const">-simpledispatch</b> substitutes a faster
mechanism for method dispatch, at the cost of losing certain features.
Snit 2.2 method dispatch is faster still in all cases, so
<b class="const">-simpledispatch</b> is no longer needed.</p></li>
<li><p>In Snit 2.2, a type's code (methods, type methods, etc.) can call commands
from the type's parent namespace without qualifying or importing
them, i.e., type <b class="cmd">::parentns::mytype</b>'s code can call
<b class="cmd">::parentns::someproc</b> as just <b class="cmd">someproc</b>.</p>
<p>This is extremely useful when a type is defined as part of a larger
package, and shares a parent namespace with the rest of the package;
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
<div id="section4" class="section"><h2><a name="section4">OBJECTS</a></h2>
<div id="subsection12" class="subsection"><h3><a name="subsection12">What is an object?</a></h3>
<p>A full description of object-oriented programming is beyond
the scope of this FAQ, obviously.  In simple terms, an object is an instance of
an abstract data type--a coherent bundle of code and data.
There are many ways to represent objects in Tcl/Tk; the best known
examples are the Tk widgets.</p>
<p>A Tk widget is an object; it is represented by a Tcl command.  
The object's methods are subcommands of the Tcl command.  The object's
properties are options accessed using the <b class="method">configure</b> and 
<b class="method">cget</b> methods.  Snit uses the same conventions as Tk widgets do.</p>
</div>
<div id="subsection13" class="subsection"><h3><a name="subsection13">What is an abstract data type?</a></h3>
<p>In computer science terms, an abstract data type is a complex data
structure along with a set of operations--a stack, a queue, a
binary tree, etc--that is to say, in modern terms, an object.  In systems
that include some form of inheritance the word <i class="term"><a href="../../../../index.html#key236">class</a></i> is
usually used instead of <i class="term">abstract data type</i>, but as Snit
doesn't implement inheritance as it's ordinarily understood
the older term seems more appropriate.  Sometimes this is called 
<i class="term">object-based</i> programming as opposed to object-oriented
programming.  Note that you can easily create the effect of 
inheritance using <span class="sectref"><a href="#section14">COMPONENTS</a></span> and <span class="sectref"><a href="#section16">DELEGATION</a></span>.</p>
<p>In Snit, as in Tk, a <i class="term"><a href="../../../../index.html#key124">type</a></i> is a command that creates instances
-- objects -- which belong to the type.  Most types define some number
of <i class="term">options</i> which can be set at creation time, and usually can be
changed later.</p>
<p>Further, an <i class="term">instance</i> is also a Tcl command--a command that
gives access to the operations which are defined for that abstract
data type.  Conventionally, the operations are defined as subcommands
of the instance command.  For example, to insert
text into a Tk text widget, you use the text widget's <b class="method">insert</b>
subcommand:</p>
<pre class="example">    # Create a text widget and insert some text in it.
    text .mytext -width 80 -height 24
    .mytext insert end &quot;Howdy!&quot;
</pre>
<p>In this example, <b class="cmd"><a href="../../../../index.html#key481">text</a></b> is the <i class="term"><a href="../../../../index.html#key124">type</a></i> command and
<b class="cmd">.mytext</b> is the <i class="term">instance</i> command.</p>
<p>In Snit, object subcommands are generally called 
<span class="sectref"><a href="#section5">INSTANCE METHODS</a></span>.</p>
</div>
<div id="subsection14" class="subsection"><h3><a name="subsection14">What kinds of abstract data types does Snit provide?</a></h3>
<p>Snit allows you to define three kinds of abstract data type:</p>
<ul class="itemized">
<li><p><b class="cmd">snit::type</b></p></li>
<li><p><b class="cmd">snit::widget</b></p></li>







|

|






|


|

|

|













|

|







606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
<div id="section4" class="section"><h2><a name="section4">OBJECTS</a></h2>
<div id="subsection12" class="subsection"><h3><a name="subsection12">What is an object?</a></h3>
<p>A full description of object-oriented programming is beyond
the scope of this FAQ, obviously.  In simple terms, an object is an instance of
an abstract data type--a coherent bundle of code and data.
There are many ways to represent objects in Tcl/Tk; the best known
examples are the Tk widgets.</p>
<p>A Tk widget is an object; it is represented by a Tcl command.
The object's methods are subcommands of the Tcl command.  The object's
properties are options accessed using the <b class="method">configure</b> and
<b class="method">cget</b> methods.  Snit uses the same conventions as Tk widgets do.</p>
</div>
<div id="subsection13" class="subsection"><h3><a name="subsection13">What is an abstract data type?</a></h3>
<p>In computer science terms, an abstract data type is a complex data
structure along with a set of operations--a stack, a queue, a
binary tree, etc--that is to say, in modern terms, an object.  In systems
that include some form of inheritance the word <i class="term"><a href="../../../../index.html#key234">class</a></i> is
usually used instead of <i class="term">abstract data type</i>, but as Snit
doesn't implement inheritance as it's ordinarily understood
the older term seems more appropriate.  Sometimes this is called
<i class="term">object-based</i> programming as opposed to object-oriented
programming.  Note that you can easily create the effect of
inheritance using <span class="sectref"><a href="#section14">COMPONENTS</a></span> and <span class="sectref"><a href="#section16">DELEGATION</a></span>.</p>
<p>In Snit, as in Tk, a <i class="term"><a href="../../../../index.html#key123">type</a></i> is a command that creates instances
-- objects -- which belong to the type.  Most types define some number
of <i class="term">options</i> which can be set at creation time, and usually can be
changed later.</p>
<p>Further, an <i class="term">instance</i> is also a Tcl command--a command that
gives access to the operations which are defined for that abstract
data type.  Conventionally, the operations are defined as subcommands
of the instance command.  For example, to insert
text into a Tk text widget, you use the text widget's <b class="method">insert</b>
subcommand:</p>
<pre class="example">    # Create a text widget and insert some text in it.
    text .mytext -width 80 -height 24
    .mytext insert end &quot;Howdy!&quot;
</pre>
<p>In this example, <b class="cmd"><a href="../../../../index.html#key480">text</a></b> is the <i class="term"><a href="../../../../index.html#key123">type</a></i> command and
<b class="cmd">.mytext</b> is the <i class="term">instance</i> command.</p>
<p>In Snit, object subcommands are generally called
<span class="sectref"><a href="#section5">INSTANCE METHODS</a></span>.</p>
</div>
<div id="subsection14" class="subsection"><h3><a name="subsection14">What kinds of abstract data types does Snit provide?</a></h3>
<p>Snit allows you to define three kinds of abstract data type:</p>
<ul class="itemized">
<li><p><b class="cmd">snit::type</b></p></li>
<li><p><b class="cmd">snit::widget</b></p></li>
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
%
</pre>
<p>This definition defines a new command (<b class="cmd">::dog</b>, in this case)
that can be used to define dog objects.</p>
<p>An instance of a <b class="cmd">snit::type</b> can have <span class="sectref"><a href="#section5">INSTANCE METHODS</a></span>,
<span class="sectref"><a href="#section6">INSTANCE VARIABLES</a></span>, <span class="sectref"><a href="#section7">OPTIONS</a></span>, and <span class="sectref"><a href="#section14">COMPONENTS</a></span>.
The type itself can have <span class="sectref"><a href="#section9">TYPE METHODS</a></span>,
<span class="sectref"><a href="#section8">TYPE VARIABLES</a></span>, <span class="sectref"><a href="#section15">TYPE COMPONENTS</a></span>, and 
<span class="sectref"><a href="#section10">PROCS</a></span>.</p>
</div>
<div id="subsection16" class="subsection"><h3><a name="subsection16">What is a snit::widget?, the short story</a></h3>
<p>A <b class="cmd">snit::widget</b> is a Tk megawidget built using Snit; it is very
similar to a <b class="cmd">snit::type</b>.  See <span class="sectref"><a href="#section17">WIDGETS</a></span>.</p>
</div>
<div id="subsection17" class="subsection"><h3><a name="subsection17">What is a snit::widgetadaptor?, the short story</a></h3>







|







665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
%
</pre>
<p>This definition defines a new command (<b class="cmd">::dog</b>, in this case)
that can be used to define dog objects.</p>
<p>An instance of a <b class="cmd">snit::type</b> can have <span class="sectref"><a href="#section5">INSTANCE METHODS</a></span>,
<span class="sectref"><a href="#section6">INSTANCE VARIABLES</a></span>, <span class="sectref"><a href="#section7">OPTIONS</a></span>, and <span class="sectref"><a href="#section14">COMPONENTS</a></span>.
The type itself can have <span class="sectref"><a href="#section9">TYPE METHODS</a></span>,
<span class="sectref"><a href="#section8">TYPE VARIABLES</a></span>, <span class="sectref"><a href="#section15">TYPE COMPONENTS</a></span>, and
<span class="sectref"><a href="#section10">PROCS</a></span>.</p>
</div>
<div id="subsection16" class="subsection"><h3><a name="subsection16">What is a snit::widget?, the short story</a></h3>
<p>A <b class="cmd">snit::widget</b> is a Tk megawidget built using Snit; it is very
similar to a <b class="cmd">snit::type</b>.  See <span class="sectref"><a href="#section17">WIDGETS</a></span>.</p>
</div>
<div id="subsection17" class="subsection"><h3><a name="subsection17">What is a snit::widgetadaptor?, the short story</a></h3>
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
}
::dog
% dog create spot
::spot
%
</pre>
<p>In general, the <b class="method">create</b> method name can be omitted so long as
the instance name doesn't conflict with any defined 
<span class="sectref"><a href="#section9">TYPE METHODS</a></span>. (See <span class="sectref"><a href="#section15">TYPE COMPONENTS</a></span> for the
special case in which this doesn't work.)
So the following example is identical to the
previous example:</p>
<pre class="example">% snit::type dog {
    # ....
}
::dog
% dog spot
::spot
%
</pre>
<p>This document generally uses the shorter form.</p>
<p>If the <b class="cmd">dog</b> type defines <span class="sectref"><a href="#section7">OPTIONS</a></span>, these can usually be 
given defaults at creation time:</p>
<pre class="example">% snit::type dog {
    option -breed mongrel
    option -color brown
    method bark {} { return &quot;$self barks.&quot; }
}
::dog







|













|







691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
}
::dog
% dog create spot
::spot
%
</pre>
<p>In general, the <b class="method">create</b> method name can be omitted so long as
the instance name doesn't conflict with any defined
<span class="sectref"><a href="#section9">TYPE METHODS</a></span>. (See <span class="sectref"><a href="#section15">TYPE COMPONENTS</a></span> for the
special case in which this doesn't work.)
So the following example is identical to the
previous example:</p>
<pre class="example">% snit::type dog {
    # ....
}
::dog
% dog spot
::spot
%
</pre>
<p>This document generally uses the shorter form.</p>
<p>If the <b class="cmd">dog</b> type defines <span class="sectref"><a href="#section7">OPTIONS</a></span>, these can usually be
given defaults at creation time:</p>
<pre class="example">% snit::type dog {
    option -breed mongrel
    option -color brown
    method bark {} { return &quot;$self barks.&quot; }
}
::dog
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
<p>All Snit objects (including <i class="term">widgets</i> and <i class="term">widgetadaptors</i>)
can be renamed, though this flexibility has some consequences:</p>
<ul class="itemized">
<li><p>In an instance method, the implicit argument <b class="variable">self</b> will always
contain the object's current name, so instance methods can always call
other instance methods using <b class="variable">$self</b>.</p></li>
<li><p>If the object is renamed, however, then <b class="variable">$self</b>'s value will change.
Therefore, don't use <b class="variable">$self</b> for anything that will break if 
<b class="variable">$self</b> changes. For example, don't pass a callback command to
another object like this:</p>
<pre class="example">
    .btn configure -command [list $self ButtonPress]
</pre>
<p>You'll get an error if <b class="cmd">.btn</b> calls your command after your object is
renamed.</p></li>
<li><p>Instead, your object should define its callback command like this:</p>
<pre class="example">
    .btn configure -command [mymethod ButtonPress]
</pre>
<p>The <b class="cmd">mymethod</b> command returns code that will call the desired
method safely; the caller of the callback can add additional
arguments to the end of the command as usual.</p></li>
<li><p>Every object has a private namespace; the name of this namespace is
available in method bodies, etc., as the value of the implicit
argument <b class="variable">selfns</b>.  This value is constant for the life of the
object.  Use <b class="variable">$selfns</b> instead of <b class="variable">$self</b> if you need a 
unique token to identify the object.</p></li>
<li><p>When a <b class="cmd">snit::widget</b>'s instance command is renamed, its Tk window
name remains the same -- and is still extremely
important. Consequently, the Tk window name is available in 
method bodies as the value of the implicit argument <b class="variable">win</b>.  
This value is constant for the
life of the object.  When creating child windows, it's best to use
<b class="variable">$win.child</b> rather than <b class="variable">$self.child</b> as the name of the
child window.</p></li>
</ul>
</div>
<div id="subsection23" class="subsection"><h3><a name="subsection23">How do I destroy a Snit object?</a></h3>







|

















|



|
|







784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
<p>All Snit objects (including <i class="term">widgets</i> and <i class="term">widgetadaptors</i>)
can be renamed, though this flexibility has some consequences:</p>
<ul class="itemized">
<li><p>In an instance method, the implicit argument <b class="variable">self</b> will always
contain the object's current name, so instance methods can always call
other instance methods using <b class="variable">$self</b>.</p></li>
<li><p>If the object is renamed, however, then <b class="variable">$self</b>'s value will change.
Therefore, don't use <b class="variable">$self</b> for anything that will break if
<b class="variable">$self</b> changes. For example, don't pass a callback command to
another object like this:</p>
<pre class="example">
    .btn configure -command [list $self ButtonPress]
</pre>
<p>You'll get an error if <b class="cmd">.btn</b> calls your command after your object is
renamed.</p></li>
<li><p>Instead, your object should define its callback command like this:</p>
<pre class="example">
    .btn configure -command [mymethod ButtonPress]
</pre>
<p>The <b class="cmd">mymethod</b> command returns code that will call the desired
method safely; the caller of the callback can add additional
arguments to the end of the command as usual.</p></li>
<li><p>Every object has a private namespace; the name of this namespace is
available in method bodies, etc., as the value of the implicit
argument <b class="variable">selfns</b>.  This value is constant for the life of the
object.  Use <b class="variable">$selfns</b> instead of <b class="variable">$self</b> if you need a
unique token to identify the object.</p></li>
<li><p>When a <b class="cmd">snit::widget</b>'s instance command is renamed, its Tk window
name remains the same -- and is still extremely
important. Consequently, the Tk window name is available in
method bodies as the value of the implicit argument <b class="variable">win</b>.
This value is constant for the
life of the object.  When creating child windows, it's best to use
<b class="variable">$win.child</b> rather than <b class="variable">$self.child</b> as the name of the
child window.</p></li>
</ul>
</div>
<div id="subsection23" class="subsection"><h3><a name="subsection23">How do I destroy a Snit object?</a></h3>
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
::spot chases cat.  ::spot barks.
%
</pre>
</div>
<div id="subsection28" class="subsection"><h3><a name="subsection28">Are there any limitations on instance method names?</a></h3>
<p>Not really, so long as you avoid the standard instance method names:
<b class="method">configure</b>, <b class="method">configurelist</b>, <b class="method">cget</b>,
<b class="method">destroy</b>, and <b class="method">info</b>.  Also, method names consisting of 
multiple words define hierarchical methods.</p>
</div>
<div id="subsection29" class="subsection"><h3><a name="subsection29">What is a hierarchical method?</a></h3>
<p>An object's methods are subcommands of the object's instance command.
Hierarchical methods allow an object's methods to have subcommands of
their own; and these can in turn have subcommands, and so on.  This
allows the programmer to define a tree-shaped command structure, such
as is used by many of the Tk widgets--the subcommands of the 
Tk <b class="cmd"><a href="../../../../index.html#key481">text</a></b> widget's <b class="cmd">tag</b> method are hierarchical methods.</p>
</div>
<div id="subsection30" class="subsection"><h3><a name="subsection30">How do I define a hierarchical method?</a></h3>
<p>Define methods whose names consist of multiple words.  These words
define the hierarchy implicitly.  For example, the following code
defines a <b class="cmd">tag</b> method with subcommands <b class="cmd">cget</b> and 
<b class="cmd">configure</b>:</p>
<pre class="example">snit::widget mytext {
    method {tag configure} {tag args} { ... }
    method {tag cget} {tag option} {...}
}
</pre>
<p>Note that there is no explicit definition for the <b class="cmd">tag</b> method;







|







|
|




|







918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
::spot chases cat.  ::spot barks.
%
</pre>
</div>
<div id="subsection28" class="subsection"><h3><a name="subsection28">Are there any limitations on instance method names?</a></h3>
<p>Not really, so long as you avoid the standard instance method names:
<b class="method">configure</b>, <b class="method">configurelist</b>, <b class="method">cget</b>,
<b class="method">destroy</b>, and <b class="method">info</b>.  Also, method names consisting of
multiple words define hierarchical methods.</p>
</div>
<div id="subsection29" class="subsection"><h3><a name="subsection29">What is a hierarchical method?</a></h3>
<p>An object's methods are subcommands of the object's instance command.
Hierarchical methods allow an object's methods to have subcommands of
their own; and these can in turn have subcommands, and so on.  This
allows the programmer to define a tree-shaped command structure, such
as is used by many of the Tk widgets--the subcommands of the
Tk <b class="cmd"><a href="../../../../index.html#key480">text</a></b> widget's <b class="cmd">tag</b> method are hierarchical methods.</p>
</div>
<div id="subsection30" class="subsection"><h3><a name="subsection30">How do I define a hierarchical method?</a></h3>
<p>Define methods whose names consist of multiple words.  These words
define the hierarchy implicitly.  For example, the following code
defines a <b class="cmd">tag</b> method with subcommands <b class="cmd">cget</b> and
<b class="cmd">configure</b>:</p>
<pre class="example">snit::widget mytext {
    method {tag configure} {tag args} { ... }
    method {tag cget} {tag option} {...}
}
</pre>
<p>Note that there is no explicit definition for the <b class="cmd">tag</b> method;
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
</pre>
<p>The above example reveals how Snit names an instance's private
namespace; however, you should not write code that depends on the
specific naming convention, as it might change in future releases.</p>
</div>
<div id="subsection38" class="subsection"><h3><a name="subsection38">What is $win?</a></h3>
<p>The implicit argument <b class="variable">win</b> is defined for all Snit methods,
though it really makes sense only for those of 
<span class="sectref"><a href="#section17">WIDGETS</a></span> and <span class="sectref"><a href="#section18">WIDGET ADAPTORS</a></span>.  <b class="variable">$win</b> is simply
the original name of the object, whether it's been renamed or not.
For widgets and widgetadaptors, it is also therefore the name of a Tk
window.</p>
<p>When a <b class="cmd">snit::widgetadaptor</b> is used to modify the interface of a
widget or megawidget, it must rename the widget's original command and
replace it with its own.</p>
<p>Thus, using <b class="variable">win</b> whenever the Tk window name is called for
means that a <b class="cmd">snit::widget</b> or <b class="cmd">snit::widgetadaptor</b> can be
adapted by a <b class="cmd">snit::widgetadaptor</b>.  See <span class="sectref"><a href="#section17">WIDGETS</a></span> for
more information.</p>
</div>
<div id="subsection39" class="subsection"><h3><a name="subsection39">How do I pass an instance method as a callback?</a></h3>
<p>It depends on the context.</p>
<p>Suppose in my application I have a <b class="cmd">dog</b> object named <b class="cmd">fido</b>,
and I want <b class="cmd">fido</b> to bark when a Tk button called <b class="cmd">.bark</b> is 
pressed.  In this case, I create the callback command in the usual
way, using <b class="cmd"><a href="../../../../index.html#key278">list</a></b>:</p>
<pre class="example">    button .bark -text &quot;Bark!&quot; -command [list fido bark]
</pre>
<p>In typical Tcl style, we use a callback to hook two independent
components together.  But suppose that the <b class="cmd">dog</b> object has
a graphical interface and owns the button itself?  In this case,
the <b class="cmd">dog</b> must pass one of its own instance methods to the
button it owns.  The obvious thing to do is this:</p>







|















|

|







1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
</pre>
<p>The above example reveals how Snit names an instance's private
namespace; however, you should not write code that depends on the
specific naming convention, as it might change in future releases.</p>
</div>
<div id="subsection38" class="subsection"><h3><a name="subsection38">What is $win?</a></h3>
<p>The implicit argument <b class="variable">win</b> is defined for all Snit methods,
though it really makes sense only for those of
<span class="sectref"><a href="#section17">WIDGETS</a></span> and <span class="sectref"><a href="#section18">WIDGET ADAPTORS</a></span>.  <b class="variable">$win</b> is simply
the original name of the object, whether it's been renamed or not.
For widgets and widgetadaptors, it is also therefore the name of a Tk
window.</p>
<p>When a <b class="cmd">snit::widgetadaptor</b> is used to modify the interface of a
widget or megawidget, it must rename the widget's original command and
replace it with its own.</p>
<p>Thus, using <b class="variable">win</b> whenever the Tk window name is called for
means that a <b class="cmd">snit::widget</b> or <b class="cmd">snit::widgetadaptor</b> can be
adapted by a <b class="cmd">snit::widgetadaptor</b>.  See <span class="sectref"><a href="#section17">WIDGETS</a></span> for
more information.</p>
</div>
<div id="subsection39" class="subsection"><h3><a name="subsection39">How do I pass an instance method as a callback?</a></h3>
<p>It depends on the context.</p>
<p>Suppose in my application I have a <b class="cmd">dog</b> object named <b class="cmd">fido</b>,
and I want <b class="cmd">fido</b> to bark when a Tk button called <b class="cmd">.bark</b> is
pressed.  In this case, I create the callback command in the usual
way, using <b class="cmd"><a href="../../../../index.html#key280">list</a></b>:</p>
<pre class="example">    button .bark -text &quot;Bark!&quot; -command [list fido bark]
</pre>
<p>In typical Tcl style, we use a callback to hook two independent
components together.  But suppose that the <b class="cmd">dog</b> object has
a graphical interface and owns the button itself?  In this case,
the <b class="cmd">dog</b> must pass one of its own instance methods to the
button it owns.  The obvious thing to do is this:</p>
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
        #...
    }
}
::dog
%
</pre>
<p>The command <b class="cmd">mymethod</b> takes any number of arguments, and can be
used like <b class="cmd"><a href="../../../../index.html#key278">list</a></b> to build up a callback command; the only
difference is that <b class="cmd">mymethod</b> returns a 
form of the command that won't change even if the instance's name
changes.</p>
<p>On the other hand, you might prefer to allow a widgetadaptor to 
override a method such that your renamed widget will call the
widgetadaptor's method instead of its own.  In this case, 
using <b class="cmd">[list $self bark]</b> will do what you want...but
this is a technique which should be used only in carefully controlled
circumstances.</p>
</div>
<div id="subsection40" class="subsection"><h3><a name="subsection40">How do I delegate instance methods to a component?</a></h3>
<p>See <span class="sectref"><a href="#section16">DELEGATION</a></span>.</p>
</div>







|
|


|

|







1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
        #...
    }
}
::dog
%
</pre>
<p>The command <b class="cmd">mymethod</b> takes any number of arguments, and can be
used like <b class="cmd"><a href="../../../../index.html#key280">list</a></b> to build up a callback command; the only
difference is that <b class="cmd">mymethod</b> returns a
form of the command that won't change even if the instance's name
changes.</p>
<p>On the other hand, you might prefer to allow a widgetadaptor to
override a method such that your renamed widget will call the
widgetadaptor's method instead of its own.  In this case,
using <b class="cmd">[list $self bark]</b> will do what you want...but
this is a technique which should be used only in carefully controlled
circumstances.</p>
</div>
<div id="subsection40" class="subsection"><h3><a name="subsection40">How do I delegate instance methods to a component?</a></h3>
<p>See <span class="sectref"><a href="#section16">DELEGATION</a></span>.</p>
</div>
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
        formal &quot;Good Evening&quot;
        casual &quot;Howdy!&quot;
    }
}
</pre>
</div>
<div id="subsection44" class="subsection"><h3><a name="subsection44">What happens if I don't initialize an instance variable?</a></h3>
<p>Variables do not really exist until they are given values.  If you 
do not initialize a variable when you define it, then you must be
sure to assign a value to it (in the constructor, say, or in some
method) before you reference it.</p>
</div>
<div id="subsection45" class="subsection"><h3><a name="subsection45">Are there any limitations on instance variable names?</a></h3>
<p>Just a few.</p>
<p>First, every Snit object has a built-in instance variable called
<b class="variable">options</b>, which should never be redefined.</p>
<p>Second, all names beginning with &quot;Snit_&quot; are reserved for
use by Snit internal code.</p>
<p>Third, instance variable names containing the namespace delimiter
(<b class="const">::</b>) are likely to cause great confusion.</p>
</div>
<div id="subsection46" class="subsection"><h3><a name="subsection46">Do I need to declare my instance variables in my methods?</a></h3>
<p>No. Once you've defined an instance variable in the type definition,
it can be used in any instance code (instance methods, the
constructor, and the destructor) without declaration.  This differs
from normal Tcl practice, in which all non-local variables in a proc
need to be declared.</p>
<p>There is a speed penalty to having all instance variables implicitly
available in all instance code.  Even though your code need not 
declare the variables explicitly, Snit must still declare them,
and that takes time.  If you have ten instance variables, a method
that uses none of them must still pay the declaration penalty for 
all ten.  In most cases, the additional runtime cost is negligible.
If extreme cases, you might wish to avoid it; there are two methods
for doing so.</p>
<p>The first is to define a single instance variable, an array, and store
all of your instance data in the array.  This way, you're only paying
the declaration penalty for one variable--and you probably need the
variable most of the time anyway.  This method breaks down if your







|




















|


|







1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
        formal &quot;Good Evening&quot;
        casual &quot;Howdy!&quot;
    }
}
</pre>
</div>
<div id="subsection44" class="subsection"><h3><a name="subsection44">What happens if I don't initialize an instance variable?</a></h3>
<p>Variables do not really exist until they are given values.  If you
do not initialize a variable when you define it, then you must be
sure to assign a value to it (in the constructor, say, or in some
method) before you reference it.</p>
</div>
<div id="subsection45" class="subsection"><h3><a name="subsection45">Are there any limitations on instance variable names?</a></h3>
<p>Just a few.</p>
<p>First, every Snit object has a built-in instance variable called
<b class="variable">options</b>, which should never be redefined.</p>
<p>Second, all names beginning with &quot;Snit_&quot; are reserved for
use by Snit internal code.</p>
<p>Third, instance variable names containing the namespace delimiter
(<b class="const">::</b>) are likely to cause great confusion.</p>
</div>
<div id="subsection46" class="subsection"><h3><a name="subsection46">Do I need to declare my instance variables in my methods?</a></h3>
<p>No. Once you've defined an instance variable in the type definition,
it can be used in any instance code (instance methods, the
constructor, and the destructor) without declaration.  This differs
from normal Tcl practice, in which all non-local variables in a proc
need to be declared.</p>
<p>There is a speed penalty to having all instance variables implicitly
available in all instance code.  Even though your code need not
declare the variables explicitly, Snit must still declare them,
and that takes time.  If you have ten instance variables, a method
that uses none of them must still pay the declaration penalty for
all ten.  In most cases, the additional runtime cost is negligible.
If extreme cases, you might wish to avoid it; there are two methods
for doing so.</p>
<p>The first is to define a single instance variable, an array, and store
all of your instance data in the array.  This way, you're only paying
the declaration penalty for one variable--and you probably need the
variable most of the time anyway.  This method breaks down if your
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
<div id="section7" class="section"><h2><a name="section7">OPTIONS</a></h2>
<div id="subsection49" class="subsection"><h3><a name="subsection49">What is an option?</a></h3>
<p>A type's options are the equivalent of what other object-oriented
languages would call public member variables or properties: they are
data values which can be retrieved and (usually) set by the clients of
an object.</p>
<p>Snit's implementation of options follows the Tk model fairly exactly,
except that <b class="cmd">snit::type</b> objects usually don't interact with 
<span class="sectref"><a href="#section19">THE TK OPTION DATABASE</a></span>; <b class="cmd">snit::widget</b> and 
<b class="cmd">snit::widgetadaptor</b> objects, on the other hand, always do.</p>
</div>
<div id="subsection50" class="subsection"><h3><a name="subsection50">How do I define an option?</a></h3>
<p>Options are defined in the type definition using the <b class="cmd">option</b>
statement.  Consider the following type, to be used in an application
that manages a list of dogs for a pet store:</p>
<pre class="example">snit::type dog {
    option -breed -default mongrel
    option -color -default brown
    option -akc   -default 0
    option -shots -default 0
}
</pre>
<p>According to this, a dog has four notable properties: a
breed, a color, a flag that says whether it's pedigreed with the
American Kennel Club, and another flag that says whether it has had
its shots.  The default dog, evidently, is a brown mutt.</p>
<p>There are a number of options you can specify when defining an option;
if <b class="const">-default</b> is the only one, you can omit the word 
<b class="const">-default</b> as follows:</p>
<pre class="example">snit::type dog {
    option -breed mongrel
    option -color brown
    option -akc   0
    option -shots 0
}







|
|


















|







1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
<div id="section7" class="section"><h2><a name="section7">OPTIONS</a></h2>
<div id="subsection49" class="subsection"><h3><a name="subsection49">What is an option?</a></h3>
<p>A type's options are the equivalent of what other object-oriented
languages would call public member variables or properties: they are
data values which can be retrieved and (usually) set by the clients of
an object.</p>
<p>Snit's implementation of options follows the Tk model fairly exactly,
except that <b class="cmd">snit::type</b> objects usually don't interact with
<span class="sectref"><a href="#section19">THE TK OPTION DATABASE</a></span>; <b class="cmd">snit::widget</b> and
<b class="cmd">snit::widgetadaptor</b> objects, on the other hand, always do.</p>
</div>
<div id="subsection50" class="subsection"><h3><a name="subsection50">How do I define an option?</a></h3>
<p>Options are defined in the type definition using the <b class="cmd">option</b>
statement.  Consider the following type, to be used in an application
that manages a list of dogs for a pet store:</p>
<pre class="example">snit::type dog {
    option -breed -default mongrel
    option -color -default brown
    option -akc   -default 0
    option -shots -default 0
}
</pre>
<p>According to this, a dog has four notable properties: a
breed, a color, a flag that says whether it's pedigreed with the
American Kennel Club, and another flag that says whether it has had
its shots.  The default dog, evidently, is a brown mutt.</p>
<p>There are a number of options you can specify when defining an option;
if <b class="const">-default</b> is the only one, you can omit the word
<b class="const">-default</b> as follows:</p>
<pre class="example">snit::type dog {
    option -breed mongrel
    option -color brown
    option -akc   0
    option -shots 0
}
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
mongrel
%
</pre>
</div>
<div id="subsection53" class="subsection"><h3><a name="subsection53">How can a client set options after object creation?</a></h3>
<p>Any number of options may be set at one time using the
<b class="method">configure</b> instance method.  Suppose that closer inspection
shows that ::fido is not a brown mongrel, but rather a rare Arctic Boar 
Hound of a lovely dun color:</p>
<pre class="example">% fido configure -color dun -breed &quot;Arctic Boar Hound&quot;
% fido cget -color
dun
% fido cget -breed
Arctic Boar Hound
</pre>
<p>Alternatively, the <b class="method">configurelist</b> method takes a list of
options and values; occasionally this is more convenient:</p>
<pre class="example">% set features [list -color dun -breed &quot;Arctic Boar Hound&quot;]
-color dun -breed {Arctic Boar Hound}
% fido configurelist $features
% fido cget -color
dun
% fido cget -breed
Arctic Boar Hound
%
</pre>
<p>In Tcl 8.5, the <b class="cmd">*</b> keyword can be used with 
<b class="method">configure</b> in this case:</p>
<pre class="example">% set features [list -color dun -breed &quot;Arctic Boar Hound&quot;]
-color dun -breed {Arctic Boar Hound}
% fido configure {*}$features
% fido cget -color
dun
% fido cget -breed







|


















|







1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
mongrel
%
</pre>
</div>
<div id="subsection53" class="subsection"><h3><a name="subsection53">How can a client set options after object creation?</a></h3>
<p>Any number of options may be set at one time using the
<b class="method">configure</b> instance method.  Suppose that closer inspection
shows that ::fido is not a brown mongrel, but rather a rare Arctic Boar
Hound of a lovely dun color:</p>
<pre class="example">% fido configure -color dun -breed &quot;Arctic Boar Hound&quot;
% fido cget -color
dun
% fido cget -breed
Arctic Boar Hound
</pre>
<p>Alternatively, the <b class="method">configurelist</b> method takes a list of
options and values; occasionally this is more convenient:</p>
<pre class="example">% set features [list -color dun -breed &quot;Arctic Boar Hound&quot;]
-color dun -breed {Arctic Boar Hound}
% fido configurelist $features
% fido cget -color
dun
% fido cget -breed
Arctic Boar Hound
%
</pre>
<p>In Tcl 8.5, the <b class="cmd">*</b> keyword can be used with
<b class="method">configure</b> in this case:</p>
<pre class="example">% set features [list -color dun -breed &quot;Arctic Boar Hound&quot;]
-color dun -breed {Arctic Boar Hound}
% fido configure {*}$features
% fido cget -color
dun
% fido cget -breed
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
follows:</p>
<pre class="example">
    method gainWeight {} {
        incr options(-weight)
    }
</pre>
<p>As you can see, using the <b class="variable">options</b> variable involves considerably
less typing and is the usual way to do it.  But if you use 
<b class="const">-configuremethod</b> or <b class="const">-cgetmethod</b> (described in the following
answers), you might wish to use the <b class="method">configure</b> and 
<b class="method">cget</b> methods anyway, just so that any special processing you've
implemented is sure to get done.  Also, if the option is delegated to
a component then <b class="method">configure</b> and <b class="method">cget</b> are the only way
to access it without accessing the component directly.  See 
<span class="sectref"><a href="#section16">DELEGATION</a></span> for more information.</p>
</div>
<div id="subsection55" class="subsection"><h3><a name="subsection55">How can I make an option read-only?</a></h3>
<p>Define the option with <b class="const">-readonly yes</b>.</p>
<p>Suppose you've got an option that determines how
instances of your type are constructed; it must be set at creation
time, after which it's constant.  For example, a dog never changes its







|

|



|







1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
follows:</p>
<pre class="example">
    method gainWeight {} {
        incr options(-weight)
    }
</pre>
<p>As you can see, using the <b class="variable">options</b> variable involves considerably
less typing and is the usual way to do it.  But if you use
<b class="const">-configuremethod</b> or <b class="const">-cgetmethod</b> (described in the following
answers), you might wish to use the <b class="method">configure</b> and
<b class="method">cget</b> methods anyway, just so that any special processing you've
implemented is sure to get done.  Also, if the option is delegated to
a component then <b class="method">configure</b> and <b class="method">cget</b> are the only way
to access it without accessing the component directly.  See
<span class="sectref"><a href="#section16">DELEGATION</a></span> for more information.</p>
</div>
<div id="subsection55" class="subsection"><h3><a name="subsection55">How can I make an option read-only?</a></h3>
<p>Define the option with <b class="const">-readonly yes</b>.</p>
<p>Suppose you've got an option that determines how
instances of your type are constructed; it must be set at creation
time, after which it's constant.  For example, a dog never changes its
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
</pre>
</div>
<div id="subsection56" class="subsection"><h3><a name="subsection56">How can I catch accesses to an option's value?</a></h3>
<p>Define a <b class="const">-cgetmethod</b> for the option.</p>
</div>
<div id="subsection57" class="subsection"><h3><a name="subsection57">What is a -cgetmethod?</a></h3>
<p>A <b class="const">-cgetmethod</b> is a method that's called whenever the related
option's value is queried via the 
<b class="method">cget</b> instance method.  The handler can compute the option's
value, retrieve it from a database, or do anything else you'd like it to do.</p>
<p>Here's what the default behavior would look like if
written using a <b class="const">-cgetmethod</b>:</p>
<pre class="example">snit::type dog {
    option -color -default brown -cgetmethod GetOption
    method GetOption {option} {
        return $options($option)
    }
}
</pre>
<p>Any instance method can be used, provided that it takes one argument,
the name of the option whose value is to be retrieved.</p>
</div>
<div id="subsection58" class="subsection"><h3><a name="subsection58">How can I catch changes to an option's value?</a></h3>
<p>Define a <b class="const">-configuremethod</b> for the option.</p>
</div>
<div id="subsection59" class="subsection"><h3><a name="subsection59">What is a -configuremethod?</a></h3>
<p>A <b class="const">-configuremethod</b> is a method that's called whenever the
related option is given a new value via the <b class="method">configure</b> or
<b class="method">configurelist</b> instance methods. The method can 
pass the value on to some other object, store it in a database, or do
anything else you'd like it to do.</p>
<p>Here's what the default configuration behavior would look like if
written using a <b class="const">-configuremethod</b>:</p>
<pre class="example">snit::type dog {
    option -color -default brown -configuremethod SetOption
    method SetOption {option value} {







|




















|







1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
</pre>
</div>
<div id="subsection56" class="subsection"><h3><a name="subsection56">How can I catch accesses to an option's value?</a></h3>
<p>Define a <b class="const">-cgetmethod</b> for the option.</p>
</div>
<div id="subsection57" class="subsection"><h3><a name="subsection57">What is a -cgetmethod?</a></h3>
<p>A <b class="const">-cgetmethod</b> is a method that's called whenever the related
option's value is queried via the
<b class="method">cget</b> instance method.  The handler can compute the option's
value, retrieve it from a database, or do anything else you'd like it to do.</p>
<p>Here's what the default behavior would look like if
written using a <b class="const">-cgetmethod</b>:</p>
<pre class="example">snit::type dog {
    option -color -default brown -cgetmethod GetOption
    method GetOption {option} {
        return $options($option)
    }
}
</pre>
<p>Any instance method can be used, provided that it takes one argument,
the name of the option whose value is to be retrieved.</p>
</div>
<div id="subsection58" class="subsection"><h3><a name="subsection58">How can I catch changes to an option's value?</a></h3>
<p>Define a <b class="const">-configuremethod</b> for the option.</p>
</div>
<div id="subsection59" class="subsection"><h3><a name="subsection59">What is a -configuremethod?</a></h3>
<p>A <b class="const">-configuremethod</b> is a method that's called whenever the
related option is given a new value via the <b class="method">configure</b> or
<b class="method">configurelist</b> instance methods. The method can
pass the value on to some other object, store it in a database, or do
anything else you'd like it to do.</p>
<p>Here's what the default configuration behavior would look like if
written using a <b class="const">-configuremethod</b>:</p>
<pre class="example">snit::type dog {
    option -color -default brown -configuremethod SetOption
    method SetOption {option value} {
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
}
</pre>
<p>Every object of type <b class="cmd">mytype</b> now has access to a single variable
called <b class="variable">greeting</b>.</p>
</div>
<div id="subsection64" class="subsection"><h3><a name="subsection64">How is an array-valued type variable defined?</a></h3>
<p>Array-valued type variables are also defined using the
<b class="cmd">typevariable</b> command; to initialize them, include the 
<b class="const">-array</b> option:</p>
<pre class="example">snit::type mytype {
    # Define typearray variable &quot;greetings&quot;
    typevariable greetings -array {
        formal &quot;Good Evening&quot;
        casual &quot;Howdy!&quot;
    }
}
</pre>
</div>
<div id="subsection65" class="subsection"><h3><a name="subsection65">What happens if I don't initialize a type variable?</a></h3>
<p>Variables do not really exist until they are given values.  If you 
do not initialize a variable when you define it, then you must be
sure to assign a value to it (in the type constructor, say)
before you reference it.</p>
</div>
<div id="subsection66" class="subsection"><h3><a name="subsection66">Are there any limitations on type variable names?</a></h3>
<p>Type variable names have the same restrictions as 
the names of <span class="sectref"><a href="#section6">INSTANCE VARIABLES</a></span> do.</p>
</div>
<div id="subsection67" class="subsection"><h3><a name="subsection67">Do I need to declare my type variables in my methods?</a></h3>
<p>No. Once you've defined a type variable in the type definition, it can
be used in <span class="sectref"><a href="#section5">INSTANCE METHODS</a></span> or <span class="sectref"><a href="#section9">TYPE METHODS</a></span> without
declaration.  This differs from normal Tcl practice, in which all
non-local variables in a proc need to be declared.</p>







|











|





|







1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
}
</pre>
<p>Every object of type <b class="cmd">mytype</b> now has access to a single variable
called <b class="variable">greeting</b>.</p>
</div>
<div id="subsection64" class="subsection"><h3><a name="subsection64">How is an array-valued type variable defined?</a></h3>
<p>Array-valued type variables are also defined using the
<b class="cmd">typevariable</b> command; to initialize them, include the
<b class="const">-array</b> option:</p>
<pre class="example">snit::type mytype {
    # Define typearray variable &quot;greetings&quot;
    typevariable greetings -array {
        formal &quot;Good Evening&quot;
        casual &quot;Howdy!&quot;
    }
}
</pre>
</div>
<div id="subsection65" class="subsection"><h3><a name="subsection65">What happens if I don't initialize a type variable?</a></h3>
<p>Variables do not really exist until they are given values.  If you
do not initialize a variable when you define it, then you must be
sure to assign a value to it (in the type constructor, say)
before you reference it.</p>
</div>
<div id="subsection66" class="subsection"><h3><a name="subsection66">Are there any limitations on type variable names?</a></h3>
<p>Type variable names have the same restrictions as
the names of <span class="sectref"><a href="#section6">INSTANCE VARIABLES</a></span> do.</p>
</div>
<div id="subsection67" class="subsection"><h3><a name="subsection67">Do I need to declare my type variables in my methods?</a></h3>
<p>No. Once you've defined a type variable in the type definition, it can
be used in <span class="sectref"><a href="#section5">INSTANCE METHODS</a></span> or <span class="sectref"><a href="#section9">TYPE METHODS</a></span> without
declaration.  This differs from normal Tcl practice, in which all
non-local variables in a proc need to be declared.</p>
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
use the type name, or, if the callback is registered from within
a type method, <b class="variable">type</b>.  For example, suppose we want to print a
list of pedigreed dogs when a Tk button is pushed:</p>
<pre class="example">
button .btn -text &quot;Pedigrees&quot; -command [list dog printPedigrees]
pack .btn
</pre>
<p>Alternatively, from a method or type method you can use the 
<b class="cmd">mytypemethod</b> command, just as you would use <b class="cmd">mymethod</b>
to define a callback command for <span class="sectref"><a href="#section5">INSTANCE METHODS</a></span>.</p>
</div>
<div id="subsection78" class="subsection"><h3><a name="subsection78">Can type methods be hierarchical?</a></h3>
<p>Yes, you can define hierarchical type methods in just the same way as
you can define hierarchical instance methods.  See
<span class="sectref"><a href="#section5">INSTANCE METHODS</a></span> for more.</p>







|







1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
use the type name, or, if the callback is registered from within
a type method, <b class="variable">type</b>.  For example, suppose we want to print a
list of pedigreed dogs when a Tk button is pushed:</p>
<pre class="example">
button .btn -text &quot;Pedigrees&quot; -command [list dog printPedigrees]
pack .btn
</pre>
<p>Alternatively, from a method or type method you can use the
<b class="cmd">mytypemethod</b> command, just as you would use <b class="cmd">mymethod</b>
to define a callback command for <span class="sectref"><a href="#section5">INSTANCE METHODS</a></span>.</p>
</div>
<div id="subsection78" class="subsection"><h3><a name="subsection78">Can type methods be hierarchical?</a></h3>
<p>Yes, you can define hierarchical type methods in just the same way as
you can define hierarchical instance methods.  See
<span class="sectref"><a href="#section5">INSTANCE METHODS</a></span> for more.</p>
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
}
</pre>
</div>
<div id="subsection81" class="subsection"><h3><a name="subsection81">Are there any limitations on proc names?</a></h3>
<p>Any name can be used, so long as it does not begin with <b class="const">Snit_</b>;
names beginning with <b class="const">Snit_</b> are reserved for Snit's own use.
However, the wise programmer will avoid <b class="cmd"><a href="../../../../index.html#key570">proc</a></b> names (<b class="cmd"><a href="../../../../index.html#key279">set</a></b>,
<b class="cmd"><a href="../../../../index.html#key278">list</a></b>, <b class="cmd">if</b>, etc.) that would shadow standard Tcl
command names.</p>
<p><b class="cmd"><a href="../../../../index.html#key570">proc</a></b> names, being private, should begin with a capital letter according
to convention; however, as there are typically no public <b class="cmd"><a href="../../../../index.html#key570">proc</a></b>s
in the type's namespace it doesn't matter much either way.</p>
</div>
<div id="subsection82" class="subsection"><h3><a name="subsection82">How does a method call a proc?</a></h3>
<p>Just like it calls any Tcl command.  For example,</p>
<pre class="example">snit::type mytype {
    # Pops and returns the first item from the list stored in the
    # listvar, updating the listvar
    proc pop {listvar} { ... }
    variable requestQueue {}
    # Get one request from the queue and process it.
    method processRequest {} {
        set req [pop requestQueue]
    }
}
</pre>
</div>
<div id="subsection83" class="subsection"><h3><a name="subsection83">How can I pass a proc to another object as a callback?</a></h3>
<p>The <b class="cmd">myproc</b> command returns a callback command for the 
<b class="cmd"><a href="../../../../index.html#key570">proc</a></b>, just as <b class="cmd">mymethod</b> does for a method.</p>
</div>
</div>
<div id="section11" class="section"><h2><a name="section11">TYPE CONSTRUCTORS</a></h2>
<div id="subsection84" class="subsection"><h3><a name="subsection84">What is a type constructor?</a></h3>
<p>A type constructor is a body of code that initializes the type as a
whole, rather like a C++ static initializer.  The body of a type







|




















|







1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
}
</pre>
</div>
<div id="subsection81" class="subsection"><h3><a name="subsection81">Are there any limitations on proc names?</a></h3>
<p>Any name can be used, so long as it does not begin with <b class="const">Snit_</b>;
names beginning with <b class="const">Snit_</b> are reserved for Snit's own use.
However, the wise programmer will avoid <b class="cmd"><a href="../../../../index.html#key570">proc</a></b> names (<b class="cmd"><a href="../../../../index.html#key279">set</a></b>,
<b class="cmd"><a href="../../../../index.html#key280">list</a></b>, <b class="cmd">if</b>, etc.) that would shadow standard Tcl
command names.</p>
<p><b class="cmd"><a href="../../../../index.html#key570">proc</a></b> names, being private, should begin with a capital letter according
to convention; however, as there are typically no public <b class="cmd"><a href="../../../../index.html#key570">proc</a></b>s
in the type's namespace it doesn't matter much either way.</p>
</div>
<div id="subsection82" class="subsection"><h3><a name="subsection82">How does a method call a proc?</a></h3>
<p>Just like it calls any Tcl command.  For example,</p>
<pre class="example">snit::type mytype {
    # Pops and returns the first item from the list stored in the
    # listvar, updating the listvar
    proc pop {listvar} { ... }
    variable requestQueue {}
    # Get one request from the queue and process it.
    method processRequest {} {
        set req [pop requestQueue]
    }
}
</pre>
</div>
<div id="subsection83" class="subsection"><h3><a name="subsection83">How can I pass a proc to another object as a callback?</a></h3>
<p>The <b class="cmd">myproc</b> command returns a callback command for the
<b class="cmd"><a href="../../../../index.html#key570">proc</a></b>, just as <b class="cmd">mymethod</b> does for a method.</p>
</div>
</div>
<div id="section11" class="section"><h2><a name="section11">TYPE CONSTRUCTORS</a></h2>
<div id="subsection84" class="subsection"><h3><a name="subsection84">What is a type constructor?</a></h3>
<p>A type constructor is a body of code that initializes the type as a
whole, rather like a C++ static initializer.  The body of a type
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
other objects, updating type and instance variables, and so forth.</p>
<p>The constructor's return value is ignored (unless it's an
error, of course).</p>
</div>
<div id="subsection87" class="subsection"><h3><a name="subsection87">How do I define a constructor?</a></h3>
<p>A constructor is defined by using the <b class="cmd">constructor</b> statement in
the type definition.  Suppose that it's desired to keep a list of all
pedigreed dogs.  The list can be maintained in a 
type variable and retrieved by a type method.  Whenever a dog is
created, it can add itself to the list--provided that it's registered
with the American Kennel Club.</p>
<pre class="example">% snit::type dog {
    option -akc 0
    typevariable akcList {}
    constructor {args} {







|







1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
other objects, updating type and instance variables, and so forth.</p>
<p>The constructor's return value is ignored (unless it's an
error, of course).</p>
</div>
<div id="subsection87" class="subsection"><h3><a name="subsection87">How do I define a constructor?</a></h3>
<p>A constructor is defined by using the <b class="cmd">constructor</b> statement in
the type definition.  Suppose that it's desired to keep a list of all
pedigreed dogs.  The list can be maintained in a
type variable and retrieved by a type method.  Whenever a dog is
created, it can add itself to the list--provided that it's registered
with the American Kennel Club.</p>
<pre class="example">% snit::type dog {
    option -akc 0
    typevariable akcList {}
    constructor {args} {
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
% dog spot dalmatian -color spotted -akc 1
::spot
% spot breed
dalmatian
</pre>
<p>The drawback is that this syntax is non-standard, and may
limit the compatibility of your new type with other people's code.
For example, Snit assumes that it can create 
<span class="sectref"><a href="#section14">COMPONENTS</a></span> using the standard creation syntax.</p>
</div>
<div id="subsection90" class="subsection"><h3><a name="subsection90">Are there any limitations on constructor arguments?</a></h3>
<p>Constructor argument lists are subject to the same limitations
as those on instance method argument lists.  It has the
same implicit arguments, and can contain default values and the 
<b class="variable">args</b> argument.</p>
</div>
<div id="subsection91" class="subsection"><h3><a name="subsection91">Is there anything special about writing the constructor?</a></h3>
<p>Yes.  Writing the constructor can be tricky if you're delegating
options to components, and there are specific issues relating to
<b class="cmd">snit::widget</b>s and <b class="cmd">snit::widgetadaptor</b>s.  See 
<span class="sectref"><a href="#section16">DELEGATION</a></span>, <span class="sectref"><a href="#section17">WIDGETS</a></span>, 
<span class="sectref"><a href="#section18">WIDGET ADAPTORS</a></span>, and <span class="sectref"><a href="#section19">THE TK OPTION DATABASE</a></span>.</p>
</div>
</div>
<div id="section13" class="section"><h2><a name="section13">DESTRUCTORS</a></h2>
<div id="subsection92" class="subsection"><h3><a name="subsection92">What is a destructor?</a></h3>
<p>A destructor is a special kind of method that's called when an object
is destroyed.  It's responsible for doing any necessary clean-up when







|





|





|
|







1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
% dog spot dalmatian -color spotted -akc 1
::spot
% spot breed
dalmatian
</pre>
<p>The drawback is that this syntax is non-standard, and may
limit the compatibility of your new type with other people's code.
For example, Snit assumes that it can create
<span class="sectref"><a href="#section14">COMPONENTS</a></span> using the standard creation syntax.</p>
</div>
<div id="subsection90" class="subsection"><h3><a name="subsection90">Are there any limitations on constructor arguments?</a></h3>
<p>Constructor argument lists are subject to the same limitations
as those on instance method argument lists.  It has the
same implicit arguments, and can contain default values and the
<b class="variable">args</b> argument.</p>
</div>
<div id="subsection91" class="subsection"><h3><a name="subsection91">Is there anything special about writing the constructor?</a></h3>
<p>Yes.  Writing the constructor can be tricky if you're delegating
options to components, and there are specific issues relating to
<b class="cmd">snit::widget</b>s and <b class="cmd">snit::widgetadaptor</b>s.  See
<span class="sectref"><a href="#section16">DELEGATION</a></span>, <span class="sectref"><a href="#section17">WIDGETS</a></span>,
<span class="sectref"><a href="#section18">WIDGET ADAPTORS</a></span>, and <span class="sectref"><a href="#section19">THE TK OPTION DATABASE</a></span>.</p>
</div>
</div>
<div id="section13" class="section"><h2><a name="section13">DESTRUCTORS</a></h2>
<div id="subsection92" class="subsection"><h3><a name="subsection92">What is a destructor?</a></h3>
<p>A destructor is a special kind of method that's called when an object
is destroyed.  It's responsible for doing any necessary clean-up when
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
<span class="sectref"><a href="#section5">INSTANCE METHODS</a></span>: <b class="variable">type</b>, <b class="variable">selfns</b>, <b class="variable">win</b>, and
<b class="variable">self</b>.</p>
</div>
<div id="subsection96" class="subsection"><h3><a name="subsection96">Must components be destroyed explicitly?</a></h3>
<p>Yes and no.</p>
<p>Any Tk widgets created by a <b class="cmd">snit::widget</b> or
<b class="cmd">snit::widgetadaptor</b> will be destroyed automatically by Tk
when the megawidget is destroyed, in keeping with normal Tk behavior 
(destroying a parent widget destroys the whole tree).</p>
<p>Components of normal <b class="cmd">snit::types</b>, on the other hand, 
are never destroyed automatically, nor are non-widget components 
of Snit megawidgets.  If your object creates them in its 
constructor, then it should generally destroy them in its destructor.</p>
</div>
<div id="subsection97" class="subsection"><h3><a name="subsection97">Is there any special about writing a destructor?</a></h3>
<p>Yes.  If an object's constructor throws an error, the object's
destructor will be called to clean up; this means that the object
might not be completely constructed when the destructor is called.
This can cause the destructor to throw its own error; the result







|

|
|
|







1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
<span class="sectref"><a href="#section5">INSTANCE METHODS</a></span>: <b class="variable">type</b>, <b class="variable">selfns</b>, <b class="variable">win</b>, and
<b class="variable">self</b>.</p>
</div>
<div id="subsection96" class="subsection"><h3><a name="subsection96">Must components be destroyed explicitly?</a></h3>
<p>Yes and no.</p>
<p>Any Tk widgets created by a <b class="cmd">snit::widget</b> or
<b class="cmd">snit::widgetadaptor</b> will be destroyed automatically by Tk
when the megawidget is destroyed, in keeping with normal Tk behavior
(destroying a parent widget destroys the whole tree).</p>
<p>Components of normal <b class="cmd">snit::types</b>, on the other hand,
are never destroyed automatically, nor are non-widget components
of Snit megawidgets.  If your object creates them in its
constructor, then it should generally destroy them in its destructor.</p>
</div>
<div id="subsection97" class="subsection"><h3><a name="subsection97">Is there any special about writing a destructor?</a></h3>
<p>Yes.  If an object's constructor throws an error, the object's
destructor will be called to clean up; this means that the object
might not be completely constructed when the destructor is called.
This can cause the destructor to throw its own error; the result
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
</div>
<div id="section14" class="section"><h2><a name="section14">COMPONENTS</a></h2>
<div id="subsection98" class="subsection"><h3><a name="subsection98">What is a component?</a></h3>
<p>Often an object will create and manage a number of other objects.  A
Snit megawidget, for example, will often create a number of Tk
widgets.  These objects are part of the main object; it is composed
of them, so they are called components of the object.</p>
<p>But Snit also has a more precise meaning for 
<span class="sectref"><a href="#section14">COMPONENT</a></span>.  The components of a Snit object are those
objects to which methods or options can be delegated.
(See <span class="sectref"><a href="#section16">DELEGATION</a></span> for more information about delegation.)</p>
</div>
<div id="subsection99" class="subsection"><h3><a name="subsection99">How do I declare a component?</a></h3>
<p>First, you must decide what role a component plays within your object,
and give the role a name.  Then, you declare the component using its







|







1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
</div>
<div id="section14" class="section"><h2><a name="section14">COMPONENTS</a></h2>
<div id="subsection98" class="subsection"><h3><a name="subsection98">What is a component?</a></h3>
<p>Often an object will create and manage a number of other objects.  A
Snit megawidget, for example, will often create a number of Tk
widgets.  These objects are part of the main object; it is composed
of them, so they are called components of the object.</p>
<p>But Snit also has a more precise meaning for
<span class="sectref"><a href="#section14">COMPONENT</a></span>.  The components of a Snit object are those
objects to which methods or options can be delegated.
(See <span class="sectref"><a href="#section16">DELEGATION</a></span> for more information about delegation.)</p>
</div>
<div id="subsection99" class="subsection"><h3><a name="subsection99">How do I declare a component?</a></h3>
<p>First, you must decide what role a component plays within your object,
and give the role a name.  Then, you declare the component using its
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
<p>A component has two names.  The first name is that of the component
variable; this represents the role the component object plays within
the Snit object.  This is the component name proper, and is the name
used to refer to the component within Snit code.  The second name is
the name of the actual component object created by the Snit object's
constructor.  This second name is always a Tcl command name, and is
referred to as the component's object name.</p>
<p>In the example in the previous question, the component name is 
<b class="const">mytail</b>; the <b class="const">mytail</b> component's object name is chosen
automatically by Snit since <b class="const">%AUTO%</b> was used when the component
object was created.</p>
</div>
<div id="subsection101" class="subsection"><h3><a name="subsection101">Are there any limitations on component names?</a></h3>
<p>Yes.  <b class="cmd">snit::widget</b> and <b class="cmd">snit::widgetadaptor</b> objects have a special
component called the <b class="variable">hull</b> component; thus, the name <b class="variable">hull</b>







|







1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
<p>A component has two names.  The first name is that of the component
variable; this represents the role the component object plays within
the Snit object.  This is the component name proper, and is the name
used to refer to the component within Snit code.  The second name is
the name of the actual component object created by the Snit object's
constructor.  This second name is always a Tcl command name, and is
referred to as the component's object name.</p>
<p>In the example in the previous question, the component name is
<b class="const">mytail</b>; the <b class="const">mytail</b> component's object name is chosen
automatically by Snit since <b class="const">%AUTO%</b> was used when the component
object was created.</p>
</div>
<div id="subsection101" class="subsection"><h3><a name="subsection101">Are there any limitations on component names?</a></h3>
<p>Yes.  <b class="cmd">snit::widget</b> and <b class="cmd">snit::widgetadaptor</b> objects have a special
component called the <b class="variable">hull</b> component; thus, the name <b class="variable">hull</b>
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
        install mytail using tail %AUTO% -partof $self
        $self configurelist $args
    }
}
</pre>
<p>In a <b class="cmd">snit::type</b>'s code, the <b class="cmd">install</b>
command shown above is equivalent to the <b class="const">set mytail</b> command
that's commented out.  In a <b class="cmd">snit::widget</b>'s or 
<b class="cmd">snit::widgetadaptor</b>'s, code, however, the
<b class="cmd">install</b> command also queries <span class="sectref"><a href="#section19">THE TK OPTION DATABASE</a></span>
and initializes the new component's options accordingly.  For consistency,
it's a good idea to get in the habit of using <b class="cmd">install</b> for all
owned components.</p>
</div>
<div id="subsection104" class="subsection"><h3><a name="subsection104">Must owned components be created in the constructor?</a></h3>
<p>No, not necessarily.  In fact, there's no reason why an
object can't destroy and recreate a component multiple times over
its own lifetime.</p>
</div>
<div id="subsection105" class="subsection"><h3><a name="subsection105">Are there any limitations on component object names?</a></h3>
<p>Yes.</p>
<p>Component objects which are Tk widgets or megawidgets must have valid
Tk window names.</p>
<p>Component objects which are not widgets or megawidgets must have
fully-qualified command names, i.e., names which include the full
namespace of the command.  Note that Snit always creates objects with
fully qualified names.</p>
<p>Next, the object names of components and owned by your object 
must be unique.  This is no problem for widget components, since
widget names are always unique; but consider the following code:</p>
<pre class="example">snit::type tail { ... }
snit::type dog {
    delegate method wag to mytail
    constructor {} {
        install mytail using tail mytail







|



















|







2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
        install mytail using tail %AUTO% -partof $self
        $self configurelist $args
    }
}
</pre>
<p>In a <b class="cmd">snit::type</b>'s code, the <b class="cmd">install</b>
command shown above is equivalent to the <b class="const">set mytail</b> command
that's commented out.  In a <b class="cmd">snit::widget</b>'s or
<b class="cmd">snit::widgetadaptor</b>'s, code, however, the
<b class="cmd">install</b> command also queries <span class="sectref"><a href="#section19">THE TK OPTION DATABASE</a></span>
and initializes the new component's options accordingly.  For consistency,
it's a good idea to get in the habit of using <b class="cmd">install</b> for all
owned components.</p>
</div>
<div id="subsection104" class="subsection"><h3><a name="subsection104">Must owned components be created in the constructor?</a></h3>
<p>No, not necessarily.  In fact, there's no reason why an
object can't destroy and recreate a component multiple times over
its own lifetime.</p>
</div>
<div id="subsection105" class="subsection"><h3><a name="subsection105">Are there any limitations on component object names?</a></h3>
<p>Yes.</p>
<p>Component objects which are Tk widgets or megawidgets must have valid
Tk window names.</p>
<p>Component objects which are not widgets or megawidgets must have
fully-qualified command names, i.e., names which include the full
namespace of the command.  Note that Snit always creates objects with
fully qualified names.</p>
<p>Next, the object names of components and owned by your object
must be unique.  This is no problem for widget components, since
widget names are always unique; but consider the following code:</p>
<pre class="example">snit::type tail { ... }
snit::type dog {
    delegate method wag to mytail
    constructor {} {
        install mytail using tail mytail
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
<p>However, there are times when it's appropriate, not to mention
simpler, just to make the entire component part of your type's public
interface.</p>
</div>
<div id="subsection108" class="subsection"><h3><a name="subsection108">How do I expose a component's object command?</a></h3>
<p>When you declare the component, specify the <b class="cmd">component</b>
statement's <b class="const">-public</b> option.  The value of this option is the
name of a method which will be delegated to your component's object 
command.</p>
<p>For example, supposed you've written a combobox megawidget which owns
a listbox widget, and you want to make the listbox's entire interface 
public.  You can do it like this:</p>
<pre class="example">snit::widget combobox {
     component listbox -public listbox
     constructor {args} {
         install listbox using listbox $win.listbox ....
     }
}







|


|







2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
<p>However, there are times when it's appropriate, not to mention
simpler, just to make the entire component part of your type's public
interface.</p>
</div>
<div id="subsection108" class="subsection"><h3><a name="subsection108">How do I expose a component's object command?</a></h3>
<p>When you declare the component, specify the <b class="cmd">component</b>
statement's <b class="const">-public</b> option.  The value of this option is the
name of a method which will be delegated to your component's object
command.</p>
<p>For example, supposed you've written a combobox megawidget which owns
a listbox widget, and you want to make the listbox's entire interface
public.  You can do it like this:</p>
<pre class="example">snit::widget combobox {
     component listbox -public listbox
     constructor {args} {
         install listbox using listbox $win.listbox ....
     }
}
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
</div>
</div>
<div id="section15" class="section"><h2><a name="section15">TYPE COMPONENTS</a></h2>
<div id="subsection109" class="subsection"><h3><a name="subsection109">What is a type component?</a></h3>
<p>A type component is a component that belongs to the type itself
instead of to a particular instance of the type.  The relationship
between components and type components is the same as the
relationship between <span class="sectref"><a href="#section6">INSTANCE VARIABLES</a></span> and 
<span class="sectref"><a href="#section8">TYPE VARIABLES</a></span>.  Both <span class="sectref"><a href="#section5">INSTANCE METHODS</a></span> and
<span class="sectref"><a href="#section9">TYPE METHODS</a></span> can be delegated to type components.</p>
<p>Once you understand <span class="sectref"><a href="#section14">COMPONENTS</a></span> and
<span class="sectref"><a href="#section16">DELEGATION</a></span>, type components are just more of the same.</p>
</div>
<div id="subsection110" class="subsection"><h3><a name="subsection110">How do I declare a type component?</a></h3>
<p>Declare a type component using the <b class="cmd">typecomponent</b> statement.  It







|







2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
</div>
</div>
<div id="section15" class="section"><h2><a name="section15">TYPE COMPONENTS</a></h2>
<div id="subsection109" class="subsection"><h3><a name="subsection109">What is a type component?</a></h3>
<p>A type component is a component that belongs to the type itself
instead of to a particular instance of the type.  The relationship
between components and type components is the same as the
relationship between <span class="sectref"><a href="#section6">INSTANCE VARIABLES</a></span> and
<span class="sectref"><a href="#section8">TYPE VARIABLES</a></span>.  Both <span class="sectref"><a href="#section5">INSTANCE METHODS</a></span> and
<span class="sectref"><a href="#section9">TYPE METHODS</a></span> can be delegated to type components.</p>
<p>Once you understand <span class="sectref"><a href="#section14">COMPONENTS</a></span> and
<span class="sectref"><a href="#section16">DELEGATION</a></span>, type components are just more of the same.</p>
</div>
<div id="subsection110" class="subsection"><h3><a name="subsection110">How do I declare a type component?</a></h3>
<p>Declare a type component using the <b class="cmd">typecomponent</b> statement.  It
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
    typecomponent vet
    # ...
}
</pre>
</div>
<div id="subsection111" class="subsection"><h3><a name="subsection111">How do I install a type component?</a></h3>
<p>Just use the <b class="cmd"><a href="../../../../index.html#key279">set</a></b> command to assign the component's object
command to the type component.  Because types 
(even <b class="cmd">snit::widget</b> types) are not widgets, and do not have
options anyway, the extra features of the <b class="cmd">install</b> command are
not needed.</p>
<p>You'll usually install type components in the type constructor, as
shown here:</p>
<pre class="example">snit::type veterinarian { ... }
snit::type dog {
    typecomponent vet
    typeconstructor {
        set vet [veterinarian %AUTO%]
    }
}
</pre>
</div>
<div id="subsection112" class="subsection"><h3><a name="subsection112">Are there any limitations on type component names?</a></h3>
<p>Yes, the same as on <span class="sectref"><a href="#section6">INSTANCE VARIABLES</a></span>, 
<span class="sectref"><a href="#section8">TYPE VARIABLES</a></span>, and normal <span class="sectref"><a href="#section14">COMPONENTS</a></span>.</p>
</div>
</div>
<div id="section16" class="section"><h2><a name="section16">DELEGATION</a></h2>
<div id="subsection113" class="subsection"><h3><a name="subsection113">What is delegation?</a></h3>
<p>Delegation, simply put, is when you pass a task you've been given to
one of your assistants.  (You do have assistants, don't you?)  Snit
objects can do the same thing.  The following example shows one way in
which the <b class="cmd">dog</b> object can delegate its <b class="cmd">wag</b> method and its
<b class="option">-taillength</b> option to its <b class="cmd">tail</b> component.</p>
<pre class="example">snit::type dog {
    variable mytail
    option -taillength -configuremethod SetTailOption -cgetmethod GetTailOption
    
    method SetTailOption {option value} {
         $mytail configure $option $value
    }
    method GetTailOption {option} {
         $mytail cget $option
    }
    method wag {} {
        $mytail wag
    }
    constructor {args} {
        install mytail using tail %AUTO% -partof $self
        $self configurelist $args
    }
}
</pre>
<p>This is the hard way to do it, by it demonstrates what delegation is
all about.  See the following answers for the easy way to do it.</p>
<p>Note that the constructor calls the <b class="method">configurelist</b> method
<b class="cmd"><a href="../../../../index.html#key392">after</a></b> it creates its <b class="cmd">tail</b>; otherwise,
if <b class="option">-taillength</b> appeared in the list of <b class="variable">args</b> we'd get an
error.</p>
</div>
<div id="subsection114" class="subsection"><h3><a name="subsection114">How can I delegate a method to a component object?</a></h3>
<p>Delegation occurs frequently enough that Snit makes it easy. Any
method can be delegated to any component or type component 
by placing a single <b class="cmd">delegate</b> statement in the type definition.
(See <span class="sectref"><a href="#section14">COMPONENTS</a></span> and <span class="sectref"><a href="#section15">TYPE COMPONENTS</a></span>
for more information about component names.)</p>
<p>For example, here's a much better way to delegate the <b class="cmd">dog</b>
object's <b class="cmd">wag</b> method:</p>
<pre class="example">% snit::type dog {
    delegate method wag to mytail







|















|













<


















|





|







2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192

2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
    typecomponent vet
    # ...
}
</pre>
</div>
<div id="subsection111" class="subsection"><h3><a name="subsection111">How do I install a type component?</a></h3>
<p>Just use the <b class="cmd"><a href="../../../../index.html#key279">set</a></b> command to assign the component's object
command to the type component.  Because types
(even <b class="cmd">snit::widget</b> types) are not widgets, and do not have
options anyway, the extra features of the <b class="cmd">install</b> command are
not needed.</p>
<p>You'll usually install type components in the type constructor, as
shown here:</p>
<pre class="example">snit::type veterinarian { ... }
snit::type dog {
    typecomponent vet
    typeconstructor {
        set vet [veterinarian %AUTO%]
    }
}
</pre>
</div>
<div id="subsection112" class="subsection"><h3><a name="subsection112">Are there any limitations on type component names?</a></h3>
<p>Yes, the same as on <span class="sectref"><a href="#section6">INSTANCE VARIABLES</a></span>,
<span class="sectref"><a href="#section8">TYPE VARIABLES</a></span>, and normal <span class="sectref"><a href="#section14">COMPONENTS</a></span>.</p>
</div>
</div>
<div id="section16" class="section"><h2><a name="section16">DELEGATION</a></h2>
<div id="subsection113" class="subsection"><h3><a name="subsection113">What is delegation?</a></h3>
<p>Delegation, simply put, is when you pass a task you've been given to
one of your assistants.  (You do have assistants, don't you?)  Snit
objects can do the same thing.  The following example shows one way in
which the <b class="cmd">dog</b> object can delegate its <b class="cmd">wag</b> method and its
<b class="option">-taillength</b> option to its <b class="cmd">tail</b> component.</p>
<pre class="example">snit::type dog {
    variable mytail
    option -taillength -configuremethod SetTailOption -cgetmethod GetTailOption

    method SetTailOption {option value} {
         $mytail configure $option $value
    }
    method GetTailOption {option} {
         $mytail cget $option
    }
    method wag {} {
        $mytail wag
    }
    constructor {args} {
        install mytail using tail %AUTO% -partof $self
        $self configurelist $args
    }
}
</pre>
<p>This is the hard way to do it, by it demonstrates what delegation is
all about.  See the following answers for the easy way to do it.</p>
<p>Note that the constructor calls the <b class="method">configurelist</b> method
<b class="cmd"><a href="../../../../index.html#key391">after</a></b> it creates its <b class="cmd">tail</b>; otherwise,
if <b class="option">-taillength</b> appeared in the list of <b class="variable">args</b> we'd get an
error.</p>
</div>
<div id="subsection114" class="subsection"><h3><a name="subsection114">How can I delegate a method to a component object?</a></h3>
<p>Delegation occurs frequently enough that Snit makes it easy. Any
method can be delegated to any component or type component
by placing a single <b class="cmd">delegate</b> statement in the type definition.
(See <span class="sectref"><a href="#section14">COMPONENTS</a></span> and <span class="sectref"><a href="#section15">TYPE COMPONENTS</a></span>
for more information about component names.)</p>
<p>For example, here's a much better way to delegate the <b class="cmd">dog</b>
object's <b class="cmd">wag</b> method:</p>
<pre class="example">% snit::type dog {
    delegate method wag to mytail
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
    }
    # ...
}
</pre>
</div>
<div id="subsection117" class="subsection"><h3><a name="subsection117">Can I delegate a method to something other than an object?</a></h3>
<p>Normal method delegation assumes that you're delegating a method (a
subcommand of an object command) to a method of another object (a 
subcommand of a different object command).  But not all Tcl objects
follow Tk conventions, and not everything you'd to which you'd like
to delegate a method is necessary an object.  Consequently, Snit makes
it easy to delegate a method to pretty much anything you like using
the <b class="cmd">delegate</b> statement's <b class="const">using</b> clause.</p>
<p>Suppose your dog simulation stores dogs in a database, each dog as a
single record.  The database API you're using provides a number of
commands to manage records; each takes the record ID (a string you
choose) as its first argument.  For example, <b class="cmd">saverec</b>
saves a record.  If you let the record ID be the name of the dog
object, you can delegate the dog's <b class="method">save</b> method to the 
<b class="cmd">saverec</b> command as follows:</p>
<pre class="example">snit::type dog {
    delegate method save using {saverec %s}
}
</pre>
<p>The <b class="const">%s</b> is replaced with the instance name when the 
<b class="method">save</b> method is called; any additional arguments are the
appended to the resulting command.</p>
<p>The <b class="const">using</b> clause understands a number of other %-conversions;
in addition to the instance name, you can substitute in the method 
name (<b class="const">%m</b>), the type name (<b class="const">%t</b>), the instance 
namespace (<b class="const">%n</b>), the Tk window name (<b class="const">%w</b>), and,
if a component or typecomponent name was given in the 
<b class="cmd">delegate</b> statement, the component's object command 
(<b class="const">%c</b>).</p>
</div>
<div id="subsection118" class="subsection"><h3><a name="subsection118">How can I delegate a method to a type component object?</a></h3>
<p>Just exactly as you would to a component object.  The 
<b class="cmd">delegate method</b> statement accepts both component and type
component names in its <b class="const">to</b> clause.</p>
</div>
<div id="subsection119" class="subsection"><h3><a name="subsection119">How can I delegate a type method to a type component object?</a></h3>
<p>Use the <b class="cmd">delegate typemethod</b> statement.  It works like
<b class="cmd">delegate method</b>, with these differences: first, it defines
a type method instead of an instance method; second, the 
<b class="const">using</b> clause ignores the <b class="const">%s</b>, <b class="const">%n</b>, 
and <b class="const">%w</b> %-conversions.</p>
<p>Naturally, you can't delegate a type method to an instance
component...Snit wouldn't know which instance should receive it.</p>
</div>
<div id="subsection120" class="subsection"><h3><a name="subsection120">How can I delegate an option to a component object?</a></h3>
<p>The first question in this section (see <span class="sectref"><a href="#section16">DELEGATION</a></span>) shows
one way to delegate an option to a component; but this pattern occurs







|










|





|



|
|

|
|



|






|
|







2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
    }
    # ...
}
</pre>
</div>
<div id="subsection117" class="subsection"><h3><a name="subsection117">Can I delegate a method to something other than an object?</a></h3>
<p>Normal method delegation assumes that you're delegating a method (a
subcommand of an object command) to a method of another object (a
subcommand of a different object command).  But not all Tcl objects
follow Tk conventions, and not everything you'd to which you'd like
to delegate a method is necessary an object.  Consequently, Snit makes
it easy to delegate a method to pretty much anything you like using
the <b class="cmd">delegate</b> statement's <b class="const">using</b> clause.</p>
<p>Suppose your dog simulation stores dogs in a database, each dog as a
single record.  The database API you're using provides a number of
commands to manage records; each takes the record ID (a string you
choose) as its first argument.  For example, <b class="cmd">saverec</b>
saves a record.  If you let the record ID be the name of the dog
object, you can delegate the dog's <b class="method">save</b> method to the
<b class="cmd">saverec</b> command as follows:</p>
<pre class="example">snit::type dog {
    delegate method save using {saverec %s}
}
</pre>
<p>The <b class="const">%s</b> is replaced with the instance name when the
<b class="method">save</b> method is called; any additional arguments are the
appended to the resulting command.</p>
<p>The <b class="const">using</b> clause understands a number of other %-conversions;
in addition to the instance name, you can substitute in the method
name (<b class="const">%m</b>), the type name (<b class="const">%t</b>), the instance
namespace (<b class="const">%n</b>), the Tk window name (<b class="const">%w</b>), and,
if a component or typecomponent name was given in the
<b class="cmd">delegate</b> statement, the component's object command
(<b class="const">%c</b>).</p>
</div>
<div id="subsection118" class="subsection"><h3><a name="subsection118">How can I delegate a method to a type component object?</a></h3>
<p>Just exactly as you would to a component object.  The
<b class="cmd">delegate method</b> statement accepts both component and type
component names in its <b class="const">to</b> clause.</p>
</div>
<div id="subsection119" class="subsection"><h3><a name="subsection119">How can I delegate a type method to a type component object?</a></h3>
<p>Use the <b class="cmd">delegate typemethod</b> statement.  It works like
<b class="cmd">delegate method</b>, with these differences: first, it defines
a type method instead of an instance method; second, the
<b class="const">using</b> clause ignores the <b class="const">%s</b>, <b class="const">%n</b>,
and <b class="const">%w</b> %-conversions.</p>
<p>Naturally, you can't delegate a type method to an instance
component...Snit wouldn't know which instance should receive it.</p>
</div>
<div id="subsection120" class="subsection"><h3><a name="subsection120">How can I delegate an option to a component object?</a></h3>
<p>The first question in this section (see <span class="sectref"><a href="#section16">DELEGATION</a></span>) shows
one way to delegate an option to a component; but this pattern occurs
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
        $self configurelist $args
    }
    # ...
}
</pre>
<p>Dogs have four legs, so we specify that explicitly when we create the
<b class="variable">animal</b> component, and explicitly exclude <b class="option">-numlegs</b> from the
set of delegated options.  Similarly, dogs can neither 
<b class="method">fly</b> nor <b class="method">climb</b>,
so we exclude those <b class="cmd">animal</b> methods as shown.</p>
</div>
<div id="subsection124" class="subsection"><h3><a name="subsection124">Can a hierarchical method be delegated?</a></h3>
<p>Yes; just specify multiple words in the delegated method's name:</p>
<pre class="example">snit::type tail {
    method wag {} {return &quot;Wag, wag&quot;}







|







2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
        $self configurelist $args
    }
    # ...
}
</pre>
<p>Dogs have four legs, so we specify that explicitly when we create the
<b class="variable">animal</b> component, and explicitly exclude <b class="option">-numlegs</b> from the
set of delegated options.  Similarly, dogs can neither
<b class="method">fly</b> nor <b class="method">climb</b>,
so we exclude those <b class="cmd">animal</b> methods as shown.</p>
</div>
<div id="subsection124" class="subsection"><h3><a name="subsection124">Can a hierarchical method be delegated?</a></h3>
<p>Yes; just specify multiple words in the delegated method's name:</p>
<pre class="example">snit::type tail {
    method wag {} {return &quot;Wag, wag&quot;}
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
defines the <b class="const">-class</b> option.</p>
<p><b class="cmd">snit::widgetadaptor</b>s differ from <b class="cmd">snit::widget</b>s chiefly in
that any kind of widget can be used as the hull component; see
<span class="sectref"><a href="#section18">WIDGET ADAPTORS</a></span>.</p>
</div>
<div id="subsection129" class="subsection"><h3><a name="subsection129">How can I set the hull type for a snit::widget?</a></h3>
<p>A <b class="cmd">snit::widget</b>'s hull component will usually be a Tk <b class="cmd"><a href="../../../../index.html#key663">frame</a></b>
widget; however, it may be any Tk widget that defines the 
<b class="const">-class</b> option.  You can
explicitly choose the hull type you prefer by including the <b class="cmd">hulltype</b>
command in the widget definition:</p>
<pre class="example">snit::widget mytoplevel {
    hulltype toplevel
    # ...
}







|







2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
defines the <b class="const">-class</b> option.</p>
<p><b class="cmd">snit::widgetadaptor</b>s differ from <b class="cmd">snit::widget</b>s chiefly in
that any kind of widget can be used as the hull component; see
<span class="sectref"><a href="#section18">WIDGET ADAPTORS</a></span>.</p>
</div>
<div id="subsection129" class="subsection"><h3><a name="subsection129">How can I set the hull type for a snit::widget?</a></h3>
<p>A <b class="cmd">snit::widget</b>'s hull component will usually be a Tk <b class="cmd"><a href="../../../../index.html#key663">frame</a></b>
widget; however, it may be any Tk widget that defines the
<b class="const">-class</b> option.  You can
explicitly choose the hull type you prefer by including the <b class="cmd">hulltype</b>
command in the widget definition:</p>
<pre class="example">snit::widget mytoplevel {
    hulltype toplevel
    # ...
}
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
    # make this readonly.
    method insert {args} {}
    method delete {args} {}
    # Enable ins and del as synonyms, so the program can insert and
    # delete.
    delegate method ins to hull as insert
    delegate method del to hull as delete
    
    # Pass all other methods and options to the real text widget, so
    # that the remaining behavior is as expected.
    delegate method * to hull
    delegate option * to hull
}
</pre>
<p>The most important part is in the constructor.







<







2589
2590
2591
2592
2593
2594
2595

2596
2597
2598
2599
2600
2601
2602
    # make this readonly.
    method insert {args} {}
    method delete {args} {}
    # Enable ins and del as synonyms, so the program can insert and
    # delete.
    delegate method ins to hull as insert
    delegate method del to hull as delete

    # Pass all other methods and options to the real text widget, so
    # that the remaining behavior is as expected.
    delegate method * to hull
    delegate option * to hull
}
</pre>
<p>The most important part is in the constructor.
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
}
</pre>
</div>
<div id="subsection134" class="subsection"><h3><a name="subsection134">Can I adapt another megawidget?</a></h3>
<p>Maybe. If the other megawidget is a <b class="cmd">snit::widget</b> or
<b class="cmd">snit::widgetadaptor</b>, then yes.  If it isn't then, again, maybe.
You'll have to try it and see.  You're most likely to have trouble
with widget destruction--you have to make sure that your 
megawidget code receives the <b class="const">&lt;Destroy&gt;</b> event before the
megawidget you're adapting does.</p>
</div>
</div>
<div id="section19" class="section"><h2><a name="section19">THE TK OPTION DATABASE</a></h2>
<div id="subsection135" class="subsection"><h3><a name="subsection135">What is the Tk option database?</a></h3>
<p>The Tk option database is a database of default option values







|







2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
}
</pre>
</div>
<div id="subsection134" class="subsection"><h3><a name="subsection134">Can I adapt another megawidget?</a></h3>
<p>Maybe. If the other megawidget is a <b class="cmd">snit::widget</b> or
<b class="cmd">snit::widgetadaptor</b>, then yes.  If it isn't then, again, maybe.
You'll have to try it and see.  You're most likely to have trouble
with widget destruction--you have to make sure that your
megawidget code receives the <b class="const">&lt;Destroy&gt;</b> event before the
megawidget you're adapting does.</p>
</div>
</div>
<div id="section19" class="section"><h2><a name="section19">THE TK OPTION DATABASE</a></h2>
<div id="subsection135" class="subsection"><h3><a name="subsection135">What is the Tk option database?</a></h3>
<p>The Tk option database is a database of default option values
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
definition.</p></li>
<li><p>When defining or delegating options, specify the resource and class
names explicitly when necessary.</p></li>
<li><p>Use the <b class="cmd">installhull using</b> command to create and install the
hull for <b class="cmd">snit::widgetadaptor</b>s.</p></li>
<li><p>Use the <b class="cmd">install</b> command to create and install all
components which are widgets.</p></li>
<li><p>Use the <b class="cmd">install</b> command to create and install 
components which aren't widgets if you'd like them to 
receive option values from the option database.</p></li>
</ul>
<p>The interaction of Tk widgets with the option database is a complex
thing; the interaction of Snit with the option database is even more
so, and repays attention to detail.</p>
</div>
<div id="subsection136" class="subsection"><h3><a name="subsection136">Do snit::types use the Tk option database?</a></h3>







|
|







2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
definition.</p></li>
<li><p>When defining or delegating options, specify the resource and class
names explicitly when necessary.</p></li>
<li><p>Use the <b class="cmd">installhull using</b> command to create and install the
hull for <b class="cmd">snit::widgetadaptor</b>s.</p></li>
<li><p>Use the <b class="cmd">install</b> command to create and install all
components which are widgets.</p></li>
<li><p>Use the <b class="cmd">install</b> command to create and install
components which aren't widgets if you'd like them to
receive option values from the option database.</p></li>
</ul>
<p>The interaction of Tk widgets with the option database is a complex
thing; the interaction of Snit with the option database is even more
so, and repays attention to detail.</p>
</div>
<div id="subsection136" class="subsection"><h3><a name="subsection136">Do snit::types use the Tk option database?</a></h3>
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
<b class="cmd">snit::type</b>'s behalf.  This might or might not be what you
want, so take care.</p>
</div>
<div id="subsection137" class="subsection"><h3><a name="subsection137">What is my snit::widget's widget class?</a></h3>
<p>Every Tk widget has a &quot;widget class&quot;: a name that is used when adding
option settings to the database.  For Tk widgets, the widget class is
the same as the widget command name with an initial capital.  For
example, the widget class of the Tk <b class="cmd">button</b> widget is 
<b class="const">Button</b>.</p>
<p>Similarly, the widget class of a <b class="cmd">snit::widget</b> defaults to the
unqualified type name with the first letter capitalized.  For example,
the widget class of</p>
<pre class="example">snit::widget ::mylibrary::scrolledText { ... }
</pre>
<p>is <b class="const">ScrolledText</b>.</p>
<p>The widget class can also be set explicitly using the
<b class="cmd">widgetclass</b> statement within the <b class="cmd">snit::widget</b> definition:</p>
<pre class="example">snit::widget ::mylibrary::scrolledText {
    widgetclass Text
    # ...
}
</pre>
<p>The above definition says that a <b class="cmd">scrolledText</b> megawidget has the
same widget class as an ordinary <b class="cmd"><a href="../../../../index.html#key481">text</a></b> widget.  This might or
might not be a good idea, depending on how the rest of the megawidget
is defined, and how its options are delegated.</p>
</div>
<div id="subsection138" class="subsection"><h3><a name="subsection138">What is my snit::widgetadaptor's widget class?</a></h3>
<p>The widget class of a <b class="cmd">snit::widgetadaptor</b> is just the widget
class of its hull widget; Snit has no control over this.</p>
<p>Note that the widget class can be changed only for <b class="cmd"><a href="../../../../index.html#key663">frame</a></b> and







|















|







2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
<b class="cmd">snit::type</b>'s behalf.  This might or might not be what you
want, so take care.</p>
</div>
<div id="subsection137" class="subsection"><h3><a name="subsection137">What is my snit::widget's widget class?</a></h3>
<p>Every Tk widget has a &quot;widget class&quot;: a name that is used when adding
option settings to the database.  For Tk widgets, the widget class is
the same as the widget command name with an initial capital.  For
example, the widget class of the Tk <b class="cmd">button</b> widget is
<b class="const">Button</b>.</p>
<p>Similarly, the widget class of a <b class="cmd">snit::widget</b> defaults to the
unqualified type name with the first letter capitalized.  For example,
the widget class of</p>
<pre class="example">snit::widget ::mylibrary::scrolledText { ... }
</pre>
<p>is <b class="const">ScrolledText</b>.</p>
<p>The widget class can also be set explicitly using the
<b class="cmd">widgetclass</b> statement within the <b class="cmd">snit::widget</b> definition:</p>
<pre class="example">snit::widget ::mylibrary::scrolledText {
    widgetclass Text
    # ...
}
</pre>
<p>The above definition says that a <b class="cmd">scrolledText</b> megawidget has the
same widget class as an ordinary <b class="cmd"><a href="../../../../index.html#key480">text</a></b> widget.  This might or
might not be a good idea, depending on how the rest of the megawidget
is defined, and how its options are delegated.</p>
</div>
<div id="subsection138" class="subsection"><h3><a name="subsection138">What is my snit::widgetadaptor's widget class?</a></h3>
<p>The widget class of a <b class="cmd">snit::widgetadaptor</b> is just the widget
class of its hull widget; Snit has no control over this.</p>
<p>Note that the widget class can be changed only for <b class="cmd"><a href="../../../../index.html#key663">frame</a></b> and
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
commands.</p>
<p>The resource and class names are used to initialize option
default values by querying the option database.
The resource name is usually just the option
name minus the hyphen, but may contain uppercase letters at word
boundaries; the class name is usually just the resource
name with an initial capital, but not always.  For example, here are
the option, resource, and class names for several Tk <b class="cmd"><a href="../../../../index.html#key481">text</a></b>
widget options:</p>
<pre class="example">    -background         background         Background 
    -borderwidth        borderWidth        BorderWidth 
    -insertborderwidth  insertBorderWidth  BorderWidth 
    -padx               padX               Pad 
</pre>
<p>As is easily seen, sometimes the resource and class names can be
inferred from the option name, but not always.</p>
</div>
<div id="subsection140" class="subsection"><h3><a name="subsection140">What are the resource and class names for my megawidget's options?</a></h3>
<p>For options implicitly delegated to a component using
<b class="cmd">delegate option *</b>, the resource and class names will be







|

|
|
|
|







2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
commands.</p>
<p>The resource and class names are used to initialize option
default values by querying the option database.
The resource name is usually just the option
name minus the hyphen, but may contain uppercase letters at word
boundaries; the class name is usually just the resource
name with an initial capital, but not always.  For example, here are
the option, resource, and class names for several Tk <b class="cmd"><a href="../../../../index.html#key480">text</a></b>
widget options:</p>
<pre class="example">    -background         background         Background
    -borderwidth        borderWidth        BorderWidth
    -insertborderwidth  insertBorderWidth  BorderWidth
    -padx               padX               Pad
</pre>
<p>As is easily seen, sometimes the resource and class names can be
inferred from the option name, but not always.</p>
</div>
<div id="subsection140" class="subsection"><h3><a name="subsection140">What are the resource and class names for my megawidget's options?</a></h3>
<p>For options implicitly delegated to a component using
<b class="cmd">delegate option *</b>, the resource and class names will be
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
<p>The value of A is &quot;sunken&quot;.  The hull is a Tk frame which has been
given the widget class <b class="const">Mywidget</b>; it will automatically query the
option database and pick up this value.  Since the <b class="const">-relief</b> option is
implicitly delegated to the hull, Snit takes no action.</p>
<p>The value of B is &quot;red&quot;.  The hull will automatically pick up the
value &quot;green&quot; for its <b class="const">-background</b> option, just as it picked up the
<b class="const">-relief</b> value.  However, Snit knows that <b class="const">-hullbackground</b>
is mapped to the hull's <b class="const">-background</b> option; hence, it queries 
the option database for <b class="const">-hullbackground</b> and gets &quot;red&quot; and 
updates the hull accordingly.</p>
<p>The value of C is also &quot;red&quot;, because <b class="const">-background</b> is implicitly
delegated to the hull; thus, retrieving it is the same as retrieving
<b class="const">-hullbackground</b>.  Note that this case is unusual; the 
<b class="const">-background</b> option should probably have been excluded using the delegate
statement's <b class="const">except</b> clause, or (more likely) delegated to some other
component.</p>
<p>The value of D is &quot;5&quot;, but not for the reason you think.  Note that as
it is defined above, the resource name for <b class="const">-borderwidth</b> defaults to
<b class="const">borderwidth</b>, whereas the option database entry is 
<b class="const">borderWidth</b>, in
accordance with the standard Tk naming for this option.  As with
<b class="const">-relief</b>, the hull picks up its own <b class="const">-borderwidth</b>
option before Snit
does anything.  Because the option is delegated under its own name,
Snit assumes that the correct thing has happened, and doesn't worry
about it any further.  To avoid confusion, the 
<b class="const">-borderwidth</b> option
should have been delegated like this:</p>
<pre class="example">    delegate option {-borderwidth borderWidth BorderWidth} to hull
</pre>
<p>For <b class="cmd">snit::widgetadaptor</b>s, the case is somewhat altered.  Widget
adaptors retain the widget class of their hull, and the hull is not
created automatically by Snit.  Instead, the <b class="cmd">snit::widgetadaptor</b>







|
|



|





|






|







2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
<p>The value of A is &quot;sunken&quot;.  The hull is a Tk frame which has been
given the widget class <b class="const">Mywidget</b>; it will automatically query the
option database and pick up this value.  Since the <b class="const">-relief</b> option is
implicitly delegated to the hull, Snit takes no action.</p>
<p>The value of B is &quot;red&quot;.  The hull will automatically pick up the
value &quot;green&quot; for its <b class="const">-background</b> option, just as it picked up the
<b class="const">-relief</b> value.  However, Snit knows that <b class="const">-hullbackground</b>
is mapped to the hull's <b class="const">-background</b> option; hence, it queries
the option database for <b class="const">-hullbackground</b> and gets &quot;red&quot; and
updates the hull accordingly.</p>
<p>The value of C is also &quot;red&quot;, because <b class="const">-background</b> is implicitly
delegated to the hull; thus, retrieving it is the same as retrieving
<b class="const">-hullbackground</b>.  Note that this case is unusual; the
<b class="const">-background</b> option should probably have been excluded using the delegate
statement's <b class="const">except</b> clause, or (more likely) delegated to some other
component.</p>
<p>The value of D is &quot;5&quot;, but not for the reason you think.  Note that as
it is defined above, the resource name for <b class="const">-borderwidth</b> defaults to
<b class="const">borderwidth</b>, whereas the option database entry is
<b class="const">borderWidth</b>, in
accordance with the standard Tk naming for this option.  As with
<b class="const">-relief</b>, the hull picks up its own <b class="const">-borderwidth</b>
option before Snit
does anything.  Because the option is delegated under its own name,
Snit assumes that the correct thing has happened, and doesn't worry
about it any further.  To avoid confusion, the
<b class="const">-borderwidth</b> option
should have been delegated like this:</p>
<pre class="example">    delegate option {-borderwidth borderWidth BorderWidth} to hull
</pre>
<p>For <b class="cmd">snit::widgetadaptor</b>s, the case is somewhat altered.  Widget
adaptors retain the widget class of their hull, and the hull is not
created automatically by Snit.  Instead, the <b class="cmd">snit::widgetadaptor</b>
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
    # ...
}
</pre>
<p>In this case, the <b class="cmd">installhull</b> command will create the hull using
a command like this:</p>
<pre class="example">    set hull [text $win -foreground white]
</pre>
<p>The hull is a <b class="cmd"><a href="../../../../index.html#key481">text</a></b> widget, so its widget class is <b class="const">Text</b>.  Just
as with <b class="cmd">snit::widget</b> hulls, Snit assumes that it will pick up
all of its normal option values automatically, without help from Snit.
Options delegated from a different name are initialized from the
option database in the same way as described above.</p>
<p>In earlier versions of Snit, <b class="cmd">snit::widgetadaptor</b>s were expected
to call <b class="cmd">installhull</b> like this:</p>
<pre class="example">    installhull [text $win -foreground white]
</pre>
<p>This form still works--but Snit will not query the option database as
described above.</p>
</div>
<div id="subsection144" class="subsection"><h3><a name="subsection144">How does Snit initialize options delegated to other components?</a></h3>
<p>For hull components, Snit assumes that Tk will do most of the work
automatically.  Non-hull components are somewhat more complicated, because
they are matched against the option database twice.</p>
<p>A component widget remains a widget still, and is therefore
initialized from the option database in the usual way.  A <b class="cmd"><a href="../../../../index.html#key481">text</a></b>
widget remains a <b class="cmd"><a href="../../../../index.html#key481">text</a></b> widget whether it is a component of a
megawidget or not, and will be created as such.</p>
<p>But then, the option database is queried for all options delegated to
the component, and the component is initialized accordingly--provided
that the <b class="cmd">install</b> command is used to create it.</p>
<p>Before option database support was added to Snit, the usual way to
create a component was to simply create it in the constructor and
assign its command name to the component variable:</p>







|
















|
|







2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
    # ...
}
</pre>
<p>In this case, the <b class="cmd">installhull</b> command will create the hull using
a command like this:</p>
<pre class="example">    set hull [text $win -foreground white]
</pre>
<p>The hull is a <b class="cmd"><a href="../../../../index.html#key480">text</a></b> widget, so its widget class is <b class="const">Text</b>.  Just
as with <b class="cmd">snit::widget</b> hulls, Snit assumes that it will pick up
all of its normal option values automatically, without help from Snit.
Options delegated from a different name are initialized from the
option database in the same way as described above.</p>
<p>In earlier versions of Snit, <b class="cmd">snit::widgetadaptor</b>s were expected
to call <b class="cmd">installhull</b> like this:</p>
<pre class="example">    installhull [text $win -foreground white]
</pre>
<p>This form still works--but Snit will not query the option database as
described above.</p>
</div>
<div id="subsection144" class="subsection"><h3><a name="subsection144">How does Snit initialize options delegated to other components?</a></h3>
<p>For hull components, Snit assumes that Tk will do most of the work
automatically.  Non-hull components are somewhat more complicated, because
they are matched against the option database twice.</p>
<p>A component widget remains a widget still, and is therefore
initialized from the option database in the usual way.  A <b class="cmd"><a href="../../../../index.html#key480">text</a></b>
widget remains a <b class="cmd"><a href="../../../../index.html#key480">text</a></b> widget whether it is a component of a
megawidget or not, and will be created as such.</p>
<p>But then, the option database is queried for all options delegated to
the component, and the component is initialized accordingly--provided
that the <b class="cmd">install</b> command is used to create it.</p>
<p>Before option database support was added to Snit, the usual way to
create a component was to simply create it in the constructor and
assign its command name to the component variable:</p>
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
<ul class="itemized">
<li><p>Builds a list of the options explicitly included in the <b class="cmd">install</b>
command--in this case, <b class="const">-foreground</b>.</p></li>
<li><p>Queries the option database for all options delegated explicitly to
the named component.</p></li>
<li><p>Creates the component using the specified command, after inserting
into it a list of options and values read from the option database.
Thus, the explicitly included options (like <b class="const">-foreground</b>) will 
override anything read from the option database.</p></li>
<li><p>If the widget definition implicitly delegated options to the component
using <b class="cmd">delegate option *</b>, then Snit calls the newly created
component's <b class="cmd">configure</b> method to receive a list of all of the
component's options.  From this Snit builds a list of options
implicitly delegated to the component which were not explicitly
included in the <b class="cmd">install</b> command.  For all such options, Snit







|







2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
<ul class="itemized">
<li><p>Builds a list of the options explicitly included in the <b class="cmd">install</b>
command--in this case, <b class="const">-foreground</b>.</p></li>
<li><p>Queries the option database for all options delegated explicitly to
the named component.</p></li>
<li><p>Creates the component using the specified command, after inserting
into it a list of options and values read from the option database.
Thus, the explicitly included options (like <b class="const">-foreground</b>) will
override anything read from the option database.</p></li>
<li><p>If the widget definition implicitly delegated options to the component
using <b class="cmd">delegate option *</b>, then Snit calls the newly created
component's <b class="cmd">configure</b> method to receive a list of all of the
component's options.  From this Snit builds a list of options
implicitly delegated to the component which were not explicitly
included in the <b class="cmd">install</b> command.  For all such options, Snit
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
syntax.  If it doesn't, don't use <b class="cmd">install</b>.</p>
</div>
</div>
<div id="section20" class="section"><h2><a name="section20">ENSEMBLE COMMANDS</a></h2>
<div id="subsection146" class="subsection"><h3><a name="subsection146">What is an ensemble command?</a></h3>
<p>An ensemble command is a command with subcommands.  Snit objects are
all ensemble commands; however, the term more usually refers to
commands like the standard Tcl commands <b class="cmd"><a href="../../../../index.html#key272">string</a></b>, <b class="cmd"><a href="../../../../index.html#key35">file</a></b>, 
and <b class="cmd">clock</b>.  In a sense, these are singleton objects--there's
only one instance of them.</p>
</div>
<div id="subsection147" class="subsection"><h3><a name="subsection147">How can I create an ensemble command using Snit?</a></h3>
<p>There are two ways--as a <b class="cmd">snit::type</b>, or as an instance of
a <b class="cmd">snit::type</b>.</p>
</div>
<div id="subsection148" class="subsection"><h3><a name="subsection148">How can I create an ensemble command using an instance of a snit::type?</a></h3>
<p>Define a type whose <span class="sectref"><a href="#section5">INSTANCE METHODS</a></span> are the subcommands
of your ensemble command.  Then, create an instance of the type with
the desired name.</p>
<p>For example, the following code uses <span class="sectref"><a href="#section16">DELEGATION</a></span> to create
a work-alike for the standard <b class="cmd"><a href="../../../../index.html#key272">string</a></b> command:</p>
<pre class="example">snit::type ::mynamespace::mystringtype {
    delegate method * to stringhandler
    constructor {} {
        set stringhandler string
    }
}
::mynamespace::mystringtype mystring
</pre>
<p>We create the type in a namespace, so that the type command is hidden;
then we create a single instance with the desired name--
<b class="cmd">mystring</b>, in this case.</p>
<p>This method has two drawbacks.  First, it leaves the type command
floating about.  More seriously, your shiny new ensemble
command will have <b class="method">info</b> and <b class="method">destroy</b> subcommands that
you probably have no use for.  But read on.</p>
</div>
<div id="subsection149" class="subsection"><h3><a name="subsection149">How can I create an ensemble command using a snit::type?</a></h3>
<p>Define a type whose <span class="sectref"><a href="#section9">TYPE METHODS</a></span> are the subcommands
of your ensemble command.</p>
<p>For example, the following code uses <span class="sectref"><a href="#section16">DELEGATION</a></span> to create
a work-alike for the standard <b class="cmd"><a href="../../../../index.html#key272">string</a></b> command:</p>
<pre class="example">snit::type mystring {
    delegate typemethod * to stringhandler
    typeconstructor {
        set stringhandler string
    }
}
</pre>
<p>Now the type command itself is your ensemble command.</p>
<p>This method has only one drawback, and though it's major, it's 
also surmountable.  Your new ensemble command will have
<b class="method">create</b>, <b class="method">info</b> and <b class="method">destroy</b> subcommands
you don't want.  And worse yet, since the <b class="method">create</b> method
can be implicit, users of your command will accidentally be creating
instances of your <b class="cmd">mystring</b> type if they should mispell one
of the subcommands.  The command will succeed--the first time--but
won't do what's wanted.  This is very bad.</p>
<p>The work around is to set some <span class="sectref"><a href="#section21">PRAGMAS</a></span>, as shown here:</p>
<pre class="example">snit::type mystring {
    pragma -hastypeinfo    no 
    pragma -hastypedestroy no 
    pragma -hasinstances   no
    delegate typemethod * to stringhandler
    typeconstructor {
        set stringhandler string
    }
}
</pre>
<p>Here we've used the <b class="cmd">pragma</b> statement to tell Snit that we don't
want the <b class="method">info</b> typemethod or the <b class="method">destroy</b> typemethod,
and that our type has no instances; this eliminates the 
<b class="method">create</b> typemethod and all related code.  As
a result, our ensemble command will be well-behaved, with no
unexpected subcommands.</p>
</div>
</div>
<div id="section21" class="section"><h2><a name="section21">PRAGMAS</a></h2>
<div id="subsection150" class="subsection"><h3><a name="subsection150">What is a pragma?</a></h3>







|












|




















|








|









|
|









|







2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
syntax.  If it doesn't, don't use <b class="cmd">install</b>.</p>
</div>
</div>
<div id="section20" class="section"><h2><a name="section20">ENSEMBLE COMMANDS</a></h2>
<div id="subsection146" class="subsection"><h3><a name="subsection146">What is an ensemble command?</a></h3>
<p>An ensemble command is a command with subcommands.  Snit objects are
all ensemble commands; however, the term more usually refers to
commands like the standard Tcl commands <b class="cmd"><a href="../../../../index.html#key270">string</a></b>, <b class="cmd"><a href="../../../../index.html#key35">file</a></b>,
and <b class="cmd">clock</b>.  In a sense, these are singleton objects--there's
only one instance of them.</p>
</div>
<div id="subsection147" class="subsection"><h3><a name="subsection147">How can I create an ensemble command using Snit?</a></h3>
<p>There are two ways--as a <b class="cmd">snit::type</b>, or as an instance of
a <b class="cmd">snit::type</b>.</p>
</div>
<div id="subsection148" class="subsection"><h3><a name="subsection148">How can I create an ensemble command using an instance of a snit::type?</a></h3>
<p>Define a type whose <span class="sectref"><a href="#section5">INSTANCE METHODS</a></span> are the subcommands
of your ensemble command.  Then, create an instance of the type with
the desired name.</p>
<p>For example, the following code uses <span class="sectref"><a href="#section16">DELEGATION</a></span> to create
a work-alike for the standard <b class="cmd"><a href="../../../../index.html#key270">string</a></b> command:</p>
<pre class="example">snit::type ::mynamespace::mystringtype {
    delegate method * to stringhandler
    constructor {} {
        set stringhandler string
    }
}
::mynamespace::mystringtype mystring
</pre>
<p>We create the type in a namespace, so that the type command is hidden;
then we create a single instance with the desired name--
<b class="cmd">mystring</b>, in this case.</p>
<p>This method has two drawbacks.  First, it leaves the type command
floating about.  More seriously, your shiny new ensemble
command will have <b class="method">info</b> and <b class="method">destroy</b> subcommands that
you probably have no use for.  But read on.</p>
</div>
<div id="subsection149" class="subsection"><h3><a name="subsection149">How can I create an ensemble command using a snit::type?</a></h3>
<p>Define a type whose <span class="sectref"><a href="#section9">TYPE METHODS</a></span> are the subcommands
of your ensemble command.</p>
<p>For example, the following code uses <span class="sectref"><a href="#section16">DELEGATION</a></span> to create
a work-alike for the standard <b class="cmd"><a href="../../../../index.html#key270">string</a></b> command:</p>
<pre class="example">snit::type mystring {
    delegate typemethod * to stringhandler
    typeconstructor {
        set stringhandler string
    }
}
</pre>
<p>Now the type command itself is your ensemble command.</p>
<p>This method has only one drawback, and though it's major, it's
also surmountable.  Your new ensemble command will have
<b class="method">create</b>, <b class="method">info</b> and <b class="method">destroy</b> subcommands
you don't want.  And worse yet, since the <b class="method">create</b> method
can be implicit, users of your command will accidentally be creating
instances of your <b class="cmd">mystring</b> type if they should mispell one
of the subcommands.  The command will succeed--the first time--but
won't do what's wanted.  This is very bad.</p>
<p>The work around is to set some <span class="sectref"><a href="#section21">PRAGMAS</a></span>, as shown here:</p>
<pre class="example">snit::type mystring {
    pragma -hastypeinfo    no
    pragma -hastypedestroy no
    pragma -hasinstances   no
    delegate typemethod * to stringhandler
    typeconstructor {
        set stringhandler string
    }
}
</pre>
<p>Here we've used the <b class="cmd">pragma</b> statement to tell Snit that we don't
want the <b class="method">info</b> typemethod or the <b class="method">destroy</b> typemethod,
and that our type has no instances; this eliminates the
<b class="method">create</b> typemethod and all related code.  As
a result, our ensemble command will be well-behaved, with no
unexpected subcommands.</p>
</div>
</div>
<div id="section21" class="section"><h2><a name="section21">PRAGMAS</a></h2>
<div id="subsection150" class="subsection"><h3><a name="subsection150">What is a pragma?</a></h3>
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
an error instead of a new instance of the type.</p>
<p>This is useful if you wish to use a <b class="cmd">snit::type</b> to define
an ensemble command rather than a type with instances.</p>
<p>Pragmas <b class="const">-hastypemethods</b> and <b class="const">-hasinstances</b> cannot
both be false (or there'd be nothing left).</p>
</div>
<div id="subsection155" class="subsection"><h3><a name="subsection155">How can I get rid of type methods altogether?</a></h3>
<p>Normal Tk widget type commands don't have subcommands; all they do is 
create widgets--in Snit terms, the type command calls the 
<b class="method">create</b> type method directly.  To get the same behavior from 
Snit, set the <b class="const">-hastypemethods</b> pragma to <b class="const">no</b>:</p>
<pre class="example">snit::type dog {
    pragma -hastypemethods no
    #...
}
# Creates ::spot
dog spot
# Tries to create an instance called ::create
dog create spot
</pre>
<p>Pragmas <b class="const">-hastypemethods</b> and <b class="const">-hasinstances</b> cannot
both be false (or there'd be nothing left).</p>
</div>
<div id="subsection156" class="subsection"><h3><a name="subsection156">Why can't I create an object that replaces an old object with the same name?</a></h3>
<p>Up until Snit 0.95, you could use any name for an instance of a 
<b class="cmd">snit::type</b>, even if the name was already in use by some other
object or command.  You could do the following, for example:</p>
<pre class="example">snit::type dog { ... }
dog proc
</pre>
<p>You now have a new dog named &quot;proc&quot;, which is probably not something
that you really wanted to do.  As a result, Snit now throws an error
if your chosen instance name names an existing command.  To restore
the old behavior, set the <b class="const">-canreplace</b> pragma to <b class="const">yes</b>:</p>
<pre class="example">snit::type dog {
    pragma -canreplace yes
    # ...
}
</pre>
</div>
<div id="subsection157" class="subsection"><h3><a name="subsection157">How can I make my simple type run faster?</a></h3>
<p>In Snit 1.x, you can set the <b class="const">-simpledispatch</b> pragma to <b class="const">yes</b>.</p>
<p>Snit 1.x method dispatch is both flexible and fast, but the flexibility
comes with a price.  If your type doesn't require the flexibility, the 
<b class="const">-simpledispatch</b> pragma allows you to substitute a simpler
dispatch mechanism that runs quite a bit faster.  The limitations
are these:</p>
<ul class="itemized">
<li><p>Methods cannot be delegated.</p></li>
<li><p><b class="cmd">uplevel</b> and <b class="cmd">upvar</b> do not work as expected: the
caller's scope is two levels up rather than one.</p></li>
<li><p>The option-handling methods 
(<b class="cmd">cget</b>, <b class="cmd">configure</b>, and <b class="cmd">configurelist</b>) are very
slightly slower.</p></li>
</ul>
<p>In Snit 2.2, the <b class="const">-simpledispatch</b> macro is obsolete, and
ignored; all Snit 2.2 method dispatch is faster than Snit 1.x's 
<b class="const">-simpledispatch</b>.</p>
</div>
</div>
<div id="section22" class="section"><h2><a name="section22">MACROS</a></h2>
<div id="subsection158" class="subsection"><h3><a name="subsection158">What is a macro?</a></h3>
<p>A Snit macro is nothing more than a Tcl proc that's defined in the 
Tcl interpreter used to compile Snit type definitions.</p>
</div>
<div id="subsection159" class="subsection"><h3><a name="subsection159">What are macros good for?</a></h3>
<p>You can use Snit macros to define new type definition syntax, and to
support conditional compilation.</p>
</div>
<div id="subsection160" class="subsection"><h3><a name="subsection160">How do I do conditional compilation?</a></h3>







|
|
|














|


















|







|




|





|







3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
an error instead of a new instance of the type.</p>
<p>This is useful if you wish to use a <b class="cmd">snit::type</b> to define
an ensemble command rather than a type with instances.</p>
<p>Pragmas <b class="const">-hastypemethods</b> and <b class="const">-hasinstances</b> cannot
both be false (or there'd be nothing left).</p>
</div>
<div id="subsection155" class="subsection"><h3><a name="subsection155">How can I get rid of type methods altogether?</a></h3>
<p>Normal Tk widget type commands don't have subcommands; all they do is
create widgets--in Snit terms, the type command calls the
<b class="method">create</b> type method directly.  To get the same behavior from
Snit, set the <b class="const">-hastypemethods</b> pragma to <b class="const">no</b>:</p>
<pre class="example">snit::type dog {
    pragma -hastypemethods no
    #...
}
# Creates ::spot
dog spot
# Tries to create an instance called ::create
dog create spot
</pre>
<p>Pragmas <b class="const">-hastypemethods</b> and <b class="const">-hasinstances</b> cannot
both be false (or there'd be nothing left).</p>
</div>
<div id="subsection156" class="subsection"><h3><a name="subsection156">Why can't I create an object that replaces an old object with the same name?</a></h3>
<p>Up until Snit 0.95, you could use any name for an instance of a
<b class="cmd">snit::type</b>, even if the name was already in use by some other
object or command.  You could do the following, for example:</p>
<pre class="example">snit::type dog { ... }
dog proc
</pre>
<p>You now have a new dog named &quot;proc&quot;, which is probably not something
that you really wanted to do.  As a result, Snit now throws an error
if your chosen instance name names an existing command.  To restore
the old behavior, set the <b class="const">-canreplace</b> pragma to <b class="const">yes</b>:</p>
<pre class="example">snit::type dog {
    pragma -canreplace yes
    # ...
}
</pre>
</div>
<div id="subsection157" class="subsection"><h3><a name="subsection157">How can I make my simple type run faster?</a></h3>
<p>In Snit 1.x, you can set the <b class="const">-simpledispatch</b> pragma to <b class="const">yes</b>.</p>
<p>Snit 1.x method dispatch is both flexible and fast, but the flexibility
comes with a price.  If your type doesn't require the flexibility, the
<b class="const">-simpledispatch</b> pragma allows you to substitute a simpler
dispatch mechanism that runs quite a bit faster.  The limitations
are these:</p>
<ul class="itemized">
<li><p>Methods cannot be delegated.</p></li>
<li><p><b class="cmd">uplevel</b> and <b class="cmd">upvar</b> do not work as expected: the
caller's scope is two levels up rather than one.</p></li>
<li><p>The option-handling methods
(<b class="cmd">cget</b>, <b class="cmd">configure</b>, and <b class="cmd">configurelist</b>) are very
slightly slower.</p></li>
</ul>
<p>In Snit 2.2, the <b class="const">-simpledispatch</b> macro is obsolete, and
ignored; all Snit 2.2 method dispatch is faster than Snit 1.x's
<b class="const">-simpledispatch</b>.</p>
</div>
</div>
<div id="section22" class="section"><h2><a name="section22">MACROS</a></h2>
<div id="subsection158" class="subsection"><h3><a name="subsection158">What is a macro?</a></h3>
<p>A Snit macro is nothing more than a Tcl proc that's defined in the
Tcl interpreter used to compile Snit type definitions.</p>
</div>
<div id="subsection159" class="subsection"><h3><a name="subsection159">What are macros good for?</a></h3>
<p>You can use Snit macros to define new type definition syntax, and to
support conditional compilation.</p>
</div>
<div id="subsection160" class="subsection"><h3><a name="subsection160">How do I do conditional compilation?</a></h3>
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
        method bark {} {...}
        method wagtail {} {...}
    }
}
</pre>
</div>
<div id="subsection161" class="subsection"><h3><a name="subsection161">How do I define new type definition syntax?</a></h3>
<p>Use a macro.  For example, your <b class="cmd">snit::widget</b>'s 
<b class="const">-background</b> option should be propagated to a number
of component widgets.  You could implement that like this:</p>
<pre class="example">snit::widget mywidget {
    option -background -default white -configuremethod PropagateBackground
    method PropagateBackground {option value} {
        $comp1 configure $option $value
        $comp2 configure $option $value







|







3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
        method bark {} {...}
        method wagtail {} {...}
    }
}
</pre>
</div>
<div id="subsection161" class="subsection"><h3><a name="subsection161">How do I define new type definition syntax?</a></h3>
<p>Use a macro.  For example, your <b class="cmd">snit::widget</b>'s
<b class="const">-background</b> option should be propagated to a number
of component widgets.  You could implement that like this:</p>
<pre class="example">snit::widget mywidget {
    option -background -default white -configuremethod PropagateBackground
    method PropagateBackground {option value} {
        $comp1 configure $option $value
        $comp2 configure $option $value
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
type definition statements.  You can use any other command name,
including the name of a previously defined macro.</p>
<p>If you're using Snit macros in your application, go ahead and name
them in the global namespace, as shown above.  But if you're using
them to define types or widgets for use by others, you should define
your macros in the same namespace as your types or widgets.  That way,
they won't conflict with other people's macros.</p>
<p>If my fancy <b class="cmd">snit::widget</b> is called <b class="cmd">::mylib::mywidget</b>, 
for example, then I should define my <b class="cmd">propagate</b> macro as
<b class="cmd">::mylib::propagate</b>:</p>
<pre class="example">snit::macro mylib::propagate {option &quot;to&quot; components} { ... }
snit::widget ::mylib::mywidget {
    option -background default -white
    option -foreground default -black
    mylib::propagate -background to {comp1 comp2 comp3}
    mylib::propagate -foreground to {comp1 comp2 comp3}
}
</pre>
</div>
</div>
<div id="section23" class="section"><h2><a name="section23">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>snit</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key235">BWidget</a>, <a href="../../../../index.html#key230">C++</a>, <a href="../../../../index.html#key237">Incr Tcl</a>, <a href="../../../../index.html#key234">adaptors</a>, <a href="../../../../index.html#key236">class</a>, <a href="../../../../index.html#key232">mega widget</a>, <a href="../../../../index.html#key238">object</a>, <a href="../../../../index.html#key231">object oriented</a>, <a href="../../../../index.html#key229">widget</a>, <a href="../../../../index.html#key233">widget adaptors</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003-2006, by William H. Duquette</p>
</div>
</div></body></html>







|












|



|




|








3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
type definition statements.  You can use any other command name,
including the name of a previously defined macro.</p>
<p>If you're using Snit macros in your application, go ahead and name
them in the global namespace, as shown above.  But if you're using
them to define types or widgets for use by others, you should define
your macros in the same namespace as your types or widgets.  That way,
they won't conflict with other people's macros.</p>
<p>If my fancy <b class="cmd">snit::widget</b> is called <b class="cmd">::mylib::mywidget</b>,
for example, then I should define my <b class="cmd">propagate</b> macro as
<b class="cmd">::mylib::propagate</b>:</p>
<pre class="example">snit::macro mylib::propagate {option &quot;to&quot; components} { ... }
snit::widget ::mylib::mywidget {
    option -background default -white
    option -foreground default -black
    mylib::propagate -background to {comp1 comp2 comp3}
    mylib::propagate -foreground to {comp1 comp2 comp3}
}
</pre>
</div>
</div>
<div id="section23" class="section"><h2><a name="section23">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>snit</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key235">BWidget</a>, <a href="../../../../index.html#key231">C++</a>, <a href="../../../../index.html#key238">Incr Tcl</a>, <a href="../../../../index.html#key236">adaptors</a>, <a href="../../../../index.html#key234">class</a>, <a href="../../../../index.html#key233">mega widget</a>, <a href="../../../../index.html#key237">object</a>, <a href="../../../../index.html#key230">object oriented</a>, <a href="../../../../index.html#key229">widget</a>, <a href="../../../../index.html#key232">widget adaptors</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003-2006, by William H. Duquette</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/soundex/soundex.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">EXAMPLES</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">EXAMPLES</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
</div>
<div id="section2" class="section"><h2><a name="section2">EXAMPLES</a></h2>
<pre class="example">
    % ::soundex::knuth Knuth
    K530
</pre>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>soundex</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key264">knuth</a>, <a href="../../../../index.html#key265">soundex</a>, <a href="../../../../index.html#key263">text comparison</a>, <a href="../../../../index.html#key266">text likeness</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; ????, Algorithm: Donald E. Knuth<br>
Copyright &copy; 2003, Documentation: Andreas Kupries &lt;[email protected]&gt;<br>
Copyright &copy; 1998, Tcl port: Evan Rempel &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|










149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
</div>
<div id="section2" class="section"><h2><a name="section2">EXAMPLES</a></h2>
<pre class="example">
    % ::soundex::knuth Knuth
    K530
</pre>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>soundex</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key265">knuth</a>, <a href="../../../../index.html#key264">soundex</a>, <a href="../../../../index.html#key263">text comparison</a>, <a href="../../../../index.html#key266">text likeness</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; ????, Algorithm: Donald E. Knuth<br>
Copyright &copy; 2003, Documentation: Andreas Kupries &lt;[email protected]&gt;<br>
Copyright &copy; 1998, Tcl port: Evan Rempel &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/stooop/stooop.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">DEBUGGING</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">DEBUGGING</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
<li><a href="#9"><b class="cmd">::stooop::report</b> <span class="opt">?<i class="arg">pattern</i>?</span></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package provides commands to extend Tcl in an object oriented
manner, using a familiar C++ like syntax and behaviour. Stooop only
introduces a few new commands: <b class="cmd"><a href="../../../../index.html#key236">class</a></b>, <b class="cmd">new</b>, <b class="cmd">delete</b>,
<b class="cmd">virtual</b> and <b class="cmd">classof</b>. Along with a few coding conventions,
that is basically all you need to know to use stooop. Stooop is meant
to be as simple to use as possible.</p>
<p>This manual is very succinct and is to be used as a quick reminder for
the programmer, who should have read the thorough <a href="stooop_man.html">stooop_man.html</a>
HTML documentation at this point.</p>
<dl class="definitions">







|







140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
<li><a href="#9"><b class="cmd">::stooop::report</b> <span class="opt">?<i class="arg">pattern</i>?</span></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package provides commands to extend Tcl in an object oriented
manner, using a familiar C++ like syntax and behaviour. Stooop only
introduces a few new commands: <b class="cmd"><a href="../../../../index.html#key234">class</a></b>, <b class="cmd">new</b>, <b class="cmd">delete</b>,
<b class="cmd">virtual</b> and <b class="cmd">classof</b>. Along with a few coding conventions,
that is basically all you need to know to use stooop. Stooop is meant
to be as simple to use as possible.</p>
<p>This manual is very succinct and is to be used as a quick reminder for
the programmer, who should have read the thorough <a href="stooop_man.html">stooop_man.html</a>
HTML documentation at this point.</p>
<dl class="definitions">
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
<b class="const">&quot;class: %C, procedure: %p, object: %O, arguments: %a&quot;</b>.</p></dd>
<dt><b class="variable">STOOOPTRACEDATA</b></dt>
<dd><p>Setting this environment variable to either <b class="const">stdout</b>,
<b class="const">stderr</b> or a file name, activates data tracing. The stooop
library will then output to the specified channel 1 line of
informational text for each member data access.</p></dd>
<dt><b class="variable">STOOOPTRACEDATAFORMAT</b></dt>
<dd><p>Defines the trace data output format. Defaults to 
<b class="const">&quot;class: %C, procedure: %p, array: %A, object: %O, member: %m, operation: %o, value: %v&quot;</b>.</p></dd>
<dt><b class="variable">STOOOPTRACEDATAOPERATIONS</b></dt>
<dd><p>When tracing data output, by default, all read, write and unsetting
accesses are reported, but the user can set this variable to any
combination of the letters <b class="const">r</b>, <b class="const">w</b>, and <b class="const">u</b> for
more specific tracing (please refer to the <b class="cmd"><a href="../../../../index.html#key71">trace</a></b> Tcl manual page
for more information).</p></dd>
<dt><b class="variable">STOOOPTRACEALL</b></dt>
<dd><p>Setting this environment variable to either <b class="const">stdout</b>,
<b class="const">stderr</b> or a file name, enables both procedure and data
tracing.</p></dd>
</dl></dd>
<dt><a name="7"><b class="cmd">::stooop::printObjects</b> <span class="opt">?<i class="arg">pattern</i>?</span></a></dt>







|





|







248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
<b class="const">&quot;class: %C, procedure: %p, object: %O, arguments: %a&quot;</b>.</p></dd>
<dt><b class="variable">STOOOPTRACEDATA</b></dt>
<dd><p>Setting this environment variable to either <b class="const">stdout</b>,
<b class="const">stderr</b> or a file name, activates data tracing. The stooop
library will then output to the specified channel 1 line of
informational text for each member data access.</p></dd>
<dt><b class="variable">STOOOPTRACEDATAFORMAT</b></dt>
<dd><p>Defines the trace data output format. Defaults to
<b class="const">&quot;class: %C, procedure: %p, array: %A, object: %O, member: %m, operation: %o, value: %v&quot;</b>.</p></dd>
<dt><b class="variable">STOOOPTRACEDATAOPERATIONS</b></dt>
<dd><p>When tracing data output, by default, all read, write and unsetting
accesses are reported, but the user can set this variable to any
combination of the letters <b class="const">r</b>, <b class="const">w</b>, and <b class="const">u</b> for
more specific tracing (please refer to the <b class="cmd"><a href="../../../../index.html#key70">trace</a></b> Tcl manual page
for more information).</p></dd>
<dt><b class="variable">STOOOPTRACEALL</b></dt>
<dd><p>Setting this environment variable to either <b class="const">stdout</b>,
<b class="const">stderr</b> or a file name, enables both procedure and data
tracing.</p></dd>
</dl></dd>
<dt><a name="7"><b class="cmd">::stooop::printObjects</b> <span class="opt">?<i class="arg">pattern</i>?</span></a></dt>
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
procedure was invoked last. If present, the pattern argument limits
the output to matching class names.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">EXAMPLES</a></h2>
<p>Please see the full HTML documentation in <a href="stooop_man.html">stooop_man.html</a>.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>stooop</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key230">C++</a>, <a href="../../../../index.html#key236">class</a>, <a href="../../../../index.html#key238">object</a>, <a href="../../../../index.html#key231">object oriented</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>







|



|




|





280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
procedure was invoked last. If present, the pattern argument limits
the output to matching class names.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">EXAMPLES</a></h2>
<p>Please see the full HTML documentation in <a href="stooop_man.html">stooop_man.html</a>.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>stooop</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key231">C++</a>, <a href="../../../../index.html#key234">class</a>, <a href="../../../../index.html#key237">object</a>, <a href="../../../../index.html#key230">object oriented</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/string/token.html.

110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<p>string::token - Regex based iterative lexing</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<p>string::token - Regex based iterative lexing</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
stops the process. Because of this it is recommended to specify the
patterns to lex with from the most specific to the most general.</p>
<p>Further note that all regex patterns are implicitly prefixed
with the constraint escape <b class="const">A</b> to ensure that a match starts
exactly at the character index found in <i class="arg">startvar</i>.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>textutil</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key679">lexing</a>, <a href="../../../../index.html#key678">regex</a>, <a href="../../../../index.html#key272">string</a>, <a href="../../../../index.html#key680">tokenization</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
</div></body></html>







|



|




|





189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
stops the process. Because of this it is recommended to specify the
patterns to lex with from the most specific to the most general.</p>
<p>Further note that all regex patterns are implicitly prefixed
with the constraint escape <b class="const">A</b> to ensure that a match starts
exactly at the character index found in <i class="arg">startvar</i>.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>textutil</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key680">lexing</a>, <a href="../../../../index.html#key679">regex</a>, <a href="../../../../index.html#key270">string</a>, <a href="../../../../index.html#key678">tokenization</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/string/token_shell.html.

110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<p>string::token::shell - Parsing of shell command line</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<p>string::token::shell - Parsing of shell command line</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
<dd><p>Whitespace is any unicode space character.
This is equivalent to <b class="cmd">string is space</b>, or the regular
expression \\s.</p>
<p>Whitespace may occur before the first word, or after the last word. Whitespace must occur between adjacent words.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>textutil</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key727">bash</a>, <a href="../../../../index.html#key679">lexing</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key726">shell</a>, <a href="../../../../index.html#key272">string</a>, <a href="../../../../index.html#key680">tokenization</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
</div></body></html>







|



|




|





208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
<dd><p>Whitespace is any unicode space character.
This is equivalent to <b class="cmd">string is space</b>, or the regular
expression \\s.</p>
<p>Whitespace may occur before the first word, or after the last word. Whitespace must occur between adjacent words.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>textutil</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key727">bash</a>, <a href="../../../../index.html#key680">lexing</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key726">shell</a>, <a href="../../../../index.html#key270">string</a>, <a href="../../../../index.html#key678">tokenization</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/stringprep/stringprep.html.

117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">REFERENCES</a></li>
<li class="section"><a href="#section5">AUTHORS</a></li>
<li class="section"><a href="#section6">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">REFERENCES</a></li>
<li class="section"><a href="#section5">AUTHORS</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
<li><p>&quot;Extensible Messaging and Presence Protocol (XMPP): Core&quot;,
    (<a href="http://www.ietf.org/rfc/rfc3920.txt">http://www.ietf.org/rfc/rfc3920.txt</a>)</p></li>
</ol>
</div>
<div id="section5" class="section"><h2><a name="section5">AUTHORS</a></h2>
<p>Sergei Golovan</p>
</div>
<div id="section6" class="section"><h2><a name="section6">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>stringprep</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="unicode.html">unicode(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key626">stringprep</a>, <a href="../../../../index.html#key627">unicode</a></p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007-2009, Sergei Golovan &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
<li><p>&quot;Extensible Messaging and Presence Protocol (XMPP): Core&quot;,
    (<a href="http://www.ietf.org/rfc/rfc3920.txt">http://www.ietf.org/rfc/rfc3920.txt</a>)</p></li>
</ol>
</div>
<div id="section5" class="section"><h2><a name="section5">AUTHORS</a></h2>
<p>Sergei Golovan</p>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>stringprep</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="unicode.html">unicode(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key626">stringprep</a>, <a href="../../../../index.html#key627">unicode</a></p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007-2009, Sergei Golovan &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/stringprep/stringprep_data.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
<p>stringprep::data - stringprep data tables, generated, internal</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.3</b></li>
<li>package require <b class="pkgname">stringprep::data 1.0.1</b></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>The <b class="package">stringprep::data</b> package is a helper for
<b class="package"><a href="stringprep.html">stringprep</a></b>, providing it with the data tables needed to
perform its functions. It is an <em>internal</em> package which should
not be accessed on its own. Because of that it has no publicly
documented API either. Its implementation is generated by a script.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>stringprep</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key626">stringprep</a>, <a href="../../../../index.html#key627">unicode</a></p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007-2009, Sergei Golovan &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



















|



|










113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
<p>stringprep::data - stringprep data tables, generated, internal</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.3</b></li>
<li>package require <b class="pkgname">stringprep::data 1.0.1</b></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>The <b class="package">stringprep::data</b> package is a helper for
<b class="package"><a href="stringprep.html">stringprep</a></b>, providing it with the data tables needed to
perform its functions. It is an <em>internal</em> package which should
not be accessed on its own. Because of that it has no publicly
documented API either. Its implementation is generated by a script.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>stringprep</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key626">stringprep</a>, <a href="../../../../index.html#key627">unicode</a></p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007-2009, Sergei Golovan &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/stringprep/unicode.html.

117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">REFERENCES</a></li>
<li class="section"><a href="#section5">AUTHORS</a></li>
<li class="section"><a href="#section6">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">REFERENCES</a></li>
<li class="section"><a href="#section5">AUTHORS</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
<li><p>&quot;Unicode Standard Annex #15: Unicode Normalization Forms&quot;,
    (<a href="http://unicode.org/reports/tr15/">http://unicode.org/reports/tr15/</a>)</p></li>
</ol>
</div>
<div id="section5" class="section"><h2><a name="section5">AUTHORS</a></h2>
<p>Sergei Golovan</p>
</div>
<div id="section6" class="section"><h2><a name="section6">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>stringprep</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="stringprep.html">stringprep(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key120">normalization</a>, <a href="../../../../index.html#key627">unicode</a></p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007, Sergei Golovan &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
<li><p>&quot;Unicode Standard Annex #15: Unicode Normalization Forms&quot;,
    (<a href="http://unicode.org/reports/tr15/">http://unicode.org/reports/tr15/</a>)</p></li>
</ol>
</div>
<div id="section5" class="section"><h2><a name="section5">AUTHORS</a></h2>
<p>Sergei Golovan</p>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>stringprep</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="stringprep.html">stringprep(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key120">normalization</a>, <a href="../../../../index.html#key627">unicode</a></p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007, Sergei Golovan &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/stringprep/unicode_data.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
<p>unicode::data - unicode data tables, generated, internal</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.3</b></li>
<li>package require <b class="pkgname">unicode::data 1.0.0</b></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>The <b class="package">unicode::data</b> package is a helper for
<b class="package"><a href="unicode.html">unicode</a></b>, providing it with the data tables needed to
perform its functions. It is an <em>internal</em> package which should
not be accessed on its own. Because of that it has no publicly
documented API either. Its implementation is generated by a script.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>stringprep</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key626">stringprep</a>, <a href="../../../../index.html#key627">unicode</a></p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007, Sergei Golovan &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



















|



|










113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
<p>unicode::data - unicode data tables, generated, internal</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.3</b></li>
<li>package require <b class="pkgname">unicode::data 1.0.0</b></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>The <b class="package">unicode::data</b> package is a helper for
<b class="package"><a href="unicode.html">unicode</a></b>, providing it with the data tables needed to
perform its functions. It is an <em>internal</em> package which should
not be accessed on its own. Because of that it has no publicly
documented API either. Its implementation is generated by a script.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>stringprep</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key626">stringprep</a>, <a href="../../../../index.html#key627">unicode</a></p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007, Sergei Golovan &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/struct/disjointset.html.

111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
<dt><a name="8"><i class="arg">disjointsetName</i> <b class="method">find</b> <i class="arg">e</i></a></dt>
<dd><p>Returns the partition of the disjoint set which contains the element
<i class="arg">e</i>.</p></dd>
<dt><a name="9"><i class="arg">disjointsetName</i> <b class="method">destroy</b></a></dt>
<dd><p>Destroys the disjoint set object and all associated memory.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: disjointset</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key605">disjoint set</a>, <a href="../../../../index.html#key604">equivalence class</a>, <a href="../../../../index.html#key606">find</a>, <a href="../../../../index.html#key608">merge find</a>, <a href="../../../../index.html#key609">partition</a>, <a href="../../../../index.html#key610">partitioned set</a>, <a href="../../../../index.html#key607">union</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
</div></body></html>







|



|




|





227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
<dt><a name="8"><i class="arg">disjointsetName</i> <b class="method">find</b> <i class="arg">e</i></a></dt>
<dd><p>Returns the partition of the disjoint set which contains the element
<i class="arg">e</i>.</p></dd>
<dt><a name="9"><i class="arg">disjointsetName</i> <b class="method">destroy</b></a></dt>
<dd><p>Destroys the disjoint set object and all associated memory.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: disjointset</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key605">disjoint set</a>, <a href="../../../../index.html#key604">equivalence class</a>, <a href="../../../../index.html#key608">find</a>, <a href="../../../../index.html#key607">merge find</a>, <a href="../../../../index.html#key609">partition</a>, <a href="../../../../index.html#key610">partitioned set</a>, <a href="../../../../index.html#key606">union</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/struct/graph.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Changes for 2.0</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Changes for 2.0</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>A directed graph is a structure containing two collections of
elements, called <i class="term">nodes</i> and <i class="term">arcs</i> respectively, together
with a relation (&quot;connectivity&quot;) that places a general structure upon
the nodes and arcs.</p>
<p>Each arc is connected to two nodes, one of which is called the
<i class="term"><a href="../../../../index.html#key412">source</a></i> and the other the <i class="term">target</i>. This imposes a
direction upon the arc, which is said to go from the source to the
target. It is allowed that source and target of an arc are the same
node. Such an arc is called a <i class="term"><a href="../../../../index.html#key433">loop</a></i>.
Whenever a node is either the source or target of an arc both are said
to be <i class="term"><a href="../../../../index.html#key461">adjacent</a></i>. This extends into a relation between nodes,
i.e. if two nodes are connected through at least one arc they are said
to be <i class="term"><a href="../../../../index.html#key461">adjacent</a></i> too.</p>







|







205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>A directed graph is a structure containing two collections of
elements, called <i class="term">nodes</i> and <i class="term">arcs</i> respectively, together
with a relation (&quot;connectivity&quot;) that places a general structure upon
the nodes and arcs.</p>
<p>Each arc is connected to two nodes, one of which is called the
<i class="term"><a href="../../../../index.html#key411">source</a></i> and the other the <i class="term">target</i>. This imposes a
direction upon the arc, which is said to go from the source to the
target. It is allowed that source and target of an arc are the same
node. Such an arc is called a <i class="term"><a href="../../../../index.html#key433">loop</a></i>.
Whenever a node is either the source or target of an arc both are said
to be <i class="term"><a href="../../../../index.html#key461">adjacent</a></i>. This extends into a relation between nodes,
i.e. if two nodes are connected through at least one arc they are said
to be <i class="term"><a href="../../../../index.html#key461">adjacent</a></i> too.</p>
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
associated with an <i class="arg">arc</i>. Returns the new value given to the
attribute <i class="arg">key</i>.</p></dd>
<dt><a name="24"><i class="arg">graphName</i> <b class="method">arc rename</b> <i class="arg">arc</i> <i class="arg">newname</i></a></dt>
<dd><p>Renames the arc <i class="arg">arc</i> to <i class="arg">newname</i>. An error is thrown if
either the arc does not exist, or a arc with name <i class="arg">newname</i> does
exist. The result of the command is the new name of the arc.</p></dd>
<dt><a name="25"><i class="arg">graphName</i> <b class="method">arc set</b> <i class="arg">arc</i> <i class="arg">key</i> <span class="opt">?<i class="arg">value</i>?</span></a></dt>
<dd><p>Set or get one of the keyed values associated with an arc. 
An arc may have any number of keyed values associated with it.  
If <i class="arg">value</i> is not specified, this command returns the current value assigned to the key; 
if <i class="arg">value</i> is specified, this command assigns that value to the key, and returns
that value.</p></dd>
<dt><a name="26"><i class="arg">graphName</i> <b class="method">arc setunweighted</b> <span class="opt">?<i class="arg">weight</i>?</span></a></dt>
<dd><p>Sets the weight of all arcs without a weight to <i class="arg">weight</i>. Returns
the empty string as its result. If not present <i class="arg">weight</i> defaults
to <b class="const">0</b>.</p></dd>
<dt><a name="27"><i class="arg">graphName</i> <b class="method">arc setweight</b> <i class="arg">arc</i> <i class="arg">weight</i></a></dt>







|
|
|







379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
associated with an <i class="arg">arc</i>. Returns the new value given to the
attribute <i class="arg">key</i>.</p></dd>
<dt><a name="24"><i class="arg">graphName</i> <b class="method">arc rename</b> <i class="arg">arc</i> <i class="arg">newname</i></a></dt>
<dd><p>Renames the arc <i class="arg">arc</i> to <i class="arg">newname</i>. An error is thrown if
either the arc does not exist, or a arc with name <i class="arg">newname</i> does
exist. The result of the command is the new name of the arc.</p></dd>
<dt><a name="25"><i class="arg">graphName</i> <b class="method">arc set</b> <i class="arg">arc</i> <i class="arg">key</i> <span class="opt">?<i class="arg">value</i>?</span></a></dt>
<dd><p>Set or get one of the keyed values associated with an arc.
An arc may have any number of keyed values associated with it.
If <i class="arg">value</i> is not specified, this command returns the current value assigned to the key;
if <i class="arg">value</i> is specified, this command assigns that value to the key, and returns
that value.</p></dd>
<dt><a name="26"><i class="arg">graphName</i> <b class="method">arc setunweighted</b> <span class="opt">?<i class="arg">weight</i>?</span></a></dt>
<dd><p>Sets the weight of all arcs without a weight to <i class="arg">weight</i>. Returns
the empty string as its result. If not present <i class="arg">weight</i> defaults
to <b class="const">0</b>.</p></dd>
<dt><a name="27"><i class="arg">graphName</i> <b class="method">arc setweight</b> <i class="arg">arc</i> <i class="arg">weight</i></a></dt>
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
whether in the same node, or at some other node. This is a global
consistency requirement for the serialization.</p></li>
<li><p>And a dictionary containing the attributes associated with the arc.</p></li>
<li><p>The weight associated with the arc. This value is optional. Its
non-presence means that the arc in question has no weight associated
with it.</p>
<p><em>Note:</em> This information is new, compared to the
serialization of <b class="package"><a href="../../../../index.html#key282">graph</a></b> 2.3 and earlier. By making it an
optional element the new format is maximally compatible with the
old. This means that any graph not using weights will generate a
serialization which is still understood by the older graph package. A
serialization will not be understood any longer by the older packages
if, and only if the graph it was generated from actually has arcs with
weights.</p></li>
</ol>







|







656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
whether in the same node, or at some other node. This is a global
consistency requirement for the serialization.</p></li>
<li><p>And a dictionary containing the attributes associated with the arc.</p></li>
<li><p>The weight associated with the arc. This value is optional. Its
non-presence means that the arc in question has no weight associated
with it.</p>
<p><em>Note:</em> This information is new, compared to the
serialization of <b class="package"><a href="../../../../index.html#key283">graph</a></b> 2.3 and earlier. By making it an
optional element the new format is maximally compatible with the
old. This means that any graph not using weights will generate a
serialization which is still understood by the older graph package. A
serialization will not be understood any longer by the older packages
if, and only if the graph it was generated from actually has arcs with
weights.</p></li>
</ol>
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
<b class="method">node</b> allowing the query and retrieval of attribute data
without regard to arc and node relationships.</p></li>
<li><p>Both methods <b class="method">arcs</b> and <b class="method">nodes</b> have been extended with
the ability to select arcs and nodes based on an arbitrary filtering
criterium.</p></li>
</ol>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: graph</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key461">adjacent</a>, <a href="../../../../index.html#key449">arc</a>, <a href="../../../../index.html#key595">cgraph</a>, <a href="../../../../index.html#key452">degree</a>, <a href="../../../../index.html#key436">edge</a>, <a href="../../../../index.html#key282">graph</a>, <a href="../../../../index.html#key433">loop</a>, <a href="../../../../index.html#key464">neighbour</a>, <a href="../../../../index.html#key439">node</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key456">subgraph</a>, <a href="../../../../index.html#key438">vertex</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002-2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
<b class="method">node</b> allowing the query and retrieval of attribute data
without regard to arc and node relationships.</p></li>
<li><p>Both methods <b class="method">arcs</b> and <b class="method">nodes</b> have been extended with
the ability to select arcs and nodes based on an arbitrary filtering
criterium.</p></li>
</ol>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: graph</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key461">adjacent</a>, <a href="../../../../index.html#key449">arc</a>, <a href="../../../../index.html#key595">cgraph</a>, <a href="../../../../index.html#key451">degree</a>, <a href="../../../../index.html#key436">edge</a>, <a href="../../../../index.html#key283">graph</a>, <a href="../../../../index.html#key433">loop</a>, <a href="../../../../index.html#key465">neighbour</a>, <a href="../../../../index.html#key439">node</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key456">subgraph</a>, <a href="../../../../index.html#key440">vertex</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002-2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/struct/graph1.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>struct::graph_v1 - Create and manipulate directed graph objects</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>struct::graph_v1 - Create and manipulate directed graph objects</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
each node, with the mode of the call (<b class="const">enter</b> or
<b class="const">leave</b>) and values <i class="arg">graphName</i> and the name of the current
node appended. For a pre-order walk, all nodes are <b class="const">enter</b>ed, for a
post-order all nodes are left. In a both-order walk the first visit of
a node <b class="const">enter</b>s it, the second visit <b class="const">leave</b>s it.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: graph</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key595">cgraph</a>, <a href="../../../../index.html#key282">graph</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
each node, with the mode of the call (<b class="const">enter</b> or
<b class="const">leave</b>) and values <i class="arg">graphName</i> and the name of the current
node appended. For a pre-order walk, all nodes are <b class="const">enter</b>ed, for a
post-order all nodes are left. In a both-order walk the first visit of
a node <b class="const">enter</b>s it, the second visit <b class="const">leave</b>s it.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: graph</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key595">cgraph</a>, <a href="../../../../index.html#key283">graph</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/struct/graphops.html.

126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<li class="subsection"><a href="#subsection4">Cut Problems</a></li>
<li class="subsection"><a href="#subsection5">K-Center Problem</a></li>
<li class="subsection"><a href="#subsection6">Flow Problems</a></li>
<li class="subsection"><a href="#subsection7">Approximation algorithm</a></li>
</ul>
</li>
<li class="section"><a href="#section4">References</a></li>
<li class="section"><a href="#section5">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<li class="subsection"><a href="#subsection4">Cut Problems</a></li>
<li class="subsection"><a href="#subsection5">K-Center Problem</a></li>
<li class="subsection"><a href="#subsection6">Flow Problems</a></li>
<li class="subsection"><a href="#subsection7">Approximation algorithm</a></li>
</ul>
</li>
<li class="section"><a href="#section4">References</a></li>
<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
<dt><a name="3"><b class="cmd">struct::graph::op::kruskal</b> <i class="arg">g</i></a></dt>
<dd><p>This command takes the graph <i class="arg">g</i> and returns a list containing the
names of the arcs in <i class="arg">g</i> which span up a minimum weight spanning tree
(MST), or, in the case of an un-connected graph, a minimum weight spanning
forest (except for the 1-vertex components). Kruskal's algorithm is used
to compute the tree or forest.
This algorithm has a time complexity of <i class="term">O(E*log E)</i> or <i class="term">O(E* log V)</i>,
where <i class="term">V</i> is the number of vertices and <i class="term"><a href="../../../../index.html#key792">E</a></i> is the number of edges
in graph <i class="arg">g</i>.</p>
<p>The command will throw an error if one or more arcs in <i class="arg">g</i> have no
weight associated with them.</p>
<p>A note regarding the result, the command refrains from explicitly
listing the nodes of the MST as this information is implicitly
provided in the arcs already.</p></dd>
<dt><a name="4"><b class="cmd">struct::graph::op::prim</b> <i class="arg">g</i></a></dt>
<dd><p>This command takes the graph <i class="arg">g</i> and returns a list containing the
names of the arcs in <i class="arg">g</i> which span up a minimum weight spanning tree
(MST), or, in the case of an un-connected graph, a minimum weight spanning
forest (except for the 1-vertex components). Prim's algorithm is used to
compute the tree or forest.
This algorithm has a time complexity between <i class="term">O(E+V*log V)</i> and <i class="term">O(V*V)</i>,
depending on the implementation (Fibonacci heap + Adjacency list versus
Adjacency Matrix).  As usual <i class="term">V</i> is the number of vertices and
<i class="term"><a href="../../../../index.html#key792">E</a></i> the number of edges in graph <i class="arg">g</i>.</p>
<p>The command will throw an error if one or more arcs in <i class="arg">g</i> have no
weight associated with them.</p>
<p>A note regarding the result, the command refrains from explicitly
listing the nodes of the MST as this information is implicitly
provided in the arcs already.</p></dd>
<dt><a name="5"><b class="cmd">struct::graph::op::isBipartite?</b> <i class="arg">g</i> <span class="opt">?<i class="arg">bipartvar</i>?</span></a></dt>
<dd><p>This command takes the graph <i class="arg">g</i> and returns a boolean value







|















|







244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
<dt><a name="3"><b class="cmd">struct::graph::op::kruskal</b> <i class="arg">g</i></a></dt>
<dd><p>This command takes the graph <i class="arg">g</i> and returns a list containing the
names of the arcs in <i class="arg">g</i> which span up a minimum weight spanning tree
(MST), or, in the case of an un-connected graph, a minimum weight spanning
forest (except for the 1-vertex components). Kruskal's algorithm is used
to compute the tree or forest.
This algorithm has a time complexity of <i class="term">O(E*log E)</i> or <i class="term">O(E* log V)</i>,
where <i class="term">V</i> is the number of vertices and <i class="term"><a href="../../../../index.html#key793">E</a></i> is the number of edges
in graph <i class="arg">g</i>.</p>
<p>The command will throw an error if one or more arcs in <i class="arg">g</i> have no
weight associated with them.</p>
<p>A note regarding the result, the command refrains from explicitly
listing the nodes of the MST as this information is implicitly
provided in the arcs already.</p></dd>
<dt><a name="4"><b class="cmd">struct::graph::op::prim</b> <i class="arg">g</i></a></dt>
<dd><p>This command takes the graph <i class="arg">g</i> and returns a list containing the
names of the arcs in <i class="arg">g</i> which span up a minimum weight spanning tree
(MST), or, in the case of an un-connected graph, a minimum weight spanning
forest (except for the 1-vertex components). Prim's algorithm is used to
compute the tree or forest.
This algorithm has a time complexity between <i class="term">O(E+V*log V)</i> and <i class="term">O(V*V)</i>,
depending on the implementation (Fibonacci heap + Adjacency list versus
Adjacency Matrix).  As usual <i class="term">V</i> is the number of vertices and
<i class="term"><a href="../../../../index.html#key793">E</a></i> the number of edges in graph <i class="arg">g</i>.</p>
<p>The command will throw an error if one or more arcs in <i class="arg">g</i> have no
weight associated with them.</p>
<p>A note regarding the result, the command refrains from explicitly
listing the nodes of the MST as this information is implicitly
provided in the arcs already.</p></dd>
<dt><a name="5"><b class="cmd">struct::graph::op::isBipartite?</b> <i class="arg">g</i> <span class="opt">?<i class="arg">bipartvar</i>?</span></a></dt>
<dd><p>This command takes the graph <i class="arg">g</i> and returns a boolean value
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
<p>The (un)directed <i class="term"><a href="../../../../index.html#key434">diameter</a></i> of a graph is the maximal (un)directed
<i class="term"><a href="../../../../index.html#key477">eccentricity</a></i> of all nodes in the graph.</p></dd>
<dt><a name="19"><b class="cmd">struct::graph::op::BellmanFord</b> <i class="arg">G</i> <i class="arg">startnode</i></a></dt>
<dd><p>Searching for <span class="sectref"><a href="#subsection1">shortests paths</a></span> between chosen node and all other nodes in graph <i class="arg">G</i>. Based
on relaxation method. In comparison to <b class="cmd">struct::graph::op::dijkstra</b> it doesn't need assumption that all weights
on edges in input graph <i class="arg">G</i> have to be positive.</p>
<p>That generality sets the complexity of algorithm to - <i class="term">O(V*E)</i>, where <i class="term">V</i> is the number of vertices
and <i class="term"><a href="../../../../index.html#key792">E</a></i> is number of edges in graph <i class="arg">G</i>.</p>
<dl class="definitions">
<dt>Arguments:</dt>
<dd><dl class="arguments">
<dt>Graph object <i class="arg">G</i> (input)</dt>
<dd><p>Directed, connected and edge weighted graph <i class="arg">G</i>, without any negative cycles ( presence of cycles with the negative sum
of weight means that there is no shortest path, since the total weight becomes lower each time the cycle is
traversed ). Negative weights on edges are allowed.</p></dd>







|







374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
<p>The (un)directed <i class="term"><a href="../../../../index.html#key434">diameter</a></i> of a graph is the maximal (un)directed
<i class="term"><a href="../../../../index.html#key477">eccentricity</a></i> of all nodes in the graph.</p></dd>
<dt><a name="19"><b class="cmd">struct::graph::op::BellmanFord</b> <i class="arg">G</i> <i class="arg">startnode</i></a></dt>
<dd><p>Searching for <span class="sectref"><a href="#subsection1">shortests paths</a></span> between chosen node and all other nodes in graph <i class="arg">G</i>. Based
on relaxation method. In comparison to <b class="cmd">struct::graph::op::dijkstra</b> it doesn't need assumption that all weights
on edges in input graph <i class="arg">G</i> have to be positive.</p>
<p>That generality sets the complexity of algorithm to - <i class="term">O(V*E)</i>, where <i class="term">V</i> is the number of vertices
and <i class="term"><a href="../../../../index.html#key793">E</a></i> is number of edges in graph <i class="arg">G</i>.</p>
<dl class="definitions">
<dt>Arguments:</dt>
<dd><dl class="arguments">
<dt>Graph object <i class="arg">G</i> (input)</dt>
<dd><p>Directed, connected and edge weighted graph <i class="arg">G</i>, without any negative cycles ( presence of cycles with the negative sum
of weight means that there is no shortest path, since the total weight becomes lower each time the cycle is
traversed ). Negative weights on edges are allowed.</p></dd>
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
any cycles with negative sum of weights ( the presence of such cycles means
there is no shortest path, since the total weight becomes lower each time the
cycle is traversed ). Negative weights on edges are allowed.</p></dd>
</dl></dd>
<dt>Options:</dt>
<dd><dl class="options">
<dt><b class="option">-filter</b></dt>
<dd><p>Returns only existing distances, cuts all <i class="term">Inf</i> values for 
non-existing connections between pairs of nodes.</p></dd>
</dl></dd>
<dt>Result:</dt>
<dd><p>Dictionary containing distances between all pairs of vertices.</p></dd>
</dl></dd>
<dt><a name="21"><b class="cmd">struct::graph::op::FloydWarshall</b> <i class="arg">G</i></a></dt>
<dd><p>Searching for <span class="sectref"><a href="#subsection1">shortest paths</a></span> between all pairs of edges in weighted graphs.</p>
<p>Time complexity: <i class="term">O(V^3)</i> - where <i class="term">V</i> is number of vertices.</p>
<p>Memory complexity: <i class="term">O(V^2)</i>.</p>
<dl class="definitions">
<dt>Arguments:</dt>
<dd><dl class="arguments">
<dt>Graph object <i class="arg">G</i> (input)</dt>
<dd><p>Directed and weighted graph <i class="arg">G</i>.</p></dd>
</dl></dd>
<dt>Result:</dt>
<dd><p>Dictionary containing shortest distances to each node from each node.</p></dd>
</dl>
<p><em>Note:</em> Algorithm finds solutions dynamically. It compares all possible paths through the graph
between each pair of vertices. Graph shouldn't possess any cycle with negative
sum of weights (the presence of such cycles means there is no shortest path, 
since the total weight becomes lower each time the cycle is traversed).</p>
<p>On the other hand algorithm can be used to find those cycles - if any shortest distance 
found by algorithm for any nodes <i class="term">v</i> and <i class="term">u</i> (when <i class="term">v</i> is the same node as <i class="term">u</i>) is negative,
that node surely belong to at least one negative cycle.</p></dd>
<dt><a name="22"><b class="cmd">struct::graph::op::MetricTravellingSalesman</b> <i class="arg">G</i></a></dt>
<dd><p>Algorithm for solving a metric variation of <span class="sectref"><a href="#subsection2">Travelling salesman problem</a></span>.
<i class="term">TSP problem</i> is <i class="term">NP-Complete</i>, so there is no efficient algorithm to solve it. Greedy methods
are getting extremely slow, with the increase in the set of nodes.</p>
<dl class="definitions">







|




















|

|







407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
any cycles with negative sum of weights ( the presence of such cycles means
there is no shortest path, since the total weight becomes lower each time the
cycle is traversed ). Negative weights on edges are allowed.</p></dd>
</dl></dd>
<dt>Options:</dt>
<dd><dl class="options">
<dt><b class="option">-filter</b></dt>
<dd><p>Returns only existing distances, cuts all <i class="term">Inf</i> values for
non-existing connections between pairs of nodes.</p></dd>
</dl></dd>
<dt>Result:</dt>
<dd><p>Dictionary containing distances between all pairs of vertices.</p></dd>
</dl></dd>
<dt><a name="21"><b class="cmd">struct::graph::op::FloydWarshall</b> <i class="arg">G</i></a></dt>
<dd><p>Searching for <span class="sectref"><a href="#subsection1">shortest paths</a></span> between all pairs of edges in weighted graphs.</p>
<p>Time complexity: <i class="term">O(V^3)</i> - where <i class="term">V</i> is number of vertices.</p>
<p>Memory complexity: <i class="term">O(V^2)</i>.</p>
<dl class="definitions">
<dt>Arguments:</dt>
<dd><dl class="arguments">
<dt>Graph object <i class="arg">G</i> (input)</dt>
<dd><p>Directed and weighted graph <i class="arg">G</i>.</p></dd>
</dl></dd>
<dt>Result:</dt>
<dd><p>Dictionary containing shortest distances to each node from each node.</p></dd>
</dl>
<p><em>Note:</em> Algorithm finds solutions dynamically. It compares all possible paths through the graph
between each pair of vertices. Graph shouldn't possess any cycle with negative
sum of weights (the presence of such cycles means there is no shortest path,
since the total weight becomes lower each time the cycle is traversed).</p>
<p>On the other hand algorithm can be used to find those cycles - if any shortest distance
found by algorithm for any nodes <i class="term">v</i> and <i class="term">u</i> (when <i class="term">v</i> is the same node as <i class="term">u</i>) is negative,
that node surely belong to at least one negative cycle.</p></dd>
<dt><a name="22"><b class="cmd">struct::graph::op::MetricTravellingSalesman</b> <i class="arg">G</i></a></dt>
<dd><p>Algorithm for solving a metric variation of <span class="sectref"><a href="#subsection2">Travelling salesman problem</a></span>.
<i class="term">TSP problem</i> is <i class="term">NP-Complete</i>, so there is no efficient algorithm to solve it. Greedy methods
are getting extremely slow, with the increase in the set of nodes.</p>
<dl class="definitions">
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
<dd><p>Weighted variation of <i class="term">Maximal Independent Set</i>. It takes as an input argument
not only graph <i class="arg">G</i> but also set of weights for all vertices in graph <i class="arg">G</i>.</p>
<p><em>Note:</em>
Read also <i class="term">Maximal Independent Set</i> description for more info.</p></dd>
<dt><a name="30"><b class="cmd">struct::graph::op::VerticesCover</b> <i class="arg">G</i></a></dt>
<dd><p><i class="term">Vertices cover</i> is a set of vertices such that each edge of the graph is incident to
at least one vertex of the set. This 2-approximation algorithm searches for minimum
<i class="term">vertices cover</i>, which is a classical optimization problem in computer science and 
is a typical example of an <i class="term">NP-hard</i> optimization problem that has an approximation
algorithm.
For input graph <i class="arg">G</i> algorithm returns the set of edges (list), which is Vertex Cover found by algorithm.</p></dd>
<dt><a name="31"><b class="cmd">struct::graph::op::EdmondsKarp</b> <i class="arg">G</i> <i class="arg">s</i> <i class="arg">t</i></a></dt>
<dd><p>Improved Ford-Fulkerson's algorithm, computing the <span class="sectref"><a href="#subsection6">maximum flow</a></span> in given flow network <i class="arg">G</i>.</p>
<dl class="definitions">
<dt>Arguments:</dt>







|







534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
<dd><p>Weighted variation of <i class="term">Maximal Independent Set</i>. It takes as an input argument
not only graph <i class="arg">G</i> but also set of weights for all vertices in graph <i class="arg">G</i>.</p>
<p><em>Note:</em>
Read also <i class="term">Maximal Independent Set</i> description for more info.</p></dd>
<dt><a name="30"><b class="cmd">struct::graph::op::VerticesCover</b> <i class="arg">G</i></a></dt>
<dd><p><i class="term">Vertices cover</i> is a set of vertices such that each edge of the graph is incident to
at least one vertex of the set. This 2-approximation algorithm searches for minimum
<i class="term">vertices cover</i>, which is a classical optimization problem in computer science and
is a typical example of an <i class="term">NP-hard</i> optimization problem that has an approximation
algorithm.
For input graph <i class="arg">G</i> algorithm returns the set of edges (list), which is Vertex Cover found by algorithm.</p></dd>
<dt><a name="31"><b class="cmd">struct::graph::op::EdmondsKarp</b> <i class="arg">G</i> <i class="arg">s</i> <i class="arg">t</i></a></dt>
<dd><p>Improved Ford-Fulkerson's algorithm, computing the <span class="sectref"><a href="#subsection6">maximum flow</a></span> in given flow network <i class="arg">G</i>.</p>
<dl class="definitions">
<dt>Arguments:</dt>
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
<dt>Result:</dt>
<dd><p>Procedure returns the dictionary containing throughputs for all edges. For
each key ( the edge between nodes <i class="term">u</i> and <i class="term">v</i> in the form of <i class="term">list u v</i> ) there is
a value that is a throughput for that key. Edges where throughput values
are equal to 0 are not returned ( it is like there was no link in the flow network
between nodes connected by such edge).</p></dd>
</dl>
<p>The general idea of algorithm is finding the shortest augumenting paths in graph <i class="arg">G</i>, as long 
as they exist, and for each path updating the edge's weights along that path,
with maximum possible throughput. The final (maximum) flow is found
when there is no other augumenting path from source to sink.</p>
<p><em>Note:</em> Algorithm complexity : <i class="term">O(V*E)</i>, where <i class="term">V</i> is the number of nodes and <i class="term"><a href="../../../../index.html#key792">E</a></i> is the number
of edges in graph <i class="term">G</i>.</p></dd>
<dt><a name="32"><b class="cmd">struct::graph::op::BusackerGowen</b> <i class="arg">G</i> <i class="arg">desiredFlow</i> <i class="arg">s</i> <i class="arg">t</i></a></dt>
<dd><p>Algorithm finds solution for a <span class="sectref"><a href="#subsection6">minimum cost flow problem</a></span>. So, the goal is to find a flow,
whose max value can be <i class="arg">desiredFlow</i>, from source node <i class="arg">s</i> to sink node <i class="arg">t</i> in given flow network <i class="arg">G</i>. 
That network except throughputs at edges has also defined a non-negative cost on each edge - cost of using that edge when
directing flow with that edge ( it can illustrate e.g. fuel usage, time or any other measure dependent on usages ).</p>
<dl class="definitions">
<dt>Arguments:</dt>
<dd><dl class="arguments">
<dt>Graph Object <i class="arg">G</i> (input)</dt>
<dd><p>Flow network (directed graph), each edge in graph should have two integer attributes: <i class="term">cost</i> and <i class="term">throughput</i>.</p></dd>







|



|



|







558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
<dt>Result:</dt>
<dd><p>Procedure returns the dictionary containing throughputs for all edges. For
each key ( the edge between nodes <i class="term">u</i> and <i class="term">v</i> in the form of <i class="term">list u v</i> ) there is
a value that is a throughput for that key. Edges where throughput values
are equal to 0 are not returned ( it is like there was no link in the flow network
between nodes connected by such edge).</p></dd>
</dl>
<p>The general idea of algorithm is finding the shortest augumenting paths in graph <i class="arg">G</i>, as long
as they exist, and for each path updating the edge's weights along that path,
with maximum possible throughput. The final (maximum) flow is found
when there is no other augumenting path from source to sink.</p>
<p><em>Note:</em> Algorithm complexity : <i class="term">O(V*E)</i>, where <i class="term">V</i> is the number of nodes and <i class="term"><a href="../../../../index.html#key793">E</a></i> is the number
of edges in graph <i class="term">G</i>.</p></dd>
<dt><a name="32"><b class="cmd">struct::graph::op::BusackerGowen</b> <i class="arg">G</i> <i class="arg">desiredFlow</i> <i class="arg">s</i> <i class="arg">t</i></a></dt>
<dd><p>Algorithm finds solution for a <span class="sectref"><a href="#subsection6">minimum cost flow problem</a></span>. So, the goal is to find a flow,
whose max value can be <i class="arg">desiredFlow</i>, from source node <i class="arg">s</i> to sink node <i class="arg">t</i> in given flow network <i class="arg">G</i>.
That network except throughputs at edges has also defined a non-negative cost on each edge - cost of using that edge when
directing flow with that edge ( it can illustrate e.g. fuel usage, time or any other measure dependent on usages ).</p>
<dl class="definitions">
<dt>Arguments:</dt>
<dd><dl class="arguments">
<dt>Graph Object <i class="arg">G</i> (input)</dt>
<dd><p>Flow network (directed graph), each edge in graph should have two integer attributes: <i class="term">cost</i> and <i class="term">throughput</i>.</p></dd>
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
<dd><p>Dictionary containing values of used throughputs for each edge ( key ).
found by algorithm.</p></dd>
</dl>
<p><em>Note:</em> Algorithm complexity : <i class="term">O(V**2*desiredFlow)</i>, where <i class="term">V</i> is the number of nodes in graph <i class="arg">G</i>.</p></dd>
<dt><a name="33"><b class="cmd">struct::graph::op::ShortestsPathsByBFS</b> <i class="arg">G</i> <i class="arg">s</i> <i class="arg">outputFormat</i></a></dt>
<dd><p>Shortest pathfinding algorithm using BFS method. In comparison to <b class="cmd">struct::graph::op::dijkstra</b> it can
work with negative weights on edges. Of course negative cycles are not allowed. Algorithm is better than dijkstra
for sparse graphs, but also there exist some pathological cases (those cases generally don't appear in practise) that 
make time complexity increase exponentially with the growth of the number of nodes.</p>
<dl class="definitions">
<dt>Arguments:</dt>
<dd><dl class="arguments">
<dt>Graph Object <i class="arg">G</i> (input)</dt>
<dd><p>Input graph.</p></dd>
<dt>Node <i class="arg">s</i> (input)</dt>







|







589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
<dd><p>Dictionary containing values of used throughputs for each edge ( key ).
found by algorithm.</p></dd>
</dl>
<p><em>Note:</em> Algorithm complexity : <i class="term">O(V**2*desiredFlow)</i>, where <i class="term">V</i> is the number of nodes in graph <i class="arg">G</i>.</p></dd>
<dt><a name="33"><b class="cmd">struct::graph::op::ShortestsPathsByBFS</b> <i class="arg">G</i> <i class="arg">s</i> <i class="arg">outputFormat</i></a></dt>
<dd><p>Shortest pathfinding algorithm using BFS method. In comparison to <b class="cmd">struct::graph::op::dijkstra</b> it can
work with negative weights on edges. Of course negative cycles are not allowed. Algorithm is better than dijkstra
for sparse graphs, but also there exist some pathological cases (those cases generally don't appear in practise) that
make time complexity increase exponentially with the growth of the number of nodes.</p>
<dl class="definitions">
<dt>Arguments:</dt>
<dd><dl class="arguments">
<dt>Graph Object <i class="arg">G</i> (input)</dt>
<dd><p>Input graph.</p></dd>
<dt>Node <i class="arg">s</i> (input)</dt>
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
<dt><b class="option">paths</b></dt>
<dd><p>When selected <i class="arg">outputFormat</i> is <b class="const">paths</b> - procedure returns dictionary containing
for each node <i class="term">v</i>, a list of nodes, which is a path between source node <i class="arg">s</i> and node <i class="term">v</i>.</p></dd>
</dl></dd>
</dl></dd>
<dt><a name="34"><b class="cmd">struct::graph::op::BFS</b> <i class="arg">G</i> <i class="arg">s</i> <span class="opt">?<i class="arg">outputFormat</i>...?</span></a></dt>
<dd><p>Breadth-First Search - algorithm creates the BFS Tree.
Memory and time complexity: <i class="term">O(V + E)</i>, where <i class="term">V</i> is the number of nodes and <i class="term"><a href="../../../../index.html#key792">E</a></i>
is number of edges.</p>
<dl class="definitions">
<dt>Arguments:</dt>
<dd><dl class="arguments">
<dt>Graph Object <i class="arg">G</i> (input)</dt>
<dd><p>Input graph.</p></dd>
<dt>Node <i class="arg">s</i> (input)</dt>







|







611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
<dt><b class="option">paths</b></dt>
<dd><p>When selected <i class="arg">outputFormat</i> is <b class="const">paths</b> - procedure returns dictionary containing
for each node <i class="term">v</i>, a list of nodes, which is a path between source node <i class="arg">s</i> and node <i class="term">v</i>.</p></dd>
</dl></dd>
</dl></dd>
<dt><a name="34"><b class="cmd">struct::graph::op::BFS</b> <i class="arg">G</i> <i class="arg">s</i> <span class="opt">?<i class="arg">outputFormat</i>...?</span></a></dt>
<dd><p>Breadth-First Search - algorithm creates the BFS Tree.
Memory and time complexity: <i class="term">O(V + E)</i>, where <i class="term">V</i> is the number of nodes and <i class="term"><a href="../../../../index.html#key793">E</a></i>
is number of edges.</p>
<dl class="definitions">
<dt>Arguments:</dt>
<dd><dl class="arguments">
<dt>Graph Object <i class="arg">G</i> (input)</dt>
<dd><p>Input graph.</p></dd>
<dt>Node <i class="arg">s</i> (input)</dt>
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
<dd><p>When selected <b class="option">outputFormat</b> is <b class="option">tree</b> - procedure returns a tree structure (<b class="cmd"><a href="struct_tree.html">struct::tree</a></b>),
which is equivalent to BFS tree found by algorithm.</p></dd>
</dl></dd>
</dl></dd>
<dt><a name="35"><b class="cmd">struct::graph::op::MinimumDiameterSpanningTree</b> <i class="arg">G</i></a></dt>
<dd><p>The goal is to find for input graph <i class="arg">G</i>, the <i class="term">spanning tree</i> that
has the minimum <i class="term"><a href="../../../../index.html#key434">diameter</a></i> value.</p>
<p>General idea of algorithm is to run <i class="term"><a href="../../../../index.html#key442">BFS</a></i> over all vertices in graph
<i class="arg">G</i>. If the diameter <i class="term">d</i> of the tree is odd, then we are sure that tree
given by <i class="term"><a href="../../../../index.html#key442">BFS</a></i> is minimum (considering diameter value). When, diameter <i class="term">d</i>
is even, then optimal tree can have minimum <i class="term"><a href="../../../../index.html#key434">diameter</a></i> equal to <i class="term">d</i> or
<i class="term">d-1</i>.</p>
<p>In that case, what algorithm does is rebuilding the tree given by <i class="term"><a href="../../../../index.html#key442">BFS</a></i>, by
adding a vertice between root node and root's child node (nodes), such that
subtree created with child node as root node is the greatest one (has the
greatests height). In the next step for such rebuilded tree, we run again <i class="term"><a href="../../../../index.html#key442">BFS</a></i>
with new node as root node. If the height of the tree didn't changed, we have found
a better solution.</p>
<p>For input graph <i class="arg">G</i> algorithm returns the graph structure (<b class="cmd"><a href="graph.html">struct::graph</a></b>) that is
a spanning tree with minimum diameter found by algorithm.</p></dd>
<dt><a name="36"><b class="cmd">struct::graph::op::MinimumDegreeSpanningTree</b> <i class="arg">G</i></a></dt>
<dd><p>Algorithm finds for input graph <i class="arg">G</i>, a spanning tree <i class="term">T</i> with the minimum possible
degree. That problem is <i class="term">NP-hard</i>, so algorithm is an approximation algorithm.</p>
<p>Let <i class="term">V</i> be the set of nodes for graph <i class="arg">G</i> and let <i class="term">W</i> be any subset of <i class="term">V</i>. Lets
assume also that <i class="term">OPT</i> is optimal solution and <i class="term">ALG</i> is solution found by algorithm for input 
graph <i class="arg">G</i>.</p>
<p>It can be proven that solution found with the algorithm must fulfil inequality:</p>
<p><i class="term">((|W| + k - 1) / |W|) &lt;= ALG &lt;= 2*OPT + log2(n) + 1</i>.</p>
<dl class="definitions">
<dt>Arguments:</dt>
<dd><dl class="arguments">
<dt>Graph Object <i class="arg">G</i> (input)</dt>
<dd><p>Undirected simple graph.</p></dd>
</dl></dd>
<dt>Result:</dt>
<dd><p>Algorithm returns graph structure, which is equivalent to spanning tree <i class="term">T</i> found by algorithm.</p></dd>
</dl></dd>
<dt><a name="37"><b class="cmd">struct::graph::op::MaximumFlowByDinic</b> <i class="arg">G</i> <i class="arg">s</i> <i class="arg">t</i> <i class="arg">blockingFlowAlg</i></a></dt>
<dd><p>Algorithm finds <span class="sectref"><a href="#subsection6">maximum flow</a></span> for the flow network represented by graph <i class="arg">G</i>. It is based on
the blocking-flow finding methods, which give us different complexities what makes a better fit for
different graphs.</p>
<dl class="definitions">
<dt>Arguments:</dt>
<dd><dl class="arguments">
<dt>Graph Object <i class="arg">G</i> (input)</dt>
<dd><p>Directed graph <i class="arg">G</i> representing the flow network. Each edge should have attribute 
<i class="term">throughput</i> set with integer value.</p></dd>
<dt>Node <i class="arg">s</i> (input)</dt>
<dd><p>The source node for the flow network <i class="arg">G</i>.</p></dd>
<dt>Node <i class="arg">t</i> (input)</dt>
<dd><p>The sink node for the flow network <i class="arg">G</i>.</p></dd>
</dl></dd>
<dt>Options:</dt>







|

|


|


|








|




















|







634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
<dd><p>When selected <b class="option">outputFormat</b> is <b class="option">tree</b> - procedure returns a tree structure (<b class="cmd"><a href="struct_tree.html">struct::tree</a></b>),
which is equivalent to BFS tree found by algorithm.</p></dd>
</dl></dd>
</dl></dd>
<dt><a name="35"><b class="cmd">struct::graph::op::MinimumDiameterSpanningTree</b> <i class="arg">G</i></a></dt>
<dd><p>The goal is to find for input graph <i class="arg">G</i>, the <i class="term">spanning tree</i> that
has the minimum <i class="term"><a href="../../../../index.html#key434">diameter</a></i> value.</p>
<p>General idea of algorithm is to run <i class="term"><a href="../../../../index.html#key441">BFS</a></i> over all vertices in graph
<i class="arg">G</i>. If the diameter <i class="term">d</i> of the tree is odd, then we are sure that tree
given by <i class="term"><a href="../../../../index.html#key441">BFS</a></i> is minimum (considering diameter value). When, diameter <i class="term">d</i>
is even, then optimal tree can have minimum <i class="term"><a href="../../../../index.html#key434">diameter</a></i> equal to <i class="term">d</i> or
<i class="term">d-1</i>.</p>
<p>In that case, what algorithm does is rebuilding the tree given by <i class="term"><a href="../../../../index.html#key441">BFS</a></i>, by
adding a vertice between root node and root's child node (nodes), such that
subtree created with child node as root node is the greatest one (has the
greatests height). In the next step for such rebuilded tree, we run again <i class="term"><a href="../../../../index.html#key441">BFS</a></i>
with new node as root node. If the height of the tree didn't changed, we have found
a better solution.</p>
<p>For input graph <i class="arg">G</i> algorithm returns the graph structure (<b class="cmd"><a href="graph.html">struct::graph</a></b>) that is
a spanning tree with minimum diameter found by algorithm.</p></dd>
<dt><a name="36"><b class="cmd">struct::graph::op::MinimumDegreeSpanningTree</b> <i class="arg">G</i></a></dt>
<dd><p>Algorithm finds for input graph <i class="arg">G</i>, a spanning tree <i class="term">T</i> with the minimum possible
degree. That problem is <i class="term">NP-hard</i>, so algorithm is an approximation algorithm.</p>
<p>Let <i class="term">V</i> be the set of nodes for graph <i class="arg">G</i> and let <i class="term">W</i> be any subset of <i class="term">V</i>. Lets
assume also that <i class="term">OPT</i> is optimal solution and <i class="term">ALG</i> is solution found by algorithm for input
graph <i class="arg">G</i>.</p>
<p>It can be proven that solution found with the algorithm must fulfil inequality:</p>
<p><i class="term">((|W| + k - 1) / |W|) &lt;= ALG &lt;= 2*OPT + log2(n) + 1</i>.</p>
<dl class="definitions">
<dt>Arguments:</dt>
<dd><dl class="arguments">
<dt>Graph Object <i class="arg">G</i> (input)</dt>
<dd><p>Undirected simple graph.</p></dd>
</dl></dd>
<dt>Result:</dt>
<dd><p>Algorithm returns graph structure, which is equivalent to spanning tree <i class="term">T</i> found by algorithm.</p></dd>
</dl></dd>
<dt><a name="37"><b class="cmd">struct::graph::op::MaximumFlowByDinic</b> <i class="arg">G</i> <i class="arg">s</i> <i class="arg">t</i> <i class="arg">blockingFlowAlg</i></a></dt>
<dd><p>Algorithm finds <span class="sectref"><a href="#subsection6">maximum flow</a></span> for the flow network represented by graph <i class="arg">G</i>. It is based on
the blocking-flow finding methods, which give us different complexities what makes a better fit for
different graphs.</p>
<dl class="definitions">
<dt>Arguments:</dt>
<dd><dl class="arguments">
<dt>Graph Object <i class="arg">G</i> (input)</dt>
<dd><p>Directed graph <i class="arg">G</i> representing the flow network. Each edge should have attribute
<i class="term">throughput</i> set with integer value.</p></dd>
<dt>Node <i class="arg">s</i> (input)</dt>
<dd><p>The source node for the flow network <i class="arg">G</i>.</p></dd>
<dt>Node <i class="arg">t</i> (input)</dt>
<dd><p>The sink node for the flow network <i class="arg">G</i>.</p></dd>
</dl></dd>
<dt>Options:</dt>
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
<dt><a name="38"><b class="cmd">struct::graph::op::BlockingFlowByDinic</b> <i class="arg">G</i> <i class="arg">s</i> <i class="arg">t</i></a></dt>
<dd><p>Algorithm for given network <i class="arg">G</i> with source <i class="arg">s</i> and sink <i class="arg">t</i>, finds a <span class="sectref"><a href="#subsection6">blocking
flow</a></span>, which can be used to obtain a <i class="term"><a href="../../../../index.html#key474">maximum flow</a></i> for that network <i class="arg">G</i>.</p>
<dl class="definitions">
<dt>Arguments:</dt>
<dd><dl class="arguments">
<dt>Graph Object <i class="arg">G</i> (input)</dt>
<dd><p>Directed graph <i class="arg">G</i> representing the flow network. Each edge should have attribute 
<i class="term">throughput</i> set with integer value.</p></dd>
<dt>Node <i class="arg">s</i> (input)</dt>
<dd><p>The source node for the flow network <i class="arg">G</i>.</p></dd>
<dt>Node <i class="arg">t</i> (input)</dt>
<dd><p>The sink node for the flow network <i class="arg">G</i>.</p></dd>
</dl></dd>
<dt>Result:</dt>
<dd><p>Algorithm returns dictionary containing it's blocking flow value for each edge (key) in network <i class="arg">G</i>.</p></dd>
</dl>
<p><em>Note:</em> Algorithm's complexity is <i class="term">O(n*m)</i>, where <i class="term">n</i> is the number of nodes
and <i class="term">m</i> is the number of edges in flow network <i class="arg">G</i>.</p></dd>
<dt><a name="39"><b class="cmd">struct::graph::op::BlockingFlowByMKM</b> <i class="arg">G</i> <i class="arg">s</i> <i class="arg">t</i></a></dt>
<dd><p>Algorithm for given network <i class="arg">G</i> with source <i class="arg">s</i> and sink <i class="arg">t</i>, finds a <span class="sectref"><a href="#subsection6">blocking
flow</a></span>, which can be used to obtain a <i class="term"><a href="../../../../index.html#key474">maximum flow</a></i> for that <i class="term"><a href="../../../../index.html#key654">network</a></i> <i class="arg">G</i>.</p>
<dl class="definitions">
<dt>Arguments:</dt>
<dd><dl class="arguments">
<dt>Graph Object <i class="arg">G</i> (input)</dt>
<dd><p>Directed graph <i class="arg">G</i> representing the flow network. Each edge should have attribute 
<i class="term">throughput</i> set with integer value.</p></dd>
<dt>Node <i class="arg">s</i> (input)</dt>
<dd><p>The source node for the flow network <i class="arg">G</i>.</p></dd>
<dt>Node <i class="arg">t</i> (input)</dt>
<dd><p>The sink node for the flow network <i class="arg">G</i>.</p></dd>
</dl></dd>
<dt>Result:</dt>
<dd><p>Algorithm returns dictionary containing it's blocking flow value for each edge (key) in network <i class="arg">G</i>.</p></dd>
</dl>
<p><em>Note:</em> Algorithm's complexity is <i class="term">O(n^2)</i>, where <i class="term">n</i> is the number of nodes in flow network <i class="arg">G</i>.</p></dd>
<dt><a name="40"><b class="cmd">struct::graph::op::createResidualGraph</b> <i class="arg">G</i> <i class="arg">f</i></a></dt>
<dd><p>Procedure creates a <i class="term"><a href="../../../../index.html#key441">residual graph</a></i> (or <span class="sectref"><a href="#subsection6">residual network</a></span> ) for network <i class="arg">G</i> and given
flow <i class="arg">f</i>.</p>
<dl class="definitions">
<dt>Arguments:</dt>
<dd><dl class="arguments">
<dt>Graph Object <i class="arg">G</i> (input)</dt>
<dd><p>Flow network (directed graph where each edge has set attribute: <i class="term">throughput</i> ).</p></dd>
<dt>dictionary <i class="arg">f</i> (input)</dt>
<dd><p>Current flows in flow network <i class="arg">G</i>.</p></dd>
</dl></dd>
<dt>Result:</dt>
<dd><p>Procedure returns graph structure that is a <i class="term"><a href="../../../../index.html#key441">residual graph</a></i> created from input flow
network <i class="arg">G</i>.</p></dd>
</dl></dd>
<dt><a name="41"><b class="cmd">struct::graph::op::createAugmentingNetwork</b> <i class="arg">G</i> <i class="arg">f</i> <i class="arg">path</i></a></dt>
<dd><p>Procedure creates an <span class="sectref"><a href="#subsection6">augmenting network</a></span> for a given residual network <i class="arg">G</i> 
, flow <i class="arg">f</i> and augmenting path <i class="arg">path</i>.</p>
<dl class="definitions">
<dt>Arguments:</dt>
<dd><dl class="arguments">
<dt>Graph Object <i class="arg">G</i> (input)</dt>
<dd><p>Residual network (directed graph), where for every edge there are set two attributes: throughput and cost.</p></dd>
<dt>Dictionary <i class="arg">f</i> (input)</dt>







|


















|











|










|



|







701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
<dt><a name="38"><b class="cmd">struct::graph::op::BlockingFlowByDinic</b> <i class="arg">G</i> <i class="arg">s</i> <i class="arg">t</i></a></dt>
<dd><p>Algorithm for given network <i class="arg">G</i> with source <i class="arg">s</i> and sink <i class="arg">t</i>, finds a <span class="sectref"><a href="#subsection6">blocking
flow</a></span>, which can be used to obtain a <i class="term"><a href="../../../../index.html#key474">maximum flow</a></i> for that network <i class="arg">G</i>.</p>
<dl class="definitions">
<dt>Arguments:</dt>
<dd><dl class="arguments">
<dt>Graph Object <i class="arg">G</i> (input)</dt>
<dd><p>Directed graph <i class="arg">G</i> representing the flow network. Each edge should have attribute
<i class="term">throughput</i> set with integer value.</p></dd>
<dt>Node <i class="arg">s</i> (input)</dt>
<dd><p>The source node for the flow network <i class="arg">G</i>.</p></dd>
<dt>Node <i class="arg">t</i> (input)</dt>
<dd><p>The sink node for the flow network <i class="arg">G</i>.</p></dd>
</dl></dd>
<dt>Result:</dt>
<dd><p>Algorithm returns dictionary containing it's blocking flow value for each edge (key) in network <i class="arg">G</i>.</p></dd>
</dl>
<p><em>Note:</em> Algorithm's complexity is <i class="term">O(n*m)</i>, where <i class="term">n</i> is the number of nodes
and <i class="term">m</i> is the number of edges in flow network <i class="arg">G</i>.</p></dd>
<dt><a name="39"><b class="cmd">struct::graph::op::BlockingFlowByMKM</b> <i class="arg">G</i> <i class="arg">s</i> <i class="arg">t</i></a></dt>
<dd><p>Algorithm for given network <i class="arg">G</i> with source <i class="arg">s</i> and sink <i class="arg">t</i>, finds a <span class="sectref"><a href="#subsection6">blocking
flow</a></span>, which can be used to obtain a <i class="term"><a href="../../../../index.html#key474">maximum flow</a></i> for that <i class="term"><a href="../../../../index.html#key654">network</a></i> <i class="arg">G</i>.</p>
<dl class="definitions">
<dt>Arguments:</dt>
<dd><dl class="arguments">
<dt>Graph Object <i class="arg">G</i> (input)</dt>
<dd><p>Directed graph <i class="arg">G</i> representing the flow network. Each edge should have attribute
<i class="term">throughput</i> set with integer value.</p></dd>
<dt>Node <i class="arg">s</i> (input)</dt>
<dd><p>The source node for the flow network <i class="arg">G</i>.</p></dd>
<dt>Node <i class="arg">t</i> (input)</dt>
<dd><p>The sink node for the flow network <i class="arg">G</i>.</p></dd>
</dl></dd>
<dt>Result:</dt>
<dd><p>Algorithm returns dictionary containing it's blocking flow value for each edge (key) in network <i class="arg">G</i>.</p></dd>
</dl>
<p><em>Note:</em> Algorithm's complexity is <i class="term">O(n^2)</i>, where <i class="term">n</i> is the number of nodes in flow network <i class="arg">G</i>.</p></dd>
<dt><a name="40"><b class="cmd">struct::graph::op::createResidualGraph</b> <i class="arg">G</i> <i class="arg">f</i></a></dt>
<dd><p>Procedure creates a <i class="term"><a href="../../../../index.html#key442">residual graph</a></i> (or <span class="sectref"><a href="#subsection6">residual network</a></span> ) for network <i class="arg">G</i> and given
flow <i class="arg">f</i>.</p>
<dl class="definitions">
<dt>Arguments:</dt>
<dd><dl class="arguments">
<dt>Graph Object <i class="arg">G</i> (input)</dt>
<dd><p>Flow network (directed graph where each edge has set attribute: <i class="term">throughput</i> ).</p></dd>
<dt>dictionary <i class="arg">f</i> (input)</dt>
<dd><p>Current flows in flow network <i class="arg">G</i>.</p></dd>
</dl></dd>
<dt>Result:</dt>
<dd><p>Procedure returns graph structure that is a <i class="term"><a href="../../../../index.html#key442">residual graph</a></i> created from input flow
network <i class="arg">G</i>.</p></dd>
</dl></dd>
<dt><a name="41"><b class="cmd">struct::graph::op::createAugmentingNetwork</b> <i class="arg">G</i> <i class="arg">f</i> <i class="arg">path</i></a></dt>
<dd><p>Procedure creates an <span class="sectref"><a href="#subsection6">augmenting network</a></span> for a given residual network <i class="arg">G</i>
, flow <i class="arg">f</i> and augmenting path <i class="arg">path</i>.</p>
<dl class="definitions">
<dt>Arguments:</dt>
<dd><dl class="arguments">
<dt>Graph Object <i class="arg">G</i> (input)</dt>
<dd><p>Residual network (directed graph), where for every edge there are set two attributes: throughput and cost.</p></dd>
<dt>Dictionary <i class="arg">f</i> (input)</dt>
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
<dt>List <i class="arg">C</i> (input)</dt>
<dd><p>A list of edges being <i class="term">Hamiltonian cycle</i>, which is solution of <i class="term">TSP Problem</i> for graph <i class="arg">G</i>.</p></dd>
</dl></dd>
<dt>Result:</dt>
<dd><p>Algorithm returns the best solution for <i class="term">TSP problem</i>, it was able to find.</p></dd>
</dl>
<p><em>Note:</em> In practise 3-approximation algorithm turns out to be far more effective than 2-approximation, but it gives
worser approximation factor. Further heuristics of local searching (e.g. 4-approximation) doesn't give enough boost to 
square the increase of approximation factor, so 2 and 3 approximations are mainly used.</p></dd>
<dt><a name="45"><b class="cmd">struct::graph::op::createSquaredGraph</b> <i class="arg">G</i></a></dt>
<dd><p>X-Squared graph is a graph with the same set of nodes as input graph <i class="arg">G</i>, but a different set of edges. X-Squared graph
has edge <i class="term">(u,v)</i>, if and only if, the distance between <i class="term">u</i> and <i class="term">v</i> nodes is not greater than X and <i class="term">u != v</i>.</p>
<p>Procedure for input graph <i class="arg">G</i>, returns its two-squared graph.</p>
<p><em>Note:</em> Distances used in choosing new set of edges are considering the number of edges, not the sum of weights at edges.</p></dd>
<dt><a name="46"><b class="cmd">struct::graph::op::createCompleteGraph</b> <i class="arg">G</i> <i class="arg">originalEdges</i></a></dt>
<dd><p>For input graph <i class="arg">G</i> procedure adds missing arcs to make it a <i class="term"><a href="../../../../index.html#key465">complete graph</a></i>. It also holds in
variable <i class="arg">originalEdges</i> the set of arcs that graph <i class="arg">G</i> possessed before that operation.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Background theory and terms</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Shortest Path Problem</a></h3>
<dl class="definitions">
<dt>Definition (<i class="term">single-pair shortest path problem</i>):</dt>
<dd><p>Formally, given a weighted graph (let <i class="term">V</i> be the set of vertices, and <i class="term"><a href="../../../../index.html#key792">E</a></i> a set of edges),
and one vertice <i class="term">v</i> of <i class="term">V</i>, find a path <i class="term">P</i> from <i class="term">v</i> to a <i class="term">v'</i> of V so that
the sum of weights on edges along the path is minimal among all paths connecting v to v'.</p></dd>
<dt>Generalizations:</dt>
<dd><ul class="itemized">
<li><p><i class="term">The single-source shortest path problem</i>, in which we have to find shortest paths from a source vertex v to all other vertices in the graph.</p></li>
<li><p><i class="term">The single-destination shortest path problem</i>, in which we have to find shortest paths from all vertices in the graph to a single destination vertex v. This can be reduced to the single-source shortest path problem by reversing the edges in the graph.</p></li>
<li><p><i class="term">The all-pairs shortest path problem</i>, in which we have to find shortest paths between every pair of vertices v, v' in the graph.</p></li>
</ul>
<p><em>Note:</em>
The result of <i class="term">Shortest Path problem</i> can be <i class="term">Shortest Path tree</i>, which is a subgraph of a given (possibly weighted) graph constructed so that the
distance between a selected root node and all other nodes is minimal. It is a tree because if there are two paths between the root node and some
vertex v (i.e. a cycle), we can delete the last edge of the longer path without increasing the distance from the root node to any node in the subgraph.</p></dd>
</dl>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Travelling Salesman Problem</a></h3>
<dl class="definitions">
<dt>Definition:</dt>
<dd><p>For given edge-weighted (weights on edges should be positive) graph the goal is to find the cycle that visits each node in graph 
exactly once (<i class="term">Hamiltonian cycle</i>).</p></dd>
<dt>Generalizations:</dt>
<dd><ul class="itemized">
<li><p><i class="term">Metric TSP</i> - A very natural restriction of the <i class="term">TSP</i> is to require that the distances between cities form a <i class="term">metric</i>, i.e.,
they satisfy <i class="term">the triangle inequality</i>. That is, for any 3 cities <i class="term">A</i>, <i class="term">B</i> and <i class="term"><a href="../../../../index.html#key501">C</a></i>, the distance between <i class="term">A</i> and <i class="term"><a href="../../../../index.html#key501">C</a></i>
must be at most the distance from <i class="term">A</i> to <i class="term">B</i> plus the distance from <i class="term">B</i> to <i class="term"><a href="../../../../index.html#key501">C</a></i>. Most natural instances of <i class="term">TSP</i> 
satisfy this constraint.</p></li>
<li><p><i class="term">Euclidean TSP</i> - Euclidean TSP, or <i class="term">planar TSP</i>, is the <i class="term">TSP</i> with the distance being the ordinary <i class="term">Euclidean distance</i>. 
<i class="term">Euclidean TSP</i> is a particular case of <i class="term">TSP</i> with <i class="term">triangle inequality</i>, since distances in plane obey triangle inequality. However,
it seems to be easier than general <i class="term">TSP</i> with <i class="term">triangle inequality</i>. For example, <i class="term">the minimum spanning tree</i> of the graph associated 
with an instance of <i class="term">Euclidean TSP</i> is a <i class="term">Euclidean minimum spanning tree</i>, and so can be computed in expected <i class="term">O(n log n)</i> time for 
<i class="term">n</i> points (considerably less than the number of edges). This enables the simple <i class="term">2-approximation algorithm</i> for TSP with triangle 
inequality above to operate more quickly.</p></li>
<li><p><i class="term">Asymmetric TSP</i> - In most cases, the distance between two nodes in the <i class="term">TSP</i> network is the same in both directions.
The case where the distance from <i class="term">A</i> to <i class="term">B</i> is not equal to the distance from <i class="term">B</i> to <i class="term">A</i> is called <i class="term">asymmetric TSP</i>.
A practical application of an <i class="term">asymmetric TSP</i> is route optimisation using street-level routing (asymmetric due to one-way streets, 
slip-roads and motorways).</p></li>
</ul></dd>
</dl>
</div>
<div id="subsection3" class="subsection"><h3><a name="subsection3">Matching Problem</a></h3>
<dl class="definitions">
<dt>Definition:</dt>
<dd><p>Given a graph <i class="term">G = (V,E)</i>, a matching or <i class="term">edge-independent set</i> <i class="term">M</i> in <i class="term">G</i> is a set of pairwise non-adjacent edges,
that is, no two edges share a common vertex. A vertex is <i class="term">matched</i> if it is incident to an edge in the <i class="term">matching M</i>.
Otherwise the vertex is <i class="term">unmatched</i>.</p></dd>
<dt>Generalizations:</dt>
<dd><ul class="itemized">
<li><p><i class="term">Maximal matching</i> - a matching <i class="term">M</i> of a graph G with the property that if any edge not in <i class="term">M</i> is added to <i class="term">M</i>,
it is no longer a <i class="term"><a href="../../../../index.html#key5">matching</a></i>, that is, <i class="term">M</i> is maximal if it is not a proper subset of any other <i class="term"><a href="../../../../index.html#key5">matching</a></i> in graph G. 
In other words, a <i class="term">matching M</i> of a graph G is maximal if every edge in G has a non-empty intersection with at least one edge in <i class="term">M</i>.</p></li>
<li><p><i class="term">Maximum matching</i> - a matching that contains the largest possible number of edges. There may be many <i class="term">maximum matchings</i>.
The <i class="term">matching number</i> of a graph G is the size of a <i class="term">maximum matching</i>. Note that every <i class="term">maximum matching</i> is <i class="term">maximal</i>,
but not every <i class="term">maximal matching</i> is a <i class="term">maximum matching</i>.</p></li>
<li><p><i class="term">Perfect matching</i> - a matching which matches all vertices of the graph. That is, every vertex of the graph is incident to exactly one
edge of the matching. Every <i class="term">perfect matching</i> is <i class="term"><a href="../../../../index.html#key288">maximum</a></i> and hence <i class="term">maximal</i>. In some literature, the term <i class="term">complete matching</i>
is used. A <i class="term">perfect matching</i> is also a <i class="term">minimum-size edge cover</i>. Moreover, the size of a <i class="term">maximum matching</i> is no larger than the 
size of a <i class="term">minimum edge cover</i>.</p></li>
<li><p><i class="term">Near-perfect matching</i> - a matching in which exactly one vertex is unmatched. This can only occur when the graph has an odd number of vertices,
and such a <i class="term"><a href="../../../../index.html#key5">matching</a></i> must be <i class="term"><a href="../../../../index.html#key288">maximum</a></i>. If, for every vertex in a graph, there is a near-perfect matching that omits only that vertex, the graph
is also called <i class="term">factor-critical</i>.</p></li>
</ul></dd>
<dt>Related terms:</dt>
<dd><ul class="itemized">
<li><p><i class="term">Alternating path</i> - given a matching <i class="term">M</i>, an <i class="term">alternating path</i> is a path in which the edges belong alternatively
to the matching and not to the matching.</p></li>
<li><p><i class="term"><a href="../../../../index.html#key466">Augmenting path</a></i> - given a matching <i class="term">M</i>, an <i class="term"><a href="../../../../index.html#key466">augmenting path</a></i> is an <i class="term">alternating path</i> that starts from 
and ends on free (unmatched) vertices.</p></li>
</ul></dd>
</dl>
</div>
<div id="subsection4" class="subsection"><h3><a name="subsection4">Cut Problems</a></h3>
<dl class="definitions">
<dt>Definition:</dt>
<dd><p>A <i class="term">cut</i> is a partition of the vertices of a graph into two <i class="term">disjoint subsets</i>. The <i class="term">cut-set</i> of the <i class="term">cut</i> is the 
set of edges whose end points are in different subsets of the partition. Edges are said to be crossing the cut if they are in its <i class="term">cut-set</i>.</p>
<p>Formally:</p>
<ul class="itemized">
<li><p>a <i class="term">cut</i> <i class="term">C = (S,T)</i> is a partition of <i class="term">V</i> of a graph <i class="term">G = (V, E)</i>.</p></li>
<li><p>an <i class="term">s-t cut</i> <i class="term">C = (S,T)</i> of a <i class="term"><a href="../../../../index.html#key475">flow network</a></i> <i class="term">N = (V, E)</i> is a cut of <i class="term">N</i> such that <i class="term">s</i> is included in <i class="term">S</i>
and <i class="term">t</i> is included in <i class="term">T</i>, where <i class="term">s</i> and <i class="term">t</i> are the <i class="term"><a href="../../../../index.html#key412">source</a></i> and the <i class="term">sink</i> of <i class="term">N</i> respectively.</p></li>
<li><p>The <i class="term">cut-set</i> of a <i class="term">cut C = (S,T)</i> is such set of edges from graph <i class="term">G = (V, E)</i> that each edge <i class="term">(u, v)</i> satisfies
condition that <i class="term">u</i> is included in <i class="term">S</i> and <i class="term">v</i> is included in <i class="term">T</i>.</p></li>
</ul>
<p>In an <i class="term">unweighted undirected</i> graph, the size or weight of a cut is the number of edges crossing the cut. In a <i class="term">weighted graph</i>,
the same term is defined by the sum of the weights of the edges crossing the cut.</p>
<p>In a <i class="term"><a href="../../../../index.html#key475">flow network</a></i>, an <i class="term">s-t cut</i> is a cut that requires the <i class="term"><a href="../../../../index.html#key412">source</a></i> and the <i class="term">sink</i> to be in different subsets,
and its <i class="term">cut-set</i> only consists of edges going from the <i class="term">source's</i> side to the <i class="term">sink's</i> side. The capacity of an <i class="term">s-t cut</i>
is defined by the sum of capacity of each edge in the <i class="term">cut-set</i>.</p>
<p>The <i class="term">cut</i> of a graph can sometimes refer to its <i class="term">cut-set</i> instead of the partition.</p></dd>
<dt>Generalizations:</dt>
<dd><ul class="itemized">
<li><p><i class="term">Minimum cut</i> - A cut is minimum if the size of the cut is not larger than the size of any other cut.</p></li>
<li><p><i class="term">Maximum cut</i> - A cut is maximum if the size of the cut is not smaller than the size of any other cut.</p></li>







|







|







|

















|





|

|

|
|
|



|













|






|









|







|





|





|







809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
<dt>List <i class="arg">C</i> (input)</dt>
<dd><p>A list of edges being <i class="term">Hamiltonian cycle</i>, which is solution of <i class="term">TSP Problem</i> for graph <i class="arg">G</i>.</p></dd>
</dl></dd>
<dt>Result:</dt>
<dd><p>Algorithm returns the best solution for <i class="term">TSP problem</i>, it was able to find.</p></dd>
</dl>
<p><em>Note:</em> In practise 3-approximation algorithm turns out to be far more effective than 2-approximation, but it gives
worser approximation factor. Further heuristics of local searching (e.g. 4-approximation) doesn't give enough boost to
square the increase of approximation factor, so 2 and 3 approximations are mainly used.</p></dd>
<dt><a name="45"><b class="cmd">struct::graph::op::createSquaredGraph</b> <i class="arg">G</i></a></dt>
<dd><p>X-Squared graph is a graph with the same set of nodes as input graph <i class="arg">G</i>, but a different set of edges. X-Squared graph
has edge <i class="term">(u,v)</i>, if and only if, the distance between <i class="term">u</i> and <i class="term">v</i> nodes is not greater than X and <i class="term">u != v</i>.</p>
<p>Procedure for input graph <i class="arg">G</i>, returns its two-squared graph.</p>
<p><em>Note:</em> Distances used in choosing new set of edges are considering the number of edges, not the sum of weights at edges.</p></dd>
<dt><a name="46"><b class="cmd">struct::graph::op::createCompleteGraph</b> <i class="arg">G</i> <i class="arg">originalEdges</i></a></dt>
<dd><p>For input graph <i class="arg">G</i> procedure adds missing arcs to make it a <i class="term"><a href="../../../../index.html#key464">complete graph</a></i>. It also holds in
variable <i class="arg">originalEdges</i> the set of arcs that graph <i class="arg">G</i> possessed before that operation.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Background theory and terms</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Shortest Path Problem</a></h3>
<dl class="definitions">
<dt>Definition (<i class="term">single-pair shortest path problem</i>):</dt>
<dd><p>Formally, given a weighted graph (let <i class="term">V</i> be the set of vertices, and <i class="term"><a href="../../../../index.html#key793">E</a></i> a set of edges),
and one vertice <i class="term">v</i> of <i class="term">V</i>, find a path <i class="term">P</i> from <i class="term">v</i> to a <i class="term">v'</i> of V so that
the sum of weights on edges along the path is minimal among all paths connecting v to v'.</p></dd>
<dt>Generalizations:</dt>
<dd><ul class="itemized">
<li><p><i class="term">The single-source shortest path problem</i>, in which we have to find shortest paths from a source vertex v to all other vertices in the graph.</p></li>
<li><p><i class="term">The single-destination shortest path problem</i>, in which we have to find shortest paths from all vertices in the graph to a single destination vertex v. This can be reduced to the single-source shortest path problem by reversing the edges in the graph.</p></li>
<li><p><i class="term">The all-pairs shortest path problem</i>, in which we have to find shortest paths between every pair of vertices v, v' in the graph.</p></li>
</ul>
<p><em>Note:</em>
The result of <i class="term">Shortest Path problem</i> can be <i class="term">Shortest Path tree</i>, which is a subgraph of a given (possibly weighted) graph constructed so that the
distance between a selected root node and all other nodes is minimal. It is a tree because if there are two paths between the root node and some
vertex v (i.e. a cycle), we can delete the last edge of the longer path without increasing the distance from the root node to any node in the subgraph.</p></dd>
</dl>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Travelling Salesman Problem</a></h3>
<dl class="definitions">
<dt>Definition:</dt>
<dd><p>For given edge-weighted (weights on edges should be positive) graph the goal is to find the cycle that visits each node in graph
exactly once (<i class="term">Hamiltonian cycle</i>).</p></dd>
<dt>Generalizations:</dt>
<dd><ul class="itemized">
<li><p><i class="term">Metric TSP</i> - A very natural restriction of the <i class="term">TSP</i> is to require that the distances between cities form a <i class="term">metric</i>, i.e.,
they satisfy <i class="term">the triangle inequality</i>. That is, for any 3 cities <i class="term">A</i>, <i class="term">B</i> and <i class="term"><a href="../../../../index.html#key501">C</a></i>, the distance between <i class="term">A</i> and <i class="term"><a href="../../../../index.html#key501">C</a></i>
must be at most the distance from <i class="term">A</i> to <i class="term">B</i> plus the distance from <i class="term">B</i> to <i class="term"><a href="../../../../index.html#key501">C</a></i>. Most natural instances of <i class="term">TSP</i>
satisfy this constraint.</p></li>
<li><p><i class="term">Euclidean TSP</i> - Euclidean TSP, or <i class="term">planar TSP</i>, is the <i class="term">TSP</i> with the distance being the ordinary <i class="term">Euclidean distance</i>.
<i class="term">Euclidean TSP</i> is a particular case of <i class="term">TSP</i> with <i class="term">triangle inequality</i>, since distances in plane obey triangle inequality. However,
it seems to be easier than general <i class="term">TSP</i> with <i class="term">triangle inequality</i>. For example, <i class="term">the minimum spanning tree</i> of the graph associated
with an instance of <i class="term">Euclidean TSP</i> is a <i class="term">Euclidean minimum spanning tree</i>, and so can be computed in expected <i class="term">O(n log n)</i> time for
<i class="term">n</i> points (considerably less than the number of edges). This enables the simple <i class="term">2-approximation algorithm</i> for TSP with triangle
inequality above to operate more quickly.</p></li>
<li><p><i class="term">Asymmetric TSP</i> - In most cases, the distance between two nodes in the <i class="term">TSP</i> network is the same in both directions.
The case where the distance from <i class="term">A</i> to <i class="term">B</i> is not equal to the distance from <i class="term">B</i> to <i class="term">A</i> is called <i class="term">asymmetric TSP</i>.
A practical application of an <i class="term">asymmetric TSP</i> is route optimisation using street-level routing (asymmetric due to one-way streets,
slip-roads and motorways).</p></li>
</ul></dd>
</dl>
</div>
<div id="subsection3" class="subsection"><h3><a name="subsection3">Matching Problem</a></h3>
<dl class="definitions">
<dt>Definition:</dt>
<dd><p>Given a graph <i class="term">G = (V,E)</i>, a matching or <i class="term">edge-independent set</i> <i class="term">M</i> in <i class="term">G</i> is a set of pairwise non-adjacent edges,
that is, no two edges share a common vertex. A vertex is <i class="term">matched</i> if it is incident to an edge in the <i class="term">matching M</i>.
Otherwise the vertex is <i class="term">unmatched</i>.</p></dd>
<dt>Generalizations:</dt>
<dd><ul class="itemized">
<li><p><i class="term">Maximal matching</i> - a matching <i class="term">M</i> of a graph G with the property that if any edge not in <i class="term">M</i> is added to <i class="term">M</i>,
it is no longer a <i class="term"><a href="../../../../index.html#key5">matching</a></i>, that is, <i class="term">M</i> is maximal if it is not a proper subset of any other <i class="term"><a href="../../../../index.html#key5">matching</a></i> in graph G.
In other words, a <i class="term">matching M</i> of a graph G is maximal if every edge in G has a non-empty intersection with at least one edge in <i class="term">M</i>.</p></li>
<li><p><i class="term">Maximum matching</i> - a matching that contains the largest possible number of edges. There may be many <i class="term">maximum matchings</i>.
The <i class="term">matching number</i> of a graph G is the size of a <i class="term">maximum matching</i>. Note that every <i class="term">maximum matching</i> is <i class="term">maximal</i>,
but not every <i class="term">maximal matching</i> is a <i class="term">maximum matching</i>.</p></li>
<li><p><i class="term">Perfect matching</i> - a matching which matches all vertices of the graph. That is, every vertex of the graph is incident to exactly one
edge of the matching. Every <i class="term">perfect matching</i> is <i class="term"><a href="../../../../index.html#key288">maximum</a></i> and hence <i class="term">maximal</i>. In some literature, the term <i class="term">complete matching</i>
is used. A <i class="term">perfect matching</i> is also a <i class="term">minimum-size edge cover</i>. Moreover, the size of a <i class="term">maximum matching</i> is no larger than the
size of a <i class="term">minimum edge cover</i>.</p></li>
<li><p><i class="term">Near-perfect matching</i> - a matching in which exactly one vertex is unmatched. This can only occur when the graph has an odd number of vertices,
and such a <i class="term"><a href="../../../../index.html#key5">matching</a></i> must be <i class="term"><a href="../../../../index.html#key288">maximum</a></i>. If, for every vertex in a graph, there is a near-perfect matching that omits only that vertex, the graph
is also called <i class="term">factor-critical</i>.</p></li>
</ul></dd>
<dt>Related terms:</dt>
<dd><ul class="itemized">
<li><p><i class="term">Alternating path</i> - given a matching <i class="term">M</i>, an <i class="term">alternating path</i> is a path in which the edges belong alternatively
to the matching and not to the matching.</p></li>
<li><p><i class="term"><a href="../../../../index.html#key466">Augmenting path</a></i> - given a matching <i class="term">M</i>, an <i class="term"><a href="../../../../index.html#key466">augmenting path</a></i> is an <i class="term">alternating path</i> that starts from
and ends on free (unmatched) vertices.</p></li>
</ul></dd>
</dl>
</div>
<div id="subsection4" class="subsection"><h3><a name="subsection4">Cut Problems</a></h3>
<dl class="definitions">
<dt>Definition:</dt>
<dd><p>A <i class="term">cut</i> is a partition of the vertices of a graph into two <i class="term">disjoint subsets</i>. The <i class="term">cut-set</i> of the <i class="term">cut</i> is the
set of edges whose end points are in different subsets of the partition. Edges are said to be crossing the cut if they are in its <i class="term">cut-set</i>.</p>
<p>Formally:</p>
<ul class="itemized">
<li><p>a <i class="term">cut</i> <i class="term">C = (S,T)</i> is a partition of <i class="term">V</i> of a graph <i class="term">G = (V, E)</i>.</p></li>
<li><p>an <i class="term">s-t cut</i> <i class="term">C = (S,T)</i> of a <i class="term"><a href="../../../../index.html#key475">flow network</a></i> <i class="term">N = (V, E)</i> is a cut of <i class="term">N</i> such that <i class="term">s</i> is included in <i class="term">S</i>
and <i class="term">t</i> is included in <i class="term">T</i>, where <i class="term">s</i> and <i class="term">t</i> are the <i class="term"><a href="../../../../index.html#key411">source</a></i> and the <i class="term">sink</i> of <i class="term">N</i> respectively.</p></li>
<li><p>The <i class="term">cut-set</i> of a <i class="term">cut C = (S,T)</i> is such set of edges from graph <i class="term">G = (V, E)</i> that each edge <i class="term">(u, v)</i> satisfies
condition that <i class="term">u</i> is included in <i class="term">S</i> and <i class="term">v</i> is included in <i class="term">T</i>.</p></li>
</ul>
<p>In an <i class="term">unweighted undirected</i> graph, the size or weight of a cut is the number of edges crossing the cut. In a <i class="term">weighted graph</i>,
the same term is defined by the sum of the weights of the edges crossing the cut.</p>
<p>In a <i class="term"><a href="../../../../index.html#key475">flow network</a></i>, an <i class="term">s-t cut</i> is a cut that requires the <i class="term"><a href="../../../../index.html#key411">source</a></i> and the <i class="term">sink</i> to be in different subsets,
and its <i class="term">cut-set</i> only consists of edges going from the <i class="term">source's</i> side to the <i class="term">sink's</i> side. The capacity of an <i class="term">s-t cut</i>
is defined by the sum of capacity of each edge in the <i class="term">cut-set</i>.</p>
<p>The <i class="term">cut</i> of a graph can sometimes refer to its <i class="term">cut-set</i> instead of the partition.</p></dd>
<dt>Generalizations:</dt>
<dd><ul class="itemized">
<li><p><i class="term">Minimum cut</i> - A cut is minimum if the size of the cut is not larger than the size of any other cut.</p></li>
<li><p><i class="term">Maximum cut</i> - A cut is maximum if the size of the cut is not smaller than the size of any other cut.</p></li>
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
<i class="term">max-flow min-cut theorem</i>.</p>
<p>More formally for flow network <i class="term">G = (V,E)</i>, where for each edge <i class="term">(u, v)</i> we have its throuhgput <i class="term">c(u,v)</i> defined. As <i class="term"><a href="../../../../index.html#key127">flow</a></i>
<i class="term">F</i> we define set of non-negative integer attributes <i class="term">f(u,v)</i> assigned to edges, satisfying such conditions:</p>
<ol class="enumerated">
<li><p>for each edge <i class="term">(u, v)</i> in <i class="term">G</i> such condition should be satisfied:      0 &lt;= f(u,v) &lt;= c(u,v)</p></li>
<li><p>Network <i class="term">G</i> has source node <i class="term">s</i> such that the flow <i class="term">F</i> is equal to the sum of outcoming flow decreased by the sum of incoming flow from that source node <i class="term">s</i>.</p></li>
<li><p>Network <i class="term">G</i> has sink node <i class="term">t</i> such that the the <i class="term">-F</i> value is equal to the sum of the incoming flow decreased by the sum of outcoming flow from that sink node <i class="term">t</i>.</p></li>
<li><p>For each node that is not a <i class="term"><a href="../../../../index.html#key412">source</a></i> or <i class="term">sink</i> the sum of incoming flow and sum of outcoming flow should be equal.</p></li>
</ol>
</li>
<li><p><i class="term">the minimum cost flow problem</i> - the goal is finding the cheapest possible way of sending a certain amount of flow through a <i class="term"><a href="../../../../index.html#key475">flow network</a></i>.</p></li>
<li><p><i class="term"><a href="../../../../index.html#key432">blocking flow</a></i> - a <i class="term"><a href="../../../../index.html#key432">blocking flow</a></i> for a <i class="term">residual network</i> <i class="term">Gf</i> we name such flow <i class="term">b</i> in <i class="term">Gf</i> that:</p>
<ol class="enumerated">
<li><p>Each path from <i class="term">sink</i> to <i class="term"><a href="../../../../index.html#key412">source</a></i> is the shortest path in <i class="term">Gf</i>.</p></li>
<li><p>Each shortest path in <i class="term">Gf</i> contains an edge with fully used throughput in <i class="term">Gf+b</i>.</p></li>
</ol>
</li>
<li><p><i class="term">residual network</i> - for a flow network <i class="term">G</i> and flow <i class="term">f</i> <i class="term">residual network</i> is built with those edges, which can
send larger flow. It contains only those edges, which can send flow larger than 0.</p></li>
<li><p><i class="term">level network</i> - it has the same set of nodes as <i class="term"><a href="../../../../index.html#key441">residual graph</a></i>, but has only those edges <i class="term">(u,v)</i> from <i class="arg">Gf</i>
for which such equality is satisfied: <i class="term">distance(s,u)+1 = distance(s,v)</i>.</p></li>
<li><p><i class="term"><a href="../../../../index.html#key446">augmenting network</a></i> - it is a modification of <i class="term">residual network</i> considering the new
flow values. Structure stays unchanged but values of throughputs and costs at edges
are different.</p></li>
</ul></dd>
</dl>
</div>







|





|





|







957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
<i class="term">max-flow min-cut theorem</i>.</p>
<p>More formally for flow network <i class="term">G = (V,E)</i>, where for each edge <i class="term">(u, v)</i> we have its throuhgput <i class="term">c(u,v)</i> defined. As <i class="term"><a href="../../../../index.html#key127">flow</a></i>
<i class="term">F</i> we define set of non-negative integer attributes <i class="term">f(u,v)</i> assigned to edges, satisfying such conditions:</p>
<ol class="enumerated">
<li><p>for each edge <i class="term">(u, v)</i> in <i class="term">G</i> such condition should be satisfied:      0 &lt;= f(u,v) &lt;= c(u,v)</p></li>
<li><p>Network <i class="term">G</i> has source node <i class="term">s</i> such that the flow <i class="term">F</i> is equal to the sum of outcoming flow decreased by the sum of incoming flow from that source node <i class="term">s</i>.</p></li>
<li><p>Network <i class="term">G</i> has sink node <i class="term">t</i> such that the the <i class="term">-F</i> value is equal to the sum of the incoming flow decreased by the sum of outcoming flow from that sink node <i class="term">t</i>.</p></li>
<li><p>For each node that is not a <i class="term"><a href="../../../../index.html#key411">source</a></i> or <i class="term">sink</i> the sum of incoming flow and sum of outcoming flow should be equal.</p></li>
</ol>
</li>
<li><p><i class="term">the minimum cost flow problem</i> - the goal is finding the cheapest possible way of sending a certain amount of flow through a <i class="term"><a href="../../../../index.html#key475">flow network</a></i>.</p></li>
<li><p><i class="term"><a href="../../../../index.html#key432">blocking flow</a></i> - a <i class="term"><a href="../../../../index.html#key432">blocking flow</a></i> for a <i class="term">residual network</i> <i class="term">Gf</i> we name such flow <i class="term">b</i> in <i class="term">Gf</i> that:</p>
<ol class="enumerated">
<li><p>Each path from <i class="term">sink</i> to <i class="term"><a href="../../../../index.html#key411">source</a></i> is the shortest path in <i class="term">Gf</i>.</p></li>
<li><p>Each shortest path in <i class="term">Gf</i> contains an edge with fully used throughput in <i class="term">Gf+b</i>.</p></li>
</ol>
</li>
<li><p><i class="term">residual network</i> - for a flow network <i class="term">G</i> and flow <i class="term">f</i> <i class="term">residual network</i> is built with those edges, which can
send larger flow. It contains only those edges, which can send flow larger than 0.</p></li>
<li><p><i class="term">level network</i> - it has the same set of nodes as <i class="term"><a href="../../../../index.html#key442">residual graph</a></i>, but has only those edges <i class="term">(u,v)</i> from <i class="arg">Gf</i>
for which such equality is satisfied: <i class="term">distance(s,u)+1 = distance(s,v)</i>.</p></li>
<li><p><i class="term"><a href="../../../../index.html#key446">augmenting network</a></i> - it is a modification of <i class="term">residual network</i> considering the new
flow values. Structure stays unchanged but values of throughputs and costs at edges
are different.</p></li>
</ul></dd>
</dl>
</div>
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
<li><p><a href="http://en.wikipedia.org/wiki/Dinic's_algorithm">Dinic's algorithm</a></p></li>
<li><p><a href="http://www.csc.kth.se/~viggo/wwwcompendium/node128.html">K-Center problem</a></p></li>
<li><p><a href="http://en.wikipedia.org/wiki/Breadth-first_search">BFS</a></p></li>
<li><p><a href="http://en.wikipedia.org/wiki/Degree-constrained_spanning_tree">Minimum Degree Spanning Tree</a></p></li>
<li><p><a href="http://en.wikipedia.org/wiki/Approximation_algorithm">Approximation algorithm</a></p></li>
</ol>
</div>
<div id="section5" class="section"><h2><a name="section5">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: graph</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key444">adjacency list</a>, <a href="../../../../index.html#key468">adjacency matrix</a>, <a href="../../../../index.html#key461">adjacent</a>, <a href="../../../../index.html#key470">approximation algorithm</a>, <a href="../../../../index.html#key449">arc</a>, <a href="../../../../index.html#key459">articulation point</a>, <a href="../../../../index.html#key446">augmenting network</a>, <a href="../../../../index.html#key466">augmenting path</a>, <a href="../../../../index.html#key442">bfs</a>, <a href="../../../../index.html#key472">bipartite</a>, <a href="../../../../index.html#key432">blocking flow</a>, <a href="../../../../index.html#key443">bridge</a>, <a href="../../../../index.html#key465">complete graph</a>, <a href="../../../../index.html#key457">connected component</a>, <a href="../../../../index.html#key460">cut edge</a>, <a href="../../../../index.html#key462">cut vertex</a>, <a href="../../../../index.html#key452">degree</a>, <a href="../../../../index.html#key451">degree constrained spanning tree</a>, <a href="../../../../index.html#key434">diameter</a>, <a href="../../../../index.html#key471">dijkstra</a>, <a href="../../../../index.html#key455">distance</a>, <a href="../../../../index.html#key477">eccentricity</a>, <a href="../../../../index.html#key436">edge</a>, <a href="../../../../index.html#key475">flow network</a>, <a href="../../../../index.html#key282">graph</a>, <a href="../../../../index.html#key450">heuristic</a>, <a href="../../../../index.html#key447">independent set</a>, <a href="../../../../index.html#key467">isthmus</a>, <a href="../../../../index.html#key463">level graph</a>, <a href="../../../../index.html#key458">local searching</a>, <a href="../../../../index.html#key433">loop</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key454">max cut</a>, <a href="../../../../index.html#key474">maximum flow</a>, <a href="../../../../index.html#key437">minimal spanning tree</a>, <a href="../../../../index.html#key448">minimum cost flow</a>, <a href="../../../../index.html#key440">minimum degree spanning tree</a>, <a href="../../../../index.html#key476">minimum diameter spanning tree</a>, <a href="../../../../index.html#key464">neighbour</a>, <a href="../../../../index.html#key439">node</a>, <a href="../../../../index.html#key445">radius</a>, <a href="../../../../index.html#key441">residual graph</a>, <a href="../../../../index.html#key453">shortest path</a>, <a href="../../../../index.html#key469">squared graph</a>, <a href="../../../../index.html#key431">strongly connected component</a>, <a href="../../../../index.html#key456">subgraph</a>, <a href="../../../../index.html#key435">travelling salesman</a>, <a href="../../../../index.html#key438">vertex</a>, <a href="../../../../index.html#key473">vertex cover</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2008 Alejandro Paz &lt;[email protected]&gt;<br>
Copyright &copy; 2008 (docs) Andreas Kupries &lt;[email protected]&gt;<br>
Copyright &copy; 2009 Michal Antoniewski &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|










1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
<li><p><a href="http://en.wikipedia.org/wiki/Dinic's_algorithm">Dinic's algorithm</a></p></li>
<li><p><a href="http://www.csc.kth.se/~viggo/wwwcompendium/node128.html">K-Center problem</a></p></li>
<li><p><a href="http://en.wikipedia.org/wiki/Breadth-first_search">BFS</a></p></li>
<li><p><a href="http://en.wikipedia.org/wiki/Degree-constrained_spanning_tree">Minimum Degree Spanning Tree</a></p></li>
<li><p><a href="http://en.wikipedia.org/wiki/Approximation_algorithm">Approximation algorithm</a></p></li>
</ol>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: graph</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key444">adjacency list</a>, <a href="../../../../index.html#key468">adjacency matrix</a>, <a href="../../../../index.html#key461">adjacent</a>, <a href="../../../../index.html#key470">approximation algorithm</a>, <a href="../../../../index.html#key449">arc</a>, <a href="../../../../index.html#key459">articulation point</a>, <a href="../../../../index.html#key446">augmenting network</a>, <a href="../../../../index.html#key466">augmenting path</a>, <a href="../../../../index.html#key441">bfs</a>, <a href="../../../../index.html#key471">bipartite</a>, <a href="../../../../index.html#key432">blocking flow</a>, <a href="../../../../index.html#key443">bridge</a>, <a href="../../../../index.html#key464">complete graph</a>, <a href="../../../../index.html#key457">connected component</a>, <a href="../../../../index.html#key460">cut edge</a>, <a href="../../../../index.html#key462">cut vertex</a>, <a href="../../../../index.html#key451">degree</a>, <a href="../../../../index.html#key452">degree constrained spanning tree</a>, <a href="../../../../index.html#key434">diameter</a>, <a href="../../../../index.html#key472">dijkstra</a>, <a href="../../../../index.html#key455">distance</a>, <a href="../../../../index.html#key477">eccentricity</a>, <a href="../../../../index.html#key436">edge</a>, <a href="../../../../index.html#key475">flow network</a>, <a href="../../../../index.html#key283">graph</a>, <a href="../../../../index.html#key450">heuristic</a>, <a href="../../../../index.html#key447">independent set</a>, <a href="../../../../index.html#key467">isthmus</a>, <a href="../../../../index.html#key463">level graph</a>, <a href="../../../../index.html#key458">local searching</a>, <a href="../../../../index.html#key433">loop</a>, <a href="../../../../index.html#key5">matching</a>, <a href="../../../../index.html#key454">max cut</a>, <a href="../../../../index.html#key474">maximum flow</a>, <a href="../../../../index.html#key437">minimal spanning tree</a>, <a href="../../../../index.html#key448">minimum cost flow</a>, <a href="../../../../index.html#key438">minimum degree spanning tree</a>, <a href="../../../../index.html#key476">minimum diameter spanning tree</a>, <a href="../../../../index.html#key465">neighbour</a>, <a href="../../../../index.html#key439">node</a>, <a href="../../../../index.html#key445">radius</a>, <a href="../../../../index.html#key442">residual graph</a>, <a href="../../../../index.html#key453">shortest path</a>, <a href="../../../../index.html#key469">squared graph</a>, <a href="../../../../index.html#key431">strongly connected component</a>, <a href="../../../../index.html#key456">subgraph</a>, <a href="../../../../index.html#key435">travelling salesman</a>, <a href="../../../../index.html#key440">vertex</a>, <a href="../../../../index.html#key473">vertex cover</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2008 Alejandro Paz &lt;[email protected]&gt;<br>
Copyright &copy; 2008 (docs) Andreas Kupries &lt;[email protected]&gt;<br>
Copyright &copy; 2009 Michal Antoniewski &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/struct/matrix.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">EXAMPLES</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">EXAMPLES</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
    |   |true numeric       |       |       |        |
    +---+-------------------+-------+-------+--------+
    %
    % # alternate way of doing the above
    % r printmatrix m
</pre>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: matrix</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key55">matrix</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
    |   |true numeric       |       |       |        |
    +---+-------------------+-------+-------+--------+
    %
    % # alternate way of doing the above
    % r printmatrix m
</pre>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: matrix</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key55">matrix</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/struct/matrix1.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">EXAMPLES</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">EXAMPLES</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
    |   |true numeric       |       |       |        |
    +---+-------------------+-------+-------+--------+
    %
    % # alternate way of doing the above
    % r printmatrix m
</pre>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: matrix</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key55">matrix</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
    |   |true numeric       |       |       |        |
    +---+-------------------+-------+-------+--------+
    %
    % # alternate way of doing the above
    % r printmatrix m
</pre>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: matrix</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key55">matrix</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/struct/pool.html.

117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">POOLS AND ALLOCATION</a></li>
<li class="section"><a href="#section3">ITEMS</a></li>
<li class="section"><a href="#section4">POOL OBJECT COMMAND</a></li>
<li class="section"><a href="#section5">EXAMPLES</a></li>
<li class="section"><a href="#section6">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">POOLS AND ALLOCATION</a></li>
<li class="section"><a href="#section3">ITEMS</a></li>
<li class="section"><a href="#section4">POOL OBJECT COMMAND</a></li>
<li class="section"><a href="#section5">EXAMPLES</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
list of options and their behaviour.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">POOLS AND ALLOCATION</a></h2>
<p>The purpose of the pool command and the pool object command that it
generates, is to manage pools of discrete items.
      
Examples of a pool of discrete items are:</p>
<ul class="itemized">
<li><p>the seats in a cinema, theatre, train etc.. for which visitors/travelers can  make a reservation;</p></li>
<li><p>the dynamic IP-addresses that an ISP can dole out  to subscribers;</p></li>
<li><p>a car rental's collection of cars, which can be rented by customers;</p></li>
<li><p>the class rooms in a school building, which need to be scheduled;</p></li>
<li><p>the database connections available to client-threads in a web-server application;</p></li>







<







169
170
171
172
173
174
175

176
177
178
179
180
181
182
list of options and their behaviour.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">POOLS AND ALLOCATION</a></h2>
<p>The purpose of the pool command and the pool object command that it
generates, is to manage pools of discrete items.

Examples of a pool of discrete items are:</p>
<ul class="itemized">
<li><p>the seats in a cinema, theatre, train etc.. for which visitors/travelers can  make a reservation;</p></li>
<li><p>the dynamic IP-addresses that an ISP can dole out  to subscribers;</p></li>
<li><p>a car rental's collection of cars, which can be rented by customers;</p></li>
<li><p>the class rooms in a school building, which need to be scheduled;</p></li>
<li><p>the database connections available to client-threads in a web-server application;</p></li>
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
<i class="term">owned</i> or <i class="term">occupied</i>; it is not available anymore. If
an item is <i class="term">free</i>, it is <i class="term">available</i>. Deallocating an
item is equivalent to setting free or releasing an item. The person or
entity to which the item has been allotted is said to own the item.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">ITEMS</a></h2>
<p><em>Discrete items</em></p>
<p>The <b class="cmd"><a href="../../../../index.html#key281">pool</a></b> command is designed for
<em>discrete items only</em>. Note that there are pools where
allocation occurs on a non-discrete basis, for example computer
memory. There are also pools from which the shares that are doled out
are not expected to be returned, for example a charity fund or a pan
of soup from which you may receive a portion. Finally, there are even
pools from which nothing is ever allocated or returned, like a
swimming pool or a cesspool.</p>







|







197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
<i class="term">owned</i> or <i class="term">occupied</i>; it is not available anymore. If
an item is <i class="term">free</i>, it is <i class="term">available</i>. Deallocating an
item is equivalent to setting free or releasing an item. The person or
entity to which the item has been allotted is said to own the item.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">ITEMS</a></h2>
<p><em>Discrete items</em></p>
<p>The <b class="cmd"><a href="../../../../index.html#key282">pool</a></b> command is designed for
<em>discrete items only</em>. Note that there are pools where
allocation occurs on a non-discrete basis, for example computer
memory. There are also pools from which the shares that are doled out
are not expected to be returned, for example a charity fund or a pan
of soup from which you may receive a portion. Finally, there are even
pools from which nothing is ever allocated or returned, like a
swimming pool or a cesspool.</p>
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
manage such item properties. If item properties play a role in an
application, they should be managed separately.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">POOL OBJECT COMMAND</a></h2>
<p>The following subcommands and corresponding arguments are available to
any pool object command.</p>
<dl class="definitions">
 
<dt><a name="3"><i class="arg">poolName</i> <b class="method">add</b> <i class="arg">itemName1</i> <span class="opt">?<i class="arg">itemName2 itemName3 ...</i>?</span></a></dt>
<dd><p>This command adds the items on the command line to the pool. If
duplicate item names occur on the command line, an error is raised. If
one or more of the items already exist in the pool, this also is
considered an error.</p></dd>
<dt><a name="4"><i class="arg">poolName</i> <b class="method">clear</b> <span class="opt">?<b class="option">-force</b>?</span></a></dt>
<dd><p>Removes all items from the pool. If there are any allocated items at







<







227
228
229
230
231
232
233

234
235
236
237
238
239
240
manage such item properties. If item properties play a role in an
application, they should be managed separately.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">POOL OBJECT COMMAND</a></h2>
<p>The following subcommands and corresponding arguments are available to
any pool object command.</p>
<dl class="definitions">

<dt><a name="3"><i class="arg">poolName</i> <b class="method">add</b> <i class="arg">itemName1</i> <span class="opt">?<i class="arg">itemName2 itemName3 ...</i>?</span></a></dt>
<dd><p>This command adds the items on the command line to the pool. If
duplicate item names occur on the command line, an error is raised. If
one or more of the items already exist in the pool, this also is
considered an error.</p></dd>
<dt><a name="4"><i class="arg">poolName</i> <b class="method">clear</b> <span class="opt">?<b class="option">-force</b>?</span></a></dt>
<dd><p>Removes all items from the pool. If there are any allocated items at
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
<b class="option">-force</b>. If it is supplied on the command line, the pool data
structure will be destroyed regardless allocation state of its items.</p></dd>
<dt><a name="6"><i class="arg">poolName</i> <b class="method">info</b> <i class="arg">type</i> <span class="opt">?<i class="arg">arg</i>?</span></a></dt>
<dd><p>Returns various information about the pool for further programmatic
use. The <i class="arg">type</i> argument indicates the type of information
requested. Only the type <b class="const">allocID</b> uses an additional argument.</p>
<dl class="definitions">
     
<dt><b class="const">allocID</b> <i class="arg">itemName</i></dt>
<dd><p>returns the allocID of the item whose name is <i class="arg">itemName</i>. Free
items have an allocation id of <b class="const">-1</b>.</p></dd>
<dt><b class="const">allitems</b></dt>
<dd><p>returns a list of all items in the pool.</p></dd>
<dt><b class="const">allocstate</b></dt>
<dd><p>Returns a list of key-value pairs, where the keys are the items and







<







250
251
252
253
254
255
256

257
258
259
260
261
262
263
<b class="option">-force</b>. If it is supplied on the command line, the pool data
structure will be destroyed regardless allocation state of its items.</p></dd>
<dt><a name="6"><i class="arg">poolName</i> <b class="method">info</b> <i class="arg">type</i> <span class="opt">?<i class="arg">arg</i>?</span></a></dt>
<dd><p>Returns various information about the pool for further programmatic
use. The <i class="arg">type</i> argument indicates the type of information
requested. Only the type <b class="const">allocID</b> uses an additional argument.</p>
<dl class="definitions">

<dt><b class="const">allocID</b> <i class="arg">itemName</i></dt>
<dd><p>returns the allocID of the item whose name is <i class="arg">itemName</i>. Free
items have an allocation id of <b class="const">-1</b>.</p></dd>
<dt><b class="const">allitems</b></dt>
<dd><p>returns a list of all items in the pool.</p></dd>
<dt><b class="const">allocstate</b></dt>
<dd><p>Returns a list of key-value pairs, where the keys are the items and
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
<p>The return values from this command are meant to be inspected. The
examples below show how to do this. Failure to check the return value
may result in erroneous behaviour. If no preference for a particular
item is supplied through the option <b class="option">-prefer</b> (see below), then
all requests are honoured as long as items are available.</p>
<p>The following options are supported:</p>
<dl class="definitions">
 
<dt><b class="option">-allocID</b> <i class="arg">allocID</i></dt>
<dd><p>If the request is honoured, an item will be allocated to the entity
identified by allocID. If the allocation state of an item is queried,
it is this allocation ID that will be returned. If the option
<b class="option">-allocID</b> is not supplied, the item will be given to and owned
by <b class="const">dummyID</b>. Allocation id's may be anything except the value
-1, which is reserved for free items.</p></dd>







<







304
305
306
307
308
309
310

311
312
313
314
315
316
317
<p>The return values from this command are meant to be inspected. The
examples below show how to do this. Failure to check the return value
may result in erroneous behaviour. If no preference for a particular
item is supplied through the option <b class="option">-prefer</b> (see below), then
all requests are honoured as long as items are available.</p>
<p>The following options are supported:</p>
<dl class="definitions">

<dt><b class="option">-allocID</b> <i class="arg">allocID</i></dt>
<dd><p>If the request is honoured, an item will be allocated to the entity
identified by allocID. If the allocation state of an item is queried,
it is this allocation ID that will be returned. If the option
<b class="option">-allocID</b> is not supplied, the item will be given to and owned
by <b class="const">dummyID</b>. Allocation id's may be anything except the value
-1, which is reserved for free items.</p></dd>
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
<p>In this example, brand names are used to label the various
items. However, a brand name could be regarded as a property of an
item. Because the pool command is not designed to manage properties of
items, they need to be managed separately. In the latter case the
items should be labeled with more neutral names such as: car1, car2,
car3 , etc ... and a separate database or array should hold the brand
names associated with the car labels.</p>
<pre class="example">      
     1. Load the package into an interpreter
     % package require pool
     0.1
      
     2. Create a pool object called `CarPool' with a maximum size of 55 items (cars):
     % pool CarPool 55
     CarPool
      
     4. Add items to the pool:
     % CarPool add Toyota Trabant Chrysler1 Chrysler2 Volkswagen
                   
     5. Somebody crashed the Toyota. Remove it from the pool as follows:
     % CarPool remove Toyota
      
     6. Acquired a new car for the pool. Add it as follows:
     % CarPool add Nissan
      
     7. Check whether the pool was adjusted correctly:
     % CarPool info allitems
     Trabant Chrysler1 Chrysler2 Volkswagen Nissan
</pre>
<p>Suspend the interactive session temporarily, and show the programmatic
use of the request subcommand:</p>
<pre class="example">     
     # Mrs. Swift needs a car. She doesn't have a preference for a
     # particular car. We'll issue a request on her behalf as follows:
     if { [CarPool request car -allocID &quot;Mrs. Swift&quot;] }  {
         # request was honoured, process the variable `car'
         puts &quot;$car has been allocated to [CarPool info allocID $car].&quot;
     } else {
         # request was denied
          puts &quot;No car available.&quot;
     }
</pre>
<p>Note how the <b class="cmd">if</b> command uses the value returned by the
<b class="method">request</b> subcommand.</p>
<pre class="example">      
     # Suppose Mr. Wiggly has a preference for the Trabant:
     if { [CarPool request car -allocID &quot;Mr. Wiggly&quot; -prefer Trabant] }  {
         # request was honoured, process the variable `car'
         puts &quot;$car has been allocated to [CarPool info allocID $car].&quot;
     } else {
         # request was denied
          puts &quot;The Trabant was not available.&quot;
     }
</pre>
<p>Resume the interactive session:</p>
<pre class="example">
     8. When the car is returned then you can render it available by:
     % CarPool release Trabant
      
     9. When done, you delete the pool.
     % CarPool destroy
     Couldn't destroy `CarPool' because some items are still allocated.
      
     Oops, forgot that Mrs. Swift still occupies a car.
      
     10. We force the destruction of the pool as follows: 
     % CarPool destroy -force
</pre>
<p><em>Example 2</em></p>
<p>This example describes the case from which the author's need for pool
management originated. It is an example of a server application that
receives requests from client applications. The client requests are
dispatched onto a back-end application before being returned to the
client application. In many cases there are a few equivalent instances
of back-end applications to which a client request may be passed
along. The file descriptors that identify the channels to these
back-end instances make up a pool of connections. A particular
connection may be allocated to just one client request at a time.</p>
<pre class="example"> 
     # Create the pool of connections (pipes)
     set maxpipes 10
     pool Pipes $maxpipes
     for {set i 0} {$i &lt; $maxpipes} {incr i} {
         set fd [open &quot;|backendApplication&quot; w+]
         Pipes add $fd
     }
      
     # A client request comes in. The request is identified as `clientX'.
     # Dispatch it onto an instance of a back-end application
     if { [Pipes request fd -allocID clientX] } {
         # a connection was allocated
         # communicate to the back-end application via the variable `fd'
         puts $fd &quot;someInstruction&quot;
         # ...... etc.
     } else {
         # all connections are currently occupied
         # store the client request in a queue for later processing,
         # or return a 'Server busy' message to the client.
     }
</pre>
</div>
<div id="section6" class="section"><h2><a name="section6">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: pool</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key768">discrete items</a>, <a href="../../../../index.html#key769">finite</a>, <a href="../../../../index.html#key281">pool</a>, <a href="../../../../index.html#key318">struct</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002, Erik Leunissen &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



<



<


<


<


<






|












|













<



<

<
|












|







<














|



|




|








338
339
340
341
342
343
344
345
346
347
348

349
350
351

352
353

354
355

356
357

358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390

391
392
393

394

395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415

416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
<p>In this example, brand names are used to label the various
items. However, a brand name could be regarded as a property of an
item. Because the pool command is not designed to manage properties of
items, they need to be managed separately. In the latter case the
items should be labeled with more neutral names such as: car1, car2,
car3 , etc ... and a separate database or array should hold the brand
names associated with the car labels.</p>
<pre class="example">
     1. Load the package into an interpreter
     % package require pool
     0.1

     2. Create a pool object called `CarPool' with a maximum size of 55 items (cars):
     % pool CarPool 55
     CarPool

     4. Add items to the pool:
     % CarPool add Toyota Trabant Chrysler1 Chrysler2 Volkswagen

     5. Somebody crashed the Toyota. Remove it from the pool as follows:
     % CarPool remove Toyota

     6. Acquired a new car for the pool. Add it as follows:
     % CarPool add Nissan

     7. Check whether the pool was adjusted correctly:
     % CarPool info allitems
     Trabant Chrysler1 Chrysler2 Volkswagen Nissan
</pre>
<p>Suspend the interactive session temporarily, and show the programmatic
use of the request subcommand:</p>
<pre class="example">
     # Mrs. Swift needs a car. She doesn't have a preference for a
     # particular car. We'll issue a request on her behalf as follows:
     if { [CarPool request car -allocID &quot;Mrs. Swift&quot;] }  {
         # request was honoured, process the variable `car'
         puts &quot;$car has been allocated to [CarPool info allocID $car].&quot;
     } else {
         # request was denied
          puts &quot;No car available.&quot;
     }
</pre>
<p>Note how the <b class="cmd">if</b> command uses the value returned by the
<b class="method">request</b> subcommand.</p>
<pre class="example">
     # Suppose Mr. Wiggly has a preference for the Trabant:
     if { [CarPool request car -allocID &quot;Mr. Wiggly&quot; -prefer Trabant] }  {
         # request was honoured, process the variable `car'
         puts &quot;$car has been allocated to [CarPool info allocID $car].&quot;
     } else {
         # request was denied
          puts &quot;The Trabant was not available.&quot;
     }
</pre>
<p>Resume the interactive session:</p>
<pre class="example">
     8. When the car is returned then you can render it available by:
     % CarPool release Trabant

     9. When done, you delete the pool.
     % CarPool destroy
     Couldn't destroy `CarPool' because some items are still allocated.

     Oops, forgot that Mrs. Swift still occupies a car.

     10. We force the destruction of the pool as follows:
     % CarPool destroy -force
</pre>
<p><em>Example 2</em></p>
<p>This example describes the case from which the author's need for pool
management originated. It is an example of a server application that
receives requests from client applications. The client requests are
dispatched onto a back-end application before being returned to the
client application. In many cases there are a few equivalent instances
of back-end applications to which a client request may be passed
along. The file descriptors that identify the channels to these
back-end instances make up a pool of connections. A particular
connection may be allocated to just one client request at a time.</p>
<pre class="example">
     # Create the pool of connections (pipes)
     set maxpipes 10
     pool Pipes $maxpipes
     for {set i 0} {$i &lt; $maxpipes} {incr i} {
         set fd [open &quot;|backendApplication&quot; w+]
         Pipes add $fd
     }

     # A client request comes in. The request is identified as `clientX'.
     # Dispatch it onto an instance of a back-end application
     if { [Pipes request fd -allocID clientX] } {
         # a connection was allocated
         # communicate to the back-end application via the variable `fd'
         puts $fd &quot;someInstruction&quot;
         # ...... etc.
     } else {
         # all connections are currently occupied
         # store the client request in a queue for later processing,
         # or return a 'Server busy' message to the client.
     }
</pre>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: pool</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key768">discrete items</a>, <a href="../../../../index.html#key769">finite</a>, <a href="../../../../index.html#key282">pool</a>, <a href="../../../../index.html#key318">struct</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002, Erik Leunissen &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/struct/prioqueue.html.

112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<p>struct::prioqueue - Create and manipulate prioqueue objects</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<p>struct::prioqueue - Create and manipulate prioqueue objects</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
<dt><a name="4"><i class="arg">prioqueueName</i> <b class="cmd"><a href="../../../../index.html#key226">remove</a></b> <i class="arg">item</i></a></dt>
<dd><p>Remove the selected item from this priority queue.</p></dd>
<dt><a name="5"><i class="arg">prioqueueName</i> <b class="cmd">destroy</b></a></dt>
<dd><p>Destroy the prioqueue, including its storage space and associated
command.</p></dd>
<dt><a name="6"><i class="arg">prioqueueName</i> <b class="cmd">get</b> <span class="opt">?<i class="arg">count</i>?</span></a></dt>
<dd><p>Return the front <i class="arg">count</i> items of the prioqueue (but not their
priorities) and remove them from the prioqueue. 
If <i class="arg">count</i> is not specified, it defaults to 1.  If <i class="arg">count</i> is
1, the result is a simple string; otherwise, it is a list.  If
specified, <i class="arg">count</i> must be greater than or equal to 1.  If there
are no or too few items in the prioqueue, this command will throw an
error.</p></dd>
<dt><a name="7"><i class="arg">prioqueueName</i> <b class="cmd">peek</b> <span class="opt">?<i class="arg">count</i>?</span></a></dt>
<dd><p>Return the front <i class="arg">count</i> items of the prioqueue (but not their







|







168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
<dt><a name="4"><i class="arg">prioqueueName</i> <b class="cmd"><a href="../../../../index.html#key226">remove</a></b> <i class="arg">item</i></a></dt>
<dd><p>Remove the selected item from this priority queue.</p></dd>
<dt><a name="5"><i class="arg">prioqueueName</i> <b class="cmd">destroy</b></a></dt>
<dd><p>Destroy the prioqueue, including its storage space and associated
command.</p></dd>
<dt><a name="6"><i class="arg">prioqueueName</i> <b class="cmd">get</b> <span class="opt">?<i class="arg">count</i>?</span></a></dt>
<dd><p>Return the front <i class="arg">count</i> items of the prioqueue (but not their
priorities) and remove them from the prioqueue.
If <i class="arg">count</i> is not specified, it defaults to 1.  If <i class="arg">count</i> is
1, the result is a simple string; otherwise, it is a list.  If
specified, <i class="arg">count</i> must be greater than or equal to 1.  If there
are no or too few items in the prioqueue, this command will throw an
error.</p></dd>
<dt><a name="7"><i class="arg">prioqueueName</i> <b class="cmd">peek</b> <span class="opt">?<i class="arg">count</i>?</span></a></dt>
<dd><p>Return the front <i class="arg">count</i> items of the prioqueue (but not their
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
error is thrown and no item is added.  Items are inserted at their
priority ranking. Items with equal priority are added in the order
they were added.</p></dd>
<dt><a name="10"><i class="arg">prioqueueName</i> <b class="cmd">size</b></a></dt>
<dd><p>Return the number of items in the prioqueue.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: prioqueue</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key735">ordered list</a>, <a href="../../../../index.html#key286">prioqueue</a>, <a href="../../../../index.html#key736">priority queue</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003 Michael Schlenker &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
error is thrown and no item is added.  Items are inserted at their
priority ranking. Items with equal priority are added in the order
they were added.</p></dd>
<dt><a name="10"><i class="arg">prioqueueName</i> <b class="cmd">size</b></a></dt>
<dd><p>Return the number of items in the prioqueue.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: prioqueue</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key735">ordered list</a>, <a href="../../../../index.html#key286">prioqueue</a>, <a href="../../../../index.html#key736">priority queue</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003 Michael Schlenker &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/struct/queue.html.

111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<p>struct::queue - Create and manipulate queue objects</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<p>struct::queue - Create and manipulate queue objects</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
<dd><p>Put the <i class="arg">item</i> into the queue, at the front, i.e. before any other
items already in the queue. This makes this operation the complement
to the method <b class="method">get</b>.</p></dd>
<dt><a name="8"><i class="arg">queueName</i> <b class="cmd">size</b></a></dt>
<dd><p>Return the number of items in the queue.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: queue</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key282">graph</a>, <a href="../../../../index.html#key278">list</a>, <a href="../../../../index.html#key55">matrix</a>, <a href="../../../../index.html#key281">pool</a>, <a href="../../../../index.html#key286">prioqueue</a>, <a href="../../../../index.html#key285">record</a>, <a href="../../../../index.html#key279">set</a>, <a href="../../../../index.html#key284">skiplist</a>, <a href="../../../../index.html#key283">stack</a>, <a href="../../../../index.html#key280">tree</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
</div></body></html>







|



|




|





180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
<dd><p>Put the <i class="arg">item</i> into the queue, at the front, i.e. before any other
items already in the queue. This makes this operation the complement
to the method <b class="method">get</b>.</p></dd>
<dt><a name="8"><i class="arg">queueName</i> <b class="cmd">size</b></a></dt>
<dd><p>Return the number of items in the queue.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: queue</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key283">graph</a>, <a href="../../../../index.html#key280">list</a>, <a href="../../../../index.html#key55">matrix</a>, <a href="../../../../index.html#key282">pool</a>, <a href="../../../../index.html#key286">prioqueue</a>, <a href="../../../../index.html#key285">record</a>, <a href="../../../../index.html#key279">set</a>, <a href="../../../../index.html#key284">skiplist</a>, <a href="../../../../index.html#key281">stack</a>, <a href="../../../../index.html#key278">tree</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/struct/record.html.

117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">RECORD MEMBERS</a></li>
<li class="section"><a href="#section3">RECORD COMMAND</a></li>
<li class="section"><a href="#section4">INSTANCE COMMAND</a></li>
<li class="section"><a href="#section5">EXAMPLES</a></li>
<li class="section"><a href="#section6">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">RECORD MEMBERS</a></li>
<li class="section"><a href="#section3">RECORD COMMAND</a></li>
<li class="section"><a href="#section4">INSTANCE COMMAND</a></li>
<li class="section"><a href="#section5">EXAMPLES</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
<li><a href="#11"><i class="arg">instanceName</i> <b class="method">cget</b> <span class="opt">?<i class="arg">-member1 -member2 ...</i>?</span></a></li>
<li><a href="#12"><i class="arg">instanceName</i> <b class="method">configure</b> <span class="opt">?<i class="arg">-member1 value1 -member2 value2 ...</i>?</span></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>The <b class="cmd">::struct::record</b> package provides a mechanism to group variables together
as one data structure, similar to a 'C' structure. The members of a 
record can be variables or other records. However, a record can not contain circular
record, i.e. records that contain the same record as a
member.</p>
<p>This package was structured so that it is very similar to how Tk objects work. Each record
definition creates a record object that encompasses that definition. Subsequently, that
record object can create instances of that record. These instances can then
be manipulated with the <b class="method">cget</b> and <b class="method">configure</b> methods.</p>







|







147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
<li><a href="#11"><i class="arg">instanceName</i> <b class="method">cget</b> <span class="opt">?<i class="arg">-member1 -member2 ...</i>?</span></a></li>
<li><a href="#12"><i class="arg">instanceName</i> <b class="method">configure</b> <span class="opt">?<i class="arg">-member1 value1 -member2 value2 ...</i>?</span></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>The <b class="cmd">::struct::record</b> package provides a mechanism to group variables together
as one data structure, similar to a 'C' structure. The members of a
record can be variables or other records. However, a record can not contain circular
record, i.e. records that contain the same record as a
member.</p>
<p>This package was structured so that it is very similar to how Tk objects work. Each record
definition creates a record object that encompasses that definition. Subsequently, that
record object can create instances of that record. These instances can then
be manipulated with the <b class="method">cget</b> and <b class="method">configure</b> methods.</p>
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
<dt><a name="4"><b class="cmd">record show</b> <i class="arg">members</i> <i class="arg">recordName</i></a></dt>
<dd><p>Returns the members that are defined for
record <i class="arg">recordName</i>. It returns the same format as how the
records were defined.</p></dd>
<dt><a name="5"><b class="cmd">record show</b> <i class="arg">values</i> <i class="arg">instanceName</i></a></dt>
<dd><p>Returns a list of values that are set for the instance
<i class="arg">instanceName</i>. The output is a list of key/value pairs. If there
are nested records, then the values of the nested records will 
itself be a list.</p></dd>
<dt><a name="6"><b class="cmd">record exists</b> <i class="arg">record</i> <i class="arg">recordName</i></a></dt>
<dd><p>Tests for the existence of a <i class="arg">record</i> with the
name <i class="arg">recordName</i>.</p></dd>
<dt><a name="7"><b class="cmd">record exists</b> <i class="arg">instance</i> <i class="arg">instanceName</i></a></dt>
<dd><p>Tests for the existence of a <i class="arg">instance</i> with the
name <i class="arg">instanceName</i>.</p></dd>







|







176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
<dt><a name="4"><b class="cmd">record show</b> <i class="arg">members</i> <i class="arg">recordName</i></a></dt>
<dd><p>Returns the members that are defined for
record <i class="arg">recordName</i>. It returns the same format as how the
records were defined.</p></dd>
<dt><a name="5"><b class="cmd">record show</b> <i class="arg">values</i> <i class="arg">instanceName</i></a></dt>
<dd><p>Returns a list of values that are set for the instance
<i class="arg">instanceName</i>. The output is a list of key/value pairs. If there
are nested records, then the values of the nested records will
itself be a list.</p></dd>
<dt><a name="6"><b class="cmd">record exists</b> <i class="arg">record</i> <i class="arg">recordName</i></a></dt>
<dd><p>Tests for the existence of a <i class="arg">record</i> with the
name <i class="arg">recordName</i>.</p></dd>
<dt><a name="7"><b class="cmd">record exists</b> <i class="arg">instance</i> <i class="arg">instanceName</i></a></dt>
<dd><p>Tests for the existence of a <i class="arg">instance</i> with the
name <i class="arg">instanceName</i>.</p></dd>
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
<p><i class="arg">instanceName</i> <b class="method">configure</b> -mem1 val1</p></li>
<li><p>To set multiple member values, you can specify them all in one command:</p>
<p><i class="arg">instanceName</i> <b class="method">configure</b> -mem1 va1 -mem2 val2</p></li>
<li><p>To set a value of a nested member, then use the dot notation:</p>
<p><i class="arg">instanceName</i> <b class="method">configure</b> -mem3.nest1 value</p></li>
</ol>
<p><em>Alias access</em></p>
<p>In the original implementation, access was done by using dot notation similar to how 'C' structures are accessed. However, 
there was a concensus to make the interface more Tcl like, which made sense. However, the original alias access still
exists. It might prove to be helpful to some.</p>
<p>Basically, for every member of every instance, an alias is created. This alias is used to get and set values for that
member. An example will illustrate the point, using the above defined records:</p>
<pre class="example">
# Create an instance first
% myrecord inst1
::inst1
% # To get a member of an instance, just use the 
% # alias (it behaves like a Tcl command):
% inst1.mem1
%
% # To set a member via the alias, just include 
% # a value (optionally the equal sign - syntactic sugar)
% inst1.mem1 = 5
5
% inst1.mem1
5
% # For nested records, just continue with the 
% # dot notation (note no equal sign)
% inst1.mem3.nest1 10
10
% inst1.mem3.nest1
10
% # just the instance by itself gives all 
% # member/values pairs for that instance
% inst1
-mem1 5 -mem2 {} -mem3 {-nest1 10 -nest2 {}}
% # and to get all members within the nested record
% inst1.mem3
-nest1 10 -nest2 {}
%
</pre>
</div>
<div id="section3" class="section"><h2><a name="section3">RECORD COMMAND</a></h2>
<p>The following subcommands and corresponding arguments are available to any
record command:</p>
<dl class="definitions">
<dt><a name="10"><i class="arg">recordName</i> <b class="method"><i class="arg">instanceName|#auto</i></b> <span class="opt">?<i class="arg">-member1 value1 -member2 value2 ...</i>?</span></a></dt>
<dd><p>Using the <i class="arg">recordName</i> object command that was created from the record definition, 
instances of the record definition can be created. Once a instance is
created, then it inherits the members of the record definition, very
similar to how objects work. During instance generation, an object command for the instance
is created as well, using <i class="arg">instanceName</i>. This object command is used
to access the data members of the instance. During the instantiation, values for
that instance can be given, <em>but</em> all values must be given, and be given
in key/value pairs. Nested records, need to be in list format.</p>
<p>Optionally, <i class="arg">#auto</i> can be used in place of <i class="arg">instanceName</i>. When #auto is used,
then a instance name will automatically be generated, of the form recordName&lt;integer&gt;, where
&lt;integer&gt; is a unique integer (starting at 0) that is generated.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">INSTANCE COMMAND</a></h2>
<p>The following subcommands and corresponding arguments are available to
any record instance command:</p>
<dl class="definitions">
 
<dt><a name="11"><i class="arg">instanceName</i> <b class="method">cget</b> <span class="opt">?<i class="arg">-member1 -member2 ...</i>?</span></a></dt>
<dd><p>Each instance has the sub command <b class="method">cget</b> associated with it. This
is very similar to how Tk widget's cget command works. It queries
the values of the member for that particular instance. If
no arguments are given, then a key/value list is returned.</p></dd>
<dt><a name="12"><i class="arg">instanceName</i> <b class="method">configure</b> <span class="opt">?<i class="arg">-member1 value1 -member2 value2 ...</i>?</span></a></dt>
<dd><p>Each instance has the sub command <b class="method">configure</b> associated with it. This







|








|



|





|





|














|
















<







246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309

310
311
312
313
314
315
316
<p><i class="arg">instanceName</i> <b class="method">configure</b> -mem1 val1</p></li>
<li><p>To set multiple member values, you can specify them all in one command:</p>
<p><i class="arg">instanceName</i> <b class="method">configure</b> -mem1 va1 -mem2 val2</p></li>
<li><p>To set a value of a nested member, then use the dot notation:</p>
<p><i class="arg">instanceName</i> <b class="method">configure</b> -mem3.nest1 value</p></li>
</ol>
<p><em>Alias access</em></p>
<p>In the original implementation, access was done by using dot notation similar to how 'C' structures are accessed. However,
there was a concensus to make the interface more Tcl like, which made sense. However, the original alias access still
exists. It might prove to be helpful to some.</p>
<p>Basically, for every member of every instance, an alias is created. This alias is used to get and set values for that
member. An example will illustrate the point, using the above defined records:</p>
<pre class="example">
# Create an instance first
% myrecord inst1
::inst1
% # To get a member of an instance, just use the
% # alias (it behaves like a Tcl command):
% inst1.mem1
%
% # To set a member via the alias, just include
% # a value (optionally the equal sign - syntactic sugar)
% inst1.mem1 = 5
5
% inst1.mem1
5
% # For nested records, just continue with the
% # dot notation (note no equal sign)
% inst1.mem3.nest1 10
10
% inst1.mem3.nest1
10
% # just the instance by itself gives all
% # member/values pairs for that instance
% inst1
-mem1 5 -mem2 {} -mem3 {-nest1 10 -nest2 {}}
% # and to get all members within the nested record
% inst1.mem3
-nest1 10 -nest2 {}
%
</pre>
</div>
<div id="section3" class="section"><h2><a name="section3">RECORD COMMAND</a></h2>
<p>The following subcommands and corresponding arguments are available to any
record command:</p>
<dl class="definitions">
<dt><a name="10"><i class="arg">recordName</i> <b class="method"><i class="arg">instanceName|#auto</i></b> <span class="opt">?<i class="arg">-member1 value1 -member2 value2 ...</i>?</span></a></dt>
<dd><p>Using the <i class="arg">recordName</i> object command that was created from the record definition,
instances of the record definition can be created. Once a instance is
created, then it inherits the members of the record definition, very
similar to how objects work. During instance generation, an object command for the instance
is created as well, using <i class="arg">instanceName</i>. This object command is used
to access the data members of the instance. During the instantiation, values for
that instance can be given, <em>but</em> all values must be given, and be given
in key/value pairs. Nested records, need to be in list format.</p>
<p>Optionally, <i class="arg">#auto</i> can be used in place of <i class="arg">instanceName</i>. When #auto is used,
then a instance name will automatically be generated, of the form recordName&lt;integer&gt;, where
&lt;integer&gt; is a unique integer (starting at 0) that is generated.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">INSTANCE COMMAND</a></h2>
<p>The following subcommands and corresponding arguments are available to
any record instance command:</p>
<dl class="definitions">

<dt><a name="11"><i class="arg">instanceName</i> <b class="method">cget</b> <span class="opt">?<i class="arg">-member1 -member2 ...</i>?</span></a></dt>
<dd><p>Each instance has the sub command <b class="method">cget</b> associated with it. This
is very similar to how Tk widget's cget command works. It queries
the values of the member for that particular instance. If
no arguments are given, then a key/value list is returned.</p></dd>
<dt><a name="12"><i class="arg">instanceName</i> <b class="method">configure</b> <span class="opt">?<i class="arg">-member1 value1 -member2 value2 ...</i>?</span></a></dt>
<dd><p>Each instance has the sub command <b class="method">configure</b> associated with it. This
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
<p>Probably the most obvious example would be to hold contact information,
such as addresses, phone numbers, comments, etc. Since a person can have
multiple phone numbers, multiple email addresses, etc, we will use nested
records to define these. So, the first thing we do is define the nested
records:</p>
<pre class="example">
##
##  This is an interactive example, to see what is 
##  returned by each command as well.
##
% namespace import ::struct::record::*
% # define a nested record. Notice that country has default 'USA'.
% record define locations {
    street
    street2
    city
    state
    zipcode
    {country USA}
    phone
}
::locations
% # Define the main record. Notice that it uses the location record twice.
% record define contacts {
    first 
    middle 
    last 
    {record locations home}
    {record locations work}
}
::contacts
% # Create an instance for the contacts record.
% contacts cont1
::cont1







|
















|
|
|







326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
<p>Probably the most obvious example would be to hold contact information,
such as addresses, phone numbers, comments, etc. Since a person can have
multiple phone numbers, multiple email addresses, etc, we will use nested
records to define these. So, the first thing we do is define the nested
records:</p>
<pre class="example">
##
##  This is an interactive example, to see what is
##  returned by each command as well.
##
% namespace import ::struct::record::*
% # define a nested record. Notice that country has default 'USA'.
% record define locations {
    street
    street2
    city
    state
    zipcode
    {country USA}
    phone
}
::locations
% # Define the main record. Notice that it uses the location record twice.
% record define contacts {
    first
    middle
    last
    {record locations home}
    {record locations work}
}
::contacts
% # Create an instance for the contacts record.
% contacts cont1
::cont1
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
% foreach I [record show instances llist] {
record delete instance $I
}
% record show instances llist
%
</pre>
</div>
<div id="section6" class="section"><h2><a name="section6">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: record</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key319">data structures</a>, <a href="../../../../index.html#key285">record</a>, <a href="../../../../index.html#key318">struct</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002, Brett Schwarz &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
% foreach I [record show instances llist] {
record delete instance $I
}
% record show instances llist
%
</pre>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: record</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key319">data structures</a>, <a href="../../../../index.html#key285">record</a>, <a href="../../../../index.html#key318">struct</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002, Brett Schwarz &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/struct/skiplist.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>struct::skiplist - Create and manipulate skiplists</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>struct::skiplist - Create and manipulate skiplists</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
<dd><p>Return a count of the number of nodes in the skiplist.</p></dd>
<dt><a name="7"><i class="arg">skiplistName</i> <b class="method">walk</b> <i class="arg">cmd</i></a></dt>
<dd><p>Walk the skiplist from the first node to the last. At each node, the
command <i class="arg">cmd</i> will be evaluated with the key and value of the
current node appended.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: skiplist</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key284">skiplist</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2000 Keith Vetter</p>
</div>
</div></body></html>







|



|













178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
<dd><p>Return a count of the number of nodes in the skiplist.</p></dd>
<dt><a name="7"><i class="arg">skiplistName</i> <b class="method">walk</b> <i class="arg">cmd</i></a></dt>
<dd><p>Walk the skiplist from the first node to the last. At each node, the
command <i class="arg">cmd</i> will be evaluated with the key and value of the
current node appended.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: skiplist</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key284">skiplist</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2000 Keith Vetter</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/struct/stack.html.

110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<p>struct::stack - Create and manipulate stack objects</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<p>struct::stack - Create and manipulate stack objects</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
<dd><p>Push the <i class="arg">item</i> or items specified onto the stack.  If more than
one <i class="arg">item</i> is given, they will be pushed in the order they are
listed.</p></dd>
<dt><a name="12"><i class="arg">stackName</i> <b class="method">size</b></a></dt>
<dd><p>Return the number of items on the stack.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: stack</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key282">graph</a>, <a href="../../../../index.html#key55">matrix</a>, <a href="../../../../index.html#key54">queue</a>, <a href="../../../../index.html#key280">tree</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
</div></body></html>







|



|




|





194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
<dd><p>Push the <i class="arg">item</i> or items specified onto the stack.  If more than
one <i class="arg">item</i> is given, they will be pushed in the order they are
listed.</p></dd>
<dt><a name="12"><i class="arg">stackName</i> <b class="method">size</b></a></dt>
<dd><p>Return the number of items on the stack.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: stack</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key283">graph</a>, <a href="../../../../index.html#key55">matrix</a>, <a href="../../../../index.html#key54">queue</a>, <a href="../../../../index.html#key278">tree</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/struct/struct_list.html.

117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">LONGEST COMMON SUBSEQUENCE AND FILE COMPARISON</a></li>
<li class="section"><a href="#section4">TABLE JOIN</a></li>
<li class="section"><a href="#section5">REFERENCES</a></li>
<li class="section"><a href="#section6">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">LONGEST COMMON SUBSEQUENCE AND FILE COMPARISON</a></li>
<li class="section"><a href="#section4">TABLE JOIN</a></li>
<li class="section"><a href="#section5">REFERENCES</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
While this procedure is quite rapid for many tasks of file comparison,
its performance degrades severely if <i class="arg">sequence2</i> contains many
equal elements (as, for instance, when using this procedure to compare
two files, a quarter of whose lines are blank.  This drawback is
intrinsic to the algorithm used (see the Reference for details).</p>
<p>One approach to dealing with the performance problem that is sometimes
effective in practice is arbitrarily to exclude elements that appear
more than a certain number of times. 
This number is provided as the <i class="arg">maxOccurs</i> parameter.  If frequent
lines are excluded in this manner, they will not appear in the common
subsequence that is computed; the result will be the longest common
subsequence of infrequent elements.
The procedure <b class="method">longestCommonSubsequence2</b> implements this
heuristic.
It functions as a wrapper around <b class="method">longestCommonSubsequence</b>; it







|







604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
While this procedure is quite rapid for many tasks of file comparison,
its performance degrades severely if <i class="arg">sequence2</i> contains many
equal elements (as, for instance, when using this procedure to compare
two files, a quarter of whose lines are blank.  This drawback is
intrinsic to the algorithm used (see the Reference for details).</p>
<p>One approach to dealing with the performance problem that is sometimes
effective in practice is arbitrarily to exclude elements that appear
more than a certain number of times.
This number is provided as the <i class="arg">maxOccurs</i> parameter.  If frequent
lines are excluded in this manner, they will not appear in the common
subsequence that is computed; the result will be the longest common
subsequence of infrequent elements.
The procedure <b class="method">longestCommonSubsequence2</b> implements this
heuristic.
It functions as a wrapper around <b class="method">longestCommonSubsequence</b>; it
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
    {1 snarf} full outer join {1 snatz}  = {1 snarf 1 snatz}
    {2 blue}                  {3 driver}   {2 blue  {} {}}
                                           {{} {}   3 driver}
</pre>
</div>
<div id="section5" class="section"><h2><a name="section5">REFERENCES</a></h2>
<ol class="enumerated">
<li><p>J. W. Hunt and M. D. McIlroy, &quot;An algorithm for differential 
file comparison,&quot; Comp. Sci. Tech. Rep. #41, Bell Telephone 
Laboratories (1976). Available on the Web at the second
author's personal site: <a href="http://www.cs.dartmouth.edu/~doug/">http://www.cs.dartmouth.edu/~doug/</a></p></li>
<li><p>Donald E. Knuth, &quot;Fascicle 2b of 'The Art of Computer Programming'
volume 4&quot;. Available on the Web at the author's personal site:
<a href="http://www-cs-faculty.stanford.edu/~knuth/fasc2b.ps.gz">http://www-cs-faculty.stanford.edu/~knuth/fasc2b.ps.gz</a>.</p></li>
</ol>
</div>
<div id="section6" class="section"><h2><a name="section6">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: list</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key548">Fisher-Yates</a>, <a href="../../../../index.html#key550">assign</a>, <a href="../../../../index.html#key531">common</a>, <a href="../../../../index.html#key533">comparison</a>, <a href="../../../../index.html#key542">diff</a>, <a href="../../../../index.html#key536">differential</a>, <a href="../../../../index.html#key540">equal</a>, <a href="../../../../index.html#key552">equality</a>, <a href="../../../../index.html#key213">filter</a>, <a href="../../../../index.html#key538">first permutation</a>, <a href="../../../../index.html#key537">flatten</a>, <a href="../../../../index.html#key544">folding</a>, <a href="../../../../index.html#key543">full outer join</a>, <a href="../../../../index.html#key551">generate permutations</a>, <a href="../../../../index.html#key546">inner join</a>, <a href="../../../../index.html#key539">join</a>, <a href="../../../../index.html#key532">left outer join</a>, <a href="../../../../index.html#key278">list</a>, <a href="../../../../index.html#key530">longest common subsequence</a>, <a href="../../../../index.html#key204">map</a>, <a href="../../../../index.html#key553">next permutation</a>, <a href="../../../../index.html#key554">outer join</a>, <a href="../../../../index.html#key529">permutation</a>, <a href="../../../../index.html#key208">reduce</a>, <a href="../../../../index.html#key555">repeating</a>, <a href="../../../../index.html#key271">repetition</a>, <a href="../../../../index.html#key547">reshuffle</a>, <a href="../../../../index.html#key534">reverse</a>, <a href="../../../../index.html#key535">right outer join</a>, <a href="../../../../index.html#key549">shuffle</a>, <a href="../../../../index.html#key545">subsequence</a>, <a href="../../../../index.html#key541">swapping</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003-2005 by Kevin B. Kenny. All rights reserved<br>
Copyright &copy; 2003-2012 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|
|







|



|




|









671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
    {1 snarf} full outer join {1 snatz}  = {1 snarf 1 snatz}
    {2 blue}                  {3 driver}   {2 blue  {} {}}
                                           {{} {}   3 driver}
</pre>
</div>
<div id="section5" class="section"><h2><a name="section5">REFERENCES</a></h2>
<ol class="enumerated">
<li><p>J. W. Hunt and M. D. McIlroy, &quot;An algorithm for differential
file comparison,&quot; Comp. Sci. Tech. Rep. #41, Bell Telephone
Laboratories (1976). Available on the Web at the second
author's personal site: <a href="http://www.cs.dartmouth.edu/~doug/">http://www.cs.dartmouth.edu/~doug/</a></p></li>
<li><p>Donald E. Knuth, &quot;Fascicle 2b of 'The Art of Computer Programming'
volume 4&quot;. Available on the Web at the author's personal site:
<a href="http://www-cs-faculty.stanford.edu/~knuth/fasc2b.ps.gz">http://www-cs-faculty.stanford.edu/~knuth/fasc2b.ps.gz</a>.</p></li>
</ol>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: list</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key548">Fisher-Yates</a>, <a href="../../../../index.html#key550">assign</a>, <a href="../../../../index.html#key531">common</a>, <a href="../../../../index.html#key533">comparison</a>, <a href="../../../../index.html#key542">diff</a>, <a href="../../../../index.html#key536">differential</a>, <a href="../../../../index.html#key539">equal</a>, <a href="../../../../index.html#key552">equality</a>, <a href="../../../../index.html#key214">filter</a>, <a href="../../../../index.html#key540">first permutation</a>, <a href="../../../../index.html#key537">flatten</a>, <a href="../../../../index.html#key545">folding</a>, <a href="../../../../index.html#key543">full outer join</a>, <a href="../../../../index.html#key551">generate permutations</a>, <a href="../../../../index.html#key547">inner join</a>, <a href="../../../../index.html#key538">join</a>, <a href="../../../../index.html#key532">left outer join</a>, <a href="../../../../index.html#key280">list</a>, <a href="../../../../index.html#key530">longest common subsequence</a>, <a href="../../../../index.html#key203">map</a>, <a href="../../../../index.html#key555">next permutation</a>, <a href="../../../../index.html#key554">outer join</a>, <a href="../../../../index.html#key529">permutation</a>, <a href="../../../../index.html#key208">reduce</a>, <a href="../../../../index.html#key553">repeating</a>, <a href="../../../../index.html#key271">repetition</a>, <a href="../../../../index.html#key546">reshuffle</a>, <a href="../../../../index.html#key534">reverse</a>, <a href="../../../../index.html#key535">right outer join</a>, <a href="../../../../index.html#key549">shuffle</a>, <a href="../../../../index.html#key544">subsequence</a>, <a href="../../../../index.html#key541">swapping</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2003-2005 by Kevin B. Kenny. All rights reserved<br>
Copyright &copy; 2003-2012 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/struct/struct_set.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">REFERENCES</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">REFERENCES</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
<dd><p>Returns a boolean value indicating if the set <i class="arg">A</i> is a true
subset of or equal to the set <i class="arg">B</i> (<b class="const">true</b>), or not
(<b class="const">false</b>).</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">REFERENCES</a></h2>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: set</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key708">cardinality</a>, <a href="../../../../index.html#key713">difference</a>, <a href="../../../../index.html#key710">emptiness</a>, <a href="../../../../index.html#key712">exclusion</a>, <a href="../../../../index.html#key707">inclusion</a>, <a href="../../../../index.html#key714">intersection</a>, <a href="../../../../index.html#key709">membership</a>, <a href="../../../../index.html#key279">set</a>, <a href="../../../../index.html#key711">symmetric difference</a>, <a href="../../../../index.html#key607">union</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004-2008 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
<dd><p>Returns a boolean value indicating if the set <i class="arg">A</i> is a true
subset of or equal to the set <i class="arg">B</i> (<b class="const">true</b>), or not
(<b class="const">false</b>).</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">REFERENCES</a></h2>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: set</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key711">cardinality</a>, <a href="../../../../index.html#key714">difference</a>, <a href="../../../../index.html#key710">emptiness</a>, <a href="../../../../index.html#key712">exclusion</a>, <a href="../../../../index.html#key709">inclusion</a>, <a href="../../../../index.html#key713">intersection</a>, <a href="../../../../index.html#key708">membership</a>, <a href="../../../../index.html#key279">set</a>, <a href="../../../../index.html#key707">symmetric difference</a>, <a href="../../../../index.html#key606">union</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004-2008 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/struct/struct_tree.html.

121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<ul>
<li class="subsection"><a href="#subsection1">Tree CLASS API</a></li>
<li class="subsection"><a href="#subsection2">Tree OBJECT API</a></li>
<li class="subsection"><a href="#subsection3">Changes for 2.0</a></li>
</ul>
</li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<ul>
<li class="subsection"><a href="#subsection1">Tree CLASS API</a></li>
<li class="subsection"><a href="#subsection2">Tree OBJECT API</a></li>
<li class="subsection"><a href="#subsection3">Changes for 2.0</a></li>
</ul>
</li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
    mytree insert root end 1 2 ; # Ditto nodes 1 &amp; 2
    mytree insert 0    end 3   ; # Now create node 3 as child of node 0
    mytree insert 0    end     ; # Create another child of 0, with a
    #                              generated name. The name is returned
    #                              as the result of the command.
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: tree</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key684">breadth-first</a>, <a href="../../../../index.html#key683">depth-first</a>, <a href="../../../../index.html#key681">in-order</a>, <a href="../../../../index.html#key439">node</a>, <a href="../../../../index.html#key685">post-order</a>, <a href="../../../../index.html#key682">pre-order</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key280">tree</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002-2004,2012 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
    mytree insert root end 1 2 ; # Ditto nodes 1 &amp; 2
    mytree insert 0    end 3   ; # Now create node 3 as child of node 0
    mytree insert 0    end     ; # Create another child of 0, with a
    #                              generated name. The name is returned
    #                              as the result of the command.
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: tree</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key685">breadth-first</a>, <a href="../../../../index.html#key683">depth-first</a>, <a href="../../../../index.html#key682">in-order</a>, <a href="../../../../index.html#key439">node</a>, <a href="../../../../index.html#key684">post-order</a>, <a href="../../../../index.html#key681">pre-order</a>, <a href="../../../../index.html#key115">serialization</a>, <a href="../../../../index.html#key278">tree</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002-2004,2012 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/struct/struct_tree1.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>struct::tree_v1 - Create and manipulate tree objects</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>struct::tree_v1 - Create and manipulate tree objects</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
<b class="const">visit</b> actions occur during in-order walks.  In a both-order
walk, the command will be evaluated twice for each node; the action is
<b class="const">enter</b> for the first evaluation, and <b class="const">leave</b> for the
second.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: tree</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key280">tree</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
<b class="const">visit</b> actions occur during in-order walks.  In a both-order
walk, the command will be evaluated twice for each node; the action is
<b class="const">enter</b> for the first evaluation, and <b class="const">leave</b> for the
second.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>struct :: tree</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key278">tree</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/tar/tar.html.

111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<p>tar - Tar file creation, extraction &amp; manipulation</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<p>tar - Tar file creation, extraction &amp; manipulation</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
as a single argument which is a proper list of filenames.</p>
<dl class="options">
<dt><b class="option">-dereference</b></dt>
<dd><p>Normally <b class="cmd">add</b> will store links as an actual link pointing at a file that may
or may not exist in the archive. Specifying this option will cause the actual file point to
 by the link to be stored instead.</p></dd>
<dt><b class="option">-prefix</b> string</dt>
<dd><p>Normally <b class="cmd">add</b> will store files under exactly the name specified as 
argument. Specifying a <span class="opt">?-prefix?</span> causes the <i class="arg">string</i> to be 
prepended to every name.</p></dd>
<dt><b class="option">-quick</b></dt>
<dd><p>The only sure way to find the position in the <i class="arg">tarball</i> where new 
files can be added is to read it from start, but if <i class="arg">tarball</i> was 
written with a &quot;blocksize&quot; of 1 (as this package does) then one can 
alternatively find this position by seeking from the end. The 
<span class="opt">?-quick?</span> option tells <b class="cmd">add</b> to do the latter.</p></dd>
</dl></dd>
<dt><a name="7"><b class="cmd">::tar::remove</b> <i class="arg">tarball</i> <i class="arg">files</i></a></dt>
<dd><p>Removes <i class="arg">files</i> from the <i class="arg">tarball</i>. No error will result if the file does not exist in the
tarball. Directory write permission and free disk space equivalent to at least the size of the tarball
will be needed.</p>
<pre class="example">
% ::tar::remove new.tar {file2 file3}
% ::tar::contents new.tar
file3
</pre>
</dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>tar</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key716">archive</a>, <a href="../../../../index.html#key715">tape archive</a>, <a href="../../../../index.html#key717">tar</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>File formats</p>
</div>
</div></body></html>







|
|


|
|
|
|














|



|










223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
as a single argument which is a proper list of filenames.</p>
<dl class="options">
<dt><b class="option">-dereference</b></dt>
<dd><p>Normally <b class="cmd">add</b> will store links as an actual link pointing at a file that may
or may not exist in the archive. Specifying this option will cause the actual file point to
 by the link to be stored instead.</p></dd>
<dt><b class="option">-prefix</b> string</dt>
<dd><p>Normally <b class="cmd">add</b> will store files under exactly the name specified as
argument. Specifying a <span class="opt">?-prefix?</span> causes the <i class="arg">string</i> to be
prepended to every name.</p></dd>
<dt><b class="option">-quick</b></dt>
<dd><p>The only sure way to find the position in the <i class="arg">tarball</i> where new
files can be added is to read it from start, but if <i class="arg">tarball</i> was
written with a &quot;blocksize&quot; of 1 (as this package does) then one can
alternatively find this position by seeking from the end. The
<span class="opt">?-quick?</span> option tells <b class="cmd">add</b> to do the latter.</p></dd>
</dl></dd>
<dt><a name="7"><b class="cmd">::tar::remove</b> <i class="arg">tarball</i> <i class="arg">files</i></a></dt>
<dd><p>Removes <i class="arg">files</i> from the <i class="arg">tarball</i>. No error will result if the file does not exist in the
tarball. Directory write permission and free disk space equivalent to at least the size of the tarball
will be needed.</p>
<pre class="example">
% ::tar::remove new.tar {file2 file3}
% ::tar::contents new.tar
file3
</pre>
</dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>tar</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key716">archive</a>, <a href="../../../../index.html#key715">tape archive</a>, <a href="../../../../index.html#key717">tar</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>File formats</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/tepam/tepam_argument_dialogbox.html.

177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
   <b class="cmd">-file</b> {<i class="arg">-label &quot;Itinerary report&quot; -variable report_file</i>}
   ...
   <b class="cmd">-checkbutton</b> {<i class="arg">-label &quot;Don't use highways&quot; -variable no_highway</i>} <b class="cmd">}</b>]</pre>
</dd>
</dl>
<p>The commands <b class="cmd">argument_dialogbox</b> as well as <b class="cmd"><a href="../../../../index.html#key34">procedure</a></b> are exported from the namespace <b class="namespace">tepam</b>. To use these commands without the <b class="namespace">tepam::</b> namespace prefix, it is sufficient to import them into the main namespace:</p>
<pre class="example"><b class="cmd">namespace import tepam::*</b>
 
set DialogResult [<b class="cmd">argument_dialogbox</b> \
   -title &quot;Itinerary selection&quot;
   ...</pre>
<p>The following subsections explain the different argument item types that are accepted by the <b class="cmd">argument_dialogbox</b>, classified into three groups. The first data entry item definition format will be used in the remaining document, knowing that this format can always be transformed into the second format by putting all arguments into a single list that is then provided to <b class="cmd">argument_dialogbox</b>.</p>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Context Definition Items</a></h3>
<p>The first item group allows specifying some context aspects of an argument dialog box. These items are taking a simple character string as item attribute:</p>
<pre class="example">tepam::argument_dialogbox \







<







177
178
179
180
181
182
183

184
185
186
187
188
189
190
   <b class="cmd">-file</b> {<i class="arg">-label &quot;Itinerary report&quot; -variable report_file</i>}
   ...
   <b class="cmd">-checkbutton</b> {<i class="arg">-label &quot;Don't use highways&quot; -variable no_highway</i>} <b class="cmd">}</b>]</pre>
</dd>
</dl>
<p>The commands <b class="cmd">argument_dialogbox</b> as well as <b class="cmd"><a href="../../../../index.html#key34">procedure</a></b> are exported from the namespace <b class="namespace">tepam</b>. To use these commands without the <b class="namespace">tepam::</b> namespace prefix, it is sufficient to import them into the main namespace:</p>
<pre class="example"><b class="cmd">namespace import tepam::*</b>

set DialogResult [<b class="cmd">argument_dialogbox</b> \
   -title &quot;Itinerary selection&quot;
   ...</pre>
<p>The following subsections explain the different argument item types that are accepted by the <b class="cmd">argument_dialogbox</b>, classified into three groups. The first data entry item definition format will be used in the remaining document, knowing that this format can always be transformed into the second format by putting all arguments into a single list that is then provided to <b class="cmd">argument_dialogbox</b>.</p>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Context Definition Items</a></h3>
<p>The first item group allows specifying some context aspects of an argument dialog box. These items are taking a simple character string as item attribute:</p>
<pre class="example">tepam::argument_dialogbox \
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
   <b class="cmd">-combobox</b> {-label &quot;Text size&quot; -variable Size -choicevariable TextSizes -default 12}</pre>
</dd>
<dt>-listbox <i class="arg">list</i></dt>
<dd><p>In contrast to the combo box, the list box is always displayed by the <i class="arg">listbox</i> entry widget. Only one element is selectable unless the <i class="arg">-multiple_selection</i> attribute is set. The list box height can be selected with the <i class="arg">-height</i> attribute. If the height is not explicitly defined, the list box height is automatically adapted to the argument dialog box' size.
The first example uses a variable to define the available choices:</p>
<pre class="example">set set AvailableSizes
for {set k 0} {$k&lt;16} {incr k} {lappend AvailableSizes [expr 1&lt;&lt;$k]}
 
tepam::argument_dialogbox \
   <b class="cmd">-listbox</b> {-label &quot;Distance&quot; -variable Distance \
             -choicevariable AvailableSizes -default 6 -height 5}</pre>
<p>Here is a multi-element selection example. Please note that also the default selection can contain multiple elements:</p>
<pre class="example">tepam::argument_dialogbox \
   <b class="cmd">-listbox</b> {-label &quot;Text styles&quot; -variable Styles \
             -choices {bold italic underline overstrike} \







<







336
337
338
339
340
341
342

343
344
345
346
347
348
349
   <b class="cmd">-combobox</b> {-label &quot;Text size&quot; -variable Size -choicevariable TextSizes -default 12}</pre>
</dd>
<dt>-listbox <i class="arg">list</i></dt>
<dd><p>In contrast to the combo box, the list box is always displayed by the <i class="arg">listbox</i> entry widget. Only one element is selectable unless the <i class="arg">-multiple_selection</i> attribute is set. The list box height can be selected with the <i class="arg">-height</i> attribute. If the height is not explicitly defined, the list box height is automatically adapted to the argument dialog box' size.
The first example uses a variable to define the available choices:</p>
<pre class="example">set set AvailableSizes
for {set k 0} {$k&lt;16} {incr k} {lappend AvailableSizes [expr 1&lt;&lt;$k]}

tepam::argument_dialogbox \
   <b class="cmd">-listbox</b> {-label &quot;Distance&quot; -variable Distance \
             -choicevariable AvailableSizes -default 6 -height 5}</pre>
<p>Here is a multi-element selection example. Please note that also the default selection can contain multiple elements:</p>
<pre class="example">tepam::argument_dialogbox \
   <b class="cmd">-listbox</b> {-label &quot;Text styles&quot; -variable Styles \
             -choices {bold italic underline overstrike} \

Changes to embedded/www/tcllib/files/modules/tepam/tepam_introduction.html.

215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
<pre class="example"><b class="cmd">display message</b> &quot;The document hasn't yet been saved!&quot;
<em>-&gt; display message:
     mtype=Warning
     font=Arial 10 italic
     fg=black
     no_border=0
     text={The document hasn't yet been saved!}</em>
 
<b class="cmd">display message</b> -fg red -bg black &quot;Please save first the document&quot;
<em>-&gt; display message:
     mtype=Warning
     font=Arial 10 italic
     fg=red
     bg=black
     no_border=0
     text={Please save first the document}</em>
 
<b class="cmd">display message</b> -mtype Error -no_border &quot;Why is here no border?&quot;
<em>-&gt; display message:
     mtype=Error
     font=Arial 10 italic
     fg=black
     no_border=1
     text={Why is here no border?}</em>
 
<b class="cmd">display message</b> -font {Courier 12} -level 10 \
   &quot;Is there enough space?&quot; &quot;Reduce otherwise the font size!&quot;
<em>-&gt; display message:
     mtype=Warning
     font=Courier 12
     level=10
     fg=black
     no_border=0
     text={Is there enough space?} {Reduce otherwise the font size!}</em></pre>
<p>The next lines show how wrong arguments are recognized. The <i class="arg">text</i> argument that is mandatory is missing in the first procedure call:</p>
<pre class="example"><b class="cmd">display message</b> -font {Courier 12}
<em>  -&gt; display message: Required argument is missing: text</em></pre>
<p>Only known arguments are accepted:</p>
<pre class="example"><b class="cmd">display message</b> -category warning Hello
<em>  -&gt; display message: Argument '-category' not known</em></pre>
<p>Argument types are automatically checked and an error message is generated in case the argument value has not the expected type:</p>
<pre class="example"><b class="cmd">display message</b> -fg MyColor &quot;Hello&quot;
<em>  -&gt; display message: Argument 'fg' requires type 'color'. \ 
            Provided value: 'MyColor'</em></pre>
<p>Selection choices have to be respected ...</p>
<pre class="example"><b class="cmd">display message</b> -mtype Fatal Hello
<em>  -&gt; display message: Argument (mtype) has to be one of the \ 
            following elements: Info, Warning, Error</em></pre>
<p>... as well as valid value ranges:</p>
<pre class="example"><b class="cmd">display message</b> -level 12 Hello
<em>  -&gt; display message: Argument (level) has to be between 1 and 10</em></pre>
</div>
<div id="section6" class="section"><h2><a name="section6">INTERACTIVE PROCEDURE CALLS</a></h2>
<p>The most intuitive way to call the procedure is using an form that allows specifying all arguments interactively. This form will automatically be generated if the declared procedure is called with the <i class="arg">-interactive</i> flag.</p>
<pre class="example"><b class="cmd">display message</b> -interactive</pre>







<








<







<

















|
<


|
<







215
216
217
218
219
220
221

222
223
224
225
226
227
228
229

230
231
232
233
234
235
236

237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254

255
256
257

258
259
260
261
262
263
264
<pre class="example"><b class="cmd">display message</b> &quot;The document hasn't yet been saved!&quot;
<em>-&gt; display message:
     mtype=Warning
     font=Arial 10 italic
     fg=black
     no_border=0
     text={The document hasn't yet been saved!}</em>

<b class="cmd">display message</b> -fg red -bg black &quot;Please save first the document&quot;
<em>-&gt; display message:
     mtype=Warning
     font=Arial 10 italic
     fg=red
     bg=black
     no_border=0
     text={Please save first the document}</em>

<b class="cmd">display message</b> -mtype Error -no_border &quot;Why is here no border?&quot;
<em>-&gt; display message:
     mtype=Error
     font=Arial 10 italic
     fg=black
     no_border=1
     text={Why is here no border?}</em>

<b class="cmd">display message</b> -font {Courier 12} -level 10 \
   &quot;Is there enough space?&quot; &quot;Reduce otherwise the font size!&quot;
<em>-&gt; display message:
     mtype=Warning
     font=Courier 12
     level=10
     fg=black
     no_border=0
     text={Is there enough space?} {Reduce otherwise the font size!}</em></pre>
<p>The next lines show how wrong arguments are recognized. The <i class="arg">text</i> argument that is mandatory is missing in the first procedure call:</p>
<pre class="example"><b class="cmd">display message</b> -font {Courier 12}
<em>  -&gt; display message: Required argument is missing: text</em></pre>
<p>Only known arguments are accepted:</p>
<pre class="example"><b class="cmd">display message</b> -category warning Hello
<em>  -&gt; display message: Argument '-category' not known</em></pre>
<p>Argument types are automatically checked and an error message is generated in case the argument value has not the expected type:</p>
<pre class="example"><b class="cmd">display message</b> -fg MyColor &quot;Hello&quot;
<em>  -&gt; display message: Argument 'fg' requires type 'color'.  Provided value: 'MyColor'</em></pre>

<p>Selection choices have to be respected ...</p>
<pre class="example"><b class="cmd">display message</b> -mtype Fatal Hello
<em>  -&gt; display message: Argument (mtype) has to be one of the  following elements: Info, Warning, Error</em></pre>

<p>... as well as valid value ranges:</p>
<pre class="example"><b class="cmd">display message</b> -level 12 Hello
<em>  -&gt; display message: Argument (level) has to be between 1 and 10</em></pre>
</div>
<div id="section6" class="section"><h2><a name="section6">INTERACTIVE PROCEDURE CALLS</a></h2>
<p>The most intuitive way to call the procedure is using an form that allows specifying all arguments interactively. This form will automatically be generated if the declared procedure is called with the <i class="arg">-interactive</i> flag.</p>
<pre class="example"><b class="cmd">display message</b> -interactive</pre>
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
   <b class="cmd">-checkbutton</b> {-label &quot;Overwrite existing file&quot; -variable Overwrite}</pre>
<p>The <b class="cmd">argument_dialogbox</b> returns <b class="const">ok</b> if the entered data are validated. It will return <b class="const">cancel</b> if the data entry has been canceled. After the validation of the entered data, the <b class="cmd">argument_dialogbox</b> defines all the specified variables with the entered data inside the calling context.</p>
<p>An <b class="cmd">argument_dialogbox</b> requires a pair of arguments for each variable that it has to handle. The first argument defines the entry widget type used to select the variable's value and the second one is a lists of attributes related to the variable and the entry widget.</p>
<p>Many entry widget types are available: Beside the simple generic entries, there are different kinds of list and combo boxes available, browsers for existing and new files and directories, check and radio boxes and buttons, as well as color and font pickers. If necessary, additional entry widgets can be defined.</p>
<p>The attribute list contains pairs of attribute names and attribute data. The primary attribute is <i class="arg">-variable</i> used to specify the variable in the calling context into which the entered data has to be stored. Another often used attribute is <i class="arg">-label</i> that allows adding a label to the data entry widget. Other attributes are available that allow specifying default values, the expected data types, valid data ranges, etc.</p>
<p>The next example of a more complex argument dialog box provides a good overview about the different available entry widget types and parameter attributes. The example contains also some formatting instructions like <i class="arg">-frame</i> and <i class="arg">-sep</i> which allows organizing the different entry widgets in frames and sections:</p>
<pre class="example">set ChoiceList {&quot;Choice 1&quot; &quot;Choice 2&quot; &quot;Choice 3&quot; &quot;Choice 4&quot; &quot;Choice 5&quot; &quot;Choice 6&quot;}
 
set Result [<b class="cmd"><a href="tepam_argument_dialogbox.html">tepam::argument_dialogbox</a></b> \
   <b class="cmd">-title</b> &quot;System configuration&quot; \
   <b class="cmd">-context</b> test_1 \
   <b class="cmd">-frame</b> {-label &quot;Entries&quot;} \
      <b class="cmd">-entry</b> {-label Entry1 -variable Entry1} \
      <b class="cmd">-entry</b> {-label Entry2 -variable Entry2 -default &quot;my default&quot;} \
   <b class="cmd">-frame</b> {-label &quot;Listbox &amp; combobox&quot;} \
      <b class="cmd">-listbox</b> {-label &quot;Listbox, single selection&quot; -variable Listbox1 \
                -choices {1 2 3 4 5 6 7 8} -default 1 -height 3} \
      <b class="cmd">-listbox</b> {-label &quot;Listbox, multiple selection&quot; -variable Listbox2 
                -choicevariable ChoiceList -default {&quot;Choice 2&quot; &quot;Choice 3&quot;} 
                -multiple_selection 1 -height 3} \
      <b class="cmd">-disjointlistbox</b> {-label &quot;Disjoined listbox&quot; -variable DisJntListbox 
                        -choicevariable ChoiceList \
                        -default {&quot;Choice 3&quot; &quot;Choice 5&quot;} -height 3} \
      <b class="cmd">-combobox</b> {-label &quot;Combobox&quot; -variable Combobox \
                 -choices {1 2 3 4 5 6 7 8} -default 3} \
   <b class="cmd">-frame</b> {-label &quot;Checkbox, radiobox and checkbutton&quot;} \
      <b class="cmd">-checkbox</b> {-label Checkbox -variable Checkbox 
                 -choices {bold italic underline} -choicelabels {Bold Italic Underline} \
                 -default italic} \
      <b class="cmd">-radiobox</b> {-label Radiobox -variable Radiobox 
                 -choices {bold italic underline} -choicelabels {Bold Italic Underline} \
                 -default underline} \
      <b class="cmd">-checkbutton</b> {-label CheckButton -variable Checkbutton -default 1} \
   <b class="cmd">-frame</b> {-label &quot;Files &amp; directories&quot;} \
      <b class="cmd">-existingfile</b> {-label &quot;Input file&quot; -variable InputFile} \
      <b class="cmd">-file</b> {-label &quot;Output file&quot; -variable OutputFile} \
      <b class="cmd">-sep</b> {} \
      <b class="cmd">-existingdirectory</b> {-label &quot;Input directory&quot; -variable InputDirectory} \
      <b class="cmd">-directory</b> {-label &quot;Output irectory&quot; -variable OutputDirectory} \
   <b class="cmd">-frame</b> {-label &quot;Colors and fonts&quot;} \
      <b class="cmd">-color</b> {-label &quot;Background color&quot; -variable Color -default red} \
      <b class="cmd">-sep</b> {} \
      <b class="cmd">-font</b> {-label &quot;Font&quot; -variable Font -default {Courier 12 italic}}]</pre>
<p>The <b class="cmd">argument_dialogbox</b> defines all the specified variables with the entered data and returns <b class="const">ok</b> if the data have been validated via the Ok button. If the data entry is cancelled by activating the Cancel button, the <b class="cmd">argument_dialogbox</b> returns <b class="const">cancel</b>.</p>
<pre class="example">if {$Result==&quot;cancel&quot;} {
   puts &quot;Canceled&quot;
} else { # $Result==&quot;ok&quot;
   puts &quot;Arguments: &quot;
   foreach Var {
      Entry1 Entry2
      Listbox1 Listbox2 DisJntListbox 
      Combobox Checkbox Radiobox Checkbutton
      InputFile OutputFile InputDirectory OutputDirectory
      Color Font
   } {
      puts &quot;  $Var: '[set $Var]'&quot;
   }
}







<









|
|

|





|


|




















|







275
276
277
278
279
280
281

282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
   <b class="cmd">-checkbutton</b> {-label &quot;Overwrite existing file&quot; -variable Overwrite}</pre>
<p>The <b class="cmd">argument_dialogbox</b> returns <b class="const">ok</b> if the entered data are validated. It will return <b class="const">cancel</b> if the data entry has been canceled. After the validation of the entered data, the <b class="cmd">argument_dialogbox</b> defines all the specified variables with the entered data inside the calling context.</p>
<p>An <b class="cmd">argument_dialogbox</b> requires a pair of arguments for each variable that it has to handle. The first argument defines the entry widget type used to select the variable's value and the second one is a lists of attributes related to the variable and the entry widget.</p>
<p>Many entry widget types are available: Beside the simple generic entries, there are different kinds of list and combo boxes available, browsers for existing and new files and directories, check and radio boxes and buttons, as well as color and font pickers. If necessary, additional entry widgets can be defined.</p>
<p>The attribute list contains pairs of attribute names and attribute data. The primary attribute is <i class="arg">-variable</i> used to specify the variable in the calling context into which the entered data has to be stored. Another often used attribute is <i class="arg">-label</i> that allows adding a label to the data entry widget. Other attributes are available that allow specifying default values, the expected data types, valid data ranges, etc.</p>
<p>The next example of a more complex argument dialog box provides a good overview about the different available entry widget types and parameter attributes. The example contains also some formatting instructions like <i class="arg">-frame</i> and <i class="arg">-sep</i> which allows organizing the different entry widgets in frames and sections:</p>
<pre class="example">set ChoiceList {&quot;Choice 1&quot; &quot;Choice 2&quot; &quot;Choice 3&quot; &quot;Choice 4&quot; &quot;Choice 5&quot; &quot;Choice 6&quot;}

set Result [<b class="cmd"><a href="tepam_argument_dialogbox.html">tepam::argument_dialogbox</a></b> \
   <b class="cmd">-title</b> &quot;System configuration&quot; \
   <b class="cmd">-context</b> test_1 \
   <b class="cmd">-frame</b> {-label &quot;Entries&quot;} \
      <b class="cmd">-entry</b> {-label Entry1 -variable Entry1} \
      <b class="cmd">-entry</b> {-label Entry2 -variable Entry2 -default &quot;my default&quot;} \
   <b class="cmd">-frame</b> {-label &quot;Listbox &amp; combobox&quot;} \
      <b class="cmd">-listbox</b> {-label &quot;Listbox, single selection&quot; -variable Listbox1 \
                -choices {1 2 3 4 5 6 7 8} -default 1 -height 3} \
      <b class="cmd">-listbox</b> {-label &quot;Listbox, multiple selection&quot; -variable Listbox2
                -choicevariable ChoiceList -default {&quot;Choice 2&quot; &quot;Choice 3&quot;}
                -multiple_selection 1 -height 3} \
      <b class="cmd">-disjointlistbox</b> {-label &quot;Disjoined listbox&quot; -variable DisJntListbox
                        -choicevariable ChoiceList \
                        -default {&quot;Choice 3&quot; &quot;Choice 5&quot;} -height 3} \
      <b class="cmd">-combobox</b> {-label &quot;Combobox&quot; -variable Combobox \
                 -choices {1 2 3 4 5 6 7 8} -default 3} \
   <b class="cmd">-frame</b> {-label &quot;Checkbox, radiobox and checkbutton&quot;} \
      <b class="cmd">-checkbox</b> {-label Checkbox -variable Checkbox
                 -choices {bold italic underline} -choicelabels {Bold Italic Underline} \
                 -default italic} \
      <b class="cmd">-radiobox</b> {-label Radiobox -variable Radiobox
                 -choices {bold italic underline} -choicelabels {Bold Italic Underline} \
                 -default underline} \
      <b class="cmd">-checkbutton</b> {-label CheckButton -variable Checkbutton -default 1} \
   <b class="cmd">-frame</b> {-label &quot;Files &amp; directories&quot;} \
      <b class="cmd">-existingfile</b> {-label &quot;Input file&quot; -variable InputFile} \
      <b class="cmd">-file</b> {-label &quot;Output file&quot; -variable OutputFile} \
      <b class="cmd">-sep</b> {} \
      <b class="cmd">-existingdirectory</b> {-label &quot;Input directory&quot; -variable InputDirectory} \
      <b class="cmd">-directory</b> {-label &quot;Output irectory&quot; -variable OutputDirectory} \
   <b class="cmd">-frame</b> {-label &quot;Colors and fonts&quot;} \
      <b class="cmd">-color</b> {-label &quot;Background color&quot; -variable Color -default red} \
      <b class="cmd">-sep</b> {} \
      <b class="cmd">-font</b> {-label &quot;Font&quot; -variable Font -default {Courier 12 italic}}]</pre>
<p>The <b class="cmd">argument_dialogbox</b> defines all the specified variables with the entered data and returns <b class="const">ok</b> if the data have been validated via the Ok button. If the data entry is cancelled by activating the Cancel button, the <b class="cmd">argument_dialogbox</b> returns <b class="const">cancel</b>.</p>
<pre class="example">if {$Result==&quot;cancel&quot;} {
   puts &quot;Canceled&quot;
} else { # $Result==&quot;ok&quot;
   puts &quot;Arguments: &quot;
   foreach Var {
      Entry1 Entry2
      Listbox1 Listbox2 DisJntListbox
      Combobox Checkbox Radiobox Checkbutton
      InputFile OutputFile InputDirectory OutputDirectory
      Color Font
   } {
      puts &quot;  $Var: '[set $Var]'&quot;
   }
}
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
   Color: 'red'
   Font: 'Courier 12 italic'</em></pre>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="tepam_argument_dialogbox.html">tepam::argument_dialogbox(n)</a>, <a href="tepam_procedure.html">tepam::procedure(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key738">argument integrity</a>, <a href="../../../../index.html#key739">argument validation</a>, <a href="../../../../index.html#key740">arguments</a>, <a href="../../../../index.html#key741">entry mask</a>, <a href="../../../../index.html#key381">parameter entry form</a>, <a href="../../../../index.html#key34">procedure</a>, <a href="../../../../index.html#key737">subcommand</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Procedures, arguments, parameters, options</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009/2010, Andreas Drollinger</p>
</div>
</div></body></html>







|








346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
   Color: 'red'
   Font: 'Courier 12 italic'</em></pre>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="tepam_argument_dialogbox.html">tepam::argument_dialogbox(n)</a>, <a href="tepam_procedure.html">tepam::procedure(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key740">argument integrity</a>, <a href="../../../../index.html#key739">argument validation</a>, <a href="../../../../index.html#key738">arguments</a>, <a href="../../../../index.html#key741">entry mask</a>, <a href="../../../../index.html#key381">parameter entry form</a>, <a href="../../../../index.html#key34">procedure</a>, <a href="../../../../index.html#key737">subcommand</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Procedures, arguments, parameters, options</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009/2010, Andreas Drollinger</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/tepam/tepam_procedure.html.

266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
   puts &quot;Message type: <b class="variable">$mtype</b>&quot;
   puts &quot;Message: <b class="variable">$text</b>&quot;
}</pre>
</dd>
</dl>
<p>The commands <b class="cmd"><a href="../../../../index.html#key34">procedure</a></b> as well as <b class="cmd">argument_dialogbox</b> are exported from the namespace <b class="namespace">tepam</b>. To use these commands without the <b class="namespace">tepam::</b> namespace prefix, it is sufficient to import them into the main namespace:</p>
<pre class="example"><b class="cmd">namespace import tepam::*</b>
 
<b class="cmd"><a href="../../../../index.html#key34">procedure</a></b> {display_message} {
   -args {
      ...</pre>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Procedure Attributes</a></h3>
<p>The first group of procedure attributes is not affecting the behavior of the declared procedure. These attributes are just used for the purpose of documentation and help text generation:</p>
<dl class="definitions">
<dt>-category <i class="arg">string</i></dt>







<







266
267
268
269
270
271
272

273
274
275
276
277
278
279
   puts &quot;Message type: <b class="variable">$mtype</b>&quot;
   puts &quot;Message: <b class="variable">$text</b>&quot;
}</pre>
</dd>
</dl>
<p>The commands <b class="cmd"><a href="../../../../index.html#key34">procedure</a></b> as well as <b class="cmd">argument_dialogbox</b> are exported from the namespace <b class="namespace">tepam</b>. To use these commands without the <b class="namespace">tepam::</b> namespace prefix, it is sufficient to import them into the main namespace:</p>
<pre class="example"><b class="cmd">namespace import tepam::*</b>

<b class="cmd"><a href="../../../../index.html#key34">procedure</a></b> {display_message} {
   -args {
      ...</pre>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Procedure Attributes</a></h3>
<p>The first group of procedure attributes is not affecting the behavior of the declared procedure. These attributes are just used for the purpose of documentation and help text generation:</p>
<dl class="definitions">
<dt>-category <i class="arg">string</i></dt>
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
      {text -type string -multiple -description &quot;Multiple text lines to display&quot;}
   }</b>
} {
}</pre>
<p>Each of the procedure arguments is declared with a list that has as first element the argument name, followed by eventual attributes. The argument definition syntax can be formalized in the following way:</p>
<pre class="example">tepam::procedure &lt;name&gt; {
   -args <b class="cmd">{
      {&lt;argument_name_1&gt; &lt;arg_attr_name_1a&gt; &lt;arg_attr_value_1a&gt; \ 
                         &lt;arg_attr_name_1b&gt; &lt;arg_attr_value_1b&gt; ...}
      {&lt;argument_name_2&gt; &lt;arg_attr_name_2a&gt; &lt;arg_attr_value_2a&gt; \ 
                         &lt;arg_attr_name_2b&gt; &lt;arg_attr_value_2b&gt; ...}
      ...
   }</b>
} &lt;body&gt;</pre>
<p>The argument names and attributes have to be used in the following way:</p>
<dl class="definitions">
<dt>Argument name (<em>&lt;argument_name_&lt;n&gt;&gt;</em>)</dt>
<dd><p>The provided argument name specifies whether the argument is an <em>unnamed argument</em> or a <em>named argument</em>. In addition to this, an argument name can also be blank to indicate an argument comment, or it can start with # to indicate a section comment.</p>
<dl class="definitions">
<dt><i class="arg">&quot;&lt;Name&gt;&quot;</i></dt>
<dd><p>This is the simplest form of an argument name: An argument whose name is not starting with '-' is an <em>unnamed argument</em>. The parameter provided during a procedure call will be assigned to a variable with the name <em>&lt;Name&gt;</em>.</p>
<pre class="example">tepam::procedure {print_string} {
   -args {
      {<b class="cmd"><a href="../../../../index.html#key481">text</a></b> -type string -description &quot;This is an unnamed argument&quot;}
   }
} {
   puts <b class="cmd">$text</b>
}
print_string <b class="cmd">&quot;Hello&quot;</b>
<em> -&gt; Hello</em></pre>
</dd>







|
<
|
<












|







320
321
322
323
324
325
326
327

328

329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
      {text -type string -multiple -description &quot;Multiple text lines to display&quot;}
   }</b>
} {
}</pre>
<p>Each of the procedure arguments is declared with a list that has as first element the argument name, followed by eventual attributes. The argument definition syntax can be formalized in the following way:</p>
<pre class="example">tepam::procedure &lt;name&gt; {
   -args <b class="cmd">{
      {&lt;argument_name_1&gt; &lt;arg_attr_name_1a&gt; &lt;arg_attr_value_1a&gt;  &lt;arg_attr_name_1b&gt; &lt;arg_attr_value_1b&gt; ...}

      {&lt;argument_name_2&gt; &lt;arg_attr_name_2a&gt; &lt;arg_attr_value_2a&gt;  &lt;arg_attr_name_2b&gt; &lt;arg_attr_value_2b&gt; ...}

      ...
   }</b>
} &lt;body&gt;</pre>
<p>The argument names and attributes have to be used in the following way:</p>
<dl class="definitions">
<dt>Argument name (<em>&lt;argument_name_&lt;n&gt;&gt;</em>)</dt>
<dd><p>The provided argument name specifies whether the argument is an <em>unnamed argument</em> or a <em>named argument</em>. In addition to this, an argument name can also be blank to indicate an argument comment, or it can start with # to indicate a section comment.</p>
<dl class="definitions">
<dt><i class="arg">&quot;&lt;Name&gt;&quot;</i></dt>
<dd><p>This is the simplest form of an argument name: An argument whose name is not starting with '-' is an <em>unnamed argument</em>. The parameter provided during a procedure call will be assigned to a variable with the name <em>&lt;Name&gt;</em>.</p>
<pre class="example">tepam::procedure {print_string} {
   -args {
      {<b class="cmd"><a href="../../../../index.html#key480">text</a></b> -type string -description &quot;This is an unnamed argument&quot;}
   }
} {
   puts <b class="cmd">$text</b>
}
print_string <b class="cmd">&quot;Hello&quot;</b>
<em> -&gt; Hello</em></pre>
</dd>
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
<dt><i class="arg">&quot;-&quot;</i> or <i class="arg">&quot;&quot;</i></dt>
<dd><p>A blank argument name (either '-' or <em>''</em>) starts a comment for the following arguments.</p>
<pre class="example">tepam::procedure {print_time} {
   -interactive_display_format short
   -args {
      {hours -type integer -description &quot;Hour&quot;}
      {minutes -type integer -description &quot;Minute&quot;}
 
      <b class="cmd">{- The following arguments are optional:}</b>
      {seconds -type integer -default 0 -description &quot;Seconds&quot;}
      {milliseconds -type integer -default 0 -description &quot;Milliseconds&quot;}
   }
} {
   puts &quot;${hour}h${minutes}:[expr $seconds+0.001*$milliseconds]&quot;
}</pre>
<p>Argument comments are basically used in the graphical argument definition forms that are created if a procedure is called interactively.</p></dd>
<dt><i class="arg">&quot;#*&quot;</i></dt>
<dd><p>An argument definition list that starts with '#' is considered as a section comment. The argument definition list will be trimmed from the '#' characters and the remaining string will be used as section comment.</p>
<p>Section comments can be used to structure visually the argument definition code. Section comments are also used to structure the generated help texts and the interactive argument definition forms.</p>
<pre class="example">tepam::procedure {complex_multiply} {
   -description &quot;This function perform a complex multiplication&quot;
   -args {
      <b class="cmd">{#### First complex number ####}</b>
      {-r0 -type double -description &quot;First number's real part&quot;}
      {-i0 -type double -description &quot;First number's imaginary part&quot;}
      
      <b class="cmd">{#### Second complex number ####}</b>
      {-r1 -type double -description &quot;Second number's real part&quot;}
      {-i1 -type double -description &quot;Second number's imaginary part&quot;}
   }
} {
   return [expr $r0*$r1 - $i0*$i1]
}</pre>







<

















<







364
365
366
367
368
369
370

371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387

388
389
390
391
392
393
394
<dt><i class="arg">&quot;-&quot;</i> or <i class="arg">&quot;&quot;</i></dt>
<dd><p>A blank argument name (either '-' or <em>''</em>) starts a comment for the following arguments.</p>
<pre class="example">tepam::procedure {print_time} {
   -interactive_display_format short
   -args {
      {hours -type integer -description &quot;Hour&quot;}
      {minutes -type integer -description &quot;Minute&quot;}

      <b class="cmd">{- The following arguments are optional:}</b>
      {seconds -type integer -default 0 -description &quot;Seconds&quot;}
      {milliseconds -type integer -default 0 -description &quot;Milliseconds&quot;}
   }
} {
   puts &quot;${hour}h${minutes}:[expr $seconds+0.001*$milliseconds]&quot;
}</pre>
<p>Argument comments are basically used in the graphical argument definition forms that are created if a procedure is called interactively.</p></dd>
<dt><i class="arg">&quot;#*&quot;</i></dt>
<dd><p>An argument definition list that starts with '#' is considered as a section comment. The argument definition list will be trimmed from the '#' characters and the remaining string will be used as section comment.</p>
<p>Section comments can be used to structure visually the argument definition code. Section comments are also used to structure the generated help texts and the interactive argument definition forms.</p>
<pre class="example">tepam::procedure {complex_multiply} {
   -description &quot;This function perform a complex multiplication&quot;
   -args {
      <b class="cmd">{#### First complex number ####}</b>
      {-r0 -type double -description &quot;First number's real part&quot;}
      {-i0 -type double -description &quot;First number's imaginary part&quot;}

      <b class="cmd">{#### Second complex number ####}</b>
      {-r1 -type double -description &quot;Second number's real part&quot;}
      {-i1 -type double -description &quot;Second number's imaginary part&quot;}
   }
} {
   return [expr $r0*$r1 - $i0*$i1]
}</pre>
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
<dt>-range <i class="arg">{double double}</i></dt>
<dd><p>Another argument constraint can be defined with the <i class="arg">-range</i> attribute. The valid range is defined with a list containing the minimum valid value and a maximum valid value. The <i class="arg">-range</i> attribute has to be used only for numerical arguments, like integers and doubles.</p></dd>
<dt>-validatecommand <i class="arg">script</i></dt>
<dd><p>Eventual more complex argument value validations can be performed via specific validation commands that are assigned to the <i class="arg">-validatecommand</i> attribute. The provided validation command can be a complete script in which the pattern <em>%P</em> is replaced by the argument value that has to be validated.
An example of a validation command declaration is:</p>
<pre class="example">tepam::procedure {display_message} {
   -args {
      {text -type string -description &quot;Message text&quot; \ 
            <b class="cmd">-validatecommand &quot;IllegalWordDetector %P&quot;</b>}
} {
}</pre>
</dd>
<dt>-widget <i class="arg">string</i></dt>
<dd><p>The widgets that allow defining the different arguments in case of an interactive procedure call are normally selected automatically in function of the argument type. The <i class="arg">-widget</i> attribute allows specifying explicitly a certain widget type for an argument.</p></dd>
<dt>-auxargs <i class="arg">list</i></dt>
<dd><p>In case a procedure is called interactively, additional argument attributes can be provided to the interactive argument definition form via the <em>-auxargs</em> attribute that is itself a list of attribute name/attribute value pairs:</p>
<pre class="example">-auxargs {-&lt;arg_attr_name_1a&gt; &lt;arg_attr_value_1a&gt; \ 
          -&lt;arg_attr_name_1b&gt; &lt;arg_attr_value_1b&gt;
          ...
}</pre>
<p>For example, if a procedure takes as argument a file name it may be beneficial to specify the required file type for the interactive argument definition form. This information can be provided via the <em>-auxargs</em> attribute to the argument definition form:</p>
<pre class="example">tepam::procedure LoadPicture {
   -args {
      {FileName -type existingfile -description &quot;Picture file&quot; \ 
                 <b class="cmd">-auxargs {-filetypes {{&quot;GIF&quot; {*.gif}} {&quot;JPG&quot; {*.jpg}} }}</b>}
   }
} {
}</pre>
</dd>
<dt>-auxargs_commands <i class="arg">script</i></dt>
<dd><p>If the auxiliary argument attributes are not static but have to be dynamically adaptable, the <em>-auxargs_commands</em> allows defining them via commands that are executed during a procedure call. A list of pairs of auxiliary attribute names and commands has to be provided to the <em>-auxargs_commands</em> attribute. The provided commands are executed in the context of the calling procedure.</p>
<pre class="example">-auxargs_commands {-&lt;arg_attr_name_1a&gt; &lt;arg_attr_command_1a&gt; \ 
                   -&lt;arg_attr_name_1b&gt; &lt;arg_attr_command_1b&gt;
                   ...
}</pre>
</dd>
</dl></dd>
</dl>
</div>







|








|






|







|







421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
<dt>-range <i class="arg">{double double}</i></dt>
<dd><p>Another argument constraint can be defined with the <i class="arg">-range</i> attribute. The valid range is defined with a list containing the minimum valid value and a maximum valid value. The <i class="arg">-range</i> attribute has to be used only for numerical arguments, like integers and doubles.</p></dd>
<dt>-validatecommand <i class="arg">script</i></dt>
<dd><p>Eventual more complex argument value validations can be performed via specific validation commands that are assigned to the <i class="arg">-validatecommand</i> attribute. The provided validation command can be a complete script in which the pattern <em>%P</em> is replaced by the argument value that has to be validated.
An example of a validation command declaration is:</p>
<pre class="example">tepam::procedure {display_message} {
   -args {
      {text -type string -description &quot;Message text&quot; \
            <b class="cmd">-validatecommand &quot;IllegalWordDetector %P&quot;</b>}
} {
}</pre>
</dd>
<dt>-widget <i class="arg">string</i></dt>
<dd><p>The widgets that allow defining the different arguments in case of an interactive procedure call are normally selected automatically in function of the argument type. The <i class="arg">-widget</i> attribute allows specifying explicitly a certain widget type for an argument.</p></dd>
<dt>-auxargs <i class="arg">list</i></dt>
<dd><p>In case a procedure is called interactively, additional argument attributes can be provided to the interactive argument definition form via the <em>-auxargs</em> attribute that is itself a list of attribute name/attribute value pairs:</p>
<pre class="example">-auxargs {-&lt;arg_attr_name_1a&gt; &lt;arg_attr_value_1a&gt; \
          -&lt;arg_attr_name_1b&gt; &lt;arg_attr_value_1b&gt;
          ...
}</pre>
<p>For example, if a procedure takes as argument a file name it may be beneficial to specify the required file type for the interactive argument definition form. This information can be provided via the <em>-auxargs</em> attribute to the argument definition form:</p>
<pre class="example">tepam::procedure LoadPicture {
   -args {
      {FileName -type existingfile -description &quot;Picture file&quot; \
                 <b class="cmd">-auxargs {-filetypes {{&quot;GIF&quot; {*.gif}} {&quot;JPG&quot; {*.jpg}} }}</b>}
   }
} {
}</pre>
</dd>
<dt>-auxargs_commands <i class="arg">script</i></dt>
<dd><p>If the auxiliary argument attributes are not static but have to be dynamically adaptable, the <em>-auxargs_commands</em> allows defining them via commands that are executed during a procedure call. A list of pairs of auxiliary attribute names and commands has to be provided to the <em>-auxargs_commands</em> attribute. The provided commands are executed in the context of the calling procedure.</p>
<pre class="example">-auxargs_commands {-&lt;arg_attr_name_1a&gt; &lt;arg_attr_command_1a&gt; \
                   -&lt;arg_attr_name_1b&gt; &lt;arg_attr_command_1b&gt;
                   ...
}</pre>
</dd>
</dl></dd>
</dl>
</div>
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
<pre class="example">tepam::procedure flag_test {
   -args {
      <b class="cmd">{-flag -type none -description &quot;This is a flag&quot;}</b>
   }
} {
   puts <b class="cmd">$flag</b>
}
 
flag_test
<em>-&gt; 0</em>
 
flag_test -flag
<em>-&gt; 1</em></pre>
<p>Since no argument value has to be provided to a flag, also no data check is performed for this argument type.</p></li>
<li><p><b class="type">string</b></p>
<p><b class="type">String</b> is a generic argument data type. Any data string can be provided to a string type argument and no data type checks are therefore performed. The string type allows defining single line strings during the interactive procedure calls.</p></li>
<li><p><b class="type">text</b></p>
<p><b class="type">Text</b> is identical to <b class="type">string</b> with the exception that it allows entering multi line strings during interactive procedure calls.</p></li>







<


<







512
513
514
515
516
517
518

519
520

521
522
523
524
525
526
527
<pre class="example">tepam::procedure flag_test {
   -args {
      <b class="cmd">{-flag -type none -description &quot;This is a flag&quot;}</b>
   }
} {
   puts <b class="cmd">$flag</b>
}

flag_test
<em>-&gt; 0</em>

flag_test -flag
<em>-&gt; 1</em></pre>
<p>Since no argument value has to be provided to a flag, also no data check is performed for this argument type.</p></li>
<li><p><b class="type">string</b></p>
<p><b class="type">String</b> is a generic argument data type. Any data string can be provided to a string type argument and no data type checks are therefore performed. The string type allows defining single line strings during the interactive procedure calls.</p></li>
<li><p><b class="type">text</b></p>
<p><b class="type">Text</b> is identical to <b class="type">string</b> with the exception that it allows entering multi line strings during interactive procedure calls.</p></li>
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
   }
} {
   puts &quot;$mtype: [join $text]&quot;
}</pre>
<p>... can for example be called in the following ways:</p>
<pre class="example"><b class="cmd">display_message Info &quot;It is PM 7:00.&quot;</b>
<em>-&gt; Info: It is PM 7:00.</em>
 
<b class="cmd">display_message Info &quot;It is PM 7:00.&quot; &quot;You should go home.&quot;</b>
<em>-&gt; Info: It is PM 7:00. You should go home.</em></pre>
<p>The nice thing is that unnamed arguments can also be called as named arguments, which can be handy, for example if the exact specified argument order is not known to a user:</p>
<pre class="example"><b class="cmd">display_message -mtype Info -text &quot;It is PM 7:00.&quot;</b>
<em>-&gt; Info: It is PM 7:00.</em>
 
<b class="cmd">display_message -text &quot;It is PM 7:00.&quot; -mtype Info</b>
<em>-&gt; Info: It is PM 7:00.</em>
 
<b class="cmd">display_message -mtype Info -text &quot;It is PM 7:00.&quot; -text &quot;You should go home.&quot;</b>
<em>-&gt; Info: It is PM 7:00. You should go home.</em>
 
<b class="cmd">display_message -text &quot;It is PM 7:00.&quot; -text &quot;You should go home.&quot; -mtype Info</b>
<em>-&gt; Info: It is PM 7:00. You should go home.</em></pre>
</div>
<div id="subsection8" class="subsection"><h3><a name="subsection8">Named Arguments</a></h3>
<p>Named arguments have to be provided to a procedure in form of a parameter pairs composed by the argument names and the argument values. The order how they are provided during a procedure call is irrelevant and has not to match with the argument specification order.</p>
<p>The following declared procedure ...</p>
<pre class="example">tepam::procedure {display_message} {
   -args {
      {-mtype -choices {Info Warning Error}}
      {-text -type string -multiple}
   }
} {
   puts &quot;$mtype: [join $text]&quot;
}</pre>
<p>... can be called in the following ways:</p>
<pre class="example"><b class="cmd">display_message -mtype Info -text &quot;It is PM 7:00.&quot;</b>
<em>-&gt; Info: It is PM 7:00.</em>
 
<b class="cmd">display_message -text &quot;It is PM 7:00.&quot; -mtype Info</b>
<em>-&gt; Info: It is PM 7:00.</em>
 
<b class="cmd">display_message -mtype Info -text &quot;It is PM 7:00.&quot; -text &quot;You should go home.&quot;</b>
<em>-&gt; Info: It is PM 7:00. You should go home.</em>
 
<b class="cmd">display_message -text &quot;It is PM 7:00.&quot; -text &quot;You should go home.&quot; -mtype Info</b>
<em>-&gt; Info: It is PM 7:00. You should go home.</em></pre>
<p>Also named arguments that have not the <em>-multiple</em> attribute can be provided multiple times. Only the last provided argument will be retained in such a case:</p>
<pre class="example"><b class="cmd">display_message -mtype Info -text &quot;It is PM 7:00.&quot; -mtype Warning</b>
<em>-&gt; Warning: It is PM 7:00.</em></pre>
</div>
<div id="subsection9" class="subsection"><h3><a name="subsection9">Unnamed Arguments First, Named Arguments Later (Tk Style)</a></h3>







<





<


<


<

















<


<


<







634
635
636
637
638
639
640

641
642
643
644
645

646
647

648
649

650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666

667
668

669
670

671
672
673
674
675
676
677
   }
} {
   puts &quot;$mtype: [join $text]&quot;
}</pre>
<p>... can for example be called in the following ways:</p>
<pre class="example"><b class="cmd">display_message Info &quot;It is PM 7:00.&quot;</b>
<em>-&gt; Info: It is PM 7:00.</em>

<b class="cmd">display_message Info &quot;It is PM 7:00.&quot; &quot;You should go home.&quot;</b>
<em>-&gt; Info: It is PM 7:00. You should go home.</em></pre>
<p>The nice thing is that unnamed arguments can also be called as named arguments, which can be handy, for example if the exact specified argument order is not known to a user:</p>
<pre class="example"><b class="cmd">display_message -mtype Info -text &quot;It is PM 7:00.&quot;</b>
<em>-&gt; Info: It is PM 7:00.</em>

<b class="cmd">display_message -text &quot;It is PM 7:00.&quot; -mtype Info</b>
<em>-&gt; Info: It is PM 7:00.</em>

<b class="cmd">display_message -mtype Info -text &quot;It is PM 7:00.&quot; -text &quot;You should go home.&quot;</b>
<em>-&gt; Info: It is PM 7:00. You should go home.</em>

<b class="cmd">display_message -text &quot;It is PM 7:00.&quot; -text &quot;You should go home.&quot; -mtype Info</b>
<em>-&gt; Info: It is PM 7:00. You should go home.</em></pre>
</div>
<div id="subsection8" class="subsection"><h3><a name="subsection8">Named Arguments</a></h3>
<p>Named arguments have to be provided to a procedure in form of a parameter pairs composed by the argument names and the argument values. The order how they are provided during a procedure call is irrelevant and has not to match with the argument specification order.</p>
<p>The following declared procedure ...</p>
<pre class="example">tepam::procedure {display_message} {
   -args {
      {-mtype -choices {Info Warning Error}}
      {-text -type string -multiple}
   }
} {
   puts &quot;$mtype: [join $text]&quot;
}</pre>
<p>... can be called in the following ways:</p>
<pre class="example"><b class="cmd">display_message -mtype Info -text &quot;It is PM 7:00.&quot;</b>
<em>-&gt; Info: It is PM 7:00.</em>

<b class="cmd">display_message -text &quot;It is PM 7:00.&quot; -mtype Info</b>
<em>-&gt; Info: It is PM 7:00.</em>

<b class="cmd">display_message -mtype Info -text &quot;It is PM 7:00.&quot; -text &quot;You should go home.&quot;</b>
<em>-&gt; Info: It is PM 7:00. You should go home.</em>

<b class="cmd">display_message -text &quot;It is PM 7:00.&quot; -text &quot;You should go home.&quot; -mtype Info</b>
<em>-&gt; Info: It is PM 7:00. You should go home.</em></pre>
<p>Also named arguments that have not the <em>-multiple</em> attribute can be provided multiple times. Only the last provided argument will be retained in such a case:</p>
<pre class="example"><b class="cmd">display_message -mtype Info -text &quot;It is PM 7:00.&quot; -mtype Warning</b>
<em>-&gt; Warning: It is PM 7:00.</em></pre>
</div>
<div id="subsection9" class="subsection"><h3><a name="subsection9">Unnamed Arguments First, Named Arguments Later (Tk Style)</a></h3>
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
<em>-&gt; n1:'', n2:'', u1:'U1', u2:'U2'</em></pre>
<p>Named arguments can be defined multiple times. If the named argument has the <em>-multiply</em> attribute, all argument values will be collected in a list. Otherwise, only the last provided attribute value will be retained:</p>
<pre class="example">my_proc <b class="cmd">-n1 N1 -n2 N2 -n1 M1 U1 U2</b>
<em>-&gt; n1:'M1', n2:'N2', u1:'U1', u2:'U2'</em></pre>
<p>The name of the first unnamed argument has therefore not to start with the '-' character. The unnamed argument is otherwise considered as name of another named argument. This is especially important if the first unnamed argument is given by a variable that can contain any character strings:</p>
<pre class="example">my_proc <b class="cmd">-n1 N1 -n2 N2 &quot;-&gt;&quot; &quot;&lt;-&quot;</b>
<em>-&gt; my_proc: Argument '-&gt;' not known</em>
 
set U1 &quot;-&gt;&quot;
my_proc -n1 N1 -n2 N2 $U1 U2}]
my_proc: Argument '-&gt;' not known</pre>
<p>The '--' flag allows separating unambiguously the unnamed arguments from the named arguments. All data after the '--' flag will be considered as unnamed argument:</p>
<pre class="example">my_proc <b class="cmd">-n1 N1 -n2 N2 -- &quot;-&gt;&quot; &quot;&lt;-&quot;</b>
<em>-&gt; n1:'N1', n2:'N2', u1:'-&gt;', u2:'&lt;-'</em>
 
set U1 &quot;-&gt;&quot;
my_proc <b class="cmd">-n1 N1 -n2 N2 -- $U1 U2</b>
<em>-&gt; n1:'N1', n2:'N2', u1:'-&gt;', u2:'&lt;-'</em></pre>
</div>
<div id="subsection10" class="subsection"><h3><a name="subsection10">Named Arguments First, Unnamed Arguments Later (Tcl Style)</a></h3>
<p>The Tk calling style will be chosen if a procedure is defined while the variable <b class="variable">tepam::named_arguments_first</b> is set to 0, or if the procedure attribute <i class="arg">-named_arguments_first</i> has been set to 0. The following procedure will be used in this section to illustrate this calling style:</p>
<pre class="example"><b class="cmd">set tepam::named_arguments_first 0</b>







<






<







695
696
697
698
699
700
701

702
703
704
705
706
707

708
709
710
711
712
713
714
<em>-&gt; n1:'', n2:'', u1:'U1', u2:'U2'</em></pre>
<p>Named arguments can be defined multiple times. If the named argument has the <em>-multiply</em> attribute, all argument values will be collected in a list. Otherwise, only the last provided attribute value will be retained:</p>
<pre class="example">my_proc <b class="cmd">-n1 N1 -n2 N2 -n1 M1 U1 U2</b>
<em>-&gt; n1:'M1', n2:'N2', u1:'U1', u2:'U2'</em></pre>
<p>The name of the first unnamed argument has therefore not to start with the '-' character. The unnamed argument is otherwise considered as name of another named argument. This is especially important if the first unnamed argument is given by a variable that can contain any character strings:</p>
<pre class="example">my_proc <b class="cmd">-n1 N1 -n2 N2 &quot;-&gt;&quot; &quot;&lt;-&quot;</b>
<em>-&gt; my_proc: Argument '-&gt;' not known</em>

set U1 &quot;-&gt;&quot;
my_proc -n1 N1 -n2 N2 $U1 U2}]
my_proc: Argument '-&gt;' not known</pre>
<p>The '--' flag allows separating unambiguously the unnamed arguments from the named arguments. All data after the '--' flag will be considered as unnamed argument:</p>
<pre class="example">my_proc <b class="cmd">-n1 N1 -n2 N2 -- &quot;-&gt;&quot; &quot;&lt;-&quot;</b>
<em>-&gt; n1:'N1', n2:'N2', u1:'-&gt;', u2:'&lt;-'</em>

set U1 &quot;-&gt;&quot;
my_proc <b class="cmd">-n1 N1 -n2 N2 -- $U1 U2</b>
<em>-&gt; n1:'N1', n2:'N2', u1:'-&gt;', u2:'&lt;-'</em></pre>
</div>
<div id="subsection10" class="subsection"><h3><a name="subsection10">Named Arguments First, Unnamed Arguments Later (Tcl Style)</a></h3>
<p>The Tk calling style will be chosen if a procedure is defined while the variable <b class="variable">tepam::named_arguments_first</b> is set to 0, or if the procedure attribute <i class="arg">-named_arguments_first</i> has been set to 0. The following procedure will be used in this section to illustrate this calling style:</p>
<pre class="example"><b class="cmd">set tepam::named_arguments_first 0</b>
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
<em>-&gt; my_proc: Argument 'U2' is not an option</em></pre>
<p>The '--' flag has no special meaning if not all mandatory arguments have got assigned a value. This flag will simply be attributed to one of the unnamed arguments:</p>
<pre class="example">my_proc <b class="cmd">-- -n1 N1</b>
<em>-&gt; n1:'N1', n2:'', u1:'--', u2:''</em></pre>
<p>But the '--' flag is simply ignored if the argument parser has started to handle the named arguments:</p>
<pre class="example">my_proc <b class="cmd">U1 -- -n1 N1</b>
<em>-&gt; n1:'N1', n2:'', u1:'U1', u2:''</em>
 
my_proc <b class="cmd">U1 -n1 N1 -- -n2 N2</b>
<em>-&gt; n1:'N1', n2:'N2', u1:'U1', u2:''</em></pre>
</div>
<div id="subsection11" class="subsection"><h3><a name="subsection11">Raw Argument List</a></h3>
<p>It may be necessary sometimes that the procedure body is able to access the entire list of arguments provided during a procedure call. This can happen via the <b class="variable">args</b> variable that contains always the unprocessed argument list:</p>
<pre class="example">tepam::procedure {display_message} {
   -args {







<







752
753
754
755
756
757
758

759
760
761
762
763
764
765
<em>-&gt; my_proc: Argument 'U2' is not an option</em></pre>
<p>The '--' flag has no special meaning if not all mandatory arguments have got assigned a value. This flag will simply be attributed to one of the unnamed arguments:</p>
<pre class="example">my_proc <b class="cmd">-- -n1 N1</b>
<em>-&gt; n1:'N1', n2:'', u1:'--', u2:''</em></pre>
<p>But the '--' flag is simply ignored if the argument parser has started to handle the named arguments:</p>
<pre class="example">my_proc <b class="cmd">U1 -- -n1 N1</b>
<em>-&gt; n1:'N1', n2:'', u1:'U1', u2:''</em>

my_proc <b class="cmd">U1 -n1 N1 -- -n2 N2</b>
<em>-&gt; n1:'N1', n2:'N2', u1:'U1', u2:''</em></pre>
</div>
<div id="subsection11" class="subsection"><h3><a name="subsection11">Raw Argument List</a></h3>
<p>It may be necessary sometimes that the procedure body is able to access the entire list of arguments provided during a procedure call. This can happen via the <b class="variable">args</b> variable that contains always the unprocessed argument list:</p>
<pre class="example">tepam::procedure {display_message} {
   -args {
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
<em>-&gt; args: -mtype Warning {It is 7:00}</em></pre>
</div>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="tepam_introduction.html">tepam(n)</a>, <a href="tepam_argument_dialogbox.html">tepam::argument_dialogbox(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key738">argument integrity</a>, <a href="../../../../index.html#key739">argument validation</a>, <a href="../../../../index.html#key740">arguments</a>, <a href="../../../../index.html#key34">procedure</a>, <a href="../../../../index.html#key737">subcommand</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Procedures, arguments, parameters, options</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009/2010, Andreas Drollinger</p>
</div>
</div></body></html>







|








773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
<em>-&gt; args: -mtype Warning {It is 7:00}</em></pre>
</div>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="tepam_introduction.html">tepam(n)</a>, <a href="tepam_argument_dialogbox.html">tepam::argument_dialogbox(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key740">argument integrity</a>, <a href="../../../../index.html#key739">argument validation</a>, <a href="../../../../index.html#key738">arguments</a>, <a href="../../../../index.html#key34">procedure</a>, <a href="../../../../index.html#key737">subcommand</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Procedures, arguments, parameters, options</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009/2010, Andreas Drollinger</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/term/ansi_cattr.html.

119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a>
<ul>
<li class="subsection"><a href="#subsection1">Introspection</a></li>
<li class="subsection"><a href="#subsection2">Attributes</a></li>
</ul>
</li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a>
<ul>
<li class="subsection"><a href="#subsection1">Introspection</a></li>
<li class="subsection"><a href="#subsection2">Attributes</a></li>
</ul>
</li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
<dt><a name="35"><b class="cmd">::term::ansi::code::attr::nostrike</b></a></dt>
<dd><p>Strike-through off.</p></dd>
<dt><a name="36"><b class="cmd">::term::ansi::code::attr::reset</b></a></dt>
<dd><p>Reset all attributes to their default values.</p></dd>
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>term</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key175">ansi</a>, <a href="../../../../index.html#key174">attribute control</a>, <a href="../../../../index.html#key173">color control</a>, <a href="../../../../index.html#key108">control</a>, <a href="../../../../index.html#key104">terminal</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Terminal control</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
<dt><a name="35"><b class="cmd">::term::ansi::code::attr::nostrike</b></a></dt>
<dd><p>Strike-through off.</p></dd>
<dt><a name="36"><b class="cmd">::term::ansi::code::attr::reset</b></a></dt>
<dd><p>Reset all attributes to their default values.</p></dd>
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>term</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key175">ansi</a>, <a href="../../../../index.html#key174">attribute control</a>, <a href="../../../../index.html#key173">color control</a>, <a href="../../../../index.html#key107">control</a>, <a href="../../../../index.html#key104">terminal</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Terminal control</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/term/ansi_cctrl.html.

119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a>
<ul>
<li class="subsection"><a href="#subsection1">Introspection</a></li>
<li class="subsection"><a href="#subsection2">Sequences</a></li>
</ul>
</li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a>
<ul>
<li class="subsection"><a href="#subsection1">Introspection</a></li>
<li class="subsection"><a href="#subsection2">Sequences</a></li>
</ul>
</li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
<dt><a name="87"><b class="cmd">::term::ansi::code::ctrl::init</b></a></dt>
<dd><p>Initialize default and alternate fonts to ASCII and box graphics.</p></dd>
<dt><a name="88"><b class="cmd">::term::ansi::code::ctrl::showat</b> <i class="arg">row</i> <i class="arg">col</i> <i class="arg">text</i></a></dt>
<dd><p>Format the block of text for display at the specified location.</p></dd>
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>term</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key175">ansi</a>, <a href="../../../../index.html#key174">attribute control</a>, <a href="../../../../index.html#key173">color control</a>, <a href="../../../../index.html#key108">control</a>, <a href="../../../../index.html#key104">terminal</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Terminal control</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006-2008 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
<dt><a name="87"><b class="cmd">::term::ansi::code::ctrl::init</b></a></dt>
<dd><p>Initialize default and alternate fonts to ASCII and box graphics.</p></dd>
<dt><a name="88"><b class="cmd">::term::ansi::code::ctrl::showat</b> <i class="arg">row</i> <i class="arg">col</i> <i class="arg">text</i></a></dt>
<dd><p>Format the block of text for display at the specified location.</p></dd>
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>term</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key175">ansi</a>, <a href="../../../../index.html#key174">attribute control</a>, <a href="../../../../index.html#key173">color control</a>, <a href="../../../../index.html#key107">control</a>, <a href="../../../../index.html#key104">terminal</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Terminal control</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006-2008 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/term/ansi_cmacros.html.

119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a>
<ul>
<li class="subsection"><a href="#subsection1">Introspection</a></li>
<li class="subsection"><a href="#subsection2">Sequences</a></li>
</ul>
</li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a>
<ul>
<li class="subsection"><a href="#subsection1">Introspection</a></li>
<li class="subsection"><a href="#subsection2">Sequences</a></li>
</ul>
</li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
<dd><p>The paragraph of text contained in the string is padded with spaces at
the right margin, after normalizing internal tabs, and then put into a
frame made of box-graphics. The result is returned as the result of
the command.</p></dd>
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>term</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key175">ansi</a>, <a href="../../../../index.html#key108">control</a>, <a href="../../../../index.html#key663">frame</a>, <a href="../../../../index.html#key662">menu</a>, <a href="../../../../index.html#key104">terminal</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Terminal control</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
<dd><p>The paragraph of text contained in the string is padded with spaces at
the right margin, after normalizing internal tabs, and then put into a
frame made of box-graphics. The result is returned as the result of
the command.</p></dd>
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>term</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key175">ansi</a>, <a href="../../../../index.html#key107">control</a>, <a href="../../../../index.html#key663">frame</a>, <a href="../../../../index.html#key662">menu</a>, <a href="../../../../index.html#key104">terminal</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Terminal control</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/term/ansi_code.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>term::ansi::code - Helper for control sequences</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>term::ansi::code - Helper for control sequences</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
sequence <i class="arg">code</i>, beginning with the specified escape sequence,
either <b class="const">esc</b>, or <b class="const">escb</b>.</p></dd>
<dt><a name="4"><b class="cmd">::term::ansi::code::const</b> <i class="arg">name</i> <i class="arg">code</i></a></dt>
<dd><p>This command defines a procedure <i class="arg">name</i> which returns the control
sequence <i class="arg">code</i>.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>term</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key108">control</a>, <a href="../../../../index.html#key320">declare</a>, <a href="../../../../index.html#key321">define</a>, <a href="../../../../index.html#key104">terminal</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Terminal control</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
sequence <i class="arg">code</i>, beginning with the specified escape sequence,
either <b class="const">esc</b>, or <b class="const">escb</b>.</p></dd>
<dt><a name="4"><b class="cmd">::term::ansi::code::const</b> <i class="arg">name</i> <i class="arg">code</i></a></dt>
<dd><p>This command defines a procedure <i class="arg">name</i> which returns the control
sequence <i class="arg">code</i>.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>term</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key107">control</a>, <a href="../../../../index.html#key320">declare</a>, <a href="../../../../index.html#key321">define</a>, <a href="../../../../index.html#key104">terminal</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Terminal control</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/term/ansi_ctrlu.html.

119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a>
<ul>
<li class="subsection"><a href="#subsection1">Introspection</a></li>
<li class="subsection"><a href="#subsection2">Operations</a></li>
</ul>
</li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a>
<ul>
<li class="subsection"><a href="#subsection1">Introspection</a></li>
<li class="subsection"><a href="#subsection2">Operations</a></li>
</ul>
</li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p><em>WARNING</em>: This package is unix-specific and depends on the
availability of two unix system commands for terminal control,
i.e. <b class="syscmd">stty</b> and <b class="syscmd">tput</b>, both of which have to be found
in the <b class="variable">$PATH</b>. If any of these two commands is missing the
loading of the package will fail.</p>
<p>The package provides commands to switch the standard input of the
current process between <i class="term"><a href="../../../../index.html#key485">raw</a></i> and <i class="term"><a href="../../../../index.html#key484">cooked</a></i> input modes, and
to query the size of terminals, i.e. the available number of columns
and lines.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Introspection</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::term::ansi::ctrl::unix::import</b> <span class="opt">?<i class="arg">ns</i>?</span> <span class="opt">?<i class="arg">arg</i>...?</span></a></dt>







|







147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p><em>WARNING</em>: This package is unix-specific and depends on the
availability of two unix system commands for terminal control,
i.e. <b class="syscmd">stty</b> and <b class="syscmd">tput</b>, both of which have to be found
in the <b class="variable">$PATH</b>. If any of these two commands is missing the
loading of the package will fail.</p>
<p>The package provides commands to switch the standard input of the
current process between <i class="term"><a href="../../../../index.html#key485">raw</a></i> and <i class="term"><a href="../../../../index.html#key483">cooked</a></i> input modes, and
to query the size of terminals, i.e. the available number of columns
and lines.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Introspection</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::term::ansi::ctrl::unix::import</b> <span class="opt">?<i class="arg">ns</i>?</span> <span class="opt">?<i class="arg">arg</i>...?</span></a></dt>
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
<dt><a name="2"><b class="cmd">::term::ansi::ctrl::unix::raw</b></a></dt>
<dd><p>This command switches the standard input of the current process to
<i class="term"><a href="../../../../index.html#key485">raw</a></i> input mode. This means that from then on all characters
typed by the user are immediately reported to the application instead
of waiting in the OS buffer until the Enter/Return key is received.</p></dd>
<dt><a name="3"><b class="cmd">::term::ansi::ctrl::unix::raw</b></a></dt>
<dd><p>This command switches the standard input of the current process to
<i class="term"><a href="../../../../index.html#key484">cooked</a></i> input mode. This means that from then on all characters
typed by the user are kept in OS buffers for editing until the
Enter/Return key is received.</p></dd>
<dt><a name="4"><b class="cmd">::term::ansi::ctrl::unix::columns</b></a></dt>
<dd><p>This command queries the terminal connected to the standard input for
the number of columns available for display.</p></dd>
<dt><a name="5"><b class="cmd">::term::ansi::ctrl::unix::rows</b></a></dt>
<dd><p>This command queries the terminal connected to the standard input for
the number of rows (aka lines) available for display.</p></dd>
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>term</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key175">ansi</a>, <a href="../../../../index.html#key482">columns</a>, <a href="../../../../index.html#key108">control</a>, <a href="../../../../index.html#key484">cooked</a>, <a href="../../../../index.html#key483">input mode</a>, <a href="../../../../index.html#key487">lines</a>, <a href="../../../../index.html#key485">raw</a>, <a href="../../../../index.html#key486">rows</a>, <a href="../../../../index.html#key104">terminal</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Terminal control</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006-2011 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|











|



|




|








172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
<dt><a name="2"><b class="cmd">::term::ansi::ctrl::unix::raw</b></a></dt>
<dd><p>This command switches the standard input of the current process to
<i class="term"><a href="../../../../index.html#key485">raw</a></i> input mode. This means that from then on all characters
typed by the user are immediately reported to the application instead
of waiting in the OS buffer until the Enter/Return key is received.</p></dd>
<dt><a name="3"><b class="cmd">::term::ansi::ctrl::unix::raw</b></a></dt>
<dd><p>This command switches the standard input of the current process to
<i class="term"><a href="../../../../index.html#key483">cooked</a></i> input mode. This means that from then on all characters
typed by the user are kept in OS buffers for editing until the
Enter/Return key is received.</p></dd>
<dt><a name="4"><b class="cmd">::term::ansi::ctrl::unix::columns</b></a></dt>
<dd><p>This command queries the terminal connected to the standard input for
the number of columns available for display.</p></dd>
<dt><a name="5"><b class="cmd">::term::ansi::ctrl::unix::rows</b></a></dt>
<dd><p>This command queries the terminal connected to the standard input for
the number of rows (aka lines) available for display.</p></dd>
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>term</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key175">ansi</a>, <a href="../../../../index.html#key484">columns</a>, <a href="../../../../index.html#key107">control</a>, <a href="../../../../index.html#key483">cooked</a>, <a href="../../../../index.html#key482">input mode</a>, <a href="../../../../index.html#key487">lines</a>, <a href="../../../../index.html#key485">raw</a>, <a href="../../../../index.html#key486">rows</a>, <a href="../../../../index.html#key104">terminal</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Terminal control</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006-2011 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/term/ansi_send.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>term::ansi::send - Output of ANSI control sequences to terminals</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>term::ansi::send - Output of ANSI control sequences to terminals</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
<dd><p>Clear screen. In essence a sequence of CursorHome + EraseDown.</p></dd>
<dt><a name="86"><b class="cmd">::term::ansi::send::init</b></a></dt>
<dd><p>Initialize default and alternate fonts to ASCII and box graphics.</p></dd>
<dt><a name="87"><b class="cmd">::term::ansi::send::showat</b> <i class="arg">row</i> <i class="arg">col</i> <i class="arg">text</i></a></dt>
<dd><p>Show the block of text at the specified location.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>term</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key404">character output</a>, <a href="../../../../index.html#key108">control</a>, <a href="../../../../index.html#key104">terminal</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Terminal control</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
<dd><p>Clear screen. In essence a sequence of CursorHome + EraseDown.</p></dd>
<dt><a name="86"><b class="cmd">::term::ansi::send::init</b></a></dt>
<dd><p>Initialize default and alternate fonts to ASCII and box graphics.</p></dd>
<dt><a name="87"><b class="cmd">::term::ansi::send::showat</b> <i class="arg">row</i> <i class="arg">col</i> <i class="arg">text</i></a></dt>
<dd><p>Show the block of text at the specified location.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>term</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key404">character output</a>, <a href="../../../../index.html#key107">control</a>, <a href="../../../../index.html#key104">terminal</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Terminal control</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/term/imenu.html.

117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Class API</a></li>
<li class="section"><a href="#section3">Object API</a></li>
<li class="section"><a href="#section4">Configuration</a></li>
<li class="section"><a href="#section5">Interaction</a></li>
<li class="section"><a href="#section6">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Class API</a></li>
<li class="section"><a href="#section3">Object API</a></li>
<li class="section"><a href="#section4">Configuration</a></li>
<li class="section"><a href="#section5">Interaction</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
<dt>Cursor Down</dt>
<dd><p>The selection is moved down one entry, except if the last entry of the
menu is already selected.</p></dd>
<dt>Enter/Return</dt>
<dd><p>The interaction with the object is terminated.</p></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>term</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key108">control</a>, <a href="../../../../index.html#key662">menu</a>, <a href="../../../../index.html#key104">terminal</a>, <a href="../../../../index.html#key770">text display</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Terminal control</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
<dt>Cursor Down</dt>
<dd><p>The selection is moved down one entry, except if the last entry of the
menu is already selected.</p></dd>
<dt>Enter/Return</dt>
<dd><p>The interaction with the object is terminated.</p></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>term</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key107">control</a>, <a href="../../../../index.html#key662">menu</a>, <a href="../../../../index.html#key104">terminal</a>, <a href="../../../../index.html#key770">text display</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Terminal control</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/term/ipager.html.

117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Class API</a></li>
<li class="section"><a href="#section3">Object API</a></li>
<li class="section"><a href="#section4">Configuration</a></li>
<li class="section"><a href="#section5">Interaction</a></li>
<li class="section"><a href="#section6">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Class API</a></li>
<li class="section"><a href="#section3">Object API</a></li>
<li class="section"><a href="#section4">Configuration</a></li>
<li class="section"><a href="#section5">Interaction</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
<dt>Page Down</dt>
<dd><p>The text is scrolled up a page. The pager will not react if the last
line of the text is already shown.</p></dd>
<dt>Enter/Return</dt>
<dd><p>The interaction with the object is terminated.</p></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>term</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key108">control</a>, <a href="../../../../index.html#key771">pager</a>, <a href="../../../../index.html#key104">terminal</a>, <a href="../../../../index.html#key770">text display</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Terminal control</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
<dt>Page Down</dt>
<dd><p>The text is scrolled up a page. The pager will not react if the last
line of the text is already shown.</p></dd>
<dt>Enter/Return</dt>
<dd><p>The interaction with the object is terminated.</p></dd>
</dl>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>term</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key107">control</a>, <a href="../../../../index.html#key771">pager</a>, <a href="../../../../index.html#key104">terminal</a>, <a href="../../../../index.html#key770">text display</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Terminal control</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/term/receive.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>term::receive - General input from terminals</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>term::receive - General input from terminals</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
</dl></dd>
<dt><a name="5"><b class="cmd">::term::receive::unlisten</b> <span class="opt">?<i class="arg">chan</i>?</span></a></dt>
<dd><p>This command disables the filevent listener for the channel with handle
<i class="arg">chan</i>.</p>
<p>If not specified <i class="arg">chan</i> defaults to <b class="const">stdin</b>.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>term</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key107">character input</a>, <a href="../../../../index.html#key108">control</a>, <a href="../../../../index.html#key105">get character</a>, <a href="../../../../index.html#key109">listener</a>, <a href="../../../../index.html#key106">receiver</a>, <a href="../../../../index.html#key104">terminal</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Terminal control</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
</dl></dd>
<dt><a name="5"><b class="cmd">::term::receive::unlisten</b> <span class="opt">?<i class="arg">chan</i>?</span></a></dt>
<dd><p>This command disables the filevent listener for the channel with handle
<i class="arg">chan</i>.</p>
<p>If not specified <i class="arg">chan</i> defaults to <b class="const">stdin</b>.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>term</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key108">character input</a>, <a href="../../../../index.html#key107">control</a>, <a href="../../../../index.html#key106">get character</a>, <a href="../../../../index.html#key109">listener</a>, <a href="../../../../index.html#key105">receiver</a>, <a href="../../../../index.html#key104">terminal</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Terminal control</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/term/term.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
<p>term - General terminal control</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.4</b></li>
<li>package require <b class="pkgname">term <span class="opt">?0.1?</span></b></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>It is planned to have this package provide highlevel general terminal control
commands, in the vein of ncurses or similar packages. Currently nothing has
been implemented however. I.e. this package is empty. It can be loaded, yet
provides nothing.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>term</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key108">control</a>, <a href="../../../../index.html#key104">terminal</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Terminal control</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



















|



|




|








113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
<p>term - General terminal control</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.4</b></li>
<li>package require <b class="pkgname">term <span class="opt">?0.1?</span></b></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>It is planned to have this package provide highlevel general terminal control
commands, in the vein of ncurses or similar packages. Currently nothing has
been implemented however. I.e. this package is empty. It can be loaded, yet
provides nothing.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>term</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key107">control</a>, <a href="../../../../index.html#key104">terminal</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Terminal control</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/term/term_bind.html.

116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Class API</a></li>
<li class="section"><a href="#section3">Object API</a></li>
<li class="section"><a href="#section4">Notes</a></li>
<li class="section"><a href="#section5">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Class API</a></li>
<li class="section"><a href="#section3">Object API</a></li>
<li class="section"><a href="#section4">Notes</a></li>
<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
<div id="section4" class="section"><h2><a name="section4">Notes</a></h2>
<p>The simplicity of the DFA means that it is not possible to recognize a
character sequence with has a another recognized character sequence as
its prefix.</p>
<p>In other words, the set of recognized strings has to form a
<i class="term">prefix code</i>.</p>
</div>
<div id="section5" class="section"><h2><a name="section5">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>term</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key107">character input</a>, <a href="../../../../index.html#key108">control</a>, <a href="../../../../index.html#key495">dispatcher</a>, <a href="../../../../index.html#key109">listener</a>, <a href="../../../../index.html#key106">receiver</a>, <a href="../../../../index.html#key104">terminal</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Terminal control</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
<div id="section4" class="section"><h2><a name="section4">Notes</a></h2>
<p>The simplicity of the DFA means that it is not possible to recognize a
character sequence with has a another recognized character sequence as
its prefix.</p>
<p>In other words, the set of recognized strings has to form a
<i class="term">prefix code</i>.</p>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>term</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key108">character input</a>, <a href="../../../../index.html#key107">control</a>, <a href="../../../../index.html#key495">dispatcher</a>, <a href="../../../../index.html#key109">listener</a>, <a href="../../../../index.html#key105">receiver</a>, <a href="../../../../index.html#key104">terminal</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Terminal control</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/term/term_send.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>term::send - General output to terminals</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<p>term::send - General output to terminals</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
Tcl internal and OS buffers to ensure that the characters are processed
immediately.</p></dd>
<dt><a name="2"><b class="cmd">::term::send::wr</b> <i class="arg">str</i></a></dt>
<dd><p>This convenience command is like <b class="cmd">::term::send::wrch</b>, except that the
destination channel is fixed to <em>stdout</em>.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>term</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key404">character output</a>, <a href="../../../../index.html#key108">control</a>, <a href="../../../../index.html#key104">terminal</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Terminal control</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
Tcl internal and OS buffers to ensure that the characters are processed
immediately.</p></dd>
<dt><a name="2"><b class="cmd">::term::send::wr</b> <i class="arg">str</i></a></dt>
<dd><p>This convenience command is like <b class="cmd">::term::send::wrch</b>, except that the
destination channel is fixed to <em>stdout</em>.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>term</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key404">character output</a>, <a href="../../../../index.html#key107">control</a>, <a href="../../../../index.html#key104">terminal</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Terminal control</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/textutil/adjust.html.

110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<p>textutil::adjust - Procedures to adjust, indent, and undent paragraphs</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<p>textutil::adjust - Procedures to adjust, indent, and undent paragraphs</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
<p>Lines containing only whitespace are always reduced to completely
empty lines. They and empty lines are also ignored when computing the
prefix to remove.</p>
<p>Together with <b class="cmd">::textutil::adjust::adjust</b> it is possible to
create properly wrapped paragraphs with arbitrary indentations.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>textutil</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>regexp(n), split(n), string(n)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key328">TeX</a>, <a href="../../../../index.html#key327">adjusting</a>, <a href="../../../../index.html#key331">formatting</a>, <a href="../../../../index.html#key330">hyphenation</a>, <a href="../../../../index.html#key325">indenting</a>, <a href="../../../../index.html#key326">justification</a>, <a href="../../../../index.html#key329">paragraph</a>, <a href="../../../../index.html#key272">string</a>, <a href="../../../../index.html#key324">undenting</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
</div></body></html>







|



|







|





251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
<p>Lines containing only whitespace are always reduced to completely
empty lines. They and empty lines are also ignored when computing the
prefix to remove.</p>
<p>Together with <b class="cmd">::textutil::adjust::adjust</b> it is possible to
create properly wrapped paragraphs with arbitrary indentations.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>textutil</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>regexp(n), split(n), string(n)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key327">TeX</a>, <a href="../../../../index.html#key328">adjusting</a>, <a href="../../../../index.html#key331">formatting</a>, <a href="../../../../index.html#key330">hyphenation</a>, <a href="../../../../index.html#key326">indenting</a>, <a href="../../../../index.html#key325">justification</a>, <a href="../../../../index.html#key329">paragraph</a>, <a href="../../../../index.html#key270">string</a>, <a href="../../../../index.html#key324">undenting</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/textutil/expander.html.

125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<li class="subsection"><a href="#subsection3">Writing Macro Commands</a></li>
<li class="subsection"><a href="#subsection4">Changing the Expansion Brackets</a></li>
<li class="subsection"><a href="#subsection5">Customized Macro Expansion</a></li>
<li class="subsection"><a href="#subsection6">Using the Context Stack</a></li>
</ul>
</li>
<li class="section"><a href="#section4">HISTORY</a></li>
<li class="section"><a href="#section5">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<li class="subsection"><a href="#subsection3">Writing Macro Commands</a></li>
<li class="subsection"><a href="#subsection4">Changing the Expansion Brackets</a></li>
<li class="subsection"><a href="#subsection5">Customized Macro Expansion</a></li>
<li class="subsection"><a href="#subsection6">Using the Context Stack</a></li>
</ul>
</li>
<li class="section"><a href="#section4">HISTORY</a></li>
<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
or <b class="method">cname</b>.</p>
</div>
</div>
<div id="section4" class="section"><h2><a name="section4">HISTORY</a></h2>
<p><b class="cmd">expander</b> was written by William H. Duquette; it is a repackaging
of the central algorithm of the expand macro processing tool.</p>
</div>
<div id="section5" class="section"><h2><a name="section5">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>textutil :: expander</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="http://www.wjduquette.com/expand">http://www.wjduquette.com/expand</a>, regexp, <a href="../../../../index.html#key418">split</a>, <a href="../../../../index.html#key272">string</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key272">string</a>, <a href="../../../../index.html#key762">template processing</a>, <a href="../../../../index.html#key763">text expansion</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; William H. Duquette, http://www.wjduquette.com/expand</p>
</div>
</div></body></html>







|


|
|




|


|








488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
or <b class="method">cname</b>.</p>
</div>
</div>
<div id="section4" class="section"><h2><a name="section4">HISTORY</a></h2>
<p><b class="cmd">expander</b> was written by William H. Duquette; it is a repackaging
of the central algorithm of the expand macro processing tool.</p>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>textutil</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>[uri, http://www.wjduquette.com/expand, regexp, <a href="../../../../index.html#key418">split</a>, <a href="../../../../index.html#key270">string</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key270">string</a>, <a href="../../../../index.html#key762">template processing</a>, <a href="../../../../index.html#key763">text expansion</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; William H. Duquette, http://www.wjduquette.com/expand</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/textutil/repeat.html.

110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<p>textutil::repeat - Procedures to repeat strings.</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<p>textutil::repeat - Procedures to repeat strings.</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
command <b class="cmd">string repeat</b> then this command will be implemented in
its terms, for maximum possible speed. Otherwise a fast implementation
in Tcl will be used.</p></dd>
<dt><a name="2"><b class="cmd">::textutil::repeat::blank</b> <i class="arg">num</i></a></dt>
<dd><p>A convenience command. Returns a string of <i class="arg">num</i> spaces.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>textutil</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>regexp(n), split(n), string(n)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key270">blanks</a>, <a href="../../../../index.html#key271">repetition</a>, <a href="../../../../index.html#key272">string</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
</div></body></html>







|



|







|





146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
command <b class="cmd">string repeat</b> then this command will be implemented in
its terms, for maximum possible speed. Otherwise a fast implementation
in Tcl will be used.</p></dd>
<dt><a name="2"><b class="cmd">::textutil::repeat::blank</b> <i class="arg">num</i></a></dt>
<dd><p>A convenience command. Returns a string of <i class="arg">num</i> spaces.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>textutil</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>regexp(n), split(n), string(n)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key272">blanks</a>, <a href="../../../../index.html#key271">repetition</a>, <a href="../../../../index.html#key270">string</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/textutil/tabify.html.

110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<p>textutil::tabify - Procedures to (un)tabify strings</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<p>textutil::tabify - Procedures to (un)tabify strings</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
instead and replaces tabs with just enough space characters to reach
the next tabstop. This is the complement of the actions taken by
<b class="cmd">::textutil::tabify::tabify2</b>. <i class="arg">num</i> defaults to 8.</p>
<p>There is one asymmetry though: A tab can be replaced with a single
space, but not the other way around.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>textutil</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>regexp(n), split(n), string(n)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key331">formatting</a>, <a href="../../../../index.html#key272">string</a>, <a href="../../../../index.html#key523">tabstops</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
</div></body></html>







|



|







|





166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
instead and replaces tabs with just enough space characters to reach
the next tabstop. This is the complement of the actions taken by
<b class="cmd">::textutil::tabify::tabify2</b>. <i class="arg">num</i> defaults to 8.</p>
<p>There is one asymmetry though: A tab can be replaced with a single
space, but not the other way around.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>textutil</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>regexp(n), split(n), string(n)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key331">formatting</a>, <a href="../../../../index.html#key270">string</a>, <a href="../../../../index.html#key523">tabstops</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/textutil/textutil.html.

110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<p>textutil - Procedures to manipulate texts and strings.</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<p>textutil - Procedures to manipulate texts and strings.</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
to the command, or the strings specified in the single <i class="arg">list</i>, and
returns it as the result of the command.</p>
<p>If no strings were specified the result is the empty string.  If only
one string was specified, the string itself is returned, as it is its
own longest common prefix.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>textutil</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>regexp(n), split(n), string(n)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key328">TeX</a>, <a href="../../../../index.html#key331">formatting</a>, <a href="../../../../index.html#key330">hyphenation</a>, <a href="../../../../index.html#key325">indenting</a>, <a href="../../../../index.html#key329">paragraph</a>, <a href="../../../../index.html#key306">regular expression</a>, <a href="../../../../index.html#key272">string</a>, <a href="../../../../index.html#key407">trimming</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
</div></body></html>







|



|







|





399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
to the command, or the strings specified in the single <i class="arg">list</i>, and
returns it as the result of the command.</p>
<p>If no strings were specified the result is the empty string.  If only
one string was specified, the string itself is returned, as it is its
own longest common prefix.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>textutil</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>regexp(n), split(n), string(n)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key327">TeX</a>, <a href="../../../../index.html#key331">formatting</a>, <a href="../../../../index.html#key330">hyphenation</a>, <a href="../../../../index.html#key326">indenting</a>, <a href="../../../../index.html#key329">paragraph</a>, <a href="../../../../index.html#key306">regular expression</a>, <a href="../../../../index.html#key270">string</a>, <a href="../../../../index.html#key407">trimming</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/textutil/textutil_split.html.

110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<p>textutil::split - Procedures to split texts</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<p>textutil::split - Procedures to split texts</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
parentheses part of separator will be added into the result list as
additional element. If the <i class="arg">string</i> is empty the result is the
empty list, like for <b class="cmd"><a href="../../../../index.html#key418">split</a></b>. If <i class="arg">regexp</i> is empty the
<i class="arg">string</i> is split at every character, like <b class="cmd"><a href="../../../../index.html#key418">split</a></b> does.
The regular expression <i class="arg">regexp</i> defaults to &quot;[\\t \\r\\n]+&quot;.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>textutil</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>regexp(n), split(n), string(n)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key306">regular expression</a>, <a href="../../../../index.html#key418">split</a>, <a href="../../../../index.html#key272">string</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
</div></body></html>







|



|







|





154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
parentheses part of separator will be added into the result list as
additional element. If the <i class="arg">string</i> is empty the result is the
empty list, like for <b class="cmd"><a href="../../../../index.html#key418">split</a></b>. If <i class="arg">regexp</i> is empty the
<i class="arg">string</i> is split at every character, like <b class="cmd"><a href="../../../../index.html#key418">split</a></b> does.
The regular expression <i class="arg">regexp</i> defaults to &quot;[\\t \\r\\n]+&quot;.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>textutil</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>regexp(n), split(n), string(n)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key306">regular expression</a>, <a href="../../../../index.html#key418">split</a>, <a href="../../../../index.html#key270">string</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/textutil/textutil_string.html.

110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<p>textutil::string - Procedures to manipulate texts and strings.</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<p>textutil::string - Procedures to manipulate texts and strings.</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
to the command, or the strings specified in the single <i class="arg">list</i>, and
returns it as the result of the command.</p>
<p>If no strings were specified the result is the empty string.  If only
one string was specified, the string itself is returned, as it is its
own longest common prefix.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>textutil</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>regexp(n), split(n), string(n)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key672">capitalize</a>, <a href="../../../../index.html#key670">chop</a>, <a href="../../../../index.html#key673">common prefix</a>, <a href="../../../../index.html#key331">formatting</a>, <a href="../../../../index.html#key671">prefix</a>, <a href="../../../../index.html#key272">string</a>, <a href="../../../../index.html#key669">uncapitalize</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
</div></body></html>







|



|







|





161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
to the command, or the strings specified in the single <i class="arg">list</i>, and
returns it as the result of the command.</p>
<p>If no strings were specified the result is the empty string.  If only
one string was specified, the string itself is returned, as it is its
own longest common prefix.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>textutil</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>regexp(n), split(n), string(n)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key672">capitalize</a>, <a href="../../../../index.html#key671">chop</a>, <a href="../../../../index.html#key673">common prefix</a>, <a href="../../../../index.html#key331">formatting</a>, <a href="../../../../index.html#key670">prefix</a>, <a href="../../../../index.html#key270">string</a>, <a href="../../../../index.html#key669">uncapitalize</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/textutil/trim.html.

110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<p>textutil::trim - Procedures to trim strings</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<p>textutil::trim - Procedures to trim strings</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
have <i class="arg">prefix</i> at its beginning.</p></dd>
<dt><a name="5"><b class="cmd">::textutil::trim::trimEmptyHeading</b> <i class="arg">string</i></a></dt>
<dd><p>Looks for empty lines (including lines consisting of only whitespace)
at the beginning of the <i class="arg">string</i> and removes it. The modified
string is returned as the result of the command.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>textutil</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>regexp(n), split(n), string(n)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key671">prefix</a>, <a href="../../../../index.html#key306">regular expression</a>, <a href="../../../../index.html#key272">string</a>, <a href="../../../../index.html#key407">trimming</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
</div></body></html>







|



|







|





171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
have <i class="arg">prefix</i> at its beginning.</p></dd>
<dt><a name="5"><b class="cmd">::textutil::trim::trimEmptyHeading</b> <i class="arg">string</i></a></dt>
<dd><p>Looks for empty lines (including lines consisting of only whitespace)
at the beginning of the <i class="arg">string</i> and removes it. The modified
string is returned as the result of the command.</p></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>textutil</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>regexp(n), split(n), string(n)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key670">prefix</a>, <a href="../../../../index.html#key306">regular expression</a>, <a href="../../../../index.html#key270">string</a>, <a href="../../../../index.html#key407">trimming</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Text processing</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/tie/tie.html.

126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<ul>
<li class="subsection"><a href="#subsection3">DATA SOURCE OBJECTS</a></li>
<li class="subsection"><a href="#subsection4">REGISTERING A NEW DATA SOURCE CLASS</a></li>
<li class="subsection"><a href="#subsection5">DATA SOURCE CLASS</a></li>
<li class="subsection"><a href="#subsection6">DATA SOURCE OBJECT API</a></li>
</ul>
</li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<ul>
<li class="subsection"><a href="#subsection3">DATA SOURCE OBJECTS</a></li>
<li class="subsection"><a href="#subsection4">REGISTERING A NEW DATA SOURCE CLASS</a></li>
<li class="subsection"><a href="#subsection5">DATA SOURCE CLASS</a></li>
<li class="subsection"><a href="#subsection6">DATA SOURCE OBJECT API</a></li>
</ul>
</li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
        set a($idx) $val        ds setv   idx val
        unset a($idx)           ds unsetv idx
        $a($idx)                ds getv   idx
        -----------             -----------
</pre>
</div>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>tie</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key41">array</a>, <a href="../../../../index.html#key36">database</a>, <a href="../../../../index.html#key35">file</a>, <a href="../../../../index.html#key40">metakit</a>, <a href="../../../../index.html#key37">persistence</a>, <a href="../../../../index.html#key39">tie</a>, <a href="../../../../index.html#key38">untie</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004-2008 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
        set a($idx) $val        ds setv   idx val
        unset a($idx)           ds unsetv idx
        $a($idx)                ds getv   idx
        -----------             -----------
</pre>
</div>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>tie</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key41">array</a>, <a href="../../../../index.html#key38">database</a>, <a href="../../../../index.html#key35">file</a>, <a href="../../../../index.html#key40">metakit</a>, <a href="../../../../index.html#key37">persistence</a>, <a href="../../../../index.html#key39">tie</a>, <a href="../../../../index.html#key36">untie</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004-2008 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/tie/tie_std.html.

112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<p>tie - Array persistence, standard data sources</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<p>tie - Array persistence, standard data sources</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
packages providing the standard data sources of package <b class="package"><a href="tie.html">tie</a></b>,
as described in section <i class="term">STANDARD DATA SOURCE TYPES</i> of
<b class="package"><a href="tie.html">tie</a></b>'s documentation.</p>
<p>They are automatically loaded and registered by <b class="package"><a href="tie.html">tie</a></b> when it
itself is requested, and as such there is no need to request them on
their own, although it is possible to do so.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the packages it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>tie</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key41">array</a>, <a href="../../../../index.html#key36">database</a>, <a href="../../../../index.html#key35">file</a>, <a href="../../../../index.html#key40">metakit</a>, <a href="../../../../index.html#key37">persistence</a>, <a href="../../../../index.html#key39">tie</a>, <a href="../../../../index.html#key38">untie</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2008 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|
|


|




|








140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
packages providing the standard data sources of package <b class="package"><a href="tie.html">tie</a></b>,
as described in section <i class="term">STANDARD DATA SOURCE TYPES</i> of
<b class="package"><a href="tie.html">tie</a></b>'s documentation.</p>
<p>They are automatically loaded and registered by <b class="package"><a href="tie.html">tie</a></b> when it
itself is requested, and as such there is no need to request them on
their own, although it is possible to do so.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>tie</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key41">array</a>, <a href="../../../../index.html#key38">database</a>, <a href="../../../../index.html#key35">file</a>, <a href="../../../../index.html#key40">metakit</a>, <a href="../../../../index.html#key37">persistence</a>, <a href="../../../../index.html#key39">tie</a>, <a href="../../../../index.html#key36">untie</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2008 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/tiff/tiff.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">VARIABLES</a></li>
<li class="section"><a href="#section4">LIMITATIONS</a></li>
<li class="section"><a href="#section5">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">VARIABLES</a></li>
<li class="section"><a href="#section4">LIMITATIONS</a></li>
<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
<div id="section4" class="section"><h2><a name="section4">LIMITATIONS</a></h2>
<ol class="enumerated">
<li><p>Cannot write exif ifd</p></li>
<li><p>Reading limited to uncompressed 8 bit rgb and 8 bit palletized images</p></li>
<li><p>Writing limited to uncompressed 8 bit rgb</p></li>
</ol>
</div>
<div id="section5" class="section"><h2><a name="section5">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>tiff</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key133">image</a>, <a href="../../../../index.html#key134">tif</a>, <a href="../../../../index.html#key132">tiff</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>File formats</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005-2006, Aaron Faupell &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
<div id="section4" class="section"><h2><a name="section4">LIMITATIONS</a></h2>
<ol class="enumerated">
<li><p>Cannot write exif ifd</p></li>
<li><p>Reading limited to uncompressed 8 bit rgb and 8 bit palletized images</p></li>
<li><p>Writing limited to uncompressed 8 bit rgb</p></li>
</ol>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>tiff</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key134">image</a>, <a href="../../../../index.html#key133">tif</a>, <a href="../../../../index.html#key132">tiff</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>File formats</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2005-2006, Aaron Faupell &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/transfer/connect.html.

148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package provides objects holding enough information to enable
them to either actively connect to a counterpart, or to passively wait
for a connection from said counterpart.
I.e. any object created by this packages is always in one of two
complementary modes, called <i class="term"><a href="../../../../index.html#key592">active</a></i> (the object initiates the
connection) and <i class="term"><a href="../../../../index.html#key594">passive</a></i> (the object receives the connection).</p>
<p>Of the two objects in a connecting pair one has to be configured for
<i class="term"><a href="../../../../index.html#key592">active</a></i> mode, and the other then has to be configured for
<i class="term"><a href="../../../../index.html#key594">passive</a></i> mode. This establishes which of the two partners
connects to whom (the <i class="term"><a href="../../../../index.html#key592">active</a></i> to the other), or, who is waiting
on whom (the <i class="term"><a href="../../../../index.html#key594">passive</a></i> on the other).
Note that this is completely independent of the direction of any data
transmission using the connection after it has been established.
An active object can, after establishing the connection, either
transmit or receive data. Equivalently the passive object can do the
same after the waiting for its partner has ended.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Package commands</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">transfer::connect</b> <i class="arg">objectName</i> <span class="opt">?<i class="arg">options</i>...?</span></a></dt>
<dd><p>This command creates a new connection object with an associated Tcl
command whose name is <i class="arg">objectName</i>.
This <i class="term"><a href="../../../../index.html#key238">object</a></i> command is explained in full detail in the sections
<span class="sectref"><a href="#subsection2">Object command</a></span> and <span class="sectref"><a href="#subsection3">Object methods</a></span>. The set of
supported <i class="arg">options</i> is explained in section <span class="sectref"><a href="#subsection4">Options</a></span>.</p>
<p>The object command will be created under the current namespace if the
<i class="arg">objectName</i> is not fully qualified, and in the specified
namespace otherwise.
The fully qualified name of the object command is returned as the
result of the command.</p></dd>







|


|

|













|







148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package provides objects holding enough information to enable
them to either actively connect to a counterpart, or to passively wait
for a connection from said counterpart.
I.e. any object created by this packages is always in one of two
complementary modes, called <i class="term"><a href="../../../../index.html#key593">active</a></i> (the object initiates the
connection) and <i class="term"><a href="../../../../index.html#key594">passive</a></i> (the object receives the connection).</p>
<p>Of the two objects in a connecting pair one has to be configured for
<i class="term"><a href="../../../../index.html#key593">active</a></i> mode, and the other then has to be configured for
<i class="term"><a href="../../../../index.html#key594">passive</a></i> mode. This establishes which of the two partners
connects to whom (the <i class="term"><a href="../../../../index.html#key593">active</a></i> to the other), or, who is waiting
on whom (the <i class="term"><a href="../../../../index.html#key594">passive</a></i> on the other).
Note that this is completely independent of the direction of any data
transmission using the connection after it has been established.
An active object can, after establishing the connection, either
transmit or receive data. Equivalently the passive object can do the
same after the waiting for its partner has ended.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Package commands</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">transfer::connect</b> <i class="arg">objectName</i> <span class="opt">?<i class="arg">options</i>...?</span></a></dt>
<dd><p>This command creates a new connection object with an associated Tcl
command whose name is <i class="arg">objectName</i>.
This <i class="term"><a href="../../../../index.html#key237">object</a></i> command is explained in full detail in the sections
<span class="sectref"><a href="#subsection2">Object command</a></span> and <span class="sectref"><a href="#subsection3">Object methods</a></span>. The set of
supported <i class="arg">options</i> is explained in section <span class="sectref"><a href="#subsection4">Options</a></span>.</p>
<p>The object command will be created under the current namespace if the
<i class="arg">objectName</i> is not fully qualified, and in the specified
namespace otherwise.
The fully qualified name of the object command is returned as the
result of the command.</p></dd>
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
See section <span class="sectref"><a href="#subsection3">Object methods</a></span> for the detailed
specifications.</p></dd>
</dl>
</div>
<div id="subsection3" class="subsection"><h3><a name="subsection3">Object methods</a></h3>
<dl class="definitions">
<dt><a name="3"><i class="arg">objectName</i> <b class="method">destroy</b></a></dt>
<dd><p>This method destroys the object. 
This is safe to do for an <i class="term"><a href="../../../../index.html#key592">active</a></i> object when a connection has
been started, as the completion callback is synchronous.
For a <i class="term"><a href="../../../../index.html#key594">passive</a></i> object currently waiting for its partner to
establish the connection however this is not safe and will cause
errors later on, when the connection setup completes and tries to
access the now missing data structures of the destroyed object.</p></dd>
<dt><a name="4"><i class="arg">objectName</i> <b class="method">connect</b> <i class="arg">command</i></a></dt>
<dd><p>This method starts the connection setup per the configuration of the
object. When the connection is established the callback <i class="arg">command</i>
will be invoked with one additional argument, the channel handle of
the socket over which data can be transfered.</p>
<p>The detailed behaviour of the method depends on the configured
mode.</p>
<dl class="definitions">
<dt><i class="term"><a href="../../../../index.html#key592">active</a></i></dt>
<dd><p>The connection setup is done synchronously. The object waits until the
connection is established. The method returns the empty string as its
result.</p></dd>
<dt><i class="term"><a href="../../../../index.html#key594">passive</a></i></dt>
<dd><p>The connection setup is done asynchronously. The method returns
immediately after a listening socket has been set up. The connection
will be established in the background.







|
|













|







191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
See section <span class="sectref"><a href="#subsection3">Object methods</a></span> for the detailed
specifications.</p></dd>
</dl>
</div>
<div id="subsection3" class="subsection"><h3><a name="subsection3">Object methods</a></h3>
<dl class="definitions">
<dt><a name="3"><i class="arg">objectName</i> <b class="method">destroy</b></a></dt>
<dd><p>This method destroys the object.
This is safe to do for an <i class="term"><a href="../../../../index.html#key593">active</a></i> object when a connection has
been started, as the completion callback is synchronous.
For a <i class="term"><a href="../../../../index.html#key594">passive</a></i> object currently waiting for its partner to
establish the connection however this is not safe and will cause
errors later on, when the connection setup completes and tries to
access the now missing data structures of the destroyed object.</p></dd>
<dt><a name="4"><i class="arg">objectName</i> <b class="method">connect</b> <i class="arg">command</i></a></dt>
<dd><p>This method starts the connection setup per the configuration of the
object. When the connection is established the callback <i class="arg">command</i>
will be invoked with one additional argument, the channel handle of
the socket over which data can be transfered.</p>
<p>The detailed behaviour of the method depends on the configured
mode.</p>
<dl class="definitions">
<dt><i class="term"><a href="../../../../index.html#key593">active</a></i></dt>
<dd><p>The connection setup is done synchronously. The object waits until the
connection is established. The method returns the empty string as its
result.</p></dd>
<dt><i class="term"><a href="../../../../index.html#key594">passive</a></i></dt>
<dd><p>The connection setup is done asynchronously. The method returns
immediately after a listening socket has been set up. The connection
will be established in the background.
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
<dd><p>In this mode the option <b class="option">-host</b> has no relevance and is ignored
should it be configured.
The only option the object needs is <b class="option">-port</b>, and it specifies
the TCP port on which the listening socket is opened to await the
connection from the partner.</p></dd>
</dl></dd>
<dt><b class="option">-host</b> <i class="arg">hostname-or-ipaddr</i></dt>
<dd><p>This option specifies the host to connect to in <i class="term"><a href="../../../../index.html#key592">active</a></i> mode,
either by name or ip-address. An object configured for <i class="term"><a href="../../../../index.html#key594">passive</a></i>
mode ignores this option.</p></dd>
<dt><b class="option">-port</b> <i class="arg">int</i></dt>
<dd><p>For <i class="term"><a href="../../../../index.html#key592">active</a></i> mode this option specifies the port the object is
expected to connect to. For <i class="term"><a href="../../../../index.html#key594">passive</a></i> mode however it is the port
where the object creates the listening socket waiting for a
connection. It defaults to <b class="const">0</b>, which allows the OS to choose
the actual port to listen on.</p></dd>
<dt><b class="option">-socketcmd</b> <i class="arg">command</i></dt>
<dd><p>This option allows the user to specify which command to use to open a
socket. The default is to use the builtin <b class="cmd">::socket</b>. Any







|



|







251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
<dd><p>In this mode the option <b class="option">-host</b> has no relevance and is ignored
should it be configured.
The only option the object needs is <b class="option">-port</b>, and it specifies
the TCP port on which the listening socket is opened to await the
connection from the partner.</p></dd>
</dl></dd>
<dt><b class="option">-host</b> <i class="arg">hostname-or-ipaddr</i></dt>
<dd><p>This option specifies the host to connect to in <i class="term"><a href="../../../../index.html#key593">active</a></i> mode,
either by name or ip-address. An object configured for <i class="term"><a href="../../../../index.html#key594">passive</a></i>
mode ignores this option.</p></dd>
<dt><b class="option">-port</b> <i class="arg">int</i></dt>
<dd><p>For <i class="term"><a href="../../../../index.html#key593">active</a></i> mode this option specifies the port the object is
expected to connect to. For <i class="term"><a href="../../../../index.html#key594">passive</a></i> mode however it is the port
where the object creates the listening socket waiting for a
connection. It defaults to <b class="const">0</b>, which allows the OS to choose
the actual port to listen on.</p></dd>
<dt><b class="option">-socketcmd</b> <i class="arg">command</i></dt>
<dd><p>This option allows the user to specify which command to use to open a
socket. The default is to use the builtin <b class="cmd">::socket</b>. Any
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
    ...
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>transfer</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key592">active</a>, <a href="../../../../index.html#key82">channel</a>, <a href="../../../../index.html#key593">connection</a>, <a href="../../../../index.html#key594">passive</a>, <a href="../../../../index.html#key339">secure</a>, <a href="../../../../index.html#key342">ssl</a>, <a href="../../../../index.html#key311">tls</a>, <a href="../../../../index.html#key83">transfer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Transfer module</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006-2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|




|








298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
    ...
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>transfer</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key593">active</a>, <a href="../../../../index.html#key83">channel</a>, <a href="../../../../index.html#key592">connection</a>, <a href="../../../../index.html#key594">passive</a>, <a href="../../../../index.html#key339">secure</a>, <a href="../../../../index.html#key342">ssl</a>, <a href="../../../../index.html#key311">tls</a>, <a href="../../../../index.html#key82">transfer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Transfer module</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006-2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/transfer/copyops.html.

237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
</dl></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>transfer</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key82">channel</a>, <a href="../../../../index.html#key84">copy</a>, <a href="../../../../index.html#key83">transfer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Transfer module</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006-2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>







|




|







237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
</dl></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>transfer</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key83">channel</a>, <a href="../../../../index.html#key84">copy</a>, <a href="../../../../index.html#key82">transfer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Transfer module</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006-2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>

Changes to embedded/www/tcllib/files/modules/transfer/ddest.html.

154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
information from a channel into the described destination.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">transfer::data::destination</b> <i class="arg">objectName</i> <span class="opt">?<i class="arg">options</i>...?</span></a></dt>
<dd><p>This command creates a new data destination object with an associated
Tcl command whose name is <i class="arg">objectName</i>.
This <i class="term"><a href="../../../../index.html#key238">object</a></i> command is explained in full detail in the sections
<span class="sectref"><a href="#subsection1">Object command</a></span> and <span class="sectref"><a href="#subsection2">Object methods</a></span>. The set of
supported <i class="arg">options</i> is explained in section <span class="sectref"><a href="#subsection3">Options</a></span>.</p>
<p>The object command will be created under the current namespace if the
<i class="arg">objectName</i> is not fully qualified, and in the specified
namespace otherwise.
The fully qualified name of the object command is returned as the
result of the command.</p></dd>







|







154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
information from a channel into the described destination.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">transfer::data::destination</b> <i class="arg">objectName</i> <span class="opt">?<i class="arg">options</i>...?</span></a></dt>
<dd><p>This command creates a new data destination object with an associated
Tcl command whose name is <i class="arg">objectName</i>.
This <i class="term"><a href="../../../../index.html#key237">object</a></i> command is explained in full detail in the sections
<span class="sectref"><a href="#subsection1">Object command</a></span> and <span class="sectref"><a href="#subsection2">Object methods</a></span>. The set of
supported <i class="arg">options</i> is explained in section <span class="sectref"><a href="#subsection3">Options</a></span>.</p>
<p>The object command will be created under the current namespace if the
<i class="arg">objectName</i> is not fully qualified, and in the specified
namespace otherwise.
The fully qualified name of the object command is returned as the
result of the command.</p></dd>
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>transfer</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key82">channel</a>, <a href="../../../../index.html#key84">copy</a>, <a href="../../../../index.html#key81">data destination</a>, <a href="../../../../index.html#key83">transfer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Transfer module</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006-2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|




|








237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>transfer</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key83">channel</a>, <a href="../../../../index.html#key84">copy</a>, <a href="../../../../index.html#key81">data destination</a>, <a href="../../../../index.html#key82">transfer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Transfer module</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006-2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/transfer/dsource.html.

159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Package commands</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">transfer::data::source</b> <i class="arg">objectName</i> <span class="opt">?<i class="arg">options</i>...?</span></a></dt>
<dd><p>This command creates a new data source object with an associated Tcl
command whose name is <i class="arg">objectName</i>.
This <i class="term"><a href="../../../../index.html#key238">object</a></i> command is explained in full detail in the sections
<span class="sectref"><a href="#subsection2">Object command</a></span> and <span class="sectref"><a href="#subsection3">Object methods</a></span>. The set of
supported <i class="arg">options</i> is explained in section <span class="sectref"><a href="#subsection4">Options</a></span>.</p>
<p>The object command will be created under the current namespace if the
<i class="arg">objectName</i> is not fully qualified, and in the specified
namespace otherwise.
The fully qualified name of the object command is returned as the
result of the command.</p></dd>







|







159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Package commands</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">transfer::data::source</b> <i class="arg">objectName</i> <span class="opt">?<i class="arg">options</i>...?</span></a></dt>
<dd><p>This command creates a new data source object with an associated Tcl
command whose name is <i class="arg">objectName</i>.
This <i class="term"><a href="../../../../index.html#key237">object</a></i> command is explained in full detail in the sections
<span class="sectref"><a href="#subsection2">Object command</a></span> and <span class="sectref"><a href="#subsection3">Object methods</a></span>. The set of
supported <i class="arg">options</i> is explained in section <span class="sectref"><a href="#subsection4">Options</a></span>.</p>
<p>The object command will be created under the current namespace if the
<i class="arg">objectName</i> is not fully qualified, and in the specified
namespace otherwise.
The fully qualified name of the object command is returned as the
result of the command.</p></dd>
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>transfer</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key82">channel</a>, <a href="../../../../index.html#key84">copy</a>, <a href="../../../../index.html#key354">data source</a>, <a href="../../../../index.html#key83">transfer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Transfer module</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006-2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|




|








269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>transfer</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key83">channel</a>, <a href="../../../../index.html#key84">copy</a>, <a href="../../../../index.html#key354">data source</a>, <a href="../../../../index.html#key82">transfer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Transfer module</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006-2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/transfer/receiver.html.

162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Package commands</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">transfer::receiver</b> <i class="arg">object</i> <span class="opt">?<i class="arg">options</i>...?</span></a></dt>
<dd><p>This command creates a new receiver object with an associated Tcl
command whose name is <i class="arg">objectName</i>.
This <i class="term"><a href="../../../../index.html#key238">object</a></i> command is explained in full detail in the sections
<span class="sectref"><a href="#subsection2">Object command</a></span> and <span class="sectref"><a href="#subsection3">Object methods</a></span>. The set of
supported <i class="arg">options</i> is explained in section <span class="sectref"><a href="#subsection4">Options</a></span>.</p>
<p>The object command will be created under the current namespace if the
<i class="arg">objectName</i> is not fully qualified, and in the specified
namespace otherwise.
The fully qualified name of the object command is returned as the
result of the command.</p></dd>







|







162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Package commands</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">transfer::receiver</b> <i class="arg">object</i> <span class="opt">?<i class="arg">options</i>...?</span></a></dt>
<dd><p>This command creates a new receiver object with an associated Tcl
command whose name is <i class="arg">objectName</i>.
This <i class="term"><a href="../../../../index.html#key237">object</a></i> command is explained in full detail in the sections
<span class="sectref"><a href="#subsection2">Object command</a></span> and <span class="sectref"><a href="#subsection3">Object methods</a></span>. The set of
supported <i class="arg">options</i> is explained in section <span class="sectref"><a href="#subsection4">Options</a></span>.</p>
<p>The object command will be created under the current namespace if the
<i class="arg">objectName</i> is not fully qualified, and in the specified
namespace otherwise.
The fully qualified name of the object command is returned as the
result of the command.</p></dd>
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
<em>Note</em> however that the signature of the command prefix specified
for the <b class="option">-command</b> callback differs from the signature for the
same option of the receiver object.
This callback is only given the number of bytes and transfered, and
possibly an error message. No reference to the internally used
receiver object is made.</p>
<p>The result returned by the command is the empty string
if it was set to make an <i class="term"><a href="../../../../index.html#key592">active</a></i> connection, and the port the
internal receiver object is listening on otherwise, i.e when it is
configured to connect <i class="term"><a href="../../../../index.html#key594">passive</a></i>ly.
See also the package <b class="package"><a href="connect.html">transfer::connect</a></b> and the description
of the method <b class="method">connect</b> for where this behaviour comes from.</p></dd>
<dt><a name="3"><b class="cmd">transfer::receiver</b> <b class="method">stream file</b> <i class="arg">path</i> <i class="arg">host</i> <i class="arg">port</i> <span class="opt">?<i class="arg">arg</i>...?</span></a></dt>
<dd><p>This method is like <b class="method">stream channel</b>, except that the
received data is written to the file <i class="arg">path</i>, replacing any prior







|







193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
<em>Note</em> however that the signature of the command prefix specified
for the <b class="option">-command</b> callback differs from the signature for the
same option of the receiver object.
This callback is only given the number of bytes and transfered, and
possibly an error message. No reference to the internally used
receiver object is made.</p>
<p>The result returned by the command is the empty string
if it was set to make an <i class="term"><a href="../../../../index.html#key593">active</a></i> connection, and the port the
internal receiver object is listening on otherwise, i.e when it is
configured to connect <i class="term"><a href="../../../../index.html#key594">passive</a></i>ly.
See also the package <b class="package"><a href="connect.html">transfer::connect</a></b> and the description
of the method <b class="method">connect</b> for where this behaviour comes from.</p></dd>
<dt><a name="3"><b class="cmd">transfer::receiver</b> <b class="method">stream file</b> <i class="arg">path</i> <i class="arg">host</i> <i class="arg">port</i> <span class="opt">?<i class="arg">arg</i>...?</span></a></dt>
<dd><p>This method is like <b class="method">stream channel</b>, except that the
received data is written to the file <i class="arg">path</i>, replacing any prior
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
The method will throw an error if a reception is already/still in
progress.
I.e. it is not possible to run two receptions in parallel, only in
sequence.
Errors will also be thrown if the configuration of the data
destination is invalid, or if no completion callback was specified.</p>
<p>The result returned by the method is the empty string
for an object configured to make an <i class="term"><a href="../../../../index.html#key592">active</a></i> connection, and the port the
 object is listening on otherwise, i.e when it is
configured to connect <i class="term"><a href="../../../../index.html#key594">passive</a></i>ly.
See also the package <b class="package"><a href="connect.html">transfer::connect</a></b> and the description
of the method <b class="method">connect</b> for where this behaviour comes from.</p></dd>
<dt><a name="7"><i class="arg">objectName</i> <b class="method">busy</b></a></dt>
<dd><p>This method returns a boolean value telling us whether a reception
is in progress (<b class="const">True</b>), or not (<b class="const">False</b>).</p></dd>







|







233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
The method will throw an error if a reception is already/still in
progress.
I.e. it is not possible to run two receptions in parallel, only in
sequence.
Errors will also be thrown if the configuration of the data
destination is invalid, or if no completion callback was specified.</p>
<p>The result returned by the method is the empty string
for an object configured to make an <i class="term"><a href="../../../../index.html#key593">active</a></i> connection, and the port the
 object is listening on otherwise, i.e when it is
configured to connect <i class="term"><a href="../../../../index.html#key594">passive</a></i>ly.
See also the package <b class="package"><a href="connect.html">transfer::connect</a></b> and the description
of the method <b class="method">connect</b> for where this behaviour comes from.</p></dd>
<dt><a name="7"><i class="arg">objectName</i> <b class="method">busy</b></a></dt>
<dd><p>This method returns a boolean value telling us whether a reception
is in progress (<b class="const">True</b>), or not (<b class="const">False</b>).</p></dd>
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
<dd><p>In this mode the option <b class="option">-host</b> has no relevance and is ignored
should it be configured.
The only option the object needs is <b class="option">-port</b>, and it specifies
the TCP port on which the listening socket is opened to await the
connection from the partner.</p></dd>
</dl></dd>
<dt><b class="option">-host</b> <i class="arg">hostname-or-ipaddr</i></dt>
<dd><p>This option specifies the host to connect to in <i class="term"><a href="../../../../index.html#key592">active</a></i> mode,
either by name or ip-address. An object configured for <i class="term"><a href="../../../../index.html#key594">passive</a></i>
mode ignores this option.</p></dd>
<dt><b class="option">-port</b> <i class="arg">int</i></dt>
<dd><p>For <i class="term"><a href="../../../../index.html#key592">active</a></i> mode this option specifies the port the object is
expected to connect to. For <i class="term"><a href="../../../../index.html#key594">passive</a></i> mode however it is the port
where the object creates the listening socket waiting for a
connection. It defaults to <b class="const">0</b>, which allows the OS to choose
the actual port to listen on.</p></dd>
<dt><b class="option">-socketcmd</b> <i class="arg">command</i></dt>
<dd><p>This option allows the user to specify which command to use to open a
socket. The default is to use the builtin <b class="cmd">::socket</b>. Any







|



|







272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
<dd><p>In this mode the option <b class="option">-host</b> has no relevance and is ignored
should it be configured.
The only option the object needs is <b class="option">-port</b>, and it specifies
the TCP port on which the listening socket is opened to await the
connection from the partner.</p></dd>
</dl></dd>
<dt><b class="option">-host</b> <i class="arg">hostname-or-ipaddr</i></dt>
<dd><p>This option specifies the host to connect to in <i class="term"><a href="../../../../index.html#key593">active</a></i> mode,
either by name or ip-address. An object configured for <i class="term"><a href="../../../../index.html#key594">passive</a></i>
mode ignores this option.</p></dd>
<dt><b class="option">-port</b> <i class="arg">int</i></dt>
<dd><p>For <i class="term"><a href="../../../../index.html#key593">active</a></i> mode this option specifies the port the object is
expected to connect to. For <i class="term"><a href="../../../../index.html#key594">passive</a></i> mode however it is the port
where the object creates the listening socket waiting for a
connection. It defaults to <b class="const">0</b>, which allows the OS to choose
the actual port to listen on.</p></dd>
<dt><b class="option">-socketcmd</b> <i class="arg">command</i></dt>
<dd><p>This option allows the user to specify which command to use to open a
socket. The default is to use the builtin <b class="cmd">::socket</b>. Any
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
    ...
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>transfer</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key82">channel</a>, <a href="../../../../index.html#key84">copy</a>, <a href="../../../../index.html#key81">data destination</a>, <a href="../../../../index.html#key106">receiver</a>, <a href="../../../../index.html#key339">secure</a>, <a href="../../../../index.html#key342">ssl</a>, <a href="../../../../index.html#key311">tls</a>, <a href="../../../../index.html#key83">transfer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Transfer module</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|




|








337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
    ...
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>transfer</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key83">channel</a>, <a href="../../../../index.html#key84">copy</a>, <a href="../../../../index.html#key81">data destination</a>, <a href="../../../../index.html#key105">receiver</a>, <a href="../../../../index.html#key339">secure</a>, <a href="../../../../index.html#key342">ssl</a>, <a href="../../../../index.html#key311">tls</a>, <a href="../../../../index.html#key82">transfer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Transfer module</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/transfer/tqueue.html.

191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Package commands</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">transfer::copy::queue</b> <i class="arg">objectName</i> <i class="arg">outchannel</i> <span class="opt">?<i class="arg">options</i>...?</span></a></dt>
<dd><p>This command creates a new queue object for the management of the
channel <i class="arg">outchannel</i>, with an associated Tcl command whose name is
<i class="arg">objectName</i>.
This <i class="term"><a href="../../../../index.html#key238">object</a></i> command is explained in full detail in the sections
<span class="sectref"><a href="#subsection2">Object command</a></span> and <span class="sectref"><a href="#subsection3">Object methods</a></span>. The set of
supported <i class="arg">options</i> is explained in section <span class="sectref"><a href="#section3">Options</a></span>.</p>
<p>The object command will be created under the current namespace if the
<i class="arg">objectName</i> is not fully qualified, and in the specified
namespace otherwise.
The fully qualified name of the object command is returned as the
result of the command.</p></dd>







|







191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Package commands</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">transfer::copy::queue</b> <i class="arg">objectName</i> <i class="arg">outchannel</i> <span class="opt">?<i class="arg">options</i>...?</span></a></dt>
<dd><p>This command creates a new queue object for the management of the
channel <i class="arg">outchannel</i>, with an associated Tcl command whose name is
<i class="arg">objectName</i>.
This <i class="term"><a href="../../../../index.html#key237">object</a></i> command is explained in full detail in the sections
<span class="sectref"><a href="#subsection2">Object command</a></span> and <span class="sectref"><a href="#subsection3">Object methods</a></span>. The set of
supported <i class="arg">options</i> is explained in section <span class="sectref"><a href="#section3">Options</a></span>.</p>
<p>The object command will be created under the current namespace if the
<i class="arg">objectName</i> is not fully qualified, and in the specified
namespace otherwise.
The fully qualified name of the object command is returned as the
result of the command.</p></dd>
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
they may come back in a different order than the requests from the
client, and releases them to the actual queue in the proper order.</p>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>transfer</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key82">channel</a>, <a href="../../../../index.html#key84">copy</a>, <a href="../../../../index.html#key54">queue</a>, <a href="../../../../index.html#key83">transfer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Transfer module</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|




|








258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
they may come back in a different order than the requests from the
client, and releases them to the actual queue in the proper order.</p>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>transfer</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key83">channel</a>, <a href="../../../../index.html#key84">copy</a>, <a href="../../../../index.html#key54">queue</a>, <a href="../../../../index.html#key82">transfer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Transfer module</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/transfer/transmitter.html.

162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Package commands</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">transfer::transmitter</b> <i class="arg">objectName</i> <span class="opt">?<i class="arg">options</i>...?</span></a></dt>
<dd><p>This command creates a new transmitter object with an associated Tcl
command whose name is <i class="arg">objectName</i>.
This <i class="term"><a href="../../../../index.html#key238">object</a></i> command is explained in full detail in the sections
<span class="sectref"><a href="#subsection2">Object command</a></span> and <span class="sectref"><a href="#subsection3">Object methods</a></span>. The set of
supported <i class="arg">options</i> is explained in section <span class="sectref"><a href="#subsection4">Options</a></span>.</p>
<p>The object command will be created under the current namespace if the
<i class="arg">objectName</i> is not fully qualified, and in the specified
namespace otherwise.
The fully qualified name of the object command is returned as the
result of the command.</p></dd>







|







162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Package commands</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">transfer::transmitter</b> <i class="arg">objectName</i> <span class="opt">?<i class="arg">options</i>...?</span></a></dt>
<dd><p>This command creates a new transmitter object with an associated Tcl
command whose name is <i class="arg">objectName</i>.
This <i class="term"><a href="../../../../index.html#key237">object</a></i> command is explained in full detail in the sections
<span class="sectref"><a href="#subsection2">Object command</a></span> and <span class="sectref"><a href="#subsection3">Object methods</a></span>. The set of
supported <i class="arg">options</i> is explained in section <span class="sectref"><a href="#subsection4">Options</a></span>.</p>
<p>The object command will be created under the current namespace if the
<i class="arg">objectName</i> is not fully qualified, and in the specified
namespace otherwise.
The fully qualified name of the object command is returned as the
result of the command.</p></dd>
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
<em>Note</em> however that the signature of the command prefix specified
for the <b class="option">-command</b> callback differs from the signature for the
same option of the transmitter object.
This callback is only given the number of bytes and transfered, and
possibly an error message. No reference to the internally used
transmitter object is made.</p>
<p>The result returned by the command is the empty string
if it was set to make an <i class="term"><a href="../../../../index.html#key592">active</a></i> connection, and the port the
internal transmitter object is listening on otherwise, i.e when it is
configured to connect <i class="term"><a href="../../../../index.html#key594">passive</a></i>ly.
See also the package <b class="package"><a href="connect.html">transfer::connect</a></b> and the description
of the method <b class="method">connect</b> for where this behaviour comes from.</p></dd>
<dt><a name="3"><b class="cmd">transfer::transmitter</b> <b class="method">stream file</b> <i class="arg">path</i> <i class="arg">host</i> <i class="arg">port</i> <span class="opt">?<i class="arg">arg</i>...?</span></a></dt>
<dd><p>This method is like <b class="method">stream channel</b>, except that the data
contained in the file <i class="arg">path</i> is transfered.</p></dd>







|







191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
<em>Note</em> however that the signature of the command prefix specified
for the <b class="option">-command</b> callback differs from the signature for the
same option of the transmitter object.
This callback is only given the number of bytes and transfered, and
possibly an error message. No reference to the internally used
transmitter object is made.</p>
<p>The result returned by the command is the empty string
if it was set to make an <i class="term"><a href="../../../../index.html#key593">active</a></i> connection, and the port the
internal transmitter object is listening on otherwise, i.e when it is
configured to connect <i class="term"><a href="../../../../index.html#key594">passive</a></i>ly.
See also the package <b class="package"><a href="connect.html">transfer::connect</a></b> and the description
of the method <b class="method">connect</b> for where this behaviour comes from.</p></dd>
<dt><a name="3"><b class="cmd">transfer::transmitter</b> <b class="method">stream file</b> <i class="arg">path</i> <i class="arg">host</i> <i class="arg">port</i> <span class="opt">?<i class="arg">arg</i>...?</span></a></dt>
<dd><p>This method is like <b class="method">stream channel</b>, except that the data
contained in the file <i class="arg">path</i> is transfered.</p></dd>
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
progress.
I.e. it is not possible to run two transmissions in parallel on a
single object, only in sequence. Multiple transmitter objects are
needed to manage parallel transfers, one per transmission.
Errors will also be thrown if the configuration of the data source is
invalid, or if no completion callback was specified.</p>
<p>The result returned by the method is the empty string
for an object configured to make an <i class="term"><a href="../../../../index.html#key592">active</a></i> connection, and the port the
 object is listening on otherwise, i.e when it is
configured to connect <i class="term"><a href="../../../../index.html#key594">passive</a></i>ly.
See also the package <b class="package"><a href="connect.html">transfer::connect</a></b> and the description
of the method <b class="method">connect</b> for where this behaviour comes from.</p></dd>
<dt><a name="7"><i class="arg">objectName</i> <b class="method">busy</b></a></dt>
<dd><p>This method returns a boolean value telling us whether a transmission
is in progress (<b class="const">True</b>), or not (<b class="const">False</b>).</p></dd>







|







230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
progress.
I.e. it is not possible to run two transmissions in parallel on a
single object, only in sequence. Multiple transmitter objects are
needed to manage parallel transfers, one per transmission.
Errors will also be thrown if the configuration of the data source is
invalid, or if no completion callback was specified.</p>
<p>The result returned by the method is the empty string
for an object configured to make an <i class="term"><a href="../../../../index.html#key593">active</a></i> connection, and the port the
 object is listening on otherwise, i.e when it is
configured to connect <i class="term"><a href="../../../../index.html#key594">passive</a></i>ly.
See also the package <b class="package"><a href="connect.html">transfer::connect</a></b> and the description
of the method <b class="method">connect</b> for where this behaviour comes from.</p></dd>
<dt><a name="7"><i class="arg">objectName</i> <b class="method">busy</b></a></dt>
<dd><p>This method returns a boolean value telling us whether a transmission
is in progress (<b class="const">True</b>), or not (<b class="const">False</b>).</p></dd>
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
<dd><p>In this mode the option <b class="option">-host</b> has no relevance and is ignored
should it be configured.
The only option the object needs is <b class="option">-port</b>, and it specifies
the TCP port on which the listening socket is opened to await the
connection from the partner.</p></dd>
</dl></dd>
<dt><b class="option">-host</b> <i class="arg">hostname-or-ipaddr</i></dt>
<dd><p>This option specifies the host to connect to in <i class="term"><a href="../../../../index.html#key592">active</a></i> mode,
either by name or ip-address. An object configured for <i class="term"><a href="../../../../index.html#key594">passive</a></i>
mode ignores this option.</p></dd>
<dt><b class="option">-port</b> <i class="arg">int</i></dt>
<dd><p>For <i class="term"><a href="../../../../index.html#key592">active</a></i> mode this option specifies the port the object is
expected to connect to. For <i class="term"><a href="../../../../index.html#key594">passive</a></i> mode however it is the port
where the object creates the listening socket waiting for a
connection. It defaults to <b class="const">0</b>, which allows the OS to choose
the actual port to listen on.</p></dd>
<dt><b class="option">-socketcmd</b> <i class="arg">command</i></dt>
<dd><p>This option allows the user to specify which command to use to open a
socket. The default is to use the builtin <b class="cmd">::socket</b>. Any







|



|







271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
<dd><p>In this mode the option <b class="option">-host</b> has no relevance and is ignored
should it be configured.
The only option the object needs is <b class="option">-port</b>, and it specifies
the TCP port on which the listening socket is opened to await the
connection from the partner.</p></dd>
</dl></dd>
<dt><b class="option">-host</b> <i class="arg">hostname-or-ipaddr</i></dt>
<dd><p>This option specifies the host to connect to in <i class="term"><a href="../../../../index.html#key593">active</a></i> mode,
either by name or ip-address. An object configured for <i class="term"><a href="../../../../index.html#key594">passive</a></i>
mode ignores this option.</p></dd>
<dt><b class="option">-port</b> <i class="arg">int</i></dt>
<dd><p>For <i class="term"><a href="../../../../index.html#key593">active</a></i> mode this option specifies the port the object is
expected to connect to. For <i class="term"><a href="../../../../index.html#key594">passive</a></i> mode however it is the port
where the object creates the listening socket waiting for a
connection. It defaults to <b class="const">0</b>, which allows the OS to choose
the actual port to listen on.</p></dd>
<dt><b class="option">-socketcmd</b> <i class="arg">command</i></dt>
<dd><p>This option allows the user to specify which command to use to open a
socket. The default is to use the builtin <b class="cmd">::socket</b>. Any
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
    ...
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>transfer</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key82">channel</a>, <a href="../../../../index.html#key84">copy</a>, <a href="../../../../index.html#key354">data source</a>, <a href="../../../../index.html#key339">secure</a>, <a href="../../../../index.html#key342">ssl</a>, <a href="../../../../index.html#key311">tls</a>, <a href="../../../../index.html#key83">transfer</a>, <a href="../../../../index.html#key699">transmitter</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Transfer module</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006-2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|




|








342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
    ...
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>transfer</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key83">channel</a>, <a href="../../../../index.html#key84">copy</a>, <a href="../../../../index.html#key354">data source</a>, <a href="../../../../index.html#key339">secure</a>, <a href="../../../../index.html#key342">ssl</a>, <a href="../../../../index.html#key311">tls</a>, <a href="../../../../index.html#key82">transfer</a>, <a href="../../../../index.html#key699">transmitter</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Transfer module</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2006-2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/treeql/treeql.html.

134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
<li class="subsection"><a href="#subsection9">Node Set Operators</a></li>
<li class="subsection"><a href="#subsection10">Node Set Iterators</a></li>
<li class="subsection"><a href="#subsection11">Typed node support</a></li>
</ul>
</li>
<li class="section"><a href="#section4">Examples</a></li>
<li class="section"><a href="#section5">References</a></li>
<li class="section"><a href="#section6">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
<li class="subsection"><a href="#subsection9">Node Set Operators</a></li>
<li class="subsection"><a href="#subsection10">Node Set Iterators</a></li>
<li class="subsection"><a href="#subsection11">Typed node support</a></li>
</ul>
</li>
<li class="section"><a href="#section4">Examples</a></li>
<li class="section"><a href="#section5">References</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
<dt><b class="method">string</b> <i class="arg">op</i> <i class="arg">attr</i></dt>
<dd><p>Applies the string operator <i class="arg">op</i> to the attribute named
<i class="arg">attr</i>, for all nodes <b class="variable">N</b> in the node set, collects the
results of that application and places them into the node set.</p>
<p>The operator will fail if a node does not have an attribute named
<i class="arg">attr</i>.</p>
<p>The argument <i class="arg">op</i> is interpreted as partial argument list for the
builtin command <b class="cmd"><a href="../../../../index.html#key272">string</a></b>.  Its first word has to be any of the
sub-commands understood by <b class="cmd"><a href="../../../../index.html#key272">string</a></b>.  This has to be followed by
all arguments required for the subcommand, except the last.  that last
argument is supplied by the attribute value.</p></dd>
<dt><b class="method">get</b> <i class="arg">pattern</i></dt>
<dd><p>For all nodes <b class="variable">N</b> in the node set it determines all their
attributes with names matching the glob <i class="arg">pattern</i>, then the values
of these attributes, at last it replaces the node set with the list of
these attribute values.</p></dd>







|
|







497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
<dt><b class="method">string</b> <i class="arg">op</i> <i class="arg">attr</i></dt>
<dd><p>Applies the string operator <i class="arg">op</i> to the attribute named
<i class="arg">attr</i>, for all nodes <b class="variable">N</b> in the node set, collects the
results of that application and places them into the node set.</p>
<p>The operator will fail if a node does not have an attribute named
<i class="arg">attr</i>.</p>
<p>The argument <i class="arg">op</i> is interpreted as partial argument list for the
builtin command <b class="cmd"><a href="../../../../index.html#key270">string</a></b>.  Its first word has to be any of the
sub-commands understood by <b class="cmd"><a href="../../../../index.html#key270">string</a></b>.  This has to be followed by
all arguments required for the subcommand, except the last.  that last
argument is supplied by the attribute value.</p></dd>
<dt><b class="method">get</b> <i class="arg">pattern</i></dt>
<dd><p>For all nodes <b class="variable">N</b> in the node set it determines all their
attributes with names matching the glob <i class="arg">pattern</i>, then the values
of these attributes, at last it replaces the node set with the list of
these attribute values.</p></dd>
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
<div id="section5" class="section"><h2><a name="section5">References</a></h2>
<ol class="enumerated">
<li><p><a href="http://wiki.tcl.tk/COST">COST</a> on the Tcler's Wiki.</p></li>
<li><p><a href="http://wiki.tcl.tk/treeql">TreeQL</a> on the Tcler's Wiki. Discuss
this package there.</p></li>
</ol>
</div>
<div id="section6" class="section"><h2><a name="section6">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>treeql</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key804">Cost</a>, <a href="../../../../index.html#key802">DOM</a>, <a href="../../../../index.html#key805">TreeQL</a>, <a href="../../../../index.html#key803">XPath</a>, <a href="../../../../index.html#key807">XSLT</a>, <a href="../../../../index.html#key808">structured queries</a>, <a href="../../../../index.html#key280">tree</a>, <a href="../../../../index.html#key806">tree query language</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004 Colin McCormack &lt;[email protected]&gt;<br>
Copyright &copy; 2004 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|









632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
<div id="section5" class="section"><h2><a name="section5">References</a></h2>
<ol class="enumerated">
<li><p><a href="http://wiki.tcl.tk/COST">COST</a> on the Tcler's Wiki.</p></li>
<li><p><a href="http://wiki.tcl.tk/treeql">TreeQL</a> on the Tcler's Wiki. Discuss
this package there.</p></li>
</ol>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>treeql</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key805">Cost</a>, <a href="../../../../index.html#key802">DOM</a>, <a href="../../../../index.html#key804">TreeQL</a>, <a href="../../../../index.html#key803">XPath</a>, <a href="../../../../index.html#key807">XSLT</a>, <a href="../../../../index.html#key808">structured queries</a>, <a href="../../../../index.html#key278">tree</a>, <a href="../../../../index.html#key806">tree query language</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004 Colin McCormack &lt;[email protected]&gt;<br>
Copyright &copy; 2004 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/try/tcllib_try.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">EXAMPLES</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">EXAMPLES</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
} <b class="method">trap</b> {POSIX EISDIR} {} {
    puts &quot;failed to open /some/file/name: it's a directory&quot;
} <b class="method">trap</b> {POSIX ENOENT} {} {
    puts &quot;failed to open /some/file/name: it doesn't exist&quot;
}
</pre>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>try</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>catch(n), error(n), return(n), throw(n)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>







|



|







213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
} <b class="method">trap</b> {POSIX EISDIR} {} {
    puts &quot;failed to open /some/file/name: it's a directory&quot;
} <b class="method">trap</b> {POSIX ENOENT} {} {
    puts &quot;failed to open /some/file/name: it doesn't exist&quot;
}
</pre>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>try</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p>catch(n), error(n), return(n), throw(n)</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>

Changes to embedded/www/tcllib/files/modules/uev/uevent.html.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
<p>The result of the command is a token representing the watcher.</p></dd>
<dt><a name="15"><b class="cmd">::uevent::watch::event::remove</b> <i class="arg">token</i></a></dt>
<dd><p>This command removes a watcher for (un)bind events on tag/event
combinations.</p>
<p>The result of the command is the empty string.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>uevent</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../hook/hook.html">hook(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>







|



|







259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
<p>The result of the command is a token representing the watcher.</p></dd>
<dt><a name="15"><b class="cmd">::uevent::watch::event::remove</b> <i class="arg">token</i></a></dt>
<dd><p>This command removes a watcher for (un)bind events on tag/event
combinations.</p>
<p>The result of the command is the empty string.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>uevent</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../hook/hook.html">hook(n)</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>

Changes to embedded/www/tcllib/files/modules/uev/uevent_onidle.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Examples</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Examples</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Examples</a></h2>
<p>Examples of this type of deferal are buried in the (C-level)
implementations all the Tk widgets, defering geometry calculations and
window redraw activity in this manner.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>uevent</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key519">callback</a>, <a href="../../../../index.html#key522">deferal</a>, <a href="../../../../index.html#key521">event</a>, <a href="../../../../index.html#key520">idle</a>, <a href="../../../../index.html#key518">merge</a>, <a href="../../../../index.html#key517">on-idle</a></p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2008 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|










165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Examples</a></h2>
<p>Examples of this type of deferal are buried in the (C-level)
implementations all the Tk widgets, defering geometry calculations and
window redraw activity in this manner.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>uevent</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key519">callback</a>, <a href="../../../../index.html#key522">deferal</a>, <a href="../../../../index.html#key521">event</a>, <a href="../../../../index.html#key520">idle</a>, <a href="../../../../index.html#key518">merge</a>, <a href="../../../../index.html#key517">on-idle</a></p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2008 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/units/units.html.

130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
<li class="subsection"><a href="#subsection4">SI Prefixes</a></li>
<li class="subsection"><a href="#subsection5">Non-SI Units</a></li>
<li class="subsection"><a href="#subsection6">Quantities and Derived Units with Special Names</a></li>
</ul>
</li>
<li class="section"><a href="#section5">REFERENCES</a></li>
<li class="section"><a href="#section6">AUTHORS</a></li>
<li class="section"><a href="#section7">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
<li class="subsection"><a href="#subsection4">SI Prefixes</a></li>
<li class="subsection"><a href="#subsection5">Non-SI Units</a></li>
<li class="subsection"><a href="#subsection6">Quantities and Derived Units with Special Names</a></li>
</ul>
</li>
<li class="section"><a href="#section5">REFERENCES</a></li>
<li class="section"><a href="#section6">AUTHORS</a></li>
<li class="section"><a href="#section7">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
analysis of unit strings using fixed size tables of C structs.  After
going missing in the late 1990's, Adrian's code has reappeared in the
GNU Units program at <a href="http://www.gnu.org/software/units/">http://www.gnu.org/software/units/</a></p>
</div>
<div id="section6" class="section"><h2><a name="section6">AUTHORS</a></h2>
<p>Robert W. Techentin</p>
</div>
<div id="section7" class="section"><h2><a name="section7">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>units</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key559">angle</a>, <a href="../../../../index.html#key590">constants</a>, <a href="../../../../index.html#key19">conversion</a>, <a href="../../../../index.html#key455">distance</a>, <a href="../../../../index.html#key591">radians</a>, <a href="../../../../index.html#key589">unit</a></p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2000-2005 Mayo Foundation</p>
</div>
</div></body></html>







|



|




|





457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
analysis of unit strings using fixed size tables of C structs.  After
going missing in the late 1990's, Adrian's code has reappeared in the
GNU Units program at <a href="http://www.gnu.org/software/units/">http://www.gnu.org/software/units/</a></p>
</div>
<div id="section6" class="section"><h2><a name="section6">AUTHORS</a></h2>
<p>Robert W. Techentin</p>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>units</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key559">angle</a>, <a href="../../../../index.html#key590">constants</a>, <a href="../../../../index.html#key20">conversion</a>, <a href="../../../../index.html#key455">distance</a>, <a href="../../../../index.html#key591">radians</a>, <a href="../../../../index.html#key589">unit</a></p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2000-2005 Mayo Foundation</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/uri/uri.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">SCHEMES</a></li>
<li class="section"><a href="#section4">EXTENDING</a></li>
<li class="section"><a href="#section5">CREDITS</a></li>
<li class="section"><a href="#section6">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">SCHEMES</a></li>
<li class="section"><a href="#section4">EXTENDING</a></li>
<li class="section"><a href="#section5">CREDITS</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">uri::split</b> <i class="arg">url</i> <span class="opt">?<i class="arg">defaultscheme</i>?</span></a></dt>
<dd><p><b class="cmd">uri::split</b> takes an <i class="arg">url</i>, decodes it and then returns a
list of key/value pairs suitable for <b class="cmd">array set</b> containing the
constituents of the <i class="arg">url</i>. If the scheme is missing from the url
it defaults to the value of <i class="arg">defaultscheme</i> if it was specified,
or <i class="term"><a href="../../../../index.html#key506">http</a></i> else. Currently only the schemes <i class="term"><a href="../../../../index.html#key506">http</a></i>,
<i class="term"><a href="../../../../index.html#key275">ftp</a></i>, <i class="term"><a href="../../../../index.html#key513">mailto</a></i>, <i class="term"><a href="../../../../index.html#key560">urn</a></i>, <i class="term"><a href="../../../../index.html#key510">news</a></i>, <i class="term"><a href="../../../../index.html#key138">ldap</a></i> and
<i class="term"><a href="../../../../index.html#key35">file</a></i> are supported by the package itself.
See section <span class="sectref"><a href="#section4">EXTENDING</a></span> on how to expand that range.</p>
<p>The set of constituents of an url (= the set of keys in the returned
dictionary) is dependent on the scheme of the url. The only key which
is therefore always present is <b class="const">scheme</b>. For the following
schemes the constituents and their keys are known:</p>
<dl class="definitions">







|
|







154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">uri::split</b> <i class="arg">url</i> <span class="opt">?<i class="arg">defaultscheme</i>?</span></a></dt>
<dd><p><b class="cmd">uri::split</b> takes an <i class="arg">url</i>, decodes it and then returns a
list of key/value pairs suitable for <b class="cmd">array set</b> containing the
constituents of the <i class="arg">url</i>. If the scheme is missing from the url
it defaults to the value of <i class="arg">defaultscheme</i> if it was specified,
or <i class="term"><a href="../../../../index.html#key505">http</a></i> else. Currently only the schemes <i class="term"><a href="../../../../index.html#key505">http</a></i>,
<i class="term"><a href="../../../../index.html#key275">ftp</a></i>, <i class="term"><a href="../../../../index.html#key513">mailto</a></i>, <i class="term"><a href="../../../../index.html#key560">urn</a></i>, <i class="term"><a href="../../../../index.html#key511">news</a></i>, <i class="term"><a href="../../../../index.html#key137">ldap</a></i> and
<i class="term"><a href="../../../../index.html#key35">file</a></i> are supported by the package itself.
See section <span class="sectref"><a href="#section4">EXTENDING</a></span> on how to expand that range.</p>
<p>The set of constituents of an url (= the set of keys in the returned
dictionary) is dependent on the scheme of the url. The only key which
is therefore always present is <b class="const">scheme</b>. For the following
schemes the constituents and their keys are known:</p>
<dl class="definitions">
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
<dd><p><b class="const">user</b>, <b class="const">host</b>. The host is optional.</p></dd>
<dt>news</dt>
<dd><p>Either <b class="const">message-id</b> or <b class="const">newsgroup-name</b>.</p></dd>
</dl></dd>
<dt><a name="2"><b class="cmd">uri::join</b> <span class="opt">?<i class="arg">key</i> <i class="arg">value</i>?</span>...</a></dt>
<dd><p><b class="cmd">uri::join</b> takes a list of key/value pairs (generated by
<b class="cmd">uri::split</b>, for example) and returns the canonical url they
represent. Currently only the schemes <i class="term"><a href="../../../../index.html#key506">http</a></i>, <i class="term"><a href="../../../../index.html#key275">ftp</a></i>,
<i class="term"><a href="../../../../index.html#key513">mailto</a></i>, <i class="term"><a href="../../../../index.html#key560">urn</a></i>, <i class="term"><a href="../../../../index.html#key510">news</a></i>, <i class="term"><a href="../../../../index.html#key138">ldap</a></i> and <i class="term"><a href="../../../../index.html#key35">file</a></i>
are supported. See section <span class="sectref"><a href="#section4">EXTENDING</a></span> on how to expand that
range.</p></dd>
<dt><a name="3"><b class="cmd">uri::resolve</b> <i class="arg">base</i> <i class="arg">url</i></a></dt>
<dd><p><b class="cmd">uri::resolve</b> resolves the specified <i class="arg">url</i> relative to
<i class="arg">base</i>. In other words: A non-relative <i class="arg">url</i> is returned
unchanged, whereas for a relative <i class="arg">url</i> the missing parts are
taken from <i class="arg">base</i> and prepended to it. The result of this







|
|







180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
<dd><p><b class="const">user</b>, <b class="const">host</b>. The host is optional.</p></dd>
<dt>news</dt>
<dd><p>Either <b class="const">message-id</b> or <b class="const">newsgroup-name</b>.</p></dd>
</dl></dd>
<dt><a name="2"><b class="cmd">uri::join</b> <span class="opt">?<i class="arg">key</i> <i class="arg">value</i>?</span>...</a></dt>
<dd><p><b class="cmd">uri::join</b> takes a list of key/value pairs (generated by
<b class="cmd">uri::split</b>, for example) and returns the canonical url they
represent. Currently only the schemes <i class="term"><a href="../../../../index.html#key505">http</a></i>, <i class="term"><a href="../../../../index.html#key275">ftp</a></i>,
<i class="term"><a href="../../../../index.html#key513">mailto</a></i>, <i class="term"><a href="../../../../index.html#key560">urn</a></i>, <i class="term"><a href="../../../../index.html#key511">news</a></i>, <i class="term"><a href="../../../../index.html#key137">ldap</a></i> and <i class="term"><a href="../../../../index.html#key35">file</a></i>
are supported. See section <span class="sectref"><a href="#section4">EXTENDING</a></span> on how to expand that
range.</p></dd>
<dt><a name="3"><b class="cmd">uri::resolve</b> <i class="arg">base</i> <i class="arg">url</i></a></dt>
<dd><p><b class="cmd">uri::resolve</b> resolves the specified <i class="arg">url</i> relative to
<i class="arg">base</i>. In other words: A non-relative <i class="arg">url</i> is returned
unchanged, whereas for a relative <i class="arg">url</i> the missing parts are
taken from <i class="arg">base</i> and prepended to it. The result of this
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
regular expression to recognize urls for a number of url schemes.</p>
<p>For each supported scheme a namespace of the same name as the scheme
itself is provided inside of the namespace <em>uri</em> containing the
variable <b class="variable">url</b> whose contents are a regular expression to
recognize urls of that scheme. Additional variables may contain
regular expressions for parts of urls for that scheme.</p>
<p>The variable <b class="variable">uri::schemes</b> contains a list of all supported
schemes. Currently these are <i class="term"><a href="../../../../index.html#key275">ftp</a></i>, <i class="term"><a href="../../../../index.html#key138">ldap</a></i>, <i class="term"><a href="../../../../index.html#key35">file</a></i>,
<i class="term"><a href="../../../../index.html#key506">http</a></i>, <i class="term"><a href="../../../../index.html#key511">gopher</a></i>, <i class="term"><a href="../../../../index.html#key513">mailto</a></i>, <i class="term"><a href="../../../../index.html#key510">news</a></i>,
<i class="term"><a href="../../../../index.html#key509">wais</a></i> and <i class="term"><a href="../../../../index.html#key507">prospero</a></i>.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">EXTENDING</a></h2>
<p>Extending the range of schemes supported by <b class="cmd">uri::split</b> and
<b class="cmd">uri::join</b> is easy because both commands do not handle the
request by themselves but dispatch it to another command in the
<em>uri</em> namespace using the scheme of the url as criterion.</p>
<p><b class="cmd">uri::split</b> and <b class="cmd">uri::join</b>
call <b class="cmd">Split[string totitle &lt;scheme&gt;]</b>
and  <b class="cmd">Join[string totitle &lt;scheme&gt;]</b> respectively.</p>
</div>
<div id="section5" class="section"><h2><a name="section5">CREDITS</a></h2>
<p>Original code (regular expressions) by Andreas Kupries.
Modularisation by Steve Ball, also the split/join/resolve
functionality.</p>
</div>
<div id="section6" class="section"><h2><a name="section6">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>uri</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key512">fetching information</a>, <a href="../../../../index.html#key35">file</a>, <a href="../../../../index.html#key275">ftp</a>, <a href="../../../../index.html#key511">gopher</a>, <a href="../../../../index.html#key506">http</a>, <a href="../../../../index.html#key138">ldap</a>, <a href="../../../../index.html#key513">mailto</a>, <a href="../../../../index.html#key510">news</a>, <a href="../../../../index.html#key507">prospero</a>, <a href="../../../../index.html#key514">rfc 2255</a>, <a href="../../../../index.html#key516">rfc 2396</a>, <a href="../../../../index.html#key505">uri</a>, <a href="../../../../index.html#key508">url</a>, <a href="../../../../index.html#key509">wais</a>, <a href="../../../../index.html#key515">www</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
</div></body></html>







|
|
















|



|




|





233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
regular expression to recognize urls for a number of url schemes.</p>
<p>For each supported scheme a namespace of the same name as the scheme
itself is provided inside of the namespace <em>uri</em> containing the
variable <b class="variable">url</b> whose contents are a regular expression to
recognize urls of that scheme. Additional variables may contain
regular expressions for parts of urls for that scheme.</p>
<p>The variable <b class="variable">uri::schemes</b> contains a list of all supported
schemes. Currently these are <i class="term"><a href="../../../../index.html#key275">ftp</a></i>, <i class="term"><a href="../../../../index.html#key137">ldap</a></i>, <i class="term"><a href="../../../../index.html#key35">file</a></i>,
<i class="term"><a href="../../../../index.html#key505">http</a></i>, <i class="term"><a href="../../../../index.html#key510">gopher</a></i>, <i class="term"><a href="../../../../index.html#key513">mailto</a></i>, <i class="term"><a href="../../../../index.html#key511">news</a></i>,
<i class="term"><a href="../../../../index.html#key509">wais</a></i> and <i class="term"><a href="../../../../index.html#key507">prospero</a></i>.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">EXTENDING</a></h2>
<p>Extending the range of schemes supported by <b class="cmd">uri::split</b> and
<b class="cmd">uri::join</b> is easy because both commands do not handle the
request by themselves but dispatch it to another command in the
<em>uri</em> namespace using the scheme of the url as criterion.</p>
<p><b class="cmd">uri::split</b> and <b class="cmd">uri::join</b>
call <b class="cmd">Split[string totitle &lt;scheme&gt;]</b>
and  <b class="cmd">Join[string totitle &lt;scheme&gt;]</b> respectively.</p>
</div>
<div id="section5" class="section"><h2><a name="section5">CREDITS</a></h2>
<p>Original code (regular expressions) by Andreas Kupries.
Modularisation by Steve Ball, also the split/join/resolve
functionality.</p>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>uri</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key512">fetching information</a>, <a href="../../../../index.html#key35">file</a>, <a href="../../../../index.html#key275">ftp</a>, <a href="../../../../index.html#key510">gopher</a>, <a href="../../../../index.html#key505">http</a>, <a href="../../../../index.html#key137">ldap</a>, <a href="../../../../index.html#key513">mailto</a>, <a href="../../../../index.html#key511">news</a>, <a href="../../../../index.html#key507">prospero</a>, <a href="../../../../index.html#key514">rfc 2255</a>, <a href="../../../../index.html#key516">rfc 2396</a>, <a href="../../../../index.html#key506">uri</a>, <a href="../../../../index.html#key508">url</a>, <a href="../../../../index.html#key509">wais</a>, <a href="../../../../index.html#key515">www</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/uri/urn-scheme.html.

111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">







|







111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
its result.</p></dd>
<dt><a name="2"><b class="cmd">uri::urn::unquote</b> <i class="arg">url</i></a></dt>
<dd><p>This commands performs the reverse of <b class="cmd">::uri::urn::quote</b>. It
takes an <i class="term"><a href="../../../../index.html#key560">urn</a></i> url, removes the quoting from all disallowed
characters, and returns the modified urls as its result.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>uri</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key561">rfc 2141</a>, <a href="../../../../index.html#key505">uri</a>, <a href="../../../../index.html#key508">url</a>, <a href="../../../../index.html#key560">urn</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
</div></body></html>







|



|




|





148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
its result.</p></dd>
<dt><a name="2"><b class="cmd">uri::urn::unquote</b> <i class="arg">url</i></a></dt>
<dd><p>This commands performs the reverse of <b class="cmd">::uri::urn::quote</b>. It
takes an <i class="term"><a href="../../../../index.html#key560">urn</a></i> url, removes the quoting from all disallowed
characters, and returns the modified urls as its result.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>uri</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key561">rfc 2141</a>, <a href="../../../../index.html#key506">uri</a>, <a href="../../../../index.html#key508">url</a>, <a href="../../../../index.html#key560">urn</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/uuid/uuid.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">REFERENCES</a></li>
<li class="section"><a href="#section5">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">REFERENCES</a></li>
<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
</div>
<div id="section4" class="section"><h2><a name="section4">REFERENCES</a></h2>
<ol class="enumerated">
<li><p>Paul J. Leach, &quot;UUIDs and GUIDs&quot;, February 1998.
    (<a href="http://www.opengroup.org/dce/info/draft-leach-uuids-guids-01.txt">http://www.opengroup.org/dce/info/draft-leach-uuids-guids-01.txt</a>)</p></li>
</ol>
</div>
<div id="section5" class="section"><h2><a name="section5">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>uuid</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key218">GUID</a>, <a href="../../../../index.html#key219">UUID</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004, Pat Thoyts &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
</div>
<div id="section4" class="section"><h2><a name="section4">REFERENCES</a></h2>
<ol class="enumerated">
<li><p>Paul J. Leach, &quot;UUIDs and GUIDs&quot;, February 1998.
    (<a href="http://www.opengroup.org/dce/info/draft-leach-uuids-guids-01.txt">http://www.opengroup.org/dce/info/draft-leach-uuids-guids-01.txt</a>)</p></li>
</ol>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>uuid</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key218">GUID</a>, <a href="../../../../index.html#key219">UUID</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Hashes, checksums, and encryption</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2004, Pat Thoyts &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/valtype/cc_amex.html.

200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
to be an AMEX creditcard number.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>valtype</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key374">AMEX</a>, <a href="../../../../index.html#key373">American Express</a>, <a href="../../../../index.html#key73">Checking</a>, <a href="../../../../index.html#key78">Testing</a>, <a href="../../../../index.html#key77">Type checking</a>, <a href="../../../../index.html#key80">Validation</a>, <a href="../../../../index.html#key76">Value checking</a>, <a href="../../../../index.html#key260">bank</a>, <a href="../../../../index.html#key258">card for credit</a>, <a href="../../../../index.html#key261">credit card</a>, <a href="../../../../index.html#key259">finance</a>, <a href="../../../../index.html#key75">isA</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
to be an AMEX creditcard number.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>valtype</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key374">AMEX</a>, <a href="../../../../index.html#key373">American Express</a>, <a href="../../../../index.html#key73">Checking</a>, <a href="../../../../index.html#key78">Testing</a>, <a href="../../../../index.html#key77">Type checking</a>, <a href="../../../../index.html#key80">Validation</a>, <a href="../../../../index.html#key76">Value checking</a>, <a href="../../../../index.html#key260">bank</a>, <a href="../../../../index.html#key258">card for credit</a>, <a href="../../../../index.html#key261">credit card</a>, <a href="../../../../index.html#key259">finance</a>, <a href="../../../../index.html#key75">isA</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/valtype/cc_discover.html.

200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
to be a Discover creditcard number.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>valtype</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key73">Checking</a>, <a href="../../../../index.html#key262">Discover</a>, <a href="../../../../index.html#key78">Testing</a>, <a href="../../../../index.html#key77">Type checking</a>, <a href="../../../../index.html#key80">Validation</a>, <a href="../../../../index.html#key76">Value checking</a>, <a href="../../../../index.html#key260">bank</a>, <a href="../../../../index.html#key258">card for credit</a>, <a href="../../../../index.html#key261">credit card</a>, <a href="../../../../index.html#key259">finance</a>, <a href="../../../../index.html#key75">isA</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
to be a Discover creditcard number.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>valtype</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key73">Checking</a>, <a href="../../../../index.html#key262">Discover</a>, <a href="../../../../index.html#key78">Testing</a>, <a href="../../../../index.html#key77">Type checking</a>, <a href="../../../../index.html#key80">Validation</a>, <a href="../../../../index.html#key76">Value checking</a>, <a href="../../../../index.html#key260">bank</a>, <a href="../../../../index.html#key258">card for credit</a>, <a href="../../../../index.html#key261">credit card</a>, <a href="../../../../index.html#key259">finance</a>, <a href="../../../../index.html#key75">isA</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/valtype/cc_mastercard.html.

200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
to be a Mastercard creditcard number.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>valtype</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key73">Checking</a>, <a href="../../../../index.html#key655">MasterCard</a>, <a href="../../../../index.html#key78">Testing</a>, <a href="../../../../index.html#key77">Type checking</a>, <a href="../../../../index.html#key80">Validation</a>, <a href="../../../../index.html#key76">Value checking</a>, <a href="../../../../index.html#key260">bank</a>, <a href="../../../../index.html#key258">card for credit</a>, <a href="../../../../index.html#key261">credit card</a>, <a href="../../../../index.html#key259">finance</a>, <a href="../../../../index.html#key75">isA</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
to be a Mastercard creditcard number.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>valtype</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key73">Checking</a>, <a href="../../../../index.html#key655">MasterCard</a>, <a href="../../../../index.html#key78">Testing</a>, <a href="../../../../index.html#key77">Type checking</a>, <a href="../../../../index.html#key80">Validation</a>, <a href="../../../../index.html#key76">Value checking</a>, <a href="../../../../index.html#key260">bank</a>, <a href="../../../../index.html#key258">card for credit</a>, <a href="../../../../index.html#key261">credit card</a>, <a href="../../../../index.html#key259">finance</a>, <a href="../../../../index.html#key75">isA</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/valtype/cc_visa.html.

200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
to be a VISA creditcard number.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>valtype</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key73">Checking</a>, <a href="../../../../index.html#key78">Testing</a>, <a href="../../../../index.html#key77">Type checking</a>, <a href="../../../../index.html#key692">VISA</a>, <a href="../../../../index.html#key80">Validation</a>, <a href="../../../../index.html#key76">Value checking</a>, <a href="../../../../index.html#key260">bank</a>, <a href="../../../../index.html#key258">card for credit</a>, <a href="../../../../index.html#key261">credit card</a>, <a href="../../../../index.html#key259">finance</a>, <a href="../../../../index.html#key75">isA</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
to be a VISA creditcard number.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>valtype</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key73">Checking</a>, <a href="../../../../index.html#key78">Testing</a>, <a href="../../../../index.html#key77">Type checking</a>, <a href="../../../../index.html#key692">VISA</a>, <a href="../../../../index.html#key80">Validation</a>, <a href="../../../../index.html#key76">Value checking</a>, <a href="../../../../index.html#key260">bank</a>, <a href="../../../../index.html#key258">card for credit</a>, <a href="../../../../index.html#key261">credit card</a>, <a href="../../../../index.html#key259">finance</a>, <a href="../../../../index.html#key75">isA</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/valtype/ean13.html.

196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
<dd><p>The input value is of the wrong length to be an EAN13.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>valtype</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key73">Checking</a>, <a href="../../../../index.html#key111">EAN</a>, <a href="../../../../index.html#key112">EAN13</a>, <a href="../../../../index.html#key110">European Article Number</a>, <a href="../../../../index.html#key113">International Article Number</a>, <a href="../../../../index.html#key78">Testing</a>, <a href="../../../../index.html#key77">Type checking</a>, <a href="../../../../index.html#key80">Validation</a>, <a href="../../../../index.html#key76">Value checking</a>, <a href="../../../../index.html#key75">isA</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
<dd><p>The input value is of the wrong length to be an EAN13.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>valtype</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key73">Checking</a>, <a href="../../../../index.html#key111">EAN</a>, <a href="../../../../index.html#key112">EAN13</a>, <a href="../../../../index.html#key110">European Article Number</a>, <a href="../../../../index.html#key113">International Article Number</a>, <a href="../../../../index.html#key78">Testing</a>, <a href="../../../../index.html#key77">Type checking</a>, <a href="../../../../index.html#key80">Validation</a>, <a href="../../../../index.html#key76">Value checking</a>, <a href="../../../../index.html#key75">isA</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/valtype/iban.html.

194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
th input may be an outright fake too.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>valtype</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key73">Checking</a>, <a href="../../../../index.html#key365">IBAN</a>, <a href="../../../../index.html#key364">International Bank Account Number</a>, <a href="../../../../index.html#key78">Testing</a>, <a href="../../../../index.html#key77">Type checking</a>, <a href="../../../../index.html#key80">Validation</a>, <a href="../../../../index.html#key76">Value checking</a>, <a href="../../../../index.html#key260">bank</a>, <a href="../../../../index.html#key259">finance</a>, <a href="../../../../index.html#key75">isA</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
th input may be an outright fake too.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>valtype</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key73">Checking</a>, <a href="../../../../index.html#key365">IBAN</a>, <a href="../../../../index.html#key364">International Bank Account Number</a>, <a href="../../../../index.html#key78">Testing</a>, <a href="../../../../index.html#key77">Type checking</a>, <a href="../../../../index.html#key80">Validation</a>, <a href="../../../../index.html#key76">Value checking</a>, <a href="../../../../index.html#key260">bank</a>, <a href="../../../../index.html#key259">finance</a>, <a href="../../../../index.html#key75">isA</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/valtype/imei.html.

197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
<dd><p>The input value is of the wrong length to be an IMEI.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>valtype</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key73">Checking</a>, <a href="../../../../index.html#key772">IMEI</a>, <a href="../../../../index.html#key775">International Mobile Equipment Identity</a>, <a href="../../../../index.html#key78">Testing</a>, <a href="../../../../index.html#key77">Type checking</a>, <a href="../../../../index.html#key80">Validation</a>, <a href="../../../../index.html#key76">Value checking</a>, <a href="../../../../index.html#key776">cell-phone</a>, <a href="../../../../index.html#key75">isA</a>, <a href="../../../../index.html#key773">mobile phone</a>, <a href="../../../../index.html#key774">phone</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
<dd><p>The input value is of the wrong length to be an IMEI.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>valtype</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key73">Checking</a>, <a href="../../../../index.html#key772">IMEI</a>, <a href="../../../../index.html#key775">International Mobile Equipment Identity</a>, <a href="../../../../index.html#key78">Testing</a>, <a href="../../../../index.html#key77">Type checking</a>, <a href="../../../../index.html#key80">Validation</a>, <a href="../../../../index.html#key76">Value checking</a>, <a href="../../../../index.html#key776">cell-phone</a>, <a href="../../../../index.html#key75">isA</a>, <a href="../../../../index.html#key773">mobile phone</a>, <a href="../../../../index.html#key774">phone</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/valtype/isbn.html.

203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
<dd><p>The input value is of the wrong length to be an ISBN.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>valtype</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key346">Book Number</a>, <a href="../../../../index.html#key73">Checking</a>, <a href="../../../../index.html#key111">EAN</a>, <a href="../../../../index.html#key112">EAN13</a>, <a href="../../../../index.html#key110">European Article Number</a>, <a href="../../../../index.html#key345">ISBN</a>, <a href="../../../../index.html#key113">International Article Number</a>, <a href="../../../../index.html#key347">International Standard Book Number</a>, <a href="../../../../index.html#key78">Testing</a>, <a href="../../../../index.html#key77">Type checking</a>, <a href="../../../../index.html#key80">Validation</a>, <a href="../../../../index.html#key76">Value checking</a>, <a href="../../../../index.html#key75">isA</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
<dd><p>The input value is of the wrong length to be an ISBN.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>valtype</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key346">Book Number</a>, <a href="../../../../index.html#key73">Checking</a>, <a href="../../../../index.html#key111">EAN</a>, <a href="../../../../index.html#key112">EAN13</a>, <a href="../../../../index.html#key110">European Article Number</a>, <a href="../../../../index.html#key345">ISBN</a>, <a href="../../../../index.html#key113">International Article Number</a>, <a href="../../../../index.html#key347">International Standard Book Number</a>, <a href="../../../../index.html#key78">Testing</a>, <a href="../../../../index.html#key77">Type checking</a>, <a href="../../../../index.html#key80">Validation</a>, <a href="../../../../index.html#key76">Value checking</a>, <a href="../../../../index.html#key75">isA</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/valtype/luhn.html.

194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
th input may be an outright fake too.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>valtype</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key73">Checking</a>, <a href="../../../../index.html#key78">Testing</a>, <a href="../../../../index.html#key77">Type checking</a>, <a href="../../../../index.html#key80">Validation</a>, <a href="../../../../index.html#key76">Value checking</a>, <a href="../../../../index.html#key75">isA</a>, <a href="../../../../index.html#key79">luhn</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
th input may be an outright fake too.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>valtype</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key73">Checking</a>, <a href="../../../../index.html#key78">Testing</a>, <a href="../../../../index.html#key77">Type checking</a>, <a href="../../../../index.html#key80">Validation</a>, <a href="../../../../index.html#key76">Value checking</a>, <a href="../../../../index.html#key75">isA</a>, <a href="../../../../index.html#key79">luhn</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/valtype/luhn5.html.

194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
th input may be an outright fake too.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>valtype</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key73">Checking</a>, <a href="../../../../index.html#key78">Testing</a>, <a href="../../../../index.html#key77">Type checking</a>, <a href="../../../../index.html#key80">Validation</a>, <a href="../../../../index.html#key76">Value checking</a>, <a href="../../../../index.html#key75">isA</a>, <a href="../../../../index.html#key79">luhn</a>, <a href="../../../../index.html#key74">luhn-5</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
th input may be an outright fake too.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>valtype</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key73">Checking</a>, <a href="../../../../index.html#key78">Testing</a>, <a href="../../../../index.html#key77">Type checking</a>, <a href="../../../../index.html#key80">Validation</a>, <a href="../../../../index.html#key76">Value checking</a>, <a href="../../../../index.html#key75">isA</a>, <a href="../../../../index.html#key79">luhn</a>, <a href="../../../../index.html#key74">luhn-5</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/valtype/usnpi.html.

197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
<dd><p>The input value is of the wrong length to be an USNPI.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>valtype</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key73">Checking</a>, <a href="../../../../index.html#key242">NPI</a>, <a href="../../../../index.html#key239">National Provider Identifier</a>, <a href="../../../../index.html#key78">Testing</a>, <a href="../../../../index.html#key77">Type checking</a>, <a href="../../../../index.html#key240">US-NPI</a>, <a href="../../../../index.html#key80">Validation</a>, <a href="../../../../index.html#key76">Value checking</a>, <a href="../../../../index.html#key75">isA</a>, <a href="../../../../index.html#key241">medicare</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
<dd><p>The input value is of the wrong length to be an USNPI.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>valtype</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key73">Checking</a>, <a href="../../../../index.html#key242">NPI</a>, <a href="../../../../index.html#key239">National Provider Identifier</a>, <a href="../../../../index.html#key78">Testing</a>, <a href="../../../../index.html#key77">Type checking</a>, <a href="../../../../index.html#key240">US-NPI</a>, <a href="../../../../index.html#key80">Validation</a>, <a href="../../../../index.html#key76">Value checking</a>, <a href="../../../../index.html#key75">isA</a>, <a href="../../../../index.html#key241">medicare</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/valtype/valtype_common.html.

207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
to be a <b class="const">&lt;&gt;</b>.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>valtype</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key73">Checking</a>, <a href="../../../../index.html#key78">Testing</a>, <a href="../../../../index.html#key77">Type checking</a>, <a href="../../../../index.html#key80">Validation</a>, <a href="../../../../index.html#key76">Value checking</a>, <a href="../../../../index.html#key75">isA</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
to be a <b class="const">&lt;&gt;</b>.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>valtype</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key73">Checking</a>, <a href="../../../../index.html#key78">Testing</a>, <a href="../../../../index.html#key77">Type checking</a>, <a href="../../../../index.html#key80">Validation</a>, <a href="../../../../index.html#key76">Value checking</a>, <a href="../../../../index.html#key75">isA</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/valtype/verhoeff.html.

194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
th input may be an outright fake too.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>valtype</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key73">Checking</a>, <a href="../../../../index.html#key78">Testing</a>, <a href="../../../../index.html#key77">Type checking</a>, <a href="../../../../index.html#key80">Validation</a>, <a href="../../../../index.html#key76">Value checking</a>, <a href="../../../../index.html#key75">isA</a>, <a href="../../../../index.html#key732">verhoeff</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>







|







194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
th input may be an outright fake too.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>valtype</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key73">Checking</a>, <a href="../../../../index.html#key78">Testing</a>, <a href="../../../../index.html#key77">Type checking</a>, <a href="../../../../index.html#key80">Validation</a>, <a href="../../../../index.html#key76">Value checking</a>, <a href="../../../../index.html#key75">isA</a>, <a href="../../../../index.html#key732">verhoeff</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/cat.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::chan::cat</b> <i class="arg">chan</i>...</a></dt>
<dd><p>This command creates the concatenation channel using all the provided
channels, and returns its handle.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key176">concatenation channel</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2011 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::chan::cat</b> <i class="arg">chan</i>...</a></dt>
<dd><p>This command creates the concatenation channel using all the provided
channels, and returns its handle.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key176">concatenation channel</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2011 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/facade.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::chan::facade</b> <i class="arg">chan</i></a></dt>
<dd><p>This command creates the facade channel around the provided
channel <i class="arg">chan</i>, and returns its handle.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key176">concatenation channel</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2011 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::chan::facade</b> <i class="arg">chan</i></a></dt>
<dd><p>This command creates the facade channel around the provided
channel <i class="arg">chan</i>, and returns its handle.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key176">concatenation channel</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2011 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/halfpipe.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Options</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Options</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
Two arguments are supplied, the handle of the channel written to, and the data written.
The result of the callback is ignored.</p></dd>
<dt><b class="option">-empty-command</b> cmdprefix</dt>
<dd><p>This callback is invoked when the channel has run out of data to read.
A single argument is supplied, the handle of the channel.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key702">callbacks</a>, <a href="../../../../index.html#key588">fifo</a>, <a href="../../../../index.html#key59">in-memory channel</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
Two arguments are supplied, the handle of the channel written to, and the data written.
The result of the callback is ignored.</p></dd>
<dt><b class="option">-empty-command</b> cmdprefix</dt>
<dd><p>This callback is invoked when the channel has run out of data to read.
A single argument is supplied, the handle of the channel.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key702">callbacks</a>, <a href="../../../../index.html#key588">fifo</a>, <a href="../../../../index.html#key59">in-memory channel</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/nullzero.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::chan::nullzero</b></a></dt>
<dd><p>This command creates a new nullzero channel and returns its handle.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key744">/dev/null</a>, <a href="../../../../index.html#key126">/dev/zero</a>, <a href="../../../../index.html#key745">null</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a>, <a href="../../../../index.html#key125">zero</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::chan::nullzero</b></a></dt>
<dd><p>This command creates a new nullzero channel and returns its handle.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key744">/dev/null</a>, <a href="../../../../index.html#key126">/dev/zero</a>, <a href="../../../../index.html#key745">null</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a>, <a href="../../../../index.html#key125">zero</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/randseed.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
id, current time, and Tcl random number generator.</p></dd>
<dt><a name="2"><b class="cmd">::tcl::combine</b> <i class="arg">seed1</i> <i class="arg">seed2</i></a></dt>
<dd><p>This command takes to seed lists and combines them into a single list
by XORing them elementwise, modulo 256. If the lists are not of equial
length the shorter of the two is padded with 0s before merging.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key577">/dev/random</a>, <a href="../../../../index.html#key518">merge</a>, <a href="../../../../index.html#key576">random</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key817">seed</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
id, current time, and Tcl random number generator.</p></dd>
<dt><a name="2"><b class="cmd">::tcl::combine</b> <i class="arg">seed1</i> <i class="arg">seed2</i></a></dt>
<dd><p>This command takes to seed lists and combines them into a single list
by XORing them elementwise, modulo 256. If the lists are not of equial
length the shorter of the two is padded with 0s before merging.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key577">/dev/random</a>, <a href="../../../../index.html#key518">merge</a>, <a href="../../../../index.html#key576">random</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key817">seed</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/std.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::chan::std</b></a></dt>
<dd><p>This command creates the std channel and returns its handle.</p>
<p>The channel is created only once, on the first call, and all
future calls simply return this handle.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key814">standard io</a>, <a href="../../../../index.html#key815">stdin</a>, <a href="../../../../index.html#key816">stdout</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2011 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::chan::std</b></a></dt>
<dd><p>This command creates the std channel and returns its handle.</p>
<p>The channel is created only once, on the first call, and all
future calls simply return this handle.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key814">standard io</a>, <a href="../../../../index.html#key815">stdin</a>, <a href="../../../../index.html#key816">stdout</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2011 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/tcllib_fifo.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::chan::fifo</b></a></dt>
<dd><p>This command creates a new fifo channel and returns its handle.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key588">fifo</a>, <a href="../../../../index.html#key59">in-memory channel</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::chan::fifo</b></a></dt>
<dd><p>This command creates a new fifo channel and returns its handle.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key588">fifo</a>, <a href="../../../../index.html#key59">in-memory channel</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/tcllib_fifo2.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::chan::fifo2</b></a></dt>
<dd><p>This command creates a new connected pair of fifo channels and returns
their handles, as a list containing two elements.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key724">connected fifos</a>, <a href="../../../../index.html#key588">fifo</a>, <a href="../../../../index.html#key59">in-memory channel</a>, <a href="../../../../index.html#key723">inter-thread communication</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::chan::fifo2</b></a></dt>
<dd><p>This command creates a new connected pair of fifo channels and returns
their handles, as a list containing two elements.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key724">connected fifos</a>, <a href="../../../../index.html#key588">fifo</a>, <a href="../../../../index.html#key59">in-memory channel</a>, <a href="../../../../index.html#key723">inter-thread communication</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/tcllib_memchan.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::chan::memchan</b></a></dt>
<dd><p>This command creates a new memchan channel and returns its handle.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key59">in-memory channel</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::chan::memchan</b></a></dt>
<dd><p>This command creates a new memchan channel and returns its handle.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key59">in-memory channel</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/tcllib_null.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::chan::null</b></a></dt>
<dd><p>This command creates a new null channel and returns its handle.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key744">/dev/null</a>, <a href="../../../../index.html#key745">null</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::chan::null</b></a></dt>
<dd><p>This command creates a new null channel and returns its handle.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key744">/dev/null</a>, <a href="../../../../index.html#key745">null</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/tcllib_random.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::chan::random</b> <i class="arg">seed</i></a></dt>
<dd><p>This command creates a new random channel and returns its handle.
The seed is a list of integer numbers used to initialize the
internal feedback shift register of the generator.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key577">/dev/random</a>, <a href="../../../../index.html#key576">random</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::chan::random</b> <i class="arg">seed</i></a></dt>
<dd><p>This command creates a new random channel and returns its handle.
The seed is a list of integer numbers used to initialize the
internal feedback shift register of the generator.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key577">/dev/random</a>, <a href="../../../../index.html#key576">random</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/tcllib_string.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::chan::string</b> <i class="arg">content</i></a></dt>
<dd><p>This command creates a new string channel and returns its handle. The
channel provides random read-only access to the <i class="arg">content</i> string.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key59">in-memory channel</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::chan::string</b> <i class="arg">content</i></a></dt>
<dd><p>This command creates a new string channel and returns its handle. The
channel provides random read-only access to the <i class="arg">content</i> string.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key59">in-memory channel</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/tcllib_variable.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::chan::variable</b> <i class="arg">varname</i></a></dt>
<dd><p>This command creates a new variable channel and returns its handle.
The content of the channel is stored in the associated namespace
variable <i class="arg">varname</i>.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key59">in-memory channel</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::chan::variable</b> <i class="arg">varname</i></a></dt>
<dd><p>This command creates a new variable channel and returns its handle.
The content of the channel is stored in the associated namespace
variable <i class="arg">varname</i>.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key59">in-memory channel</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/tcllib_zero.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::chan::zero</b></a></dt>
<dd><p>This command creates a new zero channel and returns its handle.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key126">/dev/zero</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a>, <a href="../../../../index.html#key125">zero</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::chan::zero</b></a></dt>
<dd><p>This command creates a new zero channel and returns its handle.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key126">/dev/zero</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a>, <a href="../../../../index.html#key125">zero</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/textwindow.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::chan::textwindow</b> <i class="arg">widget</i></a></dt>
<dd><p>This command creates a new textwindow channel and returns its handle.
Data written to this channel will appear in the associated <i class="arg">widget</i>.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key207">Tk</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key206">text widget</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::chan::textwindow</b> <i class="arg">widget</i></a></dt>
<dd><p>This command creates a new textwindow channel and returns its handle.
Data written to this channel will appear in the associated <i class="arg">widget</i>.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key207">Tk</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key206">text widget</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_core/core.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Class API</a></li>
<li class="section"><a href="#section3">Instance API</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Class API</a></li>
<li class="section"><a href="#section3">Instance API</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
<dt><a name="4"><i class="arg">objectName</i> <b class="method">destroy</b></a></dt>
<dd><p>Destroying the channel core instance closes the channel it was
initialized for, see the method <b class="method">initialize</b>. When destroyed
from within a call of <b class="method">finalize</b> this does not happen, under
the assumption that the channel is being destroyed by Tcl.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
<dt><a name="4"><i class="arg">objectName</i> <b class="method">destroy</b></a></dt>
<dd><p>Destroying the channel core instance closes the channel it was
initialized for, see the method <b class="method">initialize</b>. When destroyed
from within a call of <b class="method">finalize</b> this does not happen, under
the assumption that the channel is being destroyed by Tcl.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_core/events.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Class API</a></li>
<li class="section"><a href="#section3">Instance API</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Class API</a></li>
<li class="section"><a href="#section3">Instance API</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
can (allow) or cannot (disallow) generate.
Together with the information about the events requested by Tcl's IO
system coming in through the <b class="method">watch</b> method the event core is
able to determine which events it should (not) generate and act
accordingly.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key494">event management</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
can (allow) or cannot (disallow) generate.
Together with the information about the events requested by Tcl's IO
system coming in through the <b class="method">watch</b> method the event core is
able to determine which events it should (not) generate and act
accordingly.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key494">event management</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_core/transformcore.html.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Class API</a></li>
<li class="section"><a href="#section3">Instance API</a></li>
<li class="section"><a href="#section4">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Class API</a></li>
<li class="section"><a href="#section3">Instance API</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
<dt><a name="4"><i class="arg">objectName</i> <b class="method">destroy</b></a></dt>
<dd><p>Destroying the transform core instance closes the channel and transform
it was initialized for, see the method <b class="method">initialize</b>. When destroyed
from within a call of <b class="method">finalize</b> this does not happen, under
the assumption that the channel and transform are being destroyed by Tcl.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
<dt><a name="4"><i class="arg">objectName</i> <b class="method">destroy</b></a></dt>
<dd><p>Destroying the transform core instance closes the channel and transform
it was initialized for, see the method <b class="method">initialize</b>. When destroyed
from within a call of <b class="method">finalize</b> this does not happen, under
the assumption that the channel and transform are being destroyed by Tcl.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key58">tip 219</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_transform/adler32.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
variable, the location where the transformation has to store the
adler32 checksum of the data written to the channel.</p>
<p>If not specified, or the empty string, the checksum of the
write direction is not saved.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key651">adler32</a>, <a href="../../../../index.html#key297">channel transformation</a>, <a href="../../../../index.html#key157">checksum</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key299">tip 230</a>, <a href="../../../../index.html#key300">transformation</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
variable, the location where the transformation has to store the
adler32 checksum of the data written to the channel.</p>
<p>If not specified, or the empty string, the checksum of the
write direction is not saved.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key651">adler32</a>, <a href="../../../../index.html#key298">channel transformation</a>, <a href="../../../../index.html#key158">checksum</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key299">tip 230</a>, <a href="../../../../index.html#key300">transformation</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_transform/base64.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::transform::base64</b> <i class="arg">chan</i></a></dt>
<dd><p>This command creates a base64 transformation on top of the channel
<i class="arg">chan</i> and returns its handle.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key759">base64</a>, <a href="../../../../index.html#key297">channel transformation</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key299">tip 230</a>, <a href="../../../../index.html#key758">tip 317</a>, <a href="../../../../index.html#key300">transformation</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::transform::base64</b> <i class="arg">chan</i></a></dt>
<dd><p>This command creates a base64 transformation on top of the channel
<i class="arg">chan</i> and returns its handle.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key759">base64</a>, <a href="../../../../index.html#key298">channel transformation</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key299">tip 230</a>, <a href="../../../../index.html#key758">tip 317</a>, <a href="../../../../index.html#key300">transformation</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_transform/counter.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
variable, the location where the transformation has to store the
byte count of the data written to the channel.</p>
<p>If not specified, or the empty string, the counter of the
write direction is not saved.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key297">channel transformation</a>, <a href="../../../../index.html#key298">counter</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key299">tip 230</a>, <a href="../../../../index.html#key300">transformation</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
variable, the location where the transformation has to store the
byte count of the data written to the channel.</p>
<p>If not specified, or the empty string, the counter of the
write direction is not saved.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key298">channel transformation</a>, <a href="../../../../index.html#key297">counter</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key299">tip 230</a>, <a href="../../../../index.html#key300">transformation</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_transform/crc32.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
variable, the location where the transformation has to store the
crc32 checksum of the data written to the channel.</p>
<p>If not specified, or the empty string, the checksum of the
write direction is not saved.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key297">channel transformation</a>, <a href="../../../../index.html#key157">checksum</a>, <a href="../../../../index.html#key155">crc32</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key299">tip 230</a>, <a href="../../../../index.html#key300">transformation</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
variable, the location where the transformation has to store the
crc32 checksum of the data written to the channel.</p>
<p>If not specified, or the empty string, the checksum of the
write direction is not saved.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key298">channel transformation</a>, <a href="../../../../index.html#key158">checksum</a>, <a href="../../../../index.html#key155">crc32</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key299">tip 230</a>, <a href="../../../../index.html#key300">transformation</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_transform/hex.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::transform::hex</b> <i class="arg">chan</i></a></dt>
<dd><p>This command creates a hex transformation on top of the channel
<i class="arg">chan</i> and returns its handle.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key297">channel transformation</a>, <a href="../../../../index.html#key720">hexadecimal</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key299">tip 230</a>, <a href="../../../../index.html#key300">transformation</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::transform::hex</b> <i class="arg">chan</i></a></dt>
<dd><p>This command creates a hex transformation on top of the channel
<i class="arg">chan</i> and returns its handle.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key298">channel transformation</a>, <a href="../../../../index.html#key720">hexadecimal</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key299">tip 230</a>, <a href="../../../../index.html#key300">transformation</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_transform/identity.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::transform::identity</b> <i class="arg">chan</i></a></dt>
<dd><p>This command creates an identity transformation on top of the channel
<i class="arg">chan</i> and returns its handle.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key297">channel transformation</a>, <a href="../../../../index.html#key420">identity</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key299">tip 230</a>, <a href="../../../../index.html#key300">transformation</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::transform::identity</b> <i class="arg">chan</i></a></dt>
<dd><p>This command creates an identity transformation on top of the channel
<i class="arg">chan</i> and returns its handle.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key298">channel transformation</a>, <a href="../../../../index.html#key420">identity</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key299">tip 230</a>, <a href="../../../../index.html#key300">transformation</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_transform/limitsize.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
<dd><p>This command creates a size limiting transformation on top of the
channel <i class="arg">chan</i> and returns its handle.</p>
<p><i class="arg">max</i> is the number of bytes which can be read from the
channel before EOF is signaled by the transformation. Note that
popping the transformation clears the EOF it generated as well.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key297">channel transformation</a>, <a href="../../../../index.html#key705">limitsize</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key706">size limit</a>, <a href="../../../../index.html#key299">tip 230</a>, <a href="../../../../index.html#key300">transformation</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
<dd><p>This command creates a size limiting transformation on top of the
channel <i class="arg">chan</i> and returns its handle.</p>
<p><i class="arg">max</i> is the number of bytes which can be read from the
channel before EOF is signaled by the transformation. Note that
popping the transformation clears the EOF it generated as well.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key298">channel transformation</a>, <a href="../../../../index.html#key706">limitsize</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key705">size limit</a>, <a href="../../../../index.html#key299">tip 230</a>, <a href="../../../../index.html#key300">transformation</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_transform/observe.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::transform::observe</b> <i class="arg">chan</i> <i class="arg">logw</i> <i class="arg">logr</i></a></dt>
<dd><p>This command creates an observer transformation on top of the channel
<i class="arg">chan</i> and returns its handle. The channel handles <i class="arg">logr</i> and
<i class="arg">logw</i> are there the data is copied to.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key297">channel transformation</a>, <a href="../../../../index.html#key630">observer</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key631">stream copy</a>, <a href="../../../../index.html#key299">tip 230</a>, <a href="../../../../index.html#key300">transformation</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
<dl class="definitions">
<dt><a name="1"><b class="cmd">::tcl::transform::observe</b> <i class="arg">chan</i> <i class="arg">logw</i> <i class="arg">logr</i></a></dt>
<dd><p>This command creates an observer transformation on top of the channel
<i class="arg">chan</i> and returns its handle. The channel handles <i class="arg">logr</i> and
<i class="arg">logw</i> are there the data is copied to.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key298">channel transformation</a>, <a href="../../../../index.html#key630">observer</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key631">stream copy</a>, <a href="../../../../index.html#key299">tip 230</a>, <a href="../../../../index.html#key300">transformation</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_transform/otp.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
top of the channel <i class="arg">chan</i> and returns its handle.</p>
<p>The two channels <i class="arg">keychanw</i> and <i class="arg">keychanr</i> contain the
one-time pads for the write and read directions, respectively. Their
contents are reads and xored with the bytes written to and read from
the channel.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key297">channel transformation</a>, <a href="../../../../index.html#key179">cipher</a>, <a href="../../../../index.html#key377">decryption</a>, <a href="../../../../index.html#key152">encryption</a>, <a href="../../../../index.html#key783">one time pad</a>, <a href="../../../../index.html#key784">otp</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key299">tip 230</a>, <a href="../../../../index.html#key300">transformation</a>, <a href="../../../../index.html#key57">virtual channel</a>, <a href="../../../../index.html#key782">xor</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
top of the channel <i class="arg">chan</i> and returns its handle.</p>
<p>The two channels <i class="arg">keychanw</i> and <i class="arg">keychanr</i> contain the
one-time pads for the write and read directions, respectively. Their
contents are reads and xored with the bytes written to and read from
the channel.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key298">channel transformation</a>, <a href="../../../../index.html#key179">cipher</a>, <a href="../../../../index.html#key378">decryption</a>, <a href="../../../../index.html#key153">encryption</a>, <a href="../../../../index.html#key783">one time pad</a>, <a href="../../../../index.html#key784">otp</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key299">tip 230</a>, <a href="../../../../index.html#key300">transformation</a>, <a href="../../../../index.html#key57">virtual channel</a>, <a href="../../../../index.html#key782">xor</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_transform/rot.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
alphabet, and is wrapped to the range &quot;0...25&quot;.</p>
<p>Note that this transformation affects only bytes in the ranges
ASCII 65...90, and 97...122, i.e. the upper- and lower-case alphabetic
characters, i.e. &quot;A...Z&quot; and &quot;a...z&quot;. All other bytes are passed
through unchanged.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key379">caesar cipher</a>, <a href="../../../../index.html#key297">channel transformation</a>, <a href="../../../../index.html#key179">cipher</a>, <a href="../../../../index.html#key377">decryption</a>, <a href="../../../../index.html#key152">encryption</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key378">rot</a>, <a href="../../../../index.html#key376">rot13</a>, <a href="../../../../index.html#key299">tip 230</a>, <a href="../../../../index.html#key300">transformation</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
alphabet, and is wrapped to the range &quot;0...25&quot;.</p>
<p>Note that this transformation affects only bytes in the ranges
ASCII 65...90, and 97...122, i.e. the upper- and lower-case alphabetic
characters, i.e. &quot;A...Z&quot; and &quot;a...z&quot;. All other bytes are passed
through unchanged.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key379">caesar cipher</a>, <a href="../../../../index.html#key298">channel transformation</a>, <a href="../../../../index.html#key179">cipher</a>, <a href="../../../../index.html#key378">decryption</a>, <a href="../../../../index.html#key153">encryption</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key377">rot</a>, <a href="../../../../index.html#key376">rot13</a>, <a href="../../../../index.html#key299">tip 230</a>, <a href="../../../../index.html#key300">transformation</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_transform/spacer.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
<i class="arg">chan</i> and returns its handle.</p>
<p>The <i class="arg">space</i> character sequence will be added every <i class="arg">n</i>
bytes of data written, and on the read side the same is done in
reverse, removing the spacing. If <i class="arg">space</i> is not specified it
defaults to a single space character (ASCII 32).</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key297">channel transformation</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key500">spacing</a>, <a href="../../../../index.html#key299">tip 230</a>, <a href="../../../../index.html#key300">transformation</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
<i class="arg">chan</i> and returns its handle.</p>
<p>The <i class="arg">space</i> character sequence will be added every <i class="arg">n</i>
bytes of data written, and on the read side the same is done in
reverse, removing the spacing. If <i class="arg">space</i> is not specified it
defaults to a single space character (ASCII 32).</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key298">channel transformation</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key500">spacing</a>, <a href="../../../../index.html#key299">tip 230</a>, <a href="../../../../index.html#key300">transformation</a>, <a href="../../../../index.html#key57">virtual channel</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/virtchannel_transform/tcllib_zlib.html.

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
<dt><a name="1"><b class="cmd">::tcl::transform::zlib</b> <i class="arg">chan</i> <span class="opt">?<i class="arg">level</i>?</span></a></dt>
<dd><p>This command creates a zlib compressor transformation on top of the
channel <i class="arg">chan</i> and returns its handle.</p>
<p>The <i class="arg">level</i> specifies how much effort is put into the
compression, from <b class="const">0</b> to <b class="const">9</b>, and defaults to <b class="const">4</b>.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key297">channel transformation</a>, <a href="../../../../index.html#key527">compression</a>, <a href="../../../../index.html#key528">decompression</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key299">tip 230</a>, <a href="../../../../index.html#key526">tip 234</a>, <a href="../../../../index.html#key300">transformation</a>, <a href="../../../../index.html#key57">virtual channel</a>, <a href="../../../../index.html#key525">zlib</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
<dt><a name="1"><b class="cmd">::tcl::transform::zlib</b> <i class="arg">chan</i> <span class="opt">?<i class="arg">level</i>?</span></a></dt>
<dd><p>This command creates a zlib compressor transformation on top of the
channel <i class="arg">chan</i> and returns its handle.</p>
<p>The <i class="arg">level</i> specifies how much effort is put into the
compression, from <b class="const">0</b> to <b class="const">9</b>, and defaults to <b class="const">4</b>.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>virtchannel</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key298">channel transformation</a>, <a href="../../../../index.html#key527">compression</a>, <a href="../../../../index.html#key528">decompression</a>, <a href="../../../../index.html#key60">reflected channel</a>, <a href="../../../../index.html#key299">tip 230</a>, <a href="../../../../index.html#key526">tip 234</a>, <a href="../../../../index.html#key300">transformation</a>, <a href="../../../../index.html#key57">virtual channel</a>, <a href="../../../../index.html#key525">zlib</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Channels</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/wip/wip.html.

117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">GENERAL BEHAVIOUR</a></li>
<li class="section"><a href="#section3">CLASS API</a></li>
<li class="section"><a href="#section4">OBJECT API</a></li>
<li class="section"><a href="#section5">EXAMPLES</a></li>
<li class="section"><a href="#section6">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">GENERAL BEHAVIOUR</a></li>
<li class="section"><a href="#section3">CLASS API</a></li>
<li class="section"><a href="#section4">OBJECT API</a></li>
<li class="section"><a href="#section5">EXAMPLES</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
<dd><p>Like method <b class="method">addl</b>, except the words are specified through
multiple arguments.</p></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">EXAMPLES</a></h2>
<p>No examples yet.</p>
</div>
<div id="section6" class="section"><h2><a name="section6">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>wip</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key33">interpreter</a>, <a href="../../../../index.html#key278">list</a>, <a href="../../../../index.html#key253">word</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007-2010 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|




|








392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
<dd><p>Like method <b class="method">addl</b>, except the words are specified through
multiple arguments.</p></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">EXAMPLES</a></h2>
<p>No examples yet.</p>
</div>
<div id="section6" class="section"><h2><a name="section6">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>wip</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key31">interpreter</a>, <a href="../../../../index.html#key280">list</a>, <a href="../../../../index.html#key253">word</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2007-2010 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/yaml/huddle.html.

118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">TYPE CALLBACK</a></li>
<li class="section"><a href="#section4">How to add type</a></li>
<li class="section"><a href="#section5">WORKING SAMPLE</a></li>
<li class="section"><a href="#section6">LIMITATIONS</a></li>
<li class="section"><a href="#section7">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">TYPE CALLBACK</a></li>
<li class="section"><a href="#section4">How to add type</a></li>
<li class="section"><a href="#section5">WORKING SAMPLE</a></li>
<li class="section"><a href="#section6">LIMITATIONS</a></li>
<li class="section"><a href="#section7">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
  &quot;s&quot;
]
</pre>
</div>
<div id="section6" class="section"><h2><a name="section6">LIMITATIONS</a></h2>
<p>now printing.</p>
</div>
<div id="section7" class="section"><h2><a name="section7">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>huddle</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="yaml.html">yaml</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key189">data exchange</a>, <a href="../../../../index.html#key188">exchange format</a>, <a href="../../../../index.html#key568">huddle</a>, <a href="../../../../index.html#key190">json</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key195">text processing</a>, <a href="../../../../index.html#key569">yaml</a></p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2008 KATO Kanryu &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|



|













579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
  &quot;s&quot;
]
</pre>
</div>
<div id="section6" class="section"><h2><a name="section6">LIMITATIONS</a></h2>
<p>now printing.</p>
</div>
<div id="section7" class="section"><h2><a name="section7">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>huddle</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="yaml.html">yaml</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key189">data exchange</a>, <a href="../../../../index.html#key188">exchange format</a>, <a href="../../../../index.html#key568">huddle</a>, <a href="../../../../index.html#key190">json</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key195">text processing</a>, <a href="../../../../index.html#key569">yaml</a></p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2008 KATO Kanryu &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/yaml/yaml.html.

116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">LIMITATIONS</a></li>
<li class="section"><a href="#section5">BUGS, IDEAS, FEEDBACK</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">







|







116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">EXAMPLES</a></li>
<li class="section"><a href="#section4">LIMITATIONS</a></li>
<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
<li><a href="#5"><b class="cmd">::yaml::list2yaml</b> <i class="arg">list</i> <span class="opt">?<i class="arg">indent</i>?</span> <span class="opt">?<i class="arg">wordwrap</i>?</span></a></li>
<li><a href="#6"><b class="cmd">::yaml::huddle2yaml</b> <i class="arg">huddle</i> <span class="opt">?<i class="arg">indent</i>?</span> <span class="opt">?<i class="arg">wordwrap</i>?</span></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>The <b class="package">yaml</b> package provides a simple Tcl-only library for parsing the
YAML <a href="http://www.yaml.org/">http://www.yaml.org/</a> data exchange format as specified in 
<a href="http://www.yaml.org/spec/1.1/">http://www.yaml.org/spec/1.1/</a>.</p>
<p>The <b class="package">yaml</b> package returns
data as a Tcl <b class="cmd">dict</b>.  Either the <b class="package">dict</b> package or Tcl 8.5 is
required for use.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">







|







140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
<li><a href="#5"><b class="cmd">::yaml::list2yaml</b> <i class="arg">list</i> <span class="opt">?<i class="arg">indent</i>?</span> <span class="opt">?<i class="arg">wordwrap</i>?</span></a></li>
<li><a href="#6"><b class="cmd">::yaml::huddle2yaml</b> <i class="arg">huddle</i> <span class="opt">?<i class="arg">indent</i>?</span> <span class="opt">?<i class="arg">wordwrap</i>?</span></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>The <b class="package">yaml</b> package provides a simple Tcl-only library for parsing the
YAML <a href="http://www.yaml.org/">http://www.yaml.org/</a> data exchange format as specified in
<a href="http://www.yaml.org/spec/1.1/">http://www.yaml.org/spec/1.1/</a>.</p>
<p>The <b class="package">yaml</b> package returns
data as a Tcl <b class="cmd">dict</b>.  Either the <b class="package">dict</b> package or Tcl 8.5 is
required for use.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
<p>An example of a yaml object converted to Tcl.  A yaml object is returned as a
multi-element list (a dict).</p>
<pre class="example">{
---
- [name        , hr, avg  ]
- [Mark McGwire, 65, 0.278]
- [Sammy Sosa  , 63, 0.288]
- 
  Mark McGwire: {hr: 65, avg: 0.278}
  Sammy Sosa: { hr: 63, avg: 0.288}
}
=&gt;
{name hr avg} {{Mark McGwire} 65 0.278} {{Sammy Sosa} 63 0.288} {{Mark McGwire} {hr 65 avg 0.278} {Sammy Sosa} {hr 63 avg 0.288}}
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">LIMITATIONS</a></h2>
<p>tag parser not implemented. currentry, tags are merely ignored.</p>
<p>Only Anchor =&gt; Aliases ordering. back alias-referring is not supported.</p>
<p>Too many braces, or too few braces.</p>
<p>Not enough character set of line feeds. Please use only &quot;\n&quot; as line breaks.</p>
</div>
<div id="section5" class="section"><h2><a name="section5">BUGS, IDEAS, FEEDBACK</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>yaml</em> of the
<a href="http://sourceforge.net/tracker/?group_id=12883">Tcllib SF Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../base64/base64.html">base64</a>, <a href="huddle.html">huddle</a>, <a href="../json/json.html">json</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key189">data exchange</a>, <a href="../../../../index.html#key568">huddle</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key195">text processing</a>, <a href="../../../../index.html#key569">yaml</a></p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2008 KATO Kanryu &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|













|



|













248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
<p>An example of a yaml object converted to Tcl.  A yaml object is returned as a
multi-element list (a dict).</p>
<pre class="example">{
---
- [name        , hr, avg  ]
- [Mark McGwire, 65, 0.278]
- [Sammy Sosa  , 63, 0.288]
-
  Mark McGwire: {hr: 65, avg: 0.278}
  Sammy Sosa: { hr: 63, avg: 0.288}
}
=&gt;
{name hr avg} {{Mark McGwire} 65 0.278} {{Sammy Sosa} 63 0.288} {{Mark McGwire} {hr 65 avg 0.278} {Sammy Sosa} {hr 63 avg 0.288}}
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">LIMITATIONS</a></h2>
<p>tag parser not implemented. currentry, tags are merely ignored.</p>
<p>Only Anchor =&gt; Aliases ordering. back alias-referring is not supported.</p>
<p>Too many braces, or too few braces.</p>
<p>Not enough character set of line feeds. Please use only &quot;\n&quot; as line breaks.</p>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>yaml</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
</div>
<div id="see-also" class="section"><h2><a name="see-also">See Also</a></h2>
<p><a href="../base64/base64.html">base64</a>, <a href="huddle.html">huddle</a>, <a href="../json/json.html">json</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key189">data exchange</a>, <a href="../../../../index.html#key568">huddle</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key195">text processing</a>, <a href="../../../../index.html#key569">yaml</a></p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2008 KATO Kanryu &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to examples/mime/mbot/README.html.

123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
and "USER" is your username.
</p>
<a name="rfc.section.1.1"></a><h4><a name="anchor2">1.1</a>&nbsp;Requirements</h4>

<p>This package requires:

<ul class="text">
<li><a href="http://sourceforge.net/projects/tcl/">Tcl version 8.3</a>
or later
</li>
<li><a href="http://sourceforge.net/projects/tcllib/">tcl lib</a>
</li>
<li><a href="http://sourceforge.net/projects/tclx/">TclX version 8.0</a>
or later
</li>
</ul><p>
</p>
<a name="rfc.section.1.2"></a><h4><a name="anchor3">1.2</a>&nbsp;Copyrights</h4>







|


|







123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
and "USER" is your username.
</p>
<a name="rfc.section.1.1"></a><h4><a name="anchor2">1.1</a>&nbsp;Requirements</h4>

<p>This package requires:

<ul class="text">
<li><a href="http://core.tcl.tk/tcl/">Tcl version 8.3</a>
or later
</li>
<li><a href="http://core.tcl.tk/tcllib/">tcl lib</a>
</li>
<li><a href="http://sourceforge.net/projects/tclx/">TclX version 8.0</a>
or later
</li>
</ul><p>
</p>
<a name="rfc.section.1.2"></a><h4><a name="anchor3">1.2</a>&nbsp;Copyrights</h4>

Changes to examples/mime/mbot/README.txt.

615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
Rose                                                           [Page 11]

README                  The personal.tcl Mailbot           February 2002


References

   [1]  <http://sourceforge.net/projects/tcl/>

   [2]  <http://sourceforge.net/projects/tcllib/>

   [3]  <http://sourceforge.net/projects/tclx/>


Author's Address

   Marshall T. Rose







|

|







615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
Rose                                                           [Page 11]

README                  The personal.tcl Mailbot           February 2002


References

   [1]  <http://core.tcl.tk/tcl/>

   [2]  <http://core.tcl.tk/tcllib/>

   [3]  <http://sourceforge.net/projects/tclx/>


Author's Address

   Marshall T. Rose

Changes to examples/mime/mbot/README.xml.

44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
"FILE" is the name of your configuration file,
and "USER" is your username.</postamble>
</figure>

<section title="Requirements">
<t>This package requires:
<list style="symbols">
<t><eref target="http://sourceforge.net/projects/tcl/">Tcl version 8.3</eref>
or later</t>

<t><eref target="http://sourceforge.net/projects/tcllib/">tcl lib</eref></t>

<t><eref target="http://sourceforge.net/projects/tclx/">TclX version 8.0</eref>
or later</t>
</list></t>
</section>

<section title="Copyrights">







|


|







44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
"FILE" is the name of your configuration file,
and "USER" is your username.</postamble>
</figure>

<section title="Requirements">
<t>This package requires:
<list style="symbols">
<t><eref target="http://core.tcl.tk/tcl/">Tcl version 8.3</eref>
or later</t>

<t><eref target="http://core.tcl.tk/tcllib/">tcl lib</eref></t>

<t><eref target="http://sourceforge.net/projects/tclx/">TclX version 8.0</eref>
or later</t>
</list></t>
</section>

<section title="Copyrights">

Changes to modules/aes/aes.man.

1
2









3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin aes n 1.1.1]









[copyright {2005, Pat Thoyts <[email protected]>}]
[copyright {2012-2013, Andreas Kupries <[email protected]>}]
[moddesc {Advanced Encryption Standard (AES)}]
[titledesc {Implementation of the AES block cipher}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require aes [opt 1.1.1]]


>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin aes n 1.1.1]
[see_also blowfish(n)]
[see_also des(n)]
[see_also md5(n)]
[see_also sha1(n)]
[keywords aes]
[keywords {block cipher}]
[keywords {data integrity}]
[keywords encryption]
[keywords security]
[copyright {2005, Pat Thoyts <[email protected]>}]
[copyright {2012-2013, Andreas Kupries <[email protected]>}]
[moddesc {Advanced Encryption Standard (AES)}]
[titledesc {Implementation of the AES block cipher}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require aes [opt 1.1.1]]
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
by the argument or on the data read from the [arg "-in"] channel. If
an [arg "-out"] channel is given then the result will be written to
this channel.

[para]

The [arg -key] option must be given. This parameter takes a binary
string of either 16, 24 or 32 bytes in length and is used to generate the 
key schedule.

[para]

The [arg -mode] and [arg -dir] options are optional and default to cbc
mode and encrypt respectively. The initialization vector [arg -iv]
takes a 16 byte binary argument which defaults to all zeros.







|







44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
by the argument or on the data read from the [arg "-in"] channel. If
an [arg "-out"] channel is given then the result will be written to
this channel.

[para]

The [arg -key] option must be given. This parameter takes a binary
string of either 16, 24 or 32 bytes in length and is used to generate the
key schedule.

[para]

The [arg -mode] and [arg -dir] options are optional and default to cbc
mode and encrypt respectively. The initialization vector [arg -iv]
takes a 16 byte binary argument which defaults to all zeros.
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
[enum]
    "Advanced Encryption Standard",
    Federal Information Processing Standards Publication 197, 2001
    ([uri http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf])

[list_end]

[see_also des(n) md5(n) sha1(n) blowfish(n)]

[section AUTHORS]
Thorsten Schloermann, Pat Thoyts

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph aes] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords aes {block cipher} security encryption {data integrity}]
[manpage_end]







<
<



<
|
<
<
|
<
<
<
<
<
<
<
<

155
156
157
158
159
160
161


162
163
164

165


166








167
[enum]
    "Advanced Encryption Standard",
    Federal Information Processing Standards Publication 197, 2001
    ([uri http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf])

[list_end]



[section AUTHORS]
Thorsten Schloermann, Pat Thoyts


[vset CATEGORY aes]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/amazon-s3/S3.man.

1



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
[manpage_begin S3 n 1.0.0]



[moddesc {Amazon S3 Web Service Utilities}]
[titledesc {Amazon S3 Web Service Interface}]
[category  Networking]
[copyright {Copyright 2006,2008 Darren New. All Rights Reserved. See LICENSE.TXT for terms.}]
[require Tcl 8.5]
[require sha1 1.0]
[require md5 2.0]
[require base64 2.3]
[require xsxp 1.0]
[keywords amazon s3 cloud]
[description]
This package provides access to Amazon's Simple Storage Solution web service.

[para]
As a quick summary, Amazon Simple Storage Solution
provides a for-fee web service allowing the storage of arbitrary data as
"resources" within "buckets" online.  
See [uri http://www.amazonaws.com/] for details on that system.  
Access to the service is via HTTP (SOAP or REST).  Much of this
documentation will not make sense if you're not familiar with
the terms and functionality of the Amazon S3 service.

[para]
This package provides services for reading and writing
the data items via the REST interface.  It also provides some
higher-level operations.  Other packages in the same distribution
provide for even more functionality.

[para]
Copyright 2006 Darren New. All Rights Reserved.
NO WARRANTIES OF ANY TYPE ARE PROVIDED.
COPYING OR USE INDEMNIFIES THE AUTHOR IN ALL WAYS.
This software is licensed under essentially the same 
terms as Tcl. See LICENSE.txt for the terms.

[section "ERROR REPORTING"]

The error reporting from this package makes use of $errorCode to 
provide more details on what happened than simply throwing an error.
Any error caught by the S3 package (and we try to catch them all)
will return with an $errorCode being a list having at least three
elements. In all cases, the first element will be "S3". The second
element will take on one of six values, with that element defining
the value of the third and subsequent elements. S3::REST does not
throw an error, but rather returns a dictionary with the keys "error", 
"errorInfo", and "errorCode" set. This allows for reliable background
use. The possible second elements are these:

[list_begin definitions]
[def usage] The usage of the package is incorrect. For example,
a command has been invoked which requires the library to be configured
before the library has been configured, or an invalid combination of
options has been specified. The third element of $errorCode supplies
the name of the parameter that was wrong. The fourth usually provides
the arguments that were actually supplied to the throwing proc, unless
the usage error isn't confined to a single proc.

[def local] Something happened on the local system which threw 
an error. For example, a request to upload or download a file was made
and the file permissions denied that sort of access. The third element
of $errorCode is the original $errorCode.

[def socket] Something happened with the socket. It closed 
prematurely, or some other condition of failure-to-communicate-with-Amazon 
was detected. The third element of $errorCode is the original $errorCode,
or sometimes the message from fcopy, or ...?

[def remote] The Amazon web service returned an error code outside
the 2xx range in the HTTP header. In other words, everything went as
documented, except this particular case was documented not to work.
The third element is the dictionary returned from [cmd ::S3::REST]. 
Note that S3::REST itself never throws this error, but just returns
the dictionary. Most of the higher-level commands throw for convenience,
unless an argument indicates they should not. If something is documented
as "not throwing an S3 remote error", it means a status return is set
rather than throwing an error if Amazon returns a non-2XX HTTP result code.

[def notyet] The user obeyed the documentation, but the author
has not yet gotten around to implementing this feature. (Right now,
only TLS support and sophisticated permissions fall into this category,
as well as the S3::Acl command.)

[def xml] The service has returned invalid XML, or XML whose 
schema is unexpected. For the high-level commands that accept
service XML as input for parsing, this may also be thrown.

[list_end]


[section COMMANDS]
This package provides several separate levels of complexity. 

[list_begin itemized]
[item] 
The lowest level simply takes arguments to be sent to the service,
sends them, retrieves the result, and provides it to the caller.
[emph Note:] This layer allows both synchronous and event-driven
processing. It depends on the MD5 and SHA1 and base64 packages
from Tcllib (available at [uri http://core.tcl.tk/tcllib/]). 
Note that [cmd S3::Configure] is required for [cmd S3::REST] to 
work due to the authentication portion, so we put that in the "lowest level."

[item]
The next layer parses the results of calls, allowing for functionality
such as uploading only changed files, synchronizing directories, 
and so on.  This layer depends on the [package TclXML] package as well as the 
included [package xsxp] package. These packages are package required when
these more-sophisticated routines are called, so nothing breaks if
they are not correctly installed.

[item]
Also included is a separate program that uses the library. 
It provides code to parse $argv0 and $argv from the
command line, allowing invocation as a tclkit, etc. 
(Not yet implmented.)

[item]
Another separate program provides a GUI interface allowing drag-and-drop
and other such functionality. (Not yet implemented.)

[item]
Also built on this package is the OddJob program. It is 
a separate program designed to allow distribution of 
computational work units over Amazon's Elastic Compute
Cloud web service.

[list_end]

[para]
The goal is to have at least the bottom-most layers implemented in
pure Tcl using only that which comes from widely-available sources,
such as Tcllib.

[section "LOW LEVEL COMMANDS"]
These commands do not require any packages not listed above.
They talk directly to the service, or they are utility or 
configuration routines. Note that the "xsxp" package was
written to support this package, so it should be available
wherever you got this package.

[list_begin definitions]

[call [cmd S3::Configure] \
[opt "[option -reset] [arg boolean]"] \
[opt "[option -retries] [arg integer]"] \
[opt "[option -accesskeyid] [arg idstring]"] \
[opt "[option -secretaccesskey] [arg idstring]"] \
[opt "[option -service-access-point] [arg FQDN]"] \
[opt "[option -use-tls] [arg boolean]"] \
[opt "[option -default-compare] [arg always|never|exists|missing|newer|date|checksum|different]"] \
[opt "[option -default-separator] [arg string]"] \
[opt "[option -default-acl] [arg private|public-read|public-read-write|authenticated-read|keep|calc]"] \
[opt "[option -default-bucket] [arg bucketname]"] \
]

There is one command for configuration, and that is [cmd S3::Configure].  
If called with no arguments, it returns a
dictionary of key/value pairs listing all current settings.  If called
with one argument, it returns the value of that single argument.  If
called with two or more arguments, it must be called with pairs of
arguments, and it applies the changes in order.  There is only one set
of configuration information per interpreter.
[para]

>
>
>









<






|
|














|




|






|












|




|
|






|











|





<

|


|




|
|




|
|





|

|







|
|












|



















|







1
2
3
4
5
6
7
8
9
10
11
12
13

14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91

92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
[manpage_begin S3 n 1.0.0]
[keywords amazon]
[keywords cloud]
[keywords s3]
[moddesc {Amazon S3 Web Service Utilities}]
[titledesc {Amazon S3 Web Service Interface}]
[category  Networking]
[copyright {Copyright 2006,2008 Darren New. All Rights Reserved. See LICENSE.TXT for terms.}]
[require Tcl 8.5]
[require sha1 1.0]
[require md5 2.0]
[require base64 2.3]
[require xsxp 1.0]

[description]
This package provides access to Amazon's Simple Storage Solution web service.

[para]
As a quick summary, Amazon Simple Storage Solution
provides a for-fee web service allowing the storage of arbitrary data as
"resources" within "buckets" online.
See [uri http://www.amazonaws.com/] for details on that system.
Access to the service is via HTTP (SOAP or REST).  Much of this
documentation will not make sense if you're not familiar with
the terms and functionality of the Amazon S3 service.

[para]
This package provides services for reading and writing
the data items via the REST interface.  It also provides some
higher-level operations.  Other packages in the same distribution
provide for even more functionality.

[para]
Copyright 2006 Darren New. All Rights Reserved.
NO WARRANTIES OF ANY TYPE ARE PROVIDED.
COPYING OR USE INDEMNIFIES THE AUTHOR IN ALL WAYS.
This software is licensed under essentially the same
terms as Tcl. See LICENSE.txt for the terms.

[section "ERROR REPORTING"]

The error reporting from this package makes use of $errorCode to
provide more details on what happened than simply throwing an error.
Any error caught by the S3 package (and we try to catch them all)
will return with an $errorCode being a list having at least three
elements. In all cases, the first element will be "S3". The second
element will take on one of six values, with that element defining
the value of the third and subsequent elements. S3::REST does not
throw an error, but rather returns a dictionary with the keys "error",
"errorInfo", and "errorCode" set. This allows for reliable background
use. The possible second elements are these:

[list_begin definitions]
[def usage] The usage of the package is incorrect. For example,
a command has been invoked which requires the library to be configured
before the library has been configured, or an invalid combination of
options has been specified. The third element of $errorCode supplies
the name of the parameter that was wrong. The fourth usually provides
the arguments that were actually supplied to the throwing proc, unless
the usage error isn't confined to a single proc.

[def local] Something happened on the local system which threw
an error. For example, a request to upload or download a file was made
and the file permissions denied that sort of access. The third element
of $errorCode is the original $errorCode.

[def socket] Something happened with the socket. It closed
prematurely, or some other condition of failure-to-communicate-with-Amazon
was detected. The third element of $errorCode is the original $errorCode,
or sometimes the message from fcopy, or ...?

[def remote] The Amazon web service returned an error code outside
the 2xx range in the HTTP header. In other words, everything went as
documented, except this particular case was documented not to work.
The third element is the dictionary returned from [cmd ::S3::REST].
Note that S3::REST itself never throws this error, but just returns
the dictionary. Most of the higher-level commands throw for convenience,
unless an argument indicates they should not. If something is documented
as "not throwing an S3 remote error", it means a status return is set
rather than throwing an error if Amazon returns a non-2XX HTTP result code.

[def notyet] The user obeyed the documentation, but the author
has not yet gotten around to implementing this feature. (Right now,
only TLS support and sophisticated permissions fall into this category,
as well as the S3::Acl command.)

[def xml] The service has returned invalid XML, or XML whose
schema is unexpected. For the high-level commands that accept
service XML as input for parsing, this may also be thrown.

[list_end]


[section COMMANDS]
This package provides several separate levels of complexity.

[list_begin itemized]
[item]
The lowest level simply takes arguments to be sent to the service,
sends them, retrieves the result, and provides it to the caller.
[emph Note:] This layer allows both synchronous and event-driven
processing. It depends on the MD5 and SHA1 and base64 packages
from Tcllib (available at [uri http://core.tcl.tk/tcllib/]).
Note that [cmd S3::Configure] is required for [cmd S3::REST] to
work due to the authentication portion, so we put that in the "lowest level."

[item]
The next layer parses the results of calls, allowing for functionality
such as uploading only changed files, synchronizing directories,
and so on.  This layer depends on the [package TclXML] package as well as the
included [package xsxp] package. These packages are package required when
these more-sophisticated routines are called, so nothing breaks if
they are not correctly installed.

[item]
Also included is a separate program that uses the library.
It provides code to parse $argv0 and $argv from the
command line, allowing invocation as a tclkit, etc.
(Not yet implmented.)

[item]
Another separate program provides a GUI interface allowing drag-and-drop
and other such functionality. (Not yet implemented.)

[item]
Also built on this package is the OddJob program. It is
a separate program designed to allow distribution of
computational work units over Amazon's Elastic Compute
Cloud web service.

[list_end]

[para]
The goal is to have at least the bottom-most layers implemented in
pure Tcl using only that which comes from widely-available sources,
such as Tcllib.

[section "LOW LEVEL COMMANDS"]
These commands do not require any packages not listed above.
They talk directly to the service, or they are utility or
configuration routines. Note that the "xsxp" package was
written to support this package, so it should be available
wherever you got this package.

[list_begin definitions]

[call [cmd S3::Configure] \
[opt "[option -reset] [arg boolean]"] \
[opt "[option -retries] [arg integer]"] \
[opt "[option -accesskeyid] [arg idstring]"] \
[opt "[option -secretaccesskey] [arg idstring]"] \
[opt "[option -service-access-point] [arg FQDN]"] \
[opt "[option -use-tls] [arg boolean]"] \
[opt "[option -default-compare] [arg always|never|exists|missing|newer|date|checksum|different]"] \
[opt "[option -default-separator] [arg string]"] \
[opt "[option -default-acl] [arg private|public-read|public-read-write|authenticated-read|keep|calc]"] \
[opt "[option -default-bucket] [arg bucketname]"] \
]

There is one command for configuration, and that is [cmd S3::Configure].
If called with no arguments, it returns a
dictionary of key/value pairs listing all current settings.  If called
with one argument, it returns the value of that single argument.  If
called with two or more arguments, it must be called with pairs of
arguments, and it applies the changes in order.  There is only one set
of configuration information per interpreter.
[para]
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
backoff delay will be tried this many times before finally
throwing the 500 error. This applies to each call to [cmd S3::REST]
from the higher-level commands, but not to [cmd S3::REST] itself.
That is, [cmd S3::REST] will always return httpstatus 500 if that's
what it receives. Functions like [cmd S3::Put] will retry the PUT call,
and will also retry the GET and HEAD calls used to do content comparison.
Changing this to 0 will prevent retries and their associated delays.
In addition, socket errors (i.e., errors whose errorCode starts with 
"S3 socket") will be similarly retried after backoffs.

[def "[option -accesskeyid] [arg idstring]"]
[def "[option -secretaccesskey] [arg idstring]"]
Each defaults to an empty string.
These must be set before any calls are made. This is your S3 ID.
Once you sign up for an account, go to [uri http://www.amazonaws.com/],
sign in, go to the "Your Web Services Account" button, pick "AWS 
Access Identifiers", and your access key ID and secret access keys 
will be available. All [cmd S3::REST] calls are authenticated.
Blame Amazon for the poor choice of names.

[def "[option -service-access-point] [arg FQDN]"]
Defaults to "s3.amazonaws.com". This is the fully-qualified domain
name of the server to contact for [cmd S3::REST] calls. You should
probably never need to touch this, unless someone else implements
a compatible service, or you wish to test something by pointing
the library at your own service.

[def "[option -slop-seconds] [arg integer]"]
When comparing dates between Amazon and the local machine,
two dates within this many seconds of each other are considered
the same. Useful for clock drift correction, processing overhead 
time, and so on. 

[def "[option -use-tls] [arg boolean]"]
Defaults to false. This is not yet implemented. If true, [cmd S3::REST] will
negotiate a TLS connection to Amazon. If false, unencrypted connections
are used.

[def "[option -bucket-prefix] [arg string]"]
Defaults to "TclS3".  This string is used by [cmd S3::SuggestBucketName]
if that command is passed an empty string as an argument. It is used
to distinguish different applications using the Amazon service. 
Your application should always set this to keep from interfering with
the buckets of other users of Amazon S3 or with other buckets of the
same user.

[def "[option -default-compare] [arg always|never|exists|missing|newer|date|checksum|different]"]
Defaults to "always." If no -compare is specified on 
[cmd S3::Put], [cmd S3::Get], or [cmd S3::Delete], this comparison is used. 
See those commands for a description of the meaning.

[def "[option -default-separator] [arg string]"]
Defaults to "/". This is currently unused. It might make sense to use
this for [cmd S3::Push] and [cmd S3::Pull], but allowing resources to 
have slashes in their names that aren't marking directories would be
problematic. Hence, this currently does nothing.

[def "[option -default-acl] [arg private|public-read|public-read-write|authenticated-read|keep|calc]"]
Defaults to an empty string. If no -acl argument is provided to [cmd S3::Put] or
[cmd S3::Push], this string is used 
(given as the x-amz-acl header if not keep or calc). If this is also
empty, no x-amz-acl header is generated. 
This is [emph not] used by [cmd S3::REST].

[def "[option -default-bucket] [arg bucketname]"]
If no bucket is given to [cmd S3::GetBucket], [cmd S3::PutBucket],
[cmd S3::Get], [cmd S3::Put], 
[cmd S3::Head], [cmd S3::Acl],
[cmd S3::Delete], [cmd S3::Push], 
[cmd S3::Pull], or [cmd S3::Toss], and if this configuration variable
is not an empty string (and not simply "/"), then this value
will be used for the bucket. This is useful if one program does
a large amount of resource manipulation within a single bucket.

[list_end]

[para]

[call [cmd S3::SuggestBucket] [opt [arg name]]]
The [cmd S3::SuggestBucket] command accepts an optional string as 
a prefix and returns a valid bucket containing the [arg name] argument
and the Access Key ID. This makes the name unique to the owner and
to the application (assuming the application picks a good [arg name] argument).
If no name is provided, 
the name from [cmd S3::Configure] [arg -bucket-prefix] is used. 
If that too is empty (which is not the default), an error is thrown.

[call [cmd S3::REST] [arg dict]]

The [cmd S3::REST] command takes as an argument a dictionary and 
returns a dictionary.  The return dictionary has the same keys
as the input dictionary, and includes additional keys as the result.
The presence or absence of keys in the input dictionary can control
the behavior of the routine.  It never throws an error directly, but 
includes keys "error", "errorInfo", and "errorCode" if necessary.
Some keys are required, some optional. The routine can run either
in blocking or non-blocking mode, based on the presense 
of [option resultvar] in the input dictionary. This requires
the [arg -accesskeyid] and [arg -secretaccesskey] to be configured via
[cmd S3::Configure] before being called.
[para]
The possible input keys are these:
[list_begin definitions]

[def "[option verb] [arg GET|PUT|DELETE|HEAD]"]
This required item indicates the verb to be used.

[def "[option resource] [arg string]"]
This required item indicates the resource to be accessed.
A leading / is added if not there already. It will
be URL-encoded for you if necessary. Do not supply a
resource name that is already URL-encoded.

[def [opt "[option rtype] [arg torrent|acl]"]]
This indicates a torrent or acl resource is being manipulated.
Do not include this in the [option resource] key, or the
"?" separator will get URL-encoded. 

[def [opt "[option parameters] [arg dict]"]]
This optional dictionary provides parameters added to the URL
for the transaction. The keys must be in the correct case
(which is confusing in the Amazon documentation) and the
values must be valid. This can be an empty dictionary or
omitted entirely if no parameters are desired. No other
error checking on parameters is performed.

[def [opt "[option headers] [arg dict]"]]
This optional dictionary provides headers to be added
to the HTTP request. The keys must be in [emph "lower case"]
for the authentication to work. The values must not contain
embedded newlines or carriage returns. This is primarily 
useful for adding x-amz-* headers. Since authentication
is calculated by [cmd S3::REST], do not add that header here.
Since content-type gets its own key, also do not add
that header here.

[def [opt "[option inbody] [arg contentstring]"]]
This optional item, if provided, gives the content that will
be sent. It is sent with a tranfer encoding of binary, and
only the low bytes are used, so use [lb]encoding convertto utf-8[rb] 
if the string is a utf-8 string. This is written all in one blast,
so if you are using non-blocking mode and the [option inbody] is
especially large, you may wind up blocking on the write socket.

[def [opt "[option infile] [arg filename]"]]
This optional item, if provided, and if [option inbody] is not provided,
names the file from which the body of the HTTP message will be
constructed. The file is opened for reading and sent progressively
by [lb]fcopy[rb], so it should not block in non-blocking mode
even if the file is very large. The file is transfered in 
binary mode, so the bytes on your disk will match the bytes 
in your resource. Due to HTTP restrictions, it must be possible to
use [lb]file size[rb] on this file to determine the size at the
start of the transaction.

[def [opt "[option S3chan] [arg channel]"]]
This optional item, if provided, indicates the already-open socket
over which the transaction should be conducted. If not provided,
a connection is made to the service access point specified via
[cmd S3::Configure], which is normally s3.amazonaws.com. If this
is provided, the channel is not closed at the end of the transaction.

[def [opt "[option outchan] [arg channel]"]]
This optional item, if provided, indicates the already-open channel
to which the body returned from S3 should be written. That is, 
to retrieve a large resource, open a file, set the translation mode,
and pass the channel as the value of the key outchan. Output
will be written to the channel in pieces so memory does not fill
up unnecessarily. The channel is not closed at the end of the transaction.

[def [opt "[option resultvar] [arg varname]"]]
This optional item, if provided, indicates that [cmd S3::REST] should
run in non-blocking mode. The [arg varname] should be fully qualified
with respect to namespaces and cannot be local to a proc. If provided,
the result of the [cmd S3::REST] call is assigned to this variable once
everything has completed; use trace or vwait to know when this has happened.
If this key is not provided, the result is simply returned from the 
call to [cmd S3::REST] and no calls to the eventloop are invoked from
within this call.

[def [opt "[option throwsocket] [arg throw|return]"]]
This optional item, if provided, indicates that [cmd S3::REST] should
throw an error if throwmode is throw and a socket error is encountered.
It indicates that [cmd S3::REST] should return the error code in the 
returned dictionary if a socket error is encountered and this is
set to return. If [option throwsocket] is set to [arg return] or
if the call is not blocking, then a socket error (i.e., an error 
whose error code starts with "S3 socket" will be returned in the
dictionary as [option error], [option errorInfo], and [option errorCode].
If a foreground call is made (i.e., [option resultvar] is not provided),
and this option is not provided or is set to [arg throw], then 
[cmd error] will be invoked instead.

[list_end]

[para]
Once the call to [cmd S3::REST] completes, a new dict is returned,
either in the [arg resultvar] or as the result of execution. This dict is 
a copy of the original dict with the results added as new keys. The possible
new keys are these:
[list_begin definitions]

[def "[option error] [arg errorstring]"]
[def "[option errorInfo] [arg errorstring]"]
[def "[option errorCode] [arg errorstring]"]
If an error is caught, these three keys will be set in the result.
Note that [cmd S3::REST] does [emph not] consider a non-2XX HTTP 
return code as an error. The [option errorCode] value will be
formatted according to the [sectref "ERROR REPORTING"] description.
If these are present, other keys described here might not be.

[def "[option httpstatus] [arg threedigits]"]
The three-digit code from the HTTP transaction. 2XX for good, 
5XX for server error, etc.

[def "[option httpmessage] [arg text]"]
The textual result after the status code. "OK" or "Forbidden"
or etc.

[def "[option outbody] [arg contentstring]"]
If [arg outchan] was not specified, this key will hold a 
reference to the (unencoded) contents of the body returned.
If Amazon returned an error (a la the httpstatus not a 2XX value),
the error message will be in [option outbody] or written to
[option outchan] as appropriate.

[def "[option outheaders] [arg dict]"]
This contains a dictionary of headers returned by Amazon.
The keys are always lower case. It's mainly useful for
finding the x-amz-meta-* headers, if any, although things
like last-modified and content-type are also useful. 
The keys of this dictionary are always lower case. 
Both keys and values are trimmed of extraneous whitespace.

[list_end]
[list_end]

[section "HIGH LEVEL COMMANDS"]
The routines in this section all make use of one or more calls 
to [cmd S3::REST] to do their work, then parse and manage the data
in a convenient way.  All these commands throw errors
as described in [sectref "ERROR REPORTING"] unless otherwise noted.
[para]
In all these commands, all arguments are presented as name/value pairs, 
in any order. All the argument names start with a hyphen.
[para]
There are a few options that are common to many
of the commands, and those common options are documented here.
[list_begin definitions]
[def "[option -blocking] [arg boolean]"]
If provided and specified as false, 
then any calls to [cmd S3:REST] will be non-blocking,
and internally these routines will call [lb]vwait[rb] to get
the results. In other words, these routines will return the
same value, but they'll have event loops running while waiting
for Amazon.

[def "[option -parse-xml] [arg xmlstring]"]







|







|
|













|
|









|





|
|




|





|

|




|

|










|



|
|




|



|


|



















|













|








|









|
|













|











|






|


|



|






|








|





|







|









|
|






|




|






|







177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
backoff delay will be tried this many times before finally
throwing the 500 error. This applies to each call to [cmd S3::REST]
from the higher-level commands, but not to [cmd S3::REST] itself.
That is, [cmd S3::REST] will always return httpstatus 500 if that's
what it receives. Functions like [cmd S3::Put] will retry the PUT call,
and will also retry the GET and HEAD calls used to do content comparison.
Changing this to 0 will prevent retries and their associated delays.
In addition, socket errors (i.e., errors whose errorCode starts with
"S3 socket") will be similarly retried after backoffs.

[def "[option -accesskeyid] [arg idstring]"]
[def "[option -secretaccesskey] [arg idstring]"]
Each defaults to an empty string.
These must be set before any calls are made. This is your S3 ID.
Once you sign up for an account, go to [uri http://www.amazonaws.com/],
sign in, go to the "Your Web Services Account" button, pick "AWS
Access Identifiers", and your access key ID and secret access keys
will be available. All [cmd S3::REST] calls are authenticated.
Blame Amazon for the poor choice of names.

[def "[option -service-access-point] [arg FQDN]"]
Defaults to "s3.amazonaws.com". This is the fully-qualified domain
name of the server to contact for [cmd S3::REST] calls. You should
probably never need to touch this, unless someone else implements
a compatible service, or you wish to test something by pointing
the library at your own service.

[def "[option -slop-seconds] [arg integer]"]
When comparing dates between Amazon and the local machine,
two dates within this many seconds of each other are considered
the same. Useful for clock drift correction, processing overhead
time, and so on.

[def "[option -use-tls] [arg boolean]"]
Defaults to false. This is not yet implemented. If true, [cmd S3::REST] will
negotiate a TLS connection to Amazon. If false, unencrypted connections
are used.

[def "[option -bucket-prefix] [arg string]"]
Defaults to "TclS3".  This string is used by [cmd S3::SuggestBucketName]
if that command is passed an empty string as an argument. It is used
to distinguish different applications using the Amazon service.
Your application should always set this to keep from interfering with
the buckets of other users of Amazon S3 or with other buckets of the
same user.

[def "[option -default-compare] [arg always|never|exists|missing|newer|date|checksum|different]"]
Defaults to "always." If no -compare is specified on
[cmd S3::Put], [cmd S3::Get], or [cmd S3::Delete], this comparison is used.
See those commands for a description of the meaning.

[def "[option -default-separator] [arg string]"]
Defaults to "/". This is currently unused. It might make sense to use
this for [cmd S3::Push] and [cmd S3::Pull], but allowing resources to
have slashes in their names that aren't marking directories would be
problematic. Hence, this currently does nothing.

[def "[option -default-acl] [arg private|public-read|public-read-write|authenticated-read|keep|calc]"]
Defaults to an empty string. If no -acl argument is provided to [cmd S3::Put] or
[cmd S3::Push], this string is used
(given as the x-amz-acl header if not keep or calc). If this is also
empty, no x-amz-acl header is generated.
This is [emph not] used by [cmd S3::REST].

[def "[option -default-bucket] [arg bucketname]"]
If no bucket is given to [cmd S3::GetBucket], [cmd S3::PutBucket],
[cmd S3::Get], [cmd S3::Put],
[cmd S3::Head], [cmd S3::Acl],
[cmd S3::Delete], [cmd S3::Push],
[cmd S3::Pull], or [cmd S3::Toss], and if this configuration variable
is not an empty string (and not simply "/"), then this value
will be used for the bucket. This is useful if one program does
a large amount of resource manipulation within a single bucket.

[list_end]

[para]

[call [cmd S3::SuggestBucket] [opt [arg name]]]
The [cmd S3::SuggestBucket] command accepts an optional string as
a prefix and returns a valid bucket containing the [arg name] argument
and the Access Key ID. This makes the name unique to the owner and
to the application (assuming the application picks a good [arg name] argument).
If no name is provided,
the name from [cmd S3::Configure] [arg -bucket-prefix] is used.
If that too is empty (which is not the default), an error is thrown.

[call [cmd S3::REST] [arg dict]]

The [cmd S3::REST] command takes as an argument a dictionary and
returns a dictionary.  The return dictionary has the same keys
as the input dictionary, and includes additional keys as the result.
The presence or absence of keys in the input dictionary can control
the behavior of the routine.  It never throws an error directly, but
includes keys "error", "errorInfo", and "errorCode" if necessary.
Some keys are required, some optional. The routine can run either
in blocking or non-blocking mode, based on the presense
of [option resultvar] in the input dictionary. This requires
the [arg -accesskeyid] and [arg -secretaccesskey] to be configured via
[cmd S3::Configure] before being called.
[para]
The possible input keys are these:
[list_begin definitions]

[def "[option verb] [arg GET|PUT|DELETE|HEAD]"]
This required item indicates the verb to be used.

[def "[option resource] [arg string]"]
This required item indicates the resource to be accessed.
A leading / is added if not there already. It will
be URL-encoded for you if necessary. Do not supply a
resource name that is already URL-encoded.

[def [opt "[option rtype] [arg torrent|acl]"]]
This indicates a torrent or acl resource is being manipulated.
Do not include this in the [option resource] key, or the
"?" separator will get URL-encoded.

[def [opt "[option parameters] [arg dict]"]]
This optional dictionary provides parameters added to the URL
for the transaction. The keys must be in the correct case
(which is confusing in the Amazon documentation) and the
values must be valid. This can be an empty dictionary or
omitted entirely if no parameters are desired. No other
error checking on parameters is performed.

[def [opt "[option headers] [arg dict]"]]
This optional dictionary provides headers to be added
to the HTTP request. The keys must be in [emph "lower case"]
for the authentication to work. The values must not contain
embedded newlines or carriage returns. This is primarily
useful for adding x-amz-* headers. Since authentication
is calculated by [cmd S3::REST], do not add that header here.
Since content-type gets its own key, also do not add
that header here.

[def [opt "[option inbody] [arg contentstring]"]]
This optional item, if provided, gives the content that will
be sent. It is sent with a tranfer encoding of binary, and
only the low bytes are used, so use [lb]encoding convertto utf-8[rb]
if the string is a utf-8 string. This is written all in one blast,
so if you are using non-blocking mode and the [option inbody] is
especially large, you may wind up blocking on the write socket.

[def [opt "[option infile] [arg filename]"]]
This optional item, if provided, and if [option inbody] is not provided,
names the file from which the body of the HTTP message will be
constructed. The file is opened for reading and sent progressively
by [lb]fcopy[rb], so it should not block in non-blocking mode
even if the file is very large. The file is transfered in
binary mode, so the bytes on your disk will match the bytes
in your resource. Due to HTTP restrictions, it must be possible to
use [lb]file size[rb] on this file to determine the size at the
start of the transaction.

[def [opt "[option S3chan] [arg channel]"]]
This optional item, if provided, indicates the already-open socket
over which the transaction should be conducted. If not provided,
a connection is made to the service access point specified via
[cmd S3::Configure], which is normally s3.amazonaws.com. If this
is provided, the channel is not closed at the end of the transaction.

[def [opt "[option outchan] [arg channel]"]]
This optional item, if provided, indicates the already-open channel
to which the body returned from S3 should be written. That is,
to retrieve a large resource, open a file, set the translation mode,
and pass the channel as the value of the key outchan. Output
will be written to the channel in pieces so memory does not fill
up unnecessarily. The channel is not closed at the end of the transaction.

[def [opt "[option resultvar] [arg varname]"]]
This optional item, if provided, indicates that [cmd S3::REST] should
run in non-blocking mode. The [arg varname] should be fully qualified
with respect to namespaces and cannot be local to a proc. If provided,
the result of the [cmd S3::REST] call is assigned to this variable once
everything has completed; use trace or vwait to know when this has happened.
If this key is not provided, the result is simply returned from the
call to [cmd S3::REST] and no calls to the eventloop are invoked from
within this call.

[def [opt "[option throwsocket] [arg throw|return]"]]
This optional item, if provided, indicates that [cmd S3::REST] should
throw an error if throwmode is throw and a socket error is encountered.
It indicates that [cmd S3::REST] should return the error code in the
returned dictionary if a socket error is encountered and this is
set to return. If [option throwsocket] is set to [arg return] or
if the call is not blocking, then a socket error (i.e., an error
whose error code starts with "S3 socket" will be returned in the
dictionary as [option error], [option errorInfo], and [option errorCode].
If a foreground call is made (i.e., [option resultvar] is not provided),
and this option is not provided or is set to [arg throw], then
[cmd error] will be invoked instead.

[list_end]

[para]
Once the call to [cmd S3::REST] completes, a new dict is returned,
either in the [arg resultvar] or as the result of execution. This dict is
a copy of the original dict with the results added as new keys. The possible
new keys are these:
[list_begin definitions]

[def "[option error] [arg errorstring]"]
[def "[option errorInfo] [arg errorstring]"]
[def "[option errorCode] [arg errorstring]"]
If an error is caught, these three keys will be set in the result.
Note that [cmd S3::REST] does [emph not] consider a non-2XX HTTP
return code as an error. The [option errorCode] value will be
formatted according to the [sectref "ERROR REPORTING"] description.
If these are present, other keys described here might not be.

[def "[option httpstatus] [arg threedigits]"]
The three-digit code from the HTTP transaction. 2XX for good,
5XX for server error, etc.

[def "[option httpmessage] [arg text]"]
The textual result after the status code. "OK" or "Forbidden"
or etc.

[def "[option outbody] [arg contentstring]"]
If [arg outchan] was not specified, this key will hold a
reference to the (unencoded) contents of the body returned.
If Amazon returned an error (a la the httpstatus not a 2XX value),
the error message will be in [option outbody] or written to
[option outchan] as appropriate.

[def "[option outheaders] [arg dict]"]
This contains a dictionary of headers returned by Amazon.
The keys are always lower case. It's mainly useful for
finding the x-amz-meta-* headers, if any, although things
like last-modified and content-type are also useful.
The keys of this dictionary are always lower case.
Both keys and values are trimmed of extraneous whitespace.

[list_end]
[list_end]

[section "HIGH LEVEL COMMANDS"]
The routines in this section all make use of one or more calls
to [cmd S3::REST] to do their work, then parse and manage the data
in a convenient way.  All these commands throw errors
as described in [sectref "ERROR REPORTING"] unless otherwise noted.
[para]
In all these commands, all arguments are presented as name/value pairs,
in any order. All the argument names start with a hyphen.
[para]
There are a few options that are common to many
of the commands, and those common options are documented here.
[list_begin definitions]
[def "[option -blocking] [arg boolean]"]
If provided and specified as false,
then any calls to [cmd S3:REST] will be non-blocking,
and internally these routines will call [lb]vwait[rb] to get
the results. In other words, these routines will return the
same value, but they'll have event loops running while waiting
for Amazon.

[def "[option -parse-xml] [arg xmlstring]"]
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
Almost every high-level command needs to know what bucket
the resources are in. This option specifies that. (Only the
command to list available buckets does not require this parameter.)
This does not need to be URL-encoded, even if it contains
special or non-ASCII characters. May or may not contain leading
or trailing spaces - commands normalize the bucket. If this is
not supplied, the value is taken from [cmd "S3::Configure -default-bucket"]
if that string isn't empty. Note that spaces and slashes are 
always trimmed from both ends and the rest must leave a valid bucket.

[def "[option -resource] [arg resourcename]"]
This specifies the resource of interest within the bucket. 
It may or may not start with a slash - both cases are handled.
This does not need to be URL-encoded, even if it contains
special or non-ASCII characters.

[def "[option -compare] [arg always|never|exists|missing|newer|date|checksum|different]"]
When commands copy resources to files or files to resources, the caller may specify that the copy should be skipped if the contents are the same. This argument specifies the conditions under which the files should be copied. If it is not passed, the result of [cmd "S3::Configure -default-compare"] is used, which in turn defaults to "always." The meanings of the various values are these:








|



|







444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
Almost every high-level command needs to know what bucket
the resources are in. This option specifies that. (Only the
command to list available buckets does not require this parameter.)
This does not need to be URL-encoded, even if it contains
special or non-ASCII characters. May or may not contain leading
or trailing spaces - commands normalize the bucket. If this is
not supplied, the value is taken from [cmd "S3::Configure -default-bucket"]
if that string isn't empty. Note that spaces and slashes are
always trimmed from both ends and the rest must leave a valid bucket.

[def "[option -resource] [arg resourcename]"]
This specifies the resource of interest within the bucket.
It may or may not start with a slash - both cases are handled.
This does not need to be URL-encoded, even if it contains
special or non-ASCII characters.

[def "[option -compare] [arg always|never|exists|missing|newer|date|checksum|different]"]
When commands copy resources to files or files to resources, the caller may specify that the copy should be skipped if the contents are the same. This argument specifies the conditions under which the files should be copied. If it is not passed, the result of [cmd "S3::Configure -default-compare"] is used, which in turn defaults to "always." The meanings of the various values are these:

469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
[def [arg exists]]
Copy the data only if the destination already exists.

[def [arg missing]]
Copy the data only if the destination does not already exist.

[def [arg newer]]
Copy the data if the destination is missing, or if the date on the source is 
newer than the date on the destination by at 
least [cmd "S3::Configure -slop-seconds"] seconds. If the source is 
Amazon, the date is taken from the Last-Modified header. If the 
source is local, it is taken as the mtime of the file. If the source data
is specified in a string rather than a file, it is taken as right now,
via [lb]clock seconds[rb].

[def [arg date]]
Like [arg newer], except copy if the date is newer [emph or] older.

[def [arg checksum]]
Calculate the MD5 checksum on the local file or string, ask Amazon for the eTag
of the resource, and copy the data if they're different. Copy the data
also if the destination is missing. Note that this can be slow with
large local files unless the C version of the MD5 support is available.

[def [arg different]]
Copy the data if the destination does not exist. 
If the destination exists and an actual file name was specified 
(rather than a content string), 
and the date on the file differs from the date on the resource,
copy the data. 
If the data is provided as a content string, the "date" is treated 
as "right now", so it will likely always differ unless slop-seconds is large.
If the dates are the same, the MD5 checksums are compared, and the
data is copied if the checksums differ.
[list_end]

[para]
Note that "newer" and "date" don't care about the contents, and "checksum" doesn't care about the dates, but "different" checks both.


[call [cmd S3::ListAllMyBuckets] \
[opt "[option -blocking] [arg boolean]"] \
[opt "[option -parse-xml] [arg xmlstring]"] \
[opt "[option -result-type] [arg REST|xml|pxml|dict|names|owner]"] \
]
This routine performs a GET on the Amazon S3 service, which is
defined to return a list of buckets owned by the account identified
by the authorization header. (Blame Amazon for the dumb names.)

[list_begin definitions]
[def "[option -blocking] [arg boolean]"] 
See above for standard definition.

[def "[option -parse-xml] [arg xmlstring]"] 
See above for standard definition.

[def "[option -result-type] [arg REST]"]
The dictionary returned by [cmd S3::REST] is the return value of [cmd S3::ListAllMyBuckets]. In this case, a non-2XX httpstatus will not throw an error. You may not combine this with [arg -parse-xml].

[def "[option -result-type] [arg xml]"]
The raw XML of the body is returned as the result (with no encoding applied).

[def "[option -result-type] [arg pxml]"]
The XML of the body as parsed by [cmd xsxp::parse] is returned.

[def "[option -result-type] [arg dict]"]
A dictionary of interesting portions of the XML is returned. The dictionary contains the following keys:

[list_begin definitions]
[def Owner/ID] The Amazon AWS ID (in hex) of the owner of the bucket.
[def Owner/DisplayName] The Amazon AWS ID's Display Name.
[def Bucket/Name] A list of names, one for each bucket.
[def Bucket/CreationDate] A list of dates, one for each bucket, 
in the same order as Bucket/Name, in ISO format (as returned by Amazon).
[list_end]

[para]

[def "[option -result-type] [arg names]"]
A list of bucket names is returned with all other information stripped out.
This is the default result type for this command.

[def "[option -result-type] [arg owner]"]
A list containing two elements is returned. The first element is 
the owner's ID, and the second is the owner's display name.

[list_end]

[para]

[call [cmd S3::PutBucket] \







|
|
|
|














|
|
|

|
|







<











|


|


















|










|







470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507

508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
[def [arg exists]]
Copy the data only if the destination already exists.

[def [arg missing]]
Copy the data only if the destination does not already exist.

[def [arg newer]]
Copy the data if the destination is missing, or if the date on the source is
newer than the date on the destination by at
least [cmd "S3::Configure -slop-seconds"] seconds. If the source is
Amazon, the date is taken from the Last-Modified header. If the
source is local, it is taken as the mtime of the file. If the source data
is specified in a string rather than a file, it is taken as right now,
via [lb]clock seconds[rb].

[def [arg date]]
Like [arg newer], except copy if the date is newer [emph or] older.

[def [arg checksum]]
Calculate the MD5 checksum on the local file or string, ask Amazon for the eTag
of the resource, and copy the data if they're different. Copy the data
also if the destination is missing. Note that this can be slow with
large local files unless the C version of the MD5 support is available.

[def [arg different]]
Copy the data if the destination does not exist.
If the destination exists and an actual file name was specified
(rather than a content string),
and the date on the file differs from the date on the resource,
copy the data.
If the data is provided as a content string, the "date" is treated
as "right now", so it will likely always differ unless slop-seconds is large.
If the dates are the same, the MD5 checksums are compared, and the
data is copied if the checksums differ.
[list_end]

[para]
Note that "newer" and "date" don't care about the contents, and "checksum" doesn't care about the dates, but "different" checks both.


[call [cmd S3::ListAllMyBuckets] \
[opt "[option -blocking] [arg boolean]"] \
[opt "[option -parse-xml] [arg xmlstring]"] \
[opt "[option -result-type] [arg REST|xml|pxml|dict|names|owner]"] \
]
This routine performs a GET on the Amazon S3 service, which is
defined to return a list of buckets owned by the account identified
by the authorization header. (Blame Amazon for the dumb names.)

[list_begin definitions]
[def "[option -blocking] [arg boolean]"]
See above for standard definition.

[def "[option -parse-xml] [arg xmlstring]"]
See above for standard definition.

[def "[option -result-type] [arg REST]"]
The dictionary returned by [cmd S3::REST] is the return value of [cmd S3::ListAllMyBuckets]. In this case, a non-2XX httpstatus will not throw an error. You may not combine this with [arg -parse-xml].

[def "[option -result-type] [arg xml]"]
The raw XML of the body is returned as the result (with no encoding applied).

[def "[option -result-type] [arg pxml]"]
The XML of the body as parsed by [cmd xsxp::parse] is returned.

[def "[option -result-type] [arg dict]"]
A dictionary of interesting portions of the XML is returned. The dictionary contains the following keys:

[list_begin definitions]
[def Owner/ID] The Amazon AWS ID (in hex) of the owner of the bucket.
[def Owner/DisplayName] The Amazon AWS ID's Display Name.
[def Bucket/Name] A list of names, one for each bucket.
[def Bucket/CreationDate] A list of dates, one for each bucket,
in the same order as Bucket/Name, in ISO format (as returned by Amazon).
[list_end]

[para]

[def "[option -result-type] [arg names]"]
A list of bucket names is returned with all other information stripped out.
This is the default result type for this command.

[def "[option -result-type] [arg owner]"]
A list containing two elements is returned. The first element is
the owner's ID, and the second is the owner's display name.

[list_end]

[para]

[call [cmd S3::PutBucket] \
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614

[call [cmd S3::DeleteBucket] \
[opt "[option -bucket] [arg bucketname]"] \
[opt "[option -blocking] [arg boolean]"] \
]
This command deletes a bucket if it is empty and you have such permission.
Note that Amazon's list of buckets is a global resource, requiring
far-flung synchronization. If you delete a bucket, it may be quite 
a few minutes (or hours) before you can recreate it, yielding "Conflict"
errors until then.

[call [cmd S3::GetBucket] \
[opt "[option -bucket] [arg bucketname]"] \
[opt "[option -blocking] [arg boolean]"] \
[opt "[option -parse-xml] [arg xmlstring]"] \
[opt "[option -max-count] [arg integer]"] \
[opt "[option -prefix] [arg prefixstring]" ] \
[opt "[option -delimiter] [arg delimiterstring]" ] \
[opt "[option -result-type] [arg REST|xml|pxml|names|dict]"] \
]
This lists the contents of a bucket. That is, it returns a directory 
listing of resources within a bucket, rather than transfering any
user data. 
[list_begin definitions]

[def "[option -bucket] [arg bucketname]"] The standard bucket argument.

[def "[option -blocking] [arg boolean]"] The standard blocking argument.

[def "[option -parse-xml] [arg xmlstring]"] The standard parse-xml argument.

[def "[option -max-count] [arg integer]"]
If supplied, this is the most number of records to be returned.
If not supplied, the code will iterate until all records have been found.
Not compatible with -parse-xml. Note that if this is supplied, only
one call to [cmd S3::REST] will be made. Otherwise, enough calls
will be made to exhaust the listing, buffering results in memory,
so take care if you may have huge buckets.

[def "[option -prefix] [arg prefixstring]"]
If present, restricts listing to resources with a particular prefix. One 
leading / is stripped if present.

[def "[option -delimiter] [arg delimiterstring]"]
If present, specifies a delimiter for the listing.
The presence of this will summarize multiple resources
into one entry, as if S3 supported directories. See the
Amazon documentation for details.







|












|

|

















|







567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614

[call [cmd S3::DeleteBucket] \
[opt "[option -bucket] [arg bucketname]"] \
[opt "[option -blocking] [arg boolean]"] \
]
This command deletes a bucket if it is empty and you have such permission.
Note that Amazon's list of buckets is a global resource, requiring
far-flung synchronization. If you delete a bucket, it may be quite
a few minutes (or hours) before you can recreate it, yielding "Conflict"
errors until then.

[call [cmd S3::GetBucket] \
[opt "[option -bucket] [arg bucketname]"] \
[opt "[option -blocking] [arg boolean]"] \
[opt "[option -parse-xml] [arg xmlstring]"] \
[opt "[option -max-count] [arg integer]"] \
[opt "[option -prefix] [arg prefixstring]" ] \
[opt "[option -delimiter] [arg delimiterstring]" ] \
[opt "[option -result-type] [arg REST|xml|pxml|names|dict]"] \
]
This lists the contents of a bucket. That is, it returns a directory
listing of resources within a bucket, rather than transfering any
user data.
[list_begin definitions]

[def "[option -bucket] [arg bucketname]"] The standard bucket argument.

[def "[option -blocking] [arg boolean]"] The standard blocking argument.

[def "[option -parse-xml] [arg xmlstring]"] The standard parse-xml argument.

[def "[option -max-count] [arg integer]"]
If supplied, this is the most number of records to be returned.
If not supplied, the code will iterate until all records have been found.
Not compatible with -parse-xml. Note that if this is supplied, only
one call to [cmd S3::REST] will be made. Otherwise, enough calls
will be made to exhaust the listing, buffering results in memory,
so take care if you may have huge buckets.

[def "[option -prefix] [arg prefixstring]"]
If present, restricts listing to resources with a particular prefix. One
leading / is stripped if present.

[def "[option -delimiter] [arg delimiterstring]"]
If present, specifies a delimiter for the listing.
The presence of this will summarize multiple resources
into one entry, as if S3 supported directories. See the
Amazon documentation for details.
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
If [arg -max-count] is specified, the body returned
from [cmd S3::REST] is returned. If [arg -max-count] is
not specified, a list of all the bodies returned from
the one or more calls to [cmd S3::REST] is returned.

[def pxml]
If [arg -max-count] is specified, the body returned
from [cmd S3::REST] is passed throught [cmd xsxp::parse] and then returned. 
If [arg -max-count] is
not specified, a list of all the bodies returned from
the one or more calls to [cmd S3::REST] are each passed through
[cmd xsxp::parse] and then returned.

[def names]
Returns a list of all names found in either the Contents/Key fields or







|







627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
If [arg -max-count] is specified, the body returned
from [cmd S3::REST] is returned. If [arg -max-count] is
not specified, a list of all the bodies returned from
the one or more calls to [cmd S3::REST] is returned.

[def pxml]
If [arg -max-count] is specified, the body returned
from [cmd S3::REST] is passed throught [cmd xsxp::parse] and then returned.
If [arg -max-count] is
not specified, a list of all the bodies returned from
the one or more calls to [cmd S3::REST] are each passed through
[cmd xsxp::parse] and then returned.

[def names]
Returns a list of all names found in either the Contents/Key fields or
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
[def Marker] From the final call to [cmd S3::REST].
[def MaxKeys] From the final call to [cmd S3::REST].
[def IsTruncated] From the final call to [cmd S3::REST], so
always false if [arg -max-count] is not specified.
[def NextMarker] Always provided if IsTruncated is true, and
calculated of Amazon does not provide it. May be empty if IsTruncated is false.

[def Key] A list of names of resources in the bucket matching the [arg -prefix] and [arg -delimiter] restrictions. 

[def LastModified] A list of times of resources in the bucket, in the same
order as Key, in the format returned by Amazon. (I.e., it is not parsed into 
a seconds-from-epoch.)

[def ETag] A list of entity tags (a.k.a. MD5 checksums) in the same order as Key.

[def Size] A list of sizes in bytes of the resources, in the same order as Key.

[def Owner/ID] A list of owners of the resources in the bucket, in the same order as Key.







|


|







654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
[def Marker] From the final call to [cmd S3::REST].
[def MaxKeys] From the final call to [cmd S3::REST].
[def IsTruncated] From the final call to [cmd S3::REST], so
always false if [arg -max-count] is not specified.
[def NextMarker] Always provided if IsTruncated is true, and
calculated of Amazon does not provide it. May be empty if IsTruncated is false.

[def Key] A list of names of resources in the bucket matching the [arg -prefix] and [arg -delimiter] restrictions.

[def LastModified] A list of times of resources in the bucket, in the same
order as Key, in the format returned by Amazon. (I.e., it is not parsed into
a seconds-from-epoch.)

[def ETag] A list of entity tags (a.k.a. MD5 checksums) in the same order as Key.

[def Size] A list of sizes in bytes of the resources, in the same order as Key.

[def Owner/ID] A list of owners of the resources in the bucket, in the same order as Key.
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
[opt "[option -acl] [arg private|public-read|public-read-write|authenticated-read|calc|keep]"] \
[opt "[option -content-type] [arg contenttypestring]"] \
[opt "[option -x-amz-meta-*] [arg metadatatext]"] \
[opt "[option -compare] [arg comparemode]"] \
]

This command sends data to a resource on Amazon's servers for storage,
using the HTTP PUT command. It returns 0 if the [option -compare] mode 
prevented the transfer, 1 if the transfer worked, or throws an error
if the transfer was attempted but failed. 
Server 5XX errors and S3 socket errors are retried
according to [cmd "S3:Configure -retries"] settings before throwing an error; 
other errors throw immediately.

[list_begin definitions]
[def [option -bucket]]
This specifies the bucket into which the resource will be written.
Leading and/or trailing slashes are removed for you, as are spaces.

[def [option -resource]]
This is the full name of the resource within the bucket. A single 
leading slash is removed, but not a trailing slash. 
Spaces are not trimmed.

[def [option -blocking]]
The standard blocking flag.

[def [option -file]]
If this is specified, the [arg filename] must exist, must be readable, 
and must not be a special or directory file. [lb]file size[rb] must
apply to it and must not change for the lifetime of the call.  The
default content-type is calculated based on the name and/or contents
of the file. Specifying this is an error if [option -content] is 
also specified, but at least one of [option -file] or [option -content] must 
be specified. (The file is allowed to not exist or not be readable if 
[option -compare] [arg never] is specified.)

[def [option -content]]
If this is specified, the [arg contentstring] is sent as the body
of the resource. The content-type defaults to "application/octet-string".
Only the low bytes are sent, so non-ASCII should use the appropriate encoding 
(such as [lb]encoding convertto utf-8[rb]) before passing it 
to this routine, if necessary. Specifying this is an error if [option -file] 
is also specified, but at least one of [option -file] or [option -content] must 
be specified.

[def [option -acl]]
This defaults to [cmd "S3::Configure -default-acl"] if not specified.
It sets the x-amz-acl header on the PUT operation.
If the value provided is [arg calc], the x-amz-acl header is
calculated based on the I/O permissions of the file to be uploaded;
it is an error to specify [arg calc] and [option -content].
If the value provided is [arg keep], the acl of the resource
is read before the PUT (or the default is used if the 
resource does not exist), then set back to what it
was after the PUT (if it existed). An error will occur if 
the resource is successfully written but the kept ACL cannot
be then applied. This should never happen. 
[emph Note:]  [arg calc] is not currently fully implemented. 

[def [option -x-amz-meta-*]]
If any header starts with "-x-amz-meta-", its contents are added to the 
PUT command to be stored as metadata with the resource. Again, no 
encoding is performed, and the metadata should not contain characters
like newlines, carriage returns, and so on. It is best to stick with
simple ASCII strings, or to fix the library in several places. 

[def [option -content-type]]
This overrides the content-type calculated by [option -file] or 
sets the content-type for [option -content].

[def [option -compare]]
This is the standard compare mode argument. [cmd S3::Put] returns
1 if the data was copied or 0 if the data was skipped due to
the comparison mode so indicating it should be skipped.








|

|

|








|
|






|



|
|
|





|
|
|
|









|

|

|
|


|
|


|


|







689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
[opt "[option -acl] [arg private|public-read|public-read-write|authenticated-read|calc|keep]"] \
[opt "[option -content-type] [arg contenttypestring]"] \
[opt "[option -x-amz-meta-*] [arg metadatatext]"] \
[opt "[option -compare] [arg comparemode]"] \
]

This command sends data to a resource on Amazon's servers for storage,
using the HTTP PUT command. It returns 0 if the [option -compare] mode
prevented the transfer, 1 if the transfer worked, or throws an error
if the transfer was attempted but failed.
Server 5XX errors and S3 socket errors are retried
according to [cmd "S3:Configure -retries"] settings before throwing an error;
other errors throw immediately.

[list_begin definitions]
[def [option -bucket]]
This specifies the bucket into which the resource will be written.
Leading and/or trailing slashes are removed for you, as are spaces.

[def [option -resource]]
This is the full name of the resource within the bucket. A single
leading slash is removed, but not a trailing slash.
Spaces are not trimmed.

[def [option -blocking]]
The standard blocking flag.

[def [option -file]]
If this is specified, the [arg filename] must exist, must be readable,
and must not be a special or directory file. [lb]file size[rb] must
apply to it and must not change for the lifetime of the call.  The
default content-type is calculated based on the name and/or contents
of the file. Specifying this is an error if [option -content] is
also specified, but at least one of [option -file] or [option -content] must
be specified. (The file is allowed to not exist or not be readable if
[option -compare] [arg never] is specified.)

[def [option -content]]
If this is specified, the [arg contentstring] is sent as the body
of the resource. The content-type defaults to "application/octet-string".
Only the low bytes are sent, so non-ASCII should use the appropriate encoding
(such as [lb]encoding convertto utf-8[rb]) before passing it
to this routine, if necessary. Specifying this is an error if [option -file]
is also specified, but at least one of [option -file] or [option -content] must
be specified.

[def [option -acl]]
This defaults to [cmd "S3::Configure -default-acl"] if not specified.
It sets the x-amz-acl header on the PUT operation.
If the value provided is [arg calc], the x-amz-acl header is
calculated based on the I/O permissions of the file to be uploaded;
it is an error to specify [arg calc] and [option -content].
If the value provided is [arg keep], the acl of the resource
is read before the PUT (or the default is used if the
resource does not exist), then set back to what it
was after the PUT (if it existed). An error will occur if
the resource is successfully written but the kept ACL cannot
be then applied. This should never happen.
[emph Note:]  [arg calc] is not currently fully implemented.

[def [option -x-amz-meta-*]]
If any header starts with "-x-amz-meta-", its contents are added to the
PUT command to be stored as metadata with the resource. Again, no
encoding is performed, and the metadata should not contain characters
like newlines, carriage returns, and so on. It is best to stick with
simple ASCII strings, or to fix the library in several places.

[def [option -content-type]]
This overrides the content-type calculated by [option -file] or
sets the content-type for [option -content].

[def [option -compare]]
This is the standard compare mode argument. [cmd S3::Put] returns
1 if the data was copied or 0 if the data was skipped due to
the comparison mode so indicating it should be skipped.

773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
[opt "[option -compare] [arg comparemode]"] \
[opt "[option -file] [arg filename]"] \
[opt "[option -content] [arg contentvarname]"] \
[opt "[option -timestamp] [arg aws|now]"] \
[opt "[option -headers] [arg headervarname]"] \
]
This command retrieves data from a resource on Amazon's S3 servers,
using the HTTP GET command. It returns 0 if the [option -compare] mode 
prevented the transfer, 1 if the transfer worked, or throws an error
if the transfer was attempted but failed. Server 5XX errors and S3 socket
errors are are retried
according to [cmd S3:Configure] settings before throwing an error; 
other errors throw immediately. Note that this is always authenticated
as the user configured in via [cmd "S3::Configure -accesskeyid"]. Use
the Tcllib http for unauthenticated GETs.
[list_begin definitions]

[def [option -bucket]]
This specifies the bucket from which the resource will be read.
Leading and/or trailing slashes are removed for you, as are spaces.

[def [option -resource]]
This is the full name of the resource within the bucket. A single 
leading slash is removed, but not a trailing slash. 
Spaces are not trimmed.

[def [option -blocking]]
The standard blocking flag.

[def [option -file]]
If this is specified, the body of the resource will be read into this file, 
incrementally without pulling it entirely into memory first. The parent 
directory must already exist. If the file already exists, it must be
writable. If an error is thrown part-way through the process and the
file already existed, it may be clobbered. If an error is thrown part-way
through the process and the file did not already exist, any partial
bits will be deleted. Specifying this is an error if [option -content]
is also specified, but at least one of [option -file] or [option -content] must 
be specified.

[def [option -timestamp]]
This is only valid in conjunction with [option -file]. It may be specified
as [arg now] or [arg aws]. The default is [arg now]. If [arg now], the file's
modification date is left up to the system. If [arg aws], the file's
mtime is set to match the Last-Modified header on the resource, synchronizing
the two appropriately for [option -compare] [arg date] or 
[option -compare] [arg newer].

[def [option -content]]
If this is specified, the [arg contentvarname] is a variable in the caller's
scope (not necessarily global) that receives the value of the body of
the resource. No encoding is done, so if the resource (for example) represents
a UTF-8 byte sequence, use [lb]encoding convertfrom utf-8[rb] to get a valid
UTF-8 string. If this is specified, the [option -compare] is ignored unless
it is [arg never], in which case no assignment to [arg contentvarname] is 
performed. Specifying this is an error if [option -file] is also specified,
but at least one of [option -file] or [option -content] must be specified.

[def [option -compare]]
This is the standard compare mode argument. [cmd S3::Get] returns
1 if the data was copied or 0 if the data was skipped due to
the comparison mode so indicating it should be skipped.







|



|










|
|






|
|





|







|








|







773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
[opt "[option -compare] [arg comparemode]"] \
[opt "[option -file] [arg filename]"] \
[opt "[option -content] [arg contentvarname]"] \
[opt "[option -timestamp] [arg aws|now]"] \
[opt "[option -headers] [arg headervarname]"] \
]
This command retrieves data from a resource on Amazon's S3 servers,
using the HTTP GET command. It returns 0 if the [option -compare] mode
prevented the transfer, 1 if the transfer worked, or throws an error
if the transfer was attempted but failed. Server 5XX errors and S3 socket
errors are are retried
according to [cmd S3:Configure] settings before throwing an error;
other errors throw immediately. Note that this is always authenticated
as the user configured in via [cmd "S3::Configure -accesskeyid"]. Use
the Tcllib http for unauthenticated GETs.
[list_begin definitions]

[def [option -bucket]]
This specifies the bucket from which the resource will be read.
Leading and/or trailing slashes are removed for you, as are spaces.

[def [option -resource]]
This is the full name of the resource within the bucket. A single
leading slash is removed, but not a trailing slash.
Spaces are not trimmed.

[def [option -blocking]]
The standard blocking flag.

[def [option -file]]
If this is specified, the body of the resource will be read into this file,
incrementally without pulling it entirely into memory first. The parent
directory must already exist. If the file already exists, it must be
writable. If an error is thrown part-way through the process and the
file already existed, it may be clobbered. If an error is thrown part-way
through the process and the file did not already exist, any partial
bits will be deleted. Specifying this is an error if [option -content]
is also specified, but at least one of [option -file] or [option -content] must
be specified.

[def [option -timestamp]]
This is only valid in conjunction with [option -file]. It may be specified
as [arg now] or [arg aws]. The default is [arg now]. If [arg now], the file's
modification date is left up to the system. If [arg aws], the file's
mtime is set to match the Last-Modified header on the resource, synchronizing
the two appropriately for [option -compare] [arg date] or
[option -compare] [arg newer].

[def [option -content]]
If this is specified, the [arg contentvarname] is a variable in the caller's
scope (not necessarily global) that receives the value of the body of
the resource. No encoding is done, so if the resource (for example) represents
a UTF-8 byte sequence, use [lb]encoding convertfrom utf-8[rb] to get a valid
UTF-8 string. If this is specified, the [option -compare] is ignored unless
it is [arg never], in which case no assignment to [arg contentvarname] is
performed. Specifying this is an error if [option -file] is also specified,
but at least one of [option -file] or [option -content] must be specified.

[def [option -compare]]
This is the standard compare mode argument. [cmd S3::Get] returns
1 if the data was copied or 0 if the data was skipped due to
the comparison mode so indicating it should be skipped.
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
[list_begin definitions]

[def [option -bucket]]
This specifies the bucket from which the resource will be read.
Leading and/or trailing slashes are removed for you, as are spaces.

[def [option -resource]]
This is the full name of the resource within the bucket. A single 
leading slash is removed, but not a trailing slash. 
Spaces are not trimmed.

[def [option -blocking]]
The standard blocking flag.

[def [option -dict]]
If specified, the resulting dictionary from the [cmd S3::REST]
call is assigned to the indicated (not necessarily global) variable 
in the caller's scope.

[def [option -headers]]
If specified, the dictionary of headers from the result are assigned
to the indicated (not necessarily global) variable in the caller's scope.

[def [option -status]]
If specified, the indicated (not necessarily global) variable in 
the caller's scope is assigned a 2-element list. The first element is
the 3-digit HTTP status code, while the second element is 
the HTTP message (such as "OK" or "Forbidden").

[list_end]

[call [cmd S3::GetAcl] \
[opt "[option -blocking] [arg boolean]"] \
[opt "[option -bucket] [arg bucketname]"] \
[option -resource] [arg resourcename] \
[opt "[option -result-type] [arg REST|xml|pxml]"] \
]

This command gets the ACL of the indicated resource or throws an
error if it is unavailable. 

[list_begin definitions]
[def "[option -blocking] [arg boolean]"] 
See above for standard definition.

[def [option -bucket]]
This specifies the bucket from which the resource will be read.
Leading and/or trailing slashes are removed for you, as are spaces.

[def [option -resource]]
This is the full name of the resource within the bucket. A single 
leading slash is removed, but not a trailing slash. 
Spaces are not trimmed.

[def "[option -parse-xml] [arg xml]"]
The XML from a previous GetACL can be passed in to be parsed into
dictionary form.  In this case, -result-type must be pxml or dict.

[def "[option -result-type] [arg REST]"]
The dictionary returned by [cmd S3::REST] is the return value of 
[cmd S3::GetAcl].  In this case, a non-2XX httpstatus will not throw an
error.

[def "[option -result-type] [arg xml]"]
The raw XML of the body is returned as the result (with no encoding applied).

[def "[option -result-type] [arg pxml]"]
The XML of the body as parsed by [cmd xsxp::parse] is returned.

[def "[option -result-type] [arg dict]"]
This fetches the ACL, parses it, and returns a dictionary of two elements. 

[para]

The first element has the key "owner" whose value is the canonical ID of the owner of the resource.

[para]








|
|







|







|

|












|


|







|
|







|










|







862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
[list_begin definitions]

[def [option -bucket]]
This specifies the bucket from which the resource will be read.
Leading and/or trailing slashes are removed for you, as are spaces.

[def [option -resource]]
This is the full name of the resource within the bucket. A single
leading slash is removed, but not a trailing slash.
Spaces are not trimmed.

[def [option -blocking]]
The standard blocking flag.

[def [option -dict]]
If specified, the resulting dictionary from the [cmd S3::REST]
call is assigned to the indicated (not necessarily global) variable
in the caller's scope.

[def [option -headers]]
If specified, the dictionary of headers from the result are assigned
to the indicated (not necessarily global) variable in the caller's scope.

[def [option -status]]
If specified, the indicated (not necessarily global) variable in
the caller's scope is assigned a 2-element list. The first element is
the 3-digit HTTP status code, while the second element is
the HTTP message (such as "OK" or "Forbidden").

[list_end]

[call [cmd S3::GetAcl] \
[opt "[option -blocking] [arg boolean]"] \
[opt "[option -bucket] [arg bucketname]"] \
[option -resource] [arg resourcename] \
[opt "[option -result-type] [arg REST|xml|pxml]"] \
]

This command gets the ACL of the indicated resource or throws an
error if it is unavailable.

[list_begin definitions]
[def "[option -blocking] [arg boolean]"]
See above for standard definition.

[def [option -bucket]]
This specifies the bucket from which the resource will be read.
Leading and/or trailing slashes are removed for you, as are spaces.

[def [option -resource]]
This is the full name of the resource within the bucket. A single
leading slash is removed, but not a trailing slash.
Spaces are not trimmed.

[def "[option -parse-xml] [arg xml]"]
The XML from a previous GetACL can be passed in to be parsed into
dictionary form.  In this case, -result-type must be pxml or dict.

[def "[option -result-type] [arg REST]"]
The dictionary returned by [cmd S3::REST] is the return value of
[cmd S3::GetAcl].  In this case, a non-2XX httpstatus will not throw an
error.

[def "[option -result-type] [arg xml]"]
The raw XML of the body is returned as the result (with no encoding applied).

[def "[option -result-type] [arg pxml]"]
The XML of the body as parsed by [cmd xsxp::parse] is returned.

[def "[option -result-type] [arg dict]"]
This fetches the ACL, parses it, and returns a dictionary of two elements.

[para]

The first element has the key "owner" whose value is the canonical ID of the owner of the resource.

[para]

953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
[option -resource] [arg resourcename] \
[opt "[option -acl] [arg new-acl]"] \
]

This sets the ACL on the indicated resource. It returns the XML written to the ACL, or throws an error if anything went wrong.

[list_begin definitions]
[def "[option -blocking] [arg boolean]"] 
See above for standard definition.

[def [option -bucket]]
This specifies the bucket from which the resource will be read.
Leading and/or trailing slashes are removed for you, as are spaces.

[def [option -resource]]
This is the full name of the resource within the bucket. A single 
leading slash is removed, but not a trailing slash. 
Spaces are not trimmed.

[def [option -owner]]
If this is provided, it is assumed to match the owner of the resource.
Otherwise, a GET may need to be issued against the resource to find
the owner. If you already have the owner (such as from a call 
to [cmd S3::GetAcl], you can pass the value of the "owner" key
as the value of this option, and it will be used in the construction
of the XML.

[def [option -acl]]
If this option is specified, it provides the ACL the caller wishes
to write to the resource. If this is not supplied or is empty,
the value is taken from [cmd "S3::Configure -default-acl"].
The ACL is written with a PUT to the ?acl resource. 

[para]

If the value passed to this option
starts with "<", it is taken to be a body to be PUT to the ACL resource.

[para]

If the value matches one of the standard Amazon x-amz-acl headers (i.e.,
a canned access policy), that header is translated to XML and then
applied. The canned access policies are private, public-read,
public-read-write, and authenticated-read (in lower case).

[para]

Otherwise, the value is assumed to be a dictionary formatted as the
"acl" sub-entry within the dict returns by [cmd "S3::GetAcl -result-type dict"].
The proper XML is generated and applied to the resource.  Note that a
value containing "//" is assumed to be a group, a value containing "@"
is assumed to be an AmazonCustomerByEmail, and otherwise the value is
assumed to be a canonical Amazon ID. 

[para]

Note that you cannot change the owner, so calling GetAcl on a resource
owned by one user and applying it via PutAcl on a resource owned by
another user may not do exactly what you expect.








|







|
|





|








|




















|







953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
[option -resource] [arg resourcename] \
[opt "[option -acl] [arg new-acl]"] \
]

This sets the ACL on the indicated resource. It returns the XML written to the ACL, or throws an error if anything went wrong.

[list_begin definitions]
[def "[option -blocking] [arg boolean]"]
See above for standard definition.

[def [option -bucket]]
This specifies the bucket from which the resource will be read.
Leading and/or trailing slashes are removed for you, as are spaces.

[def [option -resource]]
This is the full name of the resource within the bucket. A single
leading slash is removed, but not a trailing slash.
Spaces are not trimmed.

[def [option -owner]]
If this is provided, it is assumed to match the owner of the resource.
Otherwise, a GET may need to be issued against the resource to find
the owner. If you already have the owner (such as from a call
to [cmd S3::GetAcl], you can pass the value of the "owner" key
as the value of this option, and it will be used in the construction
of the XML.

[def [option -acl]]
If this option is specified, it provides the ACL the caller wishes
to write to the resource. If this is not supplied or is empty,
the value is taken from [cmd "S3::Configure -default-acl"].
The ACL is written with a PUT to the ?acl resource.

[para]

If the value passed to this option
starts with "<", it is taken to be a body to be PUT to the ACL resource.

[para]

If the value matches one of the standard Amazon x-amz-acl headers (i.e.,
a canned access policy), that header is translated to XML and then
applied. The canned access policies are private, public-read,
public-read-write, and authenticated-read (in lower case).

[para]

Otherwise, the value is assumed to be a dictionary formatted as the
"acl" sub-entry within the dict returns by [cmd "S3::GetAcl -result-type dict"].
The proper XML is generated and applied to the resource.  Note that a
value containing "//" is assumed to be a group, a value containing "@"
is assumed to be an AmazonCustomerByEmail, and otherwise the value is
assumed to be a canonical Amazon ID.

[para]

Note that you cannot change the owner, so calling GetAcl on a resource
owned by one user and applying it via PutAcl on a resource owned by
another user may not do exactly what you expect.

1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050

[list_begin definitions]
[def [option -bucket]]
This specifies the bucket from which the resource will be deleted.
Leading and/or trailing slashes are removed for you, as are spaces.

[def [option -resource]]
This is the full name of the resource within the bucket. A single 
leading slash is removed, but not a trailing slash. 
Spaces are not trimmed.

[def [option -blocking]]
The standard blocking flag.

[def [option -status]]
If specified, the indicated (not necessarily global) variable 
in the caller's scope is set to a two-element list. The first
element is the 3-digit HTTP status code. The second element
is the HTTP message (such as "OK" or "Forbidden"). Note that
Amazon's DELETE result is 204 on success, that being the 
code indicating no content in the returned body.

[list_end]

[para]

[call [cmd S3::Push] \







|
|






|



|







1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050

[list_begin definitions]
[def [option -bucket]]
This specifies the bucket from which the resource will be deleted.
Leading and/or trailing slashes are removed for you, as are spaces.

[def [option -resource]]
This is the full name of the resource within the bucket. A single
leading slash is removed, but not a trailing slash.
Spaces are not trimmed.

[def [option -blocking]]
The standard blocking flag.

[def [option -status]]
If specified, the indicated (not necessarily global) variable
in the caller's scope is set to a two-element list. The first
element is the 3-digit HTTP status code. The second element
is the HTTP message (such as "OK" or "Forbidden"). Note that
Amazon's DELETE result is 204 on success, that being the
code indicating no content in the returned body.

[list_end]

[para]

[call [cmd S3::Push] \
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
[opt "[option -error] [arg throw|break|continue]"] \
[opt "[option -progress] [arg scriptprefix]"] \
]
This synchronises a local directory with a remote bucket
by pushing the differences using [cmd S3::Put]. Note that
if something has changed in the bucket but not locally,
those changes could be lost. Thus, this is not a general
two-way synchronization primitive. (See [cmd S3::Sync] 
for that.) Note too that resource names are case sensitive,
so changing the case of a file on a Windows machine may lead
to otherwise-unnecessary transfers. 
Note that only regular files are considered, so devices, pipes, symlinks,
and directories are not copied.

[list_begin definitions]

[def [option -bucket]]
This names the bucket into which data will be pushed.

[def [option -directory]]
This names the local directory from which files will be taken.
It must exist, be readable via [lb]glob[rb] and so on. If only
some of the files therein are readable, [cmd S3::Push] will PUT
those files that are readable and return in its results the list
of files that could not be opened.

[def [option -prefix]]
This names the prefix that will be added to all resources. 
That is, it is the remote equivalent of [option -directory].
If it is not specified, the root of the bucket will be treated
as the remote directory. An example may clarify. 
[example {
S3::Push -bucket test -directory /tmp/xyz -prefix hello/world
}]
In this example, /tmp/xyz/pdq.html will be stored as
http://s3.amazonaws.com/test/hello/world/pdq.html in Amazon's servers. Also,
/tmp/xyz/abc/def/Hello will be stored as
http://s3.amazonaws.com/test/hello/world/abc/def/Hello in Amazon's servers.
Without the [option -prefix] option, /tmp/xyz/pdq.html would be stored
as http://s3.amazonaws.com/test/pdq.html.

[def [option -blocking]]
This is the standard blocking option.

[def [option -compare]]
If present, this is passed to each invocation of [cmd S3::Put].
Naturally, [cmd "S3::Configure -default-compare"] is used 
if this is not specified.

[def [option -x-amz-meta-*]]
If present, this is passed to each invocation of [cmd S3::Put]. All copied
files will have the same metadata.

[def [option -acl]]







|


|
















|


|















|







1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
[opt "[option -error] [arg throw|break|continue]"] \
[opt "[option -progress] [arg scriptprefix]"] \
]
This synchronises a local directory with a remote bucket
by pushing the differences using [cmd S3::Put]. Note that
if something has changed in the bucket but not locally,
those changes could be lost. Thus, this is not a general
two-way synchronization primitive. (See [cmd S3::Sync]
for that.) Note too that resource names are case sensitive,
so changing the case of a file on a Windows machine may lead
to otherwise-unnecessary transfers.
Note that only regular files are considered, so devices, pipes, symlinks,
and directories are not copied.

[list_begin definitions]

[def [option -bucket]]
This names the bucket into which data will be pushed.

[def [option -directory]]
This names the local directory from which files will be taken.
It must exist, be readable via [lb]glob[rb] and so on. If only
some of the files therein are readable, [cmd S3::Push] will PUT
those files that are readable and return in its results the list
of files that could not be opened.

[def [option -prefix]]
This names the prefix that will be added to all resources.
That is, it is the remote equivalent of [option -directory].
If it is not specified, the root of the bucket will be treated
as the remote directory. An example may clarify.
[example {
S3::Push -bucket test -directory /tmp/xyz -prefix hello/world
}]
In this example, /tmp/xyz/pdq.html will be stored as
http://s3.amazonaws.com/test/hello/world/pdq.html in Amazon's servers. Also,
/tmp/xyz/abc/def/Hello will be stored as
http://s3.amazonaws.com/test/hello/world/abc/def/Hello in Amazon's servers.
Without the [option -prefix] option, /tmp/xyz/pdq.html would be stored
as http://s3.amazonaws.com/test/pdq.html.

[def [option -blocking]]
This is the standard blocking option.

[def [option -compare]]
If present, this is passed to each invocation of [cmd S3::Put].
Naturally, [cmd "S3::Configure -default-compare"] is used
if this is not specified.

[def [option -x-amz-meta-*]]
If present, this is passed to each invocation of [cmd S3::Put]. All copied
files will have the same metadata.

[def [option -acl]]
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
prevent the deletion of a remote resource with a corresponding name.

[def [option -error]]
This controls the behavior of [cmd S3::Push] in the event that
[cmd S3::Put] throws an error. Note that
errors encountered on the local file system or in reading the
list of resources in the remote bucket always throw errors.
This option allows control over "partial" errors, when some 
files were copied and some were not. [cmd S3::Delete] is always
finished up, with errors simply recorded in the return result.

[list_begin definitions]

[def throw]
The error is rethrown with the same errorCode.

[def break]
Processing stops without throwing an error, the error is recorded
in the return value, and the command returns with a normal return.
The calls to [cmd S3::Delete] are not started.

[def continue]
This is the default. Processing continues without throwing,
recording the error in the return result, and resuming with the
next file in the local directory to be copied. 

[list_end]

[def [option -progress]]
If this is specified and the indicated script prefix is not empty, the
indicated script prefix will be invoked several times in the caller's
context with additional arguments at various points in the processing.







|
















|







1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
prevent the deletion of a remote resource with a corresponding name.

[def [option -error]]
This controls the behavior of [cmd S3::Push] in the event that
[cmd S3::Put] throws an error. Note that
errors encountered on the local file system or in reading the
list of resources in the remote bucket always throw errors.
This option allows control over "partial" errors, when some
files were copied and some were not. [cmd S3::Delete] is always
finished up, with errors simply recorded in the return result.

[list_begin definitions]

[def throw]
The error is rethrown with the same errorCode.

[def break]
Processing stops without throwing an error, the error is recorded
in the return value, and the command returns with a normal return.
The calls to [cmd S3::Delete] are not started.

[def continue]
This is the default. Processing continues without throwing,
recording the error in the return result, and resuming with the
next file in the local directory to be copied.

[list_end]

[def [option -progress]]
If this is specified and the indicated script prefix is not empty, the
indicated script prefix will be invoked several times in the caller's
context with additional arguments at various points in the processing.
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
first additional argument and a list of suffixes existing in the remote
bucket as the second additional argument.  Then, for each file in the
local list, the prefix will be invoked with [arg start] as the first
additional argument and the common suffix as the second additional
argument.  When [cmd S3::Put] returns for that file, the prefix will be
invoked with [arg copy] as the first additional argument, the common
suffix as the second additional argument, and a third argument that will
be "copied" (if [cmd S3::Put] sent the resource), "skipped" (if 
[cmd S3::Put] decided not to based on [option -compare]), or the errorCode
that [cmd S3::Put] threw due to unexpected errors (in which case the
third argument is a list that starts with "S3"). When all files have
been transfered, the prefix may be invoked zero or more times with
[arg delete] as the first additional argument and the suffix of the
resource being deleted as the second additional argument, with a third
argument being either an empty string (if the delete worked) or the
errorCode from [cmd S3::Delete] if it failed. Finally, the prefix
will be invoked with [arg finished] as the first additional argument 
and the return value as the second additional argument.

[list_end]

The return result from this command is a dictionary. They keys are the 
suffixes (i.e., the common portion of the path after the [option -directory]
and [option -prefix]), while the values are either "copied", "skipped" (if
[option -compare] indicated not to copy the file), or the errorCode 
thrown by [cmd S3::Put], as appropriate. If [option -delete] was true,
there may also be entries for suffixes with the value "deleted" or 
"notdeleted", indicating whether the attempted [cmd S3::Delete] 
worked or not, respectively. There is one additional pair in the return
result, whose key is the empty string and whose value is a nested dictionary.
The keys of this nested dictionary include "filescopied" (the number of 
files successfully copied), "bytescopied" (the number of data bytes in
the files copied, excluding headers, metadata, etc), "compareskipped" (the 
number of files not copied due to [option -compare] mode), "errorskipped"
(the number of files not copied due to thrown errors), "filesdeleted"
(the number of resources deleted due to not having corresponding files
locally, or 0 if [option -delete] is false), and "filesnotdeleted" 
(the number of resources whose deletion was attempted but failed).
[para]
Note that this is currently implemented somewhat inefficiently.
It fetches the bucket listing (including timestamps and eTags),
then calls [cmd S3::Put], which uses HEAD to find the timestamps
and eTags again. Correcting this with no API change 
is planned for a future upgrade.

[para]

[call [cmd S3::Pull] \
[opt "[option -bucket] [arg bucketname]"] \
[option -directory] [arg directoryname] \
[opt "[option -prefix] [arg prefixstring]"] \
[opt "[option -blocking] [arg boolean]"] \
[opt "[option -compare] [arg comparemode]"] \
[opt "[option -delete] [arg boolean]"] \
[opt "[option -timestamp] [arg aws|now]"] \
[opt "[option -error] [arg throw|break|continue]"] \
[opt "[option -progress] [arg scriptprefix]"] \
]

This synchronises a remote bucket with a local directory by pulling the 
differences using [cmd S3::Get] If something has been changed locally but not
in the bucket, those difference may be lost. This is not a general two-way 
synchronization mechanism. (See [cmd S3::Sync] for that.) 
This creates directories
if needed; new directories are created with default permissions. Note that 
resource names are case sensitive, so changing the case of a file on a 
Windows machine may lead to otherwise-unnecessary transfers. Also, try not
to store data in resources that end with a slash, or which are prefixes of
resources that otherwise would start with a slash; i.e., don't use this if
you store data in resources whose names have to be directories locally.
[para]
Note that this is currently implemented somewhat inefficiently.
It fetches the bucket listing (including timestamps and eTags),
then calls [cmd S3::Get], which uses HEAD to find the timestamps
and eTags again. Correcting this with no API change 
is planned for a future upgrade.

[list_begin definitions]

[def [option -bucket]]
This names the bucket from which data will be pulled.

[def [option -directory]]
This names the local directory into which files will be written
It must exist, be readable via [lb]glob[rb], writable for file creation,
and so on. If only some of the files therein are writable, 
[cmd S3::Pull] will GET
those files that are writable and return in its results the list
of files that could not be opened.

[def [option -prefix]]
The prefix of resources that will be considered for retrieval.
See [cmd S3::Push] for more details, examples, etc. (Of course,
[cmd S3::Pull] reads rather than writes, but the prefix is 
treated similarly.)

[def [option -blocking]]
This is the standard blocking option.

[def [option -compare]]
This is passed to each invocation of [cmd S3::Get] if provided. 
Naturally, [cmd "S3::Configure -default-compare"] is 
used if this is not provided.

[def [option -timestamp]]
This is passed to each invocation of [cmd S3::Get] if provided.

[def [option -delete]]
If this is specified and true, files that exist in the [option -directory]
that are not in the [option -prefix] will be deleted after all resources
have been copied. In addition, empty directories (other than the
top-level [option -directory]) will be deleted, as
Amazon S3 has no concept of an empty directory.

[def [option -error]]
See [cmd S3::Push] for a description of this option.

[def [option -progress]]
See [cmd S3::Push] for a description of this option. 
It differs slightly in that local directories may be included
with a trailing slash to indicate they are directories.

[list_end]

The return value from this command is a dictionary. It 
is identical in form and meaning to the description of the
return result of [cmd S3::Push]. It differs only in that
directories may be included, with a trailing slash in their name,
if they are empty and get deleted.

[call [cmd S3::Toss] \
[opt "[option -bucket] [arg bucketname]"] \







|








|




|


|

|
|


|

|



|





|
















|

|
|

|
|








|










|







|






|
|
















|





|







1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
first additional argument and a list of suffixes existing in the remote
bucket as the second additional argument.  Then, for each file in the
local list, the prefix will be invoked with [arg start] as the first
additional argument and the common suffix as the second additional
argument.  When [cmd S3::Put] returns for that file, the prefix will be
invoked with [arg copy] as the first additional argument, the common
suffix as the second additional argument, and a third argument that will
be "copied" (if [cmd S3::Put] sent the resource), "skipped" (if
[cmd S3::Put] decided not to based on [option -compare]), or the errorCode
that [cmd S3::Put] threw due to unexpected errors (in which case the
third argument is a list that starts with "S3"). When all files have
been transfered, the prefix may be invoked zero or more times with
[arg delete] as the first additional argument and the suffix of the
resource being deleted as the second additional argument, with a third
argument being either an empty string (if the delete worked) or the
errorCode from [cmd S3::Delete] if it failed. Finally, the prefix
will be invoked with [arg finished] as the first additional argument
and the return value as the second additional argument.

[list_end]

The return result from this command is a dictionary. They keys are the
suffixes (i.e., the common portion of the path after the [option -directory]
and [option -prefix]), while the values are either "copied", "skipped" (if
[option -compare] indicated not to copy the file), or the errorCode
thrown by [cmd S3::Put], as appropriate. If [option -delete] was true,
there may also be entries for suffixes with the value "deleted" or
"notdeleted", indicating whether the attempted [cmd S3::Delete]
worked or not, respectively. There is one additional pair in the return
result, whose key is the empty string and whose value is a nested dictionary.
The keys of this nested dictionary include "filescopied" (the number of
files successfully copied), "bytescopied" (the number of data bytes in
the files copied, excluding headers, metadata, etc), "compareskipped" (the
number of files not copied due to [option -compare] mode), "errorskipped"
(the number of files not copied due to thrown errors), "filesdeleted"
(the number of resources deleted due to not having corresponding files
locally, or 0 if [option -delete] is false), and "filesnotdeleted"
(the number of resources whose deletion was attempted but failed).
[para]
Note that this is currently implemented somewhat inefficiently.
It fetches the bucket listing (including timestamps and eTags),
then calls [cmd S3::Put], which uses HEAD to find the timestamps
and eTags again. Correcting this with no API change
is planned for a future upgrade.

[para]

[call [cmd S3::Pull] \
[opt "[option -bucket] [arg bucketname]"] \
[option -directory] [arg directoryname] \
[opt "[option -prefix] [arg prefixstring]"] \
[opt "[option -blocking] [arg boolean]"] \
[opt "[option -compare] [arg comparemode]"] \
[opt "[option -delete] [arg boolean]"] \
[opt "[option -timestamp] [arg aws|now]"] \
[opt "[option -error] [arg throw|break|continue]"] \
[opt "[option -progress] [arg scriptprefix]"] \
]

This synchronises a remote bucket with a local directory by pulling the
differences using [cmd S3::Get] If something has been changed locally but not
in the bucket, those difference may be lost. This is not a general two-way
synchronization mechanism. (See [cmd S3::Sync] for that.)
This creates directories
if needed; new directories are created with default permissions. Note that
resource names are case sensitive, so changing the case of a file on a
Windows machine may lead to otherwise-unnecessary transfers. Also, try not
to store data in resources that end with a slash, or which are prefixes of
resources that otherwise would start with a slash; i.e., don't use this if
you store data in resources whose names have to be directories locally.
[para]
Note that this is currently implemented somewhat inefficiently.
It fetches the bucket listing (including timestamps and eTags),
then calls [cmd S3::Get], which uses HEAD to find the timestamps
and eTags again. Correcting this with no API change
is planned for a future upgrade.

[list_begin definitions]

[def [option -bucket]]
This names the bucket from which data will be pulled.

[def [option -directory]]
This names the local directory into which files will be written
It must exist, be readable via [lb]glob[rb], writable for file creation,
and so on. If only some of the files therein are writable,
[cmd S3::Pull] will GET
those files that are writable and return in its results the list
of files that could not be opened.

[def [option -prefix]]
The prefix of resources that will be considered for retrieval.
See [cmd S3::Push] for more details, examples, etc. (Of course,
[cmd S3::Pull] reads rather than writes, but the prefix is
treated similarly.)

[def [option -blocking]]
This is the standard blocking option.

[def [option -compare]]
This is passed to each invocation of [cmd S3::Get] if provided.
Naturally, [cmd "S3::Configure -default-compare"] is
used if this is not provided.

[def [option -timestamp]]
This is passed to each invocation of [cmd S3::Get] if provided.

[def [option -delete]]
If this is specified and true, files that exist in the [option -directory]
that are not in the [option -prefix] will be deleted after all resources
have been copied. In addition, empty directories (other than the
top-level [option -directory]) will be deleted, as
Amazon S3 has no concept of an empty directory.

[def [option -error]]
See [cmd S3::Push] for a description of this option.

[def [option -progress]]
See [cmd S3::Push] for a description of this option.
It differs slightly in that local directories may be included
with a trailing slash to indicate they are directories.

[list_end]

The return value from this command is a dictionary. It
is identical in form and meaning to the description of the
return result of [cmd S3::Push]. It differs only in that
directories may be included, with a trailing slash in their name,
if they are empty and get deleted.

[call [cmd S3::Toss] \
[opt "[option -bucket] [arg bucketname]"] \
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
for the prefix.

[opt_def [option -error]]
If this is "throw", [cmd S3::Toss] rethrows any errors
it encounters.  If this is "break", [cmd S3::Toss] returns
with a normal return after the first error, recording that
error in the return result. If this is "continue", which is
the default, [cmd S3::Toss] continues on and lists all 
errors in the return result.

[opt_def [option -progress]]
If this is specified and not an empty string, the script
prefix will be invoked several times in the context of the caller
with additional arguments appended.  Initially, it will be invoked
with the first additional argument being [arg args] and the second







|







1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
for the prefix.

[opt_def [option -error]]
If this is "throw", [cmd S3::Toss] rethrows any errors
it encounters.  If this is "break", [cmd S3::Toss] returns
with a normal return after the first error, recording that
error in the return result. If this is "continue", which is
the default, [cmd S3::Toss] continues on and lists all
errors in the return result.

[opt_def [option -progress]]
If this is specified and not an empty string, the script
prefix will be invoked several times in the context of the caller
with additional arguments appended.  Initially, it will be invoked
with the first additional argument being [arg args] and the second
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401

[list_end]

The return value is a dictionary. The keys are the suffixes of files
that [cmd S3::Toss] attempted to delete, and whose values are either
the string "deleted" or "notdeleted". There is also one additional
pair, whose key is the empty string and whose value is an embedded
dictionary. The keys of this embedded dictionary include 
"filesdeleted" and "filesnotdeleted", each of which has integer values.

[list_end]

[section LIMITATIONS]

[list_begin itemized]

[item] The pure-Tcl MD5 checking is slow. If you are processing
files in the megabyte range, consider ensuring binary support is available.

[item] The commands [cmd S3::Pull] and [cmd S3::Push] fetch a
directory listing which includes timestamps and MD5 hashes, 
then invoke [cmd S3::Get] and [cmd S3::Put]. If
a complex [option -compare] mode is specified, [cmd S3::Get] and 
[cmd S3::Put] will invoke a HEAD operation for each file to fetch
timestamps and MD5 hashes of each resource again. It is expected that
a future release of this package will solve this without any API changes.

[item] The commands [cmd S3::Pull] and [cmd S3::Push] fetch a
directory listing without using [option -max-count]. The entire 
directory is pulled into memory at once. For very large buckets,
this could be a performance problem. The author, at this time,
does not plan to change this behavior. Welcome to Open Source.

[item] [cmd S3::Sync] is neither designed nor implemented yet. 
The intention would be to keep changes synchronised, so changes
could be made to both the bucket and the local directory and
be merged by [cmd S3::Sync].

[item] Nor is
[option -compare] [arg calc] fully implemented. This is primarily due to
Windows not providing a convenient method for distinguishing between
local files that are "public-read" or "public-read-write". Assistance
figuring out TWAPI for this would be appreciated. The U**X semantics
are difficult to map directly as well. See the source for details.
Note that there are not tests for calc, since it isn't done yet.

[item] The HTTP processing is implemented within the library, 
rather than using a "real" HTTP package. Hence, multi-line headers
are not (yet) handled correctly. Do not include carriage returns or
linefeeds in x-amz-meta-* headers, content-type values, and so on. 
The author does not at this time expect to improve this.

[item] Internally, [cmd S3::Push] and [cmd S3::Pull] and [cmd S3::Toss]
are all very similar and should be refactored.

[item] The idea of using [option -compare] [arg never] 
[option -delete] [arg true] to delete files that have been 
deleted from one place but not the other yet not copying 
changed files is untested.

[list_end]

[section "USAGE SUGGESTIONS"]

To fetch a "directory" out of a bucket, make changes, and store it back:







|












|

|





|




|












|


|





|
|
|







1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401

[list_end]

The return value is a dictionary. The keys are the suffixes of files
that [cmd S3::Toss] attempted to delete, and whose values are either
the string "deleted" or "notdeleted". There is also one additional
pair, whose key is the empty string and whose value is an embedded
dictionary. The keys of this embedded dictionary include
"filesdeleted" and "filesnotdeleted", each of which has integer values.

[list_end]

[section LIMITATIONS]

[list_begin itemized]

[item] The pure-Tcl MD5 checking is slow. If you are processing
files in the megabyte range, consider ensuring binary support is available.

[item] The commands [cmd S3::Pull] and [cmd S3::Push] fetch a
directory listing which includes timestamps and MD5 hashes,
then invoke [cmd S3::Get] and [cmd S3::Put]. If
a complex [option -compare] mode is specified, [cmd S3::Get] and
[cmd S3::Put] will invoke a HEAD operation for each file to fetch
timestamps and MD5 hashes of each resource again. It is expected that
a future release of this package will solve this without any API changes.

[item] The commands [cmd S3::Pull] and [cmd S3::Push] fetch a
directory listing without using [option -max-count]. The entire
directory is pulled into memory at once. For very large buckets,
this could be a performance problem. The author, at this time,
does not plan to change this behavior. Welcome to Open Source.

[item] [cmd S3::Sync] is neither designed nor implemented yet.
The intention would be to keep changes synchronised, so changes
could be made to both the bucket and the local directory and
be merged by [cmd S3::Sync].

[item] Nor is
[option -compare] [arg calc] fully implemented. This is primarily due to
Windows not providing a convenient method for distinguishing between
local files that are "public-read" or "public-read-write". Assistance
figuring out TWAPI for this would be appreciated. The U**X semantics
are difficult to map directly as well. See the source for details.
Note that there are not tests for calc, since it isn't done yet.

[item] The HTTP processing is implemented within the library,
rather than using a "real" HTTP package. Hence, multi-line headers
are not (yet) handled correctly. Do not include carriage returns or
linefeeds in x-amz-meta-* headers, content-type values, and so on.
The author does not at this time expect to improve this.

[item] Internally, [cmd S3::Push] and [cmd S3::Pull] and [cmd S3::Toss]
are all very similar and should be refactored.

[item] The idea of using [option -compare] [arg never]
[option -delete] [arg true] to delete files that have been
deleted from one place but not the other yet not copying
changed files is untested.

[list_end]

[section "USAGE SUGGESTIONS"]

To fetch a "directory" out of a bucket, make changes, and store it back:
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
update files:

[example_begin]
S3::Pull -bucket sample -prefix of/interest -directory ./myfiles \
  -compare never -delete true
[example_end]


[section "FUTURE DEVELOPMENTS"]

The author intends to work on several additional projects related to 
this package, in addition to finishing the unfinished features.

[para]
First, a command-line program allowing browsing of buckets and 
transfer of files from shell scripts and command prompts is useful.

[para]
Second, a GUI-based program allowing visual manipulation of
bucket and resource trees not unlike Windows Explorer would
be useful.

[para] 
Third, a command-line (and perhaps a GUI-based) program called
"OddJob" that will use S3 to synchronize computation amongst 
multiple servers running OddJob. An S3 bucket will be set up
with a number of scripts to run, and the OddJob program can
be invoked on multiple machines to run scripts on all the machines,
each moving on to the next unstarted task as it finishes each.
This is still being designed, and it is intended primarily
to be run on Amazon's Elastic Compute Cloud.

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph amazon-s3] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]








<


|



|







|

|







<
|
<
<
|
<
<
<
<
<
<

<
1413
1414
1415
1416
1417
1418
1419

1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443

1444


1445






1446

update files:

[example_begin]
S3::Pull -bucket sample -prefix of/interest -directory ./myfiles \
  -compare never -delete true
[example_end]


[section "FUTURE DEVELOPMENTS"]

The author intends to work on several additional projects related to
this package, in addition to finishing the unfinished features.

[para]
First, a command-line program allowing browsing of buckets and
transfer of files from shell scripts and command prompts is useful.

[para]
Second, a GUI-based program allowing visual manipulation of
bucket and resource trees not unlike Windows Explorer would
be useful.

[para]
Third, a command-line (and perhaps a GUI-based) program called
"OddJob" that will use S3 to synchronize computation amongst
multiple servers running OddJob. An S3 bucket will be set up
with a number of scripts to run, and the OddJob program can
be invoked on multiple machines to run scripts on all the machines,
each moving on to the next unstarted task as it finishes each.
This is still being designed, and it is intended primarily
to be run on Amazon's Elastic Compute Cloud.


[vset CATEGORY amazon-s3]


[include ../doctools2base/include/feedback.inc]






[manpage_end]

Changes to modules/amazon-s3/xsxp.man.

1



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
[manpage_begin xsxp n 1.0]



[moddesc {Amazon S3 Web Service Utilities}]
[titledesc {eXtremely Simple Xml Parser}]
[copyright {Copyright 2006 Darren New. All Rights Reserved.}]
[category  {Text processing}]
[require Tcl 8.4]
[require xml]
[keywords xml dom parser]
[description]
This package provides a simple interface to parse XML into a pure-value list.
It also provides accessor routines to pull out specific subtags, 
not unlike DOM access. 
This package was written for and is used by Darren New's Amazon S3 access package.

[para]
This is pretty lame, but I needed something like this for S3,
and at the time, TclDOM would not work with the new 8.5 Tcl
due to version number problems. 
[para]
In addition, this is a pure-value implementation. There is no
garbage to clean up in the event of a thrown error, for example.
This simplifies the code for sufficiently small XML documents,
which is what Amazon's S3 guarantees.

[para]
Copyright 2006 Darren New. All Rights Reserved.
NO WARRANTIES OF ANY TYPE ARE PROVIDED.
COPYING OR USE INDEMNIFIES THE AUTHOR IN ALL WAYS.
This software is licensed under essentially the same 
terms as Tcl. See LICENSE.txt for the terms.

[section COMMANDS]
The package implements five rather simple procedures.
One parses, one is for debugging, and the rest pull various
parts of the parsed document out for processing.


[list_begin definitions]

[call [cmd xsxp::parse] [arg xml]]

This parses an XML document (using the standard xml tcllib module in a SAX sort of way) and builds a data structure which it returns if the parsing succeeded. The return value is referred to herein as a "pxml", or "parsed xml". The list consists of two or more elements:

[list_begin itemized]
[item]
The first element is the name of the tag.
[item]
The second element is an array-get formatted list of key/value pairs. The keys are attribute names and the values are attribute values. This is an empty list if there are no attributes on the tag.
[item]
The third through end elements are the children of the node, if any. Each child is, recursively, a pxml.
[item]
Note that if the zero'th element, i.e. the tag name, is "%PCDATA", then
the attributes will be empty and the third element will be the text of the element. In addition, if an element's contents consists only of PCDATA, it will have only one child, and all the PCDATA will be concatenated. In other words, 
this parser works poorly for XML with elements that contain both child tags and PCDATA.  Since Amazon S3 does not do this (and for that matter most 
uses of XML where XML is a poor choice don't do this), this is probably
not a serious limitation.
[list_end]

[para]

[call [cmd xsxp::fetch] [arg pxml] [arg path] [opt [arg part]]]

[arg pxml] is a parsed XML, as returned from xsxp::parse.
[arg path] is a list of element tag names. Each element is the name
of a child to look up, optionally followed by a 
hash ("#") and a string of digits. An empty list or an initial empty element
selects [arg pxml]. If no hash sign is present, the behavior is as if "#0"
had been appended to that element. (In addition to a list, slashes can separate subparts where convenient.)

[para]

An element of [arg path] scans the children at the indicated level
for the n'th instance of a child whose tag matches the part of the
element before the hash sign. If an element is simply "#"  followed
by digits, that indexed child is selected, regardless of the tags
in the children. Hence, an element of "#3" will always select
the fourth child of the node under consideration. 

[para]
[arg part] defaults to "%ALL". It can be one of the following case-sensitive terms:
[list_begin definitions]
[def %ALL] returns the entire selected element.
[def %TAGNAME] returns lindex 0 of the selected element.
[def %ATTRIBUTES] returns index 1 of the selected element.

>
>
>






<


|
|





|










|






<
















|
|










|











|







1
2
3
4
5
6
7
8
9
10

11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
[manpage_begin xsxp n 1.0]
[keywords dom]
[keywords parser]
[keywords xml]
[moddesc {Amazon S3 Web Service Utilities}]
[titledesc {eXtremely Simple Xml Parser}]
[copyright {Copyright 2006 Darren New. All Rights Reserved.}]
[category  {Text processing}]
[require Tcl 8.4]
[require xml]

[description]
This package provides a simple interface to parse XML into a pure-value list.
It also provides accessor routines to pull out specific subtags,
not unlike DOM access.
This package was written for and is used by Darren New's Amazon S3 access package.

[para]
This is pretty lame, but I needed something like this for S3,
and at the time, TclDOM would not work with the new 8.5 Tcl
due to version number problems.
[para]
In addition, this is a pure-value implementation. There is no
garbage to clean up in the event of a thrown error, for example.
This simplifies the code for sufficiently small XML documents,
which is what Amazon's S3 guarantees.

[para]
Copyright 2006 Darren New. All Rights Reserved.
NO WARRANTIES OF ANY TYPE ARE PROVIDED.
COPYING OR USE INDEMNIFIES THE AUTHOR IN ALL WAYS.
This software is licensed under essentially the same
terms as Tcl. See LICENSE.txt for the terms.

[section COMMANDS]
The package implements five rather simple procedures.
One parses, one is for debugging, and the rest pull various
parts of the parsed document out for processing.


[list_begin definitions]

[call [cmd xsxp::parse] [arg xml]]

This parses an XML document (using the standard xml tcllib module in a SAX sort of way) and builds a data structure which it returns if the parsing succeeded. The return value is referred to herein as a "pxml", or "parsed xml". The list consists of two or more elements:

[list_begin itemized]
[item]
The first element is the name of the tag.
[item]
The second element is an array-get formatted list of key/value pairs. The keys are attribute names and the values are attribute values. This is an empty list if there are no attributes on the tag.
[item]
The third through end elements are the children of the node, if any. Each child is, recursively, a pxml.
[item]
Note that if the zero'th element, i.e. the tag name, is "%PCDATA", then
the attributes will be empty and the third element will be the text of the element. In addition, if an element's contents consists only of PCDATA, it will have only one child, and all the PCDATA will be concatenated. In other words,
this parser works poorly for XML with elements that contain both child tags and PCDATA.  Since Amazon S3 does not do this (and for that matter most
uses of XML where XML is a poor choice don't do this), this is probably
not a serious limitation.
[list_end]

[para]

[call [cmd xsxp::fetch] [arg pxml] [arg path] [opt [arg part]]]

[arg pxml] is a parsed XML, as returned from xsxp::parse.
[arg path] is a list of element tag names. Each element is the name
of a child to look up, optionally followed by a
hash ("#") and a string of digits. An empty list or an initial empty element
selects [arg pxml]. If no hash sign is present, the behavior is as if "#0"
had been appended to that element. (In addition to a list, slashes can separate subparts where convenient.)

[para]

An element of [arg path] scans the children at the indicated level
for the n'th instance of a child whose tag matches the part of the
element before the hash sign. If an element is simply "#"  followed
by digits, that indexed child is selected, regardless of the tags
in the children. Hence, an element of "#3" will always select
the fourth child of the node under consideration.

[para]
[arg part] defaults to "%ALL". It can be one of the following case-sensitive terms:
[list_begin definitions]
[def %ALL] returns the entire selected element.
[def %TAGNAME] returns lindex 0 of the selected element.
[def %ATTRIBUTES] returns index 1 of the selected element.
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117

[def %PCDATA?] is like %PCDATA, but returns an empty string if
no PCDATA is found.

[list_end]

[para]
For example, to fetch the first bold text from the fifth paragraph of the body of your HTML file, 
[example {xsxp::fetch $pxml {html body p#4 b} %PCDATA}]

[para]

[call [cmd xsxp::fetchall] [arg pxml_list] [arg path] [opt [arg part]]]

This iterates over each PXML in [arg pxml_list] (which must be a list 
of pxmls) selecting the indicated path from it, building a new list 
with the selected data, and returning that new list. 

[para]

For example, [arg pxml_list] might be
the %CHILDREN of a particular element, and the [arg path] and [arg part]
might select from each child a sub-element in which we're interested.








|






|
|
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118

[def %PCDATA?] is like %PCDATA, but returns an empty string if
no PCDATA is found.

[list_end]

[para]
For example, to fetch the first bold text from the fifth paragraph of the body of your HTML file,
[example {xsxp::fetch $pxml {html body p#4 b} %PCDATA}]

[para]

[call [cmd xsxp::fetchall] [arg pxml_list] [arg path] [opt [arg part]]]

This iterates over each PXML in [arg pxml_list] (which must be a list
of pxmls) selecting the indicated path from it, building a new list
with the selected data, and returning that new list.

[para]

For example, [arg pxml_list] might be
the %CHILDREN of a particular element, and the [arg path] and [arg part]
might select from each child a sub-element in which we're interested.

126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145

[call [cmd xsxp::prettyprint] [arg pxml] [opt [arg chan]]]
This outputs to [arg chan] (default stdout) a pretty-printed
version of [arg pxml].

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph amazon-s3] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]








<
|
<
<
|
<
<
<
<
<
<

<
127
128
129
130
131
132
133

134


135






136


[call [cmd xsxp::prettyprint] [arg pxml] [opt [arg chan]]]
This outputs to [arg chan] (default stdout) a pretty-printed
version of [arg pxml].

[list_end]


[vset CATEGORY amazon-s3]


[include ../doctools2base/include/feedback.inc]






[manpage_end]

Changes to modules/asn/asn.man.

1
2








3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin asn n 0.8]








[copyright {2004 Andreas Kupries <[email protected]>}]
[copyright {2004 Jochen Loewer <[email protected]>}]
[copyright {2004-2011 Michael Schlenker <[email protected]>}]
[moddesc   {ASN.1 processing}]
[category  Networking]
[titledesc {ASN.1 BER encoder/decoder}]
[require Tcl 8.4]


>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin asn n 0.8]
[keywords asn]
[keywords ber]
[keywords cer]
[keywords der]
[keywords internet]
[keywords protocol]
[keywords x.208]
[keywords x.209]
[copyright {2004 Andreas Kupries <[email protected]>}]
[copyright {2004 Jochen Loewer <[email protected]>}]
[copyright {2004-2011 Michael Schlenker <[email protected]>}]
[moddesc   {ASN.1 processing}]
[category  Networking]
[titledesc {ASN.1 BER encoder/decoder}]
[require Tcl 8.4]
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

Also see [uri http://luca.ntop.org/Teaching/Appunti/asn1.html] for
[emph {A Layman's Guide to a Subset of ASN.1, BER, and DER}], an RSA
Laboratories Technical Note by Burton S. Kaliski Jr. (Revised November
1, 1993). A text version of this note is part of the module sources
and should be read by any implementor.


[section {PUBLIC API}]
[subsection ENCODER]

[list_begin definitions]

[call [cmd ::asn::asnSequence] [arg evalue]...]








<







37
38
39
40
41
42
43

44
45
46
47
48
49
50

Also see [uri http://luca.ntop.org/Teaching/Appunti/asn1.html] for
[emph {A Layman's Guide to a Subset of ASN.1, BER, and DER}], an RSA
Laboratories Technical Note by Burton S. Kaliski Jr. (Revised November
1, 1993). A text version of this note is part of the module sources
and should be read by any implementor.


[section {PUBLIC API}]
[subsection ENCODER]

[list_begin definitions]

[call [cmd ::asn::asnSequence] [arg evalue]...]

60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
returns its encoded binary form.

[call [cmd ::asn::asnApplicationConstr] [arg appNumber] [arg evalue]...]

Takes zero or more encoded values, packs them into an ASN application
construct and returns its encoded binary form.


[call [cmd ::asn::asnApplication] [arg appNumber] [arg data]]

Takes a single encoded value [arg data], packs it into an ASN
application construct and returns its encoded binary form.


[call [cmd ::asn::asnChoice] [arg appNumber] [arg evalue]...]

Takes zero or more encoded values, packs them into an ASN choice
construct and returns its encoded binary form.


[call [cmd ::asn::asnChoiceConstr] [arg appNumber] [arg evalue]...]

Takes zero or more encoded values, packs them into an ASN choice
construct and returns its encoded binary form.


[call [cmd ::asn::asnInteger] [arg number]]

Returns the encoded form of the specified integer
[arg number].


[call [cmd ::asn::asnEnumeration] [arg number]]

Returns the encoded form of the specified enumeration id
[arg number].


[call [cmd ::asn::asnBoolean] [arg bool]]

Returns the encoded form of the specified boolean value
[arg bool].


[call [cmd ::asn::asnContext] [arg context] [arg data]]

Takes an encoded value and packs it into a constructed value with
application tag, the [arg context] number.


[call [cmd ::asn::asnContextConstr] [arg context] [arg evalue]...]

Takes zero or more encoded values and packs them into a constructed
value with application tag, the [arg context] number.


[call [cmd ::asn::asnObjectIdentifier] [arg idlist]]

Takes a list of at least 2 integers describing an object identifier
(OID) value, and returns the encoded value.


[call [cmd ::asn::asnUTCTime] [arg utcstring]]

Returns the encoded form of the specified UTC time string.


[call [cmd ::asn::asnNull]]

Returns the NULL encoding.


[call [cmd ::asn::asnBitString] [arg string]]

Returns the encoded form of the specified [arg string].


[call [cmd ::asn::asnOctetString] [arg string]]

Returns the encoded form of the specified [arg string].


[call [cmd ::asn::asnNumericString] [arg string]]

Returns the [arg string] encoded as ASN.1 NumericString. Raises an
error if the [arg string] contains characters other than decimal
numbers and space.


[call [cmd ::asn::asnPrintableString] [arg string]] 

Returns the [arg string] encoding as ASN.1 PrintableString. Raises an
error if the [arg string] contains characters which are not allowed by
the Printable String datatype. The allowed characters are A-Z, a-z,
0-9, space, apostrophe, colon, parentheses, plus, minus, comma,
period, forward slash, question mark, and the equals sign.


[call [cmd ::asn::asnIA5String] [arg string]]

Returns the [arg string] encoded as ASN.1 IA5String. Raises an error
if the [arg string] contains any characters outside of the US-ASCII
range.


[call [cmd ::asn::asnBMPString] [arg string]]

Returns the [arg string] encoded as ASN.1 Basic Multilingual Plane
string (Which is essentialy big-endian UCS2).


[call [cmd ::asn::asnUTF8String] [arg string]]

Returns the [arg string] encoded as UTF8 String. Note that some legacy
applications such as Windows CryptoAPI do not like UTF8 strings. Use
BMPStrings if you are not sure.


[call [cmd ::asn::asnString] [arg string]]

Returns an encoded form of [arg string], choosing the most restricted
ASN.1 string type possible. If the string contains non-ASCII
characters, then there is more than one string type which can be
used. See [cmd ::asn::defaultStringType].


[call [cmd ::asn::defaultStringType] [opt [arg type]]]

Selects the string type to use for the encoding of non-ASCII
strings. Returns current default when called without argument. If the
argument [arg type] is supplied, it should be either [const UTF8] or
[const BMP] to choose UTF8String or BMPString respectively.







<





<




<






<




<






<




<






<




<






<



<





<




<



<







<
|






<







<




<







<






<







67
68
69
70
71
72
73

74
75
76
77
78

79
80
81
82

83
84
85
86
87
88

89
90
91
92

93
94
95
96
97
98

99
100
101
102

103
104
105
106
107
108

109
110
111
112

113
114
115
116
117
118

119
120
121

122
123
124
125
126

127
128
129
130

131
132
133

134
135
136
137
138
139
140

141
142
143
144
145
146
147

148
149
150
151
152
153
154

155
156
157
158

159
160
161
162
163
164
165

166
167
168
169
170
171

172
173
174
175
176
177
178
returns its encoded binary form.

[call [cmd ::asn::asnApplicationConstr] [arg appNumber] [arg evalue]...]

Takes zero or more encoded values, packs them into an ASN application
construct and returns its encoded binary form.


[call [cmd ::asn::asnApplication] [arg appNumber] [arg data]]

Takes a single encoded value [arg data], packs it into an ASN
application construct and returns its encoded binary form.


[call [cmd ::asn::asnChoice] [arg appNumber] [arg evalue]...]

Takes zero or more encoded values, packs them into an ASN choice
construct and returns its encoded binary form.


[call [cmd ::asn::asnChoiceConstr] [arg appNumber] [arg evalue]...]

Takes zero or more encoded values, packs them into an ASN choice
construct and returns its encoded binary form.


[call [cmd ::asn::asnInteger] [arg number]]

Returns the encoded form of the specified integer
[arg number].


[call [cmd ::asn::asnEnumeration] [arg number]]

Returns the encoded form of the specified enumeration id
[arg number].


[call [cmd ::asn::asnBoolean] [arg bool]]

Returns the encoded form of the specified boolean value
[arg bool].


[call [cmd ::asn::asnContext] [arg context] [arg data]]

Takes an encoded value and packs it into a constructed value with
application tag, the [arg context] number.


[call [cmd ::asn::asnContextConstr] [arg context] [arg evalue]...]

Takes zero or more encoded values and packs them into a constructed
value with application tag, the [arg context] number.


[call [cmd ::asn::asnObjectIdentifier] [arg idlist]]

Takes a list of at least 2 integers describing an object identifier
(OID) value, and returns the encoded value.


[call [cmd ::asn::asnUTCTime] [arg utcstring]]

Returns the encoded form of the specified UTC time string.


[call [cmd ::asn::asnNull]]

Returns the NULL encoding.


[call [cmd ::asn::asnBitString] [arg string]]

Returns the encoded form of the specified [arg string].


[call [cmd ::asn::asnOctetString] [arg string]]

Returns the encoded form of the specified [arg string].


[call [cmd ::asn::asnNumericString] [arg string]]

Returns the [arg string] encoded as ASN.1 NumericString. Raises an
error if the [arg string] contains characters other than decimal
numbers and space.


[call [cmd ::asn::asnPrintableString] [arg string]]

Returns the [arg string] encoding as ASN.1 PrintableString. Raises an
error if the [arg string] contains characters which are not allowed by
the Printable String datatype. The allowed characters are A-Z, a-z,
0-9, space, apostrophe, colon, parentheses, plus, minus, comma,
period, forward slash, question mark, and the equals sign.


[call [cmd ::asn::asnIA5String] [arg string]]

Returns the [arg string] encoded as ASN.1 IA5String. Raises an error
if the [arg string] contains any characters outside of the US-ASCII
range.


[call [cmd ::asn::asnBMPString] [arg string]]

Returns the [arg string] encoded as ASN.1 Basic Multilingual Plane
string (Which is essentialy big-endian UCS2).


[call [cmd ::asn::asnUTF8String] [arg string]]

Returns the [arg string] encoded as UTF8 String. Note that some legacy
applications such as Windows CryptoAPI do not like UTF8 strings. Use
BMPStrings if you are not sure.


[call [cmd ::asn::asnString] [arg string]]

Returns an encoded form of [arg string], choosing the most restricted
ASN.1 string type possible. If the string contains non-ASCII
characters, then there is more than one string type which can be
used. See [cmd ::asn::defaultStringType].


[call [cmd ::asn::defaultStringType] [opt [arg type]]]

Selects the string type to use for the encoding of non-ASCII
strings. Returns current default when called without argument. If the
argument [arg type] is supplied, it should be either [const UTF8] or
[const BMP] to choose UTF8String or BMPString respectively.
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
After extraction the data variable is always modified first, before by
writing the extracted value to its variable. This means that if both
arguments refer to the same variable, it will always contain the
extracted value after the call, and not the remainder of the input.

[list_end]


[para]
[list_begin definitions]
[call [cmd ::asn::asnPeekByte] [arg data_var] [arg byte_var]]

Retrieve the first byte of the data, without modifing [arg data_var].
This can be used to check for implicit tags.

[call [cmd ::asn::asnGetLength] [arg data_var] [arg length_var]]

Decode the length information for a block of BER data. The tag has already
to be removed from the data.



[call [cmd ::asn::asnGetResponse] [arg chan] [arg data_var]]

Reads an encoded ASN [emph sequence] from the channel [arg chan] and
stores it into the variable named by [arg data_var].


[call [cmd ::asn::asnGetInteger] [arg data_var] [arg int_var]]

Assumes that an encoded integer value is at the front of the data
stored in the variable named [arg data_var], extracts and stores it
into the variable named by [arg int_var]. Additionally removes all
bytes associated with the value from the data for further processing
by the following decoder commands.


[call [cmd ::asn::asnGetEnumeration] [arg data_var] [arg enum_var]]

Assumes that an enumeration id is at the front of the data stored in
the variable named [arg data_var], and stores it into the variable
named by [arg enum_var]. Additionally removes all bytes associated
with the value from the data for further processing by the following
decoder commands.


[call [cmd ::asn::asnGetOctetString] [arg data_var] [arg string_var]]

Assumes that a string is at the front of the data stored in the
variable named [arg data_var], and stores it into the variable named
by [arg string_var]. Additionally removes all bytes associated with
the value from the data for further processing by the following
decoder commands.


[call [cmd ::asn::asnGetString] [arg data_var] [arg string_var] [opt [arg type_var]]]

Decodes a user-readable string. This is a convenience function which
is able to automatically distinguish all supported ASN.1 string types
and convert the input value appropriately.








<












<
<




<








<









<







<







197
198
199
200
201
202
203

204
205
206
207
208
209
210
211
212
213
214
215


216
217
218
219

220
221
222
223
224
225
226
227

228
229
230
231
232
233
234
235
236

237
238
239
240
241
242
243

244
245
246
247
248
249
250
After extraction the data variable is always modified first, before by
writing the extracted value to its variable. This means that if both
arguments refer to the same variable, it will always contain the
extracted value after the call, and not the remainder of the input.

[list_end]


[para]
[list_begin definitions]
[call [cmd ::asn::asnPeekByte] [arg data_var] [arg byte_var]]

Retrieve the first byte of the data, without modifing [arg data_var].
This can be used to check for implicit tags.

[call [cmd ::asn::asnGetLength] [arg data_var] [arg length_var]]

Decode the length information for a block of BER data. The tag has already
to be removed from the data.



[call [cmd ::asn::asnGetResponse] [arg chan] [arg data_var]]

Reads an encoded ASN [emph sequence] from the channel [arg chan] and
stores it into the variable named by [arg data_var].


[call [cmd ::asn::asnGetInteger] [arg data_var] [arg int_var]]

Assumes that an encoded integer value is at the front of the data
stored in the variable named [arg data_var], extracts and stores it
into the variable named by [arg int_var]. Additionally removes all
bytes associated with the value from the data for further processing
by the following decoder commands.


[call [cmd ::asn::asnGetEnumeration] [arg data_var] [arg enum_var]]

Assumes that an enumeration id is at the front of the data stored in
the variable named [arg data_var], and stores it into the variable
named by [arg enum_var]. Additionally removes all bytes associated
with the value from the data for further processing by the following
decoder commands.


[call [cmd ::asn::asnGetOctetString] [arg data_var] [arg string_var]]

Assumes that a string is at the front of the data stored in the
variable named [arg data_var], and stores it into the variable named
by [arg string_var]. Additionally removes all bytes associated with
the value from the data for further processing by the following
decoder commands.


[call [cmd ::asn::asnGetString] [arg data_var] [arg string_var] [opt [arg type_var]]]

Decodes a user-readable string. This is a convenience function which
is able to automatically distinguish all supported ASN.1 string types
and convert the input value appropriately.

283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
"Invalid command name asnGetSome[var UnsupportedString]" if the
unsupported string type [var Unsupported] is encountered. You can
create the appropriate function

"asn::asnGetSome[var UnsupportedString]" in your application if
neccessary.


[call [cmd ::asn::asnGetNumericString] [arg data_var] [arg string_var]]

Assumes that a numeric string value is at the front of the data stored
in the variable named [arg data_var], and stores it into the variable
named by [arg string_var]. Additionally removes all bytes associated
with the value from the data for further processing by the following
decoder commands.


[call [cmd ::asn::asnGetPrintableString] [arg data_var] [arg string_var]]

Assumes that a printable string value is at the front of the data
stored in the variable named [arg data_var], and stores it into the
variable named by [arg string_var]. Additionally removes all bytes
associated with the value from the data for further processing by the
following decoder commands.


[call [cmd ::asn::asnGetIA5String] [arg data_var] [arg string_var]]

Assumes that a IA5 (ASCII) string value is at the front of the data
stored in the variable named [arg data_var], and stores it into the
variable named by [arg string_var]. Additionally removes all bytes
associated with the value from the data for further processing by the
following decoder commands.


[call [cmd ::asn::asnGetBMPString] [arg data_var] [arg string_var]]

Assumes that a BMP (two-byte unicode) string value is at the front of
the data stored in the variable named [arg data_var], and stores it
into the variable named by [arg string_var], converting it into a
proper Tcl string. Additionally removes all bytes associated with the
value from the data for further processing by the following decoder
commands.


[call [cmd ::asn::asnGetUTF8String] [arg data_var] [arg string_var]]

Assumes that a UTF8 string value is at the front of the data stored in
the variable named [arg data_var], and stores it into the variable
named by [arg string_var], converting it into a proper Tcl string.
Additionally removes all bytes associated with the value from the data
for further processing by the following decoder commands.


[call [cmd ::asn::asnGetUTCTime] [arg data_var] [arg utc_var]]

Assumes that a UTC time value is at the front of the data stored in the
variable named [arg data_var], and stores it into the variable named 
by [arg utc_var]. The UTC time value is stored as a string, which has to
be decoded with the usual clock scan commands.
Additionally removes all bytes associated with the
value from the data for further processing by the following decoder
commands.


[call [cmd ::asn::asnGetBitString] [arg data_var] [arg bits_var]]

Assumes that a bit string value is at the front of the data stored in the
variable named [arg data_var], and stores it into the variable named 
by [arg bits_var] as a string containing only 0 and 1.
Additionally removes all bytes associated with the
value from the data for further processing by the following decoder
commands.


[call [cmd ::asn::asnGetObjectIdentifier] [arg data_var] [arg oid_var]]

Assumes that a object identifier (OID) value is at the front of the data 
stored in the variable named [arg data_var], and stores it into the variable 
named by [arg oid_var] as a list of integers. 
Additionally removes all bytes associated with the
value from the data for further processing by the following decoder
commands.


[call [cmd ::asn::asnGetBoolean] [arg data_var] [arg bool_var]]

Assumes that a boolean value is at the front of the data stored in the
variable named [arg data_var], and stores it into the variable named 
by [arg bool_var]. Additionally removes all bytes associated with the
value from the data for further processing by the following decoder
commands.


[call [cmd ::asn::asnGetNull] [arg data_var]]

Assumes that a NULL value is at the front of the data stored in the
variable named [arg data_var] and removes the bytes used to encode it
from the data.


[call [cmd ::asn::asnGetSequence] [arg data_var] [arg sequence_var]]

Assumes that an ASN sequence is at the front of the data stored in the
variable named [arg data_var], and stores it into the variable named
by [arg sequence_var]. Additionally removes all bytes associated with
the value from the data for further processing by the following
decoder commands.

[para]

The data in [arg sequence_var] is encoded binary and has to be
further decoded according to the definition of the sequence, using the
decoder commands here.


[call [cmd ::asn::asnGetSet] [arg data_var] [arg set_var]]

Assumes that an ASN set is at the front of the data stored in the
variable named [arg data_var], and stores it into the variable named
by [arg set_var]. Additionally removes all bytes associated with the
value from the data for further processing by the following decoder
commands.

[para]

The data in [arg set_var] is encoded binary and has to be further
decoded according to the definition of the set, using the decoder
commands here.


[call [cmd ::asn::asnGetApplication] [arg data_var] [arg appNumber_var] [opt [arg content_var]] [opt [arg encodingType_var]]]

Assumes that an ASN application construct is at the front of the data
stored in the variable named [arg data_var], and stores its id into
the variable named by [arg appNumber_var]. Additionally removes all
bytes associated with the value from the data for further processing







<







<









<







<










<








<



|






<



|





<


|
|
|




<



|



<






<















<













<







263
264
265
266
267
268
269

270
271
272
273
274
275
276

277
278
279
280
281
282
283
284
285

286
287
288
289
290
291
292

293
294
295
296
297
298
299
300
301
302

303
304
305
306
307
308
309
310

311
312
313
314
315
316
317
318
319
320

321
322
323
324
325
326
327
328
329

330
331
332
333
334
335
336
337
338

339
340
341
342
343
344
345

346
347
348
349
350
351

352
353
354
355
356
357
358
359
360
361
362
363
364
365
366

367
368
369
370
371
372
373
374
375
376
377
378
379

380
381
382
383
384
385
386
"Invalid command name asnGetSome[var UnsupportedString]" if the
unsupported string type [var Unsupported] is encountered. You can
create the appropriate function

"asn::asnGetSome[var UnsupportedString]" in your application if
neccessary.


[call [cmd ::asn::asnGetNumericString] [arg data_var] [arg string_var]]

Assumes that a numeric string value is at the front of the data stored
in the variable named [arg data_var], and stores it into the variable
named by [arg string_var]. Additionally removes all bytes associated
with the value from the data for further processing by the following
decoder commands.


[call [cmd ::asn::asnGetPrintableString] [arg data_var] [arg string_var]]

Assumes that a printable string value is at the front of the data
stored in the variable named [arg data_var], and stores it into the
variable named by [arg string_var]. Additionally removes all bytes
associated with the value from the data for further processing by the
following decoder commands.


[call [cmd ::asn::asnGetIA5String] [arg data_var] [arg string_var]]

Assumes that a IA5 (ASCII) string value is at the front of the data
stored in the variable named [arg data_var], and stores it into the
variable named by [arg string_var]. Additionally removes all bytes
associated with the value from the data for further processing by the
following decoder commands.


[call [cmd ::asn::asnGetBMPString] [arg data_var] [arg string_var]]

Assumes that a BMP (two-byte unicode) string value is at the front of
the data stored in the variable named [arg data_var], and stores it
into the variable named by [arg string_var], converting it into a
proper Tcl string. Additionally removes all bytes associated with the
value from the data for further processing by the following decoder
commands.


[call [cmd ::asn::asnGetUTF8String] [arg data_var] [arg string_var]]

Assumes that a UTF8 string value is at the front of the data stored in
the variable named [arg data_var], and stores it into the variable
named by [arg string_var], converting it into a proper Tcl string.
Additionally removes all bytes associated with the value from the data
for further processing by the following decoder commands.


[call [cmd ::asn::asnGetUTCTime] [arg data_var] [arg utc_var]]

Assumes that a UTC time value is at the front of the data stored in the
variable named [arg data_var], and stores it into the variable named
by [arg utc_var]. The UTC time value is stored as a string, which has to
be decoded with the usual clock scan commands.
Additionally removes all bytes associated with the
value from the data for further processing by the following decoder
commands.


[call [cmd ::asn::asnGetBitString] [arg data_var] [arg bits_var]]

Assumes that a bit string value is at the front of the data stored in the
variable named [arg data_var], and stores it into the variable named
by [arg bits_var] as a string containing only 0 and 1.
Additionally removes all bytes associated with the
value from the data for further processing by the following decoder
commands.


[call [cmd ::asn::asnGetObjectIdentifier] [arg data_var] [arg oid_var]]

Assumes that a object identifier (OID) value is at the front of the data
stored in the variable named [arg data_var], and stores it into the variable
named by [arg oid_var] as a list of integers.
Additionally removes all bytes associated with the
value from the data for further processing by the following decoder
commands.


[call [cmd ::asn::asnGetBoolean] [arg data_var] [arg bool_var]]

Assumes that a boolean value is at the front of the data stored in the
variable named [arg data_var], and stores it into the variable named
by [arg bool_var]. Additionally removes all bytes associated with the
value from the data for further processing by the following decoder
commands.


[call [cmd ::asn::asnGetNull] [arg data_var]]

Assumes that a NULL value is at the front of the data stored in the
variable named [arg data_var] and removes the bytes used to encode it
from the data.


[call [cmd ::asn::asnGetSequence] [arg data_var] [arg sequence_var]]

Assumes that an ASN sequence is at the front of the data stored in the
variable named [arg data_var], and stores it into the variable named
by [arg sequence_var]. Additionally removes all bytes associated with
the value from the data for further processing by the following
decoder commands.

[para]

The data in [arg sequence_var] is encoded binary and has to be
further decoded according to the definition of the sequence, using the
decoder commands here.


[call [cmd ::asn::asnGetSet] [arg data_var] [arg set_var]]

Assumes that an ASN set is at the front of the data stored in the
variable named [arg data_var], and stores it into the variable named
by [arg set_var]. Additionally removes all bytes associated with the
value from the data for further processing by the following decoder
commands.

[para]

The data in [arg set_var] is encoded binary and has to be further
decoded according to the definition of the set, using the decoder
commands here.


[call [cmd ::asn::asnGetApplication] [arg data_var] [arg appNumber_var] [opt [arg content_var]] [opt [arg encodingType_var]]]

Assumes that an ASN application construct is at the front of the data
stored in the variable named [arg data_var], and stores its id into
the variable named by [arg appNumber_var]. Additionally removes all
bytes associated with the value from the data for further processing
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443

[para]

Otherwise it is the responsibility of the caller to decode the
remainder of the application construct based on the id retrieved by
this command, using the decoder commands of this package.


[call [cmd ::asn::asnGetContext] [arg data_var] [arg contextNumber_var] [opt [arg content_var]] [opt [arg encodingType_var]]] 

Assumes that an ASN context tag construct is at the front of the data
stored in the variable named [arg data_var], and stores its id into
the variable named by [arg contextNumber_var]. Additionally removes all
bytes associated with the value from the data for further processing
by the following decoder commands.








<
|







395
396
397
398
399
400
401

402
403
404
405
406
407
408
409

[para]

Otherwise it is the responsibility of the caller to decode the
remainder of the application construct based on the id retrieved by
this command, using the decoder commands of this package.


[call [cmd ::asn::asnGetContext] [arg data_var] [arg contextNumber_var] [opt [arg content_var]] [opt [arg encodingType_var]]]

Assumes that an ASN context tag construct is at the front of the data
stored in the variable named [arg data_var], and stores its id into
the variable named by [arg contextNumber_var]. Additionally removes all
bytes associated with the value from the data for further processing
by the following decoder commands.

475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
to the class of the tag. (Either UNIVERSAL, CONTEXT, APPLICATION or PRIVATE). The [arg constr_var] is set to 1 if the
tag is for a constructed value, and to 0 for not constructed. It returns the length of the tag.

[call [cmd ::asn::asnTag] [arg tagnumber] [opt [arg class]] [opt [arg tagstyle]]]

The [cmd ::asn::asnTag] can be used to create a tag value. The [arg tagnumber] gives the number of the tag, while
the [arg class] gives one of the classes (UNIVERSAL,CONTEXT,APPLICATION or PRIVATE). The class may be abbreviated to just the first letter (U,C,A,P),
default is UNIVERSAL.    
The [arg tagstyle] is either C for Constructed encoding, or P for primitve encoding. It defaults to P. You can also use 1 instead of C and
0 instead of P for direct use of the values returned by [cmd ::asn::asnPeekTag].

[call [cmd ::asn::asnRetag] [arg data_var] [arg newTag]]

Replaces the tag in front of the data in [arg data_var] with [arg newTag]. The new Tag can be created using the [cmd ::asn::asnTag] command.
[list_end]



[section EXAMPLES]

Examples for the usage of this package can be found in the
implementation of package [package ldap].

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph asn] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords asn x.208 ber x.209 der cer internet protocol]
[manpage_end]







|








<
<





<
|
<
<
|
<
<
<
<
<
<
<
<

441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456


457
458
459
460
461

462


463








464
to the class of the tag. (Either UNIVERSAL, CONTEXT, APPLICATION or PRIVATE). The [arg constr_var] is set to 1 if the
tag is for a constructed value, and to 0 for not constructed. It returns the length of the tag.

[call [cmd ::asn::asnTag] [arg tagnumber] [opt [arg class]] [opt [arg tagstyle]]]

The [cmd ::asn::asnTag] can be used to create a tag value. The [arg tagnumber] gives the number of the tag, while
the [arg class] gives one of the classes (UNIVERSAL,CONTEXT,APPLICATION or PRIVATE). The class may be abbreviated to just the first letter (U,C,A,P),
default is UNIVERSAL.
The [arg tagstyle] is either C for Constructed encoding, or P for primitve encoding. It defaults to P. You can also use 1 instead of C and
0 instead of P for direct use of the values returned by [cmd ::asn::asnPeekTag].

[call [cmd ::asn::asnRetag] [arg data_var] [arg newTag]]

Replaces the tag in front of the data in [arg data_var] with [arg newTag]. The new Tag can be created using the [cmd ::asn::asnTag] command.
[list_end]



[section EXAMPLES]

Examples for the usage of this package can be found in the
implementation of package [package ldap].


[vset CATEGORY asn]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/base32/base32.man.

1
2


3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin base32 n 0.1]


[copyright {Public domain}]
[moddesc   {Base32 encoding}]
[titledesc {base32 standard encoding}]
[category  {Text processing}]
[require Tcl 8.4]
[require base32::core [opt 0.1]]
[require base32       [opt 0.1]]
[description]
[keywords base32 rfc3548]
[para]

This package provides commands for encoding and decoding of strings
into and out of the standard base32 encoding as specified in RFC 3548.

[section API]



>
>








<







1
2
3
4
5
6
7
8
9
10
11
12

13
14
15
16
17
18
19
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin base32 n 0.1]
[keywords base32]
[keywords rfc3548]
[copyright {Public domain}]
[moddesc   {Base32 encoding}]
[titledesc {base32 standard encoding}]
[category  {Text processing}]
[require Tcl 8.4]
[require base32::core [opt 0.1]]
[require base32       [opt 0.1]]
[description]

[para]

This package provides commands for encoding and decoding of strings
into and out of the standard base32 encoding as specified in RFC 3548.

[section API]

45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
[enum] the input contains characters which are not valid output of a base32 encoder,
[enum] the length of the input is not a multiple of eight,
[enum] padding appears not at the end of input, but in the middle,
[enum] the padding has not of length six, four, three, or one characters,
[list_end]
[list_end]


[section {Code map}]

The code map used to convert 5-bit sequences is shown below, with the
numeric id of the bit sequences to the left and the character used to
encode it to the right. It should be noted that the characters "0" and
"1" are not used by the encoding. This is done as these characters can
be easily confused with "O", "o" and "l" (L).

[example {
	0 A    9 J   18 S   27 3
	1 B   10 K   19 T   28 4
	2 C   11 L   20 U   29 5
	3 D   12 M   21 V   30 6
	4 E   13 N   22 W   31 7
	5 F   14 O   23 X
	6 G   15 P   24 Y
	7 H   16 Q   25 Z
	8 I   17 R   26 2
}]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph base32] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[manpage_end]







<




















<
|
<
<
|
<
<
<
<
<
<
<

46
47
48
49
50
51
52

53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72

73


74







75
[enum] the input contains characters which are not valid output of a base32 encoder,
[enum] the length of the input is not a multiple of eight,
[enum] padding appears not at the end of input, but in the middle,
[enum] the padding has not of length six, four, three, or one characters,
[list_end]
[list_end]


[section {Code map}]

The code map used to convert 5-bit sequences is shown below, with the
numeric id of the bit sequences to the left and the character used to
encode it to the right. It should be noted that the characters "0" and
"1" are not used by the encoding. This is done as these characters can
be easily confused with "O", "o" and "l" (L).

[example {
	0 A    9 J   18 S   27 3
	1 B   10 K   19 T   28 4
	2 C   11 L   20 U   29 5
	3 D   12 M   21 V   30 6
	4 E   13 N   22 W   31 7
	5 F   14 O   23 X
	6 G   15 P   24 Y
	7 H   16 Q   25 Z
	8 I   17 R   26 2
}]


[vset CATEGORY base32]


[include ../doctools2base/include/feedback.inc]







[manpage_end]

Changes to modules/base32/base32core.man.

1
2

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin base32::core n 0.1]

[copyright {Public domain}]
[moddesc   {Base32 encoding}]
[titledesc {Expanding basic base32 maps}]
[category  {Text processing}]
[require Tcl 8.4]
[require base32::core [opt 0.1]]
[description]
[keywords base32]
[para]

This package provides generic commands for the construction of full
base32 mappings from a basic mapping listing just the codes and
associated characters. The full mappings, regular and inverse, created
here map to and from bit sequences, and also handle the partial
mappings at the end of a string.

[para]

This is in essence an internal package to be used by implementors of a
base32 en- and decoder. A regular user has no need of this package at
all.


[section API]

[list_begin definitions]

[call [cmd ::base32::core::define] [arg map] [arg forwvar] [arg backwvar] [arg ivar]]

This command computes full forward and backward (inverse) mappings
from the basic [arg map] and stores them in the variables named by
[arg forwvar] and [arg backwvar] resp. It also constructs a regexp
pattern for the detection of invalid characters in supposedly base32
encoded input and stores it in the variable named by [arg ivar].


[call [cmd ::base32::core::valid] [arg string] [arg pattern] [arg mvar]]

This command checks if the input [arg string] is a valid base32
encoded string, based on the [arg pattern] of invalid characters as
generated by [cmd ::base32::core::define], and some other general
rules.


>







<














<











<







1
2
3
4
5
6
7
8
9
10

11
12
13
14
15
16
17
18
19
20
21
22
23
24

25
26
27
28
29
30
31
32
33
34
35

36
37
38
39
40
41
42
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin base32::core n 0.1]
[keywords base32]
[copyright {Public domain}]
[moddesc   {Base32 encoding}]
[titledesc {Expanding basic base32 maps}]
[category  {Text processing}]
[require Tcl 8.4]
[require base32::core [opt 0.1]]
[description]

[para]

This package provides generic commands for the construction of full
base32 mappings from a basic mapping listing just the codes and
associated characters. The full mappings, regular and inverse, created
here map to and from bit sequences, and also handle the partial
mappings at the end of a string.

[para]

This is in essence an internal package to be used by implementors of a
base32 en- and decoder. A regular user has no need of this package at
all.


[section API]

[list_begin definitions]

[call [cmd ::base32::core::define] [arg map] [arg forwvar] [arg backwvar] [arg ivar]]

This command computes full forward and backward (inverse) mappings
from the basic [arg map] and stores them in the variables named by
[arg forwvar] and [arg backwvar] resp. It also constructs a regexp
pattern for the detection of invalid characters in supposedly base32
encoded input and stores it in the variable named by [arg ivar].


[call [cmd ::base32::core::valid] [arg string] [arg pattern] [arg mvar]]

This command checks if the input [arg string] is a valid base32
encoded string, based on the [arg pattern] of invalid characters as
generated by [cmd ::base32::core::define], and some other general
rules.
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
[list_begin enumerated]
[enum] The length of the input is not a multiple of eight,
[enum] The padding appears not at the end of input, but in the middle,
[enum] The padding has not of length six, four, three, or one characters,
[list_end]
[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph base32] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<

57
58
59
60
61
62
63

64


65







66
[list_begin enumerated]
[enum] The length of the input is not a multiple of eight,
[enum] The padding appears not at the end of input, but in the middle,
[enum] The padding has not of length six, four, three, or one characters,
[list_end]
[list_end]


[vset CATEGORY base32]


[include ../doctools2base/include/feedback.inc]







[manpage_end]

Changes to modules/base32/base32hex.man.

1
2



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin base32::hex n 0.1]



[copyright {Public domain}]
[moddesc   {Base32 encoding}]
[titledesc {base32 extended hex encoding}]
[category  {Text processing}]
[require Tcl 8.4]
[require base32::core [opt 0.1]]
[require base32::hex  [opt 0.1]]
[description]
[keywords base32 rfc3548 hex]
[para]

This package provides commands for encoding and decoding of strings
into and out of the extended hex base32 encoding as specified in the
RFC 3548bis draft.

[section API]


>
>
>








<







1
2
3
4
5
6
7
8
9
10
11
12
13

14
15
16
17
18
19
20
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin base32::hex n 0.1]
[keywords base32]
[keywords hex]
[keywords rfc3548]
[copyright {Public domain}]
[moddesc   {Base32 encoding}]
[titledesc {base32 extended hex encoding}]
[category  {Text processing}]
[require Tcl 8.4]
[require base32::core [opt 0.1]]
[require base32::hex  [opt 0.1]]
[description]

[para]

This package provides commands for encoding and decoding of strings
into and out of the extended hex base32 encoding as specified in the
RFC 3548bis draft.

[section API]
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
       of a extended hex base32 encoder,
[enum] the length of the input is not a multiple of eight,
[enum] padding appears not at the end of input, but in the middle,
[enum] the padding has not of length six, four, three, or one characters,
[list_end]
[list_end]


[section {Code map}]

The code map used to convert 5-bit sequences is shown below, with the
numeric id of the bit sequences to the left and the character used to
encode it to the right. The important feature of the extended hex
mapping is that the first 16 codes map to the digits and hex
characters.

[example {
	0 0    9 9        18 I   27 R
	1 1   10 A        19 J   28 S
	2 2   11 B        20 K   29 T
	3 3   12 C        21 L   30 U
	4 4   13 D        22 M   31 V
	5 5   14 E        23 N
	6 6   15 F        24 O
	7 7        16 G   25 P
	8 8        17 H   26 Q
}]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph base32] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[manpage_end]







<




















<
|
<
<
|
<
<
<
<
<
<
<

49
50
51
52
53
54
55

56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75

76


77







78
       of a extended hex base32 encoder,
[enum] the length of the input is not a multiple of eight,
[enum] padding appears not at the end of input, but in the middle,
[enum] the padding has not of length six, four, three, or one characters,
[list_end]
[list_end]


[section {Code map}]

The code map used to convert 5-bit sequences is shown below, with the
numeric id of the bit sequences to the left and the character used to
encode it to the right. The important feature of the extended hex
mapping is that the first 16 codes map to the digits and hex
characters.

[example {
	0 0    9 9        18 I   27 R
	1 1   10 A        19 J   28 S
	2 2   11 B        20 K   29 T
	3 3   12 C        21 L   30 U
	4 4   13 D        22 M   31 V
	5 5   14 E        23 N
	6 6   15 F        24 O
	7 7        16 G   25 P
	8 8        17 H   26 Q
}]


[vset CATEGORY base32]


[include ../doctools2base/include/feedback.inc]







[manpage_end]

Changes to modules/base64/ascii85.man.

1


2
3
4
5
6
7
8
[manpage_begin ascii85 n 1.0]


[copyright "2010, Emiliano Gavil\u00e1n"]
[moddesc   {Text encoding & decoding binary data}]
[titledesc {ascii85-encode/decode binary data}]
[category  {Text processing}]
[require Tcl 8.4]
[require ascii85 [opt 1.0]]
[description]

>
>







1
2
3
4
5
6
7
8
9
10
[manpage_begin ascii85 n 1.0]
[keywords ascii85]
[keywords encoding]
[copyright "2010, Emiliano Gavil\u00e1n"]
[moddesc   {Text encoding & decoding binary data}]
[titledesc {ascii85-encode/decode binary data}]
[category  {Text processing}]
[require Tcl 8.4]
[require ascii85 [opt 1.0]]
[description]
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
[emph {Note well}]: If your string is not simple ascii you should fix
the string encoding before doing ascii85 encoding. See the examples.

[para]

The command will throw an error for negative values of [arg maxlen],
or if [arg maxlen] is not an integer number.


[call [cmd ::ascii85::decode] [arg "string"]]

Ascii85 decodes the given [arg "string"] and returns the binary data.
The decoder ignores whitespace in the string, as well as tabs and
newlines.








<







26
27
28
29
30
31
32

33
34
35
36
37
38
39
[emph {Note well}]: If your string is not simple ascii you should fix
the string encoding before doing ascii85 encoding. See the examples.

[para]

The command will throw an error for negative values of [arg maxlen],
or if [arg maxlen] is not an integer number.


[call [cmd ::ascii85::decode] [arg "string"]]

Ascii85 decodes the given [arg "string"] and returns the binary data.
The decoder ignores whitespace in the string, as well as tabs and
newlines.

65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85

[list_begin enum]
[enum] [uri http://en.wikipedia.org/wiki/Ascii85]
[enum] Postscript Language Reference Manual, 3rd Edition, page 131.
       [uri http://www.adobe.com/devnet/postscript/pdfs/PLRM.pdf]
[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph base64] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords encoding ascii85]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<

66
67
68
69
70
71
72

73


74








75

[list_begin enum]
[enum] [uri http://en.wikipedia.org/wiki/Ascii85]
[enum] Postscript Language Reference Manual, 3rd Edition, page 131.
       [uri http://www.adobe.com/devnet/postscript/pdfs/PLRM.pdf]
[list_end]


[vset CATEGORY base64]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/base64/base64.man.

1


2
3
4
5
6
7
8
[manpage_begin base64 n 2.4.2]


[copyright {2000, Eric Melski}]
[copyright {2001, Miguel Sofer}]
[moddesc   {Text encoding & decoding binary data}]
[titledesc {base64-encode/decode binary data}]
[category  {Text processing}]
[require Tcl 8]
[require base64 [opt 2.4.2]]

>
>







1
2
3
4
5
6
7
8
9
10
[manpage_begin base64 n 2.4.2]
[keywords base64]
[keywords encoding]
[copyright {2000, Eric Melski}]
[copyright {2001, Miguel Sofer}]
[moddesc   {Text encoding & decoding binary data}]
[titledesc {base64-encode/decode binary data}]
[category  {Text processing}]
[require Tcl 8]
[require base64 [opt 2.4.2]]
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
the string encoding before doing base64 encoding. See the examples.

[para]

The command will throw an error for negative values of [arg maxlen],
or if [arg maxlen] is not an integer number.


[call [cmd ::base64::decode] [arg "string"]]

Base64 decodes the given [arg "string"] and returns the binary data.
The decoder ignores whitespace in the string.

[list_end]








<







31
32
33
34
35
36
37

38
39
40
41
42
43
44
the string encoding before doing base64 encoding. See the examples.

[para]

The command will throw an error for negative values of [arg maxlen],
or if [arg maxlen] is not an integer number.


[call [cmd ::base64::decode] [arg "string"]]

Base64 decodes the given [arg "string"] and returns the binary data.
The decoder ignores whitespace in the string.

[list_end]

60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# NOTE: base64 encodes BINARY strings.
% set chemical [encoding convertto utf-8 "C\u2088H\u2081\u2080N\u2084O\u2082"]
% set encoded [base64::encode $chemical]
Q+KCiEjigoHigoBO4oKET+KCgg==
% set caffeine [encoding convertfrom utf-8 [base64::decode $encoded]]
}]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph base64] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords encoding base64]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<

61
62
63
64
65
66
67
68

69











70
# NOTE: base64 encodes BINARY strings.
% set chemical [encoding convertto utf-8 "C\u2088H\u2081\u2080N\u2084O\u2082"]
% set encoded [base64::encode $chemical]
Q+KCiEjigoHigoBO4oKET+KCgg==
% set caffeine [encoding convertfrom utf-8 [base64::decode $encoded]]
}]

[vset CATEGORY base64]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/base64/uuencode.man.

1


2
3
4
5
6
7
8
[manpage_begin uuencode n 1.1.4]


[copyright {2002, Pat Thoyts}]
[moddesc   {Text encoding & decoding binary data}]
[titledesc {UU-encode/decode binary data}]
[category  {Text processing}]
[require Tcl 8]
[require uuencode [opt 1.1.4]]
[description]

>
>







1
2
3
4
5
6
7
8
9
10
[manpage_begin uuencode n 1.1.4]
[keywords encoding]
[keywords uuencode]
[copyright {2002, Pat Thoyts}]
[moddesc   {Text encoding & decoding binary data}]
[titledesc {UU-encode/decode binary data}]
[category  {Text processing}]
[require Tcl 8]
[require uuencode [opt 1.1.4]]
[description]
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106

[para]
[example {
% uuencode::uudecode $d
{hello.txt 644 {Hello World}}
}]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph base64] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords encoding uuencode]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<

88
89
90
91
92
93
94

95


96








97

[para]
[example {
% uuencode::uudecode $d
{hello.txt 644 {Hello World}}
}]


[vset CATEGORY base64]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/base64/yencode.man.

1




2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[manpage_begin yencode n 1.1.2]




[copyright {2002, Pat Thoyts}]
[moddesc   {Text encoding & decoding binary data}]
[titledesc {Y-encode/decode binary data}]
[category  {Text processing}]
[require Tcl 8.2]
[require yencode [opt 1.1.2]]
[description]
[para]

This package provides a Tcl-only implementation of the yEnc file
encoding. This is a recently introduced method of encoding binary
files for transmission through Usenet. This encoding packs binary data
into a format that requires an 8-bit clean transmission layer but that
escapes characters special to the [term NNTP] posting protocols. See 
[uri http://www.yenc.org/] for details concerning the algorithm.

[list_begin definitions]

[call [cmd ::yencode::encode] [arg string]]

returns the yEnc encoded data.

>
>
>
>













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[manpage_begin yencode n 1.1.2]
[keywords encoding]
[keywords ydecode]
[keywords yEnc]
[keywords yencode]
[copyright {2002, Pat Thoyts}]
[moddesc   {Text encoding & decoding binary data}]
[titledesc {Y-encode/decode binary data}]
[category  {Text processing}]
[require Tcl 8.2]
[require yencode [opt 1.1.2]]
[description]
[para]

This package provides a Tcl-only implementation of the yEnc file
encoding. This is a recently introduced method of encoding binary
files for transmission through Usenet. This encoding packs binary data
into a format that requires an 8-bit clean transmission layer but that
escapes characters special to the [term NNTP] posting protocols. See
[uri http://www.yenc.org/] for details concerning the algorithm.

[list_begin definitions]

[call [cmd ::yencode::encode] [arg string]]

returns the yEnc encoded data.
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103

[section References]

[list_begin enum]
[enum] [uri http://www.yenc.org/yenc-draft.1.3.txt]
[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph base64] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords encoding yEnc yencode ydecode]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<

87
88
89
90
91
92
93

94


95








96

[section References]

[list_begin enum]
[enum] [uri http://www.yenc.org/yenc-draft.1.3.txt]
[list_end]


[vset CATEGORY base64]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/bee/bee.man.

1
2





3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin bee n 0.1]





[copyright {2004 Andreas Kupries <[email protected]>}]
[moddesc   {BitTorrent}]
[titledesc {BitTorrent Serialization Format Encoder/Decoder}]
[category  Networking]
[require Tcl 8.4]
[require bee [opt 0.1]]
[description]


>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin bee n 0.1]
[keywords bee]
[keywords BitTorrent]
[keywords bittorrent]
[keywords serialization]
[keywords torrent]
[copyright {2004 Andreas Kupries <[email protected]>}]
[moddesc   {BitTorrent}]
[titledesc {BitTorrent Serialization Format Encoder/Decoder}]
[category  Networking]
[require Tcl 8.4]
[require bee [opt 0.1]]
[description]
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
[para]
[list_begin definitions]

[call [cmd ::bee::encodeString] [arg string]]

Returns the bee-encoding of the [arg string].


[call [cmd ::bee::encodeNumber] [arg integer]]

Returns the bee-encoding of the [arg integer] number.


[call [cmd ::bee::encodeListArgs] [arg value]...]

Takes zero or more bee-encoded values and returns the bee-encoding of
their list.

[call [cmd ::bee::encodeList] [arg list]]

Takes a list of bee-encoded values and returns the bee-encoding of the
list.


[call [cmd ::bee::encodeDictArgs] [arg key] [arg value]...]

Takes zero or more pairs of keys and values and returns the
bee-encoding of the dictionary they form. The values are expected to
be already bee-encoded, but the keys must not be. Their encoding will
be done by the command itself.


[call [cmd ::bee::encodeDict] [arg dict]]

Takes a dictionary list of string keys and bee-encoded values and
returns the bee-encoding of the list. Note that the keys in the input
must not be bee-encoded already. This will be done by the command
itself. 

[list_end]
[para]


[subsection DECODER]

The package provides two main decoder commands, one for decoding a
string expected to contain a complete data structure, the other for
the incremental decoding of bee-values arriving on a channel. The
latter command is asynchronous and provides the completed decoded
values to the user through a command callback.


[para]
[list_begin definitions]

[call [cmd ::bee::decode] [arg string] [opt [arg endvar]] [opt [arg start]]]

Takes the bee-encoding in the string and returns one decoded value. In







<



<











<







<





|



<








<







32
33
34
35
36
37
38

39
40
41

42
43
44
45
46
47
48
49
50
51
52

53
54
55
56
57
58
59

60
61
62
63
64
65
66
67
68

69
70
71
72
73
74
75
76

77
78
79
80
81
82
83
[para]
[list_begin definitions]

[call [cmd ::bee::encodeString] [arg string]]

Returns the bee-encoding of the [arg string].


[call [cmd ::bee::encodeNumber] [arg integer]]

Returns the bee-encoding of the [arg integer] number.


[call [cmd ::bee::encodeListArgs] [arg value]...]

Takes zero or more bee-encoded values and returns the bee-encoding of
their list.

[call [cmd ::bee::encodeList] [arg list]]

Takes a list of bee-encoded values and returns the bee-encoding of the
list.


[call [cmd ::bee::encodeDictArgs] [arg key] [arg value]...]

Takes zero or more pairs of keys and values and returns the
bee-encoding of the dictionary they form. The values are expected to
be already bee-encoded, but the keys must not be. Their encoding will
be done by the command itself.


[call [cmd ::bee::encodeDict] [arg dict]]

Takes a dictionary list of string keys and bee-encoded values and
returns the bee-encoding of the list. Note that the keys in the input
must not be bee-encoded already. This will be done by the command
itself.

[list_end]
[para]


[subsection DECODER]

The package provides two main decoder commands, one for decoding a
string expected to contain a complete data structure, the other for
the incremental decoding of bee-values arriving on a channel. The
latter command is asynchronous and provides the completed decoded
values to the user through a command callback.


[para]
[list_begin definitions]

[call [cmd ::bee::decode] [arg string] [opt [arg endvar]] [opt [arg start]]]

Takes the bee-encoding in the string and returns one decoded value. In
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
contained values.

[para]

The optional [arg start] index defaults to [const 0], i.e. the
beginning of the string. It is the index of the first character of the
bee-encoded value to extract.


[call [cmd ::bee::decodeIndices] [arg string] [opt [arg endvar]] [opt [arg start]]]

Takes the same arguments as [cmd ::bee::decode] and returns the same
information in [arg endvar]. The result however is different. Instead
of the tcl value contained in the [arg string] it returns a list
describing the value with respect to type and location (indices for







<







96
97
98
99
100
101
102

103
104
105
106
107
108
109
contained values.

[para]

The optional [arg start] index defaults to [const 0], i.e. the
beginning of the string. It is the index of the first character of the
bee-encoded value to extract.


[call [cmd ::bee::decodeIndices] [arg string] [opt [arg endvar]] [opt [arg start]]]

Takes the same arguments as [cmd ::bee::decode] and returns the same
information in [arg endvar]. The result however is different. Instead
of the tcl value contained in the [arg string] it returns a list
describing the value with respect to type and location (indices for
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
bee-string. While the index information of the keys is unique enough,
i.e. serviceable as keys, they are not easy to navigate when trying to
find particular element. Using the actual keys makes this much easier.

[list_end]
[para]


[call [cmd ::bee::decodeChannel] [arg chan] \
	[option -command] [arg cmdprefix] \
	[opt [option -exact]] \
	[opt "[option -prefix] [arg data]"] \
]

The command creates a decoder for a series of bee-values arriving on







<







164
165
166
167
168
169
170

171
172
173
174
175
176
177
bee-string. While the index information of the keys is unique enough,
i.e. serviceable as keys, they are not easy to navigate when trying to
find particular element. Using the actual keys makes this much easier.

[list_end]
[para]


[call [cmd ::bee::decodeChannel] [arg chan] \
	[option -command] [arg cmdprefix] \
	[opt [option -exact]] \
	[opt "[option -prefix] [arg data]"] \
]

The command creates a decoder for a series of bee-values arriving on
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
[call [cmd cmdprefix] [method eof] [arg token]]

The decoder has reached eof on the channel [arg chan]. No further
invocations of the callback will be made after this. The channel has
already been closed at the time of the call, and the [arg token] is
not valid anymore as well.


[call [cmd cmdprefix] [method error] [arg token] [arg message]]

The decoder encountered an error, which is not eof. For example a
malformed bee-value. The [arg message] provides details about the
error. The decoder token is in the same state as for eof,
i.e. invalid. The channel however is kept open.


[call [cmd cmdprefix] [method value] [arg token] [arg value]]

The decoder received and successfully decoded a bee-value.

The format of the equivalent tcl [arg value] is the same as returned
by [cmd ::bee::decode]. The channel is still open and the decoder







<






<







197
198
199
200
201
202
203

204
205
206
207
208
209

210
211
212
213
214
215
216
[call [cmd cmdprefix] [method eof] [arg token]]

The decoder has reached eof on the channel [arg chan]. No further
invocations of the callback will be made after this. The channel has
already been closed at the time of the call, and the [arg token] is
not valid anymore as well.


[call [cmd cmdprefix] [method error] [arg token] [arg message]]

The decoder encountered an error, which is not eof. For example a
malformed bee-value. The [arg message] provides details about the
error. The decoder token is in the same state as for eof,
i.e. invalid. The channel however is kept open.


[call [cmd cmdprefix] [method value] [arg token] [arg value]]

The decoder received and successfully decoded a bee-value.

The format of the equivalent tcl [arg value] is the same as returned
by [cmd ::bee::decode]. The channel is still open and the decoder
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
[list_end]
[para]

[call [cmd ::bee::decodeCancel] [arg token]]

This command cancels the decoder set up by [cmd ::bee::decodeChannel]
and represented by the handle [arg token].


[call [cmd ::bee::decodePush] [arg token] [arg string]]

This command appends the [arg string] to the internal decoder
buffer. It is the runtime equivalent of the option [option -prefix] of
[cmd ::bee::decodeChannel]. Use it to push data back into the decoder
when the [method value] callback used data from the channel to







<







249
250
251
252
253
254
255

256
257
258
259
260
261
262
[list_end]
[para]

[call [cmd ::bee::decodeCancel] [arg token]]

This command cancels the decoder set up by [cmd ::bee::decodeChannel]
and represented by the handle [arg token].


[call [cmd ::bee::decodePush] [arg token] [arg string]]

This command appends the [arg string] to the internal decoder
buffer. It is the runtime equivalent of the option [option -prefix] of
[cmd ::bee::decodeChannel]. Use it to push data back into the decoder
when the [method value] callback used data from the channel to
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
[list_end]
[para]

By wrapping an integer number into [const i]...[const e] the format
makes sure that they are different from strings, which all begin with
a digit.


[section EXAMPLES]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph bee] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords bee bittorrent serialization torrent BitTorrent]
[manpage_end]







<


<
|
<
<
|
<
<
<
<
<
<
<
<

332
333
334
335
336
337
338

339
340

341


342








343
[list_end]
[para]

By wrapping an integer number into [const i]...[const e] the format
makes sure that they are different from strings, which all begin with
a digit.


[section EXAMPLES]


[vset CATEGORY bee]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/bench/bench.man.

1
2











3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin bench n 0.4]











[copyright {2007-2008 Andreas Kupries <[email protected]>}]
[moddesc   {Benchmarking/Performance tools}]
[titledesc {bench - Processing benchmark suites}]
[category  {Benchmark tools}]
[require Tcl 8.2]
[require bench [opt 0.4]]
[description]


>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin bench n 0.4]
[see_also bench_intro]
[see_also bench_lang_intro]
[see_also bench_lang_spec]
[see_also bench_read]
[see_also bench_wcsv]
[see_also bench_wtext]
[keywords benchmark]
[keywords merging]
[keywords normalization]
[keywords performance]
[keywords testing]
[copyright {2007-2008 Andreas Kupries <[email protected]>}]
[moddesc   {Benchmarking/Performance tools}]
[titledesc {bench - Processing benchmark suites}]
[category  {Benchmark tools}]
[require Tcl 8.2]
[require bench [opt 0.4]]
[description]
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180

[para]
The benchmark results are in the format described in section
[sectref {Result format}].
[para]
The column is identified by an integer number.


[call [cmd ::bench::edit] [arg bench_result] [arg column] [arg newvalue]]

This command renames a column in the specified benchmark result and
returns the modified result. This means that the path of the Tcl
interpreter in the identified column is changed to an arbitrary
string.

[para]
The benchmark results are in the format described in section
[sectref {Result format}].
[para]
The column is identified by an integer number.


[call [cmd ::bench::merge] [arg bench_result]...]

This commands takes one or more benchmark results, merges them into
one big result, and returns that as its result.

[para]
All benchmark results are in the format described in section
[sectref {Result format}].



[call [cmd ::bench::norm] [arg bench_result] [arg column]]

This command normalizes the timing results in the specified benchmark
result and returns the modified result. This means that the cell
values are not times anymore, but factors showing how much faster or
slower the execution was relative to the baseline.







<













<








<
<







153
154
155
156
157
158
159

160
161
162
163
164
165
166
167
168
169
170
171
172

173
174
175
176
177
178
179
180


181
182
183
184
185
186
187

[para]
The benchmark results are in the format described in section
[sectref {Result format}].
[para]
The column is identified by an integer number.


[call [cmd ::bench::edit] [arg bench_result] [arg column] [arg newvalue]]

This command renames a column in the specified benchmark result and
returns the modified result. This means that the path of the Tcl
interpreter in the identified column is changed to an arbitrary
string.

[para]
The benchmark results are in the format described in section
[sectref {Result format}].
[para]
The column is identified by an integer number.


[call [cmd ::bench::merge] [arg bench_result]...]

This commands takes one or more benchmark results, merges them into
one big result, and returns that as its result.

[para]
All benchmark results are in the format described in section
[sectref {Result format}].



[call [cmd ::bench::norm] [arg bench_result] [arg column]]

This command normalizes the timing results in the specified benchmark
result and returns the modified result. This means that the cell
values are not times anymore, but factors showing how much faster or
slower the execution was relative to the baseline.
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
slower execution.

[para]
The benchmark results are in the format described in section
[sectref {Result format}].
[para]
The column is identified by an integer number.



[call [cmd ::bench::out::raw] [arg bench_result]]

This command formats the specified benchmark result for output to a
file, socket, etc. This specific command does no formatting at all,
it passes the input through unchanged.








<
<







200
201
202
203
204
205
206


207
208
209
210
211
212
213
slower execution.

[para]
The benchmark results are in the format described in section
[sectref {Result format}].
[para]
The column is identified by an integer number.



[call [cmd ::bench::out::raw] [arg bench_result]]

This command formats the specified benchmark result for output to a
file, socket, etc. This specific command does no formatting at all,
it passes the input through unchanged.

282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
[def BAD_RES]
The benchmark could be executed, however the result from its body did
not match the declared expectations.

[list_end]
[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph bench] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also bench_intro]
[see_also bench_lang_intro]
[see_also bench_lang_spec]
[see_also bench_wtext]
[see_also bench_wcsv]
[see_also bench_read]
[keywords testing performance benchmark merging normalization]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<

287
288
289
290
291
292
293
294

295

















296
[def BAD_RES]
The benchmark could be executed, however the result from its body did
not match the declared expectations.

[list_end]
[list_end]

[vset CATEGORY bench]

[include ../doctools2base/include/feedback.inc]

















[manpage_end]

Changes to modules/bench/bench_intro.man.

1
2








3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin bench_intro n 1.0]








[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Benchmarking/Performance tools}]
[titledesc {bench introduction}]
[category  {Benchmark tools}]
[description]
[para]



>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin bench_intro n 1.0]
[see_also bench]
[see_also bench_lang_faq]
[see_also bench_lang_intro]
[see_also bench_lang_spec]
[keywords {bench language}]
[keywords benchmark]
[keywords performance]
[keywords testing]
[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Benchmarking/Performance tools}]
[titledesc {bench introduction}]
[category  {Benchmark tools}]
[description]
[para]

68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97

At the bottom level sits the package [package bench], providing the
basic facilities to read and execute files containing benchmarks
written in the bench language, and to manipulate benchmark results.

[list_end]


[section {HISTORICAL NOTES}]

This module and package have been derived from Jeff Hobbs'
[syscmd tclbench] application for the benchmarking of the Tcl core and
its ancestor [file runbench.tcl].


[section {BUGS, IDEAS, FEEDBACK}]

This document, will undoubtedly contain bugs and other problems.

Please report such in the category [emph bench] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have.

[see_also bench_lang_intro]
[see_also bench_lang_spec]
[see_also bench_lang_faq]
[see_also bench]
[keywords testing performance benchmark {bench language}]
[manpage_end]







<






|
<
|
<
<
<
<
<
<
<
<
<
<
<
<

76
77
78
79
80
81
82

83
84
85
86
87
88
89

90












91

At the bottom level sits the package [package bench], providing the
basic facilities to read and execute files containing benchmarks
written in the bench language, and to manipulate benchmark results.

[list_end]


[section {HISTORICAL NOTES}]

This module and package have been derived from Jeff Hobbs'
[syscmd tclbench] application for the benchmarking of the Tcl core and
its ancestor [file runbench.tcl].

[vset CATEGORY bench]

[include ../doctools2base/include/feedback.inc]












[manpage_end]

Changes to modules/bench/bench_lang_intro.man.

1
2







3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin bench_lang_intro n 1.0]







[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Benchmarking/Performance tools}]
[titledesc {bench language introduction}]
[category  {Benchmark tools}]
[description]
[para]



>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin bench_lang_intro n 1.0]
[see_also bench_intro]
[see_also bench_lang_spec]
[keywords {bench language}]
[keywords benchmark]
[keywords examples]
[keywords performance]
[keywords testing]
[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Benchmarking/Performance tools}]
[titledesc {bench language introduction}]
[category  {Benchmark tools}]
[description]
[para]

33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
}
[example_end]

This code declares a benchmark named [const LABEL] which measures the
time it takes to assign a value to a variable. The Tcl code doing this
assignment is the [option -body] of the benchmark.


[subsection {Pre- and postprocessing}]

Our next example demonstrates how to declare [term initialization] and
[term cleanup] code, i.e. code computing information for the use of
the [option -body], and for releasing such resources after the
measurement is done.








<







40
41
42
43
44
45
46

47
48
49
50
51
52
53
}
[example_end]

This code declares a benchmark named [const LABEL] which measures the
time it takes to assign a value to a variable. The Tcl code doing this
assignment is the [option -body] of the benchmark.


[subsection {Pre- and postprocessing}]

Our next example demonstrates how to declare [term initialization] and
[term cleanup] code, i.e. code computing information for the use of
the [option -body], and for releasing such resources after the
measurement is done.

59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
    set key [lb]aes::Init ecb $k $i[rb]
} -body {
    aes::Encrypt $key $p
} [option -post] {
    aes::Final $key
}
[example_end]


[subsection {Advanced pre- and postprocessing}]

Our last example again deals with initialization and cleanup code. To
see the difference to the regular initialization and cleanup discussed
in the last section it is necessary to know a bit more about how bench
actually measures the speed of the the [option -body].







<







65
66
67
68
69
70
71

72
73
74
75
76
77
78
    set key [lb]aes::Init ecb $k $i[rb]
} -body {
    aes::Encrypt $key $p
} [option -post] {
    aes::Final $key
}
[example_end]


[subsection {Advanced pre- and postprocessing}]

Our last example again deals with initialization and cleanup code. To
see the difference to the regular initialization and cleanup discussed
in the last section it is necessary to know a bit more about how bench
actually measures the speed of the the [option -body].
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
} -body {
    struct::set include A x
} [option -ipost] {
    unset A B
}
[example_end]


[section {FURTHER READING}]

Now that this document has been digested the reader, assumed to be a
[term writer] of benchmarks, he should be fortified enough to be able
to understand the formal [term {bench language specfication}]. It will
also serve as the detailed specification and cheat sheet for all
available commands and their syntax.

[para]

[section {BUGS, IDEAS, FEEDBACK}]

This document, will undoubtedly contain bugs and other problems.

Please report such in the category [emph bench] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have.

[see_also bench_intro]
[see_also bench_lang_spec]
[keywords testing performance benchmark {bench language} examples]
[manpage_end]







<










<
|
<
|
<
<
<
<
<
<
<
<

134
135
136
137
138
139
140

141
142
143
144
145
146
147
148
149
150

151

152








153
} -body {
    struct::set include A x
} [option -ipost] {
    unset A B
}
[example_end]


[section {FURTHER READING}]

Now that this document has been digested the reader, assumed to be a
[term writer] of benchmarks, he should be fortified enough to be able
to understand the formal [term {bench language specfication}]. It will
also serve as the detailed specification and cheat sheet for all
available commands and their syntax.

[para]


[vset CATEGORY bench]

[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/bench/bench_lang_spec.man.

1
2







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin bench_lang_spec n 1.0]







[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {bench language specification}]
[category  {Benchmark tools}]
[description]
[para]

This document specifies both names and syntax of all the commands
which together are the bench language, version 1.

As this document is intended to be a reference the commands are listed
in alphabetical order, and the descriptions are relatively short.

A beginner should read the more informally written
[term {bench language introduction}] first.


[section Commands]
[list_begin definitions]

[call [cmd bench_rm] [arg path]...]

This command silently removes the files specified as its arguments and
then returns the empty string as its result.

The command is [emph trusted], there is no checking if the specified
files are outside of whatever restricted area the benchmarks are run
in.


[call [cmd bench_tmpfile]]

This command returns the path to a bench specific unique temporary
file. The uniqueness means that multiple calls will return different
paths. While the path may exist from previous runs, the command itself
does [emph not] create aynthing.


>
>
>
>
>
>
>
















<











<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

26
27
28
29
30
31
32
33
34
35
36

37
38
39
40
41
42
43
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin bench_lang_spec n 1.0]
[see_also bench_intro]
[see_also bench_lang_intro]
[keywords {bench language}]
[keywords benchmark]
[keywords performance]
[keywords specification]
[keywords testing]
[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {bench language specification}]
[category  {Benchmark tools}]
[description]
[para]

This document specifies both names and syntax of all the commands
which together are the bench language, version 1.

As this document is intended to be a reference the commands are listed
in alphabetical order, and the descriptions are relatively short.

A beginner should read the more informally written
[term {bench language introduction}] first.


[section Commands]
[list_begin definitions]

[call [cmd bench_rm] [arg path]...]

This command silently removes the files specified as its arguments and
then returns the empty string as its result.

The command is [emph trusted], there is no checking if the specified
files are outside of whatever restricted area the benchmarks are run
in.


[call [cmd bench_tmpfile]]

This command returns the path to a bench specific unique temporary
file. The uniqueness means that multiple calls will return different
paths. While the path may exist from previous runs, the command itself
does [emph not] create aynthing.
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
[file /tmp]
[def Windows]
[var \$TEMP]
[def {Anything else}]
The current working directory.
[list_end]
[para]


[call [cmd bench] [arg options]...]

This command declares a single benchmark. Its result is the empty
string. All parts of the benchmark are declared via options, and their
values. The options can occur in any order. The accepted options are:








<







51
52
53
54
55
56
57

58
59
60
61
62
63
64
[file /tmp]
[def Windows]
[var \$TEMP]
[def {Anything else}]
The current working directory.
[list_end]
[para]


[call [cmd bench] [arg options]...]

This command declares a single benchmark. Its result is the empty
string. All parts of the benchmark are declared via options, and their
values. The options can occur in any order. The accepted options are:

119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
[emph before] any of the iterations of the body are run. Its
responsibility is to create whatever resources are needed by the body
to run without failing.

[list_end]
[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph bench] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[see_also bench_intro]
[see_also bench_lang_intro]
[keywords testing performance benchmark {bench language} specification]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<
<

123
124
125
126
127
128
129

130


131









132
[emph before] any of the iterations of the body are run. Its
responsibility is to create whatever resources are needed by the body
to run without failing.

[list_end]
[list_end]


[vset CATEGORY bench]


[include ../doctools2base/include/feedback.inc]









[manpage_end]

Changes to modules/bench/bench_read.man.

1
2













3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin bench::in n 0.1]













[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Benchmarking/Performance tools}]
[titledesc {bench::in - Reading benchmark results}]
[category  {Benchmark tools}]
[require Tcl 8.2]
[require csv]
[require bench::in [opt 0.1]]


>
>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin bench::in n 0.1]
[see_also bench]
[see_also bench::out::csv]
[see_also bench::out::text]
[see_also bench_intro]
[keywords benchmark]
[keywords csv]
[keywords formatting]
[keywords {human readable}]
[keywords parsing]
[keywords performance]
[keywords reading]
[keywords testing]
[keywords text]
[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Benchmarking/Performance tools}]
[titledesc {bench::in - Reading benchmark results}]
[category  {Benchmark tools}]
[require Tcl 8.2]
[require csv]
[require bench::in [opt 0.1]]
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
[list_end]
[para]

and automatically detects which format is used by the input file.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph bench] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also bench_intro]
[see_also bench]
[see_also bench::out::csv]
[see_also bench::out::text]
[keywords testing performance benchmark formatting csv text {human readable}]
[keywords reading parsing]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<

56
57
58
59
60
61
62
63

64
















65
[list_end]
[para]

and automatically detects which format is used by the input file.

[list_end]

[vset CATEGORY bench]

[include ../doctools2base/include/feedback.inc]
















[manpage_end]

Changes to modules/bench/bench_wcsv.man.

1
2







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin bench::out::csv n 0.1.2]







[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Benchmarking/Performance tools}]
[titledesc {bench::out::csv - Formatting benchmark results as CSV}]
[category  {Benchmark tools}]
[require Tcl 8.2]
[require bench::out::csv [opt 0.1.2]]
[description]

This package provides commands for fomatting of benchmark results into
a CSV table importable by spread sheets.


[para]

A reader interested in the generation or processing of such results should
go and read [term {bench - Processing benchmark suites}] instead.

[para]

If the bench language itself is the actual interest please start with
the [term {bench language introduction}] and then proceed from there
to the formal [term {bench language specification}].

[para]

[section {PUBLIC API}]


[list_begin definitions]

[call [cmd ::bench::out::csv] [arg bench_result]]

This command formats the specified benchmark result for output to a
file, socket, etc. This specific command generates CSV data importable
by spread sheets.

[para]

For other formatting styles see the packages [package bench] and
[package bench::out::text] which provide commands to format benchmark
results in raw form, or for human consumption, respectively.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph bench] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also bench]
[see_also bench::out::text]
[keywords testing performance benchmark formatting csv]
[manpage_end]


>
>
>
>
>
>
>










<















<

















|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

53













54
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin bench::out::csv n 0.1.2]
[see_also bench]
[see_also bench::out::text]
[keywords benchmark]
[keywords csv]
[keywords formatting]
[keywords performance]
[keywords testing]
[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Benchmarking/Performance tools}]
[titledesc {bench::out::csv - Formatting benchmark results as CSV}]
[category  {Benchmark tools}]
[require Tcl 8.2]
[require bench::out::csv [opt 0.1.2]]
[description]

This package provides commands for fomatting of benchmark results into
a CSV table importable by spread sheets.


[para]

A reader interested in the generation or processing of such results should
go and read [term {bench - Processing benchmark suites}] instead.

[para]

If the bench language itself is the actual interest please start with
the [term {bench language introduction}] and then proceed from there
to the formal [term {bench language specification}].

[para]

[section {PUBLIC API}]


[list_begin definitions]

[call [cmd ::bench::out::csv] [arg bench_result]]

This command formats the specified benchmark result for output to a
file, socket, etc. This specific command generates CSV data importable
by spread sheets.

[para]

For other formatting styles see the packages [package bench] and
[package bench::out::text] which provide commands to format benchmark
results in raw form, or for human consumption, respectively.

[list_end]

[vset CATEGORY bench]

[include ../doctools2base/include/feedback.inc]













[manpage_end]

Changes to modules/bench/bench_wtext.man.

1
2








3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin bench::out::text n 0.1.2]








[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Benchmarking/Performance tools}]
[titledesc {bench::out::text - Formatting benchmark results as human readable text}]
[category  {Benchmark tools}]
[require Tcl 8.2]
[require bench::out::text [opt 0.1.2]]
[description]


>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin bench::out::text n 0.1.2]
[see_also bench]
[see_also bench::out::csv]
[keywords benchmark]
[keywords formatting]
[keywords {human readable}]
[keywords performance]
[keywords testing]
[keywords text]
[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Benchmarking/Performance tools}]
[titledesc {bench::out::text - Formatting benchmark results as human readable text}]
[category  {Benchmark tools}]
[require Tcl 8.2]
[require bench::out::text [opt 0.1.2]]
[description]
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61

For other formatting styles see the packages [package bench] and
[package bench::out::csv] which provide commands to format benchmark
results in raw form, or as importable CSV data, respectively.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph bench] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also bench]
[see_also bench::out::csv]
[keywords testing performance benchmark formatting text {human readable}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<

46
47
48
49
50
51
52
53

54













55

For other formatting styles see the packages [package bench] and
[package bench::out::csv] which provide commands to format benchmark
results in raw form, or as importable CSV data, respectively.

[list_end]

[vset CATEGORY bench]

[include ../doctools2base/include/feedback.inc]













[manpage_end]

Changes to modules/bibtex/bibtex.man.

1
2




3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin bibtex n 0.5]




[copyright {2005 for documentation, Andreas Kupries <[email protected]>}]
[moddesc   {bibtex}]
[titledesc {Parse bibtex files}]
[category  {Text processing}]
[require Tcl 8.4]
[require bibtex [opt 0.5]]
[description]


>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin bibtex n 0.5]
[keywords bibliography]
[keywords bibtex]
[keywords parsing]
[keywords {text processing}]
[copyright {2005 for documentation, Andreas Kupries <[email protected]>}]
[moddesc   {bibtex}]
[titledesc {Parse bibtex files}]
[category  {Text processing}]
[require Tcl 8.4]
[require bibtex [opt 0.5]]
[description]
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
bibliography. Depending on the options used to invoke it it will
either return a token for the parser, or the parsed entries of the
input bibliography. Instead of performing an immediate parse returning
a predefined format the command can also enter an event-based parsing
style where all relevant entries in the input are reported through
callback commands, in the style of SAX.


[call [cmd ::bibtex::parse] [arg text]]

In this form the command will assume that the specified [arg text] is
a bibliography in BibTeX format, parse it, and then return a list
containing one element per record found in the bibliography. Note that
comments, string definitions, preambles, etc. will not show up in the
result.  Each element will be a list containing record type,
bibliography key and record data, in this order. The record data will
be a dictionary, its keys the keys of the record, with the associated
values.


[call [cmd ::bibtex::parse] \
	[opt "[option -command] [arg cmd]"] \
	[option -channel] [arg chan]]

In this form the command will reads the bibliography from the
specified Tcl channel [arg chan] and then returns the same data







<










<







24
25
26
27
28
29
30

31
32
33
34
35
36
37
38
39
40

41
42
43
44
45
46
47
bibliography. Depending on the options used to invoke it it will
either return a token for the parser, or the parsed entries of the
input bibliography. Instead of performing an immediate parse returning
a predefined format the command can also enter an event-based parsing
style where all relevant entries in the input are reported through
callback commands, in the style of SAX.


[call [cmd ::bibtex::parse] [arg text]]

In this form the command will assume that the specified [arg text] is
a bibliography in BibTeX format, parse it, and then return a list
containing one element per record found in the bibliography. Note that
comments, string definitions, preambles, etc. will not show up in the
result.  Each element will be a list containing record type,
bibliography key and record data, in this order. The record data will
be a dictionary, its keys the keys of the record, with the associated
values.


[call [cmd ::bibtex::parse] \
	[opt "[option -command] [arg cmd]"] \
	[option -channel] [arg chan]]

In this form the command will reads the bibliography from the
specified Tcl channel [arg chan] and then returns the same data
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77

[list_end]
[para]

[emph Note] that the parser will [emph not] close the channel after it
has exhausted it. This is still the responsibility of the user of the
parser.


[call [cmd ::bibtex::parse] \
	[opt "[option -recordcommand]   [arg recordcmd]"] \
	[opt "[option -preamblecommand] [arg preamblecmd]"] \
	[opt "[option -stringcommand]   [arg stringcmd]"] \
	[opt "[option -commentcommand]  [arg commentcmd]"] \
	[opt "[option -progresscommand] [arg progresscmd]"] \







<







65
66
67
68
69
70
71

72
73
74
75
76
77
78

[list_end]
[para]

[emph Note] that the parser will [emph not] close the channel after it
has exhausted it. This is still the responsibility of the user of the
parser.


[call [cmd ::bibtex::parse] \
	[opt "[option -recordcommand]   [arg recordcmd]"] \
	[opt "[option -preamblecommand] [arg preamblecmd]"] \
	[opt "[option -stringcommand]   [arg stringcmd]"] \
	[opt "[option -commentcommand]  [arg commentcmd]"] \
	[opt "[option -progresscommand] [arg progresscmd]"] \
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189

This callback is invoked whenever the parser detects a bibliography
record in the input. Its arguments are the record type, the
bibliography key for the record, and a dictionary containing the keys
and values describing the record. Any string macros known to the
parser have already been expanded.


[def "[cmd preamblecmd] [arg token] [arg preambletext]"]

This callback is invoked whenever the parser detects an @preamble
block in the input. The only additional argument is the text found in
the preamble block. By default such entries are ignored.


[def "[cmd stringcmd] [arg token] [arg stringdict]"]

This callback is invoked whenever the parser detects an @string-based
macro definition in the input. The argument is a dictionary with the
macro names as keys and their replacement strings as values. By
default such definitions are added to the parser state for use in
future bibliography records.


[def "[cmd commentcmd] [arg token] [arg commenttext]"]

This callback is invoked whenever the parser detects a comment in the
input. The only additional argument is the comment text. By default
such entries are ignored.


[def "[cmd progresscmd] [arg token] [arg percent]"]

This callback is invoked during processing to tell the user about the
progress which has been made. Its argument is the percentage of data
processed, as integer number between [const 0] and [const 100].

In the case of incremental processing the perecentage will always be
[const -1] as the total number of entries is not known beforehand.

[list_end]
[para]


[call [cmd ::bibtex::wait] [arg token]]

This command waits for the parser represented by the [arg token] to
complete and then returns. The returned result is the empty string.


[call [cmd ::bibtex::destroy] [arg token]]

This command cleans up all internal state associated with the parser
represented by the handle [arg token], effectively destroying it. This
command can be called from within the parser callbacks to terminate
processing.


[call [cmd ::bibtex::addStrings] [arg token] [arg stringdict]]

This command adds the macro definitions stored in the
dictionary [arg stringdict] to the parser represented
by the handle [arg token].

[para]

The dictionary keys are the macro names and the values their
replacement strings. This command has the correct signature for use as
a [option -stringcommand] callback in an invokation of the command
[cmd ::bibtex::parse].

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph bibtex] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords bibtex parsing {text processing} bibliography]
[manpage_end]







<





<









<





<













<




<







<
















<
|
<
<
|
<
<
<
<
<
<
<
<

104
105
106
107
108
109
110

111
112
113
114
115

116
117
118
119
120
121
122
123
124

125
126
127
128
129

130
131
132
133
134
135
136
137
138
139
140
141
142

143
144
145
146

147
148
149
150
151
152
153

154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169

170


171








172

This callback is invoked whenever the parser detects a bibliography
record in the input. Its arguments are the record type, the
bibliography key for the record, and a dictionary containing the keys
and values describing the record. Any string macros known to the
parser have already been expanded.


[def "[cmd preamblecmd] [arg token] [arg preambletext]"]

This callback is invoked whenever the parser detects an @preamble
block in the input. The only additional argument is the text found in
the preamble block. By default such entries are ignored.


[def "[cmd stringcmd] [arg token] [arg stringdict]"]

This callback is invoked whenever the parser detects an @string-based
macro definition in the input. The argument is a dictionary with the
macro names as keys and their replacement strings as values. By
default such definitions are added to the parser state for use in
future bibliography records.


[def "[cmd commentcmd] [arg token] [arg commenttext]"]

This callback is invoked whenever the parser detects a comment in the
input. The only additional argument is the comment text. By default
such entries are ignored.


[def "[cmd progresscmd] [arg token] [arg percent]"]

This callback is invoked during processing to tell the user about the
progress which has been made. Its argument is the percentage of data
processed, as integer number between [const 0] and [const 100].

In the case of incremental processing the perecentage will always be
[const -1] as the total number of entries is not known beforehand.

[list_end]
[para]


[call [cmd ::bibtex::wait] [arg token]]

This command waits for the parser represented by the [arg token] to
complete and then returns. The returned result is the empty string.


[call [cmd ::bibtex::destroy] [arg token]]

This command cleans up all internal state associated with the parser
represented by the handle [arg token], effectively destroying it. This
command can be called from within the parser callbacks to terminate
processing.


[call [cmd ::bibtex::addStrings] [arg token] [arg stringdict]]

This command adds the macro definitions stored in the
dictionary [arg stringdict] to the parser represented
by the handle [arg token].

[para]

The dictionary keys are the macro names and the values their
replacement strings. This command has the correct signature for use as
a [option -stringcommand] callback in an invokation of the command
[cmd ::bibtex::parse].

[list_end]


[vset CATEGORY bibtex]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/blowfish/blowfish.man.

1
2








3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin blowfish n 1.0.3]








[copyright {2003, Pat Thoyts <[email protected]>}]
[moddesc   {Blowfish Block Cipher}]
[titledesc {Implementation of the Blowfish block cipher}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.4]
[require blowfish [opt 1.0.4]]
[description]


>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin blowfish n 1.0.3]
[see_also 3des]
[see_also des]
[see_also rc4]
[keywords {block cipher}]
[keywords blowfish]
[keywords cryptography]
[keywords encryption]
[keywords security]
[copyright {2003, Pat Thoyts <[email protected]>}]
[moddesc   {Blowfish Block Cipher}]
[titledesc {Implementation of the Blowfish block cipher}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.4]
[require blowfish [opt 1.0.4]]
[description]
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
[call [cmd "::blowfish::Final"] [arg "Key"]]

This should be called to clean up resources associated with [arg Key].
Once this function has been called the key may not be used again.

[list_end]


[section "MODES OF OPERATION"]

[list_begin definitions]

[def "Electronic Code Book (ECB)"]
ECB is the basic mode of all block ciphers. Each block is encrypted
independently and so identical plain text will produce identical







<







105
106
107
108
109
110
111

112
113
114
115
116
117
118
[call [cmd "::blowfish::Final"] [arg "Key"]]

This should be called to clean up resources associated with [arg Key].
Once this function has been called the key may not be used again.

[list_end]


[section "MODES OF OPERATION"]

[list_begin definitions]

[def "Electronic Code Book (ECB)"]
ECB is the basic mode of all block ciphers. Each block is encrypted
independently and so identical plain text will produce identical
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170

[enum]
    Schneier, B. "Applied Cryptography, 2nd edition", 1996,
    ISBN 0-471-11709-9, pub. John Wiley & Sons.

[list_end]

[see_also des 3des rc4]

[section AUTHORS]
Frank Pilhofer, Pat Thoyts

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph blowfish] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords blowfish {block cipher} security encryption cryptography]
[manpage_end]







<
<



<
|
<
<
|
<
<
<
<
<
<
<
<

152
153
154
155
156
157
158


159
160
161

162


163








164

[enum]
    Schneier, B. "Applied Cryptography, 2nd edition", 1996,
    ISBN 0-471-11709-9, pub. John Wiley & Sons.

[list_end]



[section AUTHORS]
Frank Pilhofer, Pat Thoyts


[vset CATEGORY blowfish]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/cache/async.man.

1




2
3
4
5
6
7
8
9
10
11
12
13
14
[manpage_begin cache::async n 0.3]




[copyright {2008 Andreas Kupries <[email protected]>}]
[moddesc   {In-memory caches}]
[titledesc {Asynchronous in-memory cache}]
[require Tcl 8.4]
[require cache::async [opt 0.3]]
[keywords cache asynchronous synchronous callback]
[description]

This package provides objects which cache data in memory, and operate
asynchronously with regard to request and responses. The objects are
agnostic with regard to cache keys and values, and unknown methods are
delegated to the provider of cached data. These two properties make it
easy to use caches as a facade for any data provider.

>
>
>
>





<







1
2
3
4
5
6
7
8
9
10

11
12
13
14
15
16
17
[manpage_begin cache::async n 0.3]
[keywords asynchronous]
[keywords cache]
[keywords callback]
[keywords synchronous]
[copyright {2008 Andreas Kupries <[email protected]>}]
[moddesc   {In-memory caches}]
[titledesc {Asynchronous in-memory cache}]
[require Tcl 8.4]
[require cache::async [opt 0.3]]

[description]

This package provides objects which cache data in memory, and operate
asynchronously with regard to request and responses. The objects are
agnostic with regard to cache keys and values, and unknown methods are
delegated to the provider of cached data. These two properties make it
easy to use caches as a facade for any data provider.
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
Another important part of the cache's behaviour, as it is asynchronous
it is possible that multiple [method get] requests are issued for the
same [arg key] before it can respond. In that case the cache will
issue only one data request to the provider, for the first of these,
and suspend the others, and then notify all of them when the data
becomes available.


[call [arg objectName] [method set] [arg key] [arg value]]
[call [arg objectName] [method unset] [arg key]]

These two methods are provided to allow users of the cache to make
keys known to the cache, as either having a [arg value], or as
undefined.








<







93
94
95
96
97
98
99

100
101
102
103
104
105
106
Another important part of the cache's behaviour, as it is asynchronous
it is possible that multiple [method get] requests are issued for the
same [arg key] before it can respond. In that case the cache will
issue only one data request to the provider, for the first of these,
and suspend the others, and then notify all of them when the data
becomes available.


[call [arg objectName] [method set] [arg key] [arg value]]
[call [arg objectName] [method unset] [arg key]]

These two methods are provided to allow users of the cache to make
keys known to the cache, as either having a [arg value], or as
undefined.

118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152

[para]

This also means that these methods invoke the [arg donecmd] of all
[method get]-requests waiting for information about the modified
[arg key].


[call [arg objectName] [method exists] [arg key]]

This method queries the cache for knowledge about the [arg key] and
returns a boolean value. The result is [const true] if the key is
known, and [const false] otherwise.


[call [arg objectName] [method clear] [opt [arg key]]]

This method resets the state of either the specified [arg key] or of
all keys known to the cache, making it unkown. This forces future
[method get]-requests to reload the information from the provider.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph cache] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]







<





<









<
|
<
<
|
<
<
<
<
<
<

120
121
122
123
124
125
126

127
128
129
130
131

132
133
134
135
136
137
138
139
140

141


142






143

[para]

This also means that these methods invoke the [arg donecmd] of all
[method get]-requests waiting for information about the modified
[arg key].


[call [arg objectName] [method exists] [arg key]]

This method queries the cache for knowledge about the [arg key] and
returns a boolean value. The result is [const true] if the key is
known, and [const false] otherwise.


[call [arg objectName] [method clear] [opt [arg key]]]

This method resets the state of either the specified [arg key] or of
all keys known to the cache, making it unkown. This forces future
[method get]-requests to reload the information from the provider.

[list_end]


[vset CATEGORY cache]


[include ../doctools2base/include/feedback.inc]






[manpage_end]

Changes to modules/clock/iso8601.man.

38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
[option -gmt],
[option -locale], and
[option -timezone]
of the builtin command [cmd {clock scan}].

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph clock::iso8601] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<

38
39
40
41
42
43
44

45


46







47
[option -gmt],
[option -locale], and
[option -timezone]
of the builtin command [cmd {clock scan}].

[list_end]


[vset CATEGORY clock::iso8601]


[include ../doctools2base/include/feedback.inc]







[manpage_end]

Changes to modules/clock/rfc2822.man.

18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

This command parses an RFC2822 date string and returns
the given date in seconds since epoch. An error is thrown
if the command is unable to parse the date.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph clock::rfc2822] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]







<
|
<
<
|
<
<
<
<
<
<

18
19
20
21
22
23
24

25


26






27

This command parses an RFC2822 date string and returns
the given date in seconds since epoch. An error is thrown
if the command is unable to parse the date.

[list_end]


[vset CATEGORY clock::rfc2822]


[include ../doctools2base/include/feedback.inc]






[manpage_end]

Changes to modules/cmdline/cmdline.man.

1





2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
[manpage_begin cmdline n 1.3.3]





[moddesc   {Command line and option processing}]
[titledesc {Procedures to process command lines and options.}]
[category  {Programming tools}]
[keywords  {cmdline processing} {argument processing} argv argv0]
[keywords  {command line processing}]
[require Tcl 8.2]
[require cmdline [opt 1.3.3]]
[description]

This package provides commands to parse command lines and options.


[section {::argv handling}]

One of the most common variables this package will be used with is
[var ::argv], which holds the command line of the current
application. This variable has a companion [var ::argc] which is
initialized to the number of elements in [var ::argv] at the beginning
of the application.

[para]

The commands in this package will [emph not] modify the [var ::argc]
companion when called with [var ::argv]. Keeping the value consistent,
if such is desired or required, is the responsibility of the caller.


[section API]

[list_begin definitions]

[call [cmd ::cmdline::getopt] [arg argvVar] [arg optstring] [arg optVar] [arg valVar]]


>
>
>
>
>



<
<





<














<







1
2
3
4
5
6
7
8
9


10
11
12
13
14

15
16
17
18
19
20
21
22
23
24
25
26
27
28

29
30
31
32
33
34
35
[manpage_begin cmdline n 1.3.3]
[keywords {argument processing}]
[keywords argv]
[keywords argv0]
[keywords {cmdline processing}]
[keywords {command line processing}]
[moddesc   {Command line and option processing}]
[titledesc {Procedures to process command lines and options.}]
[category  {Programming tools}]


[require Tcl 8.2]
[require cmdline [opt 1.3.3]]
[description]

This package provides commands to parse command lines and options.


[section {::argv handling}]

One of the most common variables this package will be used with is
[var ::argv], which holds the command line of the current
application. This variable has a companion [var ::argc] which is
initialized to the number of elements in [var ::argv] at the beginning
of the application.

[para]

The commands in this package will [emph not] modify the [var ::argc]
companion when called with [var ::argv]. Keeping the value consistent,
if such is desired or required, is the responsibility of the caller.


[section API]

[list_begin definitions]

[call [cmd ::cmdline::getopt] [arg argvVar] [arg optstring] [arg optVar] [arg valVar]]

59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
[para]

[arg valVar] refers to the variable to store either the value for the
specified option into upon success or an error message in the case of
failure. The stored value comes from the command line for .arg
options, otherwise the value is 1.


[call [cmd ::cmdline::getKnownOpt] [arg argvVar] [arg optstring] [arg optVar] [arg valVar]]

Like [cmd ::cmdline::getopt], but ignores any unknown options in the
input.


[call [cmd ::cmdline::getoptions] [arg arglistVar] [arg optlist] [opt [arg usage]]]

Processes the set of command line options found in the list variable
named by [arg arglistVar] and fills in defaults for those not
specified.  This also generates an error message that lists the
allowed flags if an incorrect flag is specified. The optional







<




<







60
61
62
63
64
65
66

67
68
69
70

71
72
73
74
75
76
77
[para]

[arg valVar] refers to the variable to store either the value for the
specified option into upon success or an error message in the case of
failure. The stored value comes from the command line for .arg
options, otherwise the value is 1.


[call [cmd ::cmdline::getKnownOpt] [arg argvVar] [arg optstring] [arg optVar] [arg valVar]]

Like [cmd ::cmdline::getopt], but ignores any unknown options in the
input.


[call [cmd ::cmdline::getoptions] [arg arglistVar] [arg optlist] [opt [arg usage]]]

Processes the set of command line options found in the list variable
named by [arg arglistVar] and fills in defaults for those not
specified.  This also generates an error message that lists the
allowed flags if an incorrect flag is specified. The optional
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145

The options [option -?], [option -help], and [option --] are
implicitly understood. The first two abort option processing and force
the generation of the usage message, whereas the the last aborts
option processing without an error, leaving all arguments coming after
for regular processing, even if starting with a dash.


[para]

The result of the command is a dictionary mapping all options to their
values, be they user-specified or defaults.


[call [cmd ::cmdline::getKnownOptions] [arg arglistVar] [arg optlist] [opt [arg usage]]]

Like [cmd ::cmdline::getoptions], but ignores any unknown options in the
input.


[call [cmd ::cmdline::usage] [arg optlist] [opt [arg usage]]]

Generates and returns an error message that lists the allowed
flags. [arg optlist] is defined as for
[cmd ::cmdline::getoptions]. The optional [arg usage]-argument
contains a string to include in front of the generated message. If not
present it defaults to "options:".


[call [cmd ::cmdline::getfiles] [arg patterns] [arg quiet]]

Given a list of file [arg patterns] this command computes the set of
valid files.  On windows, file globbing is performed on each argument.
On Unix, only file existence is tested.  If a file argument produces
no valid files, a warning is optionally generated (set [arg quiet] to
true).

[para]

This code also uses the full path for each file.  If not given it
prepends the current working directory to the filename. This ensures
that these files will never conflict with files in a wrapped zip
file. The last sentence refers to the pro-tools.


[call [cmd ::cmdline::getArgv0]]

This command returns the "sanitized" version of [arg argv0].  It will
strip off the leading path and removes the extension ".bin". The
latter is used by the pro-apps because they must be wrapped by a shell
script.







<





<




<








<















<







94
95
96
97
98
99
100

101
102
103
104
105

106
107
108
109

110
111
112
113
114
115
116
117

118
119
120
121
122
123
124
125
126
127
128
129
130
131
132

133
134
135
136
137
138
139

The options [option -?], [option -help], and [option --] are
implicitly understood. The first two abort option processing and force
the generation of the usage message, whereas the the last aborts
option processing without an error, leaving all arguments coming after
for regular processing, even if starting with a dash.


[para]

The result of the command is a dictionary mapping all options to their
values, be they user-specified or defaults.


[call [cmd ::cmdline::getKnownOptions] [arg arglistVar] [arg optlist] [opt [arg usage]]]

Like [cmd ::cmdline::getoptions], but ignores any unknown options in the
input.


[call [cmd ::cmdline::usage] [arg optlist] [opt [arg usage]]]

Generates and returns an error message that lists the allowed
flags. [arg optlist] is defined as for
[cmd ::cmdline::getoptions]. The optional [arg usage]-argument
contains a string to include in front of the generated message. If not
present it defaults to "options:".


[call [cmd ::cmdline::getfiles] [arg patterns] [arg quiet]]

Given a list of file [arg patterns] this command computes the set of
valid files.  On windows, file globbing is performed on each argument.
On Unix, only file existence is tested.  If a file argument produces
no valid files, a warning is optionally generated (set [arg quiet] to
true).

[para]

This code also uses the full path for each file.  If not given it
prepends the current working directory to the filename. This ensures
that these files will never conflict with files in a wrapped zip
file. The last sentence refers to the pro-tools.


[call [cmd ::cmdline::getArgv0]]

This command returns the "sanitized" version of [arg argv0].  It will
strip off the leading path and removes the extension ".bin". The
latter is used by the pro-apps because they must be wrapped by a shell
script.
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194

This example, taken (and slightly modified) from the package
[package fileutil], shows how to use cmdline.  First, a list of
options is created, then the 'args' list is passed to cmdline for
processing.  Subsequently, different options are checked to see if
they have been passed to the script, and what their value is.


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph cmdline] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]








|
<
|
<
<
<
<
<
<
<
<
<

<
168
169
170
171
172
173
174
175

176









177


This example, taken (and slightly modified) from the package
[package fileutil], shows how to use cmdline.  First, a list of
options is created, then the 'args' list is passed to cmdline for
processing.  Subsequently, different options are checked to see if
they have been passed to the script, and what their value is.

[vset CATEGORY cmdline]

[include ../doctools2base/include/feedback.inc]









[manpage_end]

Changes to modules/comm/comm.man.

1













2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[manpage_begin comm n 4.6.2]













[copyright {1995-1998 The Open Group. All Rights Reserved.}]
[copyright {2003-2004 ActiveState Corporation.}]
[copyright {2006-2009 Andreas Kupries <[email protected]>}]
[moddesc   {Remote communication}]
[titledesc {A remote communication facility for Tcl (8.3 and later)}]
[category  {Programming tools}]
[see_also  send(n)]
[keywords  socket {remote execution} {remote communication} send]
[keywords  communication ipc message rpc comm ssl tls secure]
[require Tcl 8.3]
[require comm [opt 4.6.2]]
[description]

[para]

The [package comm] command provides an inter-interpreter remote

>
>
>
>
>
>
>
>
>
>
>
>
>






<
<
<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20



21
22
23
24
25
26
27
[manpage_begin comm n 4.6.2]
[see_also send(n)]
[keywords comm]
[keywords communication]
[keywords ipc]
[keywords message]
[keywords {remote communication}]
[keywords {remote execution}]
[keywords rpc]
[keywords secure]
[keywords send]
[keywords socket]
[keywords ssl]
[keywords tls]
[copyright {1995-1998 The Open Group. All Rights Reserved.}]
[copyright {2003-2004 ActiveState Corporation.}]
[copyright {2006-2009 Andreas Kupries <[email protected]>}]
[moddesc   {Remote communication}]
[titledesc {A remote communication facility for Tcl (8.3 and later)}]
[category  {Programming tools}]



[require Tcl 8.3]
[require comm [opt 4.6.2]]
[description]

[para]

The [package comm] command provides an inter-interpreter remote
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227

An automatically assigned channel [emph id] will change when this
happens.

Recycling the socket is done by invoking [cmd {::comm::comm abort}],
which causes all active sends to terminate.


[subsection {Id/port Assignments}]
[para]

[package comm] uses a TCP port for endpoint [emph id].  The

[method interps] (or [method ids]) method merely lists all the TCP ports
to which the channel is connected.  By default, each channel's







<







223
224
225
226
227
228
229

230
231
232
233
234
235
236

An automatically assigned channel [emph id] will change when this
happens.

Recycling the socket is done by invoking [cmd {::comm::comm abort}],
which causes all active sends to terminate.


[subsection {Id/port Assignments}]
[para]

[package comm] uses a TCP port for endpoint [emph id].  The

[method interps] (or [method ids]) method merely lists all the TCP ports
to which the channel is connected.  By default, each channel's
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254

As a special case, if the channel is configured with

[option {-listen 0}], then it will not create a listening socket and
will use an id of [const 0] for itself.  Such a channel is only good
for outgoing connections (although once a connection is established,
it can carry send traffic in both directions).


As another special case, if the channel is configured with

[option {-silent 0}], then the listening side will ignore connection
attempts where the protocol negotiation phase failed, instead of
throwing an error.








<







249
250
251
252
253
254
255

256
257
258
259
260
261
262

As a special case, if the channel is configured with

[option {-listen 0}], then it will not create a listening socket and
will use an id of [const 0] for itself.  Such a channel is only good
for outgoing connections (although once a connection is established,
it can carry send traffic in both directions).


As another special case, if the channel is configured with

[option {-silent 0}], then the listening side will ignore connection
attempts where the protocol negotiation phase failed, instead of
throwing an error.

291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
environment for received scripts the event scripts associated with the
various hooks will by default still be executed in the current
interpreter. To change this use the option [option -events] to declare
a list of the events whose scripts should be executed in the declared
interpreter as well. The contents of this option are ignored if the
communication channel is configured to execute received scripts in the
current interpreter.


[subsection {Remote Interpreters}]
[para]

By default, each channel is restricted to accepting connections from
the local system.  This can be overridden by using the








<







299
300
301
302
303
304
305

306
307
308
309
310
311
312
environment for received scripts the event scripts associated with the
various hooks will by default still be executed in the current
interpreter. To change this use the option [option -events] to declare
a list of the events whose scripts should be executed in the declared
interpreter as well. The contents of this option are ignored if the
communication channel is configured to execute received scripts in the
current interpreter.


[subsection {Remote Interpreters}]
[para]

By default, each channel is restricted to accepting connections from
the local system.  This can be overridden by using the

409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
[arg id].  An error return (via [cmd error]) will abort the connection
attempt with the error.  Example:

[para]
[example {
    % ::comm::comm hook connecting {
        if {[string match {*[02468]} $id]} {
            error "Can't connect to even ids" 
        }
    }
    % ::comm::comm send 10000 puts ok
    Connect to remote failed: Can't connect to even ids
    %
}]








|







416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
[arg id].  An error return (via [cmd error]) will abort the connection
attempt with the error.  Example:

[para]
[example {
    % ::comm::comm hook connecting {
        if {[string match {*[02468]} $id]} {
            error "Can't connect to even ids"
        }
    }
    % ::comm::comm send 10000 puts ok
    Connect to remote failed: Can't connect to even ids
    %
}]

451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
[example {
    ::comm::comm hook incoming {
        if {[string match 127.0.0.1 $addr]} {
            error "I don't talk to myself"
        }
    }
}]


[def [const eval]]

Variables:
[var chan], [var id], [var cmd], and [var buffer].
[para]








<







458
459
460
461
462
463
464

465
466
467
468
469
470
471
[example {
    ::comm::comm hook incoming {
        if {[string match 127.0.0.1 $addr]} {
            error "I don't talk to myself"
        }
    }
}]


[def [const eval]]

Variables:
[var chan], [var id], [var cmd], and [var buffer].
[para]

560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
    pid is a no-no
    % ::comm::comm send [::comm::comm self] a
    A-OK
}]

[list_end]


[def [const reply]]

Variables:
[var chan], [var id], [var buffer], [var ret], and [var return()].
[para]

This hook is invoked after collecting a complete reply script from a







<







566
567
568
569
570
571
572

573
574
575
576
577
578
579
    pid is a no-no
    % ::comm::comm send [::comm::comm self] a
    A-OK
}]

[list_end]


[def [const reply]]

Variables:
[var chan], [var id], [var buffer], [var ret], and [var return()].
[para]

This hook is invoked after collecting a complete reply script from a
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
[emph return(-errorcode)]
[list_end]
[para]

Any of these may be the empty string.  Modifying these four variables
can change the return value, whereas modifying [arg buffer] has no
effect.


[def [const callback]]

Variables:
[var chan], [var id], [var buffer], [var ret], and [var return()].
[para]








<







603
604
605
606
607
608
609

610
611
612
613
614
615
616
[emph return(-errorcode)]
[list_end]
[para]

Any of these may be the empty string.  Modifying these four variables
can change the return value, whereas modifying [arg buffer] has no
effect.


[def [const callback]]

Variables:
[var chan], [var id], [var buffer], [var ret], and [var return()].
[para]

690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
	tls::init  -cafile /path/to/ca/cert -keyfile ...

	# Create secured comm channel
	::comm::comm new SECURE -socketcmd tls::socket -listen 1
	...
}]



[para]

The sections [sectref {Execution Environment}] and [sectref Callbacks]
are also relevant to the security of the system, providing means to
restrict the execution to a specific environment, perform additional
authentication, and the like.


[subsection {Blocking Semantics}]

[para]

There is one outstanding difference between [package comm] and








<
<






<







694
695
696
697
698
699
700


701
702
703
704
705
706

707
708
709
710
711
712
713
	tls::init  -cafile /path/to/ca/cert -keyfile ...

	# Create secured comm channel
	::comm::comm new SECURE -socketcmd tls::socket -listen 1
	...
}]



[para]

The sections [sectref {Execution Environment}] and [sectref Callbacks]
are also relevant to the security of the system, providing means to
restrict the execution to a specific environment, perform additional
authentication, and the like.


[subsection {Blocking Semantics}]

[para]

There is one outstanding difference between [package comm] and

1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
[para]

Added a new hook for reply messages.  Reworked method invocation to
avoid the use of comm:* procedures; this also cut the invocation time
down by 40%.  Documented [cmd {comm config}] (as this manual page
still listed the defunct [cmd {comm init}]!)


[def 3.3]

Some minor bugs were corrected and the documentation was cleaned up.
Added some examples for hooks.  The return semantics of the [cmd eval]
hook were changed.

[def 3.2]







<







1045
1046
1047
1048
1049
1050
1051

1052
1053
1054
1055
1056
1057
1058
[para]

Added a new hook for reply messages.  Reworked method invocation to
avoid the use of comm:* procedures; this also cut the invocation time
down by 40%.  Documented [cmd {comm config}] (as this manual page
still listed the defunct [cmd {comm init}]!)


[def 3.3]

Some minor bugs were corrected and the documentation was cleaned up.
Added some examples for hooks.  The return semantics of the [cmd eval]
hook were changed.

[def 3.2]
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135

John LoVerso, [email protected]

[para]

[emph http://www.opengroup.org/~loverso/tcl-tk/#comm]


[section  License]

Please see the file [emph comm.LICENSE] that accompanied this source,
or
[uri http://www.opengroup.org/www/dist_client/caubweb/COPYRIGHT.free.html].

[para]

This license for [package comm], new as of version 3.2, allows it to be
used for free, without any licensing fee or royalty.


[section Bugs]
[list_begin itemized]
[item]

If there is a failure initializing a channel created with
[cmd {::comm::comm new}], then the channel should be destroyed.







<










<







1110
1111
1112
1113
1114
1115
1116

1117
1118
1119
1120
1121
1122
1123
1124
1125
1126

1127
1128
1129
1130
1131
1132
1133

John LoVerso, [email protected]

[para]

[emph http://www.opengroup.org/~loverso/tcl-tk/#comm]


[section  License]

Please see the file [emph comm.LICENSE] that accompanied this source,
or
[uri http://www.opengroup.org/www/dist_client/caubweb/COPYRIGHT.free.html].

[para]

This license for [package comm], new as of version 3.2, allows it to be
used for free, without any licensing fee or royalty.


[section Bugs]
[list_begin itemized]
[item]

If there is a failure initializing a channel created with
[cmd {::comm::comm new}], then the channel should be destroyed.
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
canonical hostnames.  This requires fixes to Tcl to resolve hostnames!

[list_end]

[para]
This man page is bigger than the source file.


[section {On Using Old Versions Of Tcl}]

[para]
Tcl7.5 under Windows contains a bug that causes the interpreter to
hang when EOF is reached on non-blocking sockets.  This can be
triggered with a command such as this:








<







1174
1175
1176
1177
1178
1179
1180

1181
1182
1183
1184
1185
1186
1187
canonical hostnames.  This requires fixes to Tcl to resolve hostnames!

[list_end]

[para]
This man page is bigger than the source file.


[section {On Using Old Versions Of Tcl}]

[para]
Tcl7.5 under Windows contains a bug that causes the interpreter to
hang when EOF is reached on non-blocking sockets.  This can be
triggered with a command such as this:

1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
Tcl7.6 on the Mac contains several bugs.  It is recommended you use
at least Tcl7.6p2.

[para]
Tcl8.0 on UNIX contains a socket bug that can crash Tcl.  It is recommended
you use Tcl8.0p1 (or Tcl7.6p2).


[section {Related Work}]
[para]
Tcl-DP provides an RPC-based remote execution interface, but is a
compiled Tcl extension.  See
[uri http://www.cs.cornell.edu/Info/Projects/zeno/Projects/Tcl-DP.html].

[para]
Michael Doyle <[email protected]> has code that implements the Tcl-DP
RPC interface using standard Tcl sockets, much like [package comm].

[para]
Andreas Kupries <[email protected]> uses
[package comm] and has built a simple nameserver as part of his Pool
library.  See [uri http://www.purl.org/net/akupries/soft/pool/index.htm].


[vset CATEGORY comm]
[include ../doctools2base/include/feedback.inc]
[manpage_end]







<














<




1198
1199
1200
1201
1202
1203
1204

1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218

1219
1220
1221
1222
Tcl7.6 on the Mac contains several bugs.  It is recommended you use
at least Tcl7.6p2.

[para]
Tcl8.0 on UNIX contains a socket bug that can crash Tcl.  It is recommended
you use Tcl8.0p1 (or Tcl7.6p2).


[section {Related Work}]
[para]
Tcl-DP provides an RPC-based remote execution interface, but is a
compiled Tcl extension.  See
[uri http://www.cs.cornell.edu/Info/Projects/zeno/Projects/Tcl-DP.html].

[para]
Michael Doyle <[email protected]> has code that implements the Tcl-DP
RPC interface using standard Tcl sockets, much like [package comm].

[para]
Andreas Kupries <[email protected]> uses
[package comm] and has built a simple nameserver as part of his Pool
library.  See [uri http://www.purl.org/net/akupries/soft/pool/index.htm].


[vset CATEGORY comm]
[include ../doctools2base/include/feedback.inc]
[manpage_end]

Changes to modules/comm/comm_wire.man.

1









2
3
4
5
6
7
8
9
10
11
12
13
14
15
[manpage_begin comm_wire n 3]









[copyright {2005 Docs. Andreas Kupries <[email protected]>}]
[moddesc   {Remote communication}]
[titledesc {The comm wire protocol}]
[category  {Programming tools}]
[keywords  socket {remote execution} {remote communication}]
[keywords  communication ipc message rpc comm]
[see_also  comm]
[require comm]
[description]

[para]

The [package comm] command provides an inter-interpreter remote
execution facility much like Tk's [cmd send(n)], except that it uses

>
>
>
>
>
>
>
>
>




<
<
<







1
2
3
4
5
6
7
8
9
10
11
12
13
14



15
16
17
18
19
20
21
[manpage_begin comm_wire n 3]
[see_also comm]
[keywords comm]
[keywords communication]
[keywords ipc]
[keywords message]
[keywords {remote communication}]
[keywords {remote execution}]
[keywords rpc]
[keywords socket]
[copyright {2005 Docs. Andreas Kupries <[email protected]>}]
[moddesc   {Remote communication}]
[titledesc {The comm wire protocol}]
[category  {Programming tools}]



[require comm]
[description]

[para]

The [package comm] command provides an inter-interpreter remote
execution facility much like Tk's [cmd send(n)], except that it uses
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
    (*) And IMHO it should be done 90% of the time, just to get proper
    security. Note that just using a safe interp is not quite enough, as
    it still allows arbitrary scripts. The interp has to contains aliases
    for the wanted commands, and only them for us to get a large security
    wall.
}]


[section {Wire Protocol Version 3}]
[subsection {Basic Layer}]

The basic encoding for [emph all] data is UTF-8. Because of this
binary data, including the NULL character, can be sent over the wire
as is, without the need for armoring it.

[subsection {Basic Message Layer}]

On top of the [sectref {Basic Layer}] we have a

[term {message oriented}] exchange of data. 

The totality of all characters written to the channel is a Tcl list,
with each element a separate [term message], each itself a list. The
messages in the overall list are separated by EOL. Note that EOL
characters can occur within the list as well. They can be
distinguished from the message-separating EOL by the fact that the
data from the beginning up to their location is not a valid Tcl list.

[para]

EOL is signaled through the linefeed character, i.e [const LF], or,
hex [const 0x0a]. This is following the unix convention for
line-endings.

[para]

As a list each message is composed of [term words]. Their meaning
depends on when the message was sent in the overall exchange. This is
described in the upcoming sections.


[subsection {Negotiation Messages - Initial Handshake} ih]

The command protocol is defined like this:

[list_begin itemized]
[item]







<











|



















<







73
74
75
76
77
78
79

80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110

111
112
113
114
115
116
117
    (*) And IMHO it should be done 90% of the time, just to get proper
    security. Note that just using a safe interp is not quite enough, as
    it still allows arbitrary scripts. The interp has to contains aliases
    for the wanted commands, and only them for us to get a large security
    wall.
}]


[section {Wire Protocol Version 3}]
[subsection {Basic Layer}]

The basic encoding for [emph all] data is UTF-8. Because of this
binary data, including the NULL character, can be sent over the wire
as is, without the need for armoring it.

[subsection {Basic Message Layer}]

On top of the [sectref {Basic Layer}] we have a

[term {message oriented}] exchange of data.

The totality of all characters written to the channel is a Tcl list,
with each element a separate [term message], each itself a list. The
messages in the overall list are separated by EOL. Note that EOL
characters can occur within the list as well. They can be
distinguished from the message-separating EOL by the fact that the
data from the beginning up to their location is not a valid Tcl list.

[para]

EOL is signaled through the linefeed character, i.e [const LF], or,
hex [const 0x0a]. This is following the unix convention for
line-endings.

[para]

As a list each message is composed of [term words]. Their meaning
depends on when the message was sent in the overall exchange. This is
described in the upcoming sections.


[subsection {Negotiation Messages - Initial Handshake} ih]

The command protocol is defined like this:

[list_begin itemized]
[item]
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173

                          fconfigure -translation lf

                However the handshake response containing the accepted
                version is sent before commNewComm is called (in
                commIncoming).


        NOTE 2:

        This inconsistency has been fixed locally already, but
        not been committed yet.
}]
[list_end]

[subsection {Script/Command Messages}]

All messages coming after the [sectref ih {initial handshake}]
consist of three words. These are an instruction, a transaction id,
and the payload. The valid instructions are shown below. The
transaction ids are used by the client to match any incoming replies
to the command messages it sent. This means that a server has to copy
the transaction id from a command message to the reply it sends for
that message.


[list_begin definitions]

[def [const send]]
[def [const async]]
[def [const command]]








<
















<







146
147
148
149
150
151
152

153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168

169
170
171
172
173
174
175

                          fconfigure -translation lf

                However the handshake response containing the accepted
                version is sent before commNewComm is called (in
                commIncoming).


        NOTE 2:

        This inconsistency has been fixed locally already, but
        not been committed yet.
}]
[list_end]

[subsection {Script/Command Messages}]

All messages coming after the [sectref ih {initial handshake}]
consist of three words. These are an instruction, a transaction id,
and the payload. The valid instructions are shown below. The
transaction ids are used by the client to match any incoming replies
to the command messages it sent. This means that a server has to copy
the transaction id from a command message to the reply it sends for
that message.


[list_begin definitions]

[def [const send]]
[def [const async]]
[def [const command]]

209
210
211
212
213
214
215
216
217
218
219
220
221
222
223

[para]
[example {
    send [list array get $the_variable]
}]
[para]


These three instructions all invoke the script on the server
side. Their difference is in the treatment of result values, and thus
determines if a reply is expected.

[list_begin definitions]
[def [const send]]








<







211
212
213
214
215
216
217

218
219
220
221
222
223
224

[para]
[example {
    send [list array get $the_variable]
}]
[para]


These three instructions all invoke the script on the server
side. Their difference is in the treatment of result values, and thus
determines if a reply is expected.

[list_begin definitions]
[def [const send]]

250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
[example {
    {reply 1 {return -code 0 {}}}
    {reply 1 {return -code 0 {osVersion 2.4.21-99-default byteOrder littleEndian machine i686 platform unix os Linux user andreask wordSize 4}}}
}]

[list_end]


[comment {
	 Socket Miscellanea
	 ------------------

	 It is possible to have two sockets between a client and a
	 server. This happens if both sides connected to each other at
	 the same time.


	 Current protocol versions
	 -------------------------

	 V2


	 V3      This is preferred version and uses UTF 8 encoding.

	         This is actually the only version which will work IIU
		 the code right. Because the server part of comm will
		 send the version reply if and only if version 3 was
		 negotiated.

		 IOW if v2 is used the client will not see a version
	         reply during the negotiation handshake.
}]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph comm] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[manpage_end]







<








<




<












<
|
<
<
|
<
<
<
<
<
<
<

251
252
253
254
255
256
257

258
259
260
261
262
263
264
265

266
267
268
269

270
271
272
273
274
275
276
277
278
279
280
281

282


283







284
[example {
    {reply 1 {return -code 0 {}}}
    {reply 1 {return -code 0 {osVersion 2.4.21-99-default byteOrder littleEndian machine i686 platform unix os Linux user andreask wordSize 4}}}
}]

[list_end]


[comment {
	 Socket Miscellanea
	 ------------------

	 It is possible to have two sockets between a client and a
	 server. This happens if both sides connected to each other at
	 the same time.


	 Current protocol versions
	 -------------------------

	 V2


	 V3      This is preferred version and uses UTF 8 encoding.

	         This is actually the only version which will work IIU
		 the code right. Because the server part of comm will
		 send the version reply if and only if version 3 was
		 negotiated.

		 IOW if v2 is used the client will not see a version
	         reply during the negotiation handshake.
}]


[vset CATEGORY comm]


[include ../doctools2base/include/feedback.inc]







[manpage_end]

Changes to modules/control/control.man.

1















2
3
4
5
6
7
8
[manpage_begin control n 0.1.3]















[moddesc   {Tcl Control Flow Commands}]
[titledesc {Procedures for control flow structures.}]
[category  {Programming tools}]
[require Tcl 8.2]
[require control [opt 0.1.3]]
[description]
[para]

>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[manpage_begin control n 0.1.3]
[see_also break]
[see_also continue]
[see_also expr]
[see_also if]
[see_also join]
[see_also namespace]
[see_also return]
[see_also string]
[see_also while]
[keywords assert]
[keywords control]
[keywords do]
[keywords flow]
[keywords no-op]
[keywords structure]
[moddesc   {Tcl Control Flow Commands}]
[titledesc {Procedures for control flow structures.}]
[category  {Programming tools}]
[require Tcl 8.2]
[require control [opt 0.1.3]]
[description]
[para]
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
% proc b {} {control::do {return -code error b} while 1}
% catch a
1
% catch b
0
}]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph control] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also expr if join namespace return string while break continue]
[keywords control flow structure no-op assert do]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<
<

156
157
158
159
160
161
162

163


164









165
% proc b {} {control::do {return -code error b} while 1}
% catch a
1
% catch b
0
}]


[vset CATEGORY control]


[include ../doctools2base/include/feedback.inc]









[manpage_end]

Changes to modules/coroutine/coro_auto.man.

1
2












3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin coroutine::auto n 1]












[copyright {2010-2011 Andreas Kupries <[email protected]>}]
[moddesc   {Coroutine utilities}]
[category  Coroutine]
[titledesc {Automatic event and IO coroutine awareness}]
[require Tcl 8.6]
[require coroutine::auto 1.1.1]
[require coroutine 1.1]
[description]
[keywords coroutine global exit after vwait update gets read]
[keywords channel threads {green threads} events]

The [package coroutine::auto] package provides no commands or other
directly visible functionality.

Built on top of the package [package coroutine], it intercepts various
builtin commands of the Tcl core to make any code using them
coroutine-oblivious, i.e. able to run inside and outside of a
coroutine without changes.

[para] The commands so affected by this package are
[list_begin definitions]
[def [cmd after]]
[def [cmd exit]]
[def [cmd gets]]
[def [cmd global]]
[def [cmd read]]
[def [cmd update]]
[def [cmd vwait]]
[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph coroutine] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]


>
>
>
>
>
>
>
>
>
>
>
>








<
<




















<
|
<
<
|
<
<
<
<
<
<

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22


23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

43


44






45
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin coroutine::auto n 1]
[keywords after]
[keywords channel]
[keywords coroutine]
[keywords events]
[keywords exit]
[keywords gets]
[keywords global]
[keywords {green threads}]
[keywords read]
[keywords threads]
[keywords update]
[keywords vwait]
[copyright {2010-2011 Andreas Kupries <[email protected]>}]
[moddesc   {Coroutine utilities}]
[category  Coroutine]
[titledesc {Automatic event and IO coroutine awareness}]
[require Tcl 8.6]
[require coroutine::auto 1.1.1]
[require coroutine 1.1]
[description]



The [package coroutine::auto] package provides no commands or other
directly visible functionality.

Built on top of the package [package coroutine], it intercepts various
builtin commands of the Tcl core to make any code using them
coroutine-oblivious, i.e. able to run inside and outside of a
coroutine without changes.

[para] The commands so affected by this package are
[list_begin definitions]
[def [cmd after]]
[def [cmd exit]]
[def [cmd gets]]
[def [cmd global]]
[def [cmd read]]
[def [cmd update]]
[def [cmd vwait]]
[list_end]


[vset CATEGORY coroutine]


[include ../doctools2base/include/feedback.inc]






[manpage_end]

Changes to modules/coroutine/tcllib_coroutine.man.

1
2












3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin coroutine n 1]












[copyright {2010-2011 Andreas Kupries <[email protected]>}]
[moddesc   {Coroutine utilities}]
[category  Coroutine]
[titledesc {Coroutine based event and IO handling}]
[require Tcl 8.6]
[require coroutine 1.1]
[description]
[keywords coroutine channel events threads {green threads}]
[keywords global exit after vwait update gets read]

The [package coroutine] package provides coroutine-aware
implementations of various event- and channel related commands. It can
be in multiple modes:

[list_begin enumerated]



>
>
>
>
>
>
>
>
>
>
>
>







<
<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21


22
23
24
25
26
27
28
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin coroutine n 1]
[keywords after]
[keywords channel]
[keywords coroutine]
[keywords events]
[keywords exit]
[keywords gets]
[keywords global]
[keywords {green threads}]
[keywords read]
[keywords threads]
[keywords update]
[keywords vwait]
[copyright {2010-2011 Andreas Kupries <[email protected]>}]
[moddesc   {Coroutine utilities}]
[category  Coroutine]
[titledesc {Coroutine based event and IO handling}]
[require Tcl 8.6]
[require coroutine 1.1]
[description]



The [package coroutine] package provides coroutine-aware
implementations of various event- and channel related commands. It can
be in multiple modes:

[list_begin enumerated]

28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119

A more agressive form of making code coroutine-oblivious than point 2
above is available through the package [package coroutine::auto],
which intercepts the relevant builtin commands and changes their
implementation dependending on the context they are run in, i.e.
inside or outside of a coroutine.


[section API]

All the commands listed below are synchronous with respect to the
coroutine invoking them, i.e. this coroutine blocks until the result
is available. The overall eventloop is not blocked however.


[list_begin definitions]

[call [cmd {coroutine::util after}] [arg delay]]

This command delays the coroutine invoking it by [arg delay]
milliseconds.


[call [cmd {coroutine::util await}] [arg varname]...]

This command is an extension form of the [cmd {coroutine::util vwait}]
command (see below) which waits on a write to one of many named
namespace variables.


[call [cmd {coroutine::util create}] [arg arg]...]

This command creates a new coroutine with an automatically assigned
name and causes it to run the code specified by the arguments.


[call [cmd {coroutine::util exit}] [opt [arg status]]]

This command exits the current coroutine, causing it to return
[arg status]. If no status was specified the default [arg 0] is
returned.


[call [cmd {coroutine::util gets}] [arg chan] [opt [arg varname]]]

This command reads a line from the channel [arg chan] and returns it
either as its result, or, if a [arg varname] was specified, writes it
to the named variable and returns the number of characters read.


[call [cmd {coroutine::util global}] [arg varname]...]

This command imports the named global variables of the coroutine into
the current scope. From the technical point of view these variables
reside in level [const #1] of the Tcl stack. I.e. these are not the
regular global variable in to the global namespace, and each coroutine
can have their own set, independent of all others.


[call [cmd {coroutine::util read}] [option -nonewline] [arg chan] [opt [arg n]]]

This command reads [arg n] characters from the channel [arg chan] and
returns them as its result. If [arg n] is not specified the command
will read the channel until EOF is reached.


[call [cmd {coroutine::util update}] [opt [const idletasks]]]

This command causes the coroutine invoking it to run pending events or
idle handlers before proceeding.


[call [cmd {coroutine::util vwait}] [arg varname]]

This command causes the coroutine calling it to wait for a write to
the named namespace variable [arg varname].

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph coroutine] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]







<





<








<






<




<







<





<









<






<




<








|
<
|
<
<
<
<
<
<
<
<
<

38
39
40
41
42
43
44

45
46
47
48
49

50
51
52
53
54
55
56
57

58
59
60
61
62
63

64
65
66
67

68
69
70
71
72
73
74

75
76
77
78
79

80
81
82
83
84
85
86
87
88

89
90
91
92
93
94

95
96
97
98

99
100
101
102
103
104
105
106
107

108









109

A more agressive form of making code coroutine-oblivious than point 2
above is available through the package [package coroutine::auto],
which intercepts the relevant builtin commands and changes their
implementation dependending on the context they are run in, i.e.
inside or outside of a coroutine.


[section API]

All the commands listed below are synchronous with respect to the
coroutine invoking them, i.e. this coroutine blocks until the result
is available. The overall eventloop is not blocked however.


[list_begin definitions]

[call [cmd {coroutine::util after}] [arg delay]]

This command delays the coroutine invoking it by [arg delay]
milliseconds.


[call [cmd {coroutine::util await}] [arg varname]...]

This command is an extension form of the [cmd {coroutine::util vwait}]
command (see below) which waits on a write to one of many named
namespace variables.


[call [cmd {coroutine::util create}] [arg arg]...]

This command creates a new coroutine with an automatically assigned
name and causes it to run the code specified by the arguments.


[call [cmd {coroutine::util exit}] [opt [arg status]]]

This command exits the current coroutine, causing it to return
[arg status]. If no status was specified the default [arg 0] is
returned.


[call [cmd {coroutine::util gets}] [arg chan] [opt [arg varname]]]

This command reads a line from the channel [arg chan] and returns it
either as its result, or, if a [arg varname] was specified, writes it
to the named variable and returns the number of characters read.


[call [cmd {coroutine::util global}] [arg varname]...]

This command imports the named global variables of the coroutine into
the current scope. From the technical point of view these variables
reside in level [const #1] of the Tcl stack. I.e. these are not the
regular global variable in to the global namespace, and each coroutine
can have their own set, independent of all others.


[call [cmd {coroutine::util read}] [option -nonewline] [arg chan] [opt [arg n]]]

This command reads [arg n] characters from the channel [arg chan] and
returns them as its result. If [arg n] is not specified the command
will read the channel until EOF is reached.


[call [cmd {coroutine::util update}] [opt [const idletasks]]]

This command causes the coroutine invoking it to run pending events or
idle handlers before proceeding.


[call [cmd {coroutine::util vwait}] [arg varname]]

This command causes the coroutine calling it to wait for a write to
the named namespace variable [arg varname].

[list_end]

[vset CATEGORY coroutine]

[include ../doctools2base/include/feedback.inc]









[manpage_end]

Changes to modules/counter/counter.man.

1
2




3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin counter n 2.0.4]




[moddesc   {Counters and Histograms}]
[titledesc {Procedures for counters and histograms}]
[category  {Data structures}]
[require Tcl 8]
[require counter [opt 2.0.4]]
[description]
[para]

The [package counter] package provides a counter facility and can
compute statistics and histograms over the collected data.

[list_begin definitions]


[call [cmd ::counter::init] [arg {tag args}]]

This defines a counter with the name [arg tag].  The [arg args]
determines the characteristics of the counter.  The [arg args] are

[list_begin definitions]


>
>
>
>












<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

19
20
21
22
23
24
25
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin counter n 2.0.4]
[keywords counting]
[keywords histogram]
[keywords statistics]
[keywords tallying]
[moddesc   {Counters and Histograms}]
[titledesc {Procedures for counters and histograms}]
[category  {Data structures}]
[require Tcl 8]
[require counter [opt 2.0.4]]
[description]
[para]

The [package counter] package provides a counter facility and can
compute statistics and histograms over the collected data.

[list_begin definitions]


[call [cmd ::counter::init] [arg {tag args}]]

This defines a counter with the name [arg tag].  The [arg args]
determines the characteristics of the counter.  The [arg args] are

[list_begin definitions]
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
keeps all time-based histograms in sync, so the first

[arg secsPerMinute] value seen by the package is used for all
subsequent time-based histograms.

[list_end]


[call [cmd ::counter::count] [arg tag] [opt [arg delta]] [opt [arg instance]]]

Increment the counter identified by [arg tag].  The default increment
is 1, although you can increment by any value, integer or real, by
specifying [arg delta].  You must declare each counter with

[cmd ::counter::init] to define the characteristics of counter before
you start to use it.  If the counter type is [option -group], then the
counter identified by [arg instance] is incremented.


[call [cmd ::counter::start] [arg {tag instance}]]

Record the starting time of an interval.  The [arg tag] is the name of
the counter defined as a [option -hist] value-based histogram.  The
[arg instance] is used to distinguish this interval from any other
intervals that might be overlapping this one.


[call [cmd ::counter::stop] [arg {tag instance}]]

Record the ending time of an interval.  The delta time since the
corresponding [cmd ::counter::start] call for [arg instance] is
recorded in the histogram identified by [arg tag].


[call [cmd ::counter::get] [arg {tag args}]]

Return statistics about a counter identified by [arg tag].  The

[arg args] determine what value to return:








<










<







<





<







73
74
75
76
77
78
79

80
81
82
83
84
85
86
87
88
89

90
91
92
93
94
95
96

97
98
99
100
101

102
103
104
105
106
107
108
keeps all time-based histograms in sync, so the first

[arg secsPerMinute] value seen by the package is used for all
subsequent time-based histograms.

[list_end]


[call [cmd ::counter::count] [arg tag] [opt [arg delta]] [opt [arg instance]]]

Increment the counter identified by [arg tag].  The default increment
is 1, although you can increment by any value, integer or real, by
specifying [arg delta].  You must declare each counter with

[cmd ::counter::init] to define the characteristics of counter before
you start to use it.  If the counter type is [option -group], then the
counter identified by [arg instance] is incremented.


[call [cmd ::counter::start] [arg {tag instance}]]

Record the starting time of an interval.  The [arg tag] is the name of
the counter defined as a [option -hist] value-based histogram.  The
[arg instance] is used to distinguish this interval from any other
intervals that might be overlapping this one.


[call [cmd ::counter::stop] [arg {tag instance}]]

Record the ending time of an interval.  The delta time since the
corresponding [cmd ::counter::start] call for [arg instance] is
recorded in the histogram identified by [arg tag].


[call [cmd ::counter::get] [arg {tag args}]]

Return statistics about a counter identified by [arg tag].  The

[arg args] determine what value to return:

169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192

Return an array get of the array used to store the counter.  This
includes the total, the number of samples (N), and any type-specific
information.  This does not include the histogram array.

[list_end]


[call [cmd ::counter::exists] [arg tag]]

Returns 1 if the counter is defined.


[call [cmd ::counter::names]]

Returns a list of all counters defined.


[call [cmd ::counter::histHtmlDisplay] [arg {tag args}]]

Generate HTML to display a histogram for a counter.  The [arg args]
control the format of the display.  They are:

[list_begin definitions]







<




<



<







168
169
170
171
172
173
174

175
176
177
178

179
180
181

182
183
184
185
186
187
188

Return an array get of the array used to store the counter.  This
includes the total, the number of samples (N), and any type-specific
information.  This does not include the histogram array.

[list_end]


[call [cmd ::counter::exists] [arg tag]]

Returns 1 if the counter is defined.


[call [cmd ::counter::names]]

Returns a list of all counters defined.


[call [cmd ::counter::histHtmlDisplay] [arg {tag args}]]

Generate HTML to display a histogram for a counter.  The [arg args]
control the format of the display.  They are:

[list_begin definitions]
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267

[call [cmd ::counter::reset] [arg {tag args}]]

Resets the counter with the name [arg tag] to an initial state. The
[arg args] determine the new characteristics of the counter. They have
the same meaning as described for [cmd ::counter::init].



[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph counter] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords statistics histogram counting tallying]
[manpage_end]







<
<


<
|
<
<
|
<
<
<
<
<
<
<
<

239
240
241
242
243
244
245


246
247

248


249








250

[call [cmd ::counter::reset] [arg {tag args}]]

Resets the counter with the name [arg tag] to an initial state. The
[arg args] determine the new characteristics of the counter. They have
the same meaning as described for [cmd ::counter::init].



[list_end]


[vset CATEGORY counter]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/crc/cksum.man.

1









2
3
4
5
6
7
8
[manpage_begin cksum n 1.1.3]









[copyright {2002, Pat Thoyts}]
[moddesc   {Cyclic Redundancy Checks}]
[titledesc {Calculate a cksum(1) compatible checksum}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require cksum [opt 1.1.3]]
[description]

>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[manpage_begin cksum n 1.1.3]
[see_also crc32(n)]
[see_also sum(n)]
[keywords checksum]
[keywords cksum]
[keywords crc]
[keywords crc32]
[keywords {cyclic redundancy check}]
[keywords {data integrity}]
[keywords security]
[copyright {2002, Pat Thoyts}]
[moddesc   {Cyclic Redundancy Checks}]
[titledesc {Calculate a cksum(1) compatible checksum}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require cksum [opt 1.1.3]]
[description]
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
[call [cmd "::crc::CksumInit"]]

Begins a new cksum context. Returns a token ID that must be used for the
remaining functions. An optional seed may be specified if required.

[call [cmd "::crc::CksumUpdate"] [arg "token"] [arg "data"]]

Add data to the checksum identified by token. Calling 
[emph {CksumUpdate $token "abcd"}] is equivalent to calling
[emph {CksumUpdate $token "ab"}] followed by 
[emph {CksumUpdate $token "cb"}]. See [sectref {EXAMPLES}].


[call [cmd "::crc::CksumFinal"] [arg "token"]]

Returns the checksum value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a 32 bit integer value.








|

|

<







76
77
78
79
80
81
82
83
84
85
86

87
88
89
90
91
92
93
[call [cmd "::crc::CksumInit"]]

Begins a new cksum context. Returns a token ID that must be used for the
remaining functions. An optional seed may be specified if required.

[call [cmd "::crc::CksumUpdate"] [arg "token"] [arg "data"]]

Add data to the checksum identified by token. Calling
[emph {CksumUpdate $token "abcd"}] is equivalent to calling
[emph {CksumUpdate $token "ab"}] followed by
[emph {CksumUpdate $token "cb"}]. See [sectref {EXAMPLES}].


[call [cmd "::crc::CksumFinal"] [arg "token"]]

Returns the checksum value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a 32 bit integer value.

110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
% set tok [crc::CksumInit]
% crc::CksumUpdate $tok "Hello, "
% crc::CksumUpdate $tok "World!"
% crc::CksumFinal $tok
2609532967
}]


[see_also sum(n) crc32(n)]
[section AUTHORS]
Pat Thoyts

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph crc] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords cksum checksum crc crc32 {cyclic redundancy check} {data integrity} security]
[manpage_end]







<
<



<
|
<
<
|
<
<
<
<
<
<
<
<

118
119
120
121
122
123
124


125
126
127

128


129








130
% set tok [crc::CksumInit]
% crc::CksumUpdate $tok "Hello, "
% crc::CksumUpdate $tok "World!"
% crc::CksumFinal $tok
2609532967
}]



[section AUTHORS]
Pat Thoyts


[vset CATEGORY crc]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/crc/crc16.man.

1











2
3
4
5
6
7
8
[manpage_begin crc16 n 1.1.2]











[copyright {2002, Pat Thoyts}]
[moddesc   {Cyclic Redundancy Checks}]
[titledesc {Perform a 16bit Cyclic Redundancy Check}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require crc16 [opt 1.1.2]]
[description]

>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[manpage_begin crc16 n 1.1.2]
[see_also cksum(n)]
[see_also crc32(n)]
[see_also sum(n)]
[keywords checksum]
[keywords cksum]
[keywords crc]
[keywords crc16]
[keywords crc32]
[keywords {cyclic redundancy check}]
[keywords {data integrity}]
[keywords security]
[copyright {2002, Pat Thoyts}]
[moddesc   {Cyclic Redundancy Checks}]
[titledesc {Perform a 16bit Cyclic Redundancy Check}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require crc16 [opt 1.1.2]]
[description]
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143

[para]
[example {
% crc::crc16 -file crc16.tcl
51675
}]

[see_also sum(n) cksum(n) crc32(n)]
[section AUTHORS]
Pat Thoyts

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph crc] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords cksum checksum crc crc32 crc16 {cyclic redundancy check} {data integrity} security]
[manpage_end]







<



<
|
<
<
|
<
<
<
<
<
<
<
<

130
131
132
133
134
135
136

137
138
139

140


141








142

[para]
[example {
% crc::crc16 -file crc16.tcl
51675
}]


[section AUTHORS]
Pat Thoyts


[vset CATEGORY crc]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/crc/crc32.man.

1










2
3
4
5
6
7
8
[manpage_begin crc32 n 1.3]










[copyright {2002, Pat Thoyts}]
[moddesc   {Cyclic Redundancy Checks}]
[titledesc {Perform a 32bit Cyclic Redundancy Check}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require crc32 [opt 1.3]]
[description]

>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[manpage_begin crc32 n 1.3]
[see_also cksum(n)]
[see_also crc16(n)]
[see_also sum(n)]
[keywords checksum]
[keywords cksum]
[keywords crc]
[keywords crc32]
[keywords {cyclic redundancy check}]
[keywords {data integrity}]
[keywords security]
[copyright {2002, Pat Thoyts}]
[moddesc   {Cyclic Redundancy Checks}]
[titledesc {Perform a 32bit Cyclic Redundancy Check}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require crc32 [opt 1.3]]
[description]
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
structures without first converting the whole structure into a
string. The CRC of the previous member can be used as the seed for
calculating the CRC of the next member.

Note that the crc32 algorithm includes a final XOR step. If
incremental processing is desired then this must be undone before
using the output of the algorithm as the seed for further
processing. A simpler alternative is to use the 
[sectref {PROGRAMMING INTERFACE}] which is intended for this mode of
operation.

[list_end]

[section {PROGRAMMING INTERFACE}]








|







72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
structures without first converting the whole structure into a
string. The CRC of the previous member can be used as the seed for
calculating the CRC of the next member.

Note that the crc32 algorithm includes a final XOR step. If
incremental processing is desired then this must be undone before
using the output of the algorithm as the seed for further
processing. A simpler alternative is to use the
[sectref {PROGRAMMING INTERFACE}] which is intended for this mode of
operation.

[list_end]

[section {PROGRAMMING INTERFACE}]

87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
[call [cmd "::crc::Crc32Init"] [opt [arg "seed"]]]

Begins a new CRC32 context. Returns a token ID that must be used for the
remaining functions. An optional seed may be specified if required.

[call [cmd "::crc::Crc32Update"] [arg "token"] [arg "data"]]

Add data to the checksum identified by token. Calling 
[emph {Crc32Update $token "abcd"}] is equivalent to calling
[emph {Crc32Update $token "ab"}] followed by 
[emph {Crc32Update $token "cb"}]. See [sectref {EXAMPLES}].


[call [cmd "::crc::Crc32Final"] [arg "token"]]

Returns the checksum value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a 32 bit integer value.








|

|

<







97
98
99
100
101
102
103
104
105
106
107

108
109
110
111
112
113
114
[call [cmd "::crc::Crc32Init"] [opt [arg "seed"]]]

Begins a new CRC32 context. Returns a token ID that must be used for the
remaining functions. An optional seed may be specified if required.

[call [cmd "::crc::Crc32Update"] [arg "token"] [arg "data"]]

Add data to the checksum identified by token. Calling
[emph {Crc32Update $token "abcd"}] is equivalent to calling
[emph {Crc32Update $token "ab"}] followed by
[emph {Crc32Update $token "cb"}]. See [sectref {EXAMPLES}].


[call [cmd "::crc::Crc32Final"] [arg "token"]]

Returns the checksum value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a 32 bit integer value.

130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
% set tok [crc::Crc32Init]
% crc::Crc32Update $tok "Hello, "
% crc::Crc32Update $tok "World!"
% crc::Crc32Final $tok
3964322768
}]

[see_also sum(n) cksum(n) crc16(n)]
[section AUTHORS]
Pat Thoyts

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph crc] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords cksum checksum crc crc32 {cyclic redundancy check} {data integrity} security]
[manpage_end]







<



<
|
<
<
|
<
<
<
<
<
<
<
<

139
140
141
142
143
144
145

146
147
148

149


150








151
% set tok [crc::Crc32Init]
% crc::Crc32Update $tok "Hello, "
% crc::Crc32Update $tok "World!"
% crc::Crc32Final $tok
3964322768
}]


[section AUTHORS]
Pat Thoyts


[vset CATEGORY crc]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/crc/sum.man.

1











2
3
4
5
6
7
8
[manpage_begin sum n 1.1.0]











[copyright {2002, Pat Thoyts <[email protected]>}]
[moddesc   {Cyclic Redundancy Checks}]
[titledesc {Calculate a sum(1) compatible checksum}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require sum [opt 1.1.0]]
[description]

>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[manpage_begin sum n 1.1.0]
[see_also cksum(n)]
[see_also crc32(n)]
[see_also sum(1)]
[keywords checksum]
[keywords cksum]
[keywords crc]
[keywords crc32]
[keywords {cyclic redundancy check}]
[keywords {data integrity}]
[keywords security]
[keywords sum]
[copyright {2002, Pat Thoyts <[email protected]>}]
[moddesc   {Cyclic Redundancy Checks}]
[titledesc {Calculate a sum(1) compatible checksum}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require sum [opt 1.1.0]]
[description]
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108

[para]
[example {
% crc::sum -file sum.tcl
13392
}]

[see_also sum(1) cksum(n) crc32(n)]
[section AUTHORS]
Pat Thoyts

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph crc] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords sum cksum checksum crc crc32 {cyclic redundancy check} {data integrity} security]
[manpage_end]







<



<
|
<
<
|
<
<
<
<
<
<
<
<

95
96
97
98
99
100
101

102
103
104

105


106








107

[para]
[example {
% crc::sum -file sum.tcl
13392
}]


[section AUTHORS]
Pat Thoyts


[vset CATEGORY crc]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/csv/csv.man.

1
2







3
4
5
6
7
8
9
[comment {-*- tcl -*-}]
[manpage_begin csv n 0.8]







[copyright {2002-2013 Andreas Kupries <[email protected]>}]
[moddesc   {CSV processing}]
[titledesc {Procedures to handle CSV data.}]
[category  {Text processing}]
[require Tcl 8.4]
[require csv [opt 0.8]]
[description]


>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[comment {-*- tcl -*-}]
[manpage_begin csv n 0.8]
[see_also matrix]
[see_also queue]
[keywords csv]
[keywords matrix]
[keywords package]
[keywords queue]
[keywords tcllib]
[copyright {2002-2013 Andreas Kupries <[email protected]>}]
[moddesc   {CSV processing}]
[titledesc {Procedures to handle CSV data.}]
[category  {Text processing}]
[require Tcl 8.4]
[require csv [opt 0.8]]
[description]
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117

[para]

If the option [option -alternate] is specified a slightly different
syntax is used to parse the input. This syntax is explained below, in
the section [sectref FORMAT].


[call [cmd ::csv::split2matrix] [opt [option -alternate]] [arg "m line"] "{[arg sepChar] ,} {[arg expand] none}"]

The same as [cmd ::csv::split], but appends the resulting list as a
new row to the matrix [arg m], using the method [cmd "add row"]. The
expansion mode specified via [arg expand] determines how the command
handles a matrix with less columns than contained in [arg line]. The
allowed modes are:







<







110
111
112
113
114
115
116

117
118
119
120
121
122
123

[para]

If the option [option -alternate] is specified a slightly different
syntax is used to parse the input. This syntax is explained below, in
the section [sectref FORMAT].


[call [cmd ::csv::split2matrix] [opt [option -alternate]] [arg "m line"] "{[arg sepChar] ,} {[arg expand] none}"]

The same as [cmd ::csv::split], but appends the resulting list as a
new row to the matrix [arg m], using the method [cmd "add row"]. The
expansion mode specified via [arg expand] determines how the command
handles a matrix with less columns than contained in [arg line]. The
allowed modes are:
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
into the channel [arg chan].

[list_end]

[section FORMAT]
[para]

The format of regular CSV files is specified as 

[list_begin enumerated]

[enum]
Each record of a csv file (comma-separated values, as exported e.g. by
Excel) is a set of ASCII values separated by ",". For other languages
it may be ";" however, although this is not important for this case as







|







165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
into the channel [arg chan].

[list_end]

[section FORMAT]
[para]

The format of regular CSV files is specified as

[list_begin enumerated]

[enum]
Each record of a csv file (comma-separated values, as exported e.g. by
Excel) is a set of ASCII values separated by ",". For other languages
it may be ";" however, although this is not important for this case as
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
c) Mary says "Hello, I am Mary"
d) (the empty string)
}]

instead. As can be seen only item (d) is different, now the empty string
instead of a ".


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph csv] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also matrix queue]
[keywords csv matrix queue package tcllib]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<

237
238
239
240
241
242
243
244

245












246
c) Mary says "Hello, I am Mary"
d) (the empty string)
}]

instead. As can be seen only item (d) is different, now the empty string
instead of a ".

[vset CATEGORY csv]

[include ../doctools2base/include/feedback.inc]












[manpage_end]

Changes to modules/debug/debug.man.

1
2




3
4
5
6
7
8
9
10
11
12
13
14
15
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin debug n 1]




[copyright {200?, Colin McCormack, Wub Server Utilities}]
[copyright {2012, Andreas Kupries <[email protected]>}]
[moddesc {debug narrative}]
[titledesc {debug narrative - core}]
[category  {debugging, tracing, and logging}]
[keywords debug trace log narrative]
[require Tcl 8.5]
[require debug [opt 1]]
[description]

Debugging areas of interest are represented by 'tags' which have
independently settable levels of interest (an integer, higher is more
detailed).


>
>
>
>





<







1
2
3
4
5
6
7
8
9
10
11

12
13
14
15
16
17
18
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin debug n 1]
[keywords debug]
[keywords log]
[keywords narrative]
[keywords trace]
[copyright {200?, Colin McCormack, Wub Server Utilities}]
[copyright {2012, Andreas Kupries <[email protected]>}]
[moddesc {debug narrative}]
[titledesc {debug narrative - core}]
[category  {debugging, tracing, and logging}]

[require Tcl 8.5]
[require debug [opt 1]]
[description]

Debugging areas of interest are represented by 'tags' which have
independently settable levels of interest (an integer, higher is more
detailed).
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
[para] The actually printed text consists of not only the
[arg message], but also global and tag-specific prefix and suffix,
should they exist, with each line in the message having the specified
headers and trailers.

[para] All these parts are [cmd subst]ableTcl scripts, which are
substituted once per message before assembly.


[comment {= = == === ===== ======== ============= =====================}]
[call [cmd debug] [method 2array]]

This method returns a dictionary mapping the names of all debug tags
currently known to the package to their state and log level. The
latter are encoded in a single numeric value, where a negative number







<







39
40
41
42
43
44
45

46
47
48
49
50
51
52
[para] The actually printed text consists of not only the
[arg message], but also global and tag-specific prefix and suffix,
should they exist, with each line in the message having the specified
headers and trailers.

[para] All these parts are [cmd subst]ableTcl scripts, which are
substituted once per message before assembly.


[comment {= = == === ===== ======== ============= =====================}]
[call [cmd debug] [method 2array]]

This method returns a dictionary mapping the names of all debug tags
currently known to the package to their state and log level. The
latter are encoded in a single numeric value, where a negative number
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
have the same actual trailing text.

[para] The result of the method is the specified text.

[comment {= = == === ===== ======== ============= =====================}]
[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph debug] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]







<
|
<
<
|
<
<
<
<
<
<

214
215
216
217
218
219
220

221


222






223
have the same actual trailing text.

[para] The result of the method is the specified text.

[comment {= = == === ===== ======== ============= =====================}]
[list_end]


[vset CATEGORY debug]


[include ../doctools2base/include/feedback.inc]






[manpage_end]

Changes to modules/debug/debug_caller.man.

1
2




3
4
5
6
7
8
9
10
11
12
13
14
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin debug::caller n 1]




[copyright {2012, Andreas Kupries <[email protected]>}]
[moddesc {debug narrative}]
[titledesc {debug narrative - caller}]
[category  {debugging, tracing, and logging}]
[keywords debug trace log narrative]
[require Tcl 8.5]
[require debug::caller [opt 1]]
[description]
[para]

[section API]



>
>
>
>




<







1
2
3
4
5
6
7
8
9
10

11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin debug::caller n 1]
[keywords debug]
[keywords log]
[keywords narrative]
[keywords trace]
[copyright {2012, Andreas Kupries <[email protected]>}]
[moddesc {debug narrative}]
[titledesc {debug narrative - caller}]
[category  {debugging, tracing, and logging}]

[require Tcl 8.5]
[require debug::caller [opt 1]]
[description]
[para]

[section API]

23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
[para] Beyond that it contains code recognizing the various
internal forms of method calls generated by the [package snit]
OO system and rewrites these to their original form, for
better readability.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph debug] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]







<
|
<
<
|
<
<
<
<
<
<

26
27
28
29
30
31
32

33


34






35
[para] Beyond that it contains code recognizing the various
internal forms of method calls generated by the [package snit]
OO system and rewrites these to their original form, for
better readability.

[list_end]


[vset CATEGORY debug]


[include ../doctools2base/include/feedback.inc]






[manpage_end]

Changes to modules/debug/debug_heartbeat.man.

1
2





3
4
5
6
7
8
9
10
11
12
13
14
15
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin debug::heartbeat n 1]





[copyright {200?, Colin McCormack, Wub Server Utilities}]
[copyright {2012, Andreas Kupries <[email protected]>}]
[moddesc {debug narrative}]
[titledesc {debug narrative - heartbeat}]
[category  {debugging, tracing, and logging}]
[keywords debug trace log narrative heartbeat]
[require Tcl 8.5]
[require debug [opt 1]]
[description]
[para]

[section API]



>
>
>
>
>





<







1
2
3
4
5
6
7
8
9
10
11
12

13
14
15
16
17
18
19
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin debug::heartbeat n 1]
[keywords debug]
[keywords heartbeat]
[keywords log]
[keywords narrative]
[keywords trace]
[copyright {200?, Colin McCormack, Wub Server Utilities}]
[copyright {2012, Andreas Kupries <[email protected]>}]
[moddesc {debug narrative}]
[titledesc {debug narrative - heartbeat}]
[category  {debugging, tracing, and logging}]

[require Tcl 8.5]
[require debug [opt 1]]
[description]
[para]

[section API]

28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
[para] The message produced by the heartbeat contains a sequence
counter and the time in milliseconds since the last beat, thus
providing insight into timing variationsn and deviations from the
nominal [arg delta].

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph debug] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]







<
|
<
<
|
<
<
<
<
<
<

32
33
34
35
36
37
38

39


40






41
[para] The message produced by the heartbeat contains a sequence
counter and the time in milliseconds since the last beat, thus
providing insight into timing variationsn and deviations from the
nominal [arg delta].

[list_end]


[vset CATEGORY debug]


[include ../doctools2base/include/feedback.inc]






[manpage_end]

Changes to modules/debug/debug_timestamp.man.

1
2





3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin debug::timestamp n 1]





[copyright {200?, Colin McCormack, Wub Server Utilities}]
[copyright {2012, Andreas Kupries <[email protected]>}]
[moddesc {debug narrative}]
[titledesc {debug narrative - timestamping}]
[category  {debugging, tracing, and logging}]
[keywords debug trace log narrative timestamps]
[require Tcl 8.5]
[require debug [opt 1]]
[description]
[para]

[section API]

[list_begin definitions]

[call [cmd debug] [method timestamp]]

This method returns millisecond timing information since a baseline or
last call, making it useful in a tag-specific prefix to automatically
provide caller information for all uses of the tag. Or in a message,
when only specific places need such detail.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph debug] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]


>
>
>
>
>





<


















<
|
<
<
|
<
<
<
<
<
<

1
2
3
4
5
6
7
8
9
10
11
12

13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

31


32






33
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin debug::timestamp n 1]
[keywords debug]
[keywords log]
[keywords narrative]
[keywords timestamps]
[keywords trace]
[copyright {200?, Colin McCormack, Wub Server Utilities}]
[copyright {2012, Andreas Kupries <[email protected]>}]
[moddesc {debug narrative}]
[titledesc {debug narrative - timestamping}]
[category  {debugging, tracing, and logging}]

[require Tcl 8.5]
[require debug [opt 1]]
[description]
[para]

[section API]

[list_begin definitions]

[call [cmd debug] [method timestamp]]

This method returns millisecond timing information since a baseline or
last call, making it useful in a tag-specific prefix to automatically
provide caller information for all uses of the tag. Or in a message,
when only specific places need such detail.

[list_end]


[vset CATEGORY debug]


[include ../doctools2base/include/feedback.inc]






[manpage_end]

Changes to modules/des/des.man.

1
2











3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin des n 1.1]











[copyright {2005, Pat Thoyts <[email protected]>}]
[moddesc {Data Encryption Standard (DES)}]
[titledesc {Implementation of the DES and triple-DES ciphers}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require des 1.1]
[description]


>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin des n 1.1]
[see_also aes(n)]
[see_also blowfish(n)]
[see_also md5(n)]
[see_also rc4(n)]
[see_also sha1(n)]
[keywords 3DES]
[keywords {block cipher}]
[keywords {data integrity}]
[keywords DES]
[keywords encryption]
[keywords security]
[copyright {2005, Pat Thoyts <[email protected]>}]
[moddesc {Data Encryption Standard (DES)}]
[titledesc {Implementation of the DES and triple-DES ciphers}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require des 1.1]
[description]
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
superceeded by AES but is in common use in many protocols.

[para]

The tcllib implementation of DES and 3DES uses an implementation by
Mac Cody and is available as a separate download from [lb]2[rb]. For
anyone concerned about the details of exporting this code please see
the TclDES web pages. The tcllib specific code is a wrapper to the 
TclDES API that presents same API for the DES cipher as for other
ciphers in the library.

[section "COMMANDS"]

[list_begin definitions]
[call [cmd "::DES::des"] \







|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
superceeded by AES but is in common use in many protocols.

[para]

The tcllib implementation of DES and 3DES uses an implementation by
Mac Cody and is available as a separate download from [lb]2[rb]. For
anyone concerned about the details of exporting this code please see
the TclDES web pages. The tcllib specific code is a wrapper to the
TclDES API that presents same API for the DES cipher as for other
ciphers in the library.

[section "COMMANDS"]

[list_begin definitions]
[call [cmd "::DES::des"] \
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
In DES only 56 bits of key data are used. The highest bit from each
byte is discarded.

[para]

The [arg -mode] and [arg -dir] options are optional and default to cbc
mode and encrypt respectively. The initialization vector [arg -iv]
takes an 8 byte binary argument. This defaults to all zeros. See 
[sectref "MODES OF OPERATION"] for more about [arg -mode] and the use
of the initialization vector.

[para]

DES is a 64-bit block cipher. This means that the data must be
provided in units that are a multiple of 8 bytes.







|







63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
In DES only 56 bits of key data are used. The highest bit from each
byte is discarded.

[para]

The [arg -mode] and [arg -dir] options are optional and default to cbc
mode and encrypt respectively. The initialization vector [arg -iv]
takes an 8 byte binary argument. This defaults to all zeros. See
[sectref "MODES OF OPERATION"] for more about [arg -mode] and the use
of the initialization vector.

[para]

DES is a 64-bit block cipher. This means that the data must be
provided in units that are a multiple of 8 bytes.
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208

[enum]
    "TclDES: munitions-grade Tcl scripting"
    [uri http://tcldes.sourceforge.net/]

[list_end]

[see_also aes(n) blowfish(n) rc4(n) md5(n) sha1(n) ]

[section "AUTHORS"]
Jochen C Loewer, 
Mac Cody,
Pat Thoyts

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph des] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords DES 3DES {block cipher} security encryption {data integrity}]
[manpage_end]







<
<

|



<
|
<
<
|
<
<
<
<
<
<
<
<

192
193
194
195
196
197
198


199
200
201
202
203

204


205








206

[enum]
    "TclDES: munitions-grade Tcl scripting"
    [uri http://tcldes.sourceforge.net/]

[list_end]



[section "AUTHORS"]
Jochen C Loewer,
Mac Cody,
Pat Thoyts


[vset CATEGORY des]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/dns/tcllib_dns.man.

1







2
3
4
5
6
7
8
[manpage_begin dns n 1.3.3]







[copyright {2002, Pat Thoyts}]
[moddesc   {Domain Name Service}]
[titledesc {Tcl Domain Name Service Client}]
[category  Networking]
[require Tcl 8.2]
[require dns [opt 1.3.3]]
[description]

>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[manpage_begin dns n 1.3.3]
[see_also resolver(5)]
[keywords DNS]
[keywords {domain name service}]
[keywords resolver]
[keywords {rfc 1034}]
[keywords {rfc 1035}]
[keywords {rfc 1886}]
[copyright {2002, Pat Thoyts}]
[moddesc   {Domain Name Service}]
[titledesc {Tcl Domain Name Service Client}]
[category  Networking]
[require Tcl 8.2]
[require dns [opt 1.3.3]]
[description]
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
(4) of the form [uri dns:what.host.com] or
[uri dns://my.nameserver/what.host.com]. The [cmd dns::resolve]
command can handle DNS URIs or simple domain names as a query.

[para]

[emph Note:] The package defaults to using DNS over TCP
connections. If you wish to use UDP you will need to have the 
[package tcludp] package installed and have a version that
correctly handles binary data (> 1.0.4).
This is available at [uri http://tcludp.sourceforge.net/]. 
If the [package udp] package is present then UDP will be used by default.

[section COMMANDS]

[list_begin definitions]

[call [cmd ::dns::resolve] [arg query] [opt [arg "options"]]]

Resolve a domain name using the [term DNS] protocol. [arg query] is
the domain name to be lookup up. This should be either a fully
qualified domain name or a DNS URI.

[list_begin definitions]
[def "[cmd -nameserver] [arg hostname] or [cmd -server] [arg hostname]"]
  Specify an alternative name server for this request.
[def "[cmd -protocol] [arg tcp|udp]"]
  Specify the network protocol to use for this request. Can be one of
  [arg tcp] or [arg udp]. 
[def "[cmd -port] [arg portnum]"]
  Specify an alternative port.
[def "[cmd -search] [arg domainlist]"]
[def "[cmd -timeout] [arg milliseconds]"]
  Override the default timeout.
[def "[cmd -type] [arg TYPE]"]
  Specify the type of DNS record you are interested in. Valid values
  are A, NS, MD, MF, CNAME, SOA, MB, MG, MR, NULL, WKS, PTR, HINFO, 
  MINFO, MX, TXT, SPF, SRV, AAAA, AXFR, MAILB, MAILA and *. 
  See RFC1035 for details about the return values.
  See [uri http://spf.pobox.com/] about SPF.
  See (3) about AAAA records and RFC2782 for details of SRV records.

[def "[cmd -class] [arg CLASS]"]
  Specify the class of domain name. This is usually IN but may be one
  of IN for internet domain names, CS, CH, HS or * for any class.
[def "[cmd -recurse] [arg boolean]"]
  Set to [arg false] if you do not want the name server to recursively
  act upon your request. Normally set to [arg true].
[def "[cmd -command] [arg procname]"]
  Set a procedure to be called upon request completion. The procedure 
  will be passed the token as its only argument.
[list_end]

[para]
[call [cmd ::dns::configure] [opt [arg "options"]]]

The [cmd ::dns::configure] command is used to setup the dns







|


|

















|







|
|











|







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
(4) of the form [uri dns:what.host.com] or
[uri dns://my.nameserver/what.host.com]. The [cmd dns::resolve]
command can handle DNS URIs or simple domain names as a query.

[para]

[emph Note:] The package defaults to using DNS over TCP
connections. If you wish to use UDP you will need to have the
[package tcludp] package installed and have a version that
correctly handles binary data (> 1.0.4).
This is available at [uri http://tcludp.sourceforge.net/].
If the [package udp] package is present then UDP will be used by default.

[section COMMANDS]

[list_begin definitions]

[call [cmd ::dns::resolve] [arg query] [opt [arg "options"]]]

Resolve a domain name using the [term DNS] protocol. [arg query] is
the domain name to be lookup up. This should be either a fully
qualified domain name or a DNS URI.

[list_begin definitions]
[def "[cmd -nameserver] [arg hostname] or [cmd -server] [arg hostname]"]
  Specify an alternative name server for this request.
[def "[cmd -protocol] [arg tcp|udp]"]
  Specify the network protocol to use for this request. Can be one of
  [arg tcp] or [arg udp].
[def "[cmd -port] [arg portnum]"]
  Specify an alternative port.
[def "[cmd -search] [arg domainlist]"]
[def "[cmd -timeout] [arg milliseconds]"]
  Override the default timeout.
[def "[cmd -type] [arg TYPE]"]
  Specify the type of DNS record you are interested in. Valid values
  are A, NS, MD, MF, CNAME, SOA, MB, MG, MR, NULL, WKS, PTR, HINFO,
  MINFO, MX, TXT, SPF, SRV, AAAA, AXFR, MAILB, MAILA and *.
  See RFC1035 for details about the return values.
  See [uri http://spf.pobox.com/] about SPF.
  See (3) about AAAA records and RFC2782 for details of SRV records.

[def "[cmd -class] [arg CLASS]"]
  Specify the class of domain name. This is usually IN but may be one
  of IN for internet domain names, CS, CH, HS or * for any class.
[def "[cmd -recurse] [arg boolean]"]
  Set to [arg false] if you do not want the name server to recursively
  act upon your request. Normally set to [arg true].
[def "[cmd -command] [arg procname]"]
  Set a procedure to be called upon request completion. The procedure
  will be passed the token as its only argument.
[list_end]

[para]
[call [cmd ::dns::configure] [opt [arg "options"]]]

The [cmd ::dns::configure] command is used to setup the dns
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
[def "[cmd -timeout] [arg milliseconds]"]
  Set the default timeout value for DNS lookups. Default is 30 seconds.
[def "[cmd -loglevel] [arg level]"]
  Set the log level used for emitting diagnostic messages from this
  package. The default is [term warn]. See the [package log] package
  for details of the available levels.
[list_end]


[para]
[call [cmd ::dns::name] [arg token]]
  Returns a list of all domain names returned as an answer to your query.

[para]
[call [cmd ::dns::address] [arg token]]







<







104
105
106
107
108
109
110

111
112
113
114
115
116
117
[def "[cmd -timeout] [arg milliseconds]"]
  Set the default timeout value for DNS lookups. Default is 30 seconds.
[def "[cmd -loglevel] [arg level]"]
  Set the log level used for emitting diagnostic messages from this
  package. The default is [term warn]. See the [package log] package
  for details of the available levels.
[list_end]


[para]
[call [cmd ::dns::name] [arg token]]
  Returns a list of all domain names returned as an answer to your query.

[para]
[call [cmd ::dns::address] [arg token]]
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
[call [cmd ::dns::wait] [arg token]]
  Wait for a DNS query to complete and return the status upon completion.

[para]
[call [cmd ::dns::cleanup] [arg token]]
  Remove all state variables associated with the request.


[para]
[call [cmd ::dns::nameservers]]

Attempts to return a list of the nameservers currently configured
for the users system. On a unix machine this parses the
/etc/resolv.conf file for nameservers (if it exists) and on Windows
systems we examine certain parts of the registry. If no nameserver can
be found then the loopback address (127.0.0.1) is used as a default.
  
[list_end]

[comment { -----------------------------------------------------------  }]

[section EXAMPLES]

[para]







<








|







145
146
147
148
149
150
151

152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
[call [cmd ::dns::wait] [arg token]]
  Wait for a DNS query to complete and return the status upon completion.

[para]
[call [cmd ::dns::cleanup] [arg token]]
  Remove all state variables associated with the request.


[para]
[call [cmd ::dns::nameservers]]

Attempts to return a list of the nameservers currently configured
for the users system. On a unix machine this parses the
/etc/resolv.conf file for nameservers (if it exists) and on Windows
systems we examine certain parts of the registry. If no nameserver can
be found then the loopback address (127.0.0.1) is used as a default.

[list_end]

[comment { -----------------------------------------------------------  }]

[section EXAMPLES]

[para]
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
    Mockapetris, P., "Domain Names - Concepts and Facilities",
    RFC 1034, November 1987.
    ([uri http://www.ietf.org/rfc/rfc1034.txt])

[enum]
    Mockapetris, P., "Domain Names - Implementation and Specification",
    RFC 1035, November 1087.
    ([uri http://www.ietf.org/rfc/rfc1035.txt]) 

[enum]
    Thompson, S. and Huitema, C., "DNS Extensions to support IP version 6",
    RFC 1886, December 1995.
    ([uri http://www.ietf.org/rfc/rfc1886.txt])

[enum]







|







204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
    Mockapetris, P., "Domain Names - Concepts and Facilities",
    RFC 1034, November 1987.
    ([uri http://www.ietf.org/rfc/rfc1034.txt])

[enum]
    Mockapetris, P., "Domain Names - Implementation and Specification",
    RFC 1035, November 1087.
    ([uri http://www.ietf.org/rfc/rfc1035.txt])

[enum]
    Thompson, S. and Huitema, C., "DNS Extensions to support IP version 6",
    RFC 1886, December 1995.
    ([uri http://www.ietf.org/rfc/rfc1886.txt])

[enum]
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
[enum]
    Ohta, M. "Incremental Zone Transfer in DNS",
    RFC 1995, August 1996,
    ([uri http://www.ietf.org/rfc/rfc1995.txt])

[list_end]

[see_also resolver(5)]
[section AUTHORS]
Pat Thoyts

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph dns] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords DNS resolver {domain name service} {rfc 1034} {rfc 1035} {rfc 1886}]
[manpage_end]







<



<
|
<
<
|
<
<
<
<
<
<
<
<

229
230
231
232
233
234
235

236
237
238

239


240








241
[enum]
    Ohta, M. "Incremental Zone Transfer in DNS",
    RFC 1995, August 1996,
    ([uri http://www.ietf.org/rfc/rfc1995.txt])

[list_end]


[section AUTHORS]
Pat Thoyts


[vset CATEGORY dns]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/dns/tcllib_ip.man.

1








2
3
4
5
6
7
8
[manpage_begin tcllib_ip n 1.2.1]








[copyright {2004, Pat Thoyts}]
[copyright {2005 Aamer Akhter <[email protected]>}]
[moddesc   {Domain Name Service}]
[titledesc {IPv4 and IPv6 address manipulation}]
[category  Networking]
[require Tcl 8.2]
[require ip [opt 1.2.1]]

>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[manpage_begin tcllib_ip n 1.2.1]
[see_also inet(3)]
[see_also ip(7)]
[see_also ipv6(7)]
[keywords {internet address}]
[keywords ip]
[keywords ipv4]
[keywords ipv6]
[keywords {rfc 3513}]
[copyright {2004, Pat Thoyts}]
[copyright {2005 Aamer Akhter <[email protected]>}]
[moddesc   {Domain Name Service}]
[titledesc {IPv4 and IPv6 address manipulation}]
[category  Networking]
[require Tcl 8.2]
[require ip [opt 1.2.1]]
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
supplied). The normalized addresses are then compared bit-by-bit and
the procedure returns true if they match.

[call [cmd ::ip::normalize] [arg address]]

Convert an IPv4 or IPv6 address into a fully expanded version. There
are various shorthand ways to write internet addresses, missing out
redundant parts or digts.. This procedure is the opposite of 
[cmd contract].  

[call [cmd ::ip::contract] [arg address]]

Convert a [cmd normalize]d internet address into a more compact form
suitable for displaying to users.

[call [cmd ::ip::prefix] [arg address]]

Returns the address prefix generated by masking the address part with
the mask if provided. If there is no mask then it is equivalent to
calling [cmd normalize]

[call [cmd ::ip::type] [arg address]]

[call [cmd ::ip::mask] [arg address]]

If the address supplied includes a mask then this is returned
otherwise returns an empty string.


[call [cmd ::ip::prefixToNative] [arg prefix]]

This command converts the string [arg prefix] from dotted form
(<ipaddr>/<mask> format) to native (hex) form. Returns a list
containing two elements, ipaddress and mask, in this order, in
hexadecimal notation.

[para]
[example {
   % ip::prefixToNative 1.1.1.0/24
   0x01010100 0xffffff00
}]


[call [cmd ::ip::nativeToPrefix] [arg nativeList]|[arg native] \
	[opt [option -ipv4]]]

This command converts from native (hex) form to dotted form.
It is the complement of [cmd ::ip::prefixToNative].








|
|



















<












<







45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72

73
74
75
76
77
78
79
80
81
82
83
84

85
86
87
88
89
90
91
supplied). The normalized addresses are then compared bit-by-bit and
the procedure returns true if they match.

[call [cmd ::ip::normalize] [arg address]]

Convert an IPv4 or IPv6 address into a fully expanded version. There
are various shorthand ways to write internet addresses, missing out
redundant parts or digts.. This procedure is the opposite of
[cmd contract].

[call [cmd ::ip::contract] [arg address]]

Convert a [cmd normalize]d internet address into a more compact form
suitable for displaying to users.

[call [cmd ::ip::prefix] [arg address]]

Returns the address prefix generated by masking the address part with
the mask if provided. If there is no mask then it is equivalent to
calling [cmd normalize]

[call [cmd ::ip::type] [arg address]]

[call [cmd ::ip::mask] [arg address]]

If the address supplied includes a mask then this is returned
otherwise returns an empty string.


[call [cmd ::ip::prefixToNative] [arg prefix]]

This command converts the string [arg prefix] from dotted form
(<ipaddr>/<mask> format) to native (hex) form. Returns a list
containing two elements, ipaddress and mask, in this order, in
hexadecimal notation.

[para]
[example {
   % ip::prefixToNative 1.1.1.0/24
   0x01010100 0xffffff00
}]


[call [cmd ::ip::nativeToPrefix] [arg nativeList]|[arg native] \
	[opt [option -ipv4]]]

This command converts from native (hex) form to dotted form.
It is the complement of [cmd ::ip::prefixToNative].

103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178

[para]
[example {
   % ip::nativeToPrefix {0x01010100 0xffffff00} -ipv4
   1.1.1.0/24
}]


[call [cmd ::ip::intToString] [arg number] [opt [option -ipv4]]]

This command converts from an ip address specified as integer number
to dotted form.

[para]
[example {
       ip::intToString 4294967295
       255.255.255.255
}]


[call [cmd ::ip::toInteger] [arg ipaddr]]

This command converts a dotted form ip into an integer number.

[para]
[example {
   % ::ip::toInteger 1.1.1.0
   16843008
}]


[call [cmd ::ip::toHex] [arg ipaddr]]

This command converts dotted form ip into a hexadecimal number.

[para]
[example {
   % ::ip::toHex 1.1.1.0
   0x01010100
}]


[call [cmd ::ip::maskToInt] [arg ipmask]]

This command convert an ipmask in either dotted (255.255.255.0) form
or mask length form (24) into an integer number.

[para]
[example {
   ::ip::maskToInt 24
   4294967040
}]


[call [cmd ::ip::broadcastAddress] [arg prefix] [opt [option -ipv4]]]

This commands returns a broadcast address in dotted form for the given
route [arg prefix], either in the form "addr/mask", or in native
form. The result is in dotted form.

[para]
[example {
   ::ip::broadcastAddress 1.1.1.0/24
   1.1.1.255

   ::ip::broadcastAddress {0x01010100 0xffffff00}
   0x010101ff
}]   


[call [cmd ::ip::maskToLength] \
	[arg dottedMask]|[arg integerMask]|[arg hexMask] \
	[opt [option -ipv4]]]

This command converts the dotted or integer form of an ipmask to
the mask length form.







<










<











<









<











<














|
<







109
110
111
112
113
114
115

116
117
118
119
120
121
122
123
124
125

126
127
128
129
130
131
132
133
134
135
136

137
138
139
140
141
142
143
144
145

146
147
148
149
150
151
152
153
154
155
156

157
158
159
160
161
162
163
164
165
166
167
168
169
170
171

172
173
174
175
176
177
178

[para]
[example {
   % ip::nativeToPrefix {0x01010100 0xffffff00} -ipv4
   1.1.1.0/24
}]


[call [cmd ::ip::intToString] [arg number] [opt [option -ipv4]]]

This command converts from an ip address specified as integer number
to dotted form.

[para]
[example {
       ip::intToString 4294967295
       255.255.255.255
}]


[call [cmd ::ip::toInteger] [arg ipaddr]]

This command converts a dotted form ip into an integer number.

[para]
[example {
   % ::ip::toInteger 1.1.1.0
   16843008
}]


[call [cmd ::ip::toHex] [arg ipaddr]]

This command converts dotted form ip into a hexadecimal number.

[para]
[example {
   % ::ip::toHex 1.1.1.0
   0x01010100
}]


[call [cmd ::ip::maskToInt] [arg ipmask]]

This command convert an ipmask in either dotted (255.255.255.0) form
or mask length form (24) into an integer number.

[para]
[example {
   ::ip::maskToInt 24
   4294967040
}]


[call [cmd ::ip::broadcastAddress] [arg prefix] [opt [option -ipv4]]]

This commands returns a broadcast address in dotted form for the given
route [arg prefix], either in the form "addr/mask", or in native
form. The result is in dotted form.

[para]
[example {
   ::ip::broadcastAddress 1.1.1.0/24
   1.1.1.255

   ::ip::broadcastAddress {0x01010100 0xffffff00}
   0x010101ff
}]


[call [cmd ::ip::maskToLength] \
	[arg dottedMask]|[arg integerMask]|[arg hexMask] \
	[opt [option -ipv4]]]

This command converts the dotted or integer form of an ipmask to
the mask length form.
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243

[para]
[example {
   ::ip::lengthToMask 24
   255.255.255.0
}]


[call [cmd ::ip::nextNet] [arg ipaddr] [arg ipmask] \
	[opt [arg count]] \
	[opt [option -ipv4]]]

This command returns an ipaddress in the same position in the
[arg count] next network. The default value for [arg count] is
[const 1].

[para]

The address can be specified as either integer number or in dotted
form. The mask can be specified as either integer number, dotted form,
or mask length form.

[para]

The result is in hex form.


[call [cmd ::ip::isOverlap] [arg prefix] [arg prefix]...]

This command checks if the given ip prefixes overlap.  All arguments
are in dotted "addr/mask" form. All arguments after the first prefix
are compared against the first prefix. The result is a boolean
value. It is true if an overlap was found for any of the prefixes.

[para]
[example {
  % ::ip::isOverlap 1.1.1.0/24 2.1.0.1/32
  0

  ::ip::isOverlap 1.1.1.0/24 2.1.0.1/32 1.1.1.1/32
  1
}]


[call [cmd ::ip::isOverlapNative] \
	[opt [option -all]] \
	[opt [option -inline]] \
	[opt [option -ipv4]] \
	[arg hexipaddr] [arg hexipmask] [arg hexiplist]]








<


















<















<







194
195
196
197
198
199
200

201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218

219
220
221
222
223
224
225
226
227
228
229
230
231
232
233

234
235
236
237
238
239
240

[para]
[example {
   ::ip::lengthToMask 24
   255.255.255.0
}]


[call [cmd ::ip::nextNet] [arg ipaddr] [arg ipmask] \
	[opt [arg count]] \
	[opt [option -ipv4]]]

This command returns an ipaddress in the same position in the
[arg count] next network. The default value for [arg count] is
[const 1].

[para]

The address can be specified as either integer number or in dotted
form. The mask can be specified as either integer number, dotted form,
or mask length form.

[para]

The result is in hex form.


[call [cmd ::ip::isOverlap] [arg prefix] [arg prefix]...]

This command checks if the given ip prefixes overlap.  All arguments
are in dotted "addr/mask" form. All arguments after the first prefix
are compared against the first prefix. The result is a boolean
value. It is true if an overlap was found for any of the prefixes.

[para]
[example {
  % ::ip::isOverlap 1.1.1.0/24 2.1.0.1/32
  0

  ::ip::isOverlap 1.1.1.0/24 2.1.0.1/32 1.1.1.1/32
  1
}]


[call [cmd ::ip::isOverlapNative] \
	[opt [option -all]] \
	[opt [option -inline]] \
	[opt [option -ipv4]] \
	[arg hexipaddr] [arg hexipmask] [arg hexiplist]]

282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
  % ::ip::isOverlapNative 0x01010100 0xffffff00 {{0x02010001 0xffffffff}}
  0

  % ::ip::isOverlapNative 0x01010100 0xffffff00 {{0x02010001 0xffffffff} {0x01010101 0xffffffff}}
  2
}]


[call [cmd ::ip::ipToLayer2Multicast] [arg ipaddr]]

This command an converts ipv4 address in dotted form into a layer 2
multicast address, also in dotted form.

[para]
[example {
  % ::ip::ipToLayer2Multicast 224.0.0.2
  01.00.5e.00.00.02
}]


[call [cmd ::ip::ipHostFromPrefix] [arg prefix] \
	[opt "[option -exclude] [arg prefixExcludeList]"]]

This command returns a host address from a prefix in the form
"ipaddr/masklen", also making sure that the result is not an address
found in the [arg prefixExcludeList].

The result is an ip address in dotted form.

[para]
[example {
  %::ip::ipHostFromPrefix  1.1.1.5/24
  1.1.1.1

  %::ip::ipHostFromPrefix  1.1.1.1/32
  1.1.1.1
}]


[call [cmd ::ip::reduceToAggregates] [arg prefixlist]]

This command finds nets that overlap and filters out the more specific
nets. The prefixes are in either addr/mask form or in native format.

The result is a list containing the non-overlapping ip prefixes from
the input.

[para]
[example {
  % ::ip::reduceToAggregates {1.1.1.0/24 1.1.0.0/8  2.1.1.0/24 1.1.1.1/32 }
  1.0.0.0/8 2.1.1.0/24
}]


[call [cmd ::ip::longestPrefixMatch] [arg ipaddr] [arg prefixlist] \
	[opt [option -ipv4]]]

This command finds longest prefix match from set of prefixes, given a
specific host address. The prefixes in the list are in either native
or dotted form, whereas the host address is in either ipprefix format,
dotted form, or integer form.

The result is the prefix which is the most specific match to the host
address.

[para]
[example {
  % ::ip::longestPrefixMatch 1.1.1.1 {1.1.1.0/24 1.0.0.0/8  2.1.1.0/24 1.1.1.0/28 }
  1.1.1.0/28
}]


[call [cmd ::ip::collapse] [arg prefixlist]]

This commands takes a list of prefixes and returns a list prefixes
with the largest possible subnet masks covering the input, in this
manner collapsing adjacent prefixes into larger ranges.

[para] This is different from [cmd ::ip::reduceToAggregates] in that
the latter only removes specific nets from a list when they are
covered by other elements of the input whereas this command actively
merges nets into larger ranges when they are adjacent to each other.

[para]
[example {
% ::ip::collapse {1.2.2.0/24 1.2.3.0/24}
1.2.2.0/23
}]


[call [cmd ::ip::subtract] [arg prefixlist]]

This command takes a list of prefixes, some of which are prefixed by a
dash. These latter [term negative] prefixes are used to punch holes
into the ranges described by the other, [term positive],
prefixes. I.e. the negative prefixes are subtracted frrom the positive







<










<



















<













<


















<
















<







279
280
281
282
283
284
285

286
287
288
289
290
291
292
293
294
295

296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314

315
316
317
318
319
320
321
322
323
324
325
326
327

328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345

346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361

362
363
364
365
366
367
368
  % ::ip::isOverlapNative 0x01010100 0xffffff00 {{0x02010001 0xffffffff}}
  0

  % ::ip::isOverlapNative 0x01010100 0xffffff00 {{0x02010001 0xffffffff} {0x01010101 0xffffffff}}
  2
}]


[call [cmd ::ip::ipToLayer2Multicast] [arg ipaddr]]

This command an converts ipv4 address in dotted form into a layer 2
multicast address, also in dotted form.

[para]
[example {
  % ::ip::ipToLayer2Multicast 224.0.0.2
  01.00.5e.00.00.02
}]


[call [cmd ::ip::ipHostFromPrefix] [arg prefix] \
	[opt "[option -exclude] [arg prefixExcludeList]"]]

This command returns a host address from a prefix in the form
"ipaddr/masklen", also making sure that the result is not an address
found in the [arg prefixExcludeList].

The result is an ip address in dotted form.

[para]
[example {
  %::ip::ipHostFromPrefix  1.1.1.5/24
  1.1.1.1

  %::ip::ipHostFromPrefix  1.1.1.1/32
  1.1.1.1
}]


[call [cmd ::ip::reduceToAggregates] [arg prefixlist]]

This command finds nets that overlap and filters out the more specific
nets. The prefixes are in either addr/mask form or in native format.

The result is a list containing the non-overlapping ip prefixes from
the input.

[para]
[example {
  % ::ip::reduceToAggregates {1.1.1.0/24 1.1.0.0/8  2.1.1.0/24 1.1.1.1/32 }
  1.0.0.0/8 2.1.1.0/24
}]


[call [cmd ::ip::longestPrefixMatch] [arg ipaddr] [arg prefixlist] \
	[opt [option -ipv4]]]

This command finds longest prefix match from set of prefixes, given a
specific host address. The prefixes in the list are in either native
or dotted form, whereas the host address is in either ipprefix format,
dotted form, or integer form.

The result is the prefix which is the most specific match to the host
address.

[para]
[example {
  % ::ip::longestPrefixMatch 1.1.1.1 {1.1.1.0/24 1.0.0.0/8  2.1.1.0/24 1.1.1.0/28 }
  1.1.1.0/28
}]


[call [cmd ::ip::collapse] [arg prefixlist]]

This commands takes a list of prefixes and returns a list prefixes
with the largest possible subnet masks covering the input, in this
manner collapsing adjacent prefixes into larger ranges.

[para] This is different from [cmd ::ip::reduceToAggregates] in that
the latter only removes specific nets from a list when they are
covered by other elements of the input whereas this command actively
merges nets into larger ranges when they are adjacent to each other.

[para]
[example {
% ::ip::collapse {1.2.2.0/24 1.2.3.0/24}
1.2.2.0/23
}]


[call [cmd ::ip::subtract] [arg prefixlist]]

This command takes a list of prefixes, some of which are prefixed by a
dash. These latter [term negative] prefixes are used to punch holes
into the ranges described by the other, [term positive],
prefixes. I.e. the negative prefixes are subtracted frrom the positive
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
    Hinden, R. and Deering, S.,
    "Internet Protocol Version 6 (IPv6) Addressing Architecture",
    RFC 3513, April 2003
    ([uri http://www.ietf.org/rfc/rfc3513.txt])

[list_end]

[see_also inet(3) ip(7) ipv6(7)]
[section AUTHORS]
Pat Thoyts

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph dns] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords {internet address} ip ipv4 ipv6 {rfc 3513}]
[manpage_end]







<



<
|
<
<
|
<
<
<
<
<
<
<
<

416
417
418
419
420
421
422

423
424
425

426


427








428
    Hinden, R. and Deering, S.,
    "Internet Protocol Version 6 (IPv6) Addressing Architecture",
    RFC 3513, April 2003
    ([uri http://www.ietf.org/rfc/rfc3513.txt])

[list_end]


[section AUTHORS]
Pat Thoyts


[vset CATEGORY dns]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/docstrip/docstrip.man.

1







2
3
4
5
6
7
8
[manpage_begin docstrip n 1.2]







[copyright "2003\u20132010 Lars Hellstr\u00F6m\
  <Lars dot Hellstrom at residenset dot net>"]
[moddesc {Literate programming tool}]
[titledesc {Docstrip style source code extraction}]
[category  {Documentation tools}]
[require Tcl 8.4]
[require docstrip [opt 1.2]]

>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[manpage_begin docstrip n 1.2]
[see_also docstrip_util]
[keywords .dtx]
[keywords docstrip]
[keywords documentation]
[keywords LaTeX]
[keywords {literate programming}]
[keywords source]
[copyright "2003\u20132010 Lars Hellstr\u00F6m\
  <Lars dot Hellstrom at residenset dot net>"]
[moddesc {Literate programming tool}]
[titledesc {Docstrip style source code extraction}]
[category  {Documentation tools}]
[require Tcl 8.4]
[require docstrip [opt 1.2]]
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
  [emph {The doc and shortvrb Packages}],
  [uri {http://ctan.org/tex-archive/macros/latex/base/doc.dtx}].
[enum]
  Chapter 14 of
  [emph {The LaTeX Companion}] (second edition),
  Addison-Wesley, 2004; ISBN 0-201-36299-6.
[list_end]


[section {File format}]

The basic unit [syscmd docstrip] operates on are the [emph lines] of
a master source file. Extraction consists of selecting some of these
lines to be copied from input text to output text. The basic
distinction is that between [emph {code lines}] (which are copied and







<







75
76
77
78
79
80
81

82
83
84
85
86
87
88
  [emph {The doc and shortvrb Packages}],
  [uri {http://ctan.org/tex-archive/macros/latex/base/doc.dtx}].
[enum]
  Chapter 14 of
  [emph {The LaTeX Companion}] (second edition),
  Addison-Wesley, 2004; ISBN 0-201-36299-6.
[list_end]


[section {File format}]

The basic unit [syscmd docstrip] operates on are the [emph lines] of
a master source file. Extraction consists of selecting some of these
lines to be copied from input text to output text. The basic
distinction is that between [emph {code lines}] (which are copied and
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308

The final piece of [syscmd docstrip] syntax is that extraction
stops at a line that is exactly "\endinput"; this is often used to
avoid copying random whitespace at the end of a file. In the unlikely
case that one wants such a code line, one can protect it with a
verbatim guard.


[section Commands]

The package defines two commands.

[list_begin definitions]
[call [cmd docstrip::extract] [arg text] [arg terminals] [
   opt "[arg option] [arg value] ..."







<







300
301
302
303
304
305
306

307
308
309
310
311
312
313

The final piece of [syscmd docstrip] syntax is that extraction
stops at a line that is exactly "\endinput"; this is often used to
avoid copying random whitespace at the end of a file. In the unlikely
case that one wants such a code line, one can protect it with a
verbatim guard.


[section Commands]

The package defines two commands.

[list_begin definitions]
[call [cmd docstrip::extract] [arg text] [arg terminals] [
   opt "[arg option] [arg value] ..."
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
    trimmed away before the line is processed. Defaults to true.
  [list_end]

  It should be remarked that the [arg terminals] are often called
  "options" in the context of the [syscmd docstrip] program, since
  these specify which optional code fragments should be included.


[call [cmd docstrip::sourcefrom] [arg filename] [arg terminals] [
   opt "[arg option] [arg value] ..."
]]
  The [cmd sourcefrom] command is a docstripping emulation of
  [cmd source]. It opens the file [arg filename], reads it, closes it,
  docstrips the contents as specified by the [arg terminals], and
  evaluates the result in the local context of the caller, during
  which time the [cmd info] [method script] value will be the
  [arg filename]. The options are passed on to [cmd fconfigure] to
  configure the file before its contents are read. The
  [option -metaprefix] is set to '#', all other [cmd extract]
  options have their default values.
[list_end]


[section {Document structure}]

The file format (as described above) determines whether a master
source code file can be processed correctly by [syscmd docstrip],
but the usefulness of the format is to no little part also dependent
on that the code and comment lines together constitute a well-formed







<













<







354
355
356
357
358
359
360

361
362
363
364
365
366
367
368
369
370
371
372
373

374
375
376
377
378
379
380
    trimmed away before the line is processed. Defaults to true.
  [list_end]

  It should be remarked that the [arg terminals] are often called
  "options" in the context of the [syscmd docstrip] program, since
  these specify which optional code fragments should be included.


[call [cmd docstrip::sourcefrom] [arg filename] [arg terminals] [
   opt "[arg option] [arg value] ..."
]]
  The [cmd sourcefrom] command is a docstripping emulation of
  [cmd source]. It opens the file [arg filename], reads it, closes it,
  docstrips the contents as specified by the [arg terminals], and
  evaluates the result in the local context of the caller, during
  which time the [cmd info] [method script] value will be the
  [arg filename]. The options are passed on to [cmd fconfigure] to
  configure the file before its contents are read. The
  [option -metaprefix] is set to '#', all other [cmd extract]
  options have their default values.
[list_end]


[section {Document structure}]

The file format (as described above) determines whether a master
source code file can be processed correctly by [syscmd docstrip],
but the usefulness of the format is to no little part also dependent
on that the code and comment lines together constitute a well-formed
423
424
425
426
427
428
429
430
431
432
433
434
435
436
document and as a [syscmd docstrip] master source code file.
[para]

It is not necessary to use the tclldoc document class, but that does
provide a number of features that are convenient for [file .dtx]
files containing Tcl code. More information on this matter can be
found in the references above.


[see_also docstrip_util]

[keywords documentation source {literate programming} docstrip]
[keywords LaTeX .dtx]
[manpage_end]







<
<
<
<
<
<

426
427
428
429
430
431
432






433
document and as a [syscmd docstrip] master source code file.
[para]

It is not necessary to use the tclldoc document class, but that does
provide a number of features that are convenient for [file .dtx]
files containing Tcl code. More information on this matter can be
found in the references above.






[manpage_end]

Changes to modules/docstrip/docstrip_util.man.

1















2
3
4
5
6
7
8
[manpage_begin docstrip_util n 1.3]















[copyright "2003\u20132010 Lars Hellstr\u00F6m\
  <Lars dot Hellstrom at residenset dot net>"]
[moddesc {Literate programming tool}]
[titledesc {Docstrip-related utilities}]
[category  {Documentation tools}]
[require Tcl 8.4]
[require docstrip [opt 1.2]]

>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[manpage_begin docstrip_util n 1.3]
[see_also docstrip]
[see_also doctools]
[see_also doctools_fmt]
[keywords .ddt]
[keywords catalogue]
[keywords diff]
[keywords docstrip]
[keywords doctools]
[keywords documentation]
[keywords {literate programming}]
[keywords module]
[keywords {package indexing}]
[keywords patch]
[keywords source]
[keywords {Tcl module}]
[copyright "2003\u20132010 Lars Hellstr\u00F6m\
  <Lars dot Hellstrom at residenset dot net>"]
[moddesc {Literate programming tool}]
[titledesc {Docstrip-related utilities}]
[category  {Documentation tools}]
[require Tcl 8.4]
[require docstrip [opt 1.2]]
367
368
369
370
371
372
373















374
375
376
377
378
379
380
  [list_end]

  At the time of writing, no project has employed [package doctools]
  markup in master source files, so experience of what works well is
  not available. A source file could however look as follows
[example {
% [manpage_begin gcd n 1.0]















% [moddesc {Greatest Common Divisor}]
% [require gcd [opt 1.0]]
% [description]
%
% [list_begin definitions]
% [call [cmd gcd] [arg a] [arg b]]
%   The [cmd gcd] procedure takes two arguments [arg a] and [arg b] which







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
  [list_end]

  At the time of writing, no project has employed [package doctools]
  markup in master source files, so experience of what works well is
  not available. A source file could however look as follows
[example {
% [manpage_begin gcd n 1.0]
[see_also docstrip]
[see_also doctools]
[see_also doctools_fmt]
[keywords .ddt]
[keywords catalogue]
[keywords diff]
[keywords docstrip]
[keywords doctools]
[keywords documentation]
[keywords {literate programming}]
[keywords module]
[keywords {package indexing}]
[keywords patch]
[keywords source]
[keywords {Tcl module}]
% [moddesc {Greatest Common Divisor}]
% [require gcd [opt 1.0]]
% [description]
%
% [list_begin definitions]
% [call [cmd gcd] [arg a] [arg b]]
%   The [cmd gcd] procedure takes two arguments [arg a] and [arg b] which
559
560
561
562
563
564
565
566
567
568
569
570
571
572
  the "to" file. Line numbers start at 1. The [arg lines] is a list
  with two elements for each line in the hunk; the first specifies the
  type of a line and the second is the actual line contents. The type
  is [const -] for lines only in the "from" file, [const +] for lines
  that are only in the "to" file, and [const 0] for lines that are
  in both.
[list_end]

[see_also docstrip doctools doctools_fmt]

[keywords documentation source {literate programming} docstrip]
[keywords doctools .ddt diff patch]
[keywords {package indexing} {Tcl module} module catalogue]
[manpage_end]







<
<
<
<
<
<

589
590
591
592
593
594
595






596
  the "to" file. Line numbers start at 1. The [arg lines] is a list
  with two elements for each line in the hunk; the first specifies the
  type of a line and the second is the actual line contents. The type
  is [const -] for lines only in the "from" file, [const +] for lines
  that are only in the "to" file, and [const 0] for lines that are
  in both.
[list_end]






[manpage_end]

Changes to modules/doctools/changelog.man.

1
2



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::changelog n 1.1]



[copyright {2003-2013 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Processing text in Emacs ChangeLog format}]
[category  {Documentation tools}]
[require Tcl 8.2]
[require textutil]
[require doctools::changelog [opt 1.1]]
[description]

This package provides Tcl commands for the processing and reformatting
of text in the [file ChangeLog] format generated by [syscmd emacs].


[section API]

[list_begin definitions]

[call [cmd ::doctools::changelog::scan] [arg text]]



>
>
>











<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

17
18
19
20
21
22
23
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::changelog n 1.1]
[keywords changelog]
[keywords doctools]
[keywords emacs]
[copyright {2003-2013 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Processing text in Emacs ChangeLog format}]
[category  {Documentation tools}]
[require Tcl 8.2]
[require textutil]
[require doctools::changelog [opt 1.1]]
[description]

This package provides Tcl commands for the processing and reformatting
of text in the [file ChangeLog] format generated by [syscmd emacs].


[section API]

[list_begin definitions]

[call [cmd ::doctools::changelog::scan] [arg text]]

47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
		...
	    }
	}
	{...}
    }
}]


[call [cmd ::doctools::changelog::flatten] [arg entries]]

This command converts a list of entries as generated by
[cmd change::scan] above into a simpler list of plain
text blocks each containing all the information of a
single entry.

[call [cmd ::doctools::changelog::toDoctools] [arg title] [arg module] [arg version] [arg entries]]

This command converts the pre-parsed ChangeLog [arg entries] as
generated by the command [cmd ::doctools::changelog::scan] into a
document in [term doctools] format and returns it as the result of the
command.

[para]

The other three arguments supply the information for the header of
that document which is not available from the changelog itself.


[call [cmd ::doctools::changelog::merge] [arg entries]...]

Each argument of the command is assumed to be a pre-parsed Changelog
as generated by the command [cmd ::doctools::changelog::scan]. This
command merges all of them into a single structure, and collapses
multiple entries for the same date and author into a single entry. The
new structure is returned as the result of the command.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph doctools] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[keywords changelog emacs doctools]
[manpage_end]







<



















<










<
|
<
<
|
<
<
<
<
<
<
<

49
50
51
52
53
54
55

56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74

75
76
77
78
79
80
81
82
83
84

85


86







87
		...
	    }
	}
	{...}
    }
}]


[call [cmd ::doctools::changelog::flatten] [arg entries]]

This command converts a list of entries as generated by
[cmd change::scan] above into a simpler list of plain
text blocks each containing all the information of a
single entry.

[call [cmd ::doctools::changelog::toDoctools] [arg title] [arg module] [arg version] [arg entries]]

This command converts the pre-parsed ChangeLog [arg entries] as
generated by the command [cmd ::doctools::changelog::scan] into a
document in [term doctools] format and returns it as the result of the
command.

[para]

The other three arguments supply the information for the header of
that document which is not available from the changelog itself.


[call [cmd ::doctools::changelog::merge] [arg entries]...]

Each argument of the command is assumed to be a pre-parsed Changelog
as generated by the command [cmd ::doctools::changelog::scan]. This
command merges all of them into a single structure, and collapses
multiple entries for the same date and author into a single entry. The
new structure is returned as the result of the command.

[list_end]


[vset CATEGORY doctools]


[include ../doctools2base/include/feedback.inc]







[manpage_end]

Changes to modules/doctools/cvs.man.

1
2







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::cvs n 1]







[copyright {2003-2008 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Processing text in 'cvs log' format}]
[category  {Documentation tools}]
[require Tcl 8.2]
[require textutil]
[require doctools::cvs [opt 1]]
[description]

This package provides Tcl commands for the processing and reformatting
text in the format generated by the [syscmd {cvs log}] command.

[para]

The commands [cmd ::doctools::cvs::scanLog]
and [cmd ::doctools::cvs::toChangeLog] are derived from code found on
the [uri http://wiki.tcl.tk {Tcl'ers Wiki}]. See the references at the
end of the page.


[section API]

[list_begin definitions]

[call [cmd ::doctools::cvs::scanLog] [arg text] [arg evar] [arg cvar] [arg fvar]]



>
>
>
>
>
>
>


















<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

28
29
30
31
32
33
34
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::cvs n 1]
[see_also {[uri}]
[see_also http://wiki.tcl.tk/log2changelog]
[keywords changelog]
[keywords cvs]
[keywords {cvs log}]
[keywords emacs]
[keywords log]
[copyright {2003-2008 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Processing text in 'cvs log' format}]
[category  {Documentation tools}]
[require Tcl 8.2]
[require textutil]
[require doctools::cvs [opt 1]]
[description]

This package provides Tcl commands for the processing and reformatting
text in the format generated by the [syscmd {cvs log}] command.

[para]

The commands [cmd ::doctools::cvs::scanLog]
and [cmd ::doctools::cvs::toChangeLog] are derived from code found on
the [uri http://wiki.tcl.tk {Tcl'ers Wiki}]. See the references at the
end of the page.


[section API]

[list_begin definitions]

[call [cmd ::doctools::cvs::scanLog] [arg text] [arg evar] [arg cvar] [arg fvar]]

53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109

[para]

Each item in the list is a list containing two elements, the date of
the entry, and its author, in this order. The date is formatted as
[var year]/[var month]/[var day].


[arg_def varname cvar in]

Has to refer to an array variable. Keys are strings containing the
date and author of log entries, in this order, separated by a comma.

[para]

The values are lists of comments made for the entry.


[arg_def varname fvar in]

Has to refer to an array variable. Keys are strings containing
date, author of a log entry, and a comment for that entry, in this
order, separated by commas.

[para]

The values are lists of the files the entry is touching.

[list_end]
[para]


[call [cmd ::doctools::cvs::toChangeLog] [arg evar] [arg cvar] [arg fvar]]]

The three arguments for this command are the same as the last three
arguments of the command [cmd ::doctools::cvs::scanLog]. This command
however expects them to be filled with information about one or more
logs. It takes this information and converts it into a text in the
format of a ChangeLog as accepted and generated by [syscmd emacs]. The
constructed text is returned as the result of the command.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph doctools] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[see_also [uri http://wiki.tcl.tk/log2changelog]]
[keywords changelog cvs log {cvs log} emacs]
[manpage_end]







<








<














<











<
|
<
<
|
<
<
<
<
<
<
<
<

59
60
61
62
63
64
65

66
67
68
69
70
71
72
73

74
75
76
77
78
79
80
81
82
83
84
85
86
87

88
89
90
91
92
93
94
95
96
97
98

99


100








101

[para]

Each item in the list is a list containing two elements, the date of
the entry, and its author, in this order. The date is formatted as
[var year]/[var month]/[var day].


[arg_def varname cvar in]

Has to refer to an array variable. Keys are strings containing the
date and author of log entries, in this order, separated by a comma.

[para]

The values are lists of comments made for the entry.


[arg_def varname fvar in]

Has to refer to an array variable. Keys are strings containing
date, author of a log entry, and a comment for that entry, in this
order, separated by commas.

[para]

The values are lists of the files the entry is touching.

[list_end]
[para]


[call [cmd ::doctools::cvs::toChangeLog] [arg evar] [arg cvar] [arg fvar]]]

The three arguments for this command are the same as the last three
arguments of the command [cmd ::doctools::cvs::scanLog]. This command
however expects them to be filled with information about one or more
logs. It takes this information and converts it into a text in the
format of a ChangeLog as accepted and generated by [syscmd emacs]. The
constructed text is returned as the result of the command.

[list_end]


[vset CATEGORY doctools]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/doctools/docidx.man.

1
2

















3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::idx n 1.0.4]

















[copyright {2003-2010 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {docidx - Processing indices}]
[category  {Documentation tools}]
[require Tcl 8.2]
[require doctools::idx [opt 1.0.4]]
[description]


>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::idx n 1.0.4]
[see_also docidx_intro]
[see_also docidx_lang_cmdref]
[see_also docidx_lang_intro]
[see_also docidx_lang_syntax]
[see_also docidx_plugin_apiref]
[keywords conversion]
[keywords docidx]
[keywords documentation]
[keywords HTML]
[keywords index]
[keywords {keyword index}]
[keywords latex]
[keywords manpage]
[keywords markup]
[keywords nroff]
[keywords TMML]
[keywords wiki]
[copyright {2003-2010 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {docidx - Processing indices}]
[category  {Documentation tools}]
[require Tcl 8.2]
[require doctools::idx [opt 1.0.4]]
[description]
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65

If on the other hand the reader wishes to write her own formatting
engine for some format, i.e. is a [term {plugin writer}] then reading
and understanding the [term {docidx plugin API reference}] is an
absolute necessity, as that document specifies the interaction between
this package and its plugins, i.e. the formatting engines, in detail.


[section {PUBLIC API}]
[subsection {PACKAGE COMMANDS}]

[list_begin definitions]

[call [cmd ::doctools::idx::new] [arg objectName] [opt "[option -option] [arg value] ..."]]

This command creates a new docidx object with an associated Tcl
command whose name is [arg objectName]. This [term object] command is
explained in full detail in the sections [sectref {OBJECT COMMAND}]
and [sectref {OBJECT METHODS}]. The object command will be created
under the current namespace if the [arg objectName] is not fully
qualified, and in the specified namespace otherwise.

[para]

The options and their values coming after the name of the object are
used to set the initial configuration of the object.


[call [cmd ::doctools::idx::help]]

This is a convenience command for applications wishing to provide
their user with a short description of the available formatting
commands and their meanings. It returns a string containing a standard
help text.


[call [cmd ::doctools::idx::search] [arg path]]

Whenever an object created by this the package has to map the name of
a format to the file containing the code for its formatting engine it
will search for the file in a number of directories stored in a
list. See section [sectref {FORMAT MAPPING}] for more explanations.







<



















<






<







41
42
43
44
45
46
47

48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66

67
68
69
70
71
72

73
74
75
76
77
78
79

If on the other hand the reader wishes to write her own formatting
engine for some format, i.e. is a [term {plugin writer}] then reading
and understanding the [term {docidx plugin API reference}] is an
absolute necessity, as that document specifies the interaction between
this package and its plugins, i.e. the formatting engines, in detail.


[section {PUBLIC API}]
[subsection {PACKAGE COMMANDS}]

[list_begin definitions]

[call [cmd ::doctools::idx::new] [arg objectName] [opt "[option -option] [arg value] ..."]]

This command creates a new docidx object with an associated Tcl
command whose name is [arg objectName]. This [term object] command is
explained in full detail in the sections [sectref {OBJECT COMMAND}]
and [sectref {OBJECT METHODS}]. The object command will be created
under the current namespace if the [arg objectName] is not fully
qualified, and in the specified namespace otherwise.

[para]

The options and their values coming after the name of the object are
used to set the initial configuration of the object.


[call [cmd ::doctools::idx::help]]

This is a convenience command for applications wishing to provide
their user with a short description of the available formatting
commands and their meanings. It returns a string containing a standard
help text.


[call [cmd ::doctools::idx::search] [arg path]]

Whenever an object created by this the package has to map the name of
a format to the file containing the code for its formatting engine it
will search for the file in a number of directories stored in a
list. See section [sectref {FORMAT MAPPING}] for more explanations.
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
[para]

An error will be thrown if the [arg path] either does not exist, is
not a directory, or is not readable.

[list_end]


[subsection {OBJECT COMMAND}]

All commands created by [cmd ::doctools::idx::new] have the following
general form and may be used to invoke various operations on their
docidx converter object.

[list_begin definitions]

[call [cmd objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the exact
behavior of the command. See section [sectref {OBJECT METHODS}] for
the detailed specifications.

[list_end]


[subsection {OBJECT METHODS}]

[list_begin definitions]

[call [arg objectName] [method configure]]

The method returns a list of all known options and their current
values when called without any arguments.


[call [arg objectName] [method configure] [arg option]]

The method behaves like the method [method cget] when called with a
single argument and returns the value of the option specified by said
argument.


[call [arg objectName] [method configure] [option -option] [arg value]...]

The method reconfigures the specified [option option]s of the object,
setting them to the associated [arg value]s, when called with an even
number of arguments, at least two.

[para]

The legal options are described in the section
[sectref {OBJECT CONFIGURATION}].


[call [arg objectName] [method cget] [option -option]]

This method expects a legal configuration option as argument and will
return the current value of that option for the object the method was
invoked for.

[para]

The legal configuration options are described in section
[sectref {OBJECT CONFIGURATION}].


[call [arg objectName] [method destroy]]

This method destroys the object it is invoked for.


[call [arg objectName] [method format] [arg text]]

This method runs the [arg text] through the configured formatting
engine and returns the generated string as its result. An error will
be thrown if no [option -format] was configured for the object.

[para]

The method assumes that the [arg text] is in [term docidx] format as
specified in the companion document [term docidx_fmt]. Errors will be
thrown otherwise.


[call [arg objectName] [method map] [arg symbolic] [arg actual]]

This methods add one entry to the per-object mapping from
[arg symbolic] filenames to the [arg actual] uris.

The object just stores this mapping and makes it available to the
configured formatting engine through the command [cmd dt_fmap].

This command is described in more detail in the
[term {docidx plugin API reference}] which specifies the interaction
between the objects created by this package and index formatting
engines.


[call [arg objectName] [method parameters]]

This method returns a list containing the names of all engine
parameters provided by the configured formatting engine. It will
return an empty list if the object is not yet configured for a
specific format.


[call [arg objectName] [method search] [arg path]]

This method extends the per-object list of paths searched for index
formatting engines. See also the command [cmd ::doctools::idx::search]
on how to extend the per-package list of paths. Note that the path
entered last will be searched first.

For more details see section [sectref {FORMAT MAPPING}].


[call [arg objectName] [method setparam] [arg name] [arg value]]

This method sets the [arg name]d engine parameter to the specified
[arg value].

It will throw an error if the object is either not yet configured for
a specific format, or if the formatting engine for the configured
format does not provide a parameter with the given [arg name].

The list of parameters provided by the configured formatting engine
can be retrieved through the method [method parameters].


[call [arg objectName] [method warnings]]

This method returns a list containing all the warnings which were
generated by the configured formatting engine during the last
invocation of the method [method format].

[list_end]


[subsection {OBJECT CONFIGURATION}]

All docidx objects understand the following configuration options:

[list_begin options]








<
















<









<





<












<











<



<












<














<






<









<













<







<







92
93
94
95
96
97
98

99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114

115
116
117
118
119
120
121
122
123

124
125
126
127
128

129
130
131
132
133
134
135
136
137
138
139
140

141
142
143
144
145
146
147
148
149
150
151

152
153
154

155
156
157
158
159
160
161
162
163
164
165
166

167
168
169
170
171
172
173
174
175
176
177
178
179
180

181
182
183
184
185
186

187
188
189
190
191
192
193
194
195

196
197
198
199
200
201
202
203
204
205
206
207
208

209
210
211
212
213
214
215

216
217
218
219
220
221
222
[para]

An error will be thrown if the [arg path] either does not exist, is
not a directory, or is not readable.

[list_end]


[subsection {OBJECT COMMAND}]

All commands created by [cmd ::doctools::idx::new] have the following
general form and may be used to invoke various operations on their
docidx converter object.

[list_begin definitions]

[call [cmd objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the exact
behavior of the command. See section [sectref {OBJECT METHODS}] for
the detailed specifications.

[list_end]


[subsection {OBJECT METHODS}]

[list_begin definitions]

[call [arg objectName] [method configure]]

The method returns a list of all known options and their current
values when called without any arguments.


[call [arg objectName] [method configure] [arg option]]

The method behaves like the method [method cget] when called with a
single argument and returns the value of the option specified by said
argument.


[call [arg objectName] [method configure] [option -option] [arg value]...]

The method reconfigures the specified [option option]s of the object,
setting them to the associated [arg value]s, when called with an even
number of arguments, at least two.

[para]

The legal options are described in the section
[sectref {OBJECT CONFIGURATION}].


[call [arg objectName] [method cget] [option -option]]

This method expects a legal configuration option as argument and will
return the current value of that option for the object the method was
invoked for.

[para]

The legal configuration options are described in section
[sectref {OBJECT CONFIGURATION}].


[call [arg objectName] [method destroy]]

This method destroys the object it is invoked for.


[call [arg objectName] [method format] [arg text]]

This method runs the [arg text] through the configured formatting
engine and returns the generated string as its result. An error will
be thrown if no [option -format] was configured for the object.

[para]

The method assumes that the [arg text] is in [term docidx] format as
specified in the companion document [term docidx_fmt]. Errors will be
thrown otherwise.


[call [arg objectName] [method map] [arg symbolic] [arg actual]]

This methods add one entry to the per-object mapping from
[arg symbolic] filenames to the [arg actual] uris.

The object just stores this mapping and makes it available to the
configured formatting engine through the command [cmd dt_fmap].

This command is described in more detail in the
[term {docidx plugin API reference}] which specifies the interaction
between the objects created by this package and index formatting
engines.


[call [arg objectName] [method parameters]]

This method returns a list containing the names of all engine
parameters provided by the configured formatting engine. It will
return an empty list if the object is not yet configured for a
specific format.


[call [arg objectName] [method search] [arg path]]

This method extends the per-object list of paths searched for index
formatting engines. See also the command [cmd ::doctools::idx::search]
on how to extend the per-package list of paths. Note that the path
entered last will be searched first.

For more details see section [sectref {FORMAT MAPPING}].


[call [arg objectName] [method setparam] [arg name] [arg value]]

This method sets the [arg name]d engine parameter to the specified
[arg value].

It will throw an error if the object is either not yet configured for
a specific format, or if the formatting engine for the configured
format does not provide a parameter with the given [arg name].

The list of parameters provided by the configured formatting engine
can be retrieved through the method [method parameters].


[call [arg objectName] [method warnings]]

This method returns a list containing all the warnings which were
generated by the configured formatting engine during the last
invocation of the method [method format].

[list_end]


[subsection {OBJECT CONFIGURATION}]

All docidx objects understand the following configuration options:

[list_begin options]

233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
The default value of this option is the empty string.

[para]

The configured formatting engine should interpret the value as the
name of the file containing the document which is currently processed.


[opt_def -format [arg text]]

The argument of this option specifies the format to generate and by
implication the formatting engine to use when converting text via the
method [method format]. Its default value is the empty string. The
method [method format] cannot be used if this option is not set to a
valid value at least once.







<







234
235
236
237
238
239
240

241
242
243
244
245
246
247
The default value of this option is the empty string.

[para]

The configured formatting engine should interpret the value as the
name of the file containing the document which is currently processed.


[opt_def -format [arg text]]

The argument of this option specifies the format to generate and by
implication the formatting engine to use when converting text via the
method [method format]. Its default value is the empty string. The
method [method format] cannot be used if this option is not set to a
valid value at least once.
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269

[para]

The section [sectref {FORMAT MAPPING}] explains in detail how the
package and object will look for engine implementations.

[list_end]


[subsection {FORMAT MAPPING}]

The package and object will perform the following algorithm when
trying to map a format name [term foo] to a file containing an
implementation of a formatting engine for [term foo]:








<







255
256
257
258
259
260
261

262
263
264
265
266
267
268

[para]

The section [sectref {FORMAT MAPPING}] explains in detail how the
package and object will look for engine implementations.

[list_end]


[subsection {FORMAT MAPPING}]

The package and object will perform the following algorithm when
trying to map a format name [term foo] to a file containing an
implementation of a formatting engine for [term foo]:

307
308
309
310
311
312
313
314
315
316
317
318
319
320
321

[enum]

The mapping fails.

[list_end]


[section {PREDEFINED ENGINES}]

The package provides predefined formatting engines for the following
formats. Some of the formatting engines support engine
parameters. These will be explicitly highlighted.

[list_begin definitions]







<







306
307
308
309
310
311
312

313
314
315
316
317
318
319

[enum]

The mapping fails.

[list_end]


[section {PREDEFINED ENGINES}]

The package provides predefined formatting engines for the following
formats. Some of the formatting engines support engine
parameters. These will be explicitly highlighted.

[list_begin definitions]
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
empty string. The value is inserted into the generated output just
after the [const <body>] tag, starting the body of the generated HTML.

[para]

This can be used to insert boilerplate header markup into the
generated document.


[def meta]

The value for this parameter has to be valid selfcontained HTML markup
for the header section of a HTML document. The default value is the
empty string. The value is inserted into the generated output just
after the [const <head>] tag, starting the header section of the







<







343
344
345
346
347
348
349

350
351
352
353
354
355
356
empty string. The value is inserted into the generated output just
after the [const <body>] tag, starting the body of the generated HTML.

[para]

This can be used to insert boilerplate header markup into the
generated document.


[def meta]

The value for this parameter has to be valid selfcontained HTML markup
for the header section of a HTML document. The default value is the
empty string. The value is inserted into the generated output just
after the [const <head>] tag, starting the header section of the
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
[def wiki]

This engine generates Wiki markup as understood by Jean Claude
Wippler's [syscmd wikit] application.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph doctools] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also docidx_intro]
[see_also docidx_lang_intro]
[see_also docidx_lang_syntax]
[see_also docidx_lang_cmdref]
[see_also docidx_plugin_apiref]
[keywords documentation manpage TMML HTML nroff conversion markup]
[keywords nroff latex wiki docidx index {keyword index}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<

395
396
397
398
399
400
401
402

403

















404
[def wiki]

This engine generates Wiki markup as understood by Jean Claude
Wippler's [syscmd wikit] application.

[list_end]

[vset CATEGORY doctools]

[include ../doctools2base/include/feedback.inc]

















[manpage_end]

Changes to modules/doctools/docidx_intro.man.

1
2












3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin docidx_intro n 1.0]












[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {docidx introduction}]
[category  {Documentation tools}]
[description]
[para]



>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin docidx_intro n 1.0]
[see_also docidx_lang_cmdref]
[see_also docidx_lang_faq]
[see_also docidx_lang_intro]
[see_also docidx_lang_syntax]
[see_also docidx_plugin_apiref]
[see_also doctoc_intro]
[see_also doctools::idx]
[see_also doctools_intro]
[keywords index]
[keywords {keyword index}]
[keywords markup]
[keywords {semantic markup}]
[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {docidx introduction}]
[category  {Documentation tools}]
[description]
[para]

85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
of [term {tables of contents}], and general documentation,
respectively.

They are described in their own sets of documents, starting at the
[term {doctoc introduction}] and the [term {doctools introduction}],
respectively.


[section {BUGS, IDEAS, FEEDBACK}]

This document, will undoubtedly contain bugs and other problems.

Please report such in the category [emph doctools] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have.

[see_also docidx_lang_intro]
[see_also docidx_lang_syntax]
[see_also docidx_lang_cmdref]
[see_also docidx_lang_faq]
[see_also doctools::idx]
[see_also docidx_plugin_apiref]
[see_also doctools_intro]
[see_also doctoc_intro]
[keywords markup {semantic markup}]
[keywords index {keyword index}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<

97
98
99
100
101
102
103
104

105

















106
of [term {tables of contents}], and general documentation,
respectively.

They are described in their own sets of documents, starting at the
[term {doctoc introduction}] and the [term {doctools introduction}],
respectively.

[vset CATEGORY doctools]

[include ../doctools2base/include/feedback.inc]

















[manpage_end]

Changes to modules/doctools/docidx_lang_cmdref.man.

1
2









3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin docidx_lang_cmdref n 1.0]









[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {docidx language command reference}]
[category  {Documentation tools}]
[description]
[para]

This document specifies both names and syntax of all the commands
which together are the docidx markup language, version 1.

As this document is intended to be a reference the commands are listed
in alphabetical order, and the descriptions are relatively short.

A beginner should read the much more informally written
[term {docidx language introduction}] first.


[section Commands]
[list_begin definitions]

[call [cmd comment] [arg plaintext]]

Index markup. The argument text is marked up as a comment standing


>
>
>
>
>
>
>
>
>















<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

27
28
29
30
31
32
33
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin docidx_lang_cmdref n 1.0]
[see_also docidx_intro]
[see_also docidx_lang_faq]
[see_also docidx_lang_intro]
[see_also docidx_lang_syntax]
[keywords {docidx commands}]
[keywords {docidx language}]
[keywords {docidx markup}]
[keywords markup]
[keywords {semantic markup}]
[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {docidx language command reference}]
[category  {Documentation tools}]
[description]
[para]

This document specifies both names and syntax of all the commands
which together are the docidx markup language, version 1.

As this document is intended to be a reference the commands are listed
in alphabetical order, and the descriptions are relatively short.

A beginner should read the much more informally written
[term {docidx language introduction}] first.


[section Commands]
[list_begin definitions]

[call [cmd comment] [arg plaintext]]

Index markup. The argument text is marked up as a comment standing
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
[call [cmd vset] [arg varname]]

Templating. In this form the command is replaced by the value of the
named document variable

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph doctools] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[see_also docidx_intro]
[see_also docidx_lang_intro]
[see_also docidx_lang_syntax]
[see_also docidx_lang_faq]
[keywords markup {semantic markup}]
[keywords {docidx markup} {docidx language} {docidx commands}]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<
<
<
<
<

107
108
109
110
111
112
113

114


115












116
[call [cmd vset] [arg varname]]

Templating. In this form the command is replaced by the value of the
named document variable

[list_end]


[vset CATEGORY doctools]


[include ../doctools2base/include/feedback.inc]












[manpage_end]

Changes to modules/doctools/docidx_lang_faq.man.

1
2











3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin docidx_lang_faq n 1.0]











[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {docidx language faq}]
[category  {Documentation tools}]
[description]
[para]

[section OVERVIEW]

[subsection {What is this document?}]

This document is currently mainly a placeholder, to be filled with
commonly asked questions about the docidx markup language and
companions, and their answers.

[para]

Please report any questions (and, if possible, answers) we should
consider for this document in the category [emph doctools] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

[section EXAMPLES]

[subsection {Where do I find docidx examples?}]

We have no direct examples of documents written using docidx
markup. However the doctools processor [syscmd dtplite] does generate
keyword indices when processing a set of documents written in doctools
markup. The intermediate files use docidx markup and are not deleted
when generation completes. These files can therefore serve as
examples.

[para]

[syscmd dtplite] is distributed as part of Tcllib, so to get it you
need one of

[list_begin enumerated]

[enum]
A CVS snapshot of Tcllib. How to retrieve such a snapshot and the
tools required for this are described at
[uri http://sourceforge.net/cvs/?group_id=12883]

[enum]
A Tcllib release archive. They are available at
[uri http://sourceforge.net/project/showfiles.php?group_id=12883]

[list_end]



[section {BUGS, IDEAS, FEEDBACK}]

This document, will undoubtedly contain bugs and other problems.

Please report any such in the category [emph doctools] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
the package and/or the documentation.

[see_also docidx_lang_intro]
[see_also docidx_lang_syntax]
[see_also docidx_lang_cmdref]
[keywords examples faq markup {semantic markup}]
[keywords {docidx markup} {docidx language}]
[keywords {docidx syntax} {docidx commands}]
[manpage_end]


>
>
>
>
>
>
>
>
>
>
>





|



<
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
|

<
|
<
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

23



















24
25

26


27































28
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin docidx_lang_faq n 1.0]
[see_also docidx_lang_cmdref]
[see_also docidx_lang_intro]
[see_also docidx_lang_syntax]
[keywords {docidx commands}]
[keywords {docidx language}]
[keywords {docidx markup}]
[keywords {docidx syntax}]
[keywords examples]
[keywords faq]
[keywords markup]
[keywords {semantic markup}]
[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {docidx language faq}]
[category  {Documentation tools}]
[description]
[vset theformat docidx]

[section OVERVIEW]


[include include/placeholder.inc]



















[include include/examples.inc]


[vset CATEGORY doctools]


[include ../doctools2base/include/feedback.inc]































[manpage_end]

Changes to modules/doctools/docidx_lang_intro.man.

1
2









3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin docidx_lang_intro n 1.0]









[copyright {2007-2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {docidx language introduction}]
[category  {Documentation tools}]
[description]
[para]



>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin docidx_lang_intro n 1.0]
[see_also docidx_intro]
[see_also docidx_lang_cmdref]
[see_also docidx_lang_syntax]
[keywords {docidx commands}]
[keywords {docidx language}]
[keywords {docidx markup}]
[keywords {docidx syntax}]
[keywords markup]
[keywords {semantic markup}]
[copyright {2007-2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {docidx language introduction}]
[category  {Documentation tools}]
[description]
[para]

109
110
111
112
113
114
115
116
117
118
119
120
121
122
123

The other command to insert references is [cmd url]. In contrast to
[cmd manpage] it uses explicit (possibly format-specific) urls to
describe the location of the referenced document. As such this command
is intended for the creation of references to external documents which
could not be handled in any other way.


[subsection {Advanced structure}]

In all previous examples we fudged a bit regarding the markup actually
allowed to be used before the [cmd index_begin] command opening the
document.

[para]







<







118
119
120
121
122
123
124

125
126
127
128
129
130
131

The other command to insert references is [cmd url]. In contrast to
[cmd manpage] it uses explicit (possibly format-specific) urls to
describe the location of the referenced document. As such this command
is intended for the creation of references to external documents which
could not be handled in any other way.


[subsection {Advanced structure}]

In all previous examples we fudged a bit regarding the markup actually
allowed to be used before the [cmd index_begin] command opening the
document.

[para]
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163

The only restriction [cmd include] has to obey is that the contents of
the included file must be valid at the place of the inclusion. I.e. a
file included before [cmd index_begin] may contain only the templating
commands [cmd vset] and [cmd include], a file included after a key
may contain only manape or url references, and other keys, etc.


[subsection Escapes]

Beyond the 6 commands shown so far we have two more available.

However their function is not the marking up of index structure, but
the insertion of characters, namely [const [lb]] and [const [rb]].








<







157
158
159
160
161
162
163

164
165
166
167
168
169
170

The only restriction [cmd include] has to obey is that the contents of
the included file must be valid at the place of the inclusion. I.e. a
file included before [cmd index_begin] may contain only the templating
commands [cmd vset] and [cmd include], a file included after a key
may contain only manape or url references, and other keys, etc.


[subsection Escapes]

Beyond the 6 commands shown so far we have two more available.

However their function is not the marking up of index structure, but
the insertion of characters, namely [const [lb]] and [const [rb]].

173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
[example_begin]
  ...
  These commands, [lb]cmd lb[rb] and [lb]cmd lb[rb] respectively, are required
  because our use of [lb][cmd lb][rb] and [lb][cmd rb][rb] to bracket markup commands makes it
  impossible to directly use [lb][cmd lb][rb] and [lb][cmd rb][rb] within the text.
  ...
[example_end]


[section {FURTHER READING}]

Now that this document has been digested the reader, assumed to be a
[term writer] of documentation should be fortified enough to be able
to understand the formal [term {docidx language syntax}]
specification as well. From here on out the







<







180
181
182
183
184
185
186

187
188
189
190
191
192
193
[example_begin]
  ...
  These commands, [lb]cmd lb[rb] and [lb]cmd lb[rb] respectively, are required
  because our use of [lb][cmd lb][rb] and [lb][cmd rb][rb] to bracket markup commands makes it
  impossible to directly use [lb][cmd lb][rb] and [lb][cmd rb][rb] within the text.
  ...
[example_end]


[section {FURTHER READING}]

Now that this document has been digested the reader, assumed to be a
[term writer] of documentation should be fortified enough to be able
to understand the formal [term {docidx language syntax}]
specification as well. From here on out the
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222

On the other hand, docidx is perfectly suited for the automatic
generation from doctools documents, and this is the route Tcllib's
easy and simple [syscmd dtplite] goes, creating an index for a set of
documents behind the scenes, without the writer having to do so on
their own.


[section {BUGS, IDEAS, FEEDBACK}]

This document, will undoubtedly contain bugs and other problems.

Please report such in the category [emph doctools] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have.

[see_also docidx_intro]
[see_also docidx_lang_syntax]
[see_also docidx_lang_cmdref]
[keywords markup {semantic markup}]
[keywords {docidx markup} {docidx language}]
[keywords {docidx syntax} {docidx commands}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<

205
206
207
208
209
210
211
212

213













214

On the other hand, docidx is perfectly suited for the automatic
generation from doctools documents, and this is the route Tcllib's
easy and simple [syscmd dtplite] goes, creating an index for a set of
documents behind the scenes, without the writer having to do so on
their own.

[vset CATEGORY doctools]

[include ../doctools2base/include/feedback.inc]













[manpage_end]

Changes to modules/doctools/docidx_lang_syntax.man.

1
2










3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin docidx_lang_syntax n 1.0]










[copyright {2007-2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {docidx language syntax}]
[category  {Documentation tools}]
[description]
[para]

This document contains the formal specification of the syntax of the
docidx markup language, version 1 in Backus-Naur-Form. This document
is intended to be a reference, complementing the
[term {docidx language command reference}].

A beginner should read the much more informally written
[term {docidx language introduction}] first before trying to
understand either this document or the command reference.


[section Fundamentals]

In the broadest terms possible the [term {docidx markup language}] is
like SGML and similar languages. A document written in this language
consists primarily of markup commands, with text embedded into it at
some places.


>
>
>
>
>
>
>
>
>
>















<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

28
29
30
31
32
33
34
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin docidx_lang_syntax n 1.0]
[see_also docidx_intro]
[see_also docidx_lang_cmdref]
[see_also docidx_lang_faq]
[see_also docidx_lang_intro]
[keywords {docidx commands}]
[keywords {docidx language}]
[keywords {docidx markup}]
[keywords {docidx syntax}]
[keywords markup]
[keywords {semantic markup}]
[copyright {2007-2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {docidx language syntax}]
[category  {Documentation tools}]
[description]
[para]

This document contains the formal specification of the syntax of the
docidx markup language, version 1 in Backus-Naur-Form. This document
is intended to be a reference, complementing the
[term {docidx language command reference}].

A beginner should read the much more informally written
[term {docidx language introduction}] first before trying to
understand either this document or the command reference.


[section Fundamentals]

In the broadest terms possible the [term {docidx markup language}] is
like SGML and similar languages. A document written in this language
consists primarily of markup commands, with text embedded into it at
some places.
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
[section Syntax]

The rules listed here specify only the syntax of docidx documents. The
lexical level of the language was covered in the previous section.

[para]

Regarding the syntax of the (E)BNF itself 

[list_begin enumerated]
[enum]
The construct { X } stands for zero or more occurrences of X.
[enum]
The construct [lb] X [rb] stands for zero or one occurrence of X.
[list_end]

The syntax:

[example {
index     = defs
            INDEX_BEGIN
            [ contents ]
            INDEX_END  
            { <WHITE> }

defs      = { INCLUDE | VSET | <WHITE> }
contents  = keyword { keyword }

keyword   = defs KEY ref { ref }
ref       = MANPAGE | URL | defs







|














|







68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
[section Syntax]

The rules listed here specify only the syntax of docidx documents. The
lexical level of the language was covered in the previous section.

[para]

Regarding the syntax of the (E)BNF itself

[list_begin enumerated]
[enum]
The construct { X } stands for zero or more occurrences of X.
[enum]
The construct [lb] X [rb] stands for zero or one occurrence of X.
[list_end]

The syntax:

[example {
index     = defs
            INDEX_BEGIN
            [ contents ]
            INDEX_END
            { <WHITE> }

defs      = { INCLUDE | VSET | <WHITE> }
contents  = keyword { keyword }

keyword   = defs KEY ref { ref }
ref       = MANPAGE | URL | defs
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
[enum][cmd lb],
[enum][cmd rb], or
[enum][cmd vset] (1-argument form).
[list_end]

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, will undoubtedly contain bugs and other problems.

Please report such in the category [emph doctools] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have.

[see_also docidx_intro]
[see_also docidx_lang_intro]
[see_also docidx_lang_cmdref]
[see_also docidx_lang_faq]
[keywords markup {semantic markup}]
[keywords {docidx markup} {docidx language}]
[keywords {docidx syntax} {docidx commands}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<

111
112
113
114
115
116
117
118

119














120
[enum][cmd lb],
[enum][cmd rb], or
[enum][cmd vset] (1-argument form).
[list_end]

[list_end]

[vset CATEGORY doctools]

[include ../doctools2base/include/feedback.inc]














[manpage_end]

Changes to modules/doctools/docidx_plugin_apiref.man.

1
2













3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin docidx_plugin_apiref n 1.0]













[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {docidx plugin API reference}]
[category  {Documentation tools}]
[description]
[para]



>
>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin docidx_plugin_apiref n 1.0]
[see_also docidx_intro]
[see_also docidx_lang_cmdref]
[see_also docidx_lang_faq]
[see_also docidx_lang_intro]
[see_also docidx_lang_syntax]
[see_also doctools::idx]
[keywords {formatting engine}]
[keywords index]
[keywords {index formatter}]
[keywords keywords]
[keywords markup]
[keywords plugin]
[keywords {semantic markup}]
[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {docidx plugin API reference}]
[category  {Documentation tools}]
[description]
[para]

26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
A reader who is on the other hand more interested in the markup
language itself should start with the

[term {docidx language introduction}] and proceed from there to the
formal specifications, i.e. the [term {docidx language syntax}] and
the [term {docidx language command reference}].



[section OVERVIEW]

The API for an index formatting engine consists of two major sections.

[para]

On the one side we have a set of commands through which the plugin is
able to query the frontend. These commands are provided by the
frontend and linked into the plugin interpreter. Please see section
[sectref {FRONTEND COMMANDS}] for their detailed specification.

[para]

And on the other side the plugin has to provide its own set of
commands which will then be called by the frontend in a specific
sequence while processing input. They, again, fall into two
categories, management and formatting.

Please see section [sectref {PLUGIN COMMANDS}] and its subsections for
their detailed specification.



[section {FRONTEND COMMANDS}]

This section specifies the set of commands through which a plugin,
also known as an index formatting engine, is able to query the
frontend. These commands are provided by the frontend and linked into
the plugin interpreter.







<
<




















<
<







39
40
41
42
43
44
45


46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65


66
67
68
69
70
71
72
A reader who is on the other hand more interested in the markup
language itself should start with the

[term {docidx language introduction}] and proceed from there to the
formal specifications, i.e. the [term {docidx language syntax}] and
the [term {docidx language command reference}].



[section OVERVIEW]

The API for an index formatting engine consists of two major sections.

[para]

On the one side we have a set of commands through which the plugin is
able to query the frontend. These commands are provided by the
frontend and linked into the plugin interpreter. Please see section
[sectref {FRONTEND COMMANDS}] for their detailed specification.

[para]

And on the other side the plugin has to provide its own set of
commands which will then be called by the frontend in a specific
sequence while processing input. They, again, fall into two
categories, management and formatting.

Please see section [sectref {PLUGIN COMMANDS}] and its subsections for
their detailed specification.



[section {FRONTEND COMMANDS}]

This section specifies the set of commands through which a plugin,
also known as an index formatting engine, is able to query the
frontend. These commands are provided by the frontend and linked into
the plugin interpreter.
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
Returns the current value of the right macro expansion bracket; this
is for use as or within a macro, when the bracket needs to be included
in the output text.  If [arg newbracket] is specified, it becomes the
new bracket, and is returned.

[list_end]



[section {PLUGIN COMMANDS}]

The plugin has to provide its own set of commands which will then be
called by the frontend in a specific sequence while processing
input. They fall into two categories, management and formatting. Their
expected names, signatures, and responsibilities are specified in the
following two subsections.



[subsection {Management commands}]

The management commands a plugin has to provide are used by the
frontend to

[list_begin enumerated]







<
<







<
<







172
173
174
175
176
177
178


179
180
181
182
183
184
185


186
187
188
189
190
191
192
Returns the current value of the right macro expansion bracket; this
is for use as or within a macro, when the bracket needs to be included
in the output text.  If [arg newbracket] is specified, it becomes the
new bracket, and is returned.

[list_end]



[section {PLUGIN COMMANDS}]

The plugin has to provide its own set of commands which will then be
called by the frontend in a specific sequence while processing
input. They fall into two categories, management and formatting. Their
expected names, signatures, and responsibilities are specified in the
following two subsections.



[subsection {Management commands}]

The management commands a plugin has to provide are used by the
frontend to

[list_begin enumerated]
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
the first command of that run. Note that a run is not a pass, but may
consist of multiple passes.

It has to initialize the general state of the plugin, beyond the
initialization done during the load. No return value is expected, and
any returned value is ignored.


[call [cmd idx_listvariables]]
[emph Initialization/Shutdown] and [emph {Engine parameters}].

Second command is called after the plugin code has been loaded,
i.e. immediately after [cmd idx_numpasses].

It has to return a list containing the names of the parameters the
frontend can set to configure the engine. This list can be empty.


[call [cmd idx_numpasses]]
[emph Initialization/Shutdown] and [emph {Pass management}].

First command called after the plugin code has been loaded. No other
command of the engine will be called before it.

It has to return the number of passes this engine requires to fully
process the input document. This value has to be an integer number
greater or equal to one.


[call [cmd idx_postprocess] [arg text]]
[emph Initialization/Shutdown].

This command is called immediately after the last pass in a run. Its
argument is the result of the conversion generated by that pass. It is
provided to allow the engine to perform any global modifications of
the generated document. If no post-processing is required for a
specific format the command has to just return the argument.

[para]

Expected to return a value, the final result of formatting the input.


[call [cmd idx_setup] [arg n]]
[emph Initialization/Shutdown] and [emph {Pass management}].

This command is called at the beginning of each pass over the input in
a run. Its argument is the number of the pass which has begun. Passes
are counted from [const 1] upward.

The command has to set up the internal state of the plugin for this
particular pass. No return value is expected, and any returned value
is ignored.


[call [cmd idx_shutdown]]
[emph Initialization/Shutdown].

This command is called at the end of every conversion run. It is the
last command called in a run. It has to clean up of all the
run-specific state in the plugin.

After the call the engine has to be in a state which allows the
initiation of another run without fear that information from the last
run is leaked into this new run.

No return value is expected, and any returned value is ignored.


[call [cmd idx_varset] [arg varname] [arg text]]
[emph {Engine parameters}].

This command is called by the frontend to set an engine parameter to a
particular value.








<








<










<














<










<













<







277
278
279
280
281
282
283

284
285
286
287
288
289
290
291

292
293
294
295
296
297
298
299
300
301

302
303
304
305
306
307
308
309
310
311
312
313
314
315

316
317
318
319
320
321
322
323
324
325

326
327
328
329
330
331
332
333
334
335
336
337
338

339
340
341
342
343
344
345
the first command of that run. Note that a run is not a pass, but may
consist of multiple passes.

It has to initialize the general state of the plugin, beyond the
initialization done during the load. No return value is expected, and
any returned value is ignored.


[call [cmd idx_listvariables]]
[emph Initialization/Shutdown] and [emph {Engine parameters}].

Second command is called after the plugin code has been loaded,
i.e. immediately after [cmd idx_numpasses].

It has to return a list containing the names of the parameters the
frontend can set to configure the engine. This list can be empty.


[call [cmd idx_numpasses]]
[emph Initialization/Shutdown] and [emph {Pass management}].

First command called after the plugin code has been loaded. No other
command of the engine will be called before it.

It has to return the number of passes this engine requires to fully
process the input document. This value has to be an integer number
greater or equal to one.


[call [cmd idx_postprocess] [arg text]]
[emph Initialization/Shutdown].

This command is called immediately after the last pass in a run. Its
argument is the result of the conversion generated by that pass. It is
provided to allow the engine to perform any global modifications of
the generated document. If no post-processing is required for a
specific format the command has to just return the argument.

[para]

Expected to return a value, the final result of formatting the input.


[call [cmd idx_setup] [arg n]]
[emph Initialization/Shutdown] and [emph {Pass management}].

This command is called at the beginning of each pass over the input in
a run. Its argument is the number of the pass which has begun. Passes
are counted from [const 1] upward.

The command has to set up the internal state of the plugin for this
particular pass. No return value is expected, and any returned value
is ignored.


[call [cmd idx_shutdown]]
[emph Initialization/Shutdown].

This command is called at the end of every conversion run. It is the
last command called in a run. It has to clean up of all the
run-specific state in the plugin.

After the call the engine has to be in a state which allows the
initiation of another run without fear that information from the last
run is leaked into this new run.

No return value is expected, and any returned value is ignored.


[call [cmd idx_varset] [arg varname] [arg text]]
[emph {Engine parameters}].

This command is called by the frontend to set an engine parameter to a
particular value.

355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370

[para]

The values of all engine parameters have to persist between passes and
runs.

[list_end]



[subsection {Formatting commands}]

The formatting commands have to implement the formatting for the
output format, for all the markup commands of the docidx markup
language, except [cmd lb], [cmd rb], [cmd vset], [cmd include], and
[cmd comment]. These exceptions are processed by the frontend and are







<
<







354
355
356
357
358
359
360


361
362
363
364
365
366
367

[para]

The values of all engine parameters have to persist between passes and
runs.

[list_end]



[subsection {Formatting commands}]

The formatting commands have to implement the formatting for the
output format, for all the markup commands of the docidx markup
language, except [cmd lb], [cmd rb], [cmd vset], [cmd include], and
[cmd comment]. These exceptions are processed by the frontend and are
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441

[para] The formatted text is expected as the result of the command,
and added to the output. If no special processing is required it has
to simply return its argument without change.

[list_end]



[section {BUGS, IDEAS, FEEDBACK}]

This document, will undoubtedly contain bugs and other problems.

Please report such in the category [emph doctools] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have.

[see_also docidx_intro]
[see_also docidx_lang_intro]
[see_also docidx_lang_syntax]
[see_also docidx_lang_cmdref]
[see_also docidx_lang_faq]
[see_also doctools::idx]
[keywords markup {semantic markup} plugin keywords index]
[keywords {formatting engine} {index formatter}]
[manpage_end]







|
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<

412
413
414
415
416
417
418
419
420

















421

[para] The formatted text is expected as the result of the command,
and added to the output. If no special processing is required it has
to simply return its argument without change.

[list_end]

[vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]

















[manpage_end]

Changes to modules/doctools/doctoc.man.

1
2

















3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::toc n 1.1.3]

















[copyright {2003-2010 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctoc - Processing tables of contents}]
[category  {Documentation tools}]
[require Tcl 8.2]
[require doctools::toc [opt 1.1.3]]
[description]


>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::toc n 1.1.3]
[see_also doctoc_intro]
[see_also doctoc_lang_cmdref]
[see_also doctoc_lang_intro]
[see_also doctoc_lang_syntax]
[see_also doctoc_plugin_apiref]
[keywords conversion]
[keywords doctoc]
[keywords documentation]
[keywords HTML]
[keywords latex]
[keywords manpage]
[keywords markup]
[keywords nroff]
[keywords {table of contents}]
[keywords TMML]
[keywords toc]
[keywords wiki]
[copyright {2003-2010 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctoc - Processing tables of contents}]
[category  {Documentation tools}]
[require Tcl 8.2]
[require doctools::toc [opt 1.1.3]]
[description]
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65

If on the other hand the reader wishes to write her own formatting
engine for some format, i.e. is a [term {plugin writer}] then reading
and understanding the [term {doctoc plugin API reference}] is an
absolute necessity, as that document specifies the interaction between
this package and its plugins, i.e. the formatting engines, in detail.


[section {PUBLIC API}]
[subsection {PACKAGE COMMANDS}]

[list_begin definitions]

[call [cmd ::doctools::toc::new] [arg objectName] [opt "[option -option] [arg value] ..."]]

This command creates a new doctoc object with an associated Tcl
command whose name is [arg objectName]. This [term object] command is
explained in full detail in the sections [sectref {OBJECT COMMAND}]
and [sectref {OBJECT METHODS}]. The object command will be created
under the current namespace if the [arg objectName] is not fully
qualified, and in the specified namespace otherwise.

[para]

The options and their values coming after the name of the object are
used to set the initial configuration of the object.


[call [cmd ::doctools::toc::help]]

This is a convenience command for applications wishing to provide
their user with a short description of the available formatting
commands and their meanings. It returns a string containing a standard
help text.


[call [cmd ::doctools::toc::search] [arg path]]

Whenever an object created by this the package has to map the name of
a format to the file containing the code for its formatting engine it
will search for the file in a number of directories stored in a
list. See section [sectref {FORMAT MAPPING}] for more explanations.







<



















<






<







41
42
43
44
45
46
47

48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66

67
68
69
70
71
72

73
74
75
76
77
78
79

If on the other hand the reader wishes to write her own formatting
engine for some format, i.e. is a [term {plugin writer}] then reading
and understanding the [term {doctoc plugin API reference}] is an
absolute necessity, as that document specifies the interaction between
this package and its plugins, i.e. the formatting engines, in detail.


[section {PUBLIC API}]
[subsection {PACKAGE COMMANDS}]

[list_begin definitions]

[call [cmd ::doctools::toc::new] [arg objectName] [opt "[option -option] [arg value] ..."]]

This command creates a new doctoc object with an associated Tcl
command whose name is [arg objectName]. This [term object] command is
explained in full detail in the sections [sectref {OBJECT COMMAND}]
and [sectref {OBJECT METHODS}]. The object command will be created
under the current namespace if the [arg objectName] is not fully
qualified, and in the specified namespace otherwise.

[para]

The options and their values coming after the name of the object are
used to set the initial configuration of the object.


[call [cmd ::doctools::toc::help]]

This is a convenience command for applications wishing to provide
their user with a short description of the available formatting
commands and their meanings. It returns a string containing a standard
help text.


[call [cmd ::doctools::toc::search] [arg path]]

Whenever an object created by this the package has to map the name of
a format to the file containing the code for its formatting engine it
will search for the file in a number of directories stored in a
list. See section [sectref {FORMAT MAPPING}] for more explanations.
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
[para]

An error will be thrown if the [arg path] either does not exist, is
not a directory, or is not readable.

[list_end]


[subsection {OBJECT COMMAND}]

All commands created by [cmd ::doctools::toc::new] have the following
general form and may be used to invoke various operations on their
doctoc converter object.

[list_begin definitions]

[call [cmd objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the exact
behavior of the command. See section [sectref {OBJECT METHODS}] for
the detailed specifications.

[list_end]


[subsection {OBJECT METHODS}]

[list_begin definitions]

[call [arg objectName] [method configure]]

The method returns a list of all known options and their current
values when called without any arguments.


[call [arg objectName] [method configure] [arg option]]

The method behaves like the method [method cget] when called with a
single argument and returns the value of the option specified by said
argument.


[call [arg objectName] [method configure] [option -option] [arg value]...]

The method reconfigures the specified [option option]s of the object,
setting them to the associated [arg value]s, when called with an even
number of arguments, at least two.

[para]

The legal options are described in the section
[sectref {OBJECT CONFIGURATION}].


[call [arg objectName] [method cget] [option -option]]

This method expects a legal configuration option as argument and will
return the current value of that option for the object the method was
invoked for.

[para]

The legal configuration options are described in section
[sectref {OBJECT CONFIGURATION}].


[call [arg objectName] [method destroy]]

This method destroys the object it is invoked for.


[call [arg objectName] [method format] [arg text]]

This method runs the [arg text] through the configured formatting
engine and returns the generated string as its result. An error will
be thrown if no [option -format] was configured for the object.

[para]

The method assumes that the [arg text] is in [term doctoc] format as
specified in the companion document [term doctoc_fmt]. Errors will be
thrown otherwise.


[call [arg objectName] [method map] [arg symbolic] [arg actual]]

This methods add one entry to the per-object mapping from
[arg symbolic] filenames to the [arg actual] uris.

The object just stores this mapping and makes it available to the
configured formatting engine through the command [cmd dt_fmap].

This command is described in more detail in the
[term {doctoc plugin API reference}] which specifies the interaction
between the objects created by this package and toc formatting
engines.


[call [arg objectName] [method parameters]]

This method returns a list containing the names of all engine
parameters provided by the configured formatting engine. It will
return an empty list if the object is not yet configured for a
specific format.


[call [arg objectName] [method search] [arg path]]

This method extends the per-object list of paths searched for toc
formatting engines. See also the command [cmd ::doctools::toc::search]
on how to extend the per-package list of paths. Note that the path
entered last will be searched first.

For more details see section [sectref {FORMAT MAPPING}].


[call [arg objectName] [method setparam] [arg name] [arg value]]

This method sets the [arg name]d engine parameter to the specified
[arg value].

It will throw an error if the object is either not yet configured for
a specific format, or if the formatting engine for the configured
format does not provide a parameter with the given [arg name].

The list of parameters provided by the configured formatting engine
can be retrieved through the method [method parameters].


[call [arg objectName] [method warnings]]

This method returns a list containing all the warnings which were
generated by the configured formatting engine during the last
invocation of the method [method format].

[list_end]


[subsection {OBJECT CONFIGURATION}]

All doctoc objects understand the following configuration options:

[list_begin options]








<
















<









<





<












<











<



<












<














<






<









<













<







<







92
93
94
95
96
97
98

99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114

115
116
117
118
119
120
121
122
123

124
125
126
127
128

129
130
131
132
133
134
135
136
137
138
139
140

141
142
143
144
145
146
147
148
149
150
151

152
153
154

155
156
157
158
159
160
161
162
163
164
165
166

167
168
169
170
171
172
173
174
175
176
177
178
179
180

181
182
183
184
185
186

187
188
189
190
191
192
193
194
195

196
197
198
199
200
201
202
203
204
205
206
207
208

209
210
211
212
213
214
215

216
217
218
219
220
221
222
[para]

An error will be thrown if the [arg path] either does not exist, is
not a directory, or is not readable.

[list_end]


[subsection {OBJECT COMMAND}]

All commands created by [cmd ::doctools::toc::new] have the following
general form and may be used to invoke various operations on their
doctoc converter object.

[list_begin definitions]

[call [cmd objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the exact
behavior of the command. See section [sectref {OBJECT METHODS}] for
the detailed specifications.

[list_end]


[subsection {OBJECT METHODS}]

[list_begin definitions]

[call [arg objectName] [method configure]]

The method returns a list of all known options and their current
values when called without any arguments.


[call [arg objectName] [method configure] [arg option]]

The method behaves like the method [method cget] when called with a
single argument and returns the value of the option specified by said
argument.


[call [arg objectName] [method configure] [option -option] [arg value]...]

The method reconfigures the specified [option option]s of the object,
setting them to the associated [arg value]s, when called with an even
number of arguments, at least two.

[para]

The legal options are described in the section
[sectref {OBJECT CONFIGURATION}].


[call [arg objectName] [method cget] [option -option]]

This method expects a legal configuration option as argument and will
return the current value of that option for the object the method was
invoked for.

[para]

The legal configuration options are described in section
[sectref {OBJECT CONFIGURATION}].


[call [arg objectName] [method destroy]]

This method destroys the object it is invoked for.


[call [arg objectName] [method format] [arg text]]

This method runs the [arg text] through the configured formatting
engine and returns the generated string as its result. An error will
be thrown if no [option -format] was configured for the object.

[para]

The method assumes that the [arg text] is in [term doctoc] format as
specified in the companion document [term doctoc_fmt]. Errors will be
thrown otherwise.


[call [arg objectName] [method map] [arg symbolic] [arg actual]]

This methods add one entry to the per-object mapping from
[arg symbolic] filenames to the [arg actual] uris.

The object just stores this mapping and makes it available to the
configured formatting engine through the command [cmd dt_fmap].

This command is described in more detail in the
[term {doctoc plugin API reference}] which specifies the interaction
between the objects created by this package and toc formatting
engines.


[call [arg objectName] [method parameters]]

This method returns a list containing the names of all engine
parameters provided by the configured formatting engine. It will
return an empty list if the object is not yet configured for a
specific format.


[call [arg objectName] [method search] [arg path]]

This method extends the per-object list of paths searched for toc
formatting engines. See also the command [cmd ::doctools::toc::search]
on how to extend the per-package list of paths. Note that the path
entered last will be searched first.

For more details see section [sectref {FORMAT MAPPING}].


[call [arg objectName] [method setparam] [arg name] [arg value]]

This method sets the [arg name]d engine parameter to the specified
[arg value].

It will throw an error if the object is either not yet configured for
a specific format, or if the formatting engine for the configured
format does not provide a parameter with the given [arg name].

The list of parameters provided by the configured formatting engine
can be retrieved through the method [method parameters].


[call [arg objectName] [method warnings]]

This method returns a list containing all the warnings which were
generated by the configured formatting engine during the last
invocation of the method [method format].

[list_end]


[subsection {OBJECT CONFIGURATION}]

All doctoc objects understand the following configuration options:

[list_begin options]

233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
The default value of this option is the empty string.

[para]

The configured formatting engine should interpret the value as the
name of the file containing the document which is currently processed.


[opt_def -format [arg text]]

The argument of this option specifies the format to generate and by
implication the formatting engine to use when converting text via the
method [method format]. Its default value is the empty string. The
method [method format] cannot be used if this option is not set to a
valid value at least once.







<







234
235
236
237
238
239
240

241
242
243
244
245
246
247
The default value of this option is the empty string.

[para]

The configured formatting engine should interpret the value as the
name of the file containing the document which is currently processed.


[opt_def -format [arg text]]

The argument of this option specifies the format to generate and by
implication the formatting engine to use when converting text via the
method [method format]. Its default value is the empty string. The
method [method format] cannot be used if this option is not set to a
valid value at least once.
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269

[para]

The section [sectref {FORMAT MAPPING}] explains in detail how the
package and object will look for engine implementations.

[list_end]


[subsection {FORMAT MAPPING}]

The package and object will perform the following algorithm when
trying to map a format name [term foo] to a file containing an
implementation of a formatting engine for [term foo]:








<







255
256
257
258
259
260
261

262
263
264
265
266
267
268

[para]

The section [sectref {FORMAT MAPPING}] explains in detail how the
package and object will look for engine implementations.

[list_end]


[subsection {FORMAT MAPPING}]

The package and object will perform the following algorithm when
trying to map a format name [term foo] to a file containing an
implementation of a formatting engine for [term foo]:

307
308
309
310
311
312
313
314
315
316
317
318
319
320
321

[enum]

The mapping fails.

[list_end]


[section {PREDEFINED ENGINES}]

The package provides predefined formatting engines for the following
formats. Some of the formatting engines support engine
parameters. These will be explicitly highlighted.

[list_begin definitions]







<







306
307
308
309
310
311
312

313
314
315
316
317
318
319

[enum]

The mapping fails.

[list_end]


[section {PREDEFINED ENGINES}]

The package provides predefined formatting engines for the following
formats. Some of the formatting engines support engine
parameters. These will be explicitly highlighted.

[list_begin definitions]
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
empty string. The value is inserted into the generated output just
after the [const <body>] tag, starting the body of the generated HTML.

[para]

This can be used to insert boilerplate header markup into the
generated document.


[def meta]

The value for this parameter has to be valid selfcontained HTML markup
for the header section of a HTML document. The default value is the
empty string. The value is inserted into the generated output just
after the [const <head>] tag, starting the header section of the







<







343
344
345
346
347
348
349

350
351
352
353
354
355
356
empty string. The value is inserted into the generated output just
after the [const <body>] tag, starting the body of the generated HTML.

[para]

This can be used to insert boilerplate header markup into the
generated document.


[def meta]

The value for this parameter has to be valid selfcontained HTML markup
for the header section of a HTML document. The default value is the
empty string. The value is inserted into the generated output just
after the [const <head>] tag, starting the header section of the
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
[def wiki]

This engine generates Wiki markup as understood by Jean Claude
Wippler's [syscmd wikit] application.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph doctools] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also doctoc_intro]
[see_also doctoc_lang_intro]
[see_also doctoc_lang_syntax]
[see_also doctoc_lang_cmdref]
[see_also doctoc_plugin_apiref]
[keywords documentation manpage TMML HTML nroff conversion markup]
[keywords nroff latex wiki doctoc toc {table of contents}]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<

395
396
397
398
399
400
401

402


403














404
[def wiki]

This engine generates Wiki markup as understood by Jean Claude
Wippler's [syscmd wikit] application.

[list_end]


[vset CATEGORY doctools]


[include ../doctools2base/include/feedback.inc]














[manpage_end]

Changes to modules/doctools/doctoc_intro.man.

1
2












3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctoc_intro n 1.0]












[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctoc introduction}]
[category  {Documentation tools}]
[description]
[para]



>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctoc_intro n 1.0]
[see_also docidx_intro]
[see_also doctoc_lang_cmdref]
[see_also doctoc_lang_faq]
[see_also doctoc_lang_intro]
[see_also doctoc_lang_syntax]
[see_also doctoc_plugin_apiref]
[see_also doctools::toc]
[see_also doctools_intro]
[keywords markup]
[keywords {semantic markup}]
[keywords {table of contents}]
[keywords toc]
[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctoc introduction}]
[category  {Documentation tools}]
[description]
[para]

84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
called [term docidx] and [term doctools], and they are for the markup
of [term {keyword indices}], and general documentation, respectively.

They are described in their own sets of documents, starting at the
[term {docidx introduction}] and the [term {doctools introduction}],
respectively.


[section {BUGS, IDEAS, FEEDBACK}]

This document, will undoubtedly contain bugs and other problems.

Please report such in the category [emph doctools] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have.

[see_also doctoc_lang_intro]
[see_also doctoc_lang_syntax]
[see_also doctoc_lang_cmdref]
[see_also doctoc_lang_faq]
[see_also doctools::toc]
[see_also doctoc_plugin_apiref]
[see_also doctools_intro]
[see_also docidx_intro]
[keywords markup {semantic markup}]
[keywords toc {table of contents}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<

96
97
98
99
100
101
102
103

104

















105
called [term docidx] and [term doctools], and they are for the markup
of [term {keyword indices}], and general documentation, respectively.

They are described in their own sets of documents, starting at the
[term {docidx introduction}] and the [term {doctools introduction}],
respectively.

[vset CATEGORY doctools]

[include ../doctools2base/include/feedback.inc]

















[manpage_end]

Changes to modules/doctools/doctoc_lang_cmdref.man.

1
2









3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctoc_lang_cmdref n 1.0]









[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctoc language command reference}]
[category  {Documentation tools}]
[description]
[para]

This document specifies both names and syntax of all the commands
which together are the doctoc markup language, version 1.

As this document is intended to be a reference the commands are listed
in alphabetical order, and the descriptions are relatively short.

A beginner should read the much more informally written
[term {doctoc language introduction}] first.


[section Commands]
[list_begin definitions]


[call [cmd comment] [arg plaintext]]

Toc markup. The argument text is marked up as a comment standing
outside of the actual text of the document. Main use is in free-form
text.



>
>
>
>
>
>
>
>
>
















<


<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

28
29

30
31
32
33
34
35
36
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctoc_lang_cmdref n 1.0]
[see_also doctoc_intro]
[see_also doctoc_lang_faq]
[see_also doctoc_lang_intro]
[see_also doctoc_lang_syntax]
[keywords {doctoc commands}]
[keywords {doctoc language}]
[keywords {doctoc markup}]
[keywords markup]
[keywords {semantic markup}]
[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctoc language command reference}]
[category  {Documentation tools}]
[description]
[para]

This document specifies both names and syntax of all the commands
which together are the doctoc markup language, version 1.

As this document is intended to be a reference the commands are listed
in alphabetical order, and the descriptions are relatively short.

A beginner should read the much more informally written
[term {doctoc language introduction}] first.


[section Commands]
[list_begin definitions]


[call [cmd comment] [arg plaintext]]

Toc markup. The argument text is marked up as a comment standing
outside of the actual text of the document. Main use is in free-form
text.

111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
[call [cmd vset] [arg varname]]

Templating. In this form the command is replaced by the value of the
named document variable

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph doctools] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[see_also doctoc_intro]
[see_also doctoc_lang_intro]
[see_also doctoc_lang_syntax]
[see_also doctoc_lang_faq]
[keywords markup {semantic markup}]
[keywords {doctoc markup} {doctoc language} {doctoc commands}]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<
<
<
<
<

118
119
120
121
122
123
124

125


126












127
[call [cmd vset] [arg varname]]

Templating. In this form the command is replaced by the value of the
named document variable

[list_end]


[vset CATEGORY doctools]


[include ../doctools2base/include/feedback.inc]












[manpage_end]

Changes to modules/doctools/doctoc_lang_faq.man.

1
2











3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctoc_lang_faq n 1.0]











[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctoc language faq}]
[category  {Documentation tools}]
[description]
[para]

[section OVERVIEW]

[subsection {What is this document?}]

This document is currently mainly a placeholder, to be filled with
commonly asked questions about the doctoc markup language and
companions, and their answers.

[para]

Please report any questions (and, if possible, answers) we should
consider for this document in the category [emph doctools] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

[section EXAMPLES]

[subsection {Where do I find doctoc examples?}]

We have no direct examples of documents written using doctoc
markup. However the doctools processor [syscmd dtplite] does generate
a table of contents when processing a set of documents written in
doctools markup. The intermediate file for it uses doctoc markup and
is not deleted when generation completes. Such files can therefore
serve as examples.

[para]

[syscmd dtplite] is distributed as part of Tcllib, so to get it you
need one of

[list_begin enumerated]

[enum]
A CVS snapshot of Tcllib. How to retrieve such a snapshot and the
tools required for this are described at
[uri http://sourceforge.net/cvs/?group_id=12883]

[enum]
A Tcllib release archive. They are available at
[uri http://sourceforge.net/project/showfiles.php?group_id=12883]

[list_end]



[section {BUGS, IDEAS, FEEDBACK}]

This document, will undoubtedly contain bugs and other problems.

Please report any such in the category [emph doctools] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
the package and/or the documentation.

[see_also doctoc_lang_intro]
[see_also doctoc_lang_syntax]
[see_also doctoc_lang_cmdref]
[keywords examples faq markup {semantic markup}]
[keywords {doctoc markup} {doctoc language}]
[keywords {doctoc syntax} {doctoc commands}]
[manpage_end]


>
>
>
>
>
>
>
>
>
>
>





|



<
|
<
<
<
|
<

<
<
<
|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

23



24

25



26

27













































28
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctoc_lang_faq n 1.0]
[see_also doctoc_lang_cmdref]
[see_also doctoc_lang_intro]
[see_also doctoc_lang_syntax]
[keywords {doctoc commands}]
[keywords {doctoc language}]
[keywords {doctoc markup}]
[keywords {doctoc syntax}]
[keywords examples]
[keywords faq]
[keywords markup]
[keywords {semantic markup}]
[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctoc language faq}]
[category  {Documentation tools}]
[description]
[vset theformat doctoc]

[section OVERVIEW]


[include include/placeholder.inc]



[include include/examples.inc]





[vset CATEGORY doctools]

[include ../doctools2base/include/feedback.inc]













































[manpage_end]

Changes to modules/doctools/doctoc_lang_intro.man.

1
2









3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctoc_lang_intro n 1.0]









[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctoc language introduction}]
[category  {Documentation tools}]
[description]
[para]



>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctoc_lang_intro n 1.0]
[see_also doctoc_intro]
[see_also doctoc_lang_cmdref]
[see_also doctoc_lang_syntax]
[keywords {doctoc commands}]
[keywords {doctoc language}]
[keywords {doctoc markup}]
[keywords {doctoc syntax}]
[keywords markup]
[keywords {semantic markup}]
[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctoc language introduction}]
[category  {Documentation tools}]
[description]
[para]

56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
version 1 of the language, which did not allow this mixing, but only
the use of either a series of items or a series of divisions.

[para]

We will discuss the commands for each of these two possibilities in
the next sections.


[subsection Items]

Use the command [cmd item] to put an [term item] into a table of
contents. This is essentially a reference to a section, subsection,
etc. in the document, or set of documents, the table of contents is
for. The command takes three arguments, a symbolic name for the file







<







65
66
67
68
69
70
71

72
73
74
75
76
77
78
version 1 of the language, which did not allow this mixing, but only
the use of either a series of items or a series of divisions.

[para]

We will discuss the commands for each of these two possibilities in
the next sections.


[subsection Items]

Use the command [cmd item] to put an [term item] into a table of
contents. This is essentially a reference to a section, subsection,
etc. in the document, or set of documents, the table of contents is
for. The command takes three arguments, a symbolic name for the file
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
[lb][cmd {division_end}][rb]
[lb][cmd {division_end}][rb]
[lb][cmd {division_start {FURTHER READING}}][rb]
[lb][cmd {division_end}][rb]
[lb]toc_end[rb]
[example_end]


[subsection {Advanced structure}]

In all previous examples we fudged a bit regarding the markup actually
allowed to be used before the [cmd toc_begin] command opening the
document.

[para]







<







201
202
203
204
205
206
207

208
209
210
211
212
213
214
[lb][cmd {division_end}][rb]
[lb][cmd {division_end}][rb]
[lb][cmd {division_start {FURTHER READING}}][rb]
[lb][cmd {division_end}][rb]
[lb]toc_end[rb]
[example_end]


[subsection {Advanced structure}]

In all previous examples we fudged a bit regarding the markup actually
allowed to be used before the [cmd toc_begin] command opening the
document.

[para]
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247

The only restriction [cmd include] has to obey is that the contents of
the included file must be valid at the place of the inclusion. I.e. a
file included before [cmd toc_begin] may contain only the templating
commands [cmd vset] and [cmd include], a file included in a division
may contain only items or divisions commands, etc.


[subsection Escapes]

Beyond the 6 commands shown so far we have two more available.

However their function is not the marking up of toc structure, but the
insertion of characters, namely [const [lb]] and [const [rb]].








<







240
241
242
243
244
245
246

247
248
249
250
251
252
253

The only restriction [cmd include] has to obey is that the contents of
the included file must be valid at the place of the inclusion. I.e. a
file included before [cmd toc_begin] may contain only the templating
commands [cmd vset] and [cmd include], a file included in a division
may contain only items or divisions commands, etc.


[subsection Escapes]

Beyond the 6 commands shown so far we have two more available.

However their function is not the marking up of toc structure, but the
insertion of characters, namely [const [lb]] and [const [rb]].

257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
[example_begin]
  ...
  These commands, [lb]cmd lb[rb] and [lb]cmd lb[rb] respectively, are required
  because our use of [lb][cmd lb][rb] and [lb][cmd rb][rb] to bracket markup commands makes it
  impossible to directly use [lb][cmd lb][rb] and [lb][cmd rb][rb] within the text.
  ...
[example_end]


[section {FURTHER READING}]

Now that this document has been digested the reader, assumed to be a
[term writer] of documentation should be fortified enough to be able
to understand the formal [term {doctoc language syntax}]
specification as well. From here on out the







<







263
264
265
266
267
268
269

270
271
272
273
274
275
276
[example_begin]
  ...
  These commands, [lb]cmd lb[rb] and [lb]cmd lb[rb] respectively, are required
  because our use of [lb][cmd lb][rb] and [lb][cmd rb][rb] to bracket markup commands makes it
  impossible to directly use [lb][cmd lb][rb] and [lb][cmd rb][rb] within the text.
  ...
[example_end]


[section {FURTHER READING}]

Now that this document has been digested the reader, assumed to be a
[term writer] of documentation should be fortified enough to be able
to understand the formal [term {doctoc language syntax}]
specification as well. From here on out the
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306

On the other hand, doctoc is perfectly suited for the automatic
generation from doctools documents, and this is the route Tcllib's
easy and simple [syscmd dtplite] goes, creating a table of contents
for a set of documents behind the scenes, without the writer having to
do so on their own.


[section {BUGS, IDEAS, FEEDBACK}]

This document, will undoubtedly contain bugs and other problems.

Please report such in the category [emph doctools] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have.

[see_also doctoc_intro]
[see_also doctoc_lang_syntax]
[see_also doctoc_lang_cmdref]
[keywords markup {semantic markup}]
[keywords {doctoc markup} {doctoc language}]
[keywords {doctoc syntax} {doctoc commands}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<

288
289
290
291
292
293
294
295

296













297

On the other hand, doctoc is perfectly suited for the automatic
generation from doctools documents, and this is the route Tcllib's
easy and simple [syscmd dtplite] goes, creating a table of contents
for a set of documents behind the scenes, without the writer having to
do so on their own.

[vset CATEGORY doctools]

[include ../doctools2base/include/feedback.inc]













[manpage_end]

Changes to modules/doctools/doctoc_lang_syntax.man.

1
2










3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctoc_lang_syntax n 1.0]










[copyright {2007-2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctoc language syntax}]
[category  {Documentation tools}]
[description]
[para]

This document contains the formal specification of the syntax of the
doctoc markup language, version 1.1 in Backus-Naur-Form. This document
is intended to be a reference, complementing the
[term {doctoc language command reference}].

A beginner should read the much more informally written
[term {doctoc language introduction}] first before trying to
understand either this document or the command reference.


[section Fundamentals]

In the broadest terms possible the [term {doctoc markup language}] is
like SGML and similar languages. A document written in this language
consists primarily of markup commands, with text embedded into it at
some places.


>
>
>
>
>
>
>
>
>
>















<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

28
29
30
31
32
33
34
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctoc_lang_syntax n 1.0]
[see_also doctoc_intro]
[see_also doctoc_lang_cmdref]
[see_also doctoc_lang_faq]
[see_also doctoc_lang_intro]
[keywords {doctoc commands}]
[keywords {doctoc language}]
[keywords {doctoc markup}]
[keywords {doctoc syntax}]
[keywords markup]
[keywords {semantic markup}]
[copyright {2007-2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctoc language syntax}]
[category  {Documentation tools}]
[description]
[para]

This document contains the formal specification of the syntax of the
doctoc markup language, version 1.1 in Backus-Naur-Form. This document
is intended to be a reference, complementing the
[term {doctoc language command reference}].

A beginner should read the much more informally written
[term {doctoc language introduction}] first before trying to
understand either this document or the command reference.


[section Fundamentals]

In the broadest terms possible the [term {doctoc markup language}] is
like SGML and similar languages. A document written in this language
consists primarily of markup commands, with text embedded into it at
some places.
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
[section Syntax]

The rules listed here specify only the syntax of doctoc documents. The
lexical level of the language was covered in the previous section.

[para]

Regarding the syntax of the (E)BNF itself 

[list_begin enumerated]
[enum]
The construct { X } stands for zero or more occurrences of X.
[enum]
The construct [lb] X [rb] stands for zero or one occurrence of X.
[list_end]

The syntax:

[example {
toc       = defs
            TOC_BEGIN
            contents
            TOC_END  
            { <WHITE> }

defs      = { INCLUDE | VSET | <WHITE> }
contents  = { defs entry } [ defs ]

entry     = ITEM | division

division  = DIVISION_START
            contents
            DIVISION_END
}]


[section {BUGS, IDEAS, FEEDBACK}]

This document, will undoubtedly contain bugs and other problems.

Please report such in the category [emph doctools] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have.

[see_also doctoc_intro]
[see_also doctoc_lang_intro]
[see_also doctoc_lang_cmdref]
[see_also doctoc_lang_faq]
[keywords markup {semantic markup}]
[keywords {doctoc markup} {doctoc language}]
[keywords {doctoc syntax} {doctoc commands}]
[manpage_end]







|














|












|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<

68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103

104














105
[section Syntax]

The rules listed here specify only the syntax of doctoc documents. The
lexical level of the language was covered in the previous section.

[para]

Regarding the syntax of the (E)BNF itself

[list_begin enumerated]
[enum]
The construct { X } stands for zero or more occurrences of X.
[enum]
The construct [lb] X [rb] stands for zero or one occurrence of X.
[list_end]

The syntax:

[example {
toc       = defs
            TOC_BEGIN
            contents
            TOC_END
            { <WHITE> }

defs      = { INCLUDE | VSET | <WHITE> }
contents  = { defs entry } [ defs ]

entry     = ITEM | division

division  = DIVISION_START
            contents
            DIVISION_END
}]

[vset CATEGORY doctools]

[include ../doctools2base/include/feedback.inc]














[manpage_end]

Changes to modules/doctools/doctoc_plugin_apiref.man.

1
2













3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctoc_plugin_apiref n 1.0]













[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctoc plugin API reference}]
[category  {Documentation tools}]
[description]
[para]



>
>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctoc_plugin_apiref n 1.0]
[see_also doctoc_intro]
[see_also doctoc_lang_cmdref]
[see_also doctoc_lang_faq]
[see_also doctoc_lang_intro]
[see_also doctoc_lang_syntax]
[see_also doctools::toc]
[keywords {formatting engine}]
[keywords markup]
[keywords plugin]
[keywords {semantic markup}]
[keywords {table of contents}]
[keywords toc]
[keywords {toc formatter}]
[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctoc plugin API reference}]
[category  {Documentation tools}]
[description]
[para]

26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
A reader who is on the other hand more interested in the markup
language itself should start with the

[term {doctoc language introduction}] and proceed from there to the
formal specifications, i.e. the [term {doctoc language syntax}] and
the [term {doctoc language command reference}].



[section OVERVIEW]

The API for a toc formatting engine consists of two major sections.

[para]

On the one side we have a set of commands through which the plugin is
able to query the frontend. These commands are provided by the
frontend and linked into the plugin interpreter. Please see section
[sectref {FRONTEND COMMANDS}] for their detailed specification.

[para]

And on the other side the plugin has to provide its own set of
commands which will then be called by the frontend in a specific
sequence while processing input. They, again, fall into two
categories, management and formatting.

Please see section [sectref {PLUGIN COMMANDS}] and its subsections for
their detailed specification.



[section {FRONTEND COMMANDS}]

This section specifies the set of commands through which a plugin,
also known as a toc formatting engine, is able to query the
frontend. These commands are provided by the frontend and linked into
the plugin interpreter.







<
<




















<
<







39
40
41
42
43
44
45


46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65


66
67
68
69
70
71
72
A reader who is on the other hand more interested in the markup
language itself should start with the

[term {doctoc language introduction}] and proceed from there to the
formal specifications, i.e. the [term {doctoc language syntax}] and
the [term {doctoc language command reference}].



[section OVERVIEW]

The API for a toc formatting engine consists of two major sections.

[para]

On the one side we have a set of commands through which the plugin is
able to query the frontend. These commands are provided by the
frontend and linked into the plugin interpreter. Please see section
[sectref {FRONTEND COMMANDS}] for their detailed specification.

[para]

And on the other side the plugin has to provide its own set of
commands which will then be called by the frontend in a specific
sequence while processing input. They, again, fall into two
categories, management and formatting.

Please see section [sectref {PLUGIN COMMANDS}] and its subsections for
their detailed specification.



[section {FRONTEND COMMANDS}]

This section specifies the set of commands through which a plugin,
also known as a toc formatting engine, is able to query the
frontend. These commands are provided by the frontend and linked into
the plugin interpreter.
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186

The plugin has to provide its own set of commands which will then be
called by the frontend in a specific sequence while processing
input. They fall into two categories, management and formatting. Their
expected names, signatures, and responsibilities are specified in the
following two subsections.



[subsection {Management commands}]

The management commands a plugin has to provide are used by the
frontend to

[list_begin enumerated]
[enum] initialize and shutdown the plugin







<
<







180
181
182
183
184
185
186


187
188
189
190
191
192
193

The plugin has to provide its own set of commands which will then be
called by the frontend in a specific sequence while processing
input. They fall into two categories, management and formatting. Their
expected names, signatures, and responsibilities are specified in the
following two subsections.



[subsection {Management commands}]

The management commands a plugin has to provide are used by the
frontend to

[list_begin enumerated]
[enum] initialize and shutdown the plugin
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
the first command of that run. Note that a run is not a pass, but may
consist of multiple passes.

It has to initialize the general state of the plugin, beyond the
initialization done during the load. No return value is expected, and
any returned value is ignored.


[call [cmd toc_listvariables]]
[emph Initialization/Shutdown] and [emph {Engine parameters}].

Second command is called after the plugin code has been loaded,
i.e. immediately after [cmd toc_numpasses].

It has to return a list containing the names of the parameters the
frontend can set to configure the engine. This list can be empty.


[call [cmd toc_numpasses]]
[emph Initialization/Shutdown] and [emph {Pass management}].

First command called after the plugin code has been loaded. No other
command of the engine will be called before it.

It has to return the number of passes this engine requires to fully
process the input document. This value has to be an integer number
greater or equal to one.


[call [cmd toc_postprocess] [arg text]]
[emph Initialization/Shutdown].

This command is called immediately after the last pass in a run. Its
argument is the result of the conversion generated by that pass. It is
provided to allow the engine to perform any global modifications of
the generated document. If no post-processing is required for a
specific format the command has to just return the argument.

[para]

Expected to return a value, the final result of formatting the input.


[call [cmd toc_setup] [arg n]]
[emph Initialization/Shutdown] and [emph {Pass management}].

This command is called at the beginning of each pass over the input in
a run. Its argument is the number of the pass which has begun. Passes
are counted from [const 1] upward.

The command has to set up the internal state of the plugin for this
particular pass. No return value is expected, and any returned value
is ignored.


[call [cmd toc_shutdown]]
[emph Initialization/Shutdown].

This command is called at the end of every conversion run. It is the
last command called in a run. It has to clean up of all the
run-specific state in the plugin.

After the call the engine has to be in a state which allows the
initiation of another run without fear that information from the last
run is leaked into this new run.

No return value is expected, and any returned value is ignored.


[call [cmd toc_varset] [arg varname] [arg text]]
[emph {Engine parameters}].

This command is called by the frontend to set an engine parameter to a
particular value.








<








<










<














<










<













<







277
278
279
280
281
282
283

284
285
286
287
288
289
290
291

292
293
294
295
296
297
298
299
300
301

302
303
304
305
306
307
308
309
310
311
312
313
314
315

316
317
318
319
320
321
322
323
324
325

326
327
328
329
330
331
332
333
334
335
336
337
338

339
340
341
342
343
344
345
the first command of that run. Note that a run is not a pass, but may
consist of multiple passes.

It has to initialize the general state of the plugin, beyond the
initialization done during the load. No return value is expected, and
any returned value is ignored.


[call [cmd toc_listvariables]]
[emph Initialization/Shutdown] and [emph {Engine parameters}].

Second command is called after the plugin code has been loaded,
i.e. immediately after [cmd toc_numpasses].

It has to return a list containing the names of the parameters the
frontend can set to configure the engine. This list can be empty.


[call [cmd toc_numpasses]]
[emph Initialization/Shutdown] and [emph {Pass management}].

First command called after the plugin code has been loaded. No other
command of the engine will be called before it.

It has to return the number of passes this engine requires to fully
process the input document. This value has to be an integer number
greater or equal to one.


[call [cmd toc_postprocess] [arg text]]
[emph Initialization/Shutdown].

This command is called immediately after the last pass in a run. Its
argument is the result of the conversion generated by that pass. It is
provided to allow the engine to perform any global modifications of
the generated document. If no post-processing is required for a
specific format the command has to just return the argument.

[para]

Expected to return a value, the final result of formatting the input.


[call [cmd toc_setup] [arg n]]
[emph Initialization/Shutdown] and [emph {Pass management}].

This command is called at the beginning of each pass over the input in
a run. Its argument is the number of the pass which has begun. Passes
are counted from [const 1] upward.

The command has to set up the internal state of the plugin for this
particular pass. No return value is expected, and any returned value
is ignored.


[call [cmd toc_shutdown]]
[emph Initialization/Shutdown].

This command is called at the end of every conversion run. It is the
last command called in a run. It has to clean up of all the
run-specific state in the plugin.

After the call the engine has to be in a state which allows the
initiation of another run without fear that information from the last
run is leaked into this new run.

No return value is expected, and any returned value is ignored.


[call [cmd toc_varset] [arg varname] [arg text]]
[emph {Engine parameters}].

This command is called by the frontend to set an engine parameter to a
particular value.

353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368

[para]

The values of all engine parameters have to persist between passes and
runs.

[list_end]



[subsection {Formatting commands}]

The formatting commands have to implement the formatting for the
output format, for all the markup commands of the doctoc markup
language, except [cmd lb], [cmd rb], [cmd vset], [cmd include], and
[cmd comment]. These exceptions are processed by the frontend and are







<
<







354
355
356
357
358
359
360


361
362
363
364
365
366
367

[para]

The values of all engine parameters have to persist between passes and
runs.

[list_end]



[subsection {Formatting commands}]

The formatting commands have to implement the formatting for the
output format, for all the markup commands of the doctoc markup
language, except [cmd lb], [cmd rb], [cmd vset], [cmd include], and
[cmd comment]. These exceptions are processed by the frontend and are
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439

[para] The formatted text is expected as the result of the command,
and added to the output. If no special processing is required it has
to simply return its argument without change.

[list_end]



[section {BUGS, IDEAS, FEEDBACK}]

This document, will undoubtedly contain bugs and other problems.

Please report such in the category [emph doctools] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have.

[see_also doctoc_intro]
[see_also doctoc_lang_intro]
[see_also doctoc_lang_syntax]
[see_also doctoc_lang_cmdref]
[see_also doctoc_lang_faq]
[see_also doctools::toc]
[keywords markup {semantic markup} plugin toc {table of contents}]
[keywords {formatting engine} {toc formatter}]
[manpage_end]







|
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<

412
413
414
415
416
417
418
419
420

















421

[para] The formatted text is expected as the result of the command,
and added to the output. If no special processing is required it has
to simply return its argument without change.

[list_end]

[vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]

















[manpage_end]

Changes to modules/doctools/doctools.man.

1
2












3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools n 1.4.16]












[copyright {2003-2013 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctools - Processing documents}]
[category  {Documentation tools}]
[require Tcl 8.2]
[require doctools [opt 1.4.16]]
[description]


>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools n 1.4.16]
[see_also doctools_intro]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_intro]
[see_also doctools_lang_syntax]
[see_also doctools_plugin_apiref]
[keywords conversion]
[keywords documentation]
[keywords HTML]
[keywords manpage]
[keywords markup]
[keywords nroff]
[keywords TMML]
[copyright {2003-2013 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctools - Processing documents}]
[category  {Documentation tools}]
[require Tcl 8.2]
[require doctools [opt 1.4.16]]
[description]
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65

If on the other hand the reader wishes to write her own formatting
engine for some format, i.e. is a [term {plugin writer}] then reading
and understanding the [term {doctools plugin API reference}] is an
absolute necessity, as that document specifies the interaction between
this package and its plugins, i.e. the formatting engines, in detail.


[section {PUBLIC API}]
[subsection {PACKAGE COMMANDS}]

[list_begin definitions]

[call [cmd ::doctools::new] [arg objectName] [opt [arg "option value"]...]]

This command creates a new doctools object with an associated Tcl
command whose name is [arg objectName]. This [term object] command is
explained in full detail in the sections [sectref {OBJECT COMMAND}]
and [sectref {OBJECT METHODS}]. The object command will be created
under the current namespace if the [arg objectName] is not fully
qualified, and in the specified namespace otherwise.

[para]

The options and their values coming after the name of the object are
used to set the initial configuration of the object.


[call [cmd ::doctools::help]]

This is a convenience command for applications wishing to provide
their user with a short description of the available formatting
commands and their meanings. It returns a string containing a standard
help text.


[call [cmd ::doctools::search] [arg path]]

Whenever an object created by this the package has to map the name of
a format to the file containing the code for its formatting engine it
will search for the file in a number of directories stored in a
list. See section [sectref {FORMAT MAPPING}] for more explanations.







<



















<






<







36
37
38
39
40
41
42

43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61

62
63
64
65
66
67

68
69
70
71
72
73
74

If on the other hand the reader wishes to write her own formatting
engine for some format, i.e. is a [term {plugin writer}] then reading
and understanding the [term {doctools plugin API reference}] is an
absolute necessity, as that document specifies the interaction between
this package and its plugins, i.e. the formatting engines, in detail.


[section {PUBLIC API}]
[subsection {PACKAGE COMMANDS}]

[list_begin definitions]

[call [cmd ::doctools::new] [arg objectName] [opt [arg "option value"]...]]

This command creates a new doctools object with an associated Tcl
command whose name is [arg objectName]. This [term object] command is
explained in full detail in the sections [sectref {OBJECT COMMAND}]
and [sectref {OBJECT METHODS}]. The object command will be created
under the current namespace if the [arg objectName] is not fully
qualified, and in the specified namespace otherwise.

[para]

The options and their values coming after the name of the object are
used to set the initial configuration of the object.


[call [cmd ::doctools::help]]

This is a convenience command for applications wishing to provide
their user with a short description of the available formatting
commands and their meanings. It returns a string containing a standard
help text.


[call [cmd ::doctools::search] [arg path]]

Whenever an object created by this the package has to map the name of
a format to the file containing the code for its formatting engine it
will search for the file in a number of directories stored in a
list. See section [sectref {FORMAT MAPPING}] for more explanations.
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91

[para]

An error will be thrown if the [arg path] either does not exist, is
not a directory, or is not readable.

[list_end]


[subsection {OBJECT COMMAND}]

All commands created by [cmd ::doctools::new] have the following
general form and may be used to invoke various operations on their
doctools converter object.








<







86
87
88
89
90
91
92

93
94
95
96
97
98
99

[para]

An error will be thrown if the [arg path] either does not exist, is
not a directory, or is not readable.

[list_end]


[subsection {OBJECT COMMAND}]

All commands created by [cmd ::doctools::new] have the following
general form and may be used to invoke various operations on their
doctools converter object.

104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
[list_begin definitions]

[call [arg objectName] [method configure]]

The method returns a list of all known options and their current
values when called without any arguments.


[call [arg objectName] [method configure] [arg option]]

The method behaves like the method [method cget] when called with a
single argument and returns the value of the option specified by said
argument.


[call [arg objectName] [method configure] [option -option] [arg value]...]

The method reconfigures the specified [option option]s of the object,
setting them to the associated [arg value]s, when called with an even
number of arguments, at least two.

[para]

The legal options are described in the section
[sectref {OBJECT CONFIGURATION}].


[call [arg objectName] [method cget] [option -option]]

This method expects a legal configuration option as argument and will
return the current value of that option for the object the method was
invoked for.

[para]

The legal configuration options are described in section
[sectref {OBJECT CONFIGURATION}].


[call [arg objectName] [method destroy]]

This method destroys the object it is invoked for.


[call [arg objectName] [method format] [arg text]]

This method runs the [arg text] through the configured formatting
engine and returns the generated string as its result. An error will
be thrown if no [option -format] was configured for the object.

[para]

The method assumes that the [arg text] is in [term doctools] format as
specified in the companion document [term doctools_fmt]. Errors will
be thrown otherwise.


[call [arg objectName] [method map] [arg symbolic] [arg actual]]

This methods add one entry to the per-object mapping from
[arg symbolic] filenames to the [arg actual] uris.

The object just stores this mapping and makes it available to the
configured formatting engine through the command [cmd dt_fmap].

This command is described in more detail in the
[term {doctools plugin API reference}] which specifies the interaction
between the objects created by this package and doctools formatting
engines.


[call [arg objectName] [method parameters]]

This method returns a list containing the names of all engine
parameters provided by the configured formatting engine. It will
return an empty list if the object is not yet configured for a
specific format.


[call [arg objectName] [method search] [arg path]]

This method extends the per-object list of paths searched for doctools
formatting engines. See also the command [cmd ::doctools::search] on
how to extend the per-package list of paths. Note that the path
entered last will be searched first.

For more details see section [sectref {FORMAT MAPPING}].


[call [arg objectName] [method setparam] [arg name] [arg value]]

This method sets the [arg name]d engine parameter to the specified
[arg value].

It will throw an error if the object is either not yet configured for
a specific format, or if the formatting engine for the configured
format does not provide a parameter with the given [arg name].

The list of parameters provided by the configured formatting engine
can be retrieved through the method [method parameters].


[call [arg objectName] [method warnings]]

This method returns a list containing all the warnings which were
generated by the configured formatting engine during the last
invocation of the method [method format].

[list_end]


[subsection {OBJECT CONFIGURATION}]

All doctools objects understand the following configuration options:

[list_begin options]








<





<











<












<



<












<














<






<









<













<







<







112
113
114
115
116
117
118

119
120
121
122
123

124
125
126
127
128
129
130
131
132
133
134

135
136
137
138
139
140
141
142
143
144
145
146

147
148
149

150
151
152
153
154
155
156
157
158
159
160
161

162
163
164
165
166
167
168
169
170
171
172
173
174
175

176
177
178
179
180
181

182
183
184
185
186
187
188
189
190

191
192
193
194
195
196
197
198
199
200
201
202
203

204
205
206
207
208
209
210

211
212
213
214
215
216
217
[list_begin definitions]

[call [arg objectName] [method configure]]

The method returns a list of all known options and their current
values when called without any arguments.


[call [arg objectName] [method configure] [arg option]]

The method behaves like the method [method cget] when called with a
single argument and returns the value of the option specified by said
argument.


[call [arg objectName] [method configure] [option -option] [arg value]...]

The method reconfigures the specified [option option]s of the object,
setting them to the associated [arg value]s, when called with an even
number of arguments, at least two.

[para]

The legal options are described in the section
[sectref {OBJECT CONFIGURATION}].


[call [arg objectName] [method cget] [option -option]]

This method expects a legal configuration option as argument and will
return the current value of that option for the object the method was
invoked for.

[para]

The legal configuration options are described in section
[sectref {OBJECT CONFIGURATION}].


[call [arg objectName] [method destroy]]

This method destroys the object it is invoked for.


[call [arg objectName] [method format] [arg text]]

This method runs the [arg text] through the configured formatting
engine and returns the generated string as its result. An error will
be thrown if no [option -format] was configured for the object.

[para]

The method assumes that the [arg text] is in [term doctools] format as
specified in the companion document [term doctools_fmt]. Errors will
be thrown otherwise.


[call [arg objectName] [method map] [arg symbolic] [arg actual]]

This methods add one entry to the per-object mapping from
[arg symbolic] filenames to the [arg actual] uris.

The object just stores this mapping and makes it available to the
configured formatting engine through the command [cmd dt_fmap].

This command is described in more detail in the
[term {doctools plugin API reference}] which specifies the interaction
between the objects created by this package and doctools formatting
engines.


[call [arg objectName] [method parameters]]

This method returns a list containing the names of all engine
parameters provided by the configured formatting engine. It will
return an empty list if the object is not yet configured for a
specific format.


[call [arg objectName] [method search] [arg path]]

This method extends the per-object list of paths searched for doctools
formatting engines. See also the command [cmd ::doctools::search] on
how to extend the per-package list of paths. Note that the path
entered last will be searched first.

For more details see section [sectref {FORMAT MAPPING}].


[call [arg objectName] [method setparam] [arg name] [arg value]]

This method sets the [arg name]d engine parameter to the specified
[arg value].

It will throw an error if the object is either not yet configured for
a specific format, or if the formatting engine for the configured
format does not provide a parameter with the given [arg name].

The list of parameters provided by the configured formatting engine
can be retrieved through the method [method parameters].


[call [arg objectName] [method warnings]]

This method returns a list containing all the warnings which were
generated by the configured formatting engine during the last
invocation of the method [method format].

[list_end]


[subsection {OBJECT CONFIGURATION}]

All doctools objects understand the following configuration options:

[list_begin options]

233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
The default value of this option is the empty string.

[para]

The configured formatting engine should interpret the value as the
name of the file containing the document which is currently processed.


[opt_def -ibase [arg file]]

The argument of this option is stored in the object and used as the
base path for resolution of relative include paths. If this option is
not set (empty string) the value of [option -file] is used instead.

[para]

Note that [option -file] and [option -ibase], while similar looking,
are actually very different. The value of [option -file] is used by
some engines for the generation of proper relative references between
output documents (HTML). As such this is a [term destination]
path. The [option -ibase] on the other hand is used to resolve
relative include paths, and as such deals with [term source] paths.

[para]

The default value of this option is the empty string.


[opt_def -module [arg text]]

The argument of this option is stored in the object and made available
to the configured formatting engine through the command [cmd dt_module].

This command is described in more detail in the companion document
[term doctools_api] which specifies the API between the object and
formatting engines.

[para]

The default value of this option is the empty string.

[para]

The configured formatting engine should interpret the value as the
name of the module the file containing the document which is currently
processed belongs to.


[opt_def -format [arg text]]

The argument of this option specifies the format to generate and by
implication the formatting engine to use when converting text via the
method [method format]. Its default value is the empty string. The
method [method format] cannot be used if this option is not set to a







<



















<


















<







230
231
232
233
234
235
236

237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255

256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273

274
275
276
277
278
279
280
The default value of this option is the empty string.

[para]

The configured formatting engine should interpret the value as the
name of the file containing the document which is currently processed.


[opt_def -ibase [arg file]]

The argument of this option is stored in the object and used as the
base path for resolution of relative include paths. If this option is
not set (empty string) the value of [option -file] is used instead.

[para]

Note that [option -file] and [option -ibase], while similar looking,
are actually very different. The value of [option -file] is used by
some engines for the generation of proper relative references between
output documents (HTML). As such this is a [term destination]
path. The [option -ibase] on the other hand is used to resolve
relative include paths, and as such deals with [term source] paths.

[para]

The default value of this option is the empty string.


[opt_def -module [arg text]]

The argument of this option is stored in the object and made available
to the configured formatting engine through the command [cmd dt_module].

This command is described in more detail in the companion document
[term doctools_api] which specifies the API between the object and
formatting engines.

[para]

The default value of this option is the empty string.

[para]

The configured formatting engine should interpret the value as the
name of the module the file containing the document which is currently
processed belongs to.


[opt_def -format [arg text]]

The argument of this option specifies the format to generate and by
implication the formatting engine to use when converting text via the
method [method format]. Its default value is the empty string. The
method [method format] cannot be used if this option is not set to a
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
configured format is left untouched.

[para]

The section [sectref {FORMAT MAPPING}] explains in detail how the
package and object will look for engine implementations.


[opt_def -deprecated [arg boolean]]

This option is a boolean flag. The object will generate warnings if
this flag is set and the text given to method [method format] contains
the deprecated markup command [cmd strong].

Its default value is [const FALSE]. In other words, no warnings will
be generated.


[opt_def -copyright [arg text]]

The argument of this option is stored in the object and made available
to the configured formatting engine through the command [cmd dt_copyright].


This command is described in more detail in the companion document
[term doctools_api] which specifies the API between the object and
formatting engines.

[para]

The default value of this option is the empty string.

[para]

The configured formatting engine should interpret the value as a
copyright assignment for the document which is currently processed, or
the package described by it. 

[para]

This information must be used if and only if the engine is unable to
find any copyright assignments within the document itself. Such are
specified by the formatting command [cmd copyright]. This command is
described in more detail in the companion document [term doctools_fmt]
which specifies the [term doctools] format itself.


[list_end]

[subsection {FORMAT MAPPING}]

The package and object will perform the following algorithm when
trying to map a format name [term foo] to a file containing an







<









<




<













|








<







288
289
290
291
292
293
294

295
296
297
298
299
300
301
302
303

304
305
306
307

308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329

330
331
332
333
334
335
336
configured format is left untouched.

[para]

The section [sectref {FORMAT MAPPING}] explains in detail how the
package and object will look for engine implementations.


[opt_def -deprecated [arg boolean]]

This option is a boolean flag. The object will generate warnings if
this flag is set and the text given to method [method format] contains
the deprecated markup command [cmd strong].

Its default value is [const FALSE]. In other words, no warnings will
be generated.


[opt_def -copyright [arg text]]

The argument of this option is stored in the object and made available
to the configured formatting engine through the command [cmd dt_copyright].


This command is described in more detail in the companion document
[term doctools_api] which specifies the API between the object and
formatting engines.

[para]

The default value of this option is the empty string.

[para]

The configured formatting engine should interpret the value as a
copyright assignment for the document which is currently processed, or
the package described by it.

[para]

This information must be used if and only if the engine is unable to
find any copyright assignments within the document itself. Such are
specified by the formatting command [cmd copyright]. This command is
described in more detail in the companion document [term doctools_fmt]
which specifies the [term doctools] format itself.


[list_end]

[subsection {FORMAT MAPPING}]

The package and object will perform the following algorithm when
trying to map a format name [term foo] to a file containing an
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403

[enum]

The mapping fails.

[list_end]


[section {PREDEFINED ENGINES}]

The package provides predefined engines for the following
formats. Some of the engines support parameters. These will be
explained below as well.

[list_begin definitions]







<







379
380
381
382
383
384
385

386
387
388
389
390
391
392

[enum]

The mapping fails.

[list_end]


[section {PREDEFINED ENGINES}]

The package provides predefined engines for the following
formats. Some of the engines support parameters. These will be
explained below as well.

[list_begin definitions]
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
after the [const <body>] tag, starting the body of the generated HTML.

[para]

This can be used to insert boilerplate header markup into the
generated document.


[def meta]

The value for this parameter has to be valid selfcontained HTML markup
for the header section of a HTML document. The default value is the
empty string. The value is inserted into the generated output just
after the [const <head>] tag, starting the header section of the
generated HTML.

[para]

This can be used to insert boilerplate meta data markup into the
generated document, like references to a stylesheet, standard meta
keywords, etc.


[def xref]

The value for this parameter has to be a list of triples specifying
cross-reference information. This information is used by the engine to
create more hyperlinks. Each triple is a list containing a pattern,
symbolic filename and fragment reference, in this order. If a pattern







<













<







417
418
419
420
421
422
423

424
425
426
427
428
429
430
431
432
433
434
435
436

437
438
439
440
441
442
443
after the [const <body>] tag, starting the body of the generated HTML.

[para]

This can be used to insert boilerplate header markup into the
generated document.


[def meta]

The value for this parameter has to be valid selfcontained HTML markup
for the header section of a HTML document. The default value is the
empty string. The value is inserted into the generated output just
after the [const <head>] tag, starting the header section of the
generated HTML.

[para]

This can be used to insert boilerplate meta data markup into the
generated document, like references to a stylesheet, standard meta
keywords, etc.


[def xref]

The value for this parameter has to be a list of triples specifying
cross-reference information. This information is used by the engine to
create more hyperlinks. Each triple is a list containing a pattern,
symbolic filename and fragment reference, in this order. If a pattern
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
[list_begin definitions]
[def "[cmd cmd] [arg word]"]

The command will look for the patterns [const sa,][arg word], and
[arg word], in this order. If this fails if it will convert [arg word]
to all lowercase and try again.


[def "[cmd syscmd] [arg word]"]

The command will look for the patterns [const sa,][arg word], and
[arg word], in this order. If this fails if it will convert [arg word]
to all lowercase and try again.


[def "[cmd term] [arg word]"]

The command will look for the patterns [const kw,][arg word],
[const sa,][arg word], and [arg word], in this order. If this fails if
it will convert [arg word] to all lowercase and try again.


[def "[cmd package] [arg word]"]

The command will look for the patterns [const sa,][arg word],
[const kw,][arg word], and [arg word], in this order. If this fails if
it will convert [arg word] to all lowercase and try again.


[def "[cmd see_also] [arg word]..."]

The command will look for the patterns [const sa,][arg word], and
[arg word], in this order, for each [arg word] given to the
command. If this fails if it will convert [arg word] to all lowercase
and try again.


[def "[cmd keywords] [arg word]..."]

The command will look for the patterns [const kw,][arg word], and
[arg word], in this order, for each [arg word] given to the
command. If this fails if it will convert [arg word] to all lowercase
and try again.


[list_end]
[list_end]
[para]

[def latex]








<





<







<





<








<






<







463
464
465
466
467
468
469

470
471
472
473
474

475
476
477
478
479
480
481

482
483
484
485
486

487
488
489
490
491
492
493
494

495
496
497
498
499
500

501
502
503
504
505
506
507
[list_begin definitions]
[def "[cmd cmd] [arg word]"]

The command will look for the patterns [const sa,][arg word], and
[arg word], in this order. If this fails if it will convert [arg word]
to all lowercase and try again.


[def "[cmd syscmd] [arg word]"]

The command will look for the patterns [const sa,][arg word], and
[arg word], in this order. If this fails if it will convert [arg word]
to all lowercase and try again.


[def "[cmd term] [arg word]"]

The command will look for the patterns [const kw,][arg word],
[const sa,][arg word], and [arg word], in this order. If this fails if
it will convert [arg word] to all lowercase and try again.


[def "[cmd package] [arg word]"]

The command will look for the patterns [const sa,][arg word],
[const kw,][arg word], and [arg word], in this order. If this fails if
it will convert [arg word] to all lowercase and try again.


[def "[cmd see_also] [arg word]..."]

The command will look for the patterns [const sa,][arg word], and
[arg word], in this order, for each [arg word] given to the
command. If this fails if it will convert [arg word] to all lowercase
and try again.


[def "[cmd keywords] [arg word]..."]

The command will look for the patterns [const kw,][arg word], and
[arg word], in this order, for each [arg word] given to the
command. If this fails if it will convert [arg word] to all lowercase
and try again.


[list_end]
[list_end]
[para]

[def latex]

552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
[def wiki]

This engine generates Wiki markup as understood by Jean Claude
Wippler's [syscmd wikit] application.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph doctools] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also doctools_intro]
[see_also doctools_lang_intro]
[see_also doctools_lang_syntax]
[see_also doctools_lang_cmdref]
[see_also doctools_plugin_apiref]
[keywords documentation manpage TMML HTML nroff conversion markup]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<

533
534
535
536
537
538
539
540

541
















542
[def wiki]

This engine generates Wiki markup as understood by Jean Claude
Wippler's [syscmd wikit] application.

[list_end]

[vset CATEGORY doctools]

[include ../doctools2base/include/feedback.inc]
















[manpage_end]

Changes to modules/doctools/doctools_intro.man.

1
2










3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools_intro n 1.0]










[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctools introduction}]
[category  {Documentation tools}]
[description]
[para]



>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools_intro n 1.0]
[see_also docidx_intro]
[see_also doctoc_intro]
[see_also doctools]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_faq]
[see_also doctools_lang_intro]
[see_also doctools_lang_syntax]
[see_also doctools_plugin_apiref]
[keywords markup]
[keywords {semantic markup}]
[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctools introduction}]
[category  {Documentation tools}]
[description]
[para]

84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
[term {keyword indices}], and [term {tables of contents}],
respectively.

They are described in their own sets of documents, starting at the
[term {docidx introduction}] and the [term {doctoc introduction}],
respectively.


[section {BUGS, IDEAS, FEEDBACK}]

This document, will undoubtedly contain bugs and other problems.

Please report such in the category [emph doctools] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have.

[see_also doctools_lang_intro]
[see_also doctools_lang_syntax]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_faq]
[see_also doctools]
[see_also doctools_plugin_apiref]
[see_also doctoc_intro]
[see_also docidx_intro]
[keywords markup {semantic markup}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<

94
95
96
97
98
99
100
101

102
















103
[term {keyword indices}], and [term {tables of contents}],
respectively.

They are described in their own sets of documents, starting at the
[term {docidx introduction}] and the [term {doctoc introduction}],
respectively.

[vset CATEGORY doctools]

[include ../doctools2base/include/feedback.inc]
















[manpage_end]

Changes to modules/doctools/doctools_lang_cmdref.man.

1
2









3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools_lang_cmdref n 1.0]









[copyright {2007-2010 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctools language command reference}]
[category  {Documentation tools}]
[description]
[para]

This document specifies both names and syntax of all the commands
which together are the doctools markup language, version 1.

As this document is intended to be a reference the commands are listed
in alphabetical order, and the descriptions are relatively short.

A beginner should read the much more informally written
[term {doctools language introduction}] first.


[section Commands]
[list_begin definitions]

[call [cmd arg] [arg text]]

Text markup. The argument text is marked up as the [term argument] of


>
>
>
>
>
>
>
>
>















<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

27
28
29
30
31
32
33
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools_lang_cmdref n 1.0]
[see_also doctools_intro]
[see_also doctools_lang_faq]
[see_also doctools_lang_intro]
[see_also doctools_lang_syntax]
[keywords {doctools commands}]
[keywords {doctools language}]
[keywords {doctools markup}]
[keywords markup]
[keywords {semantic markup}]
[copyright {2007-2010 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctools language command reference}]
[category  {Documentation tools}]
[description]
[para]

This document specifies both names and syntax of all the commands
which together are the doctools markup language, version 1.

As this document is intended to be a reference the commands are listed
in alphabetical order, and the descriptions are relatively short.

A beginner should read the much more informally written
[term {doctools language introduction}] first.


[section Commands]
[list_begin definitions]

[call [cmd arg] [arg text]]

Text markup. The argument text is marked up as the [term argument] of
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
[cmd method], [cmd option] etc., as is appropriate, and that the
command itself is marked up with [cmd cmd].

It is expected that the formatted term is not only printed in place,
but also in the table of contents of the document, or synopsis,
depending on the output format.


[call [cmd category] [arg text]]

Document information. Anywhere. This command registers its plain text
arguments as the category this document belongs to. If this command is
used multiple times the last value specified is used.


[call [cmd class] [arg text]]

Text markup. The argument is marked up as the name of a
[term class]. The text may have other markup already applied to
it. Main use is the highlighting of class names in free-form text.








<





<







62
63
64
65
66
67
68

69
70
71
72
73

74
75
76
77
78
79
80
[cmd method], [cmd option] etc., as is appropriate, and that the
command itself is marked up with [cmd cmd].

It is expected that the formatted term is not only printed in place,
but also in the table of contents of the document, or synopsis,
depending on the output format.


[call [cmd category] [arg text]]

Document information. Anywhere. This command registers its plain text
arguments as the category this document belongs to. If this command is
used multiple times the last value specified is used.


[call [cmd class] [arg text]]

Text markup. The argument is marked up as the name of a
[term class]. The text may have other markup already applied to
it. Main use is the highlighting of class names in free-form text.

249
250
251
252
253
254
255









256
257
258
259
260
261
262
263
264
265
266
267
268
269
[call [cmd lst_item] [arg text]]

[emph Deprecated]. Text structure. List element. Definition list. See
[cmd def] for the canonical command to open a general list item in a
definition list.

[call [cmd manpage_begin] [arg command] [arg section] [arg version]]










Document structure. The command to start a manpage. The arguments are
the name of the [arg command] described by the manpage, the
[arg section] of the manpages this manpage resides in, and the
[arg version] of the module containing the command. All arguments have
to be plain text, without markup.

[call [cmd manpage_end]]

Document structure. Command to end a manpage/document. Anything in the document
coming after this command is in error.

[call [cmd method] [arg text]]








>
>
>
>
>
>
>
>
>






<







255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276

277
278
279
280
281
282
283
[call [cmd lst_item] [arg text]]

[emph Deprecated]. Text structure. List element. Definition list. See
[cmd def] for the canonical command to open a general list item in a
definition list.

[call [cmd manpage_begin] [arg command] [arg section] [arg version]]
[see_also doctools_intro]
[see_also doctools_lang_faq]
[see_also doctools_lang_intro]
[see_also doctools_lang_syntax]
[keywords {doctools commands}]
[keywords {doctools language}]
[keywords {doctools markup}]
[keywords markup]
[keywords {semantic markup}]

Document structure. The command to start a manpage. The arguments are
the name of the [arg command] described by the manpage, the
[arg section] of the manpages this manpage resides in, and the
[arg version] of the module containing the command. All arguments have
to be plain text, without markup.

[call [cmd manpage_end]]

Document structure. Command to end a manpage/document. Anything in the document
coming after this command is in error.

[call [cmd method] [arg text]]

349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
used in the output, otherwise [arg text] is used.

[call [cmd sectref-external] [arg text]]

Text markup. Like [cmd sectref], except that the section is assumed to
be in a different document and therefore doesn't need to be identified,
nor are any checks for existence made. Only the text to format is needed.


[call [cmd see_also] [arg args]]

Document information. Anywhere. The command defines direct cross-references
to other documents. Each argument is a plain text label identifying the
referenced document. If this command is used multiple times all the arguments
accumulate.







<







363
364
365
366
367
368
369

370
371
372
373
374
375
376
used in the output, otherwise [arg text] is used.

[call [cmd sectref-external] [arg text]]

Text markup. Like [cmd sectref], except that the section is assumed to
be in a different document and therefore doesn't need to be identified,
nor are any checks for existence made. Only the text to format is needed.


[call [cmd see_also] [arg args]]

Document information. Anywhere. The command defines direct cross-references
to other documents. Each argument is a plain text label identifying the
referenced document. If this command is used multiple times all the arguments
accumulate.
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472

Text markup. The argument is marked up as the name of a
[term widget]. The text may have other markup already applied to
it. Main use is the highlighting of widget names in free-form text.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph doctools] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[see_also doctools_intro]
[see_also doctools_lang_intro]
[see_also doctools_lang_syntax]
[see_also doctools_lang_faq]
[keywords markup {semantic markup}]
[keywords {doctools markup} {doctools language} {doctools commands}]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<
<
<
<
<

461
462
463
464
465
466
467

468


469












470

Text markup. The argument is marked up as the name of a
[term widget]. The text may have other markup already applied to
it. Main use is the highlighting of widget names in free-form text.

[list_end]


[vset CATEGORY doctools]


[include ../doctools2base/include/feedback.inc]












[manpage_end]

Changes to modules/doctools/doctools_lang_faq.man.

1
2











3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools_lang_faq n 1.0]











[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctools language faq}]
[category  {Documentation tools}]
[description]
[para]

[section OVERVIEW]

[subsection {What is this document?}]

This document is currently mainly a placeholder, to be filled with
commonly asked questions about the doctools markup language and
companions, and their answers.

[para]

Please report any questions (and, if possible, answers) we should
consider for this document in the category [emph doctools] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

[section EXAMPLES]

[subsection {Where do I find doctools examples?}]

The most examples of doctools markup currently known can be found in
the Tcllib and Tklib package bundles where basically the documentation
of all packages is written in it.

In Tcllib you will also find the sources for the doctools
documentation themselves, which makes use of nearly all of the
available markup commands.

You need one of

[list_begin enumerated]

[enum]
A CVS snapshot of Tcllib. How to retrieve such a snapshot and the
tools required for this are described at
[uri http://sourceforge.net/cvs/?group_id=12883]

[enum]
A Tcllib release archive. They are available at
[uri http://sourceforge.net/project/showfiles.php?group_id=12883]

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, will undoubtedly contain bugs and other problems.

Please report any such in the category [emph doctools] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
the package and/or the documentation.

[see_also doctools_lang_intro]
[see_also doctools_lang_syntax]
[see_also doctools_lang_cmdref]
[keywords examples faq markup {semantic markup}]
[keywords {doctools markup} {doctools language}]
[keywords {doctools syntax} {doctools commands}]
[manpage_end]


>
>
>
>
>
>
>
>
>
>
>





|



<
|
<
<
<
|
<

<
<
<
|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

23



24

25



26

27










































28
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools_lang_faq n 1.0]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_intro]
[see_also doctools_lang_syntax]
[keywords {doctools commands}]
[keywords {doctools language}]
[keywords {doctools markup}]
[keywords {doctools syntax}]
[keywords examples]
[keywords faq]
[keywords markup]
[keywords {semantic markup}]
[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctools language faq}]
[category  {Documentation tools}]
[description]
[vset theformat doctools]

[section OVERVIEW]


[include include/placeholder.inc]



[include include/examples.inc]





[vset CATEGORY doctools]

[include ../doctools2base/include/feedback.inc]










































[manpage_end]

Changes to modules/doctools/doctools_lang_intro.man.

1
2










3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools_lang_intro n 1.0]










[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctools language introduction}]
[category  {Documentation tools}]
[description]
[para]



>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools_lang_intro n 1.0]
[see_also doctools_intro]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_faq]
[see_also doctools_lang_syntax]
[keywords {doctools commands}]
[keywords {doctools language}]
[keywords {doctools markup}]
[keywords {doctools syntax}]
[keywords markup]
[keywords {semantic markup}]
[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctools language introduction}]
[category  {Documentation tools}]
[description]
[para]

41
42
43
44
45
46
47
48
49
50
51
52
53
54










55


56
57
58
59
60
61
62
63
  ... [term {complex concept}] ...
}]

[example {
  ... [opt "[arg key] [arg value]"] ...
}]


[subsection {Basic structure}]

The most simple document which can be written in doctools is

[example {
    [manpage_begin NAME SECTION VERSION]










    [description]


    [manpage_end]
}]

This also shows us that all doctools documents are split into two
parts, the [term header] and the [term body]. Everything coming before
[lb][cmd description][rb] belongs to the header, and everything coming
after belongs to the body, with the whole document bracketed by the
two [cmd manpage_*] commands. Before and after these opening and







<






>
>
>
>
>
>
>
>
>
>

>
>
|







51
52
53
54
55
56
57

58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
  ... [term {complex concept}] ...
}]

[example {
  ... [opt "[arg key] [arg value]"] ...
}]


[subsection {Basic structure}]

The most simple document which can be written in doctools is

[example {
    [manpage_begin NAME SECTION VERSION]
[see_also doctools_intro]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_faq]
[see_also doctools_lang_syntax]
[keywords {doctools commands}]
[keywords {doctools language}]
[keywords {doctools markup}]
[keywords {doctools syntax}]
[keywords markup]
[keywords {semantic markup}]
    [description]
    [vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]
}]

This also shows us that all doctools documents are split into two
parts, the [term header] and the [term body]. Everything coming before
[lb][cmd description][rb] belongs to the header, and everything coming
after belongs to the body, with the whole document bracketed by the
two [cmd manpage_*] commands. Before and after these opening and
95
96
97
98
99
100
101










102
103
104
105
106
107
108
109
110
111
112
113
114










115
116


117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132










133
134
135
136
137
138
139
140
141
142
143
144
145
146
147










148
149
150
151
152
153
154
155
156
157
158
159
160










161
162
163
164
165
166
167
168
169
170










171
172
173
174
175
176
177
178
179










180
181
182
183
184
185
186
187
188
189

[para]

Given the above a less minimal example of a document is

[example_begin]
[lb]manpage_begin NAME SECTION VERSION[rb]










[lb][cmd {copyright {YEAR AUTHOR}}][rb]
[lb][cmd {titledesc TITLE}][rb]
[lb][cmd {moddesc   MODULE_TITLE}][rb]
[lb][cmd {require   PACKAGE VERSION}][rb]
[lb][cmd {require   PACKAGE}][rb]
[lb]description[rb]
[lb]manpage_end[rb]
[example_end]

Remember that the whitespace is optional. The document

[example {
    [manpage_begin NAME SECTION VERSION]










    [copyright {YEAR AUTHOR}][titledesc TITLE][moddesc MODULE_TITLE]
    [require PACKAGE VERSION][require PACKAGE][description]


    [manpage_end]
}]

has the same meaning as the example before.

[para]

On the other hand, if [term whitespace] is present it consists not
only of any sequence of characters containing the space character,
horizontal and vertical tabs, carriage return, and newline, but it may
contain comment markup as well, in the form of the [cmd comment]
command.

[example_begin]
[lb][cmd {comment { ... }}][rb]
[lb]manpage_begin NAME SECTION VERSION[rb]










[lb]copyright {YEAR AUTHOR}[rb]
[lb]titledesc TITLE[rb]
[lb]moddesc   MODULE_TITLE[rb][lb][cmd {comment { ... }}][rb]
[lb]require   PACKAGE VERSION[rb]
[lb]require   PACKAGE[rb]
[lb]description[rb]
[lb]manpage_end[rb]
[lb][cmd {comment { ... }}][rb]
[example_end]


[subsection {Advanced structure}]

In the simple examples of the last section we fudged a bit regarding
the markup actually allowed to be used before the [cmd manpage_begin]










command opening the document.

[para]

Instead of only whitespace the two templating commands [cmd include]
and [cmd vset] are also allowed, to enable the writer to either set
and/or import configuration settings relevant to the document. I.e. it
is possible to write

[example_begin]
[lb][cmd {include FILE}][rb]
[lb][cmd {vset VAR VALUE}][rb]
[lb]manpage_begin NAME SECTION VERSION[rb]










[lb]description[rb]
[lb]manpage_end[rb]
[example_end]

Even more important, these two commands are allowed anywhere where a
markup command is allowed, without regard for any other
structure. I.e. for example in the header as well.

[example_begin]
[lb]manpage_begin NAME SECTION VERSION[rb]










[lb][cmd {include FILE}][rb]
[lb][cmd {vset VAR VALUE}][rb]
[lb]description[rb]
[lb]manpage_end[rb]
[example_end]

The only restriction [cmd include] has to obey is that the contents of
the included file must be valid at the place of the inclusion. I.e. a
file included before [cmd manpage_begin] may contain only the










templating commands [cmd vset] and [cmd include], a file included in
the header may contain only header commands, etc.


[subsection {Text structure}]

The body of the document consists mainly of text, possibly split into
sections, subsections, and paragraphs, with parts marked up to
highlight various semantic categories of text, and additional
structure through the use of examples and (nested) lists.







>
>
>
>
>
>
>
>
>
>













>
>
>
>
>
>
>
>
>
>


>
>
|















>
>
>
>
>
>
>
>
>
>










<




>
>
>
>
>
>
>
>
>
>













>
>
>
>
>
>
>
>
>
>










>
>
>
>
>
>
>
>
>
>









>
>
>
>
>
>
>
>
>
>


<







116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195

196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273

274
275
276
277
278
279
280

[para]

Given the above a less minimal example of a document is

[example_begin]
[lb]manpage_begin NAME SECTION VERSION[rb]
[see_also doctools_intro]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_faq]
[see_also doctools_lang_syntax]
[keywords {doctools commands}]
[keywords {doctools language}]
[keywords {doctools markup}]
[keywords {doctools syntax}]
[keywords markup]
[keywords {semantic markup}]
[lb][cmd {copyright {YEAR AUTHOR}}][rb]
[lb][cmd {titledesc TITLE}][rb]
[lb][cmd {moddesc   MODULE_TITLE}][rb]
[lb][cmd {require   PACKAGE VERSION}][rb]
[lb][cmd {require   PACKAGE}][rb]
[lb]description[rb]
[lb]manpage_end[rb]
[example_end]

Remember that the whitespace is optional. The document

[example {
    [manpage_begin NAME SECTION VERSION]
[see_also doctools_intro]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_faq]
[see_also doctools_lang_syntax]
[keywords {doctools commands}]
[keywords {doctools language}]
[keywords {doctools markup}]
[keywords {doctools syntax}]
[keywords markup]
[keywords {semantic markup}]
    [copyright {YEAR AUTHOR}][titledesc TITLE][moddesc MODULE_TITLE]
    [require PACKAGE VERSION][require PACKAGE][description]
    [vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]
}]

has the same meaning as the example before.

[para]

On the other hand, if [term whitespace] is present it consists not
only of any sequence of characters containing the space character,
horizontal and vertical tabs, carriage return, and newline, but it may
contain comment markup as well, in the form of the [cmd comment]
command.

[example_begin]
[lb][cmd {comment { ... }}][rb]
[lb]manpage_begin NAME SECTION VERSION[rb]
[see_also doctools_intro]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_faq]
[see_also doctools_lang_syntax]
[keywords {doctools commands}]
[keywords {doctools language}]
[keywords {doctools markup}]
[keywords {doctools syntax}]
[keywords markup]
[keywords {semantic markup}]
[lb]copyright {YEAR AUTHOR}[rb]
[lb]titledesc TITLE[rb]
[lb]moddesc   MODULE_TITLE[rb][lb][cmd {comment { ... }}][rb]
[lb]require   PACKAGE VERSION[rb]
[lb]require   PACKAGE[rb]
[lb]description[rb]
[lb]manpage_end[rb]
[lb][cmd {comment { ... }}][rb]
[example_end]


[subsection {Advanced structure}]

In the simple examples of the last section we fudged a bit regarding
the markup actually allowed to be used before the [cmd manpage_begin]
[see_also doctools_intro]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_faq]
[see_also doctools_lang_syntax]
[keywords {doctools commands}]
[keywords {doctools language}]
[keywords {doctools markup}]
[keywords {doctools syntax}]
[keywords markup]
[keywords {semantic markup}]
command opening the document.

[para]

Instead of only whitespace the two templating commands [cmd include]
and [cmd vset] are also allowed, to enable the writer to either set
and/or import configuration settings relevant to the document. I.e. it
is possible to write

[example_begin]
[lb][cmd {include FILE}][rb]
[lb][cmd {vset VAR VALUE}][rb]
[lb]manpage_begin NAME SECTION VERSION[rb]
[see_also doctools_intro]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_faq]
[see_also doctools_lang_syntax]
[keywords {doctools commands}]
[keywords {doctools language}]
[keywords {doctools markup}]
[keywords {doctools syntax}]
[keywords markup]
[keywords {semantic markup}]
[lb]description[rb]
[lb]manpage_end[rb]
[example_end]

Even more important, these two commands are allowed anywhere where a
markup command is allowed, without regard for any other
structure. I.e. for example in the header as well.

[example_begin]
[lb]manpage_begin NAME SECTION VERSION[rb]
[see_also doctools_intro]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_faq]
[see_also doctools_lang_syntax]
[keywords {doctools commands}]
[keywords {doctools language}]
[keywords {doctools markup}]
[keywords {doctools syntax}]
[keywords markup]
[keywords {semantic markup}]
[lb][cmd {include FILE}][rb]
[lb][cmd {vset VAR VALUE}][rb]
[lb]description[rb]
[lb]manpage_end[rb]
[example_end]

The only restriction [cmd include] has to obey is that the contents of
the included file must be valid at the place of the inclusion. I.e. a
file included before [cmd manpage_begin] may contain only the
[see_also doctools_intro]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_faq]
[see_also doctools_lang_syntax]
[keywords {doctools commands}]
[keywords {doctools language}]
[keywords {doctools markup}]
[keywords {doctools syntax}]
[keywords markup]
[keywords {semantic markup}]
templating commands [cmd vset] and [cmd include], a file included in
the header may contain only header commands, etc.


[subsection {Text structure}]

The body of the document consists mainly of text, possibly split into
sections, subsections, and paragraphs, with parts marked up to
highlight various semantic categories of text, and additional
structure through the use of examples and (nested) lists.
200
201
202
203
204
205
206










207
208
209
210
211
212
213
of this command closes the previous paragraph and automatically opens
the next. The first paragraph is automatically opened at the beginning
of the body, by [cmd description]. In the same manner the last
paragraph automatically ends at [cmd manpage_end].

[example_begin]
[lb]manpage_begin NAME SECTION VERSION[rb]










[lb]description[rb]
 ...
[lb][cmd para][rb]
 ...
[lb][cmd para][rb]
 ...
[lb]manpage_end[rb]







>
>
>
>
>
>
>
>
>
>







291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
of this command closes the previous paragraph and automatically opens
the next. The first paragraph is automatically opened at the beginning
of the body, by [cmd description]. In the same manner the last
paragraph automatically ends at [cmd manpage_end].

[example_begin]
[lb]manpage_begin NAME SECTION VERSION[rb]
[see_also doctools_intro]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_faq]
[see_also doctools_lang_syntax]
[keywords {doctools commands}]
[keywords {doctools language}]
[keywords {doctools markup}]
[keywords {doctools syntax}]
[keywords markup]
[keywords {semantic markup}]
[lb]description[rb]
 ...
[lb][cmd para][rb]
 ...
[lb][cmd para][rb]
 ...
[lb]manpage_end[rb]
229
230
231
232
233
234
235










236
237
238
239
240
241
242
[para]

Empty sections are [emph not] ignored. We are free to (not) use
paragraphs within sections.

[example_begin]
[lb]manpage_begin NAME SECTION VERSION[rb]










[lb]description[rb]
 ...
[lb][cmd {section {Section A}}][rb]
 ...
[lb]para[rb]
 ...
[lb][cmd {section {Section B}}][rb]







>
>
>
>
>
>
>
>
>
>







330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
[para]

Empty sections are [emph not] ignored. We are free to (not) use
paragraphs within sections.

[example_begin]
[lb]manpage_begin NAME SECTION VERSION[rb]
[see_also doctools_intro]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_faq]
[see_also doctools_lang_syntax]
[keywords {doctools commands}]
[keywords {doctools language}]
[keywords {doctools markup}]
[keywords {doctools syntax}]
[keywords markup]
[keywords {semantic markup}]
[lb]description[rb]
 ...
[lb][cmd {section {Section A}}][rb]
 ...
[lb]para[rb]
 ...
[lb][cmd {section {Section B}}][rb]
256
257
258
259
260
261
262










263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
[para]

Empty subsections are [emph not] ignored. We are free to (not) use
paragraphs within subsections.

[example_begin]
[lb]manpage_begin NAME SECTION VERSION[rb]










[lb]description[rb]
 ...
[lb]section {Section A}[rb]
 ...
[lb][cmd {subsection {Sub 1}}][rb]
 ...
[lb]para[rb]
 ...
[lb][cmd {subsection {Sub 2}}][rb]
 ...
[lb]section {Section B}[rb]
 ...
[lb]manpage_end[rb]
[example_end]


[subsection {Text markup}]

Having handled the overall structure a writer can impose on the
document we now take a closer at the text in a paragraph.

[para]







>
>
>
>
>
>
>
>
>
>














<







367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397

398
399
400
401
402
403
404
[para]

Empty subsections are [emph not] ignored. We are free to (not) use
paragraphs within subsections.

[example_begin]
[lb]manpage_begin NAME SECTION VERSION[rb]
[see_also doctools_intro]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_faq]
[see_also doctools_lang_syntax]
[keywords {doctools commands}]
[keywords {doctools language}]
[keywords {doctools markup}]
[keywords {doctools syntax}]
[keywords markup]
[keywords {semantic markup}]
[lb]description[rb]
 ...
[lb]section {Section A}[rb]
 ...
[lb][cmd {subsection {Sub 1}}][rb]
 ...
[lb]para[rb]
 ...
[lb][cmd {subsection {Sub 2}}][rb]
 ...
[lb]section {Section B}[rb]
 ...
[lb]manpage_end[rb]
[example_end]


[subsection {Text markup}]

Having handled the overall structure a writer can impose on the
document we now take a closer at the text in a paragraph.

[para]
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
  Text structure. List element. Argument list. Automatically closes the
  previous list element. Specifies the data-[lb][cmd {arg type}][rb] of the described
  argument of a command, its [lb][cmd {arg name}][rb] and its i/o-[lb][cmd {arg mode}][rb]. The
  latter is optional.
  ...
[example_end]


[subsection Escapes]

Beyond the 20 commands for simple markup shown in the previous section
we have two more available which are technically simple markup.

However their function is not the marking up of phrases as specific
types of things, but the insertion of characters, namely [const [lb]]







<







461
462
463
464
465
466
467

468
469
470
471
472
473
474
  Text structure. List element. Argument list. Automatically closes the
  previous list element. Specifies the data-[lb][cmd {arg type}][rb] of the described
  argument of a command, its [lb][cmd {arg name}][rb] and its i/o-[lb][cmd {arg mode}][rb]. The
  latter is optional.
  ...
[example_end]


[subsection Escapes]

Beyond the 20 commands for simple markup shown in the previous section
we have two more available which are technically simple markup.

However their function is not the marking up of phrases as specific
types of things, but the insertion of characters, namely [const [lb]]
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
[example_begin]
  ...
  These commands, [lb]cmd lb[rb] and [lb]cmd lb[rb] respectively, are required
  because our use of [lb][cmd lb][rb] and [lb][cmd rb][rb] to bracket markup commands makes it
  impossible to directly use [lb][cmd lb][rb] and [lb][cmd rb][rb] within the text.
  ...
[example_end]


[subsection Cross-references]

The last two commands we have to discuss are for the declaration of
cross-references between documents, explicit and implicit. They are
[cmd keywords] and [cmd see_also]. Both take an arbitrary number of
arguments, all of which have to be plain unmarked text. I.e. it is not







<







486
487
488
489
490
491
492

493
494
495
496
497
498
499
[example_begin]
  ...
  These commands, [lb]cmd lb[rb] and [lb]cmd lb[rb] respectively, are required
  because our use of [lb][cmd lb][rb] and [lb][cmd rb][rb] to bracket markup commands makes it
  impossible to directly use [lb][cmd lb][rb] and [lb][cmd rb][rb] within the text.
  ...
[example_end]


[subsection Cross-references]

The last two commands we have to discuss are for the declaration of
cross-references between documents, explicit and implicit. They are
[cmd keywords] and [cmd see_also]. Both take an arbitrary number of
arguments, all of which have to be plain unmarked text. I.e. it is not
399
400
401
402
403
404
405










406
407
408
409
410
411
412

[list_end]

[para]

All the cross-reference commands can occur anywhere in the document
between [cmd manpage_begin] and [cmd manpage_end]. As such the writer










can choose whether she wants to have them at the beginning of the
body, or at its end, maybe near the place a keyword is actually
defined by the main content, or considers them as meta data which
should be in the header, etc.

[para]








>
>
>
>
>
>
>
>
>
>







517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540

[list_end]

[para]

All the cross-reference commands can occur anywhere in the document
between [cmd manpage_begin] and [cmd manpage_end]. As such the writer
[see_also doctools_intro]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_faq]
[see_also doctools_lang_syntax]
[keywords {doctools commands}]
[keywords {doctools language}]
[keywords {doctools markup}]
[keywords {doctools syntax}]
[keywords markup]
[keywords {semantic markup}]
can choose whether she wants to have them at the beginning of the
body, or at its end, maybe near the place a keyword is actually
defined by the main content, or considers them as meta data which
should be in the header, etc.

[para]

420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
  [lb][cmd {see_also doctools_lang_syntax}][rb]
  [lb][cmd {see_also doctools_lang_cmdref}][rb]
  [lb][cmd {keywords markup {semantic markup}}][rb]
  [lb][cmd {keywords {doctools markup} {doctools language}}][rb]
  [lb][cmd {keywords {doctools syntax} {doctools commands}}][rb]
  [lb]manpage_end[rb]
[example_end]


[subsection Examples]

Where ever we can write plain text we can write examples too. For
simple examples we have the command [cmd example] which takes a single
argument, the text of the argument. The example text must not contain
markup. If we wish to have markup within an example we have to use the







<







548
549
550
551
552
553
554

555
556
557
558
559
560
561
  [lb][cmd {see_also doctools_lang_syntax}][rb]
  [lb][cmd {see_also doctools_lang_cmdref}][rb]
  [lb][cmd {keywords markup {semantic markup}}][rb]
  [lb][cmd {keywords {doctools markup} {doctools language}}][rb]
  [lb][cmd {keywords {doctools syntax} {doctools commands}}][rb]
  [lb]manpage_end[rb]
[example_end]


[subsection Examples]

Where ever we can write plain text we can write examples too. For
simple examples we have the command [cmd example] which takes a single
argument, the text of the argument. The example text must not contain
markup. If we wish to have markup within an example we have to use the
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
Using [cmd example_begin] / [cmd example_end] this would look like

[example_begin]
  [lb][cmd example_begin][rb]
    ... [lb]list_begin enumerated[rb] ...
  [lb][cmd example_end][rb]
[example_end]


[subsection Lists]

Where ever we can write plain text we can write lists too. The main
commands are [cmd list_begin] to start a list, and [cmd list_end] to
close one. The opening command takes an argument specifying the type
of list started it, and this in turn determines which of the eight







<







585
586
587
588
589
590
591

592
593
594
595
596
597
598
Using [cmd example_begin] / [cmd example_end] this would look like

[example_begin]
  [lb][cmd example_begin][rb]
    ... [lb]list_begin enumerated[rb] ...
  [lb][cmd example_end][rb]
[example_end]


[subsection Lists]

Where ever we can write plain text we can write lists too. The main
commands are [cmd list_begin] to start a list, and [cmd list_end] to
close one. The opening command takes an argument specifying the type
of list started it, and this in turn determines which of the eight
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
  ...
  [lb][cmd {section {ILLEGAL WITHIN THE LIST}}][rb]
  ...
  [lb]list_end[rb]
  ...
[example_end]


[section {FURTHER READING}]

Now that this document has been digested the reader, assumed to be a
[term writer] of documentation should be fortified enough to be able
to understand the formal [term {doctools language syntax}]
specification as well. From here on out the
[term {doctools language command reference}] will also serve as the
detailed specification and cheat sheet for all available commands and
their syntax.

[para]

To be able to validate a document while writing it, it is also
recommended to familiarize oneself with one of the applications for
the processing and conversion of doctools documents, i.e. either
Tcllib's easy and simple [syscmd dtplite], or Tclapps'
ultra-configurable [syscmd dtp].


[section {BUGS, IDEAS, FEEDBACK}]

This document, will undoubtedly contain bugs and other problems.

Please report such in the category [emph doctools] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have.

[see_also doctools_intro]
[see_also doctools_lang_syntax]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_faq]
[keywords markup {semantic markup}]
[keywords {doctools markup} {doctools language}]
[keywords {doctools syntax} {doctools commands}]
[manpage_end]







<


















|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<

700
701
702
703
704
705
706

707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725

726














727
  ...
  [lb][cmd {section {ILLEGAL WITHIN THE LIST}}][rb]
  ...
  [lb]list_end[rb]
  ...
[example_end]


[section {FURTHER READING}]

Now that this document has been digested the reader, assumed to be a
[term writer] of documentation should be fortified enough to be able
to understand the formal [term {doctools language syntax}]
specification as well. From here on out the
[term {doctools language command reference}] will also serve as the
detailed specification and cheat sheet for all available commands and
their syntax.

[para]

To be able to validate a document while writing it, it is also
recommended to familiarize oneself with one of the applications for
the processing and conversion of doctools documents, i.e. either
Tcllib's easy and simple [syscmd dtplite], or Tclapps'
ultra-configurable [syscmd dtp].

[vset CATEGORY doctools]

[include ../doctools2base/include/feedback.inc]














[manpage_end]

Changes to modules/doctools/doctools_lang_syntax.man.

1
2










3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools_lang_syntax n 1.0]










[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctools language syntax}]
[category  {Documentation tools}]
[description]
[para]

This document contains the formal specification of the syntax of the
doctools markup language, version 1 in Backus-Naur-Form. This document
is intended to be a reference, complementing the
[term {doctools language command reference}].

A beginner should read the much more informally written
[term {doctools language introduction}] first before trying to
understand either this document or the command reference.


[section Fundamentals]

In the broadest terms possible the [term {doctools markup language}]
is LaTeX-like, instead of like SGML and similar languages. A document
written in this language consists primarily of text, with markup
commands embedded into it.


>
>
>
>
>
>
>
>
>
>















<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

28
29
30
31
32
33
34
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools_lang_syntax n 1.0]
[see_also doctools_intro]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_faq]
[see_also doctools_lang_intro]
[keywords {doctools commands}]
[keywords {doctools language}]
[keywords {doctools markup}]
[keywords {doctools syntax}]
[keywords markup]
[keywords {semantic markup}]
[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctools language syntax}]
[category  {Documentation tools}]
[description]
[para]

This document contains the formal specification of the syntax of the
doctools markup language, version 1 in Backus-Naur-Form. This document
is intended to be a reference, complementing the
[term {doctools language command reference}].

A beginner should read the much more informally written
[term {doctools language introduction}] first before trying to
understand either this document or the command reference.


[section Fundamentals]

In the broadest terms possible the [term {doctools markup language}]
is LaTeX-like, instead of like SGML and similar languages. A document
written in this language consists primarily of text, with markup
commands embedded into it.
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74

The rules listed here specify only the syntax of doctools
documents. The lexical level of the language was covered in the
previous section.

[para]

Regarding the syntax of the (E)BNF itself 

[list_begin enumerated]
[enum]
The construct { X } stands for zero or more occurrences of X.
[enum]
The construct [lb] X [rb] stands for zero or one occurrence of X.
[enum]







|







69
70
71
72
73
74
75
76
77
78
79
80
81
82
83

The rules listed here specify only the syntax of doctools
documents. The lexical level of the language was covered in the
previous section.

[para]

Regarding the syntax of the (E)BNF itself

[list_begin enumerated]
[enum]
The construct { X } stands for zero or more occurrences of X.
[enum]
The construct [lb] X [rb] stands for zero or one occurrence of X.
[enum]
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
def_list    = [ <WHITE> ] { (DEF|CALL)   paras }
enum_list   = [ <WHITE> ] { ENUM         paras }
item_list   = [ <WHITE> ] { ITEM         paras }
optd_list   = [ <WHITE> ] { OPT_DEF      paras }
tkoptd_list = [ <WHITE> ] { TKOPTION_DEF paras }
}]


[section {BUGS, IDEAS, FEEDBACK}]

This document, will undoubtedly contain bugs and other problems.

Please report such in the category [emph doctools] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have.

[see_also doctools_intro]
[see_also doctools_lang_intro]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_faq]
[keywords markup {semantic markup}]
[keywords {doctools markup} {doctools language}]
[keywords {doctools syntax} {doctools commands}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<

133
134
135
136
137
138
139
140

141














142
def_list    = [ <WHITE> ] { (DEF|CALL)   paras }
enum_list   = [ <WHITE> ] { ENUM         paras }
item_list   = [ <WHITE> ] { ITEM         paras }
optd_list   = [ <WHITE> ] { OPT_DEF      paras }
tkoptd_list = [ <WHITE> ] { TKOPTION_DEF paras }
}]

[vset CATEGORY doctools]

[include ../doctools2base/include/feedback.inc]














[manpage_end]

Changes to modules/doctools/doctools_plugin_apiref.man.

1
2












3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools_plugin_apiref n 1.1]












[copyright {2007-2010 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctools plugin API reference}]
[category  {Documentation tools}]
[description]
[para]



>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools_plugin_apiref n 1.1]
[see_also doctools]
[see_also doctools_intro]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_faq]
[see_also doctools_lang_intro]
[see_also doctools_lang_syntax]
[keywords document]
[keywords formatter]
[keywords {formatting engine}]
[keywords manpage]
[keywords markup]
[keywords {semantic markup}]
[copyright {2007-2010 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctools plugin API reference}]
[category  {Documentation tools}]
[description]
[para]

26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
A reader who is on the other hand more interested in the markup
language itself should start with the

[term {doctools language introduction}] and proceed from there to the
formal specifications, i.e. the [term {doctools language syntax}] and
the [term {doctools language command reference}].



[section OVERVIEW]

The API for a doctools formatting engine consists of two major
sections.

[para]








<
<







38
39
40
41
42
43
44


45
46
47
48
49
50
51
A reader who is on the other hand more interested in the markup
language itself should start with the

[term {doctools language introduction}] and proceed from there to the
formal specifications, i.e. the [term {doctools language syntax}] and
the [term {doctools language command reference}].



[section OVERVIEW]

The API for a doctools formatting engine consists of two major
sections.

[para]

49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
And on the other side the plugin has to provide its own set of
commands which will then be called by the frontend in a specific
sequence while processing input. They, again, fall into two
categories, management and formatting.

Please see section [sectref {PLUGIN COMMANDS}] and its subsections for
their detailed specification.



[section {FRONTEND COMMANDS}]

This section specifies the set of commands through which a plugin,
also known as a doctools formatting engine, is able to query the
frontend. These commands are provided by the frontend and linked into
the plugin interpreter.







<
<







59
60
61
62
63
64
65


66
67
68
69
70
71
72
And on the other side the plugin has to provide its own set of
commands which will then be called by the frontend in a specific
sequence while processing input. They, again, fall into two
categories, management and formatting.

Please see section [sectref {PLUGIN COMMANDS}] and its subsections for
their detailed specification.



[section {FRONTEND COMMANDS}]

This section specifies the set of commands through which a plugin,
also known as a doctools formatting engine, is able to query the
frontend. These commands are provided by the frontend and linked into
the plugin interpreter.
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244

The plugin has to provide its own set of commands which will then be
called by the frontend in a specific sequence while processing
input. They fall into two categories, management and formatting. Their
expected names, signatures, and responsibilities are specified in the
following two subsections.



[subsection {Management commands}]

The management commands a plugin has to provide are used by the
frontend to

[list_begin enumerated]
[enum] initialize and shutdown the plugin







<
<







237
238
239
240
241
242
243


244
245
246
247
248
249
250

The plugin has to provide its own set of commands which will then be
called by the frontend in a specific sequence while processing
input. They fall into two categories, management and formatting. Their
expected names, signatures, and responsibilities are specified in the
following two subsections.



[subsection {Management commands}]

The management commands a plugin has to provide are used by the
frontend to

[list_begin enumerated]
[enum] initialize and shutdown the plugin
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
the first command of that run. Note that a run is not a pass, but may
consist of multiple passes.

It has to initialize the general state of the plugin, beyond the
initialization done during the load. No return value is expected, and
any returned value is ignored.


[call [cmd fmt_listvariables]]
[emph Initialization/Shutdown] and [emph {Engine parameters}].

Second command is called after the plugin code has been loaded,
i.e. immediately after [cmd fmt_numpasses].

It has to return a list containing the names of the parameters the
frontend can set to configure the engine. This list can be empty.


[call [cmd fmt_numpasses]]
[emph Initialization/Shutdown] and [emph {Pass management}].

First command called after the plugin code has been loaded. No other
command of the engine will be called before it.

It has to return the number of passes this engine requires to fully
process the input document. This value has to be an integer number
greater or equal to one.


[call [cmd fmt_postprocess] [arg text]]
[emph Initialization/Shutdown].

This command is called immediately after the last pass in a run. Its
argument is the result of the conversion generated by that pass. It is
provided to allow the engine to perform any global modifications of
the generated document. If no post-processing is required for a
specific format the command has to just return the argument.

[para]

Expected to return a value, the final result of formatting the input.


[call [cmd fmt_setup] [arg n]]
[emph Initialization/Shutdown] and [emph {Pass management}].

This command is called at the beginning of each pass over the input in
a run. Its argument is the number of the pass which has begun. Passes
are counted from [const 1] upward.

The command has to set up the internal state of the plugin for this
particular pass. No return value is expected, and any returned value
is ignored.


[call [cmd fmt_shutdown]]
[emph Initialization/Shutdown].

This command is called at the end of every conversion run. It is the
last command called in a run. It has to clean up of all the
run-specific state in the plugin.

After the call the engine has to be in a state which allows the
initiation of another run without fear that information from the last
run is leaked into this new run.

No return value is expected, and any returned value is ignored.


[call [cmd fmt_varset] [arg varname] [arg text]]
[emph {Engine parameters}].

This command is called by the frontend to set an engine parameter to a
particular value.








<








<










<














<










<













<







334
335
336
337
338
339
340

341
342
343
344
345
346
347
348

349
350
351
352
353
354
355
356
357
358

359
360
361
362
363
364
365
366
367
368
369
370
371
372

373
374
375
376
377
378
379
380
381
382

383
384
385
386
387
388
389
390
391
392
393
394
395

396
397
398
399
400
401
402
the first command of that run. Note that a run is not a pass, but may
consist of multiple passes.

It has to initialize the general state of the plugin, beyond the
initialization done during the load. No return value is expected, and
any returned value is ignored.


[call [cmd fmt_listvariables]]
[emph Initialization/Shutdown] and [emph {Engine parameters}].

Second command is called after the plugin code has been loaded,
i.e. immediately after [cmd fmt_numpasses].

It has to return a list containing the names of the parameters the
frontend can set to configure the engine. This list can be empty.


[call [cmd fmt_numpasses]]
[emph Initialization/Shutdown] and [emph {Pass management}].

First command called after the plugin code has been loaded. No other
command of the engine will be called before it.

It has to return the number of passes this engine requires to fully
process the input document. This value has to be an integer number
greater or equal to one.


[call [cmd fmt_postprocess] [arg text]]
[emph Initialization/Shutdown].

This command is called immediately after the last pass in a run. Its
argument is the result of the conversion generated by that pass. It is
provided to allow the engine to perform any global modifications of
the generated document. If no post-processing is required for a
specific format the command has to just return the argument.

[para]

Expected to return a value, the final result of formatting the input.


[call [cmd fmt_setup] [arg n]]
[emph Initialization/Shutdown] and [emph {Pass management}].

This command is called at the beginning of each pass over the input in
a run. Its argument is the number of the pass which has begun. Passes
are counted from [const 1] upward.

The command has to set up the internal state of the plugin for this
particular pass. No return value is expected, and any returned value
is ignored.


[call [cmd fmt_shutdown]]
[emph Initialization/Shutdown].

This command is called at the end of every conversion run. It is the
last command called in a run. It has to clean up of all the
run-specific state in the plugin.

After the call the engine has to be in a state which allows the
initiation of another run without fear that information from the last
run is leaked into this new run.

No return value is expected, and any returned value is ignored.


[call [cmd fmt_varset] [arg varname] [arg text]]
[emph {Engine parameters}].

This command is called by the frontend to set an engine parameter to a
particular value.

411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426

[para]

The values of all engine parameters have to persist between passes and
runs.

[list_end]



[subsection {Formatting commands}]

The formatting commands have to implement the formatting for the
output format, for all the markup commands of the doctools markup
language, except [cmd lb], [cmd rb], [cmd vset], [cmd include], and
[cmd comment]. These exceptions are processed by the frontend and are







<
<







411
412
413
414
415
416
417


418
419
420
421
422
423
424

[para]

The values of all engine parameters have to persist between passes and
runs.

[list_end]



[subsection {Formatting commands}]

The formatting commands have to implement the formatting for the
output format, for all the markup commands of the doctools markup
language, except [cmd lb], [cmd rb], [cmd vset], [cmd include], and
[cmd comment]. These exceptions are processed by the frontend and are
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497

[para] The formatted text is expected as the result of the command,
and added to the output. If no special processing is required it has
to simply return its argument without change.

[list_end]



[section {BUGS, IDEAS, FEEDBACK}]

This document, will undoubtedly contain bugs and other problems.

Please report such in the category [emph doctools] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have.

[see_also doctools_intro]
[see_also doctools_lang_intro]
[see_also doctools_lang_syntax]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_faq]
[see_also doctools]
[keywords markup {semantic markup} manpage document]
[keywords {formatting engine} formatter]
[manpage_end]







|
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<

469
470
471
472
473
474
475
476
477

















478

[para] The formatted text is expected as the result of the command,
and added to the output. If no special processing is required it has
to simply return its argument without change.

[list_end]

[vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]

















[manpage_end]

Added modules/doctools/include/examples.inc.





























































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

[section EXAMPLES]

[subsection "Where do I find [vset theformat] examples?"]

We have no direct examples of documents written using [vset theformat]
markup. However the doctools processor [syscmd dtplite] does generate
a table of contents when processing a set of documents written in
doctools markup. The intermediate file for it uses [vset theformat]
markup and is not deleted when generation completes. Such files can
therefore serve as examples.

[para]

[syscmd dtplite] is distributed as part of Tcllib, so to get it you
need one of

[list_begin enumerated]

[enum]
A snapshot of Tcllib. How to retrieve such a snapshot and the
tools required for this are described at

[uri {/wiki?name=Development+Snapshots} {Development Snapshots}]

[enum]
A Tcllib release archive. They are available at the [uri /home home]
page.

[list_end]

Added modules/doctools/include/placeholder.inc.

























>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12

[subsection {What is this document?}]

This document is currently mainly a placeholder, to be filled with
commonly asked questions about the [vset theformat] markup language
and companions, and their answers.

[para]

Please report any questions (and, if possible, answers) we should
consider for this document as explained in the section
[sectref {Bugs, Ideas, Feedback}] below.

Changes to modules/doctools/mpexpand.man.

1
2









3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin mpexpand n 1.0]









[copyright {2002 Andreas Kupries <[email protected]>}]
[copyright {2003 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation toolbox}]
[titledesc {Markup processor}]
[category  {Documentation tools}]
[description]
[para]


>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin mpexpand n 1.0]
[see_also expander(n)]
[see_also format(n)]
[see_also formatter(n)]
[keywords conversion]
[keywords HTML]
[keywords manpage]
[keywords markup]
[keywords nroff]
[keywords TMML]
[copyright {2002 Andreas Kupries <[email protected]>}]
[copyright {2003 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation toolbox}]
[titledesc {Markup processor}]
[category  {Documentation tools}]
[description]
[para]
55
56
57
58
59
60
61









62
63
64
65
66
67
68
[def [const wiki]]

The processor generates Wiki markup as understood by [syscmd wikit].

[def [const list]]

The processor extracts the information provided by [cmd manpage_begin].










[def [const null]]

The processor does not generate any output.

[list_end]








>
>
>
>
>
>
>
>
>







64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
[def [const wiki]]

The processor generates Wiki markup as understood by [syscmd wikit].

[def [const list]]

The processor extracts the information provided by [cmd manpage_begin].
[see_also expander(n)]
[see_also format(n)]
[see_also formatter(n)]
[keywords conversion]
[keywords HTML]
[keywords manpage]
[keywords markup]
[keywords nroff]
[keywords TMML]

[def [const null]]

The processor does not generate any output.

[list_end]

80
81
82
83
84
85
86
87
88
89
[list_end]

[section NOTES]
[para]

Possible future formats are plain text, pdf and postscript.

[see_also expander(n) format(n) formatter(n)]
[keywords manpage TMML HTML nroff conversion markup]
[manpage_end]







|
|

98
99
100
101
102
103
104
105
106
107
[list_end]

[section NOTES]
[para]

Possible future formats are plain text, pdf and postscript.

[vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]

Changes to modules/doctools2base/html_cssdefaults.man.

1
2






3
4
5
6
7
8
9
10
11
12
13
14
15
16
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::html::cssdefaults n 0.1]






[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Default CSS style for HTML export plugins}]
[category  {Documentation tools}]
[require Tcl 8.4]
[require doctools::html::cssdefaults [opt 0.1]]
[keywords doctools export plugin HTML CSS style]
[description]

This package provides a single command providing access to the text of
the default CSS style to use for HTML markup generated by the various
HTML export plugins.

[para]


>
>
>
>
>
>






<







1
2
3
4
5
6
7
8
9
10
11
12
13
14

15
16
17
18
19
20
21
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::html::cssdefaults n 0.1]
[keywords CSS]
[keywords doctools]
[keywords export]
[keywords HTML]
[keywords plugin]
[keywords style]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Default CSS style for HTML export plugins}]
[category  {Documentation tools}]
[require Tcl 8.4]
[require doctools::html::cssdefaults [opt 0.1]]

[description]

This package provides a single command providing access to the text of
the default CSS style to use for HTML markup generated by the various
HTML export plugins.

[para]
25
26
27
28
29
30
31
32
33
34
35
36

[call [cmd ::doctools::html::cssdefaults::contents]]

This command returns the text of the default CSS style to use for HTML
markup generated by the various HTML export plugins.

[list_end]


[vset CATEGORY doctools]
[include include/feedback.inc]
[manpage_end]







<




30
31
32
33
34
35
36

37
38
39
40

[call [cmd ::doctools::html::cssdefaults::contents]]

This command returns the text of the default CSS style to use for HTML
markup generated by the various HTML export plugins.

[list_end]


[vset CATEGORY doctools]
[include include/feedback.inc]
[manpage_end]

Changes to modules/doctools2base/include/feedback.inc.

1
2
3
4
5
6
7
8
9
10
[section {Bugs, Ideas, Feedback}]
[vset TRACKER http://sourceforge.net/tracker/?group_id=12883]
[vset LABEL   {Tcllib SF Trackers}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph [vset CATEGORY]] of the
[uri [vset TRACKER] [vset LABEL]].


|
|







1
2
3
4
5
6
7
8
9
10
[section {Bugs, Ideas, Feedback}]
[vset TRACKER http://core.tcl.tk/tcllib/reportlist]
[vset LABEL   {Tcllib Trackers}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph [vset CATEGORY]] of the
[uri [vset TRACKER] [vset LABEL]].

Changes to modules/doctools2base/nroff_manmacros.man.

1
2






3
4
5
6
7
8
9
10
11
12
13
14
15
16
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::nroff::man_macros n 0.1]






[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Default CSS style for NROFF export plugins}]
[category  {Documentation tools}]
[require Tcl 8.4]
[require doctools::nroff::man_macros [opt 0.1]]
[keywords doctools export plugin nroff man_macros macros]
[description]

This package provides a single command providing access to the
definition of the nroff [emph man] macro set to use for NROFF markup
generated by the various NROFF export plugins.

[para]


>
>
>
>
>
>






<







1
2
3
4
5
6
7
8
9
10
11
12
13
14

15
16
17
18
19
20
21
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::nroff::man_macros n 0.1]
[keywords doctools]
[keywords export]
[keywords macros]
[keywords man_macros]
[keywords nroff]
[keywords plugin]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Default CSS style for NROFF export plugins}]
[category  {Documentation tools}]
[require Tcl 8.4]
[require doctools::nroff::man_macros [opt 0.1]]

[description]

This package provides a single command providing access to the
definition of the nroff [emph man] macro set to use for NROFF markup
generated by the various NROFF export plugins.

[para]
25
26
27
28
29
30
31
32
33
34
35
36

[call [cmd ::doctools::nroff::man_macros::contents]]

This command returns the text of the default CSS style to use for NROFF
generated by the various NROFF export plugins.

[list_end]


[vset CATEGORY doctools]
[include include/feedback.inc]
[manpage_end]







<




30
31
32
33
34
35
36

37
38
39
40

[call [cmd ::doctools::nroff::man_macros::contents]]

This command returns the text of the default CSS style to use for NROFF
generated by the various NROFF export plugins.

[list_end]


[vset CATEGORY doctools]
[include include/feedback.inc]
[manpage_end]

Changes to modules/doctools2base/tcl_parse.man.

1
2






3
4
5
6
7
8
9
10
11
12
13
14
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::tcl::parse n 1]






[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Processing text in 'subst -novariables' format}]
[category  {Documentation tools}]
[keywords doctools parser subst command word {Tcl syntax}]
[require Tcl 8.4]
[require snit]
[require fileutil]
[require logger]
[require struct::list]
[require struct::stack]
[require struct::set]


>
>
>
>
>
>




<







1
2
3
4
5
6
7
8
9
10
11
12

13
14
15
16
17
18
19
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::tcl::parse n 1]
[keywords command]
[keywords doctools]
[keywords parser]
[keywords subst]
[keywords {Tcl syntax}]
[keywords word]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Processing text in 'subst -novariables' format}]
[category  {Documentation tools}]

[require Tcl 8.4]
[require snit]
[require fileutil]
[require logger]
[require struct::list]
[require struct::stack]
[require struct::set]
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75

[package struct::tree].

[para]

In case of errors [arg tree] will be left in an undefined state.


[call [cmd ::doctools::tcl::parse] [method file] \
	[arg tree] [arg path] [opt [arg root]]]

The same as [method text], except that the text to parse is read from
the file specified by [arg path].


[list_end]


[section {Error format}]

When the parser encounters a problem in the input
it will throw an error using the format described
here.








<






<

<







57
58
59
60
61
62
63

64
65
66
67
68
69

70

71
72
73
74
75
76
77

[package struct::tree].

[para]

In case of errors [arg tree] will be left in an undefined state.


[call [cmd ::doctools::tcl::parse] [method file] \
	[arg tree] [arg path] [opt [arg root]]]

The same as [method text], except that the text to parse is read from
the file specified by [arg path].


[list_end]


[section {Error format}]

When the parser encounters a problem in the input
it will throw an error using the format described
here.

104
105
106
107
108
109
110
111
112
113
114
115
116
117
118

[enum] The line the problem was found on (counted from 1 (one)),

[enum] The column the problem was found at (counted from 0 (zero))

[list_end]
[list_end]


[section {Tree Structure}]

After successfully parsing a string the generated tree will have the
following structure:

[list_begin enumerated]







<







106
107
108
109
110
111
112

113
114
115
116
117
118
119

[enum] The line the problem was found on (counted from 1 (one)),

[enum] The column the problem was found at (counted from 0 (zero))

[list_end]
[list_end]


[section {Tree Structure}]

After successfully parsing a string the generated tree will have the
following structure:

[list_begin enumerated]
172
173
174
175
176
177
178
179
180
181
182
183
[enum]
All Text nodes are leaves of the tree.

[enum]
All leaves of the tree are either Text or Command nodes.
Word nodes cannot be leaves.
[list_end]


[vset CATEGORY doctools]
[include include/feedback.inc]
[manpage_end]







<




173
174
175
176
177
178
179

180
181
182
183
[enum]
All Text nodes are leaves of the tree.

[enum]
All leaves of the tree are either Text or Command nodes.
Word nodes cannot be leaves.
[list_end]


[vset CATEGORY doctools]
[include include/feedback.inc]
[manpage_end]

Changes to modules/doctools2base/tcllib_msgcat.man.

1
2










3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::msgcat n 0.1]










[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Message catalog management for the various document parsers}]
[category  {Documentation tools}]
[require Tcl 8.4]
[require msgcat]
[require doctools::msgcat [opt 0.1]]
[description]
[keywords doctools docidx doctoc {message catalog}]
[keywords localization l10n internationalization i18n]
[keywords {catalog package} {message package}]

The package [package doctools::msgcat] is a support module handling
the selection of message catalogs for the various document processing
packages in the doctools system version 2. As such it is an internal
package a regular user (developer) should not be in direct contact
with.



>
>
>
>
>
>
>
>
>
>








<
<
<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20



21
22
23
24
25
26
27
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::msgcat n 0.1]
[keywords {catalog package}]
[keywords docidx]
[keywords doctoc]
[keywords doctools]
[keywords i18n]
[keywords internationalization]
[keywords l10n]
[keywords localization]
[keywords {message catalog}]
[keywords {message package}]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Message catalog management for the various document parsers}]
[category  {Documentation tools}]
[require Tcl 8.4]
[require msgcat]
[require doctools::msgcat [opt 0.1]]
[description]




The package [package doctools::msgcat] is a support module handling
the selection of message catalogs for the various document processing
packages in the doctools system version 2. As such it is an internal
package a regular user (developer) should not be in direct contact
with.

50
51
52
53
54
55
56
57
58
59
60
61

The names of the packages the command will look for have the form
"doctools::msgcat::[arg prefix]::[var langcode]", with [arg prefix]
the argument to the command, and the [var langcode] supplied by the
result of [cmd msgcat::mcpreferences].

[list_end]


[vset CATEGORY doctools]
[include include/feedback.inc]
[manpage_end]







<




57
58
59
60
61
62
63

64
65
66
67

The names of the packages the command will look for have the form
"doctools::msgcat::[arg prefix]::[var langcode]", with [arg prefix]
the argument to the command, and the [var langcode] supplied by the
result of [cmd msgcat::mcpreferences].

[list_end]


[vset CATEGORY doctools]
[include include/feedback.inc]
[manpage_end]

Changes to modules/doctools2idx/container.man.

1
2





















3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::idx n 2]





















[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Holding keyword indices}]
[category  {Documentation tools}]
[require doctools::idx [opt 2]]
[require Tcl 8.4]
[require doctools::idx::structure]
[require snit]
[keywords {keyword index} index reference documentation manpage url]
[keywords {docidx markup} markup conversion formatting generation plugin]
[keywords json text nroff wiki {tcler's wiki} latex TMML HTML]
[keywords parsing]
[description]

This package provides a class to contain and programmatically
manipulate keyword indices

[para]

This is one of the three public pillars the management of keyword
indices resides on. The other two pillars are 

[list_begin enum]
[enum] [manpage {Exporting keyword indices}], and
[enum] [manpage {Importing keyword indices}]
[list_end]

[para]

For information about the [sectref Concepts] of keyword indices, and
their parts, see the same-named section.

For information about the data structure which is used to encode
keyword indices as values see the section
[sectref {Keyword index serialization format}].

This is the only format directly known to this class. Conversions from
and to any other format are handled by export and import manager
objects. These may be attached to a container, but do not have to be,
it is merely a convenience.


[section Concepts] [include include/concept.inc]


[section API]
[subsection {Package commands}]

[list_begin definitions]

[call [cmd ::doctools::idx] [arg objectName]]

This command creates a new container object with an associated Tcl
command whose name is [arg objectName]. This [term object] command is
explained in full detail in the sections [sectref {Object command}]
and [sectref {Object methods}]. The object command will be created
under the current namespace if the [arg objectName] is not fully
qualified, and in the specified namespace otherwise.

[list_end]


[subsection {Object command}]

All objects created by the [cmd ::doctools::idx] command have the
following general form:

[list_begin definitions]

[call [cmd objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the
exact behavior of the command.

See section [sectref {Object methods}] for the detailed
specifications.

[list_end]


[subsection {Object methods}]

[list_begin definitions]

[call [arg objectName] [method destroy]]

This method destroys the object it is invoked for.

[call [arg objectName] [method {key add}] [arg name]]

This method adds the keyword [arg name] to the index. If the keyword
is already known nothing is done. The result of the method is the
empty string.


[call [arg objectName] [method {key remove}] [arg name]]

This method removes the keyword [arg name] from the index. If the
keyword is already gone nothing is done. Any references for whom this
keyword was the last association are removed as well.  The result of
the method is the empty string.


[call [arg objectName] [method {key references}] [arg name]]

This method returns a list containing the names of all references
associated with the keyword [arg name]. An error is thrown in the
keyword is not known to the index. The order of the references in the
list is undefined.


[call [arg objectName] [method keys]]

This method returns a list containing the names of all keywords known
to the index. The order of the keywords in the list is undefined.


[call [arg objectName] [method {reference add}] [arg type] [arg key] [arg name] [arg label]]

This method adds the reference [arg name] to the index and associates
it with the keyword [arg key].

The other two arguments hold the [arg type] and [arg label] of the


>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>








<
<
<
<








|




















<

<
















<


















<














<






<








<




<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31




32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60

61

62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77

78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95

96
97
98
99
100
101
102
103
104
105
106
107
108
109

110
111
112
113
114
115

116
117
118
119
120
121
122
123

124
125
126
127

128
129
130
131
132
133
134
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::idx n 2]
[keywords conversion]
[keywords {docidx markup}]
[keywords documentation]
[keywords formatting]
[keywords generation]
[keywords HTML]
[keywords index]
[keywords json]
[keywords {keyword index}]
[keywords latex]
[keywords manpage]
[keywords markup]
[keywords nroff]
[keywords parsing]
[keywords plugin]
[keywords reference]
[keywords {tcler's wiki}]
[keywords text]
[keywords TMML]
[keywords url]
[keywords wiki]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Holding keyword indices}]
[category  {Documentation tools}]
[require doctools::idx [opt 2]]
[require Tcl 8.4]
[require doctools::idx::structure]
[require snit]




[description]

This package provides a class to contain and programmatically
manipulate keyword indices

[para]

This is one of the three public pillars the management of keyword
indices resides on. The other two pillars are

[list_begin enum]
[enum] [manpage {Exporting keyword indices}], and
[enum] [manpage {Importing keyword indices}]
[list_end]

[para]

For information about the [sectref Concepts] of keyword indices, and
their parts, see the same-named section.

For information about the data structure which is used to encode
keyword indices as values see the section
[sectref {Keyword index serialization format}].

This is the only format directly known to this class. Conversions from
and to any other format are handled by export and import manager
objects. These may be attached to a container, but do not have to be,
it is merely a convenience.


[section Concepts] [include include/concept.inc]


[section API]
[subsection {Package commands}]

[list_begin definitions]

[call [cmd ::doctools::idx] [arg objectName]]

This command creates a new container object with an associated Tcl
command whose name is [arg objectName]. This [term object] command is
explained in full detail in the sections [sectref {Object command}]
and [sectref {Object methods}]. The object command will be created
under the current namespace if the [arg objectName] is not fully
qualified, and in the specified namespace otherwise.

[list_end]


[subsection {Object command}]

All objects created by the [cmd ::doctools::idx] command have the
following general form:

[list_begin definitions]

[call [cmd objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the
exact behavior of the command.

See section [sectref {Object methods}] for the detailed
specifications.

[list_end]


[subsection {Object methods}]

[list_begin definitions]

[call [arg objectName] [method destroy]]

This method destroys the object it is invoked for.

[call [arg objectName] [method {key add}] [arg name]]

This method adds the keyword [arg name] to the index. If the keyword
is already known nothing is done. The result of the method is the
empty string.


[call [arg objectName] [method {key remove}] [arg name]]

This method removes the keyword [arg name] from the index. If the
keyword is already gone nothing is done. Any references for whom this
keyword was the last association are removed as well.  The result of
the method is the empty string.


[call [arg objectName] [method {key references}] [arg name]]

This method returns a list containing the names of all references
associated with the keyword [arg name]. An error is thrown in the
keyword is not known to the index. The order of the references in the
list is undefined.


[call [arg objectName] [method keys]]

This method returns a list containing the names of all keywords known
to the index. The order of the keywords in the list is undefined.


[call [arg objectName] [method {reference add}] [arg type] [arg key] [arg name] [arg label]]

This method adds the reference [arg name] to the index and associates
it with the keyword [arg key].

The other two arguments hold the [arg type] and [arg label] of the
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
[arg label] updated to the new value.  The result of the method is the
empty string.

[para]

The [arg type] argument has be to one of [const manpage] or [const url].


[call [arg objectName] [method {reference remove}] [arg name]]

The reference [arg name] is removed from the index. All associations
with keywords are released and the relevant reference labels removed.
The result of the method is the empty string.


[call [arg objectName] [method {reference label}] [arg name]]

This method returns the label associated with the reference
[arg name]. An error is thrown if the reference is not known.


[call [arg objectName] [method {reference keys}] [arg name]]

This method returns a list containing the names of all keywords
associated with the reference [arg name]. An error is thrown in the
reference is not known to the index. The order of the keywords in the
list is undefined.


[call [arg objectName] [method {reference type}] [arg name]]

This method returns the type of the reference [arg name]. An error is
thrown in the reference is not known to the index.


[call [arg objectName] [method references]]

This method returns a list containing the names of all references
known to the index. The order of the references in the list is
undefined.


[call [arg objectName] [method title]]

Returns the currently defined title of the keyword index.


[call [arg objectName] [method title] [arg text]]

Sets the title of the keyword index to [arg text], and returns it as
the result of the command.


[call [arg objectName] [method label]]

Returns the currently defined label of the keyword index.


[call [arg objectName] [method label] [arg text]]

Sets the label of the keyword index to [arg text], and returns it as
the result of the command.


[call [arg objectName] [method importer]]

Returns the import manager object currently attached to the container,
if any.


[call [arg objectName] [method importer] [arg object]]

Attaches the [arg object] as import manager to the container, and
returns it as the result of the command.

Note that the [arg object] is [emph not] put into ownership of the
container. I.e., destruction of the container will [emph not] destroy
the [arg object].

[para]

It is expected that [arg object] provides a method named
[method {import text}] which takes a text and a format name, and
returns the canonical serialization of the keyword index contained in
the text, assuming the given format.


[call [arg objectName] [method exporter]]

Returns the export manager object currently attached to the container,
if any.


[call [arg objectName] [method exporter] [arg object]]

Attaches the [arg object] as export manager to the container, and
returns it as the result of the command.

Note that the [arg object] is [emph not] put into ownership of the
container. I.e., destruction of the container will [emph not] destroy
the [arg object].

[para]

It is expected that [arg object] provides a method named
[method {export object}] which takes the container and a format name,
and returns a text encoding keyword index stored in the container, in
the given format. It is further expected that the [arg object] will
use the container's method [method serialize] to obtain the
serialization of the keyword index from which to generate the text.


[call [arg objectName] [method {deserialize =}] [arg data] [opt [arg format]]]

This method replaces the contents of the index object with the index
contained in the [arg data]. If no [arg format] was specified it is
assumed to be the regular serialization of a keyword index.

[para]

Otherwise the object will use the attached import manager to convert
the data from the specified format to a serialization it can handle.

In that case an error will be thrown if the container has no import
manager attached to it.

[para]

The result of the method is the empty string.


[call [arg objectName] [method {deserialize +=}] [arg data] [opt [arg format]]]

This method behaves like [method {deserialize =}] in its essentials,
except that it merges the keyword index in the [arg data] to its
contents instead of replacing it. 

The method will throw an error if merging is not possible, i.e. would
produce an invalid index. The existing content is left unchanged in
that case.

[para]

The result of the method is the empty string.


[call [arg objectName] [method serialize] [opt [arg format]]]

This method returns the keyword index contained in the object. If no
[arg format] is not specified the returned result is the canonical
serialization of its contents.

[para]

Otherwise the object will use the attached export manager to convert
the data to the specified format.

In that case an error will be thrown if the container has no export
manager attached to it.


[list_end]


[include include/serialization.inc]
[vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]







<






<




<








<




<







<



<






<



<






<




<

















<




<



















<


















<




|








<















<

<





147
148
149
150
151
152
153

154
155
156
157
158
159

160
161
162
163

164
165
166
167
168
169
170
171

172
173
174
175

176
177
178
179
180
181
182

183
184
185

186
187
188
189
190
191

192
193
194

195
196
197
198
199
200

201
202
203
204

205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221

222
223
224
225

226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244

245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262

263
264
265
266
267
268
269
270
271
272
273
274
275

276
277
278
279
280
281
282
283
284
285
286
287
288
289
290

291

292
293
294
295
296
[arg label] updated to the new value.  The result of the method is the
empty string.

[para]

The [arg type] argument has be to one of [const manpage] or [const url].


[call [arg objectName] [method {reference remove}] [arg name]]

The reference [arg name] is removed from the index. All associations
with keywords are released and the relevant reference labels removed.
The result of the method is the empty string.


[call [arg objectName] [method {reference label}] [arg name]]

This method returns the label associated with the reference
[arg name]. An error is thrown if the reference is not known.


[call [arg objectName] [method {reference keys}] [arg name]]

This method returns a list containing the names of all keywords
associated with the reference [arg name]. An error is thrown in the
reference is not known to the index. The order of the keywords in the
list is undefined.


[call [arg objectName] [method {reference type}] [arg name]]

This method returns the type of the reference [arg name]. An error is
thrown in the reference is not known to the index.


[call [arg objectName] [method references]]

This method returns a list containing the names of all references
known to the index. The order of the references in the list is
undefined.


[call [arg objectName] [method title]]

Returns the currently defined title of the keyword index.


[call [arg objectName] [method title] [arg text]]

Sets the title of the keyword index to [arg text], and returns it as
the result of the command.


[call [arg objectName] [method label]]

Returns the currently defined label of the keyword index.


[call [arg objectName] [method label] [arg text]]

Sets the label of the keyword index to [arg text], and returns it as
the result of the command.


[call [arg objectName] [method importer]]

Returns the import manager object currently attached to the container,
if any.


[call [arg objectName] [method importer] [arg object]]

Attaches the [arg object] as import manager to the container, and
returns it as the result of the command.

Note that the [arg object] is [emph not] put into ownership of the
container. I.e., destruction of the container will [emph not] destroy
the [arg object].

[para]

It is expected that [arg object] provides a method named
[method {import text}] which takes a text and a format name, and
returns the canonical serialization of the keyword index contained in
the text, assuming the given format.


[call [arg objectName] [method exporter]]

Returns the export manager object currently attached to the container,
if any.


[call [arg objectName] [method exporter] [arg object]]

Attaches the [arg object] as export manager to the container, and
returns it as the result of the command.

Note that the [arg object] is [emph not] put into ownership of the
container. I.e., destruction of the container will [emph not] destroy
the [arg object].

[para]

It is expected that [arg object] provides a method named
[method {export object}] which takes the container and a format name,
and returns a text encoding keyword index stored in the container, in
the given format. It is further expected that the [arg object] will
use the container's method [method serialize] to obtain the
serialization of the keyword index from which to generate the text.


[call [arg objectName] [method {deserialize =}] [arg data] [opt [arg format]]]

This method replaces the contents of the index object with the index
contained in the [arg data]. If no [arg format] was specified it is
assumed to be the regular serialization of a keyword index.

[para]

Otherwise the object will use the attached import manager to convert
the data from the specified format to a serialization it can handle.

In that case an error will be thrown if the container has no import
manager attached to it.

[para]

The result of the method is the empty string.


[call [arg objectName] [method {deserialize +=}] [arg data] [opt [arg format]]]

This method behaves like [method {deserialize =}] in its essentials,
except that it merges the keyword index in the [arg data] to its
contents instead of replacing it.

The method will throw an error if merging is not possible, i.e. would
produce an invalid index. The existing content is left unchanged in
that case.

[para]

The result of the method is the empty string.


[call [arg objectName] [method serialize] [opt [arg format]]]

This method returns the keyword index contained in the object. If no
[arg format] is not specified the returned result is the canonical
serialization of its contents.

[para]

Otherwise the object will use the attached export manager to convert
the data to the specified format.

In that case an error will be thrown if the container has no export
manager attached to it.


[list_end]


[include include/serialization.inc]
[vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]

Changes to modules/doctools2idx/export.man.

1
2



















3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::idx::export n 0.1]



















[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Exporting keyword indices}]
[category  {Documentation tools}]
[require doctools::idx::export [opt 0.1]]
[require Tcl 8.4]
[require doctools::config]
[require doctools::idx::structure]
[require snit]
[require pluginmgr]
[keywords {keyword index} index reference documentation manpage url]
[keywords markup conversion formatting export generation plugin]
[keywords json docidx text nroff wiki {tcler's wiki} HTML]
[description]

This package provides a class to manage the plugins for the export of
keyword indices to other formats, i.e. their conversion to, for
example [term docidx], [term HTML], etc.

[para]

This is one of the three public pillars the management of keyword
indices resides on. The other two pillars are 

[list_begin enum]
[enum] [manpage {Importing keyword indices}], and
[enum] [manpage {Holding keyword indices}]
[list_end]

[para]


>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>










<
<
<









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::idx::export n 0.1]
[keywords conversion]
[keywords docidx]
[keywords documentation]
[keywords export]
[keywords formatting]
[keywords generation]
[keywords HTML]
[keywords index]
[keywords json]
[keywords {keyword index}]
[keywords manpage]
[keywords markup]
[keywords nroff]
[keywords plugin]
[keywords reference]
[keywords {tcler's wiki}]
[keywords text]
[keywords url]
[keywords wiki]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Exporting keyword indices}]
[category  {Documentation tools}]
[require doctools::idx::export [opt 0.1]]
[require Tcl 8.4]
[require doctools::config]
[require doctools::idx::structure]
[require snit]
[require pluginmgr]



[description]

This package provides a class to manage the plugins for the export of
keyword indices to other formats, i.e. their conversion to, for
example [term docidx], [term HTML], etc.

[para]

This is one of the three public pillars the management of keyword
indices resides on. The other two pillars are

[list_begin enum]
[enum] [manpage {Importing keyword indices}], and
[enum] [manpage {Holding keyword indices}]
[list_end]

[para]
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139

Readers wishing to write their own export plugin for some format, i.e.
[term {plugin writer}]s reading and understanding the section
containing the [sectref {Export plugin API v2 reference}] is an
absolute necessity, as it specifies the interaction between this
package and its plugins in detail.


[section Concepts] [include include/concept.inc]


[section API]
[subsection {Package commands}]

[list_begin definitions]

[call [cmd ::doctools::idx::export] [arg objectName]]

This command creates a new export manager object with an associated
Tcl command whose name is [arg objectName]. This [term object] command
is explained in full detail in the sections [sectref {Object command}]
and [sectref {Object methods}]. The object command will be created
under the current namespace if the [arg objectName] is not fully
qualified, and in the specified namespace otherwise.

[list_end]


[subsection {Object command}]

All objects created by the [cmd ::doctools::idx::export] command have
the following general form:

[list_begin definitions]

[call [cmd objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the
exact behavior of the command.

See section [sectref {Object methods}] for the detailed
specifications.

[list_end]


[subsection {Object methods}]

[list_begin definitions]

[call [arg objectName] [method destroy]]

This method destroys the object it is invoked for.


[call [arg objectName] [method {export serial}] [arg serial] [opt [arg format]]]

This method takes the canonical serialization of a keyword index
stored in [arg serial] and converts it to the specified [arg format],
using the export plugin for the format. An error is thrown if no
plugin could be found for the format.







<

<
















<


















<







<







95
96
97
98
99
100
101

102

103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118

119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136

137
138
139
140
141
142
143

144
145
146
147
148
149
150

Readers wishing to write their own export plugin for some format, i.e.
[term {plugin writer}]s reading and understanding the section
containing the [sectref {Export plugin API v2 reference}] is an
absolute necessity, as it specifies the interaction between this
package and its plugins in detail.


[section Concepts] [include include/concept.inc]


[section API]
[subsection {Package commands}]

[list_begin definitions]

[call [cmd ::doctools::idx::export] [arg objectName]]

This command creates a new export manager object with an associated
Tcl command whose name is [arg objectName]. This [term object] command
is explained in full detail in the sections [sectref {Object command}]
and [sectref {Object methods}]. The object command will be created
under the current namespace if the [arg objectName] is not fully
qualified, and in the specified namespace otherwise.

[list_end]


[subsection {Object command}]

All objects created by the [cmd ::doctools::idx::export] command have
the following general form:

[list_begin definitions]

[call [cmd objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the
exact behavior of the command.

See section [sectref {Object methods}] for the detailed
specifications.

[list_end]


[subsection {Object methods}]

[list_begin definitions]

[call [arg objectName] [method destroy]]

This method destroys the object it is invoked for.


[call [arg objectName] [method {export serial}] [arg serial] [opt [arg format]]]

This method takes the canonical serialization of a keyword index
stored in [arg serial] and converts it to the specified [arg format],
using the export plugin for the format. An error is thrown if no
plugin could be found for the format.
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
found in the section [sectref {Keyword index serialization format}].

[para]

The plugin has to conform to the interface specified in section
[sectref {Export plugin API v2 reference}].


[call [arg objectName] [method {export object}] [arg object] [opt [arg format]]]

This method is a convenient wrapper around the [method {export serial}]
method described by the previous item.

It expects that [arg object] is an object command supporting a
[method serialize] method returning the canonical serialization of a
keyword index. It invokes that method, feeds the result into
[method {export serial}] and returns the resulting string as its own
result.


[call [arg objectName] [method {config names}]]

This method returns a list containing the names of all configuration
variables currently known to the object.


[call [arg objectName] [method {config get}]]

This method returns a dictionary containing the names and values of
all configuration variables currently known to the object.


[call [arg objectName] [method {config set}] [arg name] [opt [arg value]]]

This method sets the configuration variable [arg name] to the
specified [arg value] and returns the new value of the variable.

[para]

If no value is specified it simply returns the current value, without
changing it.

[para]

Note that while the user can set the predefined configuration
variables [const user] and [const format] doing so will have no
effect, these values will be internally overriden when invoking an
import plugin.


[call [arg objectName] [method {config unset}] [arg pattern]...]

This method unsets all configuration variables matching the specified
glob [arg pattern]s. If no pattern is specified it will unset all
currently defined configuration variables.


[list_end]


[section {Export plugin API v2 reference}]

Plugins are what this package uses to manage the support for any
output format beyond the
[sectref {Keyword index serialization format}]. Here we specify the
API the objects created by this package use to interact with their







<











<





<




<


















<






<

<







162
163
164
165
166
167
168

169
170
171
172
173
174
175
176
177
178
179

180
181
182
183
184

185
186
187
188

189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206

207
208
209
210
211
212

213

214
215
216
217
218
219
220
found in the section [sectref {Keyword index serialization format}].

[para]

The plugin has to conform to the interface specified in section
[sectref {Export plugin API v2 reference}].


[call [arg objectName] [method {export object}] [arg object] [opt [arg format]]]

This method is a convenient wrapper around the [method {export serial}]
method described by the previous item.

It expects that [arg object] is an object command supporting a
[method serialize] method returning the canonical serialization of a
keyword index. It invokes that method, feeds the result into
[method {export serial}] and returns the resulting string as its own
result.


[call [arg objectName] [method {config names}]]

This method returns a list containing the names of all configuration
variables currently known to the object.


[call [arg objectName] [method {config get}]]

This method returns a dictionary containing the names and values of
all configuration variables currently known to the object.


[call [arg objectName] [method {config set}] [arg name] [opt [arg value]]]

This method sets the configuration variable [arg name] to the
specified [arg value] and returns the new value of the variable.

[para]

If no value is specified it simply returns the current value, without
changing it.

[para]

Note that while the user can set the predefined configuration
variables [const user] and [const format] doing so will have no
effect, these values will be internally overriden when invoking an
import plugin.


[call [arg objectName] [method {config unset}] [arg pattern]...]

This method unsets all configuration variables matching the specified
glob [arg pattern]s. If no pattern is specified it will unset all
currently defined configuration variables.


[list_end]


[section {Export plugin API v2 reference}]

Plugins are what this package uses to manage the support for any
output format beyond the
[sectref {Keyword index serialization format}]. Here we specify the
API the objects created by this package use to interact with their
293
294
295
296
297
298
299
300
301
302
303
304
305
[list_end][comment {-- api command signatures --}]

[enum] A single usage cycle of a plugin consists of the invokations of
       the command [cmd export]. This call has to leave the plugin in
       a state where another usage cycle can be run without problems.

[list_end]


[include include/serialization.inc]
[vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]







<





297
298
299
300
301
302
303

304
305
306
307
308
[list_end][comment {-- api command signatures --}]

[enum] A single usage cycle of a plugin consists of the invokations of
       the command [cmd export]. This call has to leave the plugin in
       a state where another usage cycle can be run without problems.

[list_end]


[include include/serialization.inc]
[vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]

Changes to modules/doctools2idx/import.man.

1
2













3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::idx::import n 0.1]













[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Importing keyword indices}]
[category  {Documentation tools}]
[require doctools::idx::import [opt 0.1]]
[require Tcl 8.4]
[require doctools::config]
[require doctools::idx::structure]
[require snit]
[require pluginmgr]
[keywords {keyword index} index reference documentation manpage url]
[keywords markup conversion import parsing plugin]
[keywords json docidx]
[description]

This package provides a class to manage the plugins for the import of
keyword indices from other formats, i.e. their conversion from, for
example [term docidx], [term json], etc.

[para]

This is one of the three public pillars the management of keyword
indices resides on. The other two pillars are 

[list_begin enum]
[enum] [manpage {Exporting keyword indices}], and
[enum] [manpage {Holding keyword indices}]
[list_end]

[para]


>
>
>
>
>
>
>
>
>
>
>
>
>










<
<
<









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::idx::import n 0.1]
[keywords conversion]
[keywords docidx]
[keywords documentation]
[keywords import]
[keywords index]
[keywords json]
[keywords {keyword index}]
[keywords manpage]
[keywords markup]
[keywords parsing]
[keywords plugin]
[keywords reference]
[keywords url]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Importing keyword indices}]
[category  {Documentation tools}]
[require doctools::idx::import [opt 0.1]]
[require Tcl 8.4]
[require doctools::config]
[require doctools::idx::structure]
[require snit]
[require pluginmgr]



[description]

This package provides a class to manage the plugins for the import of
keyword indices from other formats, i.e. their conversion from, for
example [term docidx], [term json], etc.

[para]

This is one of the three public pillars the management of keyword
indices resides on. The other two pillars are

[list_begin enum]
[enum] [manpage {Exporting keyword indices}], and
[enum] [manpage {Holding keyword indices}]
[list_end]

[para]
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135

Readers wishing to write their own import plugin for some format, i.e.
[term {plugin writer}]s reading and understanding the section
containing the [sectref {Import plugin API v2 reference}] is an
absolute necessity, as it specifies the interaction between this
package and its plugins in detail.


[section Concepts] [include include/concept.inc]


[section API]
[subsection {Package commands}]

[list_begin definitions]

[call [cmd ::doctools::idx::import] [arg objectName]]

This command creates a new import manager object with an associated
Tcl command whose name is [arg objectName]. This [term object] command
is explained in full detail in the sections [sectref {Object command}]
and [sectref {Object methods}]. The object command will be created
under the current namespace if the [arg objectName] is not fully
qualified, and in the specified namespace otherwise.

[list_end]


[subsection {Object command}]

All objects created by the [cmd ::doctools::idx::import] command have
the following general form:

[list_begin definitions]

[call [cmd objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the
exact behavior of the command.

See section [sectref {Object methods}] for the detailed
specifications.

[list_end]


[subsection {Object methods}]

[list_begin definitions]

[call [arg objectName] [method destroy]]

This method destroys the object it is invoked for.


[call [arg objectName] [method {import text}] [arg text] [opt [arg format]]]

This method takes the [arg text] and converts it from the specified
[arg format] to the canonical serialization of a keyword index using
the import plugin for the format. An error is thrown if no plugin
could be found for the format.







<

<
















<


















<







<







85
86
87
88
89
90
91

92

93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108

109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126

127
128
129
130
131
132
133

134
135
136
137
138
139
140

Readers wishing to write their own import plugin for some format, i.e.
[term {plugin writer}]s reading and understanding the section
containing the [sectref {Import plugin API v2 reference}] is an
absolute necessity, as it specifies the interaction between this
package and its plugins in detail.


[section Concepts] [include include/concept.inc]


[section API]
[subsection {Package commands}]

[list_begin definitions]

[call [cmd ::doctools::idx::import] [arg objectName]]

This command creates a new import manager object with an associated
Tcl command whose name is [arg objectName]. This [term object] command
is explained in full detail in the sections [sectref {Object command}]
and [sectref {Object methods}]. The object command will be created
under the current namespace if the [arg objectName] is not fully
qualified, and in the specified namespace otherwise.

[list_end]


[subsection {Object command}]

All objects created by the [cmd ::doctools::idx::import] command have
the following general form:

[list_begin definitions]

[call [cmd objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the
exact behavior of the command.

See section [sectref {Object methods}] for the detailed
specifications.

[list_end]


[subsection {Object methods}]

[list_begin definitions]

[call [arg objectName] [method destroy]]

This method destroys the object it is invoked for.


[call [arg objectName] [method {import text}] [arg text] [opt [arg format]]]

This method takes the [arg text] and converts it from the specified
[arg format] to the canonical serialization of a keyword index using
the import plugin for the format. An error is thrown if no plugin
could be found for the format.
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
found in the section [sectref {Keyword index serialization format}].

[para]

The plugin has to conform to the interface specified in section
[sectref {Import plugin API v2 reference}].


[call [arg objectName] [method {import file}] [arg path] [opt [arg format]]]

This method is a convenient wrapper around the [method {import text}]
method described by the previous item.

It reads the contents of the specified file into memory, feeds the
result into [method {import text}] and returns the resulting
serialization as its own result.


[call [arg objectName] [method {import object text}] [arg object] \
	[arg text] [opt [arg format]]]

This method is a convenient wrapper around the [method {import text}]
method described by the previous item.

It expects that [arg object] is an object command supporting a
[method deserialize] method expecting the canonical serialization of a
keyword index.

It imports the text using [method {import text}] and then feeds the
resulting serialization into the [arg object] via [method deserialize].

This method returns the empty string as it result.


[call [arg objectName] [method {import object file}] [arg object] \
	[arg path] [opt [arg format]]]

This method behaves like [method {import object text}], except that it
reads the text to convert from the specified file instead of being
given it as argument.


[call [arg objectName] [method {config names}]]

This method returns a list containing the names of all configuration
variables currently known to the object.


[call [arg objectName] [method {config get}]]

This method returns a dictionary containing the names and values of
all configuration variables currently known to the object.


[call [arg objectName] [method {config set}] [arg name] [opt [arg value]]]

This method sets the configuration variable [arg name] to the
specified [arg value] and returns the new value of the variable.

[para]

If no value is specified it simply returns the current value, without
changing it.

[para]

Note that while the user can set the predefined configuration
variables [const user] and [const format] doing so will have no
effect, these values will be internally overriden when invoking an
import plugin.


[call [arg objectName] [method {config unset}] [arg pattern]...]

This method unsets all configuration variables matching the specified
glob [arg pattern]s. If no pattern is specified it will unset all
currently defined configuration variables.


[call [arg objectName] [method includes]]

This method returns a list containing the currently specified paths to
use to search for include files when processing input.

The order of paths in the list corresponds to the order in which they
are used, from first to last, and also corresponds to the order in
which they were added to the object.


[call [arg objectName] [method {include add}] [arg path]]

This methods adds the specified [arg path] to the list of paths to use
to search for include files when processing input. The path is added
to the end of the list, causing it to be searched after all previously
added paths. The result of the command is the empty string.

[para]

The method does nothing if the path is already known.


[call [arg objectName] [method {include remove}] [arg path]]

This methods removes the specified [arg path] from the list of paths
to use to search for include files when processing input. The result
of the command is the empty string.

[para]

The method does nothing if the path is not known.


[call [arg objectName] [method {include clear}]]

This method clears the list of paths to use to search for include
files when processing input. The result of the command is the empty
string.

[list_end]


[section {Import plugin API v2 reference}]

Plugins are what this package uses to manage the support for any input
format beyond the [sectref {Keyword index serialization format}]. Here
we specify the API the objects created by this package use to interact
with their plugins.







<








<
















<







<





<




<


















<





<









<












<










<







<







152
153
154
155
156
157
158

159
160
161
162
163
164
165
166

167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182

183
184
185
186
187
188
189

190
191
192
193
194

195
196
197
198

199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216

217
218
219
220
221

222
223
224
225
226
227
228
229
230

231
232
233
234
235
236
237
238
239
240
241
242

243
244
245
246
247
248
249
250
251
252

253
254
255
256
257
258
259

260
261
262
263
264
265
266
found in the section [sectref {Keyword index serialization format}].

[para]

The plugin has to conform to the interface specified in section
[sectref {Import plugin API v2 reference}].


[call [arg objectName] [method {import file}] [arg path] [opt [arg format]]]

This method is a convenient wrapper around the [method {import text}]
method described by the previous item.

It reads the contents of the specified file into memory, feeds the
result into [method {import text}] and returns the resulting
serialization as its own result.


[call [arg objectName] [method {import object text}] [arg object] \
	[arg text] [opt [arg format]]]

This method is a convenient wrapper around the [method {import text}]
method described by the previous item.

It expects that [arg object] is an object command supporting a
[method deserialize] method expecting the canonical serialization of a
keyword index.

It imports the text using [method {import text}] and then feeds the
resulting serialization into the [arg object] via [method deserialize].

This method returns the empty string as it result.


[call [arg objectName] [method {import object file}] [arg object] \
	[arg path] [opt [arg format]]]

This method behaves like [method {import object text}], except that it
reads the text to convert from the specified file instead of being
given it as argument.


[call [arg objectName] [method {config names}]]

This method returns a list containing the names of all configuration
variables currently known to the object.


[call [arg objectName] [method {config get}]]

This method returns a dictionary containing the names and values of
all configuration variables currently known to the object.


[call [arg objectName] [method {config set}] [arg name] [opt [arg value]]]

This method sets the configuration variable [arg name] to the
specified [arg value] and returns the new value of the variable.

[para]

If no value is specified it simply returns the current value, without
changing it.

[para]

Note that while the user can set the predefined configuration
variables [const user] and [const format] doing so will have no
effect, these values will be internally overriden when invoking an
import plugin.


[call [arg objectName] [method {config unset}] [arg pattern]...]

This method unsets all configuration variables matching the specified
glob [arg pattern]s. If no pattern is specified it will unset all
currently defined configuration variables.


[call [arg objectName] [method includes]]

This method returns a list containing the currently specified paths to
use to search for include files when processing input.

The order of paths in the list corresponds to the order in which they
are used, from first to last, and also corresponds to the order in
which they were added to the object.


[call [arg objectName] [method {include add}] [arg path]]

This methods adds the specified [arg path] to the list of paths to use
to search for include files when processing input. The path is added
to the end of the list, causing it to be searched after all previously
added paths. The result of the command is the empty string.

[para]

The method does nothing if the path is already known.


[call [arg objectName] [method {include remove}] [arg path]]

This methods removes the specified [arg path] from the list of paths
to use to search for include files when processing input. The result
of the command is the empty string.

[para]

The method does nothing if the path is not known.


[call [arg objectName] [method {include clear}]]

This method clears the list of paths to use to search for include
files when processing input. The result of the command is the empty
string.

[list_end]


[section {Import plugin API v2 reference}]

Plugins are what this package uses to manage the support for any input
format beyond the [sectref {Keyword index serialization format}]. Here
we specify the API the objects created by this package use to interact
with their plugins.
390
391
392
393
394
395
396
397
398
399
400
401
402
[list_end][comment {-- api command signatures --}]

[enum] A single usage cycle of a plugin consists of the invokations of
       the command [cmd import]. This call has to leave the plugin in
       a state where another usage cycle can be run without problems.

[list_end]


[include include/serialization.inc]
[vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]







<





383
384
385
386
387
388
389

390
391
392
393
394
[list_end][comment {-- api command signatures --}]

[enum] A single usage cycle of a plugin consists of the invokations of
       the command [cmd import]. This call has to leave the plugin in
       a state where another usage cycle can be run without problems.

[list_end]


[include include/serialization.inc]
[vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]

Changes to modules/doctools2idx/introduction.man.

1
2


















3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools2idx_introduction n 2.0]


















[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {DocTools - Keyword indices}]
[category  {Documentation tools}]
[keywords markup {semantic markup} index {keyword index}]
[keywords plugin parsing formatting conversion]
[see_also doctools2toc_introduction]
[see_also doctools2doc_introduction]
[comment {
    [see_also doctools_lang_intro]
    [see_also doctools_lang_syntax]
    [see_also doctools_lang_cmdref]
    [see_also doctools_lang_faq]
    [see_also doctools]
    [see_also doctools_plugin_apiref]
    [see_also doctoc_intro]
    [see_also docidx_intro]
}]
[description]

[term docidx] (short for [emph {documentation indices}]) stands for a
set of related, yet different, entities which are working together for
the easy creation and transformation of keyword indices for
documentation.


>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>




<
<
<
<

<
<
<
<
<
<
<
<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24




25








26
27
28
29
30
31
32
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools2idx_introduction n 2.0]
[see_also docidx_intro]
[see_also doctoc_intro]
[see_also doctools]
[see_also doctools2doc_introduction]
[see_also doctools2toc_introduction]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_faq]
[see_also doctools_lang_intro]
[see_also doctools_lang_syntax]
[see_also doctools_plugin_apiref]
[keywords conversion]
[keywords formatting]
[keywords index]
[keywords {keyword index}]
[keywords markup]
[keywords parsing]
[keywords plugin]
[keywords {semantic markup}]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {DocTools - Keyword indices}]
[category  {Documentation tools}]




[comment {








}]
[description]

[term docidx] (short for [emph {documentation indices}]) stands for a
set of related, yet different, entities which are working together for
the easy creation and transformation of keyword indices for
documentation.
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
supported formats is extensible through plugin packages.

[list_end]

See also section [sectref {Package Overview}] for an overview of the
dependencies between these and other, supporting packages.


[enum]
At last, but not least, [term {plugin writers}] have to understand the
interaction between the import and export packages and their plugins.
These APIs are described in the documentation for the two relevant
packages, i.e.

[list_begin itemized]







<







110
111
112
113
114
115
116

117
118
119
120
121
122
123
supported formats is extensible through plugin packages.

[list_end]

See also section [sectref {Package Overview}] for an overview of the
dependencies between these and other, supporting packages.


[enum]
At last, but not least, [term {plugin writers}] have to understand the
interaction between the import and export packages and their plugins.
These APIs are described in the documentation for the two relevant
packages, i.e.

[list_begin itemized]
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
intended for the markup of [term {tables of contents}], and of general
documentation, respectively.

They are described in their own sets of documents, starting at
the [manpage {DocTools - Tables Of Contents}] and
the [manpage {DocTools - General}], respectively.


[section {Package Overview}]
[include include/dependencies.inc]


[vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]







<


<




134
135
136
137
138
139
140

141
142

143
144
145
146
intended for the markup of [term {tables of contents}], and of general
documentation, respectively.

They are described in their own sets of documents, starting at
the [manpage {DocTools - Tables Of Contents}] and
the [manpage {DocTools - General}], respectively.


[section {Package Overview}]
[include include/dependencies.inc]


[vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]

Changes to modules/doctools2idx/parse.man.

1
2




3
4
5
6
7
8
9
10
11
12
13
14
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::idx::parse n 1]




[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Parsing text in docidx format}]
[category  {Documentation tools}]
[keywords doctools docidx parser lexer]
[require doctools::idx::parse [opt 0.1]]
[require Tcl 8.4]
[require doctools::idx::structure]
[require doctools::msgcat]
[require doctools::tcl::parse]
[require fileutil]
[require logger]


>
>
>
>




<







1
2
3
4
5
6
7
8
9
10

11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::idx::parse n 1]
[keywords docidx]
[keywords doctools]
[keywords lexer]
[keywords parser]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Parsing text in docidx format}]
[category  {Documentation tools}]

[require doctools::idx::parse [opt 0.1]]
[require Tcl 8.4]
[require doctools::idx::structure]
[require doctools::msgcat]
[require doctools::tcl::parse]
[require fileutil]
[require logger]
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129

When successful the command returns the canonical serialization of the
keyword index which was encoded in the text.

See the section [sectref {Keyword index serialization format}] for
specification of that format.


[call [cmd ::doctools::idx::parse] [method file] [arg path]]

The same as [method text], except that the text to parse is read from
the file specified by [arg path].


[call [cmd ::doctools::idx::parse] [method includes]]

This method returns the current list of search paths used when looking
for include files.


[call [cmd ::doctools::idx::parse] [method {include add}] [arg path]]

This method adds the [arg path] to the list of paths searched when
looking for an include file. The call is ignored if the path is
already in the list of paths. The method returns the empty string as
its result.


[call [cmd ::doctools::idx::parse] [method {include remove}] [arg path]]

This method removes the [arg path] from the list of paths searched
when looking for an include file. The call is ignored if the path is
not contained in the list of paths. The method returns the empty
string as its result.


[call [cmd ::doctools::idx::parse] [method {include clear}]]

This method clears the list of search paths for include files.


[call [cmd ::doctools::idx::parse] [method vars]]

This method returns a dictionary containing the current set of
predefined variables known to the [cmd vset] markup command during
processing.


[call [cmd ::doctools::idx::parse] [method {var set}] [arg name] [arg value]]

This method adds the variable [arg name] to the set of predefined
variables known to the [cmd vset] markup command during processing,
and gives it the specified [arg value]. The method returns the empty
string as its result.


[call [cmd ::doctools::idx::parse] [method {var unset}] [arg name]]

This method removes the variable [arg name] from the set of predefined
variables known to the [cmd vset] markup command during
processing. The method returns the empty string as its result.


[call [cmd ::doctools::idx::parse] [method {var clear}] [opt [arg pattern]]]

This method removes all variables matching the [arg pattern] from the
set of predefined variables known to the [cmd vset] markup command
during processing. The method returns the empty string as its result.

[para]

The pattern matching is done with [cmd {string match}], and the
default pattern used when none is specified, is [const *].

[list_end]



[section {Parse errors}]

The format of the parse error messages thrown when encountering
violations of the [term docidx] markup syntax is human readable and
not intended for processing by machines. As such it is not documented.








<





<




<







<








<



<






<








<





<













<
<







49
50
51
52
53
54
55

56
57
58
59
60

61
62
63
64

65
66
67
68
69
70
71

72
73
74
75
76
77
78
79

80
81
82

83
84
85
86
87
88

89
90
91
92
93
94
95
96

97
98
99
100
101

102
103
104
105
106
107
108
109
110
111
112
113
114


115
116
117
118
119
120
121

When successful the command returns the canonical serialization of the
keyword index which was encoded in the text.

See the section [sectref {Keyword index serialization format}] for
specification of that format.


[call [cmd ::doctools::idx::parse] [method file] [arg path]]

The same as [method text], except that the text to parse is read from
the file specified by [arg path].


[call [cmd ::doctools::idx::parse] [method includes]]

This method returns the current list of search paths used when looking
for include files.


[call [cmd ::doctools::idx::parse] [method {include add}] [arg path]]

This method adds the [arg path] to the list of paths searched when
looking for an include file. The call is ignored if the path is
already in the list of paths. The method returns the empty string as
its result.


[call [cmd ::doctools::idx::parse] [method {include remove}] [arg path]]

This method removes the [arg path] from the list of paths searched
when looking for an include file. The call is ignored if the path is
not contained in the list of paths. The method returns the empty
string as its result.


[call [cmd ::doctools::idx::parse] [method {include clear}]]

This method clears the list of search paths for include files.


[call [cmd ::doctools::idx::parse] [method vars]]

This method returns a dictionary containing the current set of
predefined variables known to the [cmd vset] markup command during
processing.


[call [cmd ::doctools::idx::parse] [method {var set}] [arg name] [arg value]]

This method adds the variable [arg name] to the set of predefined
variables known to the [cmd vset] markup command during processing,
and gives it the specified [arg value]. The method returns the empty
string as its result.


[call [cmd ::doctools::idx::parse] [method {var unset}] [arg name]]

This method removes the variable [arg name] from the set of predefined
variables known to the [cmd vset] markup command during
processing. The method returns the empty string as its result.


[call [cmd ::doctools::idx::parse] [method {var clear}] [opt [arg pattern]]]

This method removes all variables matching the [arg pattern] from the
set of predefined variables known to the [cmd vset] markup command
during processing. The method returns the empty string as its result.

[para]

The pattern matching is done with [cmd {string match}], and the
default pattern used when none is specified, is [const *].

[list_end]



[section {Parse errors}]

The format of the parse error messages thrown when encountering
violations of the [term docidx] markup syntax is human readable and
not intended for processing by machines. As such it is not documented.

170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
A list of details for the error, like the markup command involved. In
the case of message code [const docidx/include/syntax] this value is
the set of errors found in the included file, using the format
described here.

[list_end]
[list_end]


[include include/format/docidx.inc]
[include include/serialization.inc]

[vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]







<







162
163
164
165
166
167
168

169
170
171
172
173
174
175
A list of details for the error, like the markup command involved. In
the case of message code [const docidx/include/syntax] this value is
the set of errors found in the included file, using the format
described here.

[list_end]
[list_end]


[include include/format/docidx.inc]
[include include/serialization.inc]

[vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]

Changes to modules/doctools2idx/structure.man.

1
2




3
4
5
6
7
8
9
10
11
12
13
14
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::idx::structure n 0.1]




[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Docidx serialization utilities}]
[category  {Documentation tools}]
[keywords docidx doctools serialization deserialization]
[require doctools::idx::structure [opt 0.1]]
[require Tcl 8.4]
[require logger]
[require snit]
[description]

This package provides commands to work with the serializations of


>
>
>
>




<







1
2
3
4
5
6
7
8
9
10

11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::idx::structure n 0.1]
[keywords deserialization]
[keywords docidx]
[keywords doctools]
[keywords serialization]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Docidx serialization utilities}]
[category  {Documentation tools}]

[require doctools::idx::structure [opt 0.1]]
[require Tcl 8.4]
[require logger]
[require snit]
[description]

This package provides commands to work with the serializations of
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110

[para]

For the specification of regular and canonical keyword index
serializations see the section
[sectref {Keyword index serialization format}].


[call [cmd ::doctools::idx::structure] [method verify-as-canonical] \
	[arg serial]]

This command verifies that the content of [arg serial] is a valid
[term canonical] serialization of a keyword index and will throw an
error if that is not the case. The result of the command is the empty
string.

[para]

For the specification of canonical keyword index serializations see
the section [sectref {Keyword index serialization format}].


[call [cmd ::doctools::idx::structure] [method canonicalize] [arg serial]]

This command assumes that the content of [arg serial] is a valid
[term regular] serialization of a keyword index and will throw an
error if that is not the case.

[para]

It will then convert the input into the [term canonical] serialization
of the contained keyword index and return it as its result. If the
input is already canonical it will be returned unchanged.

[para]

For the specification of regular and canonical keyword index
serializations see the section
[sectref {Keyword index serialization format}].



[call [cmd ::doctools::idx::structure] [method print] [arg serial]]

This command assumes that the argument [arg serial] contains a valid
regular serialization of a keyword index and returns a string
containing that index in a human readable form.

[para]

The exact format of this form is not specified and cannot be relied on
for parsing or other machine-based activities.

[para]

For the specification of regular keyword index serializations see the
section [sectref {Keyword index serialization format}].


[call [cmd ::doctools::idx::structure] [method merge] \
	[arg seriala] [arg serialb]]

This command accepts the regular serializations of two keyword indices
and uses them to create their union.  The result of the command is the
canonical serialization of this unified keyword index.







<












<



















<
<















<







49
50
51
52
53
54
55

56
57
58
59
60
61
62
63
64
65
66
67

68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86


87
88
89
90
91
92
93
94
95
96
97
98
99
100
101

102
103
104
105
106
107
108

[para]

For the specification of regular and canonical keyword index
serializations see the section
[sectref {Keyword index serialization format}].


[call [cmd ::doctools::idx::structure] [method verify-as-canonical] \
	[arg serial]]

This command verifies that the content of [arg serial] is a valid
[term canonical] serialization of a keyword index and will throw an
error if that is not the case. The result of the command is the empty
string.

[para]

For the specification of canonical keyword index serializations see
the section [sectref {Keyword index serialization format}].


[call [cmd ::doctools::idx::structure] [method canonicalize] [arg serial]]

This command assumes that the content of [arg serial] is a valid
[term regular] serialization of a keyword index and will throw an
error if that is not the case.

[para]

It will then convert the input into the [term canonical] serialization
of the contained keyword index and return it as its result. If the
input is already canonical it will be returned unchanged.

[para]

For the specification of regular and canonical keyword index
serializations see the section
[sectref {Keyword index serialization format}].



[call [cmd ::doctools::idx::structure] [method print] [arg serial]]

This command assumes that the argument [arg serial] contains a valid
regular serialization of a keyword index and returns a string
containing that index in a human readable form.

[para]

The exact format of this form is not specified and cannot be relied on
for parsing or other machine-based activities.

[para]

For the specification of regular keyword index serializations see the
section [sectref {Keyword index serialization format}].


[call [cmd ::doctools::idx::structure] [method merge] \
	[arg seriala] [arg serialb]]

This command accepts the regular serializations of two keyword indices
and uses them to create their union.  The result of the command is the
canonical serialization of this unified keyword index.
119
120
121
122
123
124
125
126
127
128
129
130
131
132
[para]

For the specification of regular and canonical keyword index
serializations see the section
[sectref {Keyword index serialization format}].

[list_end]


[include include/serialization.inc]

[vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]







<






117
118
119
120
121
122
123

124
125
126
127
128
129
[para]

For the specification of regular and canonical keyword index
serializations see the section
[sectref {Keyword index serialization format}].

[list_end]


[include include/serialization.inc]

[vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]

Changes to modules/doctools2toc/container.man.

1
2



















3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::toc n 2]



















[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Holding tables of contents}]
[category  {Documentation tools}]
[require doctools::toc [opt 2]]
[require Tcl 8.4]
[require doctools::toc::structure]
[require struct::tree]
[require snit]
[keywords {table of contents} table reference documentation]
[keywords {doctoc markup} markup conversion formatting generation plugin]
[keywords json text nroff wiki {tcler's wiki} latex TMML HTML]
[keywords parsing]
[description]

This package provides a class to contain and programmatically
manipulate tables of contents.

[para]



>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>









<
<
<
<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30




31
32
33
34
35
36
37
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::toc n 2]
[keywords conversion]
[keywords {doctoc markup}]
[keywords documentation]
[keywords formatting]
[keywords generation]
[keywords HTML]
[keywords json]
[keywords latex]
[keywords markup]
[keywords nroff]
[keywords parsing]
[keywords plugin]
[keywords reference]
[keywords table]
[keywords {table of contents}]
[keywords {tcler's wiki}]
[keywords text]
[keywords TMML]
[keywords wiki]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Holding tables of contents}]
[category  {Documentation tools}]
[require doctools::toc [opt 2]]
[require Tcl 8.4]
[require doctools::toc::structure]
[require struct::tree]
[require snit]




[description]

This package provides a class to contain and programmatically
manipulate tables of contents.

[para]

38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
[sectref {ToC serialization format}].

This is the only format directly known to this class. Conversions from
and to any other format are handled by export and import manager
objects. These may be attached to a container, but do not have to be,
it is merely a convenience.


[section Concepts] [include include/concept.inc]


[section API]
[subsection {Package commands}]

[list_begin definitions]

[call [cmd ::doctools::toc] [arg objectName]]

This command creates a new container object with an associated Tcl
command whose name is [arg objectName]. This [term object] command is
explained in full detail in the sections [sectref {Object command}]
and [sectref {Object methods}]. The object command will be created
under the current namespace if the [arg objectName] is not fully
qualified, and in the specified namespace otherwise.

[list_end]


[subsection {Object command}]

All objects created by the [cmd ::doctools::toc] command have the
following general form:

[list_begin definitions]

[call [cmd objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the
exact behavior of the command.

See section [sectref {Object methods}] for the detailed
specifications.

[list_end]


[subsection {Object methods}]

[list_begin definitions]

[call [arg objectName] [method destroy]]








<

<

















<
















<







53
54
55
56
57
58
59

60

61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77

78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93

94
95
96
97
98
99
100
[sectref {ToC serialization format}].

This is the only format directly known to this class. Conversions from
and to any other format are handled by export and import manager
objects. These may be attached to a container, but do not have to be,
it is merely a convenience.


[section Concepts] [include include/concept.inc]


[section API]
[subsection {Package commands}]

[list_begin definitions]

[call [cmd ::doctools::toc] [arg objectName]]

This command creates a new container object with an associated Tcl
command whose name is [arg objectName]. This [term object] command is
explained in full detail in the sections [sectref {Object command}]
and [sectref {Object methods}]. The object command will be created
under the current namespace if the [arg objectName] is not fully
qualified, and in the specified namespace otherwise.

[list_end]


[subsection {Object command}]

All objects created by the [cmd ::doctools::toc] command have the
following general form:

[list_begin definitions]

[call [cmd objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the
exact behavior of the command.

See section [sectref {Object methods}] for the detailed
specifications.

[list_end]


[subsection {Object methods}]

[list_begin definitions]

[call [arg objectName] [method destroy]]

109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
Beyond the label the element also has a longer descriptive string,
supplied via [arg desc].

[para]

The result of the method is the handle (id) of the new element.


[call [arg objectName] [method {+ division}] [arg id] [arg label] [opt [arg docid]]]

This method adds a new division element to the table of contents,
under the element specified via its handle [arg id]. This parent
element has to be a division element, or the root. An error is thrown
otherwise.

The new element will be externally identified by its [arg label],
which has to be be unique within the parent element. An error is
thrown otherwise.

[para]

As a division element it is can refer to a document, identified by the
symbolic [arg docid], but may choose not to.

[para]

The result of the method is the handle (id) of the new element.


[call [arg objectName] [method remove] [arg id]]

This method removes the element identified by the handle [arg id] from
the table of contents.

If the element is a division all of its children, if any, are removed
as well. The root element/division of the table of contents cannot be
removed however, only its children.

[para]

The result of the method is the empty string.


[call [arg objectName] [method up] [arg id]]

This method returns the handle of the parent for the element
identified by its handle [arg id], or the empty string if [arg id]
refered to the root element.


[call [arg objectName] [method next] [arg id]]

This method returns the handle of the right sibling for the element
identified by its handle [arg id], or the handle of the parent if the
element has no right sibling, or the empty string if [arg id] refered
to the root element.



[call [arg objectName] [method prev] [arg id]]

This method returns the handle of the left sibling for the element
identified by its handle [arg id], or the handle of the parent if the
element has no left sibling, or the empty string if [arg id] refered
to the root element.


[call [arg objectName] [method child] [arg id] [arg label] [opt [arg ...]]]

This method returns the handle of a child of the element identified by
its handle [arg id]. The child itself is identified by a series of
labels.


[call [arg objectName] [method element] [opt [arg ...]]]

This method returns the handle of the element identified by a series
of labels, starting from the root of the table of contents. The series
of labels is allowed to be empty, in which case the handle of the root
element is returned.


[call [arg objectName] [method children] [arg id]]

This method returns a list containing the handles of all children of
the element identified by the handle [arg id], from first to last, in
that order.


[call [arg objectName] [method type] [arg id]]

This method returns the type of the element, either [const reference],
or [const division].


[call [arg objectName] [method full-label] [arg id]]

This method is the complement of the method [method element],
converting the handle [arg id] of an element into a list of labels
full identifying the element within the whole table of contents.


[call [arg objectName] [method elabel] [arg id] [opt [arg newlabel]]]

This method queries and/or changes the label of the element identified
by the handle [arg id]. If the argument [arg newlabel] is present then
the label is changed to that value. Regardless of this, the result of
the method is the current value of the label.

[para]

If the label is changed the new label has to be unique within the
containing division, or an error is thrown.

[para]

Further, of the [arg id] refers to the root element of the table of
contents, then using this method is equivalent to using the method
[arg label], i.e. it is accessing the global label for the whole
table.


[call [arg objectName] [method description] [arg id] [opt [arg newdesc]]]

This method queries and/or changes the description of the element
identified by the handle [arg id]. If the argument [arg newdesc] is
present then the description is changed to that value. Regardless of
this, the result of the method is the current value of the description.

[para]

The element this method operates on has to be a reference element, or
an error will be thrown.


[call [arg objectName] [method document] [arg id] [opt [arg newdocid]]]

This method queries and/or changes the document reference of the
element identified by the handle [arg id].

If the argument [arg newdocid] is present then the description is
changed to that value. Regardless of this, the result of the method is
the current value of the document reference.

[para]

Setting the reference to the empty string means unsetting it, and is
allowed only for division elements. Conversely, if the result is the
empty string then the element has no document reference, and this can
happen only for division elements.


[call [arg objectName] [method title]]

Returns the currently defined title of the table of contents.


[call [arg objectName] [method title] [arg text]]

Sets the title of the table of contents to [arg text], and returns it as
the result of the command.


[call [arg objectName] [method label]]

Returns the currently defined label of the table of contents.


[call [arg objectName] [method label] [arg text]]

Sets the label of the table of contents to [arg text], and returns it as
the result of the command.


[call [arg objectName] [method importer]]

Returns the import manager object currently attached to the container,
if any.


[call [arg objectName] [method importer] [arg object]]

Attaches the [arg object] as import manager to the container, and
returns it as the result of the command.

Note that the [arg object] is [emph not] put into ownership of the
container. I.e., destruction of the container will [emph not] destroy
the [arg object].

[para]

It is expected that [arg object] provides a method named
[method {import text}] which takes a text and a format name, and
returns the canonical serialization of the table of contents contained in
the text, assuming the given format.


[call [arg objectName] [method exporter]]

Returns the export manager object currently attached to the container,
if any.


[call [arg objectName] [method exporter] [arg object]]

Attaches the [arg object] as export manager to the container, and
returns it as the result of the command.

Note that the [arg object] is [emph not] put into ownership of the
container. I.e., destruction of the container will [emph not] destroy
the [arg object].

[para]

It is expected that [arg object] provides a method named
[method {export object}] which takes the container and a format name,
and returns a text encoding table of contents stored in the container, in
the given format. It is further expected that the [arg object] will
use the container's method [method serialize] to obtain the
serialization of the table of contents from which to generate the text.


[call [arg objectName] [method {deserialize =}] [arg data] [opt [arg format]]]

This method replaces the contents of the table object with the table
contained in the [arg data]. If no [arg format] was specified it is
assumed to be the regular serialization of a table of contents.

[para]

Otherwise the object will use the attached import manager to convert
the data from the specified format to a serialization it can handle.

In that case an error will be thrown if the container has no import
manager attached to it.

[para]

The result of the method is the empty string.


[call [arg objectName] [method {deserialize +=}] [arg data] [opt [arg format]]]

This method behaves like [method {deserialize =}] in its essentials,
except that it merges the table of contents in the [arg data] to its
contents instead of replacing it. 

The method will throw an error if merging is not possible, i.e. would
produce an invalid table. The existing content is left unchanged in
that case.

[para]

The result of the method is the empty string.


[call [arg objectName] [method serialize] [opt [arg format]]]

This method returns the table of contents contained in the object. If no
[arg format] is not specified the returned result is the canonical
serialization of its contents.

[para]

Otherwise the object will use the attached export manager to convert
the data to the specified format.

In that case an error will be thrown if the container has no export
manager attached to it.


[list_end]


[include include/serialization.inc]
[vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]







<




















<













<





<








<
<







<





<








<





<






<





<




















<











<

















<



<






<



<






<




<

















<




<



















<


















<




|








<















<

<





120
121
122
123
124
125
126

127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146

147
148
149
150
151
152
153
154
155
156
157
158
159

160
161
162
163
164

165
166
167
168
169
170
171
172


173
174
175
176
177
178
179

180
181
182
183
184

185
186
187
188
189
190
191
192

193
194
195
196
197

198
199
200
201
202
203

204
205
206
207
208

209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228

229
230
231
232
233
234
235
236
237
238
239

240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256

257
258
259

260
261
262
263
264
265

266
267
268

269
270
271
272
273
274

275
276
277
278

279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295

296
297
298
299

300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318

319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336

337
338
339
340
341
342
343
344
345
346
347
348
349

350
351
352
353
354
355
356
357
358
359
360
361
362
363
364

365

366
367
368
369
370
Beyond the label the element also has a longer descriptive string,
supplied via [arg desc].

[para]

The result of the method is the handle (id) of the new element.


[call [arg objectName] [method {+ division}] [arg id] [arg label] [opt [arg docid]]]

This method adds a new division element to the table of contents,
under the element specified via its handle [arg id]. This parent
element has to be a division element, or the root. An error is thrown
otherwise.

The new element will be externally identified by its [arg label],
which has to be be unique within the parent element. An error is
thrown otherwise.

[para]

As a division element it is can refer to a document, identified by the
symbolic [arg docid], but may choose not to.

[para]

The result of the method is the handle (id) of the new element.


[call [arg objectName] [method remove] [arg id]]

This method removes the element identified by the handle [arg id] from
the table of contents.

If the element is a division all of its children, if any, are removed
as well. The root element/division of the table of contents cannot be
removed however, only its children.

[para]

The result of the method is the empty string.


[call [arg objectName] [method up] [arg id]]

This method returns the handle of the parent for the element
identified by its handle [arg id], or the empty string if [arg id]
refered to the root element.


[call [arg objectName] [method next] [arg id]]

This method returns the handle of the right sibling for the element
identified by its handle [arg id], or the handle of the parent if the
element has no right sibling, or the empty string if [arg id] refered
to the root element.



[call [arg objectName] [method prev] [arg id]]

This method returns the handle of the left sibling for the element
identified by its handle [arg id], or the handle of the parent if the
element has no left sibling, or the empty string if [arg id] refered
to the root element.


[call [arg objectName] [method child] [arg id] [arg label] [opt [arg ...]]]

This method returns the handle of a child of the element identified by
its handle [arg id]. The child itself is identified by a series of
labels.


[call [arg objectName] [method element] [opt [arg ...]]]

This method returns the handle of the element identified by a series
of labels, starting from the root of the table of contents. The series
of labels is allowed to be empty, in which case the handle of the root
element is returned.


[call [arg objectName] [method children] [arg id]]

This method returns a list containing the handles of all children of
the element identified by the handle [arg id], from first to last, in
that order.


[call [arg objectName] [method type] [arg id]]

This method returns the type of the element, either [const reference],
or [const division].


[call [arg objectName] [method full-label] [arg id]]

This method is the complement of the method [method element],
converting the handle [arg id] of an element into a list of labels
full identifying the element within the whole table of contents.


[call [arg objectName] [method elabel] [arg id] [opt [arg newlabel]]]

This method queries and/or changes the label of the element identified
by the handle [arg id]. If the argument [arg newlabel] is present then
the label is changed to that value. Regardless of this, the result of
the method is the current value of the label.

[para]

If the label is changed the new label has to be unique within the
containing division, or an error is thrown.

[para]

Further, of the [arg id] refers to the root element of the table of
contents, then using this method is equivalent to using the method
[arg label], i.e. it is accessing the global label for the whole
table.


[call [arg objectName] [method description] [arg id] [opt [arg newdesc]]]

This method queries and/or changes the description of the element
identified by the handle [arg id]. If the argument [arg newdesc] is
present then the description is changed to that value. Regardless of
this, the result of the method is the current value of the description.

[para]

The element this method operates on has to be a reference element, or
an error will be thrown.


[call [arg objectName] [method document] [arg id] [opt [arg newdocid]]]

This method queries and/or changes the document reference of the
element identified by the handle [arg id].

If the argument [arg newdocid] is present then the description is
changed to that value. Regardless of this, the result of the method is
the current value of the document reference.

[para]

Setting the reference to the empty string means unsetting it, and is
allowed only for division elements. Conversely, if the result is the
empty string then the element has no document reference, and this can
happen only for division elements.


[call [arg objectName] [method title]]

Returns the currently defined title of the table of contents.


[call [arg objectName] [method title] [arg text]]

Sets the title of the table of contents to [arg text], and returns it as
the result of the command.


[call [arg objectName] [method label]]

Returns the currently defined label of the table of contents.


[call [arg objectName] [method label] [arg text]]

Sets the label of the table of contents to [arg text], and returns it as
the result of the command.


[call [arg objectName] [method importer]]

Returns the import manager object currently attached to the container,
if any.


[call [arg objectName] [method importer] [arg object]]

Attaches the [arg object] as import manager to the container, and
returns it as the result of the command.

Note that the [arg object] is [emph not] put into ownership of the
container. I.e., destruction of the container will [emph not] destroy
the [arg object].

[para]

It is expected that [arg object] provides a method named
[method {import text}] which takes a text and a format name, and
returns the canonical serialization of the table of contents contained in
the text, assuming the given format.


[call [arg objectName] [method exporter]]

Returns the export manager object currently attached to the container,
if any.


[call [arg objectName] [method exporter] [arg object]]

Attaches the [arg object] as export manager to the container, and
returns it as the result of the command.

Note that the [arg object] is [emph not] put into ownership of the
container. I.e., destruction of the container will [emph not] destroy
the [arg object].

[para]

It is expected that [arg object] provides a method named
[method {export object}] which takes the container and a format name,
and returns a text encoding table of contents stored in the container, in
the given format. It is further expected that the [arg object] will
use the container's method [method serialize] to obtain the
serialization of the table of contents from which to generate the text.


[call [arg objectName] [method {deserialize =}] [arg data] [opt [arg format]]]

This method replaces the contents of the table object with the table
contained in the [arg data]. If no [arg format] was specified it is
assumed to be the regular serialization of a table of contents.

[para]

Otherwise the object will use the attached import manager to convert
the data from the specified format to a serialization it can handle.

In that case an error will be thrown if the container has no import
manager attached to it.

[para]

The result of the method is the empty string.


[call [arg objectName] [method {deserialize +=}] [arg data] [opt [arg format]]]

This method behaves like [method {deserialize =}] in its essentials,
except that it merges the table of contents in the [arg data] to its
contents instead of replacing it.

The method will throw an error if merging is not possible, i.e. would
produce an invalid table. The existing content is left unchanged in
that case.

[para]

The result of the method is the empty string.


[call [arg objectName] [method serialize] [opt [arg format]]]

This method returns the table of contents contained in the object. If no
[arg format] is not specified the returned result is the canonical
serialization of its contents.

[para]

Otherwise the object will use the attached export manager to convert
the data to the specified format.

In that case an error will be thrown if the container has no export
manager attached to it.


[list_end]


[include include/serialization.inc]
[vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]

Changes to modules/doctools2toc/export.man.

1
2



















3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::toc::export n 0.1]



















[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Exporting tables of contents}]
[category  {Documentation tools}]
[require doctools::toc::export [opt 0.1]]
[require Tcl 8.4]
[require doctools::config]
[require doctools::toc::structure]
[require snit]
[require pluginmgr]
[keywords {table of contents} table reference documentation manpage url]
[keywords markup conversion formatting export generation plugin]
[keywords json doctoc text nroff wiki {tcler's wiki} HTML]
[description]

This package provides a class to manage the plugins for the export of
tables of contents to other formats, i.e. their conversion to, for
example [term doctoc], [term HTML], etc.

[para]


>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>










<
<
<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31



32
33
34
35
36
37
38
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::toc::export n 0.1]
[keywords conversion]
[keywords doctoc]
[keywords documentation]
[keywords export]
[keywords formatting]
[keywords generation]
[keywords HTML]
[keywords json]
[keywords manpage]
[keywords markup]
[keywords nroff]
[keywords plugin]
[keywords reference]
[keywords table]
[keywords {table of contents}]
[keywords {tcler's wiki}]
[keywords text]
[keywords url]
[keywords wiki]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Exporting tables of contents}]
[category  {Documentation tools}]
[require doctools::toc::export [opt 0.1]]
[require Tcl 8.4]
[require doctools::config]
[require doctools::toc::structure]
[require snit]
[require pluginmgr]



[description]

This package provides a class to manage the plugins for the export of
tables of contents to other formats, i.e. their conversion to, for
example [term doctoc], [term HTML], etc.

[para]
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139

Readers wishing to write their own export plugin for some format, i.e.
[term {plugin writer}]s reading and understanding the section
containing the [sectref {Export plugin API v2 reference}] is an
absolute necessity, as it specifies the interaction between this
package and its plugins in detail.


[section Concepts] [include include/concept.inc]


[section API]
[subsection {Package commands}]

[list_begin definitions]

[call [cmd ::doctools::toc::export] [arg objectName]]

This command creates a new export manager object with an associated
Tcl command whose name is [arg objectName]. This [term object] command
is explained in full detail in the sections [sectref {Object command}]
and [sectref {Object methods}]. The object command will be created
under the current namespace if the [arg objectName] is not fully
qualified, and in the specified namespace otherwise.

[list_end]


[subsection {Object command}]

All objects created by the [cmd ::doctools::toc::export] command have
the following general form:

[list_begin definitions]

[call [cmd objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the
exact behavior of the command.

See section [sectref {Object methods}] for the detailed
specifications.

[list_end]


[subsection {Object methods}]

[list_begin definitions]

[call [arg objectName] [method destroy]]

This method destroys the object it is invoked for.


[call [arg objectName] [method {export serial}] [arg serial] [opt [arg format]]]

This method takes the canonical serialization of a table of contents
stored in [arg serial] and converts it to the specified [arg format],
using the export plugin for the format. An error is thrown if no
plugin could be found for the format.







<

<
















<


















<







<







95
96
97
98
99
100
101

102

103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118

119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136

137
138
139
140
141
142
143

144
145
146
147
148
149
150

Readers wishing to write their own export plugin for some format, i.e.
[term {plugin writer}]s reading and understanding the section
containing the [sectref {Export plugin API v2 reference}] is an
absolute necessity, as it specifies the interaction between this
package and its plugins in detail.


[section Concepts] [include include/concept.inc]


[section API]
[subsection {Package commands}]

[list_begin definitions]

[call [cmd ::doctools::toc::export] [arg objectName]]

This command creates a new export manager object with an associated
Tcl command whose name is [arg objectName]. This [term object] command
is explained in full detail in the sections [sectref {Object command}]
and [sectref {Object methods}]. The object command will be created
under the current namespace if the [arg objectName] is not fully
qualified, and in the specified namespace otherwise.

[list_end]


[subsection {Object command}]

All objects created by the [cmd ::doctools::toc::export] command have
the following general form:

[list_begin definitions]

[call [cmd objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the
exact behavior of the command.

See section [sectref {Object methods}] for the detailed
specifications.

[list_end]


[subsection {Object methods}]

[list_begin definitions]

[call [arg objectName] [method destroy]]

This method destroys the object it is invoked for.


[call [arg objectName] [method {export serial}] [arg serial] [opt [arg format]]]

This method takes the canonical serialization of a table of contents
stored in [arg serial] and converts it to the specified [arg format],
using the export plugin for the format. An error is thrown if no
plugin could be found for the format.
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
found in the section [sectref {ToC serialization format}].

[para]

The plugin has to conform to the interface specified in section
[sectref {Export plugin API v2 reference}].


[call [arg objectName] [method {export object}] [arg object] [opt [arg format]]]

This method is a convenient wrapper around the [method {export serial}]
method described by the previous item.

It expects that [arg object] is an object command supporting a
[method serialize] method returning the canonical serialization of a
table of contents. It invokes that method, feeds the result into
[method {export serial}] and returns the resulting string as its own
result.


[call [arg objectName] [method {config names}]]

This method returns a list containing the names of all configuration
variables currently known to the object.


[call [arg objectName] [method {config get}]]

This method returns a dictionary containing the names and values of
all configuration variables currently known to the object.


[call [arg objectName] [method {config set}] [arg name] [opt [arg value]]]

This method sets the configuration variable [arg name] to the
specified [arg value] and returns the new value of the variable.

[para]

If no value is specified it simply returns the current value, without
changing it.

[para]

Note that while the user can set the predefined configuration
variables [const user] and [const format] doing so will have no
effect, these values will be internally overriden when invoking an
import plugin.


[call [arg objectName] [method {config unset}] [arg pattern]...]

This method unsets all configuration variables matching the specified
glob [arg pattern]s. If no pattern is specified it will unset all
currently defined configuration variables.


[list_end]


[section {Export plugin API v2 reference}]

Plugins are what this package uses to manage the support for any
output format beyond the [sectref {ToC serialization format}]. Here we
specify the API the objects created by this package use to interact
with their plugins.







<











<





<




<


















<






<

<







162
163
164
165
166
167
168

169
170
171
172
173
174
175
176
177
178
179

180
181
182
183
184

185
186
187
188

189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206

207
208
209
210
211
212

213

214
215
216
217
218
219
220
found in the section [sectref {ToC serialization format}].

[para]

The plugin has to conform to the interface specified in section
[sectref {Export plugin API v2 reference}].


[call [arg objectName] [method {export object}] [arg object] [opt [arg format]]]

This method is a convenient wrapper around the [method {export serial}]
method described by the previous item.

It expects that [arg object] is an object command supporting a
[method serialize] method returning the canonical serialization of a
table of contents. It invokes that method, feeds the result into
[method {export serial}] and returns the resulting string as its own
result.


[call [arg objectName] [method {config names}]]

This method returns a list containing the names of all configuration
variables currently known to the object.


[call [arg objectName] [method {config get}]]

This method returns a dictionary containing the names and values of
all configuration variables currently known to the object.


[call [arg objectName] [method {config set}] [arg name] [opt [arg value]]]

This method sets the configuration variable [arg name] to the
specified [arg value] and returns the new value of the variable.

[para]

If no value is specified it simply returns the current value, without
changing it.

[para]

Note that while the user can set the predefined configuration
variables [const user] and [const format] doing so will have no
effect, these values will be internally overriden when invoking an
import plugin.


[call [arg objectName] [method {config unset}] [arg pattern]...]

This method unsets all configuration variables matching the specified
glob [arg pattern]s. If no pattern is specified it will unset all
currently defined configuration variables.


[list_end]


[section {Export plugin API v2 reference}]

Plugins are what this package uses to manage the support for any
output format beyond the [sectref {ToC serialization format}]. Here we
specify the API the objects created by this package use to interact
with their plugins.
291
292
293
294
295
296
297
298
299
300
301
302
303
[list_end][comment {-- api command signatures --}]

[enum] A single usage cycle of a plugin consists of the invokations of
       the command [cmd export]. This call has to leave the plugin in
       a state where another usage cycle can be run without problems.

[list_end]


[include include/serialization.inc]
[vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]







<





295
296
297
298
299
300
301

302
303
304
305
306
[list_end][comment {-- api command signatures --}]

[enum] A single usage cycle of a plugin consists of the invokations of
       the command [cmd export]. This call has to leave the plugin in
       a state where another usage cycle can be run without problems.

[list_end]


[include include/serialization.inc]
[vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]

Changes to modules/doctools2toc/import.man.

1
2













3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::toc::import n 0.1]













[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Importing keyword indices}]
[category  {Documentation tools}]
[require doctools::toc::import [opt 0.1]]
[require Tcl 8.4]
[require doctools::config]
[require doctools::toc::structure]
[require snit]
[require pluginmgr]
[keywords {table of contents} table reference documentation manpage url]
[keywords markup conversion import parsing plugin]
[keywords json doctoc]
[description]

This package provides a class to manage the plugins for the import of
tables of contents from other formats, i.e. their conversion from, for
example [term doctoc], [term json], etc.

[para]


>
>
>
>
>
>
>
>
>
>
>
>
>










<
<
<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25



26
27
28
29
30
31
32
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::toc::import n 0.1]
[keywords conversion]
[keywords doctoc]
[keywords documentation]
[keywords import]
[keywords json]
[keywords manpage]
[keywords markup]
[keywords parsing]
[keywords plugin]
[keywords reference]
[keywords table]
[keywords {table of contents}]
[keywords url]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Importing keyword indices}]
[category  {Documentation tools}]
[require doctools::toc::import [opt 0.1]]
[require Tcl 8.4]
[require doctools::config]
[require doctools::toc::structure]
[require snit]
[require pluginmgr]



[description]

This package provides a class to manage the plugins for the import of
tables of contents from other formats, i.e. their conversion from, for
example [term doctoc], [term json], etc.

[para]
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135

Readers wishing to write their own import plugin for some format, i.e.
[term {plugin writer}]s reading and understanding the section
containing the [sectref {Import plugin API v2 reference}] is an
absolute necessity, as it specifies the interaction between this
package and its plugins in detail.


[section Concepts] [include include/concept.inc]


[section API]
[subsection {Package commands}]

[list_begin definitions]

[call [cmd ::doctools::toc::import] [arg objectName]]

This command creates a new import manager object with an associated
Tcl command whose name is [arg objectName]. This [term object] command
is explained in full detail in the sections [sectref {Object command}]
and [sectref {Object methods}]. The object command will be created
under the current namespace if the [arg objectName] is not fully
qualified, and in the specified namespace otherwise.

[list_end]


[subsection {Object command}]

All objects created by the [cmd ::doctools::toc::import] command have
the following general form:

[list_begin definitions]

[call [cmd objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the
exact behavior of the command.

See section [sectref {Object methods}] for the detailed
specifications.

[list_end]


[subsection {Object methods}]

[list_begin definitions]

[call [arg objectName] [method destroy]]

This method destroys the object it is invoked for.


[call [arg objectName] [method {import text}] [arg text] [opt [arg format]]]

This method takes the [arg text] and converts it from the specified
[arg format] to the canonical serialization of a table of contents using
the import plugin for the format. An error is thrown if no plugin
could be found for the format.







<

<
















<


















<







<







85
86
87
88
89
90
91

92

93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108

109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126

127
128
129
130
131
132
133

134
135
136
137
138
139
140

Readers wishing to write their own import plugin for some format, i.e.
[term {plugin writer}]s reading and understanding the section
containing the [sectref {Import plugin API v2 reference}] is an
absolute necessity, as it specifies the interaction between this
package and its plugins in detail.


[section Concepts] [include include/concept.inc]


[section API]
[subsection {Package commands}]

[list_begin definitions]

[call [cmd ::doctools::toc::import] [arg objectName]]

This command creates a new import manager object with an associated
Tcl command whose name is [arg objectName]. This [term object] command
is explained in full detail in the sections [sectref {Object command}]
and [sectref {Object methods}]. The object command will be created
under the current namespace if the [arg objectName] is not fully
qualified, and in the specified namespace otherwise.

[list_end]


[subsection {Object command}]

All objects created by the [cmd ::doctools::toc::import] command have
the following general form:

[list_begin definitions]

[call [cmd objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the
exact behavior of the command.

See section [sectref {Object methods}] for the detailed
specifications.

[list_end]


[subsection {Object methods}]

[list_begin definitions]

[call [arg objectName] [method destroy]]

This method destroys the object it is invoked for.


[call [arg objectName] [method {import text}] [arg text] [opt [arg format]]]

This method takes the [arg text] and converts it from the specified
[arg format] to the canonical serialization of a table of contents using
the import plugin for the format. An error is thrown if no plugin
could be found for the format.
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
found in the section [sectref {ToC serialization format}].

[para]

The plugin has to conform to the interface specified in section
[sectref {Import plugin API v2 reference}].


[call [arg objectName] [method {import file}] [arg path] [opt [arg format]]]

This method is a convenient wrapper around the [method {import text}]
method described by the previous item.

It reads the contents of the specified file into memory, feeds the
result into [method {import text}] and returns the resulting
serialization as its own result.


[call [arg objectName] [method {import object text}] [arg object] \
	[arg text] [opt [arg format]]]

This method is a convenient wrapper around the [method {import text}]
method described by the previous item.

It expects that [arg object] is an object command supporting a
[method deserialize] method expecting the canonical serialization of a
table of contents.

It imports the text using [method {import text}] and then feeds the
resulting serialization into the [arg object] via [method deserialize].

This method returns the empty string as it result.


[call [arg objectName] [method {import object file}] [arg object] \
	[arg path] [opt [arg format]]]

This method behaves like [method {import object text}], except that it
reads the text to convert from the specified file instead of being
given it as argument.


[call [arg objectName] [method {config names}]]

This method returns a list containing the names of all configuration
variables currently known to the object.


[call [arg objectName] [method {config get}]]

This method returns a dictionary containing the names and values of
all configuration variables currently known to the object.


[call [arg objectName] [method {config set}] [arg name] [opt [arg value]]]

This method sets the configuration variable [arg name] to the
specified [arg value] and returns the new value of the variable.

[para]

If no value is specified it simply returns the current value, without
changing it.

[para]

Note that while the user can set the predefined configuration
variables [const user] and [const format] doing so will have no
effect, these values will be internally overriden when invoking an
import plugin.


[call [arg objectName] [method {config unset}] [arg pattern]...]

This method unsets all configuration variables matching the specified
glob [arg pattern]s. If no pattern is specified it will unset all
currently defined configuration variables.


[call [arg objectName] [method includes]]

This method returns a list containing the currently specified paths to
use to search for include files when processing input.

The order of paths in the list corresponds to the order in which they
are used, from first to last, and also corresponds to the order in
which they were added to the object.


[call [arg objectName] [method {include add}] [arg path]]

This methods adds the specified [arg path] to the list of paths to use
to search for include files when processing input. The path is added
to the end of the list, causing it to be searched after all previously
added paths. The result of the command is the empty string.

[para]

The method does nothing if the path is already known.


[call [arg objectName] [method {include remove}] [arg path]]

This methods removes the specified [arg path] from the list of paths
to use to search for include files when processing input. The result
of the command is the empty string.

[para]

The method does nothing if the path is not known.


[call [arg objectName] [method {include clear}]]

This method clears the list of paths to use to search for include
files when processing input. The result of the command is the empty
string.

[list_end]


[section {Import plugin API v2 reference}]

Plugins are what this package uses to manage the support for any input
format beyond the [sectref {ToC serialization format}]. Here we
specify the API the objects created by this package use to interact
with their plugins.







<








<
















<







<





<




<


















<





<









<












<










<







<







152
153
154
155
156
157
158

159
160
161
162
163
164
165
166

167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182

183
184
185
186
187
188
189

190
191
192
193
194

195
196
197
198

199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216

217
218
219
220
221

222
223
224
225
226
227
228
229
230

231
232
233
234
235
236
237
238
239
240
241
242

243
244
245
246
247
248
249
250
251
252

253
254
255
256
257
258
259

260
261
262
263
264
265
266
found in the section [sectref {ToC serialization format}].

[para]

The plugin has to conform to the interface specified in section
[sectref {Import plugin API v2 reference}].


[call [arg objectName] [method {import file}] [arg path] [opt [arg format]]]

This method is a convenient wrapper around the [method {import text}]
method described by the previous item.

It reads the contents of the specified file into memory, feeds the
result into [method {import text}] and returns the resulting
serialization as its own result.


[call [arg objectName] [method {import object text}] [arg object] \
	[arg text] [opt [arg format]]]

This method is a convenient wrapper around the [method {import text}]
method described by the previous item.

It expects that [arg object] is an object command supporting a
[method deserialize] method expecting the canonical serialization of a
table of contents.

It imports the text using [method {import text}] and then feeds the
resulting serialization into the [arg object] via [method deserialize].

This method returns the empty string as it result.


[call [arg objectName] [method {import object file}] [arg object] \
	[arg path] [opt [arg format]]]

This method behaves like [method {import object text}], except that it
reads the text to convert from the specified file instead of being
given it as argument.


[call [arg objectName] [method {config names}]]

This method returns a list containing the names of all configuration
variables currently known to the object.


[call [arg objectName] [method {config get}]]

This method returns a dictionary containing the names and values of
all configuration variables currently known to the object.


[call [arg objectName] [method {config set}] [arg name] [opt [arg value]]]

This method sets the configuration variable [arg name] to the
specified [arg value] and returns the new value of the variable.

[para]

If no value is specified it simply returns the current value, without
changing it.

[para]

Note that while the user can set the predefined configuration
variables [const user] and [const format] doing so will have no
effect, these values will be internally overriden when invoking an
import plugin.


[call [arg objectName] [method {config unset}] [arg pattern]...]

This method unsets all configuration variables matching the specified
glob [arg pattern]s. If no pattern is specified it will unset all
currently defined configuration variables.


[call [arg objectName] [method includes]]

This method returns a list containing the currently specified paths to
use to search for include files when processing input.

The order of paths in the list corresponds to the order in which they
are used, from first to last, and also corresponds to the order in
which they were added to the object.


[call [arg objectName] [method {include add}] [arg path]]

This methods adds the specified [arg path] to the list of paths to use
to search for include files when processing input. The path is added
to the end of the list, causing it to be searched after all previously
added paths. The result of the command is the empty string.

[para]

The method does nothing if the path is already known.


[call [arg objectName] [method {include remove}] [arg path]]

This methods removes the specified [arg path] from the list of paths
to use to search for include files when processing input. The result
of the command is the empty string.

[para]

The method does nothing if the path is not known.


[call [arg objectName] [method {include clear}]]

This method clears the list of paths to use to search for include
files when processing input. The result of the command is the empty
string.

[list_end]


[section {Import plugin API v2 reference}]

Plugins are what this package uses to manage the support for any input
format beyond the [sectref {ToC serialization format}]. Here we
specify the API the objects created by this package use to interact
with their plugins.
390
391
392
393
394
395
396
397
398
399
400
401
402
[list_end][comment {-- api command signatures --}]

[enum] A single usage cycle of a plugin consists of the invokations of
       the command [cmd import]. This call has to leave the plugin in
       a state where another usage cycle can be run without problems.

[list_end]


[include include/serialization.inc]
[vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]







<





383
384
385
386
387
388
389

390
391
392
393
394
[list_end][comment {-- api command signatures --}]

[enum] A single usage cycle of a plugin consists of the invokations of
       the command [cmd import]. This call has to leave the plugin in
       a state where another usage cycle can be run without problems.

[list_end]


[include include/serialization.inc]
[vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]

Changes to modules/doctools2toc/introduction.man.

1
2

















3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools2toc_introduction n 2.0]

















[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {DocTools - Tables of Contents}]
[category  {Documentation tools}]
[keywords markup {semantic markup} contents {table of contents}]
[keywords plugin parsing formatting conversion]
[see_also doctools2idx_introduction]
[see_also doctools2doc_introduction]
[comment {
    [see_also doctools_lang_intro]
    [see_also doctools_lang_syntax]
    [see_also doctools_lang_cmdref]
    [see_also doctools_lang_faq]
    [see_also doctools]
    [see_also doctools_plugin_apiref]
    [see_also doctoc_intro]
    [see_also doctoc_intro]
}]
[description]


[term doctoc] (short for [emph {documentation tables of contents}])
stands for a set of related, yet different, entities which are working
together for the easy creation and transformation of tables and
contents for documentation.

[para]


>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>




<
<
<
<

<
<
<
<
<
<
<
<


<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23




24








25
26

27
28
29
30
31
32
33
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools2toc_introduction n 2.0]
[see_also doctoc_intro]
[see_also doctools]
[see_also doctools2doc_introduction]
[see_also doctools2idx_introduction]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_faq]
[see_also doctools_lang_intro]
[see_also doctools_lang_syntax]
[see_also doctools_plugin_apiref]
[keywords contents]
[keywords conversion]
[keywords formatting]
[keywords markup]
[keywords parsing]
[keywords plugin]
[keywords {semantic markup}]
[keywords {table of contents}]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {DocTools - Tables of Contents}]
[category  {Documentation tools}]




[comment {








}]
[description]


[term doctoc] (short for [emph {documentation tables of contents}])
stands for a set of related, yet different, entities which are working
together for the easy creation and transformation of tables and
contents for documentation.

[para]
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
Export of tables of contents to various textual formats. The set of
supported formats is extensible through plugin packages.

[list_end]
See also section [sectref {Package Overview}] for an overview of the
dependencies between these and other, supporting packages.


[enum]
At last, but not least, [term {plugin writers}] have to understand the
interaction between the import and export packages and their plugins.
These APIs are described in the documentation for the two relevant
packages, i.e.

[list_begin itemized]







<







107
108
109
110
111
112
113

114
115
116
117
118
119
120
Export of tables of contents to various textual formats. The set of
supported formats is extensible through plugin packages.

[list_end]
See also section [sectref {Package Overview}] for an overview of the
dependencies between these and other, supporting packages.


[enum]
At last, but not least, [term {plugin writers}] have to understand the
interaction between the import and export packages and their plugins.
These APIs are described in the documentation for the two relevant
packages, i.e.

[list_begin itemized]
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
intended for the markup of [term {keyword indices}], and of general
documentation, respectively.

They are described in their own sets of documents, starting at
the [manpage {DocTools - Keyword Indices}] and
the [manpage {DocTools - General}], respectively.


[section {Package Overview}]
[include include/dependencies.inc]


[vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]







<


<




131
132
133
134
135
136
137

138
139

140
141
142
143
intended for the markup of [term {keyword indices}], and of general
documentation, respectively.

They are described in their own sets of documents, starting at
the [manpage {DocTools - Keyword Indices}] and
the [manpage {DocTools - General}], respectively.


[section {Package Overview}]
[include include/dependencies.inc]


[vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]

Changes to modules/doctools2toc/parse.man.

1
2




3
4
5
6
7
8
9
10
11
12
13
14
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::toc::parse n 1]




[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Parsing text in doctoc format}]
[category  {Documentation tools}]
[keywords doctools doctoc parser lexer]
[require doctools::toc::parse [opt 0.1]]
[require Tcl 8.4]
[require doctools::toc::structure]
[require doctools::msgcat]
[require doctools::tcl::parse]
[require fileutil]
[require logger]


>
>
>
>




<







1
2
3
4
5
6
7
8
9
10

11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::toc::parse n 1]
[keywords doctoc]
[keywords doctools]
[keywords lexer]
[keywords parser]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Parsing text in doctoc format}]
[category  {Documentation tools}]

[require doctools::toc::parse [opt 0.1]]
[require Tcl 8.4]
[require doctools::toc::structure]
[require doctools::msgcat]
[require doctools::tcl::parse]
[require fileutil]
[require logger]
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129

When successful the command returns the canonical serialization of the
table of contents which was encoded in the text.

See the section [sectref {ToC serialization format}] for specification
of that format.


[call [cmd ::doctools::toc::parse] [method file] [arg path]]

The same as [method text], except that the text to parse is read from
the file specified by [arg path].


[call [cmd ::doctools::toc::parse] [method includes]]

This method returns the current list of search paths used when looking
for include files.


[call [cmd ::doctools::toc::parse] [method {include add}] [arg path]]

This method adds the [arg path] to the list of paths searched when
looking for an include file. The call is ignored if the path is
already in the list of paths. The method returns the empty string as
its result.


[call [cmd ::doctools::toc::parse] [method {include remove}] [arg path]]

This method removes the [arg path] from the list of paths searched
when looking for an include file. The call is ignored if the path is
not contained in the list of paths. The method returns the empty
string as its result.


[call [cmd ::doctools::toc::parse] [method {include clear}]]

This method clears the list of search paths for include files.


[call [cmd ::doctools::toc::parse] [method vars]]

This method returns a dictionary containing the current set of
predefined variables known to the [cmd vset] markup command during
processing.


[call [cmd ::doctools::toc::parse] [method {var set}] [arg name] [arg value]]

This method adds the variable [arg name] to the set of predefined
variables known to the [cmd vset] markup command during processing,
and gives it the specified [arg value]. The method returns the empty
string as its result.


[call [cmd ::doctools::toc::parse] [method {var unset}] [arg name]]

This method removes the variable [arg name] from the set of predefined
variables known to the [cmd vset] markup command during
processing. The method returns the empty string as its result.


[call [cmd ::doctools::toc::parse] [method {var clear}] [opt [arg pattern]]]

This method removes all variables matching the [arg pattern] from the
set of predefined variables known to the [cmd vset] markup command
during processing. The method returns the empty string as its result.

[para]

The pattern matching is done with [cmd {string match}], and the
default pattern used when none is specified, is [const *].

[list_end]



[section {Parse errors}]

The format of the parse error messages thrown when encountering
violations of the [term doctoc] markup syntax is human readable and
not intended for processing by machines. As such it is not documented.








<





<




<







<








<



<






<








<





<













<
<







49
50
51
52
53
54
55

56
57
58
59
60

61
62
63
64

65
66
67
68
69
70
71

72
73
74
75
76
77
78
79

80
81
82

83
84
85
86
87
88

89
90
91
92
93
94
95
96

97
98
99
100
101

102
103
104
105
106
107
108
109
110
111
112
113
114


115
116
117
118
119
120
121

When successful the command returns the canonical serialization of the
table of contents which was encoded in the text.

See the section [sectref {ToC serialization format}] for specification
of that format.


[call [cmd ::doctools::toc::parse] [method file] [arg path]]

The same as [method text], except that the text to parse is read from
the file specified by [arg path].


[call [cmd ::doctools::toc::parse] [method includes]]

This method returns the current list of search paths used when looking
for include files.


[call [cmd ::doctools::toc::parse] [method {include add}] [arg path]]

This method adds the [arg path] to the list of paths searched when
looking for an include file. The call is ignored if the path is
already in the list of paths. The method returns the empty string as
its result.


[call [cmd ::doctools::toc::parse] [method {include remove}] [arg path]]

This method removes the [arg path] from the list of paths searched
when looking for an include file. The call is ignored if the path is
not contained in the list of paths. The method returns the empty
string as its result.


[call [cmd ::doctools::toc::parse] [method {include clear}]]

This method clears the list of search paths for include files.


[call [cmd ::doctools::toc::parse] [method vars]]

This method returns a dictionary containing the current set of
predefined variables known to the [cmd vset] markup command during
processing.


[call [cmd ::doctools::toc::parse] [method {var set}] [arg name] [arg value]]

This method adds the variable [arg name] to the set of predefined
variables known to the [cmd vset] markup command during processing,
and gives it the specified [arg value]. The method returns the empty
string as its result.


[call [cmd ::doctools::toc::parse] [method {var unset}] [arg name]]

This method removes the variable [arg name] from the set of predefined
variables known to the [cmd vset] markup command during
processing. The method returns the empty string as its result.


[call [cmd ::doctools::toc::parse] [method {var clear}] [opt [arg pattern]]]

This method removes all variables matching the [arg pattern] from the
set of predefined variables known to the [cmd vset] markup command
during processing. The method returns the empty string as its result.

[para]

The pattern matching is done with [cmd {string match}], and the
default pattern used when none is specified, is [const *].

[list_end]



[section {Parse errors}]

The format of the parse error messages thrown when encountering
violations of the [term doctoc] markup syntax is human readable and
not intended for processing by machines. As such it is not documented.

170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
A list of details for the error, like the markup command involved. In
the case of message code [const doctoc/include/syntax] this value is
the set of errors found in the included file, using the format
described here.

[list_end]
[list_end]


[include include/format/doctoc.inc]
[include include/serialization.inc]

[vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]







<







162
163
164
165
166
167
168

169
170
171
172
173
174
175
A list of details for the error, like the markup command involved. In
the case of message code [const doctoc/include/syntax] this value is
the set of errors found in the included file, using the format
described here.

[list_end]
[list_end]


[include include/format/doctoc.inc]
[include include/serialization.inc]

[vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]

Changes to modules/doctools2toc/structure.man.

1
2




3
4
5
6
7
8
9
10
11
12
13
14
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::toc::structure n 0.1]




[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Doctoc serialization utilities}]
[category  {Documentation tools}]
[keywords doctoc doctools serialization deserialization]
[require doctools::toc::structure [opt 0.1]]
[require Tcl 8.4]
[require logger]
[require snit]
[description]

This package provides commands to work with the serializations of


>
>
>
>




<







1
2
3
4
5
6
7
8
9
10

11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools::toc::structure n 0.1]
[keywords deserialization]
[keywords doctoc]
[keywords doctools]
[keywords serialization]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {Doctoc serialization utilities}]
[category  {Documentation tools}]

[require doctools::toc::structure [opt 0.1]]
[require Tcl 8.4]
[require logger]
[require snit]
[description]

This package provides commands to work with the serializations of
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
non-canonical serialization.

[para]

For the specification of regular and canonical serializations see the
section [sectref {ToC serialization format}].


[call [cmd ::doctools::toc::structure] [method verify-as-canonical] \
	[arg serial]]

This command verifies that the content of [arg serial] is a valid
[term canonical] serialization of a table of contents and will throw
an error if that is not the case. The result of the command is the
empty string.

[para]

For the specification of canonical serializations see the section
[sectref {ToC serialization format}].


[call [cmd ::doctools::toc::structure] [method canonicalize] [arg serial]]

This command assumes that the content of [arg serial] is a valid
[term regular] serialization of a table of contents and will throw an
error if that is not the case.

[para]

It will then convert the input into the [term canonical] serialization
of the contained table of contents and return it as its result. If the
input is already canonical it will be returned unchanged.

[para]

For the specification of regular and canonical serializations see the
section [sectref {ToC serialization format}].


[call [cmd ::doctools::toc::structure] [method print] [arg serial]]

This command assumes that the argument [arg serial] contains a valid
regular serialization of a table of contents and returns a string
containing that table in a human readable form.

[para]

The exact format of this form is not specified and cannot be relied on
for parsing or other machine-based activities.

[para]

For the specification of regular serializations see the section
[sectref {ToC serialization format}].


[call [cmd ::doctools::toc::structure] [method merge] \
	[arg seriala] [arg serialb]]

This command accepts the regular serializations of two tables of
contents and uses them to create their union.  The result of the
command is the canonical serialization of this unified table of







<












<


















<















<







48
49
50
51
52
53
54

55
56
57
58
59
60
61
62
63
64
65
66

67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84

85
86
87
88
89
90
91
92
93
94
95
96
97
98
99

100
101
102
103
104
105
106
non-canonical serialization.

[para]

For the specification of regular and canonical serializations see the
section [sectref {ToC serialization format}].


[call [cmd ::doctools::toc::structure] [method verify-as-canonical] \
	[arg serial]]

This command verifies that the content of [arg serial] is a valid
[term canonical] serialization of a table of contents and will throw
an error if that is not the case. The result of the command is the
empty string.

[para]

For the specification of canonical serializations see the section
[sectref {ToC serialization format}].


[call [cmd ::doctools::toc::structure] [method canonicalize] [arg serial]]

This command assumes that the content of [arg serial] is a valid
[term regular] serialization of a table of contents and will throw an
error if that is not the case.

[para]

It will then convert the input into the [term canonical] serialization
of the contained table of contents and return it as its result. If the
input is already canonical it will be returned unchanged.

[para]

For the specification of regular and canonical serializations see the
section [sectref {ToC serialization format}].


[call [cmd ::doctools::toc::structure] [method print] [arg serial]]

This command assumes that the argument [arg serial] contains a valid
regular serialization of a table of contents and returns a string
containing that table in a human readable form.

[para]

The exact format of this form is not specified and cannot be relied on
for parsing or other machine-based activities.

[para]

For the specification of regular serializations see the section
[sectref {ToC serialization format}].


[call [cmd ::doctools::toc::structure] [method merge] \
	[arg seriala] [arg serialb]]

This command accepts the regular serializations of two tables of
contents and uses them to create their union.  The result of the
command is the canonical serialization of this unified table of
140
141
142
143
144
145
146
147
148
149
150
151
152
153

[para]

For the specification of regular and canonical serializations see the
section [sectref {ToC serialization format}].

[list_end]


[include include/serialization.inc]

[vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]







<






139
140
141
142
143
144
145

146
147
148
149
150
151

[para]

For the specification of regular and canonical serializations see the
section [sectref {ToC serialization format}].

[list_end]


[include include/serialization.inc]

[vset CATEGORY doctools]
[include ../doctools2base/include/feedback.inc]
[manpage_end]

Changes to modules/dtplite/dtplite.man.

1
2












3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin dtplite n 1.1]












[copyright {2004-2013 Andreas Kupries <[email protected]>}]
[titledesc {Lightweight DocTools Markup Processor}]
[moddesc   {Documentation toolbox}]
[category  {Documentation tools}]
[description]
[para]

The application described by this document, [syscmd dtplite], is the
successor to the extremely simple [syscmd mpexpand]. Influenced in its
functionality by the [syscmd dtp] doctools processor it is much more
powerful than [syscmd mpexpand], yet still as easy to use; definitely
easier than [syscmd dtp] with its myriad of subcommands and options.

[para]

[syscmd dtplite] is based upon the package [package doctools], like
the other two processors.


[subsection {USE CASES}]

[syscmd dtplite] was written with the following three use cases in
mind.

[para]


>
>
>
>
>
>
>
>
>
>
>
>

















<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

32
33
34
35
36
37
38
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin dtplite n 1.1]
[see_also {docidx introduction}]
[see_also {doctoc introduction}]
[see_also {doctools introduction}]
[keywords conversion]
[keywords docidx]
[keywords doctoc]
[keywords doctools]
[keywords HTML]
[keywords manpage]
[keywords markup]
[keywords nroff]
[keywords TMML]
[copyright {2004-2013 Andreas Kupries <[email protected]>}]
[titledesc {Lightweight DocTools Markup Processor}]
[moddesc   {Documentation toolbox}]
[category  {Documentation tools}]
[description]
[para]

The application described by this document, [syscmd dtplite], is the
successor to the extremely simple [syscmd mpexpand]. Influenced in its
functionality by the [syscmd dtp] doctools processor it is much more
powerful than [syscmd mpexpand], yet still as easy to use; definitely
easier than [syscmd dtp] with its myriad of subcommands and options.

[para]

[syscmd dtplite] is based upon the package [package doctools], like
the other two processors.


[subsection {USE CASES}]

[syscmd dtplite] was written with the following three use cases in
mind.

[para]
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
has to exist and must be a writable directory.

The generated document will be written to a file in that directory,
and the name of that file will be derived from the [arg inputfile],
the [arg format], and the value given to option [option -ext] (if
present).


[arg_def (path|handle) format in]

This argument specifies the formatting engine to use when processing
the input, and thus the format of the generated document. See section
[sectref FORMATS] for the possibilities recognized by the application.


[arg_def path inputfile in]

This argument specifies the path to the file to process. It has to
exist, must be readable, and written in [term doctools] format.

[list_end]
[para]


[call [cmd dtplite] [const validate] [arg inputfile]]

This is a simpler form for use case [lb]1[rb]. The "validate" format
generates no output at all, only syntax checks are performed. As such
the specification of an output file or other options is not necessary
and left out.


[call [cmd dtplite] [option -o] [arg output] [opt options] [arg format] [arg inputdirectory]]

This is the form for use case [lb]2[rb]. It differs from the form for
use case [lb]1[rb] by having the input documents specified through a
directory instead of a file. The other arguments are identical, except
for [arg output], which now has to be the path to an existing and
writable directory.

[para]

The input documents are all files in [arg inputdirectory] or any of
its subdirectories which were recognized by [cmd fileutil::fileType]
as containing text in [term doctools] format.


[call [cmd dtplite] [option -merge] [option -o] [arg output] [opt options] [arg format] [arg inputdirectory]]

This is the form for use case [lb]3[rb]. The only difference to the
form for use case [lb]2[rb] is the additional option [option -merge].

[para]







<





<









<






<














<







98
99
100
101
102
103
104

105
106
107
108
109

110
111
112
113
114
115
116
117
118

119
120
121
122
123
124

125
126
127
128
129
130
131
132
133
134
135
136
137
138

139
140
141
142
143
144
145
has to exist and must be a writable directory.

The generated document will be written to a file in that directory,
and the name of that file will be derived from the [arg inputfile],
the [arg format], and the value given to option [option -ext] (if
present).


[arg_def (path|handle) format in]

This argument specifies the formatting engine to use when processing
the input, and thus the format of the generated document. See section
[sectref FORMATS] for the possibilities recognized by the application.


[arg_def path inputfile in]

This argument specifies the path to the file to process. It has to
exist, must be readable, and written in [term doctools] format.

[list_end]
[para]


[call [cmd dtplite] [const validate] [arg inputfile]]

This is a simpler form for use case [lb]1[rb]. The "validate" format
generates no output at all, only syntax checks are performed. As such
the specification of an output file or other options is not necessary
and left out.


[call [cmd dtplite] [option -o] [arg output] [opt options] [arg format] [arg inputdirectory]]

This is the form for use case [lb]2[rb]. It differs from the form for
use case [lb]1[rb] by having the input documents specified through a
directory instead of a file. The other arguments are identical, except
for [arg output], which now has to be the path to an existing and
writable directory.

[para]

The input documents are all files in [arg inputdirectory] or any of
its subdirectories which were recognized by [cmd fileutil::fileType]
as containing text in [term doctools] format.


[call [cmd dtplite] [option -merge] [option -o] [arg output] [opt options] [arg format] [arg inputdirectory]]

This is the form for use case [lb]3[rb]. The only difference to the
form for use case [lb]2[rb] is the additional option [option -merge].

[para]
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
[opt_def -exclude string]

This option specifies an exclude (glob) pattern. Any files identified
as manpages to process which match the exclude pattern are
ignored. The option can be provided multiple times, each usage adding
an additional pattern to the list of exclusions.


[opt_def -ext string]

If the name of an output file has to be derived from the name of an
input file it will use the name of the [arg format] as the extension
by default. This option here will override this however, forcing it to
use [arg string] as the file extension. This option is ignored if the
name of the output file is fully specified through option [option -o].

[para]

When used multiple times only the last definition is relevant.


[opt_def -header file]

This option can be used if and only if the selected [arg format]
provides an engine parameter named "header". It takes the contents of
the specified file and assign them to that parameter, for whatever use
by the engine. The HTML engine will insert the text just after the tag
[const <body>].

If navigation buttons are present (see option [option -nav] below),
then the HTML generated for them is appended to the header data
originating here before the final assignment to the parameter.

[para]

When used multiple times only the last definition is relevant.


[opt_def -footer file]

Like [option -header], except that: Any navigation buttons are ignored,
the corresponding required engine parameter is named "footer", and the
data is inserted just before the tag [const </body>].

[para]

When used multiple times only the last definition is relevant.


[opt_def -style file]

This option can be used if and only if the selected [arg format]
provides an engine parameter named "meta". When specified it will
generate a piece of HTML code declaring the [arg file] as the
stylesheet for the generated document and assign that to the







<











<

















<









<







167
168
169
170
171
172
173

174
175
176
177
178
179
180
181
182
183
184

185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201

202
203
204
205
206
207
208
209
210

211
212
213
214
215
216
217
[opt_def -exclude string]

This option specifies an exclude (glob) pattern. Any files identified
as manpages to process which match the exclude pattern are
ignored. The option can be provided multiple times, each usage adding
an additional pattern to the list of exclusions.


[opt_def -ext string]

If the name of an output file has to be derived from the name of an
input file it will use the name of the [arg format] as the extension
by default. This option here will override this however, forcing it to
use [arg string] as the file extension. This option is ignored if the
name of the output file is fully specified through option [option -o].

[para]

When used multiple times only the last definition is relevant.


[opt_def -header file]

This option can be used if and only if the selected [arg format]
provides an engine parameter named "header". It takes the contents of
the specified file and assign them to that parameter, for whatever use
by the engine. The HTML engine will insert the text just after the tag
[const <body>].

If navigation buttons are present (see option [option -nav] below),
then the HTML generated for them is appended to the header data
originating here before the final assignment to the parameter.

[para]

When used multiple times only the last definition is relevant.


[opt_def -footer file]

Like [option -header], except that: Any navigation buttons are ignored,
the corresponding required engine parameter is named "footer", and the
data is inserted just before the tag [const </body>].

[para]

When used multiple times only the last definition is relevant.


[opt_def -style file]

This option can be used if and only if the selected [arg format]
provides an engine parameter named "meta". When specified it will
generate a piece of HTML code declaring the [arg file] as the
stylesheet for the generated document and assign that to the
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
have no location to copy the stylesheet to and so just reference it as
specified.

[para]

When used multiple times only the last definition is relevant.


[opt_def -toc path|text]

This option specifies a doctoc file (or text) to use for the table of contents
instead of generating our own.

[para]

When used multiple times only the last definition is relevant.


[opt_def -pre+toc "label path|text"]
[opt_def -post+toc "label path|text"]

This option specifies additional doctoc files (or texts) to use in
the navigation bar.








<








<







226
227
228
229
230
231
232

233
234
235
236
237
238
239
240

241
242
243
244
245
246
247
have no location to copy the stylesheet to and so just reference it as
specified.

[para]

When used multiple times only the last definition is relevant.


[opt_def -toc path|text]

This option specifies a doctoc file (or text) to use for the table of contents
instead of generating our own.

[para]

When used multiple times only the last definition is relevant.


[opt_def -pre+toc "label path|text"]
[opt_def -post+toc "label path|text"]

This option specifies additional doctoc files (or texts) to use in
the navigation bar.

264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
navigation bar is created, with the first definition shown at the left
edge and the last definition to the right.

[para] The url can be relative. In that case it is assumed to be relative
to the main files (TOC and Keyword index), and will be transformed for
all others to still link properly.


[opt_def -postnav "label url"]

Use this option to specify a navigation button with [arg label] to
display and the [arg url] to link to. This option can be used if and
only if the selected [arg format] provides an engine parameter named
"header". The HTML generated for this is appended to whatever data we
got from option [option -header] before it is inserted into the
generated documents.

[para]

When used multiple times all definitions are collected and a
navigation bar is created, with the last definition shown at the right
edge and the first definition to the left.

[para] The url can be relative. In that case it is assumed to be relative
to the main files (TOC and Keyword index), and will be transformed for
all others to still link properly.

[list_end]


[subsection FORMATS]

At first the [arg format] argument will be treated as a path to a tcl
file containing the code for the requested formatting engine. The
argument will be treated as the name of one of the predefined formats
listed below if and only if the path does not exist.







<




















<







264
265
266
267
268
269
270

271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290

291
292
293
294
295
296
297
navigation bar is created, with the first definition shown at the left
edge and the last definition to the right.

[para] The url can be relative. In that case it is assumed to be relative
to the main files (TOC and Keyword index), and will be transformed for
all others to still link properly.


[opt_def -postnav "label url"]

Use this option to specify a navigation button with [arg label] to
display and the [arg url] to link to. This option can be used if and
only if the selected [arg format] provides an engine parameter named
"header". The HTML generated for this is appended to whatever data we
got from option [option -header] before it is inserted into the
generated documents.

[para]

When used multiple times all definitions are collected and a
navigation bar is created, with the last definition shown at the right
edge and the first definition to the left.

[para] The url can be relative. In that case it is assumed to be relative
to the main files (TOC and Keyword index), and will be transformed for
all others to still link properly.

[list_end]


[subsection FORMATS]

At first the [arg format] argument will be treated as a path to a tcl
file containing the code for the requested formatting engine. The
argument will be treated as the name of one of the predefined formats
listed below if and only if the path does not exist.
340
341
342
343
344
345
346












347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
[def [const wiki]]

The processor generates Wiki markup as understood by [syscmd wikit].

[def [const list]]

The processor extracts the information provided by [cmd manpage_begin].













This format is used internally to extract the meta data from which
both table of contents and keyword index are derived from.

[def [const null]]

The processor does not generate any output. This is equivalent to
[const validate].

[list_end]


[subsection {DIRECTORY STRUCTURES}]

In this section we describe the directory structures generated by the
application under [arg output] when processing all documents in an
[arg inputdirectory]. In other words, this is only relevant to the use
cases [lb]2[rb] and [lb]3[rb].







>
>
>
>
>
>
>
>
>
>
>
>










<







338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366

367
368
369
370
371
372
373
[def [const wiki]]

The processor generates Wiki markup as understood by [syscmd wikit].

[def [const list]]

The processor extracts the information provided by [cmd manpage_begin].
[see_also {docidx introduction}]
[see_also {doctoc introduction}]
[see_also {doctools introduction}]
[keywords conversion]
[keywords docidx]
[keywords doctoc]
[keywords doctools]
[keywords HTML]
[keywords manpage]
[keywords markup]
[keywords nroff]
[keywords TMML]

This format is used internally to extract the meta data from which
both table of contents and keyword index are derived from.

[def [const null]]

The processor does not generate any output. This is equivalent to
[const validate].

[list_end]


[subsection {DIRECTORY STRUCTURES}]

In this section we describe the directory structures generated by the
application under [arg output] when processing all documents in an
[arg inputdirectory]. In other words, this is only relevant to the use
cases [lb]2[rb] and [lb]3[rb].
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396

The last line in the example shows the document
generated for a file FOO located at

[example {
    inputdirectory/path/to/FOO
}]


[def "[lb]3[rb]"]

When merging many packages into a unified set of documents the
generated directory structure is a bit deeper:

[example {







<







391
392
393
394
395
396
397

398
399
400
401
402
403
404

The last line in the example shows the document
generated for a file FOO located at

[example {
    inputdirectory/path/to/FOO
}]


[def "[lb]3[rb]"]

When merging many packages into a unified set of documents the
generated directory structure is a bit deeper:

[example {
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
conversion to the chosen output format.

They are left in place, i.e. not deleted, to serve as demonstrations
of doctoc and docidx markup.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the application it describes, will undoubtedly
contain bugs and other problems.

Please report such in the category [emph doctools] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
application and/or documentation.


[see_also {doctools introduction}]
[see_also {docidx introduction}]
[see_also {doctoc introduction}]
[keywords manpage TMML HTML nroff conversion markup]
[keywords doctools docidx doctoc]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<
<
<
<
<

438
439
440
441
442
443
444

445


446












447
conversion to the chosen output format.

They are left in place, i.e. not deleted, to serve as demonstrations
of doctoc and docidx markup.

[list_end]


[vset CATEGORY doctools]


[include ../doctools2base/include/feedback.inc]












[manpage_end]

Changes to modules/exif/exif.man.

1




2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[manpage_begin exif n 1.1.2]




[moddesc   {EXIF parsing}]
[titledesc {Tcl EXIF extracts and parses EXIF fields from digital images}]
[category  {File formats}]
[require Tcl 8.2]
[require exif [opt 1.1.2]]
[description]
[keywords exif jpeg {maker note} tiff]
[para]

The EXIF package is a recoding of Chris Breeze's Perl package to do
the same thing.  This version accepts a channel as input and returns a
serialized array with all the recognised fields parsed out.

[para]

There is also a function to obtain a list of all possible field names
that might be present, which is useful in building GUIs that present
such information.

[section COMMANDS] 

[list_begin definitions]

[call [cmd exif::analyze] [arg channel] [opt [arg thumbnail]]]

[arg channel] should be an open file handle rewound to the start.  It
does not need to be seekable.  [arg channel] will be set to binary

>
>
>
>






<












|







1
2
3
4
5
6
7
8
9
10
11

12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[manpage_begin exif n 1.1.2]
[keywords exif]
[keywords jpeg]
[keywords {maker note}]
[keywords tiff]
[moddesc   {EXIF parsing}]
[titledesc {Tcl EXIF extracts and parses EXIF fields from digital images}]
[category  {File formats}]
[require Tcl 8.2]
[require exif [opt 1.1.2]]
[description]

[para]

The EXIF package is a recoding of Chris Breeze's Perl package to do
the same thing.  This version accepts a channel as input and returns a
serialized array with all the recognised fields parsed out.

[para]

There is also a function to obtain a list of all possible field names
that might be present, which is useful in building GUIs that present
such information.

[section COMMANDS]

[list_begin definitions]

[call [cmd exif::analyze] [arg channel] [opt [arg thumbnail]]]

[arg channel] should be an open file handle rewound to the start.  It
does not need to be seekable.  [arg channel] will be set to binary
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
in the exif data will be written into it.

[call [cmd exif::analyzeFile] [arg filename] [opt [arg thumbnail]]]

This is a file-based wrapper around [cmd exif::analyze]. Instead of
taking a stream it takes a [arg filename] and analyzes the contents of
the specified file.


[call [cmd exif::fieldnames]]

This returns a list of all possible field names.  That is, the array
returned by [cmd exif::analyze] will not contain keys that are not
listed in the return from [cmd exif::fieldnames].  Of course, if
information is missing in the image file, [cmd exif::analyze] may not







<







42
43
44
45
46
47
48

49
50
51
52
53
54
55
in the exif data will be written into it.

[call [cmd exif::analyzeFile] [arg filename] [opt [arg thumbnail]]]

This is a file-based wrapper around [cmd exif::analyze]. Instead of
taking a stream it takes a [arg filename] and analyzes the contents of
the specified file.


[call [cmd exif::fieldnames]]

This returns a list of all possible field names.  That is, the array
returned by [cmd exif::analyze] will not contain keys that are not
listed in the return from [cmd exif::fieldnames].  Of course, if
information is missing in the image file, [cmd exif::analyze] may not
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
Hold harmless the author, and any lawful use is allowed.

[section ACKNOWLEDGEMENTS]

This code is a direct translation of version 1.3 of exif.pl by Chris
Breeze.  See the source for full headers, references, etc.

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph exif] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<

71
72
73
74
75
76
77

78


79







80
Hold harmless the author, and any lawful use is allowed.

[section ACKNOWLEDGEMENTS]

This code is a direct translation of version 1.3 of exif.pl by Chris
Breeze.  See the source for full headers, references, etc.


[vset CATEGORY exif]


[include ../doctools2base/include/feedback.inc]







[manpage_end]

Changes to modules/fileutil/fileutil.man.

1
2







3
4
5
6
7
8
9
10
11
12
13
14
15
16
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin fileutil n 1.14.5]







[moddesc   {file utilities}]
[titledesc {Procedures implementing some file utilities}]
[category  {Programming tools}]
[require Tcl 8]
[require fileutil [opt 1.14.5]]
[description]
[keywords {file utilities} touch grep type {temp file} test cat]
[para]

This package provides implementations of standard unix utilities.

[list_begin definitions]

[call [cmd ::fileutil::lexnormalize] [arg path]]


>
>
>
>
>
>
>






<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

16
17
18
19
20
21
22
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin fileutil n 1.14.5]
[keywords cat]
[keywords {file utilities}]
[keywords grep]
[keywords {temp file}]
[keywords test]
[keywords touch]
[keywords type]
[moddesc   {file utilities}]
[titledesc {Procedures implementing some file utilities}]
[category  {Programming tools}]
[require Tcl 8]
[require fileutil [opt 1.14.5]]
[description]

[para]

This package provides implementations of standard unix utilities.

[list_begin definitions]

[call [cmd ::fileutil::lexnormalize] [arg path]]
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
[call [cmd ::fileutil::fullnormalize] [arg path]]

This command resolves all symbolic links in the [arg path] and returns
the changed path as its result.

In contrast to the builtin [cmd {file normalize}] this command
resolves a symbolic link in the last element of the path as well.


[call [cmd ::fileutil::test] [arg path] [arg codes] [opt [arg msgvar]] [opt [arg label]]]

A command for the testing of several properties of a [arg path]. The
properties to test for are specified in [arg codes], either as a list
of keywords describing the properties, or as a string where each
letter is a shorthand for a property to test. The recognized keywords,







<







37
38
39
40
41
42
43

44
45
46
47
48
49
50
[call [cmd ::fileutil::fullnormalize] [arg path]]

This command resolves all symbolic links in the [arg path] and returns
the changed path as its result.

In contrast to the builtin [cmd {file normalize}] this command
resolves a symbolic link in the last element of the path as well.


[call [cmd ::fileutil::test] [arg path] [arg codes] [opt [arg msgvar]] [opt [arg label]]]

A command for the testing of several properties of a [arg path]. The
properties to test for are specified in [arg codes], either as a list
of keywords describing the properties, or as a string where each
letter is a shorthand for a property to test. The recognized keywords,
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
[cmd {file executable}]
[def "[emph f]ile"]
[cmd {file isfile}]
[def "[emph d]ir"]
[cmd {file isdirectory}]
[list_end]


[call [cmd ::fileutil::cat] ([opt [arg options]] [arg file])...]

A tcl implementation of the UNIX [syscmd cat] command.  Returns the
contents of the specified file(s). The arguments are files to read,
with interspersed options configuring the process. If there are
problems reading any of the files, an error will occur, and no data
will be returned.







<







77
78
79
80
81
82
83

84
85
86
87
88
89
90
[cmd {file executable}]
[def "[emph f]ile"]
[cmd {file isfile}]
[def "[emph d]ir"]
[cmd {file isdirectory}]
[list_end]


[call [cmd ::fileutil::cat] ([opt [arg options]] [arg file])...]

A tcl implementation of the UNIX [syscmd cat] command.  Returns the
contents of the specified file(s). The arguments are files to read,
with interspersed options configuring the process. If there are
problems reading any of the files, an error will occur, and no data
will be returned.
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
[para]

Each file can have its own set of options coming before it, and for
anything not specified directly the defaults are inherited from the
options of the previous file. The first file inherits the system
default for unspecified options.


[call [cmd ::fileutil::writeFile] [opt [arg options]] [arg file] [arg data]]

The command replaces the current contents of the specified [arg file]
with [arg data], with the process configured by the options. The
command accepts the same options as [cmd ::fileutil::cat]. The
specification of a non-existent file is legal and causes the command
to create the file (and all required but missing directories).


[call [cmd ::fileutil::appendToFile] [opt [arg options]] [arg file] [arg data]]

This command is like [cmd ::fileutil::writeFile], except that the
previous contents of [arg file] are not replaced, but appended to. The
command accepts the same options as [cmd ::fileutil::cat]


[call [cmd ::fileutil::insertIntoFile] [opt [arg options]] [arg file] [arg at] [arg data]]

This comment is similar to [cmd ::fileutil::appendToFile], except that
the new data is not appended at the end, but inserted at a specified
location within the file. In further contrast this command has to be
given the path to an existing file. It will not create a missing file,







<








<





<







101
102
103
104
105
106
107

108
109
110
111
112
113
114
115

116
117
118
119
120

121
122
123
124
125
126
127
[para]

Each file can have its own set of options coming before it, and for
anything not specified directly the defaults are inherited from the
options of the previous file. The first file inherits the system
default for unspecified options.


[call [cmd ::fileutil::writeFile] [opt [arg options]] [arg file] [arg data]]

The command replaces the current contents of the specified [arg file]
with [arg data], with the process configured by the options. The
command accepts the same options as [cmd ::fileutil::cat]. The
specification of a non-existent file is legal and causes the command
to create the file (and all required but missing directories).


[call [cmd ::fileutil::appendToFile] [opt [arg options]] [arg file] [arg data]]

This command is like [cmd ::fileutil::writeFile], except that the
previous contents of [arg file] are not replaced, but appended to. The
command accepts the same options as [cmd ::fileutil::cat]


[call [cmd ::fileutil::insertIntoFile] [opt [arg options]] [arg file] [arg at] [arg data]]

This comment is similar to [cmd ::fileutil::appendToFile], except that
the new data is not appended at the end, but inserted at a specified
location within the file. In further contrast this command has to be
given the path to an existing file. It will not create a missing file,
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
content, whereas [lb]file size [arg file][rb] causes insertion after
the last character of the existing content, i.e. appending.

[para]

The command accepts the same options as [cmd ::fileutil::cat].


[call [cmd ::fileutil::removeFromFile] [opt [arg options]] [arg file] [arg at] [arg n]]

This command is the complement to [cmd ::fileutil::insertIntoFile], removing [arg n] characters from the [arg file], starting at location [arg at].

The specified location [arg at] has to be an integer number in the
range [const 0] ... [lb]file size [arg file][rb] - [arg n]. [const 0]
will cause the removal of the new data to start with the first
character of the existing content,

whereas [lb]file size [arg file][rb] - [arg n] causes the removal of
the tail of the existing content, i.e. the truncation of the file.

[para]

The command accepts the same options as [cmd ::fileutil::cat].


[call [cmd ::fileutil::replaceInFile] [opt [arg options]] [arg file] [arg at] [arg n] [arg data]]

This command is a combination of [cmd ::fileutil::removeFromFile] and
[cmd ::fileutil::insertIntoFile]. It first removes the part of the
contents specified by the arguments [arg at] and [arg n], and then
inserts [arg data] at the given location, effectively replacing the
removed by content with [arg data].

All constraints imposed on [arg at] and [arg n] by
[cmd ::fileutil::removeFromFile] and [cmd ::fileutil::insertIntoFile]
are obeyed.

[para]

The command accepts the same options as [cmd ::fileutil::cat].


[call [cmd ::fileutil::updateInPlace] [opt [arg options]] [arg file] [arg cmd]]

This command can be seen as the generic core functionality of
[cmd ::fileutil::replaceInFile].

It first reads the contents of the specified [arg file], then runs the
command prefix [arg cmd] with that data appended to it, and at last
writes the result of that invokation back as the new contents of the
file.

[para]

If the executed command throws an error the [arg file] is not changed.

[para]

The command accepts the same options as [cmd ::fileutil::cat].


[call [cmd ::fileutil::fileType] [arg filename]]

An implementation of the UNIX [syscmd file] command, which uses
various heuristics to guess the type of a file.  Returns a list
specifying as much type information as can be determined about the
file, from most general (eg, "binary" or "text") to most specific (eg,
"gif").  For example, the return value for a GIF file would be "binary
graphic gif".  The command will detect the following types of files:
directory, empty, binary, text, script (with interpreter), executable
elf, executable dos, executable ne, executable pe, graphic gif, graphic
jpeg, graphic png, graphic tiff, graphic bitmap, html, xml (with doctype
if available), message pgp, binary pdf, text ps, text eps, binary
gravity_wave_data_frame, compressed bzip, compressed gzip, compressed
zip, compressed tar, audio wave, audio mpeg, and link. It further
detects doctools, doctoc, and docidx documentation files, and
tklib diagrams.


[call [cmd ::fileutil::find] [opt "[arg basedir] [opt [arg filtercmd]]"]]

An implementation of the unix command [syscmd find]. Adapted from the
Tcler's Wiki. Takes at most two arguments, the path to the directory
to start searching from and a command to use to evaluate interest in
each file. The path defaults to [file .], i.e. the current







<
















<















<



















<
















<







135
136
137
138
139
140
141

142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157

158
159
160
161
162
163
164
165
166
167
168
169
170
171
172

173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191

192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207

208
209
210
211
212
213
214
content, whereas [lb]file size [arg file][rb] causes insertion after
the last character of the existing content, i.e. appending.

[para]

The command accepts the same options as [cmd ::fileutil::cat].


[call [cmd ::fileutil::removeFromFile] [opt [arg options]] [arg file] [arg at] [arg n]]

This command is the complement to [cmd ::fileutil::insertIntoFile], removing [arg n] characters from the [arg file], starting at location [arg at].

The specified location [arg at] has to be an integer number in the
range [const 0] ... [lb]file size [arg file][rb] - [arg n]. [const 0]
will cause the removal of the new data to start with the first
character of the existing content,

whereas [lb]file size [arg file][rb] - [arg n] causes the removal of
the tail of the existing content, i.e. the truncation of the file.

[para]

The command accepts the same options as [cmd ::fileutil::cat].


[call [cmd ::fileutil::replaceInFile] [opt [arg options]] [arg file] [arg at] [arg n] [arg data]]

This command is a combination of [cmd ::fileutil::removeFromFile] and
[cmd ::fileutil::insertIntoFile]. It first removes the part of the
contents specified by the arguments [arg at] and [arg n], and then
inserts [arg data] at the given location, effectively replacing the
removed by content with [arg data].

All constraints imposed on [arg at] and [arg n] by
[cmd ::fileutil::removeFromFile] and [cmd ::fileutil::insertIntoFile]
are obeyed.

[para]

The command accepts the same options as [cmd ::fileutil::cat].


[call [cmd ::fileutil::updateInPlace] [opt [arg options]] [arg file] [arg cmd]]

This command can be seen as the generic core functionality of
[cmd ::fileutil::replaceInFile].

It first reads the contents of the specified [arg file], then runs the
command prefix [arg cmd] with that data appended to it, and at last
writes the result of that invokation back as the new contents of the
file.

[para]

If the executed command throws an error the [arg file] is not changed.

[para]

The command accepts the same options as [cmd ::fileutil::cat].


[call [cmd ::fileutil::fileType] [arg filename]]

An implementation of the UNIX [syscmd file] command, which uses
various heuristics to guess the type of a file.  Returns a list
specifying as much type information as can be determined about the
file, from most general (eg, "binary" or "text") to most specific (eg,
"gif").  For example, the return value for a GIF file would be "binary
graphic gif".  The command will detect the following types of files:
directory, empty, binary, text, script (with interpreter), executable
elf, executable dos, executable ne, executable pe, graphic gif, graphic
jpeg, graphic png, graphic tiff, graphic bitmap, html, xml (with doctype
if available), message pgp, binary pdf, text ps, text eps, binary
gravity_wave_data_frame, compressed bzip, compressed gzip, compressed
zip, compressed tar, audio wave, audio mpeg, and link. It further
detects doctools, doctoc, and docidx documentation files, and
tklib diagrams.


[call [cmd ::fileutil::find] [opt "[arg basedir] [opt [arg filtercmd]]"]]

An implementation of the unix command [syscmd find]. Adapted from the
Tcler's Wiki. Takes at most two arguments, the path to the directory
to start searching from and a command to use to evaluate interest in
each file. The path defaults to [file .], i.e. the current
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
[example {
    # find .tcl files
    package require fileutil
    proc is_tcl {name} {return [string match *.tcl $name]}
    set tcl_files [fileutil::find . is_tcl]
}]


[call [cmd ::fileutil::findByPattern] [arg basedir] \
     [opt [option -regexp]|[option -glob]] [opt [option --]] \
     [arg patterns]]

This command is based upon the [package TclX] command

[cmd recursive_glob], except that it doesn't allow recursion over more
than one directory at a time. It uses [cmd ::fileutil::find]
internally and is thus able to and does follow symbolic links,
something the [package TclX] command does not do. First argument is
the directory to start the search in, second argument is a list of
[arg patterns]. The command returns a list of all files reachable
through [arg basedir] whose names match at least one of the
patterns. The options before the pattern-list determine the style of
matching, either regexp or glob. glob-style matching is the default if
no options are given. Usage of the option [option --] stops option
processing. This allows the use of a leading '-' in the patterns.


[call [cmd ::fileutil::foreachLine] [arg {var filename cmd}]]

The command reads the file [arg filename] and executes the script

[arg cmd] for every line in the file. During the execution of the
script the variable [arg var] is set to the contents of the current
line. The return value of this command is the result of the last
invocation of the script [arg cmd] or the empty string if the file was
empty.


[call [cmd ::fileutil::grep] [arg pattern] [opt [arg files]]]

Implementation of [syscmd grep]. Adapted from the Tcler's Wiki. The
first argument defines the [arg pattern] to search for. This is
followed by a list of [arg files] to search through. The list is
optional and [const stdin] will be used if it is missing. The result







<


















<









<







237
238
239
240
241
242
243

244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261

262
263
264
265
266
267
268
269
270

271
272
273
274
275
276
277
[example {
    # find .tcl files
    package require fileutil
    proc is_tcl {name} {return [string match *.tcl $name]}
    set tcl_files [fileutil::find . is_tcl]
}]


[call [cmd ::fileutil::findByPattern] [arg basedir] \
     [opt [option -regexp]|[option -glob]] [opt [option --]] \
     [arg patterns]]

This command is based upon the [package TclX] command

[cmd recursive_glob], except that it doesn't allow recursion over more
than one directory at a time. It uses [cmd ::fileutil::find]
internally and is thus able to and does follow symbolic links,
something the [package TclX] command does not do. First argument is
the directory to start the search in, second argument is a list of
[arg patterns]. The command returns a list of all files reachable
through [arg basedir] whose names match at least one of the
patterns. The options before the pattern-list determine the style of
matching, either regexp or glob. glob-style matching is the default if
no options are given. Usage of the option [option --] stops option
processing. This allows the use of a leading '-' in the patterns.


[call [cmd ::fileutil::foreachLine] [arg {var filename cmd}]]

The command reads the file [arg filename] and executes the script

[arg cmd] for every line in the file. During the execution of the
script the variable [arg var] is set to the contents of the current
line. The return value of this command is the result of the last
invocation of the script [arg cmd] or the empty string if the file was
empty.


[call [cmd ::fileutil::grep] [arg pattern] [opt [arg files]]]

Implementation of [syscmd grep]. Adapted from the Tcler's Wiki. The
first argument defines the [arg pattern] to search for. This is
followed by a list of [arg files] to search through. The list is
optional and [const stdin] will be used if it is missing. The result
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
[lb][cmd pwd][rb] (or the current working directory itself) it is made
relative to that directory. In other words, the current working
directory is stripped from the [arg path].  The possibly modified path
is returned as the result of the command. If the current working
directory itself was specified for [arg path] the result is the string
"[const .]".


[call [cmd ::fileutil::stripPath] [arg prefix] [arg path]]

If, and only of the [arg path] is inside of the directory

[file prefix] (or the prefix directory itself) it is made relative to
that directory. In other words, the prefix directory is stripped from
the [arg path]. The possibly modified path is returned as the result
of the command.

If the prefix directory itself was specified for [arg path] the result
is the string "[const .]".


[call [cmd ::fileutil::jail] [arg jail] [arg path]]

This command ensures that the [arg path] is not escaping the directory
[arg jail]. It always returns an absolute path derived from [arg path]
which is within [arg jail].








<











<







304
305
306
307
308
309
310

311
312
313
314
315
316
317
318
319
320
321

322
323
324
325
326
327
328
[lb][cmd pwd][rb] (or the current working directory itself) it is made
relative to that directory. In other words, the current working
directory is stripped from the [arg path].  The possibly modified path
is returned as the result of the command. If the current working
directory itself was specified for [arg path] the result is the string
"[const .]".


[call [cmd ::fileutil::stripPath] [arg prefix] [arg path]]

If, and only of the [arg path] is inside of the directory

[file prefix] (or the prefix directory itself) it is made relative to
that directory. In other words, the prefix directory is stripped from
the [arg path]. The possibly modified path is returned as the result
of the command.

If the prefix directory itself was specified for [arg path] the result
is the string "[const .]".


[call [cmd ::fileutil::jail] [arg jail] [arg path]]

This command ensures that the [arg path] is not escaping the directory
[arg jail]. It always returns an absolute path derived from [arg path]
which is within [arg jail].

345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
An absolute path outside of [arg jail] is stripped of its root element
and then put into the [arg jail] by prefixing it with it. The same
happens if [arg path] is relative, except that nothing is stripped of
it. Before adding the [arg jail] prefix the [arg path] is lexically
normalized to prevent the caller from using [const ..] segments in
[arg path] to escape the jail.


[call [cmd ::fileutil::touch] [opt [option -a]] [opt [option -c]] [opt [option -m]] [opt "[option -r] [arg ref_file]"] [opt "[option -t] [arg time]"] [arg filename] [opt [arg ...]]]

Implementation of [syscmd touch]. Alter the atime and mtime of the
specified files. If [option -c], do not create files if they do not
already exist. If [option -r], use the atime and mtime from

[arg ref_file]. If [option -t], use the integer clock value

[arg time]. It is illegal to specify both [option -r] and

[option -t]. If [option -a], only change the atime. If [option -m],
only change the mtime.

[para]
[emph {This command is not available for Tcl versions less than 8.3.}]


[call [cmd ::fileutil::tempdir]]

The command returns the path of a directory where the caller can
place temporary files, such as [file /tmp] on Unix systems. The
algorithm we use to find the correct directory is as follows:








<















<







336
337
338
339
340
341
342

343
344
345
346
347
348
349
350
351
352
353
354
355
356
357

358
359
360
361
362
363
364
An absolute path outside of [arg jail] is stripped of its root element
and then put into the [arg jail] by prefixing it with it. The same
happens if [arg path] is relative, except that nothing is stripped of
it. Before adding the [arg jail] prefix the [arg path] is lexically
normalized to prevent the caller from using [const ..] segments in
[arg path] to escape the jail.


[call [cmd ::fileutil::touch] [opt [option -a]] [opt [option -c]] [opt [option -m]] [opt "[option -r] [arg ref_file]"] [opt "[option -t] [arg time]"] [arg filename] [opt [arg ...]]]

Implementation of [syscmd touch]. Alter the atime and mtime of the
specified files. If [option -c], do not create files if they do not
already exist. If [option -r], use the atime and mtime from

[arg ref_file]. If [option -t], use the integer clock value

[arg time]. It is illegal to specify both [option -r] and

[option -t]. If [option -a], only change the atime. If [option -m],
only change the mtime.

[para]
[emph {This command is not available for Tcl versions less than 8.3.}]


[call [cmd ::fileutil::tempdir]]

The command returns the path of a directory where the caller can
place temporary files, such as [file /tmp] on Unix systems. The
algorithm we use to find the correct directory is as follows:

437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
command.

[para]

The code was taken from [uri http://wiki.tcl.tk/772], attributed to
Igor Volobouev and anon.



[call [cmd ::fileutil::relative] [arg base] [arg dst]]

This command takes two directory paths, both either absolute or relative
and computes the path of [arg dst] relative to [arg base]. This relative
path is returned as the result of the command. As implied in the previous
sentence, the command is not able to compute this relationship between the
arguments if one of the paths is absolute and the other relative.

[para]

[emph Note:] The processing done by this command is purely lexical.
Symbolic links are [emph not] taken into account.


[call [cmd ::fileutil::relativeUrl] [arg base] [arg dst]]

This command takes two file paths, both either absolute or relative
and computes the path of [arg dst] relative to [arg base], as seen
from inside of the [arg base]. This is the algorithm how a browser
resolves a relative link found in the currently shown file.







<
<












<







426
427
428
429
430
431
432


433
434
435
436
437
438
439
440
441
442
443
444

445
446
447
448
449
450
451
command.

[para]

The code was taken from [uri http://wiki.tcl.tk/772], attributed to
Igor Volobouev and anon.



[call [cmd ::fileutil::relative] [arg base] [arg dst]]

This command takes two directory paths, both either absolute or relative
and computes the path of [arg dst] relative to [arg base]. This relative
path is returned as the result of the command. As implied in the previous
sentence, the command is not able to compute this relationship between the
arguments if one of the paths is absolute and the other relative.

[para]

[emph Note:] The processing done by this command is purely lexical.
Symbolic links are [emph not] taken into account.


[call [cmd ::fileutil::relativeUrl] [arg base] [arg dst]]

This command takes two file paths, both either absolute or relative
and computes the path of [arg dst] relative to [arg base], as seen
from inside of the [arg base]. This is the algorithm how a browser
resolves a relative link found in the currently shown file.
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492

[para]

[emph Note:] The processing done by this command is purely lexical.
Symbolic links are [emph not] taken into account.

[list_end]
[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph fileutil] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[manpage_end]







<

<
<
|
<
<
|
<
<
<
<

459
460
461
462
463
464
465

466


467


468




469

[para]

[emph Note:] The processing done by this command is purely lexical.
Symbolic links are [emph not] taken into account.

[list_end]




[vset CATEGORY fileutil]


[include ../doctools2base/include/feedback.inc]




[manpage_end]

Changes to modules/fileutil/multi.man.

1
2





3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin fileutil::multi n 0.1]





[moddesc   {file utilities}]
[titledesc {Multi-file operation, scatter/gather, standard object}]
[category  {Programming tools}]
[require Tcl 8.4]
[require fileutil::multi [opt 0.1]]
[require fileutil::multi::op [opt 0.1]]
[require wip [opt 1.0]]
[description]
[keywords {file utilities} copy move remove multi-file]
[para]

This package provides a single command to perform actions on multiple
files selected by glob patterns. It is a thin layer over the package
[package fileutil::multi::op] which provides objects for the
same. This package simply creates a single such object and directs all
file commands to it.


>
>
>
>
>








<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

16
17
18
19
20
21
22
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin fileutil::multi n 0.1]
[keywords copy]
[keywords {file utilities}]
[keywords move]
[keywords multi-file]
[keywords remove]
[moddesc   {file utilities}]
[titledesc {Multi-file operation, scatter/gather, standard object}]
[category  {Programming tools}]
[require Tcl 8.4]
[require fileutil::multi [opt 0.1]]
[require fileutil::multi::op [opt 0.1]]
[require wip [opt 1.0]]
[description]

[para]

This package provides a single command to perform actions on multiple
files selected by glob patterns. It is a thin layer over the package
[package fileutil::multi::op] which provides objects for the
same. This package simply creates a single such object and directs all
file commands to it.
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
[para]

The result of the command is the result generated by the last file
command it executed.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph fileutil] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]







<
|
<
<
|
<
<
<
<
<
<

47
48
49
50
51
52
53

54


55






56
[para]

The result of the command is the result generated by the last file
command it executed.

[list_end]


[vset CATEGORY fileutil]


[include ../doctools2base/include/feedback.inc]






[manpage_end]

Changes to modules/fileutil/multiop.man.

1
2





3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin fileutil::multi::op n 0.5.3]





[moddesc   {file utilities}]
[titledesc {Multi-file operation, scatter/gather}]
[category  {Programming tools}]
[require Tcl 8.4]
[require fileutil::multi::op [opt 0.5.3]]
[require wip [opt 1.0]]
[description]
[keywords {file utilities} copy move remove multi-file]
[para]

This package provides objects which are able to perform actions on
multiple files selected by glob patterns.

[para]



>
>
>
>
>







<







1
2
3
4
5
6
7
8
9
10
11
12
13
14

15
16
17
18
19
20
21
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin fileutil::multi::op n 0.5.3]
[keywords copy]
[keywords {file utilities}]
[keywords move]
[keywords multi-file]
[keywords remove]
[moddesc   {file utilities}]
[titledesc {Multi-file operation, scatter/gather}]
[category  {Programming tools}]
[require Tcl 8.4]
[require fileutil::multi::op [opt 0.5.3]]
[require wip [opt 1.0]]
[description]

[para]

This package provides objects which are able to perform actions on
multiple files selected by glob patterns.

[para]

52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
of the newly constructed object is implicitly invoked using the words
as its arguments.

[list_end]

[para]


[section {OBJECT API}]

The following methods are possible for multi-file operation objects:

[list_begin definitions]

[call [cmd \$opName] [method do] [opt [arg word]...]]

This method interprets the specified words as file commands to
execute. See the section [sectref {FILE API}] for the set of
acceptable commands, their syntax, and semantics.

[para]

The result of the method is the result generated by the last file
command it executed.

[list_end]


[section {FILE API}]

Both object constructor and method [method do] take a list of words
and interpret them as file commands to execute. The names were chosen
to allow the construction of operations as sentences in near-natural
language. Most of the commands influence just the state of the object,







<


















<







56
57
58
59
60
61
62

63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80

81
82
83
84
85
86
87
of the newly constructed object is implicitly invoked using the words
as its arguments.

[list_end]

[para]


[section {OBJECT API}]

The following methods are possible for multi-file operation objects:

[list_begin definitions]

[call [cmd \$opName] [method do] [opt [arg word]...]]

This method interprets the specified words as file commands to
execute. See the section [sectref {FILE API}] for the set of
acceptable commands, their syntax, and semantics.

[para]

The result of the method is the result generated by the last file
command it executed.

[list_end]


[section {FILE API}]

Both object constructor and method [method do] take a list of words
and interpret them as file commands to execute. The names were chosen
to allow the construction of operations as sentences in near-natural
language. Most of the commands influence just the state of the object,
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
After the operation has been performed the object state the exclude
patterns and the alias name, if specified, are reset to their default
values (i.e. empty), but nothing else.

[call [cmd the-set] [arg varname]]

Like [cmd the], however the set of files to use is not specified
implicitly per a glob pattern, but contained and loaded from the 
specified variable. The operation [cmd expand] is not available
if this command is used.

[call [cmd ->] [arg varname]]

Saves the set of files from the last expansion into the specified
variable.







|







236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
After the operation has been performed the object state the exclude
patterns and the alias name, if specified, are reset to their default
values (i.e. empty), but nothing else.

[call [cmd the-set] [arg varname]]

Like [cmd the], however the set of files to use is not specified
implicitly per a glob pattern, but contained and loaded from the
specified variable. The operation [cmd expand] is not available
if this command is used.

[call [cmd ->] [arg varname]]

Saves the set of files from the last expansion into the specified
variable.
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
Returns the current recursion status.
[call [cmd strict?]]
Returns the current strictness.
[call [cmd type?]]
Returns the current path type limiter.
[list_end]


[section EXAMPLES]

The following examples assume that the variable [var F] contains a
reference to a multi-file operation object.

[example {
    $F do copy                       \\







<







317
318
319
320
321
322
323

324
325
326
327
328
329
330
Returns the current recursion status.
[call [cmd strict?]]
Returns the current strictness.
[call [cmd type?]]
Returns the current path type limiter.
[list_end]


[section EXAMPLES]

The following examples assume that the variable [var F] contains a
reference to a multi-file operation object.

[example {
    $F do copy                       \\
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
    from /sources          \\
    into /scratch           \\
    but not *.html not index \\
    the  index               \\
    as   pkgIndex.tcl
}]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph fileutil] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]







<
|
<
<
|
<
<
<
<
<
<

393
394
395
396
397
398
399

400


401






402
    from /sources          \\
    into /scratch           \\
    but not *.html not index \\
    the  index               \\
    as   pkgIndex.tcl
}]


[vset CATEGORY fileutil]


[include ../doctools2base/include/feedback.inc]






[manpage_end]

Changes to modules/fileutil/traverse.man.

1
2


3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[comment {-*- text -*- doctools manpage}]
[manpage_begin fileutil_traverse n 0.4.3]


[moddesc   {file utilities}]
[titledesc {Iterative directory traversal}]
[category  {Programming tools}]
[require Tcl 8.3]
[require fileutil::traverse [opt 0.4.3]]
[require fileutil]
[require control]
[description]
[keywords {directory traversal} traversal]
[para]

This package provides objects for the programmable traversal of
directory hierarchies.

The main command exported by the package is:



>
>








<







1
2
3
4
5
6
7
8
9
10
11
12

13
14
15
16
17
18
19
[comment {-*- text -*- doctools manpage}]
[manpage_begin fileutil_traverse n 0.4.3]
[keywords {directory traversal}]
[keywords traversal]
[moddesc   {file utilities}]
[titledesc {Iterative directory traversal}]
[category  {Programming tools}]
[require Tcl 8.3]
[require fileutil::traverse [opt 0.4.3]]
[require fileutil]
[require control]
[description]

[para]

This package provides objects for the programmable traversal of
directory hierarchies.

The main command exported by the package is:

55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
[call [cmd \$traverser] [method files]]

This method is the most highlevel one provided by traversal
objects. When invoked it returns a list containing the names of all
files and directories matching the current configuration of the
traverser.


[call [cmd \$traverser] [method foreach] [arg filevar] [arg script]]

The highlevel [method files] method (see above) is based on this
mid-level method. When invoked it finds all files and directories
matching per the current configuration and executes the [arg script]
for each path. The current path under consideration is stored in the
variable named by [arg filevar]. Both variable and script live / are
executed in the context of the caller of the method. In the method
[method files] the script simply saves the found paths into the list
to return.


[call [cmd \$traverser] [method next] [arg filevar]]

This is the lowest possible interface to the traverser, the core all
higher methods are built on. When invoked it returns a boolean value
indicating whether it found a path matching the current configuration
([const True]), or not ([const False]). If a path was found it is
stored into the variable named by [arg filevar], in the context of the
caller.

The [method foreach] method simply calls this method in a loop until
it returned [const False]. This method is exposed so that we are also
able to incrementally traverse a directory hierarchy in an event-based
manner.

[list_end]


[section OPTIONS]

[list_begin options]
[opt_def -prefilter command_prefix]

This callback is executed for directories. Its result determines if







<










<
















<







56
57
58
59
60
61
62

63
64
65
66
67
68
69
70
71
72

73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88

89
90
91
92
93
94
95
[call [cmd \$traverser] [method files]]

This method is the most highlevel one provided by traversal
objects. When invoked it returns a list containing the names of all
files and directories matching the current configuration of the
traverser.


[call [cmd \$traverser] [method foreach] [arg filevar] [arg script]]

The highlevel [method files] method (see above) is based on this
mid-level method. When invoked it finds all files and directories
matching per the current configuration and executes the [arg script]
for each path. The current path under consideration is stored in the
variable named by [arg filevar]. Both variable and script live / are
executed in the context of the caller of the method. In the method
[method files] the script simply saves the found paths into the list
to return.


[call [cmd \$traverser] [method next] [arg filevar]]

This is the lowest possible interface to the traverser, the core all
higher methods are built on. When invoked it returns a boolean value
indicating whether it found a path matching the current configuration
([const True]), or not ([const False]). If a path was found it is
stored into the variable named by [arg filevar], in the context of the
caller.

The [method foreach] method simply calls this method in a loop until
it returned [const False]. This method is exposed so that we are also
able to incrementally traverse a directory hierarchy in an event-based
manner.

[list_end]


[section OPTIONS]

[list_begin options]
[opt_def -prefilter command_prefix]

This callback is executed for directories. Its result determines if
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
callbacks are handled through this callback too. Errors thrown by the
error callback itself are not caught and ignored, but allowed to pass
to the caller, i.e. however invoked the [method next]. Any other
results from the callback are ignored.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph fileutil] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<

118
119
120
121
122
123
124
125

126










127
callbacks are handled through this callback too. Errors thrown by the
error callback itself are not caught and ignored, but allowed to pass
to the caller, i.e. however invoked the [method next]. Any other
results from the callback are ignored.

[list_end]

[vset CATEGORY fileutil]

[include ../doctools2base/include/feedback.inc]










[manpage_end]

Changes to modules/ftp/ftp.man.

1
2








3
4
5
6
7
8
9
10
11
12
13
14
15
16
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin ftp n 2.4.11]








[moddesc   {ftp client}]
[titledesc {Client-side tcl implementation of the ftp protocol}]
[category  Networking]
[require Tcl 8.2]
[require ftp [opt 2.4.11]]
[description]


[para]

The ftp package provides the client side of the ftp protocol as
specified in RFC 959 ([uri http://www.rfc-editor.org/rfc/rfc959.txt]).
The package implements both active (default) and passive ftp sessions.



>
>
>
>
>
>
>
>






<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

17
18
19
20
21
22
23
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin ftp n 2.4.11]
[see_also ftpd]
[see_also mime]
[see_also pop3]
[see_also smtp]
[keywords ftp]
[keywords internet]
[keywords net]
[keywords {rfc 959}]
[moddesc   {ftp client}]
[titledesc {Client-side tcl implementation of the ftp protocol}]
[category  Networking]
[require Tcl 8.2]
[require ftp [opt 2.4.11]]
[description]


[para]

The ftp package provides the client side of the ftp protocol as
specified in RFC 959 ([uri http://www.rfc-editor.org/rfc/rfc959.txt]).
The package implements both active (default) and passive ftp sessions.

423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444

[para]

An update command placed in the procedure [cmd ::ftp::DisplayMsg] may
run into persistent errors or infinite loops. The solution to this
problem is to use [cmd {update idletasks}] instead of [cmd update].

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph ftp] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also ftpd smtp pop3 mime]
[keywords ftp {rfc 959} internet net]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<
<

430
431
432
433
434
435
436

437


438









439

[para]

An update command placed in the procedure [cmd ::ftp::DisplayMsg] may
run into persistent errors or infinite loops. The solution to this
problem is to use [cmd {update idletasks}] instead of [cmd update].


[vset CATEGORY ftp]


[include ../doctools2base/include/feedback.inc]









[manpage_end]

Changes to modules/ftp/ftp_geturl.man.

1
2








3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin ftp::geturl n 0.2.1]








[moddesc   {ftp client}]
[titledesc {Uri handler for ftp urls}]
[category  Networking]
[require Tcl 8.2]
[require ftp::geturl [opt 0.2.1]]
[description]



>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin ftp::geturl n 0.2.1]
[see_also ftpd]
[see_also mime]
[see_also pop3]
[see_also smtp]
[keywords ftp]
[keywords internet]
[keywords net]
[keywords {rfc 959}]
[moddesc   {ftp client}]
[titledesc {Uri handler for ftp urls}]
[category  Networking]
[require Tcl 8.2]
[require ftp::geturl [opt 0.2.1]]
[description]

39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
[def [term link]]

The attributes of the link, including the path it refers to.

[list_end]
[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph ftp] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also ftpd smtp pop3 mime]
[keywords ftp {rfc 959} internet net]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<
<

47
48
49
50
51
52
53

54


55









56
[def [term link]]

The attributes of the link, including the path it refers to.

[list_end]
[list_end]


[vset CATEGORY ftp]


[include ../doctools2base/include/feedback.inc]









[manpage_end]

Changes to modules/ftpd/ftpd.man.

1
2





3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin ftpd n 1.2.6]





[moddesc   {Tcl FTP Server Package}]
[titledesc {Tcl FTP server implementation}]
[category  Networking]
[require Tcl 8.3]
[require ftpd [opt 1.2.6]]
[description]



>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin ftpd n 1.2.6]
[keywords ftp]
[keywords ftpd]
[keywords ftpserver]
[keywords {rfc 959}]
[keywords services]
[moddesc   {Tcl FTP Server Package}]
[titledesc {Tcl FTP server implementation}]
[category  Networking]
[require Tcl 8.3]
[require ftpd [opt 1.2.6]]
[description]

70
71
72
73
74
75
76
77
78
79
80
81
82
83
84

Callback for transfer completion notification. In other words, it is
called whenever a transfer of data to or from the client has
completed.

[list_end]
[list_end]


[section CALLBACKS]

[list_begin definitions]

[def "[cmd authIpCmd] callback"]








<







75
76
77
78
79
80
81

82
83
84
85
86
87
88

Callback for transfer completion notification. In other words, it is
called whenever a transfer of data to or from the client has
completed.

[list_end]
[list_end]


[section CALLBACKS]

[list_begin definitions]

[def "[cmd authIpCmd] callback"]

212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
[call [arg fsCmd] [method store] [arg path]]

The store subcommand receives the path of a file to write as its only
argument.  The store subcommand returns a writable channel.

[list_end]


[def "[cmd closeCmd]"]

The [cmd closeCmd] receives no arguments when it is invoked, and any
return value it may generate is discarded.

[def "[cmd xferDoneCmd] sock sock2 file bytes filename err"]

The [cmd xferDoneCmd] receives six arguments when invoked. These are,
in this order, the channel handle of the control socket for the
connection, the channel handle of the data socket used for the
transfer (already closed), the handle of the channel containing the
transfered file, the number of bytes transfered, the path of the file
which was transfered, and a (possibly empty) error message.

Any return value it may generate is discarded.

[list_end]


[section VARIABLES]

[list_begin definitions]

[def [var ::ftpd::cwd]]

The current working directory for a session when someone first
connects to the FTPD or when the [cmd REIN] ftp command is received.

[def [var ::ftpd::contact]]

The e-mail address of the person that is the contact for the ftp
server.  This address is printed out as part of the response to the
[cmd {FTP HELP}] command.

[def [var ::ftpd::port]]

The port that the ftp server should listen on. 
If port is specified as zero, the operating system will allocate an 
unused port for use as a server socket; afterwards, the variable will 
contain the port number that was allocated.

[def [var ::ftpd::welcome]]

The message that is printed out when the user first connects to the
ftp server.


[def [var ::ftpd::CurrentSocket]]

Accessible to all callbacks and all filesystem commands (which are a
special form of callback) and contains the handle of the socket
channel which was active when the callback was invoked.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph ftpd] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords ftpd ftp ftpserver services {rfc 959}]
[manpage_end]







<

















<


















|
|
|






<









<
|
<
<
|
<
<
<
<
<
<
<
<

216
217
218
219
220
221
222

223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239

240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266

267
268
269
270
271
272
273
274
275

276


277








278
[call [arg fsCmd] [method store] [arg path]]

The store subcommand receives the path of a file to write as its only
argument.  The store subcommand returns a writable channel.

[list_end]


[def "[cmd closeCmd]"]

The [cmd closeCmd] receives no arguments when it is invoked, and any
return value it may generate is discarded.

[def "[cmd xferDoneCmd] sock sock2 file bytes filename err"]

The [cmd xferDoneCmd] receives six arguments when invoked. These are,
in this order, the channel handle of the control socket for the
connection, the channel handle of the data socket used for the
transfer (already closed), the handle of the channel containing the
transfered file, the number of bytes transfered, the path of the file
which was transfered, and a (possibly empty) error message.

Any return value it may generate is discarded.

[list_end]


[section VARIABLES]

[list_begin definitions]

[def [var ::ftpd::cwd]]

The current working directory for a session when someone first
connects to the FTPD or when the [cmd REIN] ftp command is received.

[def [var ::ftpd::contact]]

The e-mail address of the person that is the contact for the ftp
server.  This address is printed out as part of the response to the
[cmd {FTP HELP}] command.

[def [var ::ftpd::port]]

The port that the ftp server should listen on.
If port is specified as zero, the operating system will allocate an
unused port for use as a server socket; afterwards, the variable will
contain the port number that was allocated.

[def [var ::ftpd::welcome]]

The message that is printed out when the user first connects to the
ftp server.


[def [var ::ftpd::CurrentSocket]]

Accessible to all callbacks and all filesystem commands (which are a
special form of callback) and contains the handle of the socket
channel which was active when the callback was invoked.

[list_end]


[vset CATEGORY ftpd]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/fumagic/cfront.man.

1
2








3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin fileutil::magic::cfront n 1.0]








[moddesc   {file utilities}]
[titledesc {Generator core for compiler of magic(5) files}]
[category  {Programming tools}]
[require Tcl 8.4]
[require fileutil::magic::cfront [opt 1.0]]
[require fileutil::magic::cgen [opt 1.0]]
[require fileutil::magic::rt [opt 1.0]]


>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin fileutil::magic::cfront n 1.0]
[see_also file(1)]
[see_also fileutil]
[see_also magic(5)]
[keywords {file recognition}]
[keywords {file type}]
[keywords {file utilities}]
[keywords mime]
[keywords type]
[moddesc   {file utilities}]
[titledesc {Generator core for compiler of magic(5) files}]
[category  {Programming tools}]
[require Tcl 8.4]
[require fileutil::magic::cfront [opt 1.0]]
[require fileutil::magic::cgen [opt 1.0]]
[require fileutil::magic::rt [opt 1.0]]
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
All the files have to be in the format specified by magic(5).

[para]

The result of the command is a Tcl script containing the generated
recognizer.


[call [cmd ::fileutil::magic::cfront::procdef] [arg procname] [arg path]...]

This command behaves like [cmd ::fileutil::magic::cfront::compile]
with regard to the specified path arguments, then wraps the resulting
recognizer script into a procedure named [arg procname], puts code
setting up the namespace of [arg procname] in front, and returns the
resulting script.


[call [cmd ::fileutil::magic::cfront::install] [arg path]...]

This command uses [cmd ::fileutil::magic::cfront::procdef] to compile
each of the paths into a recognizer procedure and installs the result
in the current interpreter.

[para]

The name of each new procedure is derived from the name of the
file/directory used in its creation, with file/directory [file FOO]
causing the creation of procedure [const ::fileutil::magic::/FOO::run].

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {fileutil :: magic}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also fileutil file(1) magic(5)]
[keywords type mime {file utilities} {file type} {file recognition}]
[manpage_end]







<







<















<
<
<
<
<
<
|
<
|
<
<
<
<
<
<

40
41
42
43
44
45
46

47
48
49
50
51
52
53

54
55
56
57
58
59
60
61
62
63
64
65
66
67
68






69

70






71
All the files have to be in the format specified by magic(5).

[para]

The result of the command is a Tcl script containing the generated
recognizer.


[call [cmd ::fileutil::magic::cfront::procdef] [arg procname] [arg path]...]

This command behaves like [cmd ::fileutil::magic::cfront::compile]
with regard to the specified path arguments, then wraps the resulting
recognizer script into a procedure named [arg procname], puts code
setting up the namespace of [arg procname] in front, and returns the
resulting script.


[call [cmd ::fileutil::magic::cfront::install] [arg path]...]

This command uses [cmd ::fileutil::magic::cfront::procdef] to compile
each of the paths into a recognizer procedure and installs the result
in the current interpreter.

[para]

The name of each new procedure is derived from the name of the
file/directory used in its creation, with file/directory [file FOO]
causing the creation of procedure [const ::fileutil::magic::/FOO::run].

[list_end]







[vset CATEGORY {fileutil :: magic}]

[include ../doctools2base/include/feedback.inc]






[manpage_end]

Changes to modules/fumagic/cgen.man.

1
2








3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin fileutil::magic::cgen n 1.0]








[moddesc   {file utilities}]
[titledesc {Generator core for compiler of magic(5) files}]
[category  {Programming tools}]
[require Tcl 8.4]
[require fileutil::magic::cgen [opt 1.0]]
[require fileutil::magic::rt [opt 1.0]]



>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin fileutil::magic::cgen n 1.0]
[see_also file(1)]
[see_also fileutil]
[see_also magic(5)]
[keywords {file recognition}]
[keywords {file type}]
[keywords {file utilities}]
[keywords mime]
[keywords type]
[moddesc   {file utilities}]
[titledesc {Generator core for compiler of magic(5) files}]
[category  {Programming tools}]
[require Tcl 8.4]
[require fileutil::magic::cgen [opt 1.0]]
[require fileutil::magic::rt [opt 1.0]]

27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
into a tree and returns the object command of that tree as its
result. It uses the package [package struct::tree] for the tree.

[para]

The [arg script] is in the format specified by magic(5).


[call [cmd ::fileutil::magic::cgen::treedump] [arg tree]]

This command takes a [arg tree] as generated by
[cmd ::fileutil::magic::cgen::2tree] and returns a string encoding the
tree for human consumption, to aid in debugging.


[call [cmd ::fileutil::magic::cgen::treegen] [arg tree] [arg node]]

This command takes a [arg tree] as generated by
[cmd ::fileutil::magic::cgen::2tree] and returns a Tcl script, the
recognizer for the file types represented by the sub-tree rooted at
the [arg node].

The generated script makes extensive use of the commands provided by
the recognizer runtime package [package fileutil::magic::rt] to
perform its duties.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {fileutil :: magic}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also fileutil file(1) magic(5)]
[keywords type mime {file utilities} {file type} {file recognition}]
[manpage_end]







<





<














<
<
<
<
<
<
|
<
|
<
<
<
<
<
<

35
36
37
38
39
40
41

42
43
44
45
46

47
48
49
50
51
52
53
54
55
56
57
58
59
60






61

62






63
into a tree and returns the object command of that tree as its
result. It uses the package [package struct::tree] for the tree.

[para]

The [arg script] is in the format specified by magic(5).


[call [cmd ::fileutil::magic::cgen::treedump] [arg tree]]

This command takes a [arg tree] as generated by
[cmd ::fileutil::magic::cgen::2tree] and returns a string encoding the
tree for human consumption, to aid in debugging.


[call [cmd ::fileutil::magic::cgen::treegen] [arg tree] [arg node]]

This command takes a [arg tree] as generated by
[cmd ::fileutil::magic::cgen::2tree] and returns a Tcl script, the
recognizer for the file types represented by the sub-tree rooted at
the [arg node].

The generated script makes extensive use of the commands provided by
the recognizer runtime package [package fileutil::magic::rt] to
perform its duties.

[list_end]







[vset CATEGORY {fileutil :: magic}]

[include ../doctools2base/include/feedback.inc]






[manpage_end]

Changes to modules/fumagic/filetypes.man.

1
2







3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin fileutil::magic::filetype n 1.0.2]







[moddesc   {file utilities}]
[titledesc {Procedures implementing file-type recognition}]
[category  {Programming tools}]
[require Tcl 8.4]
[require fileutil::magic::filetype [opt 1.0.2]]
[description]
[para]


>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin fileutil::magic::filetype n 1.0.2]
[see_also file(1)]
[see_also fileutil]
[see_also magic(5)]
[keywords {file recognition}]
[keywords {file type}]
[keywords {file utilities}]
[keywords type]
[moddesc   {file utilities}]
[titledesc {Procedures implementing file-type recognition}]
[category  {Programming tools}]
[require Tcl 8.4]
[require fileutil::magic::filetype [opt 1.0.2]]
[description]
[para]
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68

This site contains the current sources for the file command, including
the magic definitions used by it. The latter were used by us to
generate this recognizer.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {fileutil :: magic}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also fileutil file(1) magic(5)]
[keywords type {file utilities} {file type} {file recognition}]
[manpage_end]







<
<
<
<
<
|
<
|
<
<
<
<
<
<

54
55
56
57
58
59
60





61

62






63

This site contains the current sources for the file command, including
the magic definitions used by it. The latter were used by us to
generate this recognizer.

[list_end]






[vset CATEGORY {fileutil :: magic}]

[include ../doctools2base/include/feedback.inc]






[manpage_end]

Changes to modules/fumagic/mimetypes.man.

1
2








3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin fileutil::magic::mimetype n 1.0.2]








[moddesc   {file utilities}]
[titledesc {Procedures implementing mime-type recognition}]
[category  {Programming tools}]
[require Tcl 8.4]
[require fileutil::magic::mimetype [opt 1.0.2]]
[description]
[para]


>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin fileutil::magic::mimetype n 1.0.2]
[see_also file(1)]
[see_also fileutil]
[see_also magic(5)]
[keywords {file recognition}]
[keywords {file type}]
[keywords {file utilities}]
[keywords mime]
[keywords type]
[moddesc   {file utilities}]
[titledesc {Procedures implementing mime-type recognition}]
[category  {Programming tools}]
[require Tcl 8.4]
[require fileutil::magic::mimetype [opt 1.0.2]]
[description]
[para]
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64

This site contains the current sources for the file command, including
the magic definitions used by it. The latter were used by us to
generate this recognizer.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {fileutil :: magic}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also fileutil file(1) magic(5)]
[keywords type mime {file utilities} {file type} {file recognition}]
[manpage_end]







<
<
<
<
<
|
<
|
<
<
<
<
<
<

51
52
53
54
55
56
57





58

59






60

This site contains the current sources for the file command, including
the magic definitions used by it. The latter were used by us to
generate this recognizer.

[list_end]






[vset CATEGORY {fileutil :: magic}]

[include ../doctools2base/include/feedback.inc]






[manpage_end]

Changes to modules/fumagic/rtcore.man.

1
2








3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin fileutil::magic::rt n 1.0]








[moddesc   {file utilities}]
[titledesc {Runtime core for file type recognition engines written in pure Tcl}]
[category  {Programming tools}]
[require Tcl 8.4]
[require fileutil::magic::rt [opt 1.0]]
[description]
[para]


>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin fileutil::magic::rt n 1.0]
[see_also file(1)]
[see_also fileutil]
[see_also magic(5)]
[keywords {file recognition}]
[keywords {file type}]
[keywords {file utilities}]
[keywords mime]
[keywords type]
[moddesc   {file utilities}]
[titledesc {Runtime core for file type recognition engines written in pure Tcl}]
[category  {Programming tools}]
[require Tcl 8.4]
[require fileutil::magic::rt [opt 1.0]]
[description]
[para]
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
package.

[para]

The command returns the channel handle of the opened file as its
result.


[call [cmd ::fileutil::magic::rt::close]]

This command closes the last file opened via
[cmd ::fileutil::magic::rt::open] and shuts the runtime down.

This command has to be invoked last, after the file has been dealt
with completely.

Afterward another invokation of [cmd ::fileutil::magic::rt::open]  is
required to process another file.

[para]

This command returns the empty string as its result.


[call [cmd ::fileutil::magic::rt::file_start] [arg name]]

This command marks the start of a magic file when debugging. It
returns the empty string as its result.


[call [cmd ::fileutil::magic::rt::result] [opt [arg msg]]]

This command returns the current result and stops processing.

[para]

If [arg msg] is specified its text is added to the result before it is
returned. See [cmd ::fileutil::magic::rt::emit] for the allowed
special character sequences.


[call [cmd ::fileutil::magic::rt::resultv] [opt [arg msg]]]

This command returns the current result.

In contrast to [cmd ::fileutil::magic::rt::result] processing
continues.

[para]

If [arg msg] is specified its text is added to the result before it is
returned. See [cmd ::fileutil::magic::rt::emit] for the allowed
special character sequences.


[call [cmd ::fileutil::magic::rt::emit] [arg msg]]

This command adds the text [arg msg] to the result buffer. The
message may contain the following special character sequences. They
will be replaced with buffered values before the message is added to
the result. The command returns the empty string as its result.

[list_begin definitions]
[def [const \\b]] This sequence is removed
[def [const %s]]  Replaced with the last buffered string value.
[def [const %ld]] Replaced with the last buffered numeric value.
[def [const %d]]  See above.
[list_end]


[comment [call [cmd ::fileutil::magic::rt::offset] [arg where]]]
[comment {
	Handling of complex offsets. Currently not implemented.
	Always returns zero.
}]








<















<




<










<














<













<







38
39
40
41
42
43
44

45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

60
61
62
63

64
65
66
67
68
69
70
71
72
73

74
75
76
77
78
79
80
81
82
83
84
85
86
87

88
89
90
91
92
93
94
95
96
97
98
99
100

101
102
103
104
105
106
107
package.

[para]

The command returns the channel handle of the opened file as its
result.


[call [cmd ::fileutil::magic::rt::close]]

This command closes the last file opened via
[cmd ::fileutil::magic::rt::open] and shuts the runtime down.

This command has to be invoked last, after the file has been dealt
with completely.

Afterward another invokation of [cmd ::fileutil::magic::rt::open]  is
required to process another file.

[para]

This command returns the empty string as its result.


[call [cmd ::fileutil::magic::rt::file_start] [arg name]]

This command marks the start of a magic file when debugging. It
returns the empty string as its result.


[call [cmd ::fileutil::magic::rt::result] [opt [arg msg]]]

This command returns the current result and stops processing.

[para]

If [arg msg] is specified its text is added to the result before it is
returned. See [cmd ::fileutil::magic::rt::emit] for the allowed
special character sequences.


[call [cmd ::fileutil::magic::rt::resultv] [opt [arg msg]]]

This command returns the current result.

In contrast to [cmd ::fileutil::magic::rt::result] processing
continues.

[para]

If [arg msg] is specified its text is added to the result before it is
returned. See [cmd ::fileutil::magic::rt::emit] for the allowed
special character sequences.


[call [cmd ::fileutil::magic::rt::emit] [arg msg]]

This command adds the text [arg msg] to the result buffer. The
message may contain the following special character sequences. They
will be replaced with buffered values before the message is added to
the result. The command returns the empty string as its result.

[list_begin definitions]
[def [const \\b]] This sequence is removed
[def [const %s]]  Replaced with the last buffered string value.
[def [const %ld]] Replaced with the last buffered numeric value.
[def [const %d]]  See above.
[list_end]


[comment [call [cmd ::fileutil::magic::rt::offset] [arg where]]]
[comment {
	Handling of complex offsets. Currently not implemented.
	Always returns zero.
}]

123
124
125
126
127
128
129
130
131
132
133
134
135
136
137

[example {
	Nv lelong 0 &0x8080ffff
}]

For the possible types see section [sectref {NUMERIC TYPES}].


[call [cmd ::fileutil::magic::rt::N] [arg type] [arg offset] [arg comp] [arg val] [opt [arg qual]]]

This command behaves mostly like [cmd ::fileutil::magic::rt::Nv],
except that it compares the fetched and masked value against [arg val]
as specified with [arg comp] and returns the result of that
comparison.








<







125
126
127
128
129
130
131

132
133
134
135
136
137
138

[example {
	Nv lelong 0 &0x8080ffff
}]

For the possible types see section [sectref {NUMERIC TYPES}].


[call [cmd ::fileutil::magic::rt::N] [arg type] [arg offset] [arg comp] [arg val] [opt [arg qual]]]

This command behaves mostly like [cmd ::fileutil::magic::rt::Nv],
except that it compares the fetched and masked value against [arg val]
as specified with [arg comp] and returns the result of that
comparison.

146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224

[para]

The special comparison operator [const x] signals that no comparison
should be done, or, in other words, that the fetched value will always
match [arg val].


[call [cmd ::fileutil::magic::rt::Nvx] [arg atlevel] [arg type] [arg offset] [opt [arg qual]]]

This command behaves like [cmd ::fileutil::magic::rt::Nv], except that
it additionally remembers the location in the file after the fetch in
the calling context, for the level [arg atlevel], for later use by 
[cmd ::fileutil::magic::rt::R].


[call [cmd ::fileutil::magic::rt::Nx] [arg atlevel] [arg type] [arg offset] [arg comp] [arg val] [opt [arg qual]]]

This command behaves like [cmd ::fileutil::magic::rt::N], except that
it additionally remembers the location in the file after the fetch in
the calling context, for the level [arg atlevel], for later use by 
[cmd ::fileutil::magic::rt::R].


[call [cmd ::fileutil::magic::rt::S] [arg offset] [arg comp] [arg val] [opt [arg qual]]]

This command behaves like [cmd ::fileutil::magic::rt::N], except that
it fetches and compares strings, not numeric data. The fetched value
is also stored in the internal string buffer instead of the numeric
buffer.


[call [cmd ::fileutil::magic::rt::Sx] [arg atlevel] [arg offset] [arg comp] [arg val] [opt [arg qual]]]

This command behaves like [cmd ::fileutil::magic::rt::S], except that
it additionally remembers the location in the file after the fetch in
the calling context, for the level [arg atlevel], for later use by 
[cmd ::fileutil::magic::rt::R].


[call [cmd ::fileutil::magic::rt::L] [arg newlevel]]

This command sets the current level in the calling context to
[arg newlevel]. The command returns the empty string as its result.


[call [cmd ::fileutil::magic::rt::I] [arg base] [arg type] [arg delta]]

This command handles base locations specified indirectly through the
contents of the inspected file. It returns the sum of [arg delta] and
the value of numeric [arg type] fetched from the absolute location
[arg base].

[para]

For the possible types see section [sectref {NUMERIC TYPES}].


[call [cmd ::fileutil::magic::rt::R] [arg offset]]

This command handles base locations specified relative to the end of
the last field one level above.

[para]

In other words, the command computes an absolute location in the file
based on the relative [arg offset] and returns it as its result. The
base the offset is added to is the last location remembered for the
level in the calling context.

[list_end]


[section {NUMERIC TYPES}]

[list_begin definitions]
[def [const byte]]    8-bit integer
[def [const short]]   16-bit integer, stored in native endianess
[def [const beshort]] see above, stored in big endian







<




|

<





|

<








<




|

<





<











<














<







147
148
149
150
151
152
153

154
155
156
157
158
159

160
161
162
163
164
165
166

167
168
169
170
171
172
173
174

175
176
177
178
179
180

181
182
183
184
185

186
187
188
189
190
191
192
193
194
195
196

197
198
199
200
201
202
203
204
205
206
207
208
209
210

211
212
213
214
215
216
217

[para]

The special comparison operator [const x] signals that no comparison
should be done, or, in other words, that the fetched value will always
match [arg val].


[call [cmd ::fileutil::magic::rt::Nvx] [arg atlevel] [arg type] [arg offset] [opt [arg qual]]]

This command behaves like [cmd ::fileutil::magic::rt::Nv], except that
it additionally remembers the location in the file after the fetch in
the calling context, for the level [arg atlevel], for later use by
[cmd ::fileutil::magic::rt::R].


[call [cmd ::fileutil::magic::rt::Nx] [arg atlevel] [arg type] [arg offset] [arg comp] [arg val] [opt [arg qual]]]

This command behaves like [cmd ::fileutil::magic::rt::N], except that
it additionally remembers the location in the file after the fetch in
the calling context, for the level [arg atlevel], for later use by
[cmd ::fileutil::magic::rt::R].


[call [cmd ::fileutil::magic::rt::S] [arg offset] [arg comp] [arg val] [opt [arg qual]]]

This command behaves like [cmd ::fileutil::magic::rt::N], except that
it fetches and compares strings, not numeric data. The fetched value
is also stored in the internal string buffer instead of the numeric
buffer.


[call [cmd ::fileutil::magic::rt::Sx] [arg atlevel] [arg offset] [arg comp] [arg val] [opt [arg qual]]]

This command behaves like [cmd ::fileutil::magic::rt::S], except that
it additionally remembers the location in the file after the fetch in
the calling context, for the level [arg atlevel], for later use by
[cmd ::fileutil::magic::rt::R].


[call [cmd ::fileutil::magic::rt::L] [arg newlevel]]

This command sets the current level in the calling context to
[arg newlevel]. The command returns the empty string as its result.


[call [cmd ::fileutil::magic::rt::I] [arg base] [arg type] [arg delta]]

This command handles base locations specified indirectly through the
contents of the inspected file. It returns the sum of [arg delta] and
the value of numeric [arg type] fetched from the absolute location
[arg base].

[para]

For the possible types see section [sectref {NUMERIC TYPES}].


[call [cmd ::fileutil::magic::rt::R] [arg offset]]

This command handles base locations specified relative to the end of
the last field one level above.

[para]

In other words, the command computes an absolute location in the file
based on the relative [arg offset] and returns it as its result. The
base the offset is added to is the last location remembered for the
level in the calling context.

[list_end]


[section {NUMERIC TYPES}]

[list_begin definitions]
[def [const byte]]    8-bit integer
[def [const short]]   16-bit integer, stored in native endianess
[def [const beshort]] see above, stored in big endian
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
[def [const bedate]]  see above, stored in big endian
[def [const ledate]]  see above, stored in small/little endian
[def [const ldate]]   32-bit integer timestamp, stored in native endianess
[def [const beldate]] see above, stored in big endian
[def [const leldate]] see above, stored in small/little endian
[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {fileutil :: magic}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also fileutil file(1) magic(5)]
[keywords type mime {file utilities} {file type} {file recognition}]
[manpage_end]







<
<
<
<
<
<
|
<
|
<
<
<
<
<
<

229
230
231
232
233
234
235






236

237






238
[def [const bedate]]  see above, stored in big endian
[def [const ledate]]  see above, stored in small/little endian
[def [const ldate]]   32-bit integer timestamp, stored in native endianess
[def [const beldate]] see above, stored in big endian
[def [const leldate]] see above, stored in small/little endian
[list_end]







[vset CATEGORY {fileutil :: magic}]

[include ../doctools2base/include/feedback.inc]






[manpage_end]

Changes to modules/generator/generator.man.

1











2
3
4
5
6
7
8
[manpage_begin generator n 0.1]











[moddesc    {Tcl Generator Commands}]
[titledesc  {Procedures for creating and using generators.}]
[require Tcl 8.6]
[require generator [opt 0.1]]
[description]
[para]


>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[manpage_begin generator n 0.1]
[keywords {control structure}]
[keywords coroutine]
[keywords filter]
[keywords foldl]
[keywords foldr]
[keywords foreach]
[keywords generator]
[keywords iterator]
[keywords map]
[keywords reduce]
[keywords scanl]
[moddesc    {Tcl Generator Commands}]
[titledesc  {Procedures for creating and using generators.}]
[require Tcl 8.6]
[require generator [opt 0.1]]
[description]
[para]

33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
series has been exhausted, the generator command returns an empty list and then
destroys itself. Rather than manually call a generator, however, the package
also provides a flexible [method foreach] command that loops through the values of
one or more generators. This loop construct mimicks the functionality of the
built-in Tcl [cmd foreach] command, including handling multiple return values
and looping over multiple generators at once. Writing a generator is also a
simple task, much like writing a normal procedure: simply use the [method define]
command to define the generator, and then call [method yield] instead of [cmd return]. 
For example, we can define a generator for looping through the integers
in a particular range:

[para]
[example {
    generator define range {n m} {
        for {set i $n} {$i <= $m} {incr i} { generator yield $i }







|







44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
series has been exhausted, the generator command returns an empty list and then
destroys itself. Rather than manually call a generator, however, the package
also provides a flexible [method foreach] command that loops through the values of
one or more generators. This loop construct mimicks the functionality of the
built-in Tcl [cmd foreach] command, including handling multiple return values
and looping over multiple generators at once. Writing a generator is also a
simple task, much like writing a normal procedure: simply use the [method define]
command to define the generator, and then call [method yield] instead of [cmd return].
For example, we can define a generator for looping through the integers
in a particular range:

[para]
[example {
    generator define range {n m} {
        for {set i $n} {$i <= $m} {incr i} { generator yield $i }
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103

[call [cmd generator] [method yield] [arg arg] [opt [arg args..]]]

Used in the definition of a generator, this command returns the next set of
values to the consumer. Once the [method yield] command has been called the
generator will suspend to allow the consumer to process that value. When the
next value is requested, the generator will resume as if the yield command had
just returned, and can continue processing to yield the next result. The 
[method yield] command must be called with at least one argument, but can be called with
multiple arguments, in which case this is equivalent to calling [method yield]
once for each argument.

[call [cmd generator] [method foreach] [arg varList] [arg generator] [arg varList] \
    [arg generator] [opt ...] [arg body]]








|







100
101
102
103
104
105
106
107
108
109
110
111
112
113
114

[call [cmd generator] [method yield] [arg arg] [opt [arg args..]]]

Used in the definition of a generator, this command returns the next set of
values to the consumer. Once the [method yield] command has been called the
generator will suspend to allow the consumer to process that value. When the
next value is requested, the generator will resume as if the yield command had
just returned, and can continue processing to yield the next result. The
[method yield] command must be called with at least one argument, but can be called with
multiple arguments, in which case this is equivalent to calling [method yield]
once for each argument.

[call [cmd generator] [method foreach] [arg varList] [arg generator] [arg varList] \
    [arg generator] [opt ...] [arg body]]

281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
    #                 = ((((0+1)+2)+3)+4)+5
    #                 = 15
    proc + {a b} { expr {$a + $b} }
    proc sum gen { generator reduce + 0 $gen }
    puts [sum [range 1 10]]
}]


[para]

The [method reduce] operation is an extremely useful one, and a great variety of
different operations can be defined using it. For example, we can define a
factorial function as the product of a range using generators. This definition
is both very clear and also quite efficient (in both memory and running time):








<







292
293
294
295
296
297
298

299
300
301
302
303
304
305
    #                 = ((((0+1)+2)+3)+4)+5
    #                 = 15
    proc + {a b} { expr {$a + $b} }
    proc sum gen { generator reduce + 0 $gen }
    puts [sum [range 1 10]]
}]


[para]

The [method reduce] operation is an extremely useful one, and a great variety of
different operations can be defined using it. For example, we can define a
factorial function as the product of a range using generators. This definition
is both very clear and also quite efficient (in both memory and running time):

465
466
467
468
469
470
471
472
473
474
475

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

Please report any errors in this document, or in the package it describes, to
[uri {mailto:[email protected]} {Neil Madden}].

[keywords generator coroutine {control structure} iterator foreach]
[keywords map filter foldl reduce foldr scanl]
[manpage_end]







<
<
<

475
476
477
478
479
480
481



482

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

Please report any errors in this document, or in the package it describes, to
[uri {mailto:[email protected]} {Neil Madden}].



[manpage_end]

Changes to modules/gpx/gpx.man.

1
2


3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin gpx n 0.9]


[copyright {2010, Keith Vetter <[email protected]>}]
[moddesc {GPS eXchange Format (GPX)}]
[titledesc {Extracts waypoints, tracks and routes from GPX files}]
[category  {File formats}]
[require Tcl 8.5]
[require gpx [opt 0.9]]
[description]


>
>







1
2
3
4
5
6
7
8
9
10
11
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin gpx n 0.9]
[keywords gps]
[keywords gpx]
[copyright {2010, Keith Vetter <[email protected]>}]
[moddesc {GPS eXchange Format (GPX)}]
[titledesc {Extracts waypoints, tracks and routes from GPX files}]
[category  {File formats}]
[require Tcl 8.5]
[require gpx [opt 0.9]]
[description]
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
associated with the GPX data identified by [arg token].
The format of the metadata dictionary is described
below, but keys [emph version] and [emph creator]
will always be present.

[call [cmd ::gpx::GetWaypointCount] [arg token]]

This procedure returns the number of waypoints defined in the GPX 
data identified by [arg token].

[call [cmd ::gpx::GetAllWaypoints] [arg token]]

This procedure returns the a list of waypoints defined in the GPX 
data identified by [arg token]. The format of each waypoint item
is described below.

[call [cmd ::gpx::GetTrackCount] [arg token]]

This procedure returns the number of tracks defined in the GPX 
data identified by [arg token].

[call [cmd ::gpx::GetTrackMetadata] [arg token] [arg whichTrack]]

This procedure returns a dictionary of the metadata 
associated track number [arg whichTrack] (1 based) in 
the GPX data identified by [arg token].
The format of the metadata dictionary is described below.

[call [cmd ::gpx::GetTrackPoints] [arg token] [arg whichTrack]]

The procedure returns a list of track points comprising track
number [arg whichTrack] (1 based) in the GPX data identified by
[arg token]. The format of the metadata dictionary is described below.

[call [cmd ::gpx::GetRouteCount] [arg token]]

This procedure returns the number of routes defined in the GPX 
data identified by [arg token].

[call [cmd ::gpx::GetRouteMetadata] [arg token] [arg whichRoute]]

This procedure returns a dictionary of the metadata 
associated route number [arg whichRoute] (1 based) in 
the GPX data identified by [arg token].
The format of the metadata dictionary is described below.

[call [cmd ::gpx::GetRoutePoints] [arg token] [arg whichRoute]]

The procedure returns a list of route points comprising route
number [arg whichRoute] (1 based) in the GPX data identified by







|




|





|




|
|











|




|
|







42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
associated with the GPX data identified by [arg token].
The format of the metadata dictionary is described
below, but keys [emph version] and [emph creator]
will always be present.

[call [cmd ::gpx::GetWaypointCount] [arg token]]

This procedure returns the number of waypoints defined in the GPX
data identified by [arg token].

[call [cmd ::gpx::GetAllWaypoints] [arg token]]

This procedure returns the a list of waypoints defined in the GPX
data identified by [arg token]. The format of each waypoint item
is described below.

[call [cmd ::gpx::GetTrackCount] [arg token]]

This procedure returns the number of tracks defined in the GPX
data identified by [arg token].

[call [cmd ::gpx::GetTrackMetadata] [arg token] [arg whichTrack]]

This procedure returns a dictionary of the metadata
associated track number [arg whichTrack] (1 based) in
the GPX data identified by [arg token].
The format of the metadata dictionary is described below.

[call [cmd ::gpx::GetTrackPoints] [arg token] [arg whichTrack]]

The procedure returns a list of track points comprising track
number [arg whichTrack] (1 based) in the GPX data identified by
[arg token]. The format of the metadata dictionary is described below.

[call [cmd ::gpx::GetRouteCount] [arg token]]

This procedure returns the number of routes defined in the GPX
data identified by [arg token].

[call [cmd ::gpx::GetRouteMetadata] [arg token] [arg whichRoute]]

This procedure returns a dictionary of the metadata
associated route number [arg whichRoute] (1 based) in
the GPX data identified by [arg token].
The format of the metadata dictionary is described below.

[call [cmd ::gpx::GetRoutePoints] [arg token] [arg whichRoute]]

The procedure returns a list of route points comprising route
number [arg whichRoute] (1 based) in the GPX data identified by
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
[emph text] and [emph type].

[def "point item"]
Each item in a track or route list of points consists of
a list of three elements: [emph latitude], [emph longitude] and
[emph "metadata dictionary"]. [emph Latitude] and [emph longitude]
are decimal numbers. The [emph "metadata dictionary"] format is
described above. For points in a track, typically there will 
always be ele (elevation) and time metadata keys.

[list_end]


[section "EXAMPLE"]

[example {
% set token [::gpx::Create myGpxFile.gpx]
% set version [dict get [::gpx::GetGPXMetadata $token] version]
% set trackCnt [::gpx::GetTrackCount $token]
% set firstPoint [lindex [::gpx::GetTrackPoints $token 1] 0]
% lassign $firstPoint lat lon ptMetadata
% puts "first point in the first track is at $lat, $lon"
% if {[dict exists $ptMetadata ele]} { 
     puts "at elevation [dict get $ptMetadata ele] meters"
  }
% ::gpx::Cleanup $token
}]

[section "REFERENCES"]








|



<










|







110
111
112
113
114
115
116
117
118
119
120

121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
[emph text] and [emph type].

[def "point item"]
Each item in a track or route list of points consists of
a list of three elements: [emph latitude], [emph longitude] and
[emph "metadata dictionary"]. [emph Latitude] and [emph longitude]
are decimal numbers. The [emph "metadata dictionary"] format is
described above. For points in a track, typically there will
always be ele (elevation) and time metadata keys.

[list_end]


[section "EXAMPLE"]

[example {
% set token [::gpx::Create myGpxFile.gpx]
% set version [dict get [::gpx::GetGPXMetadata $token] version]
% set trackCnt [::gpx::GetTrackCount $token]
% set firstPoint [lindex [::gpx::GetTrackPoints $token 1] 0]
% lassign $firstPoint lat lon ptMetadata
% puts "first point in the first track is at $lat, $lon"
% if {[dict exists $ptMetadata ele]} {
     puts "at elevation [dict get $ptMetadata ele] meters"
  }
% ::gpx::Cleanup $token
}]

[section "REFERENCES"]

148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
   GPX 1.0 Developer's Manual ([uri http://www.topografix.com/gpx_manual.asp])

[list_end]

[section AUTHOR]
Keith Vetter

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph gpx] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[keywords gpx gps]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<

149
150
151
152
153
154
155

156


157







158
   GPX 1.0 Developer's Manual ([uri http://www.topografix.com/gpx_manual.asp])

[list_end]

[section AUTHOR]
Keith Vetter


[vset CATEGORY gpx]


[include ../doctools2base/include/feedback.inc]







[manpage_end]

Changes to modules/grammar_aycock/aycock.man.

1
2








3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::aycock n 1.0]








[copyright "2006 by Kevin B. Kenny <[email protected]>
Redistribution permitted under the terms of the Open\
Publication License <http://www.opencontent.org/openpub/>"]
[moddesc "Aycock-Horspool-Earley parser generator for Tcl"]
[titledesc "Aycock-Horspool-Earley parser generator for Tcl"]
[category "Grammars and finite automata"]
[require Tcl 8.5]
[require grammar::aycock [opt 1.0]]
[description]
[keywords grammar parser aycock earley horspool]
[keywords ambiguous parsing transducer]
[para]
The [package grammar::aycock] package
implements a parser generator for the class of parsers described
in John Aycock and R. Nigel Horspool. Practical Earley Parsing. 
[emph "The Computer Journal,"] [emph 45](6):620-630, 2002. 
[uri http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.12.4254]
[section "PROCEDURES"]

The [package grammar::aycock] package exports the single procedure:

[list_begin definitions]
[call [cmd ::aycock::parser] [arg grammar] [opt [option -verbose]]]


>
>
>
>
>
>
>
>









<
<



|
|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19


20
21
22
23
24
25
26
27
28
29
30
31
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::aycock n 1.0]
[keywords ambiguous]
[keywords aycock]
[keywords earley]
[keywords grammar]
[keywords horspool]
[keywords parser]
[keywords parsing]
[keywords transducer]
[copyright "2006 by Kevin B. Kenny <[email protected]>
Redistribution permitted under the terms of the Open\
Publication License <http://www.opencontent.org/openpub/>"]
[moddesc "Aycock-Horspool-Earley parser generator for Tcl"]
[titledesc "Aycock-Horspool-Earley parser generator for Tcl"]
[category "Grammars and finite automata"]
[require Tcl 8.5]
[require grammar::aycock [opt 1.0]]
[description]


[para]
The [package grammar::aycock] package
implements a parser generator for the class of parsers described
in John Aycock and R. Nigel Horspool. Practical Earley Parsing.
[emph "The Computer Journal,"] [emph 45](6):620-630, 2002.
[uri http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.12.4254]
[section "PROCEDURES"]

The [package grammar::aycock] package exports the single procedure:

[list_begin definitions]
[call [cmd ::aycock::parser] [arg grammar] [opt [option -verbose]]]
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58

[call [arg parserName] [method destroy]]

Destroys a parser constructed by [cmd ::aycock::parser].

[call [arg parserName] [method terminals]]

Returns a list of terminal symbols that may be presented in the 
[arg symList] argument to the [method parse] object command.

[call [arg parserName] [method nonterminals]]

Returns a list of nonterminal symbols that were defined in the
parser's grammar.








|







50
51
52
53
54
55
56
57
58
59
60
61
62
63
64

[call [arg parserName] [method destroy]]

Destroys a parser constructed by [cmd ::aycock::parser].

[call [arg parserName] [method terminals]]

Returns a list of terminal symbols that may be presented in the
[arg symList] argument to the [method parse] object command.

[call [arg parserName] [method nonterminals]]

Returns a list of nonterminal symbols that were defined in the
parser's grammar.

126
127
128
129
130
131
132
133
134
}]

The example, when run, prints [const 40].

[section KEYWORDS]

Aycock, Earley, Horspool, parser, compiler

[manpage_end]







<

132
133
134
135
136
137
138

139
}]

The example, when run, prints [const 40].

[section KEYWORDS]

Aycock, Earley, Horspool, parser, compiler

[manpage_end]

Changes to modules/grammar_fa/dacceptor.man.

1
2











3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::fa::dacceptor n 0.1.1]











[copyright {2004 Andreas Kupries <[email protected]>}]
[moddesc   {Finite automaton operations and usage}]
[titledesc {Create and use deterministic acceptors}]
[category  {Grammars and finite automata}]
[require Tcl 8.4]
[require snit]
[require struct::set]
[require grammar::fa::dacceptor [opt 0.1.1]]
[description]
[keywords acceptor acceptance grammar automaton {finite automaton}]
[keywords state {regular expression} {regular grammar}]
[keywords {regular languages} parsing transducer]
[para]

This package provides a class for acceptors constructed from
deterministic [term {finite automatons}] (DFA). Acceptors are objects
which can be given a string of symbols and tell if the DFA they are
constructed from would [term accept] that string.



>
>
>
>
>
>
>
>
>
>
>









<
<
<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22



23
24
25
26
27
28
29
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::fa::dacceptor n 0.1.1]
[keywords acceptance]
[keywords acceptor]
[keywords automaton]
[keywords {finite automaton}]
[keywords grammar]
[keywords parsing]
[keywords {regular expression}]
[keywords {regular grammar}]
[keywords {regular languages}]
[keywords state]
[keywords transducer]
[copyright {2004 Andreas Kupries <[email protected]>}]
[moddesc   {Finite automaton operations and usage}]
[titledesc {Create and use deterministic acceptors}]
[category  {Grammars and finite automata}]
[require Tcl 8.4]
[require snit]
[require struct::set]
[require grammar::fa::dacceptor [opt 0.1.1]]
[description]



[para]

This package provides a class for acceptors constructed from
deterministic [term {finite automatons}] (DFA). Acceptors are objects
which can be given a string of symbols and tell if the DFA they are
constructed from would [term accept] that string.

63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
[section {ACCEPTOR METHODS}]
[para]

All acceptors provide the following methods for their manipulation:

[list_begin definitions]


[call [arg daName] [method destroy]]

Destroys the automaton, including its storage space and associated
command.


[call [arg daName] [method accept?] [arg symbols]]

Takes the list of [arg symbols] and checks if the FA the acceptor is
based on would accept it. The result is a boolean value. [const True]
is returned if the symbols are accepted, and [const False]
otherwise. Note that bogus symbols in the input are either translated
to the [arg any] symbol (if specified), or cause the acceptance test
to simply fail. No errors will be thrown. The method will process only
just that prefix of the input which is enough to fully determine
(non-)acceptance.

[list_end]

[para]

[section EXAMPLES]
[para]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph grammar_fa] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[manpage_end]







<




<

















<

<
|
<
<
|
<
<
<
<
<
<
<

71
72
73
74
75
76
77

78
79
80
81

82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98

99

100


101







102
[section {ACCEPTOR METHODS}]
[para]

All acceptors provide the following methods for their manipulation:

[list_begin definitions]


[call [arg daName] [method destroy]]

Destroys the automaton, including its storage space and associated
command.


[call [arg daName] [method accept?] [arg symbols]]

Takes the list of [arg symbols] and checks if the FA the acceptor is
based on would accept it. The result is a boolean value. [const True]
is returned if the symbols are accepted, and [const False]
otherwise. Note that bogus symbols in the input are either translated
to the [arg any] symbol (if specified), or cause the acceptance test
to simply fail. No errors will be thrown. The method will process only
just that prefix of the input which is enough to fully determine
(non-)acceptance.

[list_end]

[para]

[section EXAMPLES]



[vset CATEGORY grammar_fa]


[include ../doctools2base/include/feedback.inc]







[manpage_end]

Changes to modules/grammar_fa/dexec.man.

1
2











3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::fa::dexec n 0.2]











[copyright {2004 Andreas Kupries <[email protected]>}]
[copyright {2007 Bogdan <[email protected]>}]
[moddesc   {Finite automaton operations and usage}]
[titledesc {Execute deterministic finite automatons}]
[category  {Grammars and finite automata}]
[require Tcl 8.4]
[require snit]
[require grammar::fa::dexec [opt 0.2]]
[description]
[keywords execution running grammar automaton {finite automaton}]
[keywords state {regular expression} {regular grammar}]
[keywords {regular languages} parsing transducer]
[para]

This package provides a class for executors constructed from
deterministic [term {finite automatons}] (DFA). Executors are objects
which are given a string of symbols in a piecemal fashion, perform
state transitions and report back when they enter a final state, or
find an error in the input.

For the actual creation of the DFAs the executors are based on we have
the packages [package grammar::fa] and [package grammar::fa::op].

[para]

The objects follow a push model. Symbols are pushed into the executor,
and when something important happens, i.e. error occurs, a state transition,
or a final state is entered this will be reported via the callback
specified via the option [option -command]. Note that conversion of
this into a pull model where the environment retrieves messages from
the object and the object uses a callback to ask for more symbols is
a trivial thing.


[para]

[emph {Side note}]:

The acceptor objects provided by [package grammar::fa::dacceptor]
could have been implemented on top of the executors provided here, but


>
>
>
>
>
>
>
>
>
>
>









<
<
<




















<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

43
44
45
46
47
48
49
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::fa::dexec n 0.2]
[keywords automaton]
[keywords execution]
[keywords {finite automaton}]
[keywords grammar]
[keywords parsing]
[keywords {regular expression}]
[keywords {regular grammar}]
[keywords {regular languages}]
[keywords running]
[keywords state]
[keywords transducer]
[copyright {2004 Andreas Kupries <[email protected]>}]
[copyright {2007 Bogdan <[email protected]>}]
[moddesc   {Finite automaton operations and usage}]
[titledesc {Execute deterministic finite automatons}]
[category  {Grammars and finite automata}]
[require Tcl 8.4]
[require snit]
[require grammar::fa::dexec [opt 0.2]]
[description]



[para]

This package provides a class for executors constructed from
deterministic [term {finite automatons}] (DFA). Executors are objects
which are given a string of symbols in a piecemal fashion, perform
state transitions and report back when they enter a final state, or
find an error in the input.

For the actual creation of the DFAs the executors are based on we have
the packages [package grammar::fa] and [package grammar::fa::op].

[para]

The objects follow a push model. Symbols are pushed into the executor,
and when something important happens, i.e. error occurs, a state transition,
or a final state is entered this will be reported via the callback
specified via the option [option -command]. Note that conversion of
this into a pull model where the environment retrieves messages from
the object and the object uses a callback to ask for more symbols is
a trivial thing.


[para]

[emph {Side note}]:

The acceptor objects provided by [package grammar::fa::dacceptor]
could have been implemented on top of the executors provided here, but
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
[section {EXECUTOR METHODS}]
[para]

All executors provide the following methods for their manipulation:

[list_begin definitions]


[call [arg daName] [method destroy]]

Destroys the automaton, including its storage space and associated
command.


[call [arg daName] [method put] [arg symbol]]

Takes the current state of the executor and the [arg symbol] and
performs the appropriate state transition. Reports any errors
encountered via the command callback, as well as entering a final
state of the underlying FA.

[para]

When an error is reported all further invokations of [method put] will
do nothing, until the error condition has been cleared via an
invokation of method [method reset].


[call [arg daName] [method reset]]

Unconditionally sets the executor into the start state of the
underlying FA. This also clears any error condition  [method put] may
have encountered.

[call [arg daName] [method state]]

Returns the current state of the underlying FA. This allow for 
introspection without the need to pass data from the callback command.

[list_end]


[section {EXECUTOR CALLBACK}]

The callback command [arg cmdprefix] given to an executor via the
option [option -command] will be executed by the object at the global
level, using the syntax described below. Note that [arg cmdprefix] is
not simply the name of a command, but a full command prefix. In other







<




<














<








|



<







92
93
94
95
96
97
98

99
100
101
102

103
104
105
106
107
108
109
110
111
112
113
114
115
116

117
118
119
120
121
122
123
124
125
126
127
128

129
130
131
132
133
134
135
[section {EXECUTOR METHODS}]
[para]

All executors provide the following methods for their manipulation:

[list_begin definitions]


[call [arg daName] [method destroy]]

Destroys the automaton, including its storage space and associated
command.


[call [arg daName] [method put] [arg symbol]]

Takes the current state of the executor and the [arg symbol] and
performs the appropriate state transition. Reports any errors
encountered via the command callback, as well as entering a final
state of the underlying FA.

[para]

When an error is reported all further invokations of [method put] will
do nothing, until the error condition has been cleared via an
invokation of method [method reset].


[call [arg daName] [method reset]]

Unconditionally sets the executor into the start state of the
underlying FA. This also clears any error condition  [method put] may
have encountered.

[call [arg daName] [method state]]

Returns the current state of the underlying FA. This allow for
introspection without the need to pass data from the callback command.

[list_end]


[section {EXECUTOR CALLBACK}]

The callback command [arg cmdprefix] given to an executor via the
option [option -command] will be executed by the object at the global
level, using the syntax described below. Note that [arg cmdprefix] is
not simply the name of a command, but a full command prefix. In other
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192

[call [arg cmdprefix] [method state] [arg stateid]]

The FA changed state due to a transition. [arg stateid] is the new state.

[list_end]


[para]

[section EXAMPLES]
[para]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph grammar_fa] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[manpage_end]







<



<

<
|
<
<
|
<
<
<
<
<
<
<

170
171
172
173
174
175
176

177
178
179

180

181


182







183

[call [arg cmdprefix] [method state] [arg stateid]]

The FA changed state due to a transition. [arg stateid] is the new state.

[list_end]


[para]

[section EXAMPLES]



[vset CATEGORY grammar_fa]


[include ../doctools2base/include/feedback.inc]







[manpage_end]

Changes to modules/grammar_fa/fa.man.

1
2









3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::fa n 0.4]









[copyright {2004-2009 Andreas Kupries <[email protected]>}]
[moddesc   {Finite automaton operations and usage}]
[titledesc {Create and manipulate finite automatons}]
[category  {Grammars and finite automata}]
[require Tcl 8.4]
[require snit 1.3]
[require struct::list]
[require struct::set]
[require grammar::fa::op [opt 0.2]]
[require grammar::fa     [opt 0.4]]
[description]
[keywords grammar automaton {finite automaton}]
[keywords state {regular expression} {regular grammar}]
[keywords {regular languages} parsing transducer]
[para]

This package provides a container class for
[term {finite automatons}] (Short: FA).

It allows the incremental definition of the automaton, its
manipulation and querying of the definition.


>
>
>
>
>
>
>
>
>











<
<
<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22



23
24
25
26
27
28
29
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::fa n 0.4]
[keywords automaton]
[keywords {finite automaton}]
[keywords grammar]
[keywords parsing]
[keywords {regular expression}]
[keywords {regular grammar}]
[keywords {regular languages}]
[keywords state]
[keywords transducer]
[copyright {2004-2009 Andreas Kupries <[email protected]>}]
[moddesc   {Finite automaton operations and usage}]
[titledesc {Create and manipulate finite automatons}]
[category  {Grammars and finite automata}]
[require Tcl 8.4]
[require snit 1.3]
[require struct::list]
[require struct::set]
[require grammar::fa::op [opt 0.2]]
[require grammar::fa     [opt 0.4]]
[description]



[para]

This package provides a container class for
[term {finite automatons}] (Short: FA).

It allows the incremental definition of the automaton, its
manipulation and querying of the definition.
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
hardwired into it. The output of this package is configurable to suit
a large number of different implementation languages and paradigms.

[para]

For more information about what a finite automaton is see section
[sectref {FINITE AUTOMATONS}].


[section API]

The package exports the API described here.

[list_begin definitions]








<







41
42
43
44
45
46
47

48
49
50
51
52
53
54
hardwired into it. The output of this package is configurable to suit
a large number of different implementation languages and paradigms.

[para]

For more information about what a finite automaton is see section
[sectref {FINITE AUTOMATONS}].


[section API]

The package exports the API described here.

[list_begin definitions]

75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
[section {FA METHODS}]
[para]

All automatons provide the following methods for their manipulation:

[list_begin definitions]


[call [arg faName] [method destroy]]

Destroys the automaton, including its storage space and associated
command.


[call [arg faName] [method clear]]

Clears out the definition of the automaton contained in [arg faName],
but does [emph not] destroy the object.


[call [arg faName] [method =] [arg srcFA]]

Assigns the contents of the automaton contained
in [arg srcFA] to [arg faName], overwriting any
existing definition.

This is the assignment operator for automatons. It copies the
automaton contained in the FA object [arg srcFA] over the automaton
definition in [arg faName]. The old contents of [arg faName] are
deleted by this operation.

[para]

This operation is in effect equivalent to
[para]
[example_begin]
    [arg faName] [method deserialize] [lb][arg srcFA] [method serialize][rb]
[example_end]


[call [arg faName] [method -->] [arg dstFA]]

This is the reverse assignment operator for automatons. It copies the
automation contained in the object [arg faName] over the automaton
definition in the object [arg dstFA].

The old contents of [arg dstFA] are deleted by this operation.

[para]

This operation is in effect equivalent to
[para]
[example_begin]
    [arg dstFA] [method deserialize] [lb][arg faName] [method serialize][rb]
[example_end]


[call [arg faName] [method serialize]]

This method serializes the automaton stored in [arg faName]. In other
words it returns a tcl [emph value] completely describing that
automaton.








<





<




<




















<















<







80
81
82
83
84
85
86

87
88
89
90
91

92
93
94
95

96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

116
117
118
119
120
121
122
123
124
125
126
127
128
129
130

131
132
133
134
135
136
137
[section {FA METHODS}]
[para]

All automatons provide the following methods for their manipulation:

[list_begin definitions]


[call [arg faName] [method destroy]]

Destroys the automaton, including its storage space and associated
command.


[call [arg faName] [method clear]]

Clears out the definition of the automaton contained in [arg faName],
but does [emph not] destroy the object.


[call [arg faName] [method =] [arg srcFA]]

Assigns the contents of the automaton contained
in [arg srcFA] to [arg faName], overwriting any
existing definition.

This is the assignment operator for automatons. It copies the
automaton contained in the FA object [arg srcFA] over the automaton
definition in [arg faName]. The old contents of [arg faName] are
deleted by this operation.

[para]

This operation is in effect equivalent to
[para]
[example_begin]
    [arg faName] [method deserialize] [lb][arg srcFA] [method serialize][rb]
[example_end]


[call [arg faName] [method -->] [arg dstFA]]

This is the reverse assignment operator for automatons. It copies the
automation contained in the object [arg faName] over the automaton
definition in the object [arg dstFA].

The old contents of [arg dstFA] are deleted by this operation.

[para]

This operation is in effect equivalent to
[para]
[example_begin]
    [arg dstFA] [method deserialize] [lb][arg faName] [method serialize][rb]
[example_end]


[call [arg faName] [method serialize]]

This method serializes the automaton stored in [arg faName]. In other
words it returns a tcl [emph value] completely describing that
automaton.

211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
     Stop      {1 0 {red/yellow Attention}} \\
     Attention {0 0 {green      Drive}}}
}]
[para]

A possible one, because I did not care about creation order here


[call [arg faName] [method deserialize] [arg serialization]]

This is the complement to [method serialize]. It replaces the
automaton definition in [arg faName] with the automaton described by
the [arg serialization] value. The old contents of [arg faName] are
deleted by this operation.


[call [arg faName] [method states]]

Returns the set of all states known to [arg faName].


[call [arg faName] [method state] [method add] [arg s1] [opt "[arg s2] ..."]]

Adds the states [arg s1], [arg s2], et cetera to the FA definition in
[arg faName]. The operation will fail any of the new states is already
declared.


[call [arg faName] [method state] [method delete] [arg s1] [opt "[arg s2] ..."]]

Deletes the state [arg s1], [arg s2], et cetera, and all associated
information from the FA definition in [arg faName]. The latter means
that the information about in- or outbound transitions is deleted as
well. If the deleted state was a start or final state then this
information is invalidated as well. The operation will fail if the
state [arg s] is not known to the FA.


[call [arg faName] [method state] [method exists] [arg s]]

A predicate. It tests whether the state [arg s] is known to the FA in
[arg faName].

The result is a boolean value. It will be set to [const true] if the
state [arg s] is known, and [const false] otherwise.


[call [arg faName] [method state] [method rename] [arg s] [arg snew]]

Renames the state [arg s] to [arg snew]. Fails if [arg s] is not a
known state. Also fails if [arg snew] is already known as a state.


[call [arg faName] [method startstates]]

Returns the set of states which are marked as [term start] states,
also known as [term initial] states.

See [sectref {FINITE AUTOMATONS}] for explanations what this means.


[call [arg faName] [method start] [method add] [arg s1] [opt "[arg s2] ..."]]

Mark the states [arg s1], [arg s2], et cetera in the FA [arg faName]
as [term start] (aka [term initial]).


[call [arg faName] [method start] [method remove] [arg s1] [opt "[arg s2] ..."]]

Mark the states [arg s1], [arg s2], et cetera in the FA [arg faName]
as [term {not start}] (aka [term {not accepting}]).


[call [arg faName] [method start?] [arg s]]

A predicate. It tests if the state [arg s] in the FA [arg faName] is
[term start] or not.

The result is a boolean value. It will be set to [const true] if the
state [arg s] is [term start], and [const false] otherwise.


[call [arg faName] [method start?set] [arg stateset]]

A predicate. It tests if the set of states [arg stateset] contains at
least one start state. They operation will fail if the set contains an
element which is not a known state.

The result is a boolean value. It will be set to [const true] if a
start state is present in [arg stateset], and [const false] otherwise.


[call [arg faName] [method finalstates]]

Returns the set of states which are marked as [term final] states,
also known as [term accepting] states.

See [sectref {FINITE AUTOMATONS}] for explanations what this means.


[call [arg faName] [method final] [method add] [arg s1] [opt "[arg s2] ..."]]

Mark the states [arg s1], [arg s2], et cetera in the FA [arg faName]
as [term final] (aka [term accepting]).


[call [arg faName] [method final] [method remove] [arg s1] [opt "[arg s2] ..."]]

Mark the states [arg s1], [arg s2], et cetera in the FA [arg faName]
as [term {not final}] (aka [term {not accepting}]).


[call [arg faName] [method final?] [arg s]]

A predicate. It tests if the state [arg s] in the FA [arg faName] is
[term final] or not.

The result is a boolean value. It will be set to [const true] if the
state [arg s] is [term final], and [const false] otherwise.


[call [arg faName] [method final?set] [arg stateset]]

A predicate. It tests if the set of states [arg stateset] contains at
least one final state. They operation will fail if the set contains an
element which is not a known state.

The result is a boolean value. It will be set to [const true] if a
final state is present in [arg stateset], and [const false] otherwise.


[call [arg faName] [method symbols]]

Returns the set of all symbols known to the FA [arg faName].


[call [arg faName] [method symbols@] [arg s] [opt [arg d]]]

Returns the set of all symbols for which the state [arg s] has transitions.
If the empty symbol is present then [arg s] has epsilon transitions. If two
states are specified the result is the set of symbols which have transitions
from [arg s] to [arg t]. This set may be empty if there are no transitions
between the two specified states.

[call [arg faName] [method symbols@set] [arg stateset]]

Returns the set of all symbols for which at least one state in the set
of states [arg stateset] has transitions.

In other words, the union of [lb][arg faName] [method symbols@] [var s][rb]
for all states [var s] in [arg stateset].

If the empty symbol is present then at least one state contained in
[arg stateset] has epsilon transitions.


[call [arg faName] [method symbol] [method add] [arg sym1] [opt "[arg sym2] ..."]]

Adds the symbols [arg sym1], [arg sym2], et cetera to the FA
definition in [arg faName]. The operation will fail any of the symbols
is already declared. The empty string is not allowed as a value for the symbols.


[call [arg faName] [method symbol] [method delete] [arg sym1] [opt "[arg sym2] ..."]]

Deletes the symbols [arg sym1], [arg sym2] et cetera, and all
associated information from the FA definition in [arg faName]. The
latter means that all transitions using the symbols are deleted as
well. The operation will fail if any of the symbols is not known to
the FA.


[call [arg faName] [method symbol] [method rename] [arg sym] [arg newsym]]

Renames the symbol [arg sym] to [arg newsym]. Fails if [arg sym] is
not a known symbol. Also fails if [arg newsym] is already known as a
symbol.


[call [arg faName] [method symbol] [method exists] [arg sym]]

A predicate. It tests whether the symbol [arg sym] is known to the FA
in [arg faName].

The result is a boolean value. It will be set to [const true] if the
symbol [arg sym] is known, and [const false] otherwise.



[call [arg faName] [method next ] [arg s] [arg sym] [opt "[const -->] [arg next]"]]

Define or query transition information.

[para]








<







<



<






<










<








<




<








<





<




<








<










<







<





<




<








<










<



<




















<





<









<





<








<
<







211
212
213
214
215
216
217

218
219
220
221
222
223
224

225
226
227

228
229
230
231
232
233

234
235
236
237
238
239
240
241
242
243

244
245
246
247
248
249
250
251

252
253
254
255

256
257
258
259
260
261
262
263

264
265
266
267
268

269
270
271
272

273
274
275
276
277
278
279
280

281
282
283
284
285
286
287
288
289
290

291
292
293
294
295
296
297

298
299
300
301
302

303
304
305
306

307
308
309
310
311
312
313
314

315
316
317
318
319
320
321
322
323
324

325
326
327

328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347

348
349
350
351
352

353
354
355
356
357
358
359
360
361

362
363
364
365
366

367
368
369
370
371
372
373
374


375
376
377
378
379
380
381
     Stop      {1 0 {red/yellow Attention}} \\
     Attention {0 0 {green      Drive}}}
}]
[para]

A possible one, because I did not care about creation order here


[call [arg faName] [method deserialize] [arg serialization]]

This is the complement to [method serialize]. It replaces the
automaton definition in [arg faName] with the automaton described by
the [arg serialization] value. The old contents of [arg faName] are
deleted by this operation.


[call [arg faName] [method states]]

Returns the set of all states known to [arg faName].


[call [arg faName] [method state] [method add] [arg s1] [opt "[arg s2] ..."]]

Adds the states [arg s1], [arg s2], et cetera to the FA definition in
[arg faName]. The operation will fail any of the new states is already
declared.


[call [arg faName] [method state] [method delete] [arg s1] [opt "[arg s2] ..."]]

Deletes the state [arg s1], [arg s2], et cetera, and all associated
information from the FA definition in [arg faName]. The latter means
that the information about in- or outbound transitions is deleted as
well. If the deleted state was a start or final state then this
information is invalidated as well. The operation will fail if the
state [arg s] is not known to the FA.


[call [arg faName] [method state] [method exists] [arg s]]

A predicate. It tests whether the state [arg s] is known to the FA in
[arg faName].

The result is a boolean value. It will be set to [const true] if the
state [arg s] is known, and [const false] otherwise.


[call [arg faName] [method state] [method rename] [arg s] [arg snew]]

Renames the state [arg s] to [arg snew]. Fails if [arg s] is not a
known state. Also fails if [arg snew] is already known as a state.


[call [arg faName] [method startstates]]

Returns the set of states which are marked as [term start] states,
also known as [term initial] states.

See [sectref {FINITE AUTOMATONS}] for explanations what this means.


[call [arg faName] [method start] [method add] [arg s1] [opt "[arg s2] ..."]]

Mark the states [arg s1], [arg s2], et cetera in the FA [arg faName]
as [term start] (aka [term initial]).


[call [arg faName] [method start] [method remove] [arg s1] [opt "[arg s2] ..."]]

Mark the states [arg s1], [arg s2], et cetera in the FA [arg faName]
as [term {not start}] (aka [term {not accepting}]).


[call [arg faName] [method start?] [arg s]]

A predicate. It tests if the state [arg s] in the FA [arg faName] is
[term start] or not.

The result is a boolean value. It will be set to [const true] if the
state [arg s] is [term start], and [const false] otherwise.


[call [arg faName] [method start?set] [arg stateset]]

A predicate. It tests if the set of states [arg stateset] contains at
least one start state. They operation will fail if the set contains an
element which is not a known state.

The result is a boolean value. It will be set to [const true] if a
start state is present in [arg stateset], and [const false] otherwise.


[call [arg faName] [method finalstates]]

Returns the set of states which are marked as [term final] states,
also known as [term accepting] states.

See [sectref {FINITE AUTOMATONS}] for explanations what this means.


[call [arg faName] [method final] [method add] [arg s1] [opt "[arg s2] ..."]]

Mark the states [arg s1], [arg s2], et cetera in the FA [arg faName]
as [term final] (aka [term accepting]).


[call [arg faName] [method final] [method remove] [arg s1] [opt "[arg s2] ..."]]

Mark the states [arg s1], [arg s2], et cetera in the FA [arg faName]
as [term {not final}] (aka [term {not accepting}]).


[call [arg faName] [method final?] [arg s]]

A predicate. It tests if the state [arg s] in the FA [arg faName] is
[term final] or not.

The result is a boolean value. It will be set to [const true] if the
state [arg s] is [term final], and [const false] otherwise.


[call [arg faName] [method final?set] [arg stateset]]

A predicate. It tests if the set of states [arg stateset] contains at
least one final state. They operation will fail if the set contains an
element which is not a known state.

The result is a boolean value. It will be set to [const true] if a
final state is present in [arg stateset], and [const false] otherwise.


[call [arg faName] [method symbols]]

Returns the set of all symbols known to the FA [arg faName].


[call [arg faName] [method symbols@] [arg s] [opt [arg d]]]

Returns the set of all symbols for which the state [arg s] has transitions.
If the empty symbol is present then [arg s] has epsilon transitions. If two
states are specified the result is the set of symbols which have transitions
from [arg s] to [arg t]. This set may be empty if there are no transitions
between the two specified states.

[call [arg faName] [method symbols@set] [arg stateset]]

Returns the set of all symbols for which at least one state in the set
of states [arg stateset] has transitions.

In other words, the union of [lb][arg faName] [method symbols@] [var s][rb]
for all states [var s] in [arg stateset].

If the empty symbol is present then at least one state contained in
[arg stateset] has epsilon transitions.


[call [arg faName] [method symbol] [method add] [arg sym1] [opt "[arg sym2] ..."]]

Adds the symbols [arg sym1], [arg sym2], et cetera to the FA
definition in [arg faName]. The operation will fail any of the symbols
is already declared. The empty string is not allowed as a value for the symbols.


[call [arg faName] [method symbol] [method delete] [arg sym1] [opt "[arg sym2] ..."]]

Deletes the symbols [arg sym1], [arg sym2] et cetera, and all
associated information from the FA definition in [arg faName]. The
latter means that all transitions using the symbols are deleted as
well. The operation will fail if any of the symbols is not known to
the FA.


[call [arg faName] [method symbol] [method rename] [arg sym] [arg newsym]]

Renames the symbol [arg sym] to [arg newsym]. Fails if [arg sym] is
not a known symbol. Also fails if [arg newsym] is already known as a
symbol.


[call [arg faName] [method symbol] [method exists] [arg sym]]

A predicate. It tests whether the symbol [arg sym] is known to the FA
in [arg faName].

The result is a boolean value. It will be set to [const true] if the
symbol [arg sym] is known, and [const false] otherwise.



[call [arg faName] [method next ] [arg s] [arg sym] [opt "[const -->] [arg next]"]]

Define or query transition information.

[para]

415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569

[para]

If [arg next] was not specified, then the method will return
the set of states which can be reached from [arg s] through
a single transition labeled with symbol [arg sym].


[call [arg faName] [method !next] [arg s] [arg sym] [opt "[const -->] [arg next]"]]

Remove one or more transitions from the Fa in [arg faName].
[para]

If [arg next] was specified then the single transition from the state
[arg s] to the state [arg next] labeled with the symbol [arg sym] is
removed from the FA. Otherwise [emph all] transitions originating in
state [arg s] and labeled with the symbol [arg sym] will be removed.

[para]

The operation will fail if [arg s] and/or [arg next] are not known as
states. It will also fail if a non-empty [arg sym] is not known as
symbol. The empty string is acceptable, and allows the removal of
epsilon transitions.


[call [arg faName] [method nextset] [arg stateset] [arg sym]]

Returns the set of states which can be reached by a single transition
originating in a state in the set [arg stateset] and labeled with the
symbol [arg sym].

[para]

In other words, this is the union of
[lb][arg faName] next [var s] [arg symbol][rb]
for all states [var s] in [arg stateset].


[call [arg faName] [method is] [method deterministic]]

A predicate. It tests whether the FA in [arg faName] is a
deterministic FA or not.

The result is a boolean value. It will be set to [const true] if the
FA is deterministic, and [const false] otherwise.


[call [arg faName] [method is] [method complete]]

A predicate. It tests whether the FA in [arg faName] is a complete FA
or not. A FA is complete if it has at least one transition per state
and symbol. This also means that a FA without symbols, or states is
also complete.

The result is a boolean value. It will be set to [const true] if the
FA is deterministic, and [const false] otherwise.

[para]

Note: When a FA has epsilon-transitions transitions over a symbol for
a state S can be indirect, i.e. not attached directly to S, but to a
state in the epsilon-closure of S. The symbols for such indirect
transitions count when computing completeness.


[call [arg faName] [method is] [method useful]]

A predicate. It tests whether the FA in [arg faName] is an useful FA
or not. A FA is useful if all states are [term reachable]
and [term useful].

The result is a boolean value. It will be set to [const true] if the
FA is deterministic, and [const false] otherwise.


[call [arg faName] [method is] [method epsilon-free]]

A predicate. It tests whether the FA in [arg faName] is an
epsilon-free FA or not. A FA is epsilon-free if it has no epsilon
transitions. This definition means that all deterministic FAs are
epsilon-free as well, and epsilon-freeness is a necessary
pre-condition for deterministic'ness.

The result is a boolean value. It will be set to [const true] if the
FA is deterministic, and [const false] otherwise.



[call [arg faName] [method reachable_states]]

Returns the set of states which are reachable from a start state by
one or more transitions.


[call [arg faName] [method unreachable_states]]

Returns the set of states which are not reachable from any start state
by any number of transitions. This is

[para]
[example {
	 [faName states] - [faName reachable_states]
}]


[call [arg faName] [method reachable] [arg s]]

A predicate. It tests whether the state [arg s] in the FA [arg faName]
can be reached from a start state by one or more transitions.

The result is a boolean value. It will be set to [const true] if the
state can be reached, and [const false] otherwise.


[call [arg faName] [method useful_states]]

Returns the set of states which are able to reach a final state by
one or more transitions.


[call [arg faName] [method unuseful_states]]

Returns the set of states which are not able to reach a final state by
any number of transitions. This is

[para]
[example {
	 [faName states] - [faName useful_states]
}]


[call [arg faName] [method useful] [arg s]]

A predicate. It tests whether the state [arg s] in the FA [arg faName]
is able to reach a final state by one or more transitions.

The result is a boolean value. It will be set to [const true] if the
state is useful, and [const false] otherwise.


[call [arg faName] [method epsilon_closure] [arg s]]

Returns the set of states which are reachable from the state [arg s]
in the FA [arg faName] by one or more epsilon transitions, i.e
transitions over the empty symbol, transitions which do not consume
input. This is called the [term {epsilon closure}] of [arg s].


[call [arg faName] [method reverse]]
[call [arg faName] [method complete]]
[call [arg faName] [method remove_eps]]
[call [arg faName] [method trim] [opt [arg what]]]
[call [arg faName] [method determinize] [opt [arg mapvar]]]
[call [arg faName] [method minimize] [opt [arg mapvar]]]







<

















<












<







<


















<








<












<
<




<











<








<




<











<








<






<







391
392
393
394
395
396
397

398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414

415
416
417
418
419
420
421
422
423
424
425
426

427
428
429
430
431
432
433

434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451

452
453
454
455
456
457
458
459

460
461
462
463
464
465
466
467
468
469
470
471


472
473
474
475

476
477
478
479
480
481
482
483
484
485
486

487
488
489
490
491
492
493
494

495
496
497
498

499
500
501
502
503
504
505
506
507
508
509

510
511
512
513
514
515
516
517

518
519
520
521
522
523

524
525
526
527
528
529
530

[para]

If [arg next] was not specified, then the method will return
the set of states which can be reached from [arg s] through
a single transition labeled with symbol [arg sym].


[call [arg faName] [method !next] [arg s] [arg sym] [opt "[const -->] [arg next]"]]

Remove one or more transitions from the Fa in [arg faName].
[para]

If [arg next] was specified then the single transition from the state
[arg s] to the state [arg next] labeled with the symbol [arg sym] is
removed from the FA. Otherwise [emph all] transitions originating in
state [arg s] and labeled with the symbol [arg sym] will be removed.

[para]

The operation will fail if [arg s] and/or [arg next] are not known as
states. It will also fail if a non-empty [arg sym] is not known as
symbol. The empty string is acceptable, and allows the removal of
epsilon transitions.


[call [arg faName] [method nextset] [arg stateset] [arg sym]]

Returns the set of states which can be reached by a single transition
originating in a state in the set [arg stateset] and labeled with the
symbol [arg sym].

[para]

In other words, this is the union of
[lb][arg faName] next [var s] [arg symbol][rb]
for all states [var s] in [arg stateset].


[call [arg faName] [method is] [method deterministic]]

A predicate. It tests whether the FA in [arg faName] is a
deterministic FA or not.

The result is a boolean value. It will be set to [const true] if the
FA is deterministic, and [const false] otherwise.


[call [arg faName] [method is] [method complete]]

A predicate. It tests whether the FA in [arg faName] is a complete FA
or not. A FA is complete if it has at least one transition per state
and symbol. This also means that a FA without symbols, or states is
also complete.

The result is a boolean value. It will be set to [const true] if the
FA is deterministic, and [const false] otherwise.

[para]

Note: When a FA has epsilon-transitions transitions over a symbol for
a state S can be indirect, i.e. not attached directly to S, but to a
state in the epsilon-closure of S. The symbols for such indirect
transitions count when computing completeness.


[call [arg faName] [method is] [method useful]]

A predicate. It tests whether the FA in [arg faName] is an useful FA
or not. A FA is useful if all states are [term reachable]
and [term useful].

The result is a boolean value. It will be set to [const true] if the
FA is deterministic, and [const false] otherwise.


[call [arg faName] [method is] [method epsilon-free]]

A predicate. It tests whether the FA in [arg faName] is an
epsilon-free FA or not. A FA is epsilon-free if it has no epsilon
transitions. This definition means that all deterministic FAs are
epsilon-free as well, and epsilon-freeness is a necessary
pre-condition for deterministic'ness.

The result is a boolean value. It will be set to [const true] if the
FA is deterministic, and [const false] otherwise.



[call [arg faName] [method reachable_states]]

Returns the set of states which are reachable from a start state by
one or more transitions.


[call [arg faName] [method unreachable_states]]

Returns the set of states which are not reachable from any start state
by any number of transitions. This is

[para]
[example {
	 [faName states] - [faName reachable_states]
}]


[call [arg faName] [method reachable] [arg s]]

A predicate. It tests whether the state [arg s] in the FA [arg faName]
can be reached from a start state by one or more transitions.

The result is a boolean value. It will be set to [const true] if the
state can be reached, and [const false] otherwise.


[call [arg faName] [method useful_states]]

Returns the set of states which are able to reach a final state by
one or more transitions.


[call [arg faName] [method unuseful_states]]

Returns the set of states which are not able to reach a final state by
any number of transitions. This is

[para]
[example {
	 [faName states] - [faName useful_states]
}]


[call [arg faName] [method useful] [arg s]]

A predicate. It tests whether the state [arg s] in the FA [arg faName]
is able to reach a final state by one or more transitions.

The result is a boolean value. It will be set to [const true] if the
state is useful, and [const false] otherwise.


[call [arg faName] [method epsilon_closure] [arg s]]

Returns the set of states which are reachable from the state [arg s]
in the FA [arg faName] by one or more epsilon transitions, i.e
transitions over the empty symbol, transitions which do not consume
input. This is called the [term {epsilon closure}] of [arg s].


[call [arg faName] [method reverse]]
[call [arg faName] [method complete]]
[call [arg faName] [method remove_eps]]
[call [arg faName] [method trim] [opt [arg what]]]
[call [arg faName] [method determinize] [opt [arg mapvar]]]
[call [arg faName] [method minimize] [opt [arg mapvar]]]
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601

[call [arg faName] [method fromRegex] [arg regex] [opt [arg over]]]

These methods provide more complex operations on the FA.  Please see
the same-named commands in the package [package grammar::fa::op] for
descriptions of what they do.



[list_end]

[para]

[section EXAMPLES]
[para]



[section {FINITE AUTOMATONS}]
[para]

For the mathematically inclined, a FA is a 5-tuple (S,Sy,St,Fi,T) where

[list_begin itemized]







<
<






<
<







539
540
541
542
543
544
545


546
547
548
549
550
551


552
553
554
555
556
557
558

[call [arg faName] [method fromRegex] [arg regex] [opt [arg over]]]

These methods provide more complex operations on the FA.  Please see
the same-named commands in the package [package grammar::fa::op] for
descriptions of what they do.



[list_end]

[para]

[section EXAMPLES]
[para]



[section {FINITE AUTOMATONS}]
[para]

For the mathematically inclined, a FA is a 5-tuple (S,Sy,St,Fi,T) where

[list_begin itemized]
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
symbol" can also be "executing some code".

[para]

Transducers are not handled by this package. They will get their own
package in the future.

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph grammar_fa] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<

643
644
645
646
647
648
649

650


651







652
symbol" can also be "executing some code".

[para]

Transducers are not handled by this package. They will get their own
package in the future.


[vset CATEGORY grammar_fa]


[include ../doctools2base/include/feedback.inc]







[manpage_end]

Changes to modules/grammar_fa/faop.man.

1
2









3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::fa::op n 0.4]









[copyright {2004-2008 Andreas Kupries <[email protected]>}]
[moddesc   {Finite automaton operations and usage}]
[titledesc {Operations on finite automatons}]
[category  {Grammars and finite automata}]
[require Tcl 8.4]
[require snit]
[require struct::list]
[require struct::set]
[require grammar::fa::op [opt 0.4.1]]
[description]
[keywords grammar automaton {finite automaton}]
[keywords state {regular expression} {regular grammar}]
[keywords {regular languages} parsing transducer]
[para]

This package provides a number of complex operations on finite
automatons (Short: FA),

as provided by the package [package grammar::fa].



>
>
>
>
>
>
>
>
>










<
<
<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21



22
23
24
25
26
27
28
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::fa::op n 0.4]
[keywords automaton]
[keywords {finite automaton}]
[keywords grammar]
[keywords parsing]
[keywords {regular expression}]
[keywords {regular grammar}]
[keywords {regular languages}]
[keywords state]
[keywords transducer]
[copyright {2004-2008 Andreas Kupries <[email protected]>}]
[moddesc   {Finite automaton operations and usage}]
[titledesc {Operations on finite automatons}]
[category  {Grammars and finite automata}]
[require Tcl 8.4]
[require snit]
[require struct::list]
[require struct::set]
[require grammar::fa::op [opt 0.4.1]]
[description]



[para]

This package provides a number of complex operations on finite
automatons (Short: FA),

as provided by the package [package grammar::fa].

65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85

[para]

Any container class using this package for complex operations should set
its own class command as the constructor. See package [package grammar::fa]
for an example.


[call [cmd ::grammar::fa::op::reverse] [arg fa]]

Reverses the [arg fa]. This is done by reversing the direction of all
transitions and swapping the sets of [term start] and [term final]
states. The language of [arg fa] changes unpredictably.


[call [cmd ::grammar::fa::op::complete] [arg fa] [opt [arg sink]]]

Completes the [arg fa] [term complete], but nothing is done if the
[arg fa] is already [term complete]. This implies that only the first
in a series of multiple consecutive complete operations on [arg fa]
will perform anything. The remainder will be null operations.







<





<







71
72
73
74
75
76
77

78
79
80
81
82

83
84
85
86
87
88
89

[para]

Any container class using this package for complex operations should set
its own class command as the constructor. See package [package grammar::fa]
for an example.


[call [cmd ::grammar::fa::op::reverse] [arg fa]]

Reverses the [arg fa]. This is done by reversing the direction of all
transitions and swapping the sets of [term start] and [term final]
states. The language of [arg fa] changes unpredictably.


[call [cmd ::grammar::fa::op::complete] [arg fa] [opt [arg sink]]]

Completes the [arg fa] [term complete], but nothing is done if the
[arg fa] is already [term complete]. This implies that only the first
in a series of multiple consecutive complete operations on [arg fa]
will perform anything. The remainder will be null operations.
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
[para]

Note that the sink state is [term {not useful}] by definition.  In
other words, while the FA becomes complete, it is also
[term {not useful}] in the strict sense as it has a state from which
no final state can be reached.



[call [cmd ::grammar::fa::op::remove_eps] [arg fa]]

Removes all epsilon-transitions from the [arg fa] in such a manner the
the language of [arg fa] is unchanged. However nothing is done if the
[arg fa] is already [term epsilon-free].

This implies that only the first in a series of multiple consecutive
complete operations on [arg fa] will perform anything. The remainder
will be null operations.

[para]

[emph Note:] This operation may cause states to become unreachable or
not useful. These states are not removed by this operation.

Use [cmd ::grammar::fa::op::trim] for that instead.


[call [cmd ::grammar::fa::op::trim] [arg fa] [opt [arg what]]]

Removes unwanted baggage from [arg fa].

The legal values for [arg what] are listed below. The command defaults
to [const !reachable|!useful] if no specific argument was given.







<
<
















<







117
118
119
120
121
122
123


124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139

140
141
142
143
144
145
146
[para]

Note that the sink state is [term {not useful}] by definition.  In
other words, while the FA becomes complete, it is also
[term {not useful}] in the strict sense as it has a state from which
no final state can be reached.



[call [cmd ::grammar::fa::op::remove_eps] [arg fa]]

Removes all epsilon-transitions from the [arg fa] in such a manner the
the language of [arg fa] is unchanged. However nothing is done if the
[arg fa] is already [term epsilon-free].

This implies that only the first in a series of multiple consecutive
complete operations on [arg fa] will perform anything. The remainder
will be null operations.

[para]

[emph Note:] This operation may cause states to become unreachable or
not useful. These states are not removed by this operation.

Use [cmd ::grammar::fa::op::trim] for that instead.


[call [cmd ::grammar::fa::op::trim] [arg fa] [opt [arg what]]]

Removes unwanted baggage from [arg fa].

The legal values for [arg what] are listed below. The command defaults
to [const !reachable|!useful] if no specific argument was given.
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
[def [const !reachable|!useful]]
[def [const !(reachable&useful)]]
Removes all states which are not reachable from a start state or are
unable to reach a final state.

[list_end]
[para]


[call [cmd ::grammar::fa::op::determinize] [arg fa] [opt [arg mapvar]]]

Makes the [arg fa] deterministic without changing the language
accepted by the [arg fa]. However nothing is done if the [arg fa] is
already [term deterministic]. This implies that only the first in a
series of multiple consecutive complete operations on [arg fa] will







<







160
161
162
163
164
165
166

167
168
169
170
171
172
173
[def [const !reachable|!useful]]
[def [const !(reachable&useful)]]
Removes all states which are not reachable from a start state or are
unable to reach a final state.

[list_end]
[para]


[call [cmd ::grammar::fa::op::determinize] [arg fa] [opt [arg mapvar]]]

Makes the [arg fa] deterministic without changing the language
accepted by the [arg fa]. However nothing is done if the [arg fa] is
already [term deterministic]. This implies that only the first in a
series of multiple consecutive complete operations on [arg fa] will
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
will be the only condition preventing the generated result from being
[term deterministic].

It should also be noted that in this case the possibilities for
trimming states from the FA are also severely reduced as we cannot
declare states unreachable.



[call [cmd ::grammar::fa::op::minimize] [arg fa] [opt [arg mapvar]]]

Creates a FA which accepts the same language as [arg fa], but has a
minimal number of states. Uses Brzozowski's method to accomplish this.

[para]








<
<







198
199
200
201
202
203
204


205
206
207
208
209
210
211
will be the only condition preventing the generated result from being
[term deterministic].

It should also be noted that in this case the possibilities for
trimming states from the FA are also severely reduced as we cannot
declare states unreachable.



[call [cmd ::grammar::fa::op::minimize] [arg fa] [opt [arg mapvar]]]

Creates a FA which accepts the same language as [arg fa], but has a
minimal number of states. Uses Brzozowski's method to accomplish this.

[para]

231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370

It should also be noted that in this case the possibilities for
trimming states from the FA are also severely reduced as we cannot
declare states unreachable.

[list_end]


[emph {Language operations}]

All operations in this section require that all input FAs have at
least one start and at least one final state. Otherwise the language of
the FAs will not be defined, making the operation senseless (as it
operates on the languages of the FAs in a defined manner).


[list_begin definitions]

[call [cmd ::grammar::fa::op::complement] [arg fa]]

Complements [arg fa]. This is possible if and only if [arg fa] is
[term complete] and [term deterministic]. The resulting FA accepts the
complementary language of [arg fa]. In other words, all inputs not
accepted by the input are accepted by the result, and vice versa.

[para]

The result will have all states and transitions of the input, and
different final states.


[call [cmd ::grammar::fa::op::kleene] [arg fa]]

Applies Kleene's closure to [arg fa].

The resulting FA accepts all strings [var S] for which we can find a
natural number [var n] (0 inclusive) and strings [var A1] ... [var An]
in the language of [arg fa] such that [var S] is the concatenation of
[var A1] ... [var An].

In other words, the language of the result is the infinite union over
finite length concatenations over the language of [arg fa].

[para]

The result will have all states and transitions of the input, and new
start and final states.


[call [cmd ::grammar::fa::op::optional] [arg fa]]

Makes the [arg fa] optional. In other words it computes the FA which
accepts the language of [arg fa] and the empty the word (epsilon) as
well.

[para]

The result will have all states and transitions of the input, and new
start and final states.


[call [cmd ::grammar::fa::op::union] [arg fa] [arg fb] [opt [arg mapvar]]]

Combines the FAs [arg fa] and [arg fb] such that the resulting FA
accepts the union of the languages of the two FAs.

[para]

The result will have all states and transitions of the two input FAs,
and new start and final states. All states of [arg fb] which exist in
[arg fa] as well will be renamed, and the [arg mapvar] will contain a
mapping from the old states of [arg fb] to the new ones, if present.

[para]

It should be noted that the result will be non-deterministic, even if
the inputs are deterministic.


[call [cmd ::grammar::fa::op::intersect] [arg fa] [arg fb] [opt [arg mapvar]]]

Combines the FAs [arg fa] and [arg fb] such that the resulting FA
accepts the intersection of the languages of the two FAs. In other
words, the result will accept a word if and only if the word is
accepted by both [arg fa] and [arg fb]. The result will be useful, but
not necessarily deterministic or minimal.

[para]

The command will store a dictionary describing the relationship
between the new states of the resulting fa and the pairs of states of
the input FAs in [arg mapvar], if it has been specified. Keys of the
dictionary are the handles for the states of the resulting fa, values
are pairs of states from the input FAs. Pairs are represented by
lists. The first element in each pair will be a state in [arg fa], the
second element will be drawn from [arg fb].


[call [cmd ::grammar::fa::op::difference] [arg fa] [arg fb] [opt [arg mapvar]]]

Combines the FAs [arg fa] and [arg fb] such that the resulting FA
accepts the difference of the languages of the two FAs. In other
words, the result will accept a word if and only if the word is
accepted by [arg fa], but not by [arg fb]. This can also be expressed
as the intersection of [arg fa] with the complement of [arg fb]. The
result will be useful, but not necessarily deterministic or minimal.

[para]

The command will store a dictionary describing the relationship
between the new states of the resulting fa and the pairs of states of
the input FAs in [arg mapvar], if it has been specified. Keys of the
dictionary are the handles for the states of the resulting fa, values
are pairs of states from the input FAs. Pairs are represented by
lists. The first element in each pair will be a state in [arg fa], the
second element will be drawn from [arg fb].




[call [cmd ::grammar::fa::op::concatenate] [arg fa] [arg fb] [opt [arg mapvar]]]

Combines the FAs [arg fa] and [arg fb] such that the resulting FA
accepts the cross-product of the languages of the two FAs. I.e. a word
W will be accepted by the result if there are two words A and B
accepted by [arg fa], and [arg fb] resp. and W is the concatenation of
A and B.

[para]

The result FA will be non-deterministic.



[call [cmd ::grammar::fa::op::fromRegex] [arg fa] [arg regex] [opt [arg over]]]

Generates a non-deterministic FA which accepts the same language as
the regular expression [arg regex]. If the [arg over] is specified it
is treated as the set of symbols the regular expression and the
automaton are defined over. The command will compute the set from the







<






<














<


















<










<


















<

















<




















<
<
<











<
<







229
230
231
232
233
234
235

236
237
238
239
240
241

242
243
244
245
246
247
248
249
250
251
252
253
254
255

256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273

274
275
276
277
278
279
280
281
282
283

284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301

302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318

319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338



339
340
341
342
343
344
345
346
347
348
349


350
351
352
353
354
355
356

It should also be noted that in this case the possibilities for
trimming states from the FA are also severely reduced as we cannot
declare states unreachable.

[list_end]


[emph {Language operations}]

All operations in this section require that all input FAs have at
least one start and at least one final state. Otherwise the language of
the FAs will not be defined, making the operation senseless (as it
operates on the languages of the FAs in a defined manner).


[list_begin definitions]

[call [cmd ::grammar::fa::op::complement] [arg fa]]

Complements [arg fa]. This is possible if and only if [arg fa] is
[term complete] and [term deterministic]. The resulting FA accepts the
complementary language of [arg fa]. In other words, all inputs not
accepted by the input are accepted by the result, and vice versa.

[para]

The result will have all states and transitions of the input, and
different final states.


[call [cmd ::grammar::fa::op::kleene] [arg fa]]

Applies Kleene's closure to [arg fa].

The resulting FA accepts all strings [var S] for which we can find a
natural number [var n] (0 inclusive) and strings [var A1] ... [var An]
in the language of [arg fa] such that [var S] is the concatenation of
[var A1] ... [var An].

In other words, the language of the result is the infinite union over
finite length concatenations over the language of [arg fa].

[para]

The result will have all states and transitions of the input, and new
start and final states.


[call [cmd ::grammar::fa::op::optional] [arg fa]]

Makes the [arg fa] optional. In other words it computes the FA which
accepts the language of [arg fa] and the empty the word (epsilon) as
well.

[para]

The result will have all states and transitions of the input, and new
start and final states.


[call [cmd ::grammar::fa::op::union] [arg fa] [arg fb] [opt [arg mapvar]]]

Combines the FAs [arg fa] and [arg fb] such that the resulting FA
accepts the union of the languages of the two FAs.

[para]

The result will have all states and transitions of the two input FAs,
and new start and final states. All states of [arg fb] which exist in
[arg fa] as well will be renamed, and the [arg mapvar] will contain a
mapping from the old states of [arg fb] to the new ones, if present.

[para]

It should be noted that the result will be non-deterministic, even if
the inputs are deterministic.


[call [cmd ::grammar::fa::op::intersect] [arg fa] [arg fb] [opt [arg mapvar]]]

Combines the FAs [arg fa] and [arg fb] such that the resulting FA
accepts the intersection of the languages of the two FAs. In other
words, the result will accept a word if and only if the word is
accepted by both [arg fa] and [arg fb]. The result will be useful, but
not necessarily deterministic or minimal.

[para]

The command will store a dictionary describing the relationship
between the new states of the resulting fa and the pairs of states of
the input FAs in [arg mapvar], if it has been specified. Keys of the
dictionary are the handles for the states of the resulting fa, values
are pairs of states from the input FAs. Pairs are represented by
lists. The first element in each pair will be a state in [arg fa], the
second element will be drawn from [arg fb].


[call [cmd ::grammar::fa::op::difference] [arg fa] [arg fb] [opt [arg mapvar]]]

Combines the FAs [arg fa] and [arg fb] such that the resulting FA
accepts the difference of the languages of the two FAs. In other
words, the result will accept a word if and only if the word is
accepted by [arg fa], but not by [arg fb]. This can also be expressed
as the intersection of [arg fa] with the complement of [arg fb]. The
result will be useful, but not necessarily deterministic or minimal.

[para]

The command will store a dictionary describing the relationship
between the new states of the resulting fa and the pairs of states of
the input FAs in [arg mapvar], if it has been specified. Keys of the
dictionary are the handles for the states of the resulting fa, values
are pairs of states from the input FAs. Pairs are represented by
lists. The first element in each pair will be a state in [arg fa], the
second element will be drawn from [arg fb].




[call [cmd ::grammar::fa::op::concatenate] [arg fa] [arg fb] [opt [arg mapvar]]]

Combines the FAs [arg fa] and [arg fb] such that the resulting FA
accepts the cross-product of the languages of the two FAs. I.e. a word
W will be accepted by the result if there are two words A and B
accepted by [arg fa], and [arg fb] resp. and W is the concatenation of
A and B.

[para]

The result FA will be non-deterministic.



[call [cmd ::grammar::fa::op::fromRegex] [arg fa] [arg regex] [opt [arg over]]]

Generates a non-deterministic FA which accepts the same language as
the regular expression [arg regex]. If the [arg over] is specified it
is treated as the set of symbols the regular expression and the
automaton are defined over. The command will compute the set from the
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
[def "{! A}"]

Complement operator. Accepts any word not accepted by the regular
expression [var A]. Note that the complement depends on the set of
symbol the result should run over. See the discussion of the argument
[arg over] before.


[list_end]


[call [cmd ::grammar::fa::op::toRegexp] [arg fa]]

This command generates and returns a regular expression which accepts
the same language as the finite automaton [arg fa]. The regular
expression is in the format as described above, for
[cmd ::grammar::fa::op::fromRegex].

[call [cmd ::grammar::fa::op::toRegexp2] [arg fa]]

This command has the same functionality as [cmd ::grammar::fa::op::toRegexp],
but uses a different algorithm to simplify the generated regular expressions.


[call [cmd ::grammar::fa::op::toTclRegexp] [arg regexp] [arg symdict]]

This command generates and returns a regular expression in Tcl syntax for the
regular expression [arg regexp], if that is possible. [arg regexp] is in the
same format as expected by [cmd ::grammar::fa::op::fromRegex].

[para]

The command will fail and throw an error if [arg regexp] contains
complementation and intersection operations.

[para]

The argument [arg symdict] is a dictionary mapping symbol names to 
pairs of [term {syntactic type}] and Tcl-regexp. If a symbol 
occurring in the [arg regexp] is not listed in this dictionary then 
single-character symbols are considered to designate themselves 
whereas multiple-character symbols are considered to be a character 
class name.


[call [cmd ::grammar::fa::op::simplifyRegexp] [arg regexp]]

This command simplifies a regular expression by applying the following
algorithm first to the main expression and then recursively to all
sub-expressions:

[list_begin enum]
[enum] Convert the expression into a finite automaton.
[enum] Minimize the automaton.
[enum] Convert the automaton back to a regular expression.
[enum] Choose the shorter of original expression and expression from
the previous step.
[list_end]

[list_end]

[para]

[section EXAMPLES]
[para]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph grammar_fa] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[manpage_end]







<

<












<














|
|
|
|
|

<




















<

<
|
<
<
|
<
<
<
<
<
<
<

417
418
419
420
421
422
423

424

425
426
427
428
429
430
431
432
433
434
435
436

437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456

457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476

477

478


479







480
[def "{! A}"]

Complement operator. Accepts any word not accepted by the regular
expression [var A]. Note that the complement depends on the set of
symbol the result should run over. See the discussion of the argument
[arg over] before.


[list_end]


[call [cmd ::grammar::fa::op::toRegexp] [arg fa]]

This command generates and returns a regular expression which accepts
the same language as the finite automaton [arg fa]. The regular
expression is in the format as described above, for
[cmd ::grammar::fa::op::fromRegex].

[call [cmd ::grammar::fa::op::toRegexp2] [arg fa]]

This command has the same functionality as [cmd ::grammar::fa::op::toRegexp],
but uses a different algorithm to simplify the generated regular expressions.


[call [cmd ::grammar::fa::op::toTclRegexp] [arg regexp] [arg symdict]]

This command generates and returns a regular expression in Tcl syntax for the
regular expression [arg regexp], if that is possible. [arg regexp] is in the
same format as expected by [cmd ::grammar::fa::op::fromRegex].

[para]

The command will fail and throw an error if [arg regexp] contains
complementation and intersection operations.

[para]

The argument [arg symdict] is a dictionary mapping symbol names to
pairs of [term {syntactic type}] and Tcl-regexp. If a symbol
occurring in the [arg regexp] is not listed in this dictionary then
single-character symbols are considered to designate themselves
whereas multiple-character symbols are considered to be a character
class name.


[call [cmd ::grammar::fa::op::simplifyRegexp] [arg regexp]]

This command simplifies a regular expression by applying the following
algorithm first to the main expression and then recursively to all
sub-expressions:

[list_begin enum]
[enum] Convert the expression into a finite automaton.
[enum] Minimize the automaton.
[enum] Convert the automaton back to a regular expression.
[enum] Choose the shorter of original expression and expression from
the previous step.
[list_end]

[list_end]

[para]

[section EXAMPLES]



[vset CATEGORY grammar_fa]


[include ../doctools2base/include/feedback.inc]







[manpage_end]

Changes to modules/grammar_me/gasm.man.

1
2






3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::me::cpu::gasm n 0.1]






[copyright {2005 Andreas Kupries <[email protected]>}]
[moddesc   {Grammar operations and usage}]
[titledesc {ME assembler}]
[category  {Grammars and finite automata}]
[require grammar::me::cpu::gasm [opt 0.1]]
[description]
[keywords {virtual machine}]
[keywords parsing grammar assembler graph tree]

This package provides a simple in-memory assembler. Its origin is that
of a support package for use by packages converting PEG and other
grammars into a corresponding matcher based on the ME virtual machine,
like [package page::compiler::peg::mecpu]. Despite that it is actually
mostly agnostic regarding the instructions, users can choose any
instruction set they like.


>
>
>
>
>
>






<
<







1
2
3
4
5
6
7
8
9
10
11
12
13
14


15
16
17
18
19
20
21
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::me::cpu::gasm n 0.1]
[keywords assembler]
[keywords grammar]
[keywords graph]
[keywords parsing]
[keywords tree]
[keywords {virtual machine}]
[copyright {2005 Andreas Kupries <[email protected]>}]
[moddesc   {Grammar operations and usage}]
[titledesc {ME assembler}]
[category  {Grammars and finite automata}]
[require grammar::me::cpu::gasm [opt 0.1]]
[description]



This package provides a simple in-memory assembler. Its origin is that
of a support package for use by packages converting PEG and other
grammars into a corresponding matcher based on the ME virtual machine,
like [package page::compiler::peg::mecpu]. Despite that it is actually
mostly agnostic regarding the instructions, users can choose any
instruction set they like.
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
[def [const gas::exit]]       Written for all modes but [const okfail].
[def [const gas::exit::ok]]   Written for mode [const okfail].
[def [const gas::exit::fail]] Written for mode [const okfail].
[list_end]

[list_end]


[section API]

[list_begin definitions]

[call [cmd ::grammar::me::cpu::gasm::begin] [arg g] [arg n] [opt [arg mode]] [opt [arg note]]]

This command starts the assembly of an instruction sequence, and







<







150
151
152
153
154
155
156

157
158
159
160
161
162
163
[def [const gas::exit]]       Written for all modes but [const okfail].
[def [const gas::exit::ok]]   Written for mode [const okfail].
[def [const gas::exit::fail]] Written for mode [const okfail].
[list_end]

[list_end]


[section API]

[list_begin definitions]

[call [cmd ::grammar::me::cpu::gasm::begin] [arg g] [arg n] [opt [arg mode]] [opt [arg note]]]

This command starts the assembly of an instruction sequence, and
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
After the initialization is done the "entry" instruction will be the
[term anchor], and the condition code will be set to [const always].

[para]

The command returns the empy string as its result.


[call [cmd ::grammar::me::cpu::gasm::done] [const -->] [arg t]]

This command finalizes the creation of an instruction sequence and
then clears the state of the assembler.
[emph NOTE] that this [emph {does not}] delete any of the created
instructions. They can be made available to future begin/done cycles.
Further assembly will be possible only after reinitialization of the







<







197
198
199
200
201
202
203

204
205
206
207
208
209
210
After the initialization is done the "entry" instruction will be the
[term anchor], and the condition code will be set to [const always].

[para]

The command returns the empy string as its result.


[call [cmd ::grammar::me::cpu::gasm::done] [const -->] [arg t]]

This command finalizes the creation of an instruction sequence and
then clears the state of the assembler.
[emph NOTE] that this [emph {does not}] delete any of the created
instructions. They can be made available to future begin/done cycles.
Further assembly will be possible only after reinitialization of the
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285

[list_end]

[para]

The command returns the empy string as its result.


[call [cmd ::grammar::me::cpu::gasm::state]]

This command returns the current state of the assembler. Its format is
not documented and considered to be internal to the package.


[call [cmd ::grammar::me::cpu::gasm::state!] [arg s]]

This command takes a serialized assembler state [arg s] as returned by
[cmd ::grammar::me::cpu::gasm::state] and makes it the current state
of the assembler.

[para]

[emph Note] that this may overwrite label definitions, however all
non-conflicting label definitions in the state before are not touched
and merged with [arg s].

[para]

The command returns the empty string as its result.


[call [cmd ::grammar::me::cpu::gasm::lift] [arg t] [arg dst] [const =] [arg src]]

This command operates on the tree [arg t]. It copies the contents of
the attributes [const gas::entry], [const gas::exit::ok] and
[const gas::exit::fail] from the node [arg src] to the node [arg dst].

It returns the empty string as its result.


[call [cmd ::grammar::me::cpu::gasm::Inline] [arg t] [arg node] [arg label]]

This command links an instruction sequence created by an earlier
begin/done pair into the current instruction sequence.

[para]







<




<

















<







<







242
243
244
245
246
247
248

249
250
251
252

253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269

270
271
272
273
274
275
276

277
278
279
280
281
282
283

[list_end]

[para]

The command returns the empy string as its result.


[call [cmd ::grammar::me::cpu::gasm::state]]

This command returns the current state of the assembler. Its format is
not documented and considered to be internal to the package.


[call [cmd ::grammar::me::cpu::gasm::state!] [arg s]]

This command takes a serialized assembler state [arg s] as returned by
[cmd ::grammar::me::cpu::gasm::state] and makes it the current state
of the assembler.

[para]

[emph Note] that this may overwrite label definitions, however all
non-conflicting label definitions in the state before are not touched
and merged with [arg s].

[para]

The command returns the empty string as its result.


[call [cmd ::grammar::me::cpu::gasm::lift] [arg t] [arg dst] [const =] [arg src]]

This command operates on the tree [arg t]. It copies the contents of
the attributes [const gas::entry], [const gas::exit::ok] and
[const gas::exit::fail] from the node [arg src] to the node [arg dst].

It returns the empty string as its result.


[call [cmd ::grammar::me::cpu::gasm::Inline] [arg t] [arg node] [arg label]]

This command links an instruction sequence created by an earlier
begin/done pair into the current instruction sequence.

[para]
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357

[enum] Makes the node labeled [arg label]/exit/ok the new [term anchor].

[list_end]

The command returns the empty string as its result.


[call [cmd ::grammar::me::cpu::gasm::Cmd] [arg cmd] [opt [arg arg]...]]

This is the basic command to add instructions to the graph.

It creates a new instruction of type [arg cmd] with the given
arguments [arg arg]...

If the [term anchor] was defined it will also create an arc from the
[term anchor] to the new instruction using the current condition code.

After the call the new instruction will be the [term anchor] and the
current condition code will be set to [const always].

[para]

The command returns the empty string as its result.


[call [cmd ::grammar::me::cpu::gasm::Bra]]

This is a convenience command to create a .BRA pseudo-instruction. It
uses [cmd ::grammar::me::cpu::gasm::Cmd] to actually create the
instruction and inherits its behaviour.


[call [cmd ::grammar::me::cpu::gasm::Nop] [arg text]]

This is a convenience command to create a .NOP pseudo-instruction. It
uses [cmd ::grammar::me::cpu::gasm::Cmd] to actually create the
instruction and inherits its behaviour.

The [arg text] will be saved as the first and only argument of the new
instruction.


[call [cmd ::grammar::me::cpu::gasm::Note] [arg text]]

This is a convenience command to create a .C pseudo-instruction,
i.e. a comment. It uses [cmd ::grammar::me::cpu::gasm::Cmd] to
actually create the instruction and inherits its behaviour.

The [arg text] will be saved as the first and only argument of the new
instruction.


[call [cmd ::grammar::me::cpu::gasm::Jmp] [arg label]]

This command creates an arc from the [term anchor] to the instruction
labeled with [arg label], and tags with the the current condition
code.








<

















<





<










<








<







297
298
299
300
301
302
303

304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320

321
322
323
324
325

326
327
328
329
330
331
332
333
334
335

336
337
338
339
340
341
342
343

344
345
346
347
348
349
350

[enum] Makes the node labeled [arg label]/exit/ok the new [term anchor].

[list_end]

The command returns the empty string as its result.


[call [cmd ::grammar::me::cpu::gasm::Cmd] [arg cmd] [opt [arg arg]...]]

This is the basic command to add instructions to the graph.

It creates a new instruction of type [arg cmd] with the given
arguments [arg arg]...

If the [term anchor] was defined it will also create an arc from the
[term anchor] to the new instruction using the current condition code.

After the call the new instruction will be the [term anchor] and the
current condition code will be set to [const always].

[para]

The command returns the empty string as its result.


[call [cmd ::grammar::me::cpu::gasm::Bra]]

This is a convenience command to create a .BRA pseudo-instruction. It
uses [cmd ::grammar::me::cpu::gasm::Cmd] to actually create the
instruction and inherits its behaviour.


[call [cmd ::grammar::me::cpu::gasm::Nop] [arg text]]

This is a convenience command to create a .NOP pseudo-instruction. It
uses [cmd ::grammar::me::cpu::gasm::Cmd] to actually create the
instruction and inherits its behaviour.

The [arg text] will be saved as the first and only argument of the new
instruction.


[call [cmd ::grammar::me::cpu::gasm::Note] [arg text]]

This is a convenience command to create a .C pseudo-instruction,
i.e. a comment. It uses [cmd ::grammar::me::cpu::gasm::Cmd] to
actually create the instruction and inherits its behaviour.

The [arg text] will be saved as the first and only argument of the new
instruction.


[call [cmd ::grammar::me::cpu::gasm::Jmp] [arg label]]

This command creates an arc from the [term anchor] to the instruction
labeled with [arg label], and tags with the the current condition
code.

376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
"exit/return", tagging it condition code [const always], independent
the current condition code.

[para]

The command returns the empty string as its result.


[call [cmd ::grammar::me::cpu::gasm::Who] [arg label]]

This command returns a reference to the instruction labeled with
[arg label].


[call [cmd ::grammar::me::cpu::gasm::/Label] [arg name]]

This command labels the [term anchor] with [arg name].

[emph Note] that an instruction can have more than one label.

[para]

The command returns the empty string as its result.


[call [cmd ::grammar::me::cpu::gasm::/Clear]]

This command clears the [term anchor], leaving it undefined, and
further resets the current condition code to [const always].

[para]

The command returns the empty string as its result.


[call [cmd ::grammar::me::cpu::gasm::/Ok]]

This command sets the current condition code to [const ok].

[para]

The command returns the empty string as its result.


[call [cmd ::grammar::me::cpu::gasm::/Fail]]

This command sets the current condition code to [const fail].

[para]

The command returns the empty string as its result.


[call [cmd ::grammar::me::cpu::gasm::/At] [arg name]]

This command sets the [term anchor] to the instruction labeled with
[arg name], and further resets the current condition code to
[const always].

[para]

The command returns the empty string as its result.

[call [cmd ::grammar::me::cpu::gasm::/CloseLoop]]

This command marks the [term anchor] as the last instruction in a loop
body, by creating the attribute [const LOOP].

[para]

The command returns the empty string as its result.


[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph grammar_me] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]







<




<











<








<









<







<




















<


<
|
<
<
|
<
<
<
<
<
<

369
370
371
372
373
374
375

376
377
378
379

380
381
382
383
384
385
386
387
388
389
390

391
392
393
394
395
396
397
398

399
400
401
402
403
404
405
406
407

408
409
410
411
412
413
414

415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434

435
436

437


438






439
"exit/return", tagging it condition code [const always], independent
the current condition code.

[para]

The command returns the empty string as its result.


[call [cmd ::grammar::me::cpu::gasm::Who] [arg label]]

This command returns a reference to the instruction labeled with
[arg label].


[call [cmd ::grammar::me::cpu::gasm::/Label] [arg name]]

This command labels the [term anchor] with [arg name].

[emph Note] that an instruction can have more than one label.

[para]

The command returns the empty string as its result.


[call [cmd ::grammar::me::cpu::gasm::/Clear]]

This command clears the [term anchor], leaving it undefined, and
further resets the current condition code to [const always].

[para]

The command returns the empty string as its result.


[call [cmd ::grammar::me::cpu::gasm::/Ok]]

This command sets the current condition code to [const ok].

[para]

The command returns the empty string as its result.


[call [cmd ::grammar::me::cpu::gasm::/Fail]]

This command sets the current condition code to [const fail].

[para]

The command returns the empty string as its result.


[call [cmd ::grammar::me::cpu::gasm::/At] [arg name]]

This command sets the [term anchor] to the instruction labeled with
[arg name], and further resets the current condition code to
[const always].

[para]

The command returns the empty string as its result.

[call [cmd ::grammar::me::cpu::gasm::/CloseLoop]]

This command marks the [term anchor] as the last instruction in a loop
body, by creating the attribute [const LOOP].

[para]

The command returns the empty string as its result.


[list_end]


[vset CATEGORY grammar_me]


[include ../doctools2base/include/feedback.inc]






[manpage_end]

Changes to modules/grammar_me/me_ast.man.

1
2


3
4
5
6
7
8
9
10
11
12
13
14
15
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::me_ast n 0.1]


[copyright {2005 Andreas Kupries <[email protected]>}]
[moddesc   {Grammar operations and usage}]
[titledesc {Various representations of ASTs}]
[category  {Grammars and finite automata}]
[description]
[keywords AST {abstract syntax tree}]

This document specifies various representations for the

[term {abstract syntax tree}]s (short [term AST]) generated by
instances of ME virtual machines, independent of variant.

Please go and read the document [syscmd grammar::me_intro] first if


>
>





<







1
2
3
4
5
6
7
8
9

10
11
12
13
14
15
16
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::me_ast n 0.1]
[keywords {abstract syntax tree}]
[keywords AST]
[copyright {2005 Andreas Kupries <[email protected]>}]
[moddesc   {Grammar operations and usage}]
[titledesc {Various representations of ASTs}]
[category  {Grammars and finite automata}]
[description]


This document specifies various representations for the

[term {abstract syntax tree}]s (short [term AST]) generated by
instances of ME virtual machines, independent of variant.

Please go and read the document [syscmd grammar::me_intro] first if
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
token stream, with the first token found in the stream located at
offset 0 (zero).

[para]

The root of an AS tree can be either a terminal or nonterminal node.


[section {AST VALUES}]

This representation of ASTs is a Tcl list. The main list represents
the root node of the tree, with the representations of the children
nested within.

[para]

Each node is represented by a single Tcl list containing three or more
elements. The first element is either the empty string or the name of
a nonterminal symbol (which is never the empty string). The second and
third elements are then the locations of the first and last tokens.

Any additional elements after the third are then the representations
of the children, with the leftmost child first, i.e. as the fourth
element of the list representing the node.


[section {AST OBJECTS}]

In this representation an AST is represented by a Tcl object command
whose API is compatible to the tree objects provided by the package
[package struct::tree]. I.e it has to support at least all of the
methods described by that package, and may support more.







<
















<







46
47
48
49
50
51
52

53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68

69
70
71
72
73
74
75
token stream, with the first token found in the stream located at
offset 0 (zero).

[para]

The root of an AS tree can be either a terminal or nonterminal node.


[section {AST VALUES}]

This representation of ASTs is a Tcl list. The main list represents
the root node of the tree, with the representations of the children
nested within.

[para]

Each node is represented by a single Tcl list containing three or more
elements. The first element is either the empty string or the name of
a nonterminal symbol (which is never the empty string). The second and
third elements are then the locations of the first and last tokens.

Any additional elements after the third are then the representations
of the children, with the leftmost child first, i.e. as the fourth
element of the list representing the node.


[section {AST OBJECTS}]

In this representation an AST is represented by a Tcl object command
whose API is compatible to the tree objects provided by the package
[package struct::tree]. I.e it has to support at least all of the
methods described by that package, and may support more.
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
[def detail]

This attribute is present only for nonterminal nodes. It contains the
name of the nonterminal symbol stored in the node.

[list_end]


[section {EXTENDED AST OBJECTS}]

Extended AST objects are like AST objects, with additional
information.

[list_begin definitions]








<







99
100
101
102
103
104
105

106
107
108
109
110
111
112
[def detail]

This attribute is present only for nonterminal nodes. It contains the
name of the nonterminal symbol stored in the node.

[list_end]


[section {EXTENDED AST OBJECTS}]

Extended AST objects are like AST objects, with additional
information.

[list_begin definitions]

127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146

This new attribute is defined for all nodes, and contains the
locations from attribute [term range] translated into line number and
column index. Lines are counted from 1, columns are counted from 0.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph grammar_me] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<

125
126
127
128
129
130
131

132


133







134

This new attribute is defined for all nodes, and contains the
locations from attribute [term range] translated into line number and
column index. Lines are counted from 1, columns are counted from 0.

[list_end]


[vset CATEGORY grammar_me]


[include ../doctools2base/include/feedback.inc]







[manpage_end]

Changes to modules/grammar_me/me_cpu.man.

1
2



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::me::cpu n 0.2]



[copyright {2005-2006 Andreas Kupries <[email protected]>}]
[moddesc   {Grammar operations and usage}]
[titledesc {Virtual machine implementation II for parsing token streams}]
[category  {Grammars and finite automata}]
[require Tcl 8.4]
[require grammar::me::cpu [opt 0.2]]
[description]
[keywords {virtual machine} parsing grammar]
[para]

This package provides an implementation of the ME virtual machine.

Please go and read the document [syscmd grammar::me_intro] first if
you do not know what a ME virtual machine is.

[para]

This implementation provides an object-based API and the machines are
not truly tied to Tcl. A C implementation of the same API is quite
possible.

[para]

Internally the package actually uses the value-based machine
manipulation commands as provided by the package

[package grammar::me::cpu::core] to perform its duties.


[section API]
[subsection {CLASS API}]

The package directly provides only a single command for the
construction of ME virtual machines.



>
>
>







<



















<







1
2
3
4
5
6
7
8
9
10
11
12

13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

32
33
34
35
36
37
38
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::me::cpu n 0.2]
[keywords grammar]
[keywords parsing]
[keywords {virtual machine}]
[copyright {2005-2006 Andreas Kupries <[email protected]>}]
[moddesc   {Grammar operations and usage}]
[titledesc {Virtual machine implementation II for parsing token streams}]
[category  {Grammars and finite automata}]
[require Tcl 8.4]
[require grammar::me::cpu [opt 0.2]]
[description]

[para]

This package provides an implementation of the ME virtual machine.

Please go and read the document [syscmd grammar::me_intro] first if
you do not know what a ME virtual machine is.

[para]

This implementation provides an object-based API and the machines are
not truly tied to Tcl. A C implementation of the same API is quite
possible.

[para]

Internally the package actually uses the value-based machine
manipulation commands as provided by the package

[package grammar::me::cpu::core] to perform its duties.


[section API]
[subsection {CLASS API}]

The package directly provides only a single command for the
construction of ME virtual machines.

80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
both push- and pull-styles. Push-style means that tokens are pushed
into the machine state when they arrive, triggering further execution
until they are consumed. In other words, this allows the machine to be
suspended and resumed at will and an arbitrary number of times, the
quasi-parallel operation of several machines, and the operation as
part of the event loop.


[list_begin definitions]
[call [arg meName] [method lc] [arg location]]

This method converts the location of a token given as offset in the
input stream into the associated line number and column index. The
result of the command is a 2-element list containing the two values,
in the order mentioned in the previous sentence.

This allows higher levels to convert the location information found in
the error status and the generated AST into more human readable data.

[para]

[emph Note] that the command is not able to convert locations which
have not been reached by the machine yet. In other words, if the
machine has read 7 tokens the command is able to convert the offsets
[const 0] to [const 6], but nothing beyond that. This also shows that
it is not possible to convert offsets which refer to locations before
the beginning of the stream.


[call [arg meName] [method tok] [opt "[arg from] [opt [arg to]]"]]

This method returns a Tcl list containing the part of the input stream
between the locations [arg from] and [arg to] (both inclusive). If
[arg to] is not specified it will default to the value of [arg from].
If [arg from] is not specified either the whole input stream is returned.

[para]

Each element of the returned list is a list of four elements, the
token, its associated lexeme, line number, and column index, in this
order.

This command places the same restrictions on its location arguments as
the method [method lc].


[call [arg meName] [method pc] [arg state]]

This method takes the state value of a ME virtual machine and returns
the current value of the stored program counter.


[call [arg meName] [method iseof] [arg state]]

This method takes the state value of a ME virtual machine and returns
the current value of the stored eof flag.


[call [arg meName] [method at] [arg state]]

This method takes the state value of a ME virtual machine and returns
the current location in the input stream.


[call [arg meName] [method cc] [arg state]]

This method takes the state value of a ME virtual machine and returns
the current token.


[call [arg meName] [method sv]]

This command returns the current semantic value [term SV] stored in
the machine. This is an abstract syntax tree as specified in the
document [syscmd grammar::me_ast], section [sectref-external {AST VALUES}].


[call [arg meName] [method ok]]

This method returns the current match status [term OK].


[call [arg meName] [method error]]

This method returns the current error status [term ER].


[call [arg meName] [method lstk] [arg state]]

This method takes the state value of a ME virtual machine and returns
the location stack.


[call [arg meName] [method astk] [arg state]]

This method takes the state value of a ME virtual machine and returns
the AST stack.


[call [arg meName] [method mstk] [arg state]]

This method takes the state value of a ME virtual machine and returns
the AST marker stack.


[call [arg meName] [method estk] [arg state]]

This method takes the state value of a ME virtual machine and returns
the error stack.


[call [arg meName] [method rstk] [arg state]]

This method takes the state value of a ME virtual machine and returns
the subroutine return stack.


[call [arg meName] [method nc] [arg state]]

This method takes the state value of a ME virtual machine and returns
the nonterminal match cache as a dictionary.


[call [arg meName] [method ast]]

This method returns the current top entry of the AST stack [term AS].

This is an abstract syntax tree as specified in the document
[syscmd grammar::me_ast], section [sectref-external {AST VALUES}].


[call [arg meName] [method halted]]

This method returns a boolean value telling the caller whether the
engine has halted execution or not. Halt means that no further
matching is possible, and the information retrieved via the other
method is final. Attempts to [method run] the engine will be ignored,
until a [method reset] is made.


[call [arg meName] [method code]]

This method returns the [arg code] information used to construct the
object. In other words, the match program executed by the machine.


[call [arg meName] [method eof]]

This method adds an end of file marker to the end of the input stream.
This signals the machine that the current contents of the input queue
are the final parts of the input and nothing will come after. Attempts
to put more characters into the queue will fail.


[call [arg meName] [method put] [arg tok] [arg lex] [arg line] [arg col]]

This method adds the token [arg tok] to the end of the input stream,
with associated lexeme data [arg lex] and [arg line]/[arg col]umn
information.

[call [arg meName] [method putstring] [arg string] [arg lvar] [arg cvar]]

This method adds each individual character in the [arg string] as a
token to the end of the input stream, from first to last. The lexemes
will be empty and the line/col information is computed based on the
characters encountered and the data in the variables [arg lvar] and
[arg cvar].


[call [arg meName] [method run] [opt [arg n]]]

This methods causes the engine to execute match instructions until
either

[list_begin itemized]
[item] [arg n] instructions have been executed, or
[item] a halt instruction was executed, or
[item]
the input queue is empty and the code is asking for more tokens to
process.
[list_end]
[para]

If no limit [arg n] was set only the last two conditions are checked
for.


[call [arg meName] [method pull] [arg nextcmd]]

This method implements pull-style operation of the machine. It causes
it to execute match instructions until either a halt instruction is
reached, or the command prefix








<




















<
















<




<






<





<




<







<




<



<






<




<






<




<






<




<







<









<




<







<














<

















<







81
82
83
84
85
86
87

88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107

108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123

124
125
126
127

128
129
130
131
132
133

134
135
136
137
138

139
140
141
142

143
144
145
146
147
148
149

150
151
152
153

154
155
156

157
158
159
160
161
162

163
164
165
166

167
168
169
170
171
172

173
174
175
176

177
178
179
180
181
182

183
184
185
186

187
188
189
190
191
192
193

194
195
196
197
198
199
200
201
202

203
204
205
206

207
208
209
210
211
212
213

214
215
216
217
218
219
220
221
222
223
224
225
226
227

228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244

245
246
247
248
249
250
251
both push- and pull-styles. Push-style means that tokens are pushed
into the machine state when they arrive, triggering further execution
until they are consumed. In other words, this allows the machine to be
suspended and resumed at will and an arbitrary number of times, the
quasi-parallel operation of several machines, and the operation as
part of the event loop.


[list_begin definitions]
[call [arg meName] [method lc] [arg location]]

This method converts the location of a token given as offset in the
input stream into the associated line number and column index. The
result of the command is a 2-element list containing the two values,
in the order mentioned in the previous sentence.

This allows higher levels to convert the location information found in
the error status and the generated AST into more human readable data.

[para]

[emph Note] that the command is not able to convert locations which
have not been reached by the machine yet. In other words, if the
machine has read 7 tokens the command is able to convert the offsets
[const 0] to [const 6], but nothing beyond that. This also shows that
it is not possible to convert offsets which refer to locations before
the beginning of the stream.


[call [arg meName] [method tok] [opt "[arg from] [opt [arg to]]"]]

This method returns a Tcl list containing the part of the input stream
between the locations [arg from] and [arg to] (both inclusive). If
[arg to] is not specified it will default to the value of [arg from].
If [arg from] is not specified either the whole input stream is returned.

[para]

Each element of the returned list is a list of four elements, the
token, its associated lexeme, line number, and column index, in this
order.

This command places the same restrictions on its location arguments as
the method [method lc].


[call [arg meName] [method pc] [arg state]]

This method takes the state value of a ME virtual machine and returns
the current value of the stored program counter.


[call [arg meName] [method iseof] [arg state]]

This method takes the state value of a ME virtual machine and returns
the current value of the stored eof flag.


[call [arg meName] [method at] [arg state]]

This method takes the state value of a ME virtual machine and returns
the current location in the input stream.


[call [arg meName] [method cc] [arg state]]

This method takes the state value of a ME virtual machine and returns
the current token.


[call [arg meName] [method sv]]

This command returns the current semantic value [term SV] stored in
the machine. This is an abstract syntax tree as specified in the
document [syscmd grammar::me_ast], section [sectref-external {AST VALUES}].


[call [arg meName] [method ok]]

This method returns the current match status [term OK].


[call [arg meName] [method error]]

This method returns the current error status [term ER].


[call [arg meName] [method lstk] [arg state]]

This method takes the state value of a ME virtual machine and returns
the location stack.


[call [arg meName] [method astk] [arg state]]

This method takes the state value of a ME virtual machine and returns
the AST stack.


[call [arg meName] [method mstk] [arg state]]

This method takes the state value of a ME virtual machine and returns
the AST marker stack.


[call [arg meName] [method estk] [arg state]]

This method takes the state value of a ME virtual machine and returns
the error stack.


[call [arg meName] [method rstk] [arg state]]

This method takes the state value of a ME virtual machine and returns
the subroutine return stack.


[call [arg meName] [method nc] [arg state]]

This method takes the state value of a ME virtual machine and returns
the nonterminal match cache as a dictionary.


[call [arg meName] [method ast]]

This method returns the current top entry of the AST stack [term AS].

This is an abstract syntax tree as specified in the document
[syscmd grammar::me_ast], section [sectref-external {AST VALUES}].


[call [arg meName] [method halted]]

This method returns a boolean value telling the caller whether the
engine has halted execution or not. Halt means that no further
matching is possible, and the information retrieved via the other
method is final. Attempts to [method run] the engine will be ignored,
until a [method reset] is made.


[call [arg meName] [method code]]

This method returns the [arg code] information used to construct the
object. In other words, the match program executed by the machine.


[call [arg meName] [method eof]]

This method adds an end of file marker to the end of the input stream.
This signals the machine that the current contents of the input queue
are the final parts of the input and nothing will come after. Attempts
to put more characters into the queue will fail.


[call [arg meName] [method put] [arg tok] [arg lex] [arg line] [arg col]]

This method adds the token [arg tok] to the end of the input stream,
with associated lexeme data [arg lex] and [arg line]/[arg col]umn
information.

[call [arg meName] [method putstring] [arg string] [arg lvar] [arg cvar]]

This method adds each individual character in the [arg string] as a
token to the end of the input stream, from first to last. The lexemes
will be empty and the line/col information is computed based on the
characters encountered and the data in the variables [arg lvar] and
[arg cvar].


[call [arg meName] [method run] [opt [arg n]]]

This methods causes the engine to execute match instructions until
either

[list_begin itemized]
[item] [arg n] instructions have been executed, or
[item] a halt instruction was executed, or
[item]
the input queue is empty and the code is asking for more tokens to
process.
[list_end]
[para]

If no limit [arg n] was set only the last two conditions are checked
for.


[call [arg meName] [method pull] [arg nextcmd]]

This method implements pull-style operation of the machine. It causes
it to execute match instructions until either a halt instruction is
reached, or the command prefix

290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
[para]

The end of the input stream for this method does not imply that method
[method eof] is called for the machine as a whole. By avoiding this
and still asking for an explicit call of the method it is possible to
mix push- and pull-style operation during the lifetime of the machine.


[call [arg meName] [method reset]]

This method resets the machine to its initial state, discarding any
state it may have.


[call [arg meName] [method destroy]]

This method deletes the object and releases all resurces it claimed.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph grammar_me] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[manpage_end]







<




<







<
|
<
<
|
<
<
<
<
<
<
<

269
270
271
272
273
274
275

276
277
278
279

280
281
282
283
284
285
286

287


288







289
[para]

The end of the input stream for this method does not imply that method
[method eof] is called for the machine as a whole. By avoiding this
and still asking for an explicit call of the method it is possible to
mix push- and pull-style operation during the lifetime of the machine.


[call [arg meName] [method reset]]

This method resets the machine to its initial state, discarding any
state it may have.


[call [arg meName] [method destroy]]

This method deletes the object and releases all resurces it claimed.

[list_end]


[vset CATEGORY grammar_me]


[include ../doctools2base/include/feedback.inc]







[manpage_end]

Changes to modules/grammar_me/me_cpucore.man.

1
2



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::me::cpu::core n 0.2]



[copyright {2005-2006 Andreas Kupries <[email protected]>}]
[moddesc   {Grammar operations and usage}]
[titledesc {ME virtual machine state manipulation}]
[category  {Grammars and finite automata}]
[require Tcl 8.4]
[require grammar::me::cpu::core [opt 0.2]]
[description]
[keywords {virtual machine} parsing grammar]
[para]

This package provides an implementation of the ME virtual machine.

Please go and read the document [syscmd grammar::me_intro] first if
you do not know what a ME virtual machine is.



>
>
>







<







1
2
3
4
5
6
7
8
9
10
11
12

13
14
15
16
17
18
19
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::me::cpu::core n 0.2]
[keywords grammar]
[keywords parsing]
[keywords {virtual machine}]
[copyright {2005-2006 Andreas Kupries <[email protected]>}]
[moddesc   {Grammar operations and usage}]
[titledesc {ME virtual machine state manipulation}]
[category  {Grammars and finite automata}]
[require Tcl 8.4]
[require grammar::me::cpu::core [opt 0.2]]
[description]

[para]

This package provides an implementation of the ME virtual machine.

Please go and read the document [syscmd grammar::me_intro] first if
you do not know what a ME virtual machine is.

33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
internal representation is not shimmered away.

[para]

The actual structure used by all state values is described in section
[sectref {CPU STATE}].


[section API]

The package directly provides only a single command, and all the
functionality is made available through its methods.

[list_begin definitions]








<







35
36
37
38
39
40
41

42
43
44
45
46
47
48
internal representation is not shimmered away.

[para]

The actual structure used by all state values is described in section
[sectref {CPU STATE}].


[section API]

The package directly provides only a single command, and all the
functionality is made available through its methods.

[list_begin definitions]

56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
Each element of the result contains instruction label, instruction
name, and the instruction arguments, in this order. The label can be
the empty string. Jump destinations are shown as labels, strings and
tokens unencoded. Token names are prefixed with their numeric id, if,
and only if a tokmap is defined. The two components are separated by a
colon.


[call [cmd ::grammar::me::cpu::core] [method asm] [arg asm]]

This method returns code in the format as specified in section
[sectref {MATCH PROGRAM REPRESENTATION}] generated from ME assembly
code [arg asm], which is in the format as returned by the method
[method disasm].


[call [cmd ::grammar::me::cpu::core] [method new] [arg asm]]

This method creates state value for a ME virtual machine in its
initial state and returns it as its result.

[para]

The argument [arg matchcode] contains a Tcl representation of the
match instructions the machine has to execute while parsing the input
stream. Its format is specified in the section
[sectref {MATCH PROGRAM REPRESENTATION}].

[para]

The [arg tokmap] argument taken by the implementation provided by the
package [package grammar::me::tcl] is here hidden inside of the match
instructions and therefore not needed.


[call [cmd ::grammar::me::cpu::core] [method lc] [arg state] [arg location]]

This method takes the state value of a ME virtual machine and uses it
to convert a location in the input stream (as offset) into a line
number and column index. The result of the method is a 2-element list
containing the two pieces in the order mentioned in the previous







<






<


















<







57
58
59
60
61
62
63

64
65
66
67
68
69

70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87

88
89
90
91
92
93
94
Each element of the result contains instruction label, instruction
name, and the instruction arguments, in this order. The label can be
the empty string. Jump destinations are shown as labels, strings and
tokens unencoded. Token names are prefixed with their numeric id, if,
and only if a tokmap is defined. The two components are separated by a
colon.


[call [cmd ::grammar::me::cpu::core] [method asm] [arg asm]]

This method returns code in the format as specified in section
[sectref {MATCH PROGRAM REPRESENTATION}] generated from ME assembly
code [arg asm], which is in the format as returned by the method
[method disasm].


[call [cmd ::grammar::me::cpu::core] [method new] [arg asm]]

This method creates state value for a ME virtual machine in its
initial state and returns it as its result.

[para]

The argument [arg matchcode] contains a Tcl representation of the
match instructions the machine has to execute while parsing the input
stream. Its format is specified in the section
[sectref {MATCH PROGRAM REPRESENTATION}].

[para]

The [arg tokmap] argument taken by the implementation provided by the
package [package grammar::me::tcl] is here hidden inside of the match
instructions and therefore not needed.


[call [cmd ::grammar::me::cpu::core] [method lc] [arg state] [arg location]]

This method takes the state value of a ME virtual machine and uses it
to convert a location in the input stream (as offset) into a line
number and column index. The result of the method is a 2-element list
containing the two pieces in the order mentioned in the previous
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
the beginning of the stream.

[para]

This utility allows higher levels to convert the location offsets
found in the error status and the AST into more human readable data.


[call [cmd ::grammar::me::cpu::core] [method tok] [arg state] [opt "[arg from] [opt [arg to]]"]]

This method takes the state value of a ME virtual machine and returns
a Tcl list containing the part of the input stream between the
locations [arg from] and [arg to] (both inclusive). If [arg to] is not
specified it will default to the value of [arg from]. If [arg from] is
not specified either the whole input stream is returned.

[para]

This method places the same restrictions on its location arguments as
the method [method lc].


[call [cmd ::grammar::me::cpu::core] [method pc] [arg state]]

This method takes the state value of a ME virtual machine and returns
the current value of the stored program counter.


[call [cmd ::grammar::me::cpu::core] [method iseof] [arg state]]

This method takes the state value of a ME virtual machine and returns
the current value of the stored eof flag.


[call [cmd ::grammar::me::cpu::core] [method at] [arg state]]

This method takes the state value of a ME virtual machine and returns
the current location in the input stream.


[call [cmd ::grammar::me::cpu::core] [method cc] [arg state]]

This method takes the state value of a ME virtual machine and returns
the current token.


[call [cmd ::grammar::me::cpu::core] [method sv] [arg state]]

This method takes the state value of a ME virtual machine and returns
the current semantic value stored in it.

This is an abstract syntax tree as specified in the document
[syscmd grammar::me_ast], section [sectref-external {AST VALUES}].


[call [cmd ::grammar::me::cpu::core] [method ok] [arg state]]

This method takes the state value of a ME virtual machine and returns
the match status stored in it.


[call [cmd ::grammar::me::cpu::core] [method error] [arg state]]

This method takes the state value of a ME virtual machine and returns
the current error status stored in it.


[call [cmd ::grammar::me::cpu::core] [method lstk] [arg state]]

This method takes the state value of a ME virtual machine and returns
the location stack.


[call [cmd ::grammar::me::cpu::core] [method astk] [arg state]]

This method takes the state value of a ME virtual machine and returns
the AST stack.


[call [cmd ::grammar::me::cpu::core] [method mstk] [arg state]]

This method takes the state value of a ME virtual machine and returns
the AST marker stack.


[call [cmd ::grammar::me::cpu::core] [method estk] [arg state]]

This method takes the state value of a ME virtual machine and returns
the error stack.


[call [cmd ::grammar::me::cpu::core] [method rstk] [arg state]]

This method takes the state value of a ME virtual machine and returns
the subroutine return stack.


[call [cmd ::grammar::me::cpu::core] [method nc] [arg state]]

This method takes the state value of a ME virtual machine and returns
the nonterminal match cache as a dictionary.


[call [cmd ::grammar::me::cpu::core] [method ast] [arg state]]

This method takes the state value of a ME virtual machine and returns
the abstract syntax tree currently at the top of the AST stack stored
in it.

This is an abstract syntax tree as specified in the document
[syscmd grammar::me_ast], section [sectref-external {AST VALUES}].


[call [cmd ::grammar::me::cpu::core] [method halted] [arg state]]

This method takes the state value of a ME virtual machine and returns
the current halt status stored in it, i.e. if the machine has stopped
or not.


[call [cmd ::grammar::me::cpu::core] [method code] [arg state]]

This method takes the state value of a ME virtual machine and returns
the code stored in it, i.e. the instructions executed by the machine.


[call [cmd ::grammar::me::cpu::core] [method eof] [arg statevar]]

This method takes the state value of a ME virtual machine as stored in
the variable named by [arg statevar] and modifies it so that the eof
flag inside is set. This signals to the machine that whatever token
are in the input queue are the last to be processed. There will be no
more.


[call [cmd ::grammar::me::cpu::core] [method put] [arg statevar] [arg tok] [arg lex] [arg line] [arg col]]

This method takes the state value of a ME virtual machine as stored in
the variable named by [arg statevar] and modifies it so that the token
[arg tok] is added to the end of the input queue, with associated
lexeme data [arg lex] and [arg line]/[arg col]umn information.

[para]

The operation will fail with an error if the eof flag of the machine
has been set through the method [method eof].


[call [cmd ::grammar::me::cpu::core] [method run] [arg statevar] [opt [arg n]]]

This method takes the state value of a ME virtual machine as stored in
the variable named by [arg statevar], executes a number of
instructions and stores the state resulting from their modifications
back into the variable.







<













<




<






<





<




<









<




<






<




<






<




<






<





<




<










<






<




<








<












<







104
105
106
107
108
109
110

111
112
113
114
115
116
117
118
119
120
121
122
123

124
125
126
127

128
129
130
131
132
133

134
135
136
137
138

139
140
141
142

143
144
145
146
147
148
149
150
151

152
153
154
155

156
157
158
159
160
161

162
163
164
165

166
167
168
169
170
171

172
173
174
175

176
177
178
179
180
181

182
183
184
185
186

187
188
189
190

191
192
193
194
195
196
197
198
199
200

201
202
203
204
205
206

207
208
209
210

211
212
213
214
215
216
217
218

219
220
221
222
223
224
225
226
227
228
229
230

231
232
233
234
235
236
237
the beginning of the stream.

[para]

This utility allows higher levels to convert the location offsets
found in the error status and the AST into more human readable data.


[call [cmd ::grammar::me::cpu::core] [method tok] [arg state] [opt "[arg from] [opt [arg to]]"]]

This method takes the state value of a ME virtual machine and returns
a Tcl list containing the part of the input stream between the
locations [arg from] and [arg to] (both inclusive). If [arg to] is not
specified it will default to the value of [arg from]. If [arg from] is
not specified either the whole input stream is returned.

[para]

This method places the same restrictions on its location arguments as
the method [method lc].


[call [cmd ::grammar::me::cpu::core] [method pc] [arg state]]

This method takes the state value of a ME virtual machine and returns
the current value of the stored program counter.


[call [cmd ::grammar::me::cpu::core] [method iseof] [arg state]]

This method takes the state value of a ME virtual machine and returns
the current value of the stored eof flag.


[call [cmd ::grammar::me::cpu::core] [method at] [arg state]]

This method takes the state value of a ME virtual machine and returns
the current location in the input stream.


[call [cmd ::grammar::me::cpu::core] [method cc] [arg state]]

This method takes the state value of a ME virtual machine and returns
the current token.


[call [cmd ::grammar::me::cpu::core] [method sv] [arg state]]

This method takes the state value of a ME virtual machine and returns
the current semantic value stored in it.

This is an abstract syntax tree as specified in the document
[syscmd grammar::me_ast], section [sectref-external {AST VALUES}].


[call [cmd ::grammar::me::cpu::core] [method ok] [arg state]]

This method takes the state value of a ME virtual machine and returns
the match status stored in it.


[call [cmd ::grammar::me::cpu::core] [method error] [arg state]]

This method takes the state value of a ME virtual machine and returns
the current error status stored in it.


[call [cmd ::grammar::me::cpu::core] [method lstk] [arg state]]

This method takes the state value of a ME virtual machine and returns
the location stack.


[call [cmd ::grammar::me::cpu::core] [method astk] [arg state]]

This method takes the state value of a ME virtual machine and returns
the AST stack.


[call [cmd ::grammar::me::cpu::core] [method mstk] [arg state]]

This method takes the state value of a ME virtual machine and returns
the AST marker stack.


[call [cmd ::grammar::me::cpu::core] [method estk] [arg state]]

This method takes the state value of a ME virtual machine and returns
the error stack.


[call [cmd ::grammar::me::cpu::core] [method rstk] [arg state]]

This method takes the state value of a ME virtual machine and returns
the subroutine return stack.


[call [cmd ::grammar::me::cpu::core] [method nc] [arg state]]

This method takes the state value of a ME virtual machine and returns
the nonterminal match cache as a dictionary.


[call [cmd ::grammar::me::cpu::core] [method ast] [arg state]]

This method takes the state value of a ME virtual machine and returns
the abstract syntax tree currently at the top of the AST stack stored
in it.

This is an abstract syntax tree as specified in the document
[syscmd grammar::me_ast], section [sectref-external {AST VALUES}].


[call [cmd ::grammar::me::cpu::core] [method halted] [arg state]]

This method takes the state value of a ME virtual machine and returns
the current halt status stored in it, i.e. if the machine has stopped
or not.


[call [cmd ::grammar::me::cpu::core] [method code] [arg state]]

This method takes the state value of a ME virtual machine and returns
the code stored in it, i.e. the instructions executed by the machine.


[call [cmd ::grammar::me::cpu::core] [method eof] [arg statevar]]

This method takes the state value of a ME virtual machine as stored in
the variable named by [arg statevar] and modifies it so that the eof
flag inside is set. This signals to the machine that whatever token
are in the input queue are the last to be processed. There will be no
more.


[call [cmd ::grammar::me::cpu::core] [method put] [arg statevar] [arg tok] [arg lex] [arg line] [arg col]]

This method takes the state value of a ME virtual machine as stored in
the variable named by [arg statevar] and modifies it so that the token
[arg tok] is added to the end of the input queue, with associated
lexeme data [arg lex] and [arg line]/[arg col]umn information.

[para]

The operation will fail with an error if the eof flag of the machine
has been set through the method [method eof].


[call [cmd ::grammar::me::cpu::core] [method run] [arg statevar] [opt [arg n]]]

This method takes the state value of a ME virtual machine as stored in
the variable named by [arg statevar], executes a number of
instructions and stores the state resulting from their modifications
back into the variable.
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
[list_end]
[para]

If no limit [arg n] was set only the last two conditions are checked
for.

[list_end]


[subsection {MATCH PROGRAM REPRESENTATION}]

A match program is represented by nested Tcl list. The first element,
[term asm], is a list of integer numbers, the instructions to execute,
and their arguments. The second element, [term pool], is a list of
strings, referenced by the instructions, for error messages, token







<







249
250
251
252
253
254
255

256
257
258
259
260
261
262
[list_end]
[para]

If no limit [arg n] was set only the last two conditions are checked
for.

[list_end]


[subsection {MATCH PROGRAM REPRESENTATION}]

A match program is represented by nested Tcl list. The first element,
[term asm], is a list of integer numbers, the instructions to execute,
and their arguments. The second element, [term pool], is a list of
strings, referenced by the instructions, for error messages, token
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
[enum] "[cmd isv_nonterminal_reduce] [arg nt]"
[enum] "[cmd ias_push]"
[enum] "[cmd ias_mark]"
[enum] "[cmd ias_mrewind]"
[enum] "[cmd ias_mpop]"
[list_end]


[section {CPU STATE}]

A state value is a list containing the following elements, in the order listed below:

[list_begin enumerated]
[enum] [term code]: Match instructions, see [sectref {MATCH PROGRAM REPRESENTATION}].
[enum] [term pc]:   Program counter, [term int].







<







314
315
316
317
318
319
320

321
322
323
324
325
326
327
[enum] "[cmd isv_nonterminal_reduce] [arg nt]"
[enum] "[cmd ias_push]"
[enum] "[cmd ias_mark]"
[enum] "[cmd ias_mrewind]"
[enum] "[cmd ias_mpop]"
[list_end]


[section {CPU STATE}]

A state value is a list containing the following elements, in the order listed below:

[list_begin enumerated]
[enum] [term code]: Match instructions, see [sectref {MATCH PROGRAM REPRESENTATION}].
[enum] [term pc]:   Program counter, [term int].
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408

[para]

[term nc], the nonterminal cache is keyed by nonterminal name and
location, each value a four-element list containing current location,
match status, semantic value, and error status, in this order.

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph grammar_me] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<

365
366
367
368
369
370
371

372


373







374

[para]

[term nc], the nonterminal cache is keyed by nonterminal name and
location, each value a four-element list containing current location,
match status, semantic value, and error status, in this order.


[vset CATEGORY grammar_me]


[include ../doctools2base/include/feedback.inc]







[manpage_end]

Changes to modules/grammar_me/me_intro.man.

1
2

















3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::me_intro n 0.1]

















[copyright {2005 Andreas Kupries <[email protected]>}]
[moddesc   {Grammar operations and usage}]
[titledesc {Introduction to virtual machines for parsing token streams}]
[category  {Grammars and finite automata}]
[description]
[keywords {virtual machine}]
[keywords {push down automaton}]
[keywords matching parsing transducer grammar expression]
[keywords {context-free languages}     CFL  {context-free grammar}       CFG]
[keywords {top-down parsing languages} TPDL {parsing expression grammar} PEG]
[keywords {recursive descent} LL(k)]

This document is an introduction to and overview of the basic
facilities for the parsing and/or matching of [term token]
streams. One possibility often used for the token domain are
characters.

[para]


>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>





<
<
<
<
<
<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24






25
26
27
28
29
30
31
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::me_intro n 0.1]
[keywords CFG]
[keywords CFL]
[keywords {context-free grammar}]
[keywords {context-free languages}]
[keywords expression]
[keywords grammar]
[keywords LL(k)]
[keywords matching]
[keywords parsing]
[keywords {parsing expression grammar}]
[keywords PEG]
[keywords {push down automaton}]
[keywords {recursive descent}]
[keywords {top-down parsing languages}]
[keywords TPDL]
[keywords transducer]
[keywords {virtual machine}]
[copyright {2005 Andreas Kupries <[email protected]>}]
[moddesc   {Grammar operations and usage}]
[titledesc {Introduction to virtual machines for parsing token streams}]
[category  {Grammars and finite automata}]
[description]







This document is an introduction to and overview of the basic
facilities for the parsing and/or matching of [term token]
streams. One possibility often used for the token domain are
characters.

[para]
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93

Core functionality for state manipulation and stepping used in the
bytecode based implementation of ME virtual machines.

[list_end]
[para]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph grammar_me] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<

85
86
87
88
89
90
91

92


93







94

Core functionality for state manipulation and stepping used in the
bytecode based implementation of ME virtual machines.

[list_end]
[para]


[vset CATEGORY grammar_me]


[include ../doctools2base/include/feedback.inc]







[manpage_end]

Changes to modules/grammar_me/me_tcl.man.

1
2



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::me::tcl n 0.1]



[copyright {2005 Andreas Kupries <[email protected]>}]
[moddesc   {Grammar operations and usage}]
[titledesc {Virtual machine implementation I for parsing token streams}]
[category  {Grammars and finite automata}]
[require Tcl 8.4]
[require grammar::me::tcl [opt 0.1]]
[description]
[keywords {virtual machine} parsing grammar]
[para]

This package provides an implementation of the ME virtual machine.
Please go and read the document [syscmd grammar::me_intro] first if
you do not know what a ME virtual machine is.

[para]


>
>
>







<







1
2
3
4
5
6
7
8
9
10
11
12

13
14
15
16
17
18
19
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::me::tcl n 0.1]
[keywords grammar]
[keywords parsing]
[keywords {virtual machine}]
[copyright {2005 Andreas Kupries <[email protected]>}]
[moddesc   {Grammar operations and usage}]
[titledesc {Virtual machine implementation I for parsing token streams}]
[category  {Grammars and finite automata}]
[require Tcl 8.4]
[require grammar::me::tcl [opt 0.1]]
[description]

[para]

This package provides an implementation of the ME virtual machine.
Please go and read the document [syscmd grammar::me_intro] first if
you do not know what a ME virtual machine is.

[para]
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60

[para]

A related package is [package grammar::peg::interp] which provides a
generic interpreter / parser for parsing expression grammars (PEGs),
implemented on top of this implementation of the ME virtual machine.


[section {API}]

The commands documented in this section do not implement any of the
instructions of the ME virtual machine. They provide the facilities
for the initialization of the machine and the retrieval of important
information.

[list_begin definitions]

[call [cmd ::grammar::me::tcl] [method cmd] [arg ...]]

This is an ensemble command providing access to the commands listed in
this section. See the methods themselves for detailed specifications.


[call [cmd ::grammar::me::tcl] [method init] [arg nextcmd] [opt [arg tokmap]]]

This command (re)initializes the machine. It returns the empty
string. This command has to be invoked before any other command of
this package.








<













<







34
35
36
37
38
39
40

41
42
43
44
45
46
47
48
49
50
51
52
53

54
55
56
57
58
59
60

[para]

A related package is [package grammar::peg::interp] which provides a
generic interpreter / parser for parsing expression grammars (PEGs),
implemented on top of this implementation of the ME virtual machine.


[section {API}]

The commands documented in this section do not implement any of the
instructions of the ME virtual machine. They provide the facilities
for the initialization of the machine and the retrieval of important
information.

[list_begin definitions]

[call [cmd ::grammar::me::tcl] [method cmd] [arg ...]]

This is an ensemble command providing access to the commands listed in
this section. See the methods themselves for detailed specifications.


[call [cmd ::grammar::me::tcl] [method init] [arg nextcmd] [opt [arg tokmap]]]

This command (re)initializes the machine. It returns the empty
string. This command has to be invoked before any other command of
this package.

78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
The optional dictionary [arg tokmap] maps from tokens to integer
numbers. If present the numbers impose an order on the tokens, which
is subsequently used by [term ict_match_tokrange] to determine if a
token is in the specified range or not. If no token map is specified
the lexicographic order of th token names will be used instead. This
choice is especially asensible when using characters as tokens.



[call [cmd ::grammar::me::tcl] [method lc] [arg location]]

This command converts the location of a token given as offset in the
input stream into the associated line number and column index. The
result of the command is a 2-element list containing the two values,
in the order mentioned in the previous sentence.








<
<







78
79
80
81
82
83
84


85
86
87
88
89
90
91
The optional dictionary [arg tokmap] maps from tokens to integer
numbers. If present the numbers impose an order on the tokens, which
is subsequently used by [term ict_match_tokrange] to determine if a
token is in the specified range or not. If no token map is specified
the lexicographic order of th token names will be used instead. This
choice is especially asensible when using characters as tokens.



[call [cmd ::grammar::me::tcl] [method lc] [arg location]]

This command converts the location of a token given as offset in the
input stream into the associated line number and column index. The
result of the command is a 2-element list containing the two values,
in the order mentioned in the previous sentence.

105
106
107
108
109
110
111
112
113
114
115
116
117
118
119

[para]

After a call of [method init] the state used for the conversion is
cleared, making further conversions impossible until the machine has
read tokens again.


[call [cmd ::grammar::me::tcl] [method tok] [arg from] [opt [arg to]]]

This command returns a Tcl list containing the part of the input
stream between the locations [arg from] and [arg to] (both
inclusive). If [arg to] is not specified it will default to the value
of [arg from].








<







103
104
105
106
107
108
109

110
111
112
113
114
115
116

[para]

After a call of [method init] the state used for the conversion is
cleared, making further conversions impossible until the machine has
read tokens again.


[call [cmd ::grammar::me::tcl] [method tok] [arg from] [opt [arg to]]]

This command returns a Tcl list containing the part of the input
stream between the locations [arg from] and [arg to] (both
inclusive). If [arg to] is not specified it will default to the value
of [arg from].

127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
the [arg nextcmd] callback given to [cmd ::grammar::me::tcl::init]

[para]

This command places the same restrictions on its location arguments as
[cmd ::grammar::me::tcl::lc].


[call [cmd ::grammar::me::tcl] [method tokens]]

This command returns the number of tokens currently known to the ME
virtual machine.


[call [cmd ::grammar::me::tcl] [method sv]]

This command returns the current semantic value [term SV] stored in
the machine. This is an abstract syntax tree as specified in the
document [syscmd grammar::me_ast], section [sectref-external {AST VALUES}].


[call [cmd ::grammar::me::tcl] [method ast]]

This method returns the abstract syntax tree currently at the top of
the AST stack of the ME virtual machine. This is an abstract syntax
tree as specified in the document [syscmd grammar::me_ast], section
[sectref-external {AST VALUES}].


[call [cmd ::grammar::me::tcl] [method astall]]

This method returns the whole stack of abstract syntax trees currently
known to the ME virtual machine. Each element of the returned list is
an abstract syntax tree as specified in the document

[syscmd grammar::me_ast], section [sectref-external {AST VALUES}].
The top of the stack resides at the end of the list.


[call [cmd ::grammar::me::tcl] [method ctok]]

This method returns the current token considered by the ME virtual
machine.


[call [cmd ::grammar::me::tcl] [method nc]]

This method returns the contents of the nonterminal cache as a
dictionary mapping from "[var symbol],[var location]" to match
information.


[call [cmd ::grammar::me::tcl] [method next]]

This method returns the next token callback as specified during
initialization of the ME virtual machine.


[call [cmd ::grammar::me::tcl] [method ord]]

This method returns a dictionary containing the [arg tokmap] specified
during initialization of the ME virtual machine.


[var [cmd ::grammar::me::tcl::ok]]

This variable contains the current match status [term OK]. It is
provided as variable instead of a command because that makes access to
this information faster, and the speed of access is considered very
important here as this information is used constantly to determine the
control flow.

[list_end]
[para]


[section {MACHINE STATE}]

Please go and read the document [syscmd grammar::me_vm] first for a
specification of the basic ME virtual machine and its state.

[para]

This implementation manages the state described in that document,
except for the stacks minus the AST stack. In other words, location
stack, error stack, return stack, and ast marker stack are implicitly
managed through standard Tcl scoping, i.e. Tcl variables in
procedures, outside of this implementation.


[section {MACHINE INSTRUCTIONS}]

Please go and read the document [syscmd grammar::me_vm] first for a
specification of the basic ME virtual machine and its instruction set.

[para]







<




<







<






<










<




<







<





<




<











<













<







124
125
126
127
128
129
130

131
132
133
134

135
136
137
138
139
140
141

142
143
144
145
146
147

148
149
150
151
152
153
154
155
156
157

158
159
160
161

162
163
164
165
166
167
168

169
170
171
172
173

174
175
176
177

178
179
180
181
182
183
184
185
186
187
188

189
190
191
192
193
194
195
196
197
198
199
200
201

202
203
204
205
206
207
208
the [arg nextcmd] callback given to [cmd ::grammar::me::tcl::init]

[para]

This command places the same restrictions on its location arguments as
[cmd ::grammar::me::tcl::lc].


[call [cmd ::grammar::me::tcl] [method tokens]]

This command returns the number of tokens currently known to the ME
virtual machine.


[call [cmd ::grammar::me::tcl] [method sv]]

This command returns the current semantic value [term SV] stored in
the machine. This is an abstract syntax tree as specified in the
document [syscmd grammar::me_ast], section [sectref-external {AST VALUES}].


[call [cmd ::grammar::me::tcl] [method ast]]

This method returns the abstract syntax tree currently at the top of
the AST stack of the ME virtual machine. This is an abstract syntax
tree as specified in the document [syscmd grammar::me_ast], section
[sectref-external {AST VALUES}].


[call [cmd ::grammar::me::tcl] [method astall]]

This method returns the whole stack of abstract syntax trees currently
known to the ME virtual machine. Each element of the returned list is
an abstract syntax tree as specified in the document

[syscmd grammar::me_ast], section [sectref-external {AST VALUES}].
The top of the stack resides at the end of the list.


[call [cmd ::grammar::me::tcl] [method ctok]]

This method returns the current token considered by the ME virtual
machine.


[call [cmd ::grammar::me::tcl] [method nc]]

This method returns the contents of the nonterminal cache as a
dictionary mapping from "[var symbol],[var location]" to match
information.


[call [cmd ::grammar::me::tcl] [method next]]

This method returns the next token callback as specified during
initialization of the ME virtual machine.


[call [cmd ::grammar::me::tcl] [method ord]]

This method returns a dictionary containing the [arg tokmap] specified
during initialization of the ME virtual machine.


[var [cmd ::grammar::me::tcl::ok]]

This variable contains the current match status [term OK]. It is
provided as variable instead of a command because that makes access to
this information faster, and the speed of access is considered very
important here as this information is used constantly to determine the
control flow.

[list_end]
[para]


[section {MACHINE STATE}]

Please go and read the document [syscmd grammar::me_vm] first for a
specification of the basic ME virtual machine and its state.

[para]

This implementation manages the state described in that document,
except for the stacks minus the AST stack. In other words, location
stack, error stack, return stack, and ast marker stack are implicitly
managed through standard Tcl scoping, i.e. Tcl variables in
procedures, outside of this implementation.


[section {MACHINE INSTRUCTIONS}]

Please go and read the document [syscmd grammar::me_vm] first for a
specification of the basic ME virtual machine and its instruction set.

[para]
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367

The command takes the marker as argument as it comes from the
Tcl stack, not the machine state. It replaces [term ias_mpop].

[list_end]
[para]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph grammar_me] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<

334
335
336
337
338
339
340

341


342







343

The command takes the marker as argument as it comes from the
Tcl stack, not the machine state. It replaces [term ias_mpop].

[list_end]
[para]


[vset CATEGORY grammar_me]


[include ../doctools2base/include/feedback.inc]







[manpage_end]

Changes to modules/grammar_me/me_util.man.

1
2



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::me::util n 0.1]



[copyright {2005 Andreas Kupries <[email protected]>}]
[moddesc   {Grammar operations and usage}]
[titledesc {AST utilities}]
[category  {Grammars and finite automata}]
[require Tcl 8.4]
[require grammar::me::util [opt 0.1]]
[description]
[keywords {abstract syntax tree} {syntax tree} tree]
[para]

This package provides a number of utility command for the conversion
between the various representations of abstract syntax trees as
specified in the document [syscmd grammar::me_ast].


[list_begin definitions]

[call [cmd ::grammar::me::util::ast2tree] [arg ast] [arg tree] [opt [arg root]]]

This command converts an [arg ast] from value to object
representation. All nodes in the [arg ast] will be converted into
nodes of this [arg tree], with the root of the AST a child of the node
[arg root]. If this node is not explicitly specified the root of the
tree is used. Existing content of tree is not touched, i.e.  neither
removed nor changed, with the exception of the specified root node,
which will gain a new child.


[call [cmd ::grammar::me::util::ast2etree] [arg ast] [arg mcmd] [arg tree] [opt [arg root]]]

This command is like [cmd ::grammar::me::util::ast2tree], except that
the result is in the extended object representation of the input AST.

The source of the extended information is the command prefix


>
>
>







<





<












<







1
2
3
4
5
6
7
8
9
10
11
12

13
14
15
16
17

18
19
20
21
22
23
24
25
26
27
28
29

30
31
32
33
34
35
36
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::me::util n 0.1]
[keywords {abstract syntax tree}]
[keywords {syntax tree}]
[keywords tree]
[copyright {2005 Andreas Kupries <[email protected]>}]
[moddesc   {Grammar operations and usage}]
[titledesc {AST utilities}]
[category  {Grammars and finite automata}]
[require Tcl 8.4]
[require grammar::me::util [opt 0.1]]
[description]

[para]

This package provides a number of utility command for the conversion
between the various representations of abstract syntax trees as
specified in the document [syscmd grammar::me_ast].


[list_begin definitions]

[call [cmd ::grammar::me::util::ast2tree] [arg ast] [arg tree] [opt [arg root]]]

This command converts an [arg ast] from value to object
representation. All nodes in the [arg ast] will be converted into
nodes of this [arg tree], with the root of the AST a child of the node
[arg root]. If this node is not explicitly specified the root of the
tree is used. Existing content of tree is not touched, i.e.  neither
removed nor changed, with the exception of the specified root node,
which will gain a new child.


[call [cmd ::grammar::me::util::ast2etree] [arg ast] [arg mcmd] [arg tree] [opt [arg root]]]

This command is like [cmd ::grammar::me::util::ast2tree], except that
the result is in the extended object representation of the input AST.

The source of the extended information is the command prefix
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
[list_end]
[para]

Both the ensemble command [cmd ::grammar::me::tcl] provided by the
package [package grammar::me::tcl] and the objects command created by
the package [package ::grammar::me::cpu] fit the above specification.


[call [cmd ::grammar::me::util::tree2ast] [arg tree] [opt [arg root]]]

This command converts an [arg ast] in (extended) object representation
into a value and returns it.

If a [arg root] node is specified the AST is generated from that node
downward. Otherwise the root of the tree object is used as the
starting point. 

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph grammar_me] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[manpage_end]







<







|



<
|
<
<
|
<
<
<
<
<
<
<

63
64
65
66
67
68
69

70
71
72
73
74
75
76
77
78
79
80

81


82







83
[list_end]
[para]

Both the ensemble command [cmd ::grammar::me::tcl] provided by the
package [package grammar::me::tcl] and the objects command created by
the package [package ::grammar::me::cpu] fit the above specification.


[call [cmd ::grammar::me::util::tree2ast] [arg tree] [opt [arg root]]]

This command converts an [arg ast] in (extended) object representation
into a value and returns it.

If a [arg root] node is specified the AST is generated from that node
downward. Otherwise the root of the tree object is used as the
starting point.

[list_end]


[vset CATEGORY grammar_me]


[include ../doctools2base/include/feedback.inc]







[manpage_end]

Changes to modules/grammar_me/me_vm.man.

1
2



3
4
5
6
7
8
9
10
11
12
13
14
15
16
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::me_vm n 0.1]



[copyright {2005 Andreas Kupries <[email protected]>}]
[moddesc   {Grammar operations and usage}]
[titledesc {Virtual machine for parsing token streams}]
[category  {Grammars and finite automata}]
[description]
[keywords {virtual machine}]
[keywords parsing grammar]

Please go and read the document [syscmd grammar::me_intro] first for
an overview of the various documents and their relations.

[para]

This document specifies a virtual machine for the controlled matching


>
>
>





<
<







1
2
3
4
5
6
7
8
9
10


11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::me_vm n 0.1]
[keywords grammar]
[keywords parsing]
[keywords {virtual machine}]
[copyright {2005 Andreas Kupries <[email protected]>}]
[moddesc   {Grammar operations and usage}]
[titledesc {Virtual machine for parsing token streams}]
[category  {Grammars and finite automata}]
[description]



Please go and read the document [syscmd grammar::me_intro] first for
an overview of the various documents and their relations.

[para]

This document specifies a virtual machine for the controlled matching
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
implemented with it as well.

[para]

The following sections will discuss first the abstract state kept by
ME virtual machines, and then their instruction set.


[section {MACHINE STATE}]

A ME virtual machine manages the following state:

[list_begin definitions]
[def "[term {Current token}] CT"]

The token from the input under consideration by the machine.

[para]

This information is used and modified by the instructions defined in
the section

[sectref {TERMINAL MATCHING}].


[def "[term {Current location}] CL"]

The location of the [term {current token}] in the input stream, as
offset relative to the beginning of the stream. The first token is
considered to be at offset [const 0].

[para]

This information is implicitly used and modified by the instructions
defined in the sections

[sectref {TERMINAL MATCHING}] and
[sectref {NONTERMINAL MATCHING}],

and can be directly queried and modified by the instructions defined
in section

[sectref {INPUT LOCATION HANDLING}].


[def "[term {Location stack}] LS"]

In addition to the above a stack of locations, for backtracking.
Locations can put on the stack, removed from it, and removed with
setting the current location.

[para]

This information is implicitly used and modified by the instructions
defined in the sections

[sectref {TERMINAL MATCHING}] and
[sectref {NONTERMINAL MATCHING}],

and can be directly queried and modified by the instructions defined
in section

[sectref {INPUT LOCATION HANDLING}].


[def "[term {Match status}] OK"]

A boolean value, the result of the last attempt at matching input.
It is set to [const true] if that attempt was successful, and
[const false] otherwise.

[para]

This information is influenced by the instructions defined in the
sections

[sectref {TERMINAL MATCHING}],
[sectref {NONTERMINAL MATCHING}], and
[sectref {UNCONDITIONAL MATCHING}].

It is queried by the instructions defined in the section

[sectref {CONTROL FLOW}].


[def "[term {Semantic value}] SV"]

The semantic value associated with (generated by) the last attempt at
matching input. Contains either the empty string or a node for the
abstract syntax tree constructed from the input.

[para]

This information is influenced by the instructions defined in the
sections

[sectref {SEMANTIC VALUES}], and
[sectref {AST STACK HANDLING}].


[def "[term {AST stack}] AS"]

A stack of partial abstract syntax trees constructed by the machine
during matching.

[para]

This information is influenced by the instructions defined in the
sections

[sectref {SEMANTIC VALUES}], and
[sectref {AST STACK HANDLING}].


[def "[term {AST Marker stack}] MS"]

In addition to the above a stack of stacks, for backtracking. This is
actually a stack of markers into the AST stack, thus implicitly
snapshooting the state of the AST stack at some point in time. Markers
can be put on the stack, dropped from it, and used to roll back the
AST stack to an earlier state.

[para]

This information is influenced by the instructions defined in the
sections

[sectref {SEMANTIC VALUES}], and
[sectref {AST STACK HANDLING}].


[def "[term {Error status}] ER"]

Error information associated with the last attempt at matching
input. Contains either the empty string or a list of 2 elements, a
location in the input and a list of error messages associated with
it, in this order.







<















<




















<


















<




















<














<












<
















<







30
31
32
33
34
35
36

37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71

72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89

90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109

110
111
112
113
114
115
116
117
118
119
120
121
122
123

124
125
126
127
128
129
130
131
132
133
134
135

136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151

152
153
154
155
156
157
158
implemented with it as well.

[para]

The following sections will discuss first the abstract state kept by
ME virtual machines, and then their instruction set.


[section {MACHINE STATE}]

A ME virtual machine manages the following state:

[list_begin definitions]
[def "[term {Current token}] CT"]

The token from the input under consideration by the machine.

[para]

This information is used and modified by the instructions defined in
the section

[sectref {TERMINAL MATCHING}].


[def "[term {Current location}] CL"]

The location of the [term {current token}] in the input stream, as
offset relative to the beginning of the stream. The first token is
considered to be at offset [const 0].

[para]

This information is implicitly used and modified by the instructions
defined in the sections

[sectref {TERMINAL MATCHING}] and
[sectref {NONTERMINAL MATCHING}],

and can be directly queried and modified by the instructions defined
in section

[sectref {INPUT LOCATION HANDLING}].


[def "[term {Location stack}] LS"]

In addition to the above a stack of locations, for backtracking.
Locations can put on the stack, removed from it, and removed with
setting the current location.

[para]

This information is implicitly used and modified by the instructions
defined in the sections

[sectref {TERMINAL MATCHING}] and
[sectref {NONTERMINAL MATCHING}],

and can be directly queried and modified by the instructions defined
in section

[sectref {INPUT LOCATION HANDLING}].


[def "[term {Match status}] OK"]

A boolean value, the result of the last attempt at matching input.
It is set to [const true] if that attempt was successful, and
[const false] otherwise.

[para]

This information is influenced by the instructions defined in the
sections

[sectref {TERMINAL MATCHING}],
[sectref {NONTERMINAL MATCHING}], and
[sectref {UNCONDITIONAL MATCHING}].

It is queried by the instructions defined in the section

[sectref {CONTROL FLOW}].


[def "[term {Semantic value}] SV"]

The semantic value associated with (generated by) the last attempt at
matching input. Contains either the empty string or a node for the
abstract syntax tree constructed from the input.

[para]

This information is influenced by the instructions defined in the
sections

[sectref {SEMANTIC VALUES}], and
[sectref {AST STACK HANDLING}].


[def "[term {AST stack}] AS"]

A stack of partial abstract syntax trees constructed by the machine
during matching.

[para]

This information is influenced by the instructions defined in the
sections

[sectref {SEMANTIC VALUES}], and
[sectref {AST STACK HANDLING}].


[def "[term {AST Marker stack}] MS"]

In addition to the above a stack of stacks, for backtracking. This is
actually a stack of markers into the AST stack, thus implicitly
snapshooting the state of the AST stack at some point in time. Markers
can be put on the stack, dropped from it, and used to roll back the
AST stack to an earlier state.

[para]

This information is influenced by the instructions defined in the
sections

[sectref {SEMANTIC VALUES}], and
[sectref {AST STACK HANDLING}].


[def "[term {Error status}] ER"]

Error information associated with the last attempt at matching
input. Contains either the empty string or a list of 2 elements, a
location in the input and a list of error messages associated with
it, in this order.
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
This information is queried and influenced by the instructions defined
in the sections

[sectref {TERMINAL MATCHING}],
[sectref {NONTERMINAL MATCHING}], and
[sectref {ERROR HANDLING}].


[def "[term {Error stack}] ES"]

In addition to the above a stack of error information, to allow the
merging of current and older error information when performing
backtracking in choices after an unsucessful match.

[para]

This information is queried and influenced by the instructions defined
in the sections

[sectref {TERMINAL MATCHING}],
[sectref {NONTERMINAL MATCHING}], and
[sectref {ERROR HANDLING}].


[def "[term {Return stack}] RS"]

A stack of program counter values, i.e. locations in the code
controlling the virtual machine, for the management of subroutine
calls, i.e. the matching of nonterminal symbols.

[para]

This information is queried and influenced by the instructions defined
in the section

[sectref {NONTERMINAL MATCHING}].


[def "[term {Nonterminal cache}] NC"]

A cache of machine states (A 4-tuple containing a location in the
input, match status [term OK], semantic value [term SV], and error
status [term ER]) keyed by name of nonterminal symbol and location in
the input stream.







<















<












<







171
172
173
174
175
176
177

178
179
180
181
182
183
184
185
186
187
188
189
190
191
192

193
194
195
196
197
198
199
200
201
202
203
204

205
206
207
208
209
210
211
This information is queried and influenced by the instructions defined
in the sections

[sectref {TERMINAL MATCHING}],
[sectref {NONTERMINAL MATCHING}], and
[sectref {ERROR HANDLING}].


[def "[term {Error stack}] ES"]

In addition to the above a stack of error information, to allow the
merging of current and older error information when performing
backtracking in choices after an unsucessful match.

[para]

This information is queried and influenced by the instructions defined
in the sections

[sectref {TERMINAL MATCHING}],
[sectref {NONTERMINAL MATCHING}], and
[sectref {ERROR HANDLING}].


[def "[term {Return stack}] RS"]

A stack of program counter values, i.e. locations in the code
controlling the virtual machine, for the management of subroutine
calls, i.e. the matching of nonterminal symbols.

[para]

This information is queried and influenced by the instructions defined
in the section

[sectref {NONTERMINAL MATCHING}].


[def "[term {Nonterminal cache}] NC"]

A cache of machine states (A 4-tuple containing a location in the
input, match status [term OK], semantic value [term SV], and error
status [term ER]) keyed by name of nonterminal symbol and location in
the input stream.
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
This status is queried and influenced by the instructions defined in
the section

[sectref {NONTERMINAL MATCHING}].

[list_end]


[section {MACHINE INSTRUCTIONS}]

With the machine state specified it is now possible to explain the
instruction set of ME virtual machines. They are grouped roughly by
the machine state they influence and/or query.


[subsection {TERMINAL MATCHING}]

First the instructions to match tokens from the input stream, and
by extension all terminal symbols.

[para]







<





<







222
223
224
225
226
227
228

229
230
231
232
233

234
235
236
237
238
239
240
This status is queried and influenced by the instructions defined in
the section

[sectref {NONTERMINAL MATCHING}].

[list_end]


[section {MACHINE INSTRUCTIONS}]

With the machine state specified it is now possible to explain the
instruction set of ME virtual machines. They are grouped roughly by
the machine state they influence and/or query.


[subsection {TERMINAL MATCHING}]

First the instructions to match tokens from the input stream, and
by extension all terminal symbols.

[para]
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
made the current location [term CL].

[para]

The argument [arg message] is a reference to the string to put into
the error status [term ER], if such is needed.


[def "[cmd ict_match_token] [arg tok] [arg message]"]

This instruction tests the current token [term CT] for equality
with the argument [arg tok] and records the result in the match
status [term OK]. The instruction fails if the current token is
not equal to [arg tok].

[para]

In case of failure the error status [term ER] is set to the current
location [term CL] and the message [arg message], and the
current location [term CL] is moved one token backwards.

Otherwise, i.e. upon success, the error status [term ER] is cleared
and the current location [term CL] is not touched.


[def "[cmd ict_match_tokrange] [arg tokbegin] [arg tokend] [arg message]"]

This instruction tests the current token [term CT] for being in
the range of tokens from [arg tokbegin] to [arg tokend]
(inclusive) and records the result in the match status [term OK]. The
instruction fails if the current token is not inside the range.

[para]

In case of failure the error status [term ER] is set to the current
location [term CL] and the message [arg message], and the current location
[term CL] is moved one token backwards.

Otherwise, i.e. upon success, the error status [term ER] is cleared
and the current location [term CL] is not touched.


[def "[cmd ict_match_tokclass] [arg code] [arg message]"]

This instruction tests the current token [term CT] for being a member
of the token class [arg code] and records the result in the match
status [term OK]. The instruction fails if the current token is not a
member of the specified class.







<
















<















<







268
269
270
271
272
273
274

275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290

291
292
293
294
295
296
297
298
299
300
301
302
303
304
305

306
307
308
309
310
311
312
made the current location [term CL].

[para]

The argument [arg message] is a reference to the string to put into
the error status [term ER], if such is needed.


[def "[cmd ict_match_token] [arg tok] [arg message]"]

This instruction tests the current token [term CT] for equality
with the argument [arg tok] and records the result in the match
status [term OK]. The instruction fails if the current token is
not equal to [arg tok].

[para]

In case of failure the error status [term ER] is set to the current
location [term CL] and the message [arg message], and the
current location [term CL] is moved one token backwards.

Otherwise, i.e. upon success, the error status [term ER] is cleared
and the current location [term CL] is not touched.


[def "[cmd ict_match_tokrange] [arg tokbegin] [arg tokend] [arg message]"]

This instruction tests the current token [term CT] for being in
the range of tokens from [arg tokbegin] to [arg tokend]
(inclusive) and records the result in the match status [term OK]. The
instruction fails if the current token is not inside the range.

[para]

In case of failure the error status [term ER] is set to the current
location [term CL] and the message [arg message], and the current location
[term CL] is moved one token backwards.

Otherwise, i.e. upon success, the error status [term ER] is cleared
and the current location [term CL] is not touched.


[def "[cmd ict_match_tokclass] [arg code] [arg message]"]

This instruction tests the current token [term CT] for being a member
of the token class [arg code] and records the result in the match
status [term OK]. The instruction fails if the current token is not a
member of the specified class.
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
A token is accepted if it is a unicode punctuation character.
[def space]
A token is accepted if it is a unicode space character.
[list_end]

[list_end]
[para]


[subsection {NONTERMINAL MATCHING}]

The instructions in this section handle the matching of nonterminal
symbols. They query the nonterminal cache [term NC] for saved
information, and put such information into the cache.








<







337
338
339
340
341
342
343

344
345
346
347
348
349
350
A token is accepted if it is a unicode punctuation character.
[def space]
A token is accepted if it is a unicode space character.
[list_end]

[list_end]
[para]


[subsection {NONTERMINAL MATCHING}]

The instructions in this section handle the matching of nonterminal
symbols. They query the nonterminal cache [term NC] for saved
information, and put such information into the cache.

392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577

[para]

Together with [cmd icf_ntcall] it is possible to generate code for
memoized and non-memoized matching of nonterminal symbols, either as
subroutine calls, or inlined in the caller.


[def "[cmd inc_save] [arg nt]"]

This instruction saves the current state of the machine (current
location [term CL], match status [term OK], semantic value [term SV],
and error status [term ER]), to the nonterminal cache [term NC]. It
will also pop an entry from the location stack [term LS] and save it
as the start location of the match.

[para]

It is expected to be called at the end of matching a nonterminal
symbol, with [arg nt] the name of the nonterminal symbol the code was
working on. This allows the instruction [cmd inc_restore] to check for
and retrieve the data, should we have to match this nonterminal symbol
at the same location again, during backtracking.


[def "[cmd icf_ntcall] [arg branchlabel]"]

This instruction invokes the code for matching the nonterminal symbol
[arg nt] as a subroutine. To this end it stores the current program
counter [term PC] on the return stack [term RS], the current location
[term CL] on the location stack [term LS], and then continues
execution at the address [arg branchlabel].

[para]

The next matching [cmd icf_ntreturn] will cause the execution to
continue at the instruction coming after the call.


[def [cmd icf_ntreturn]]

This instruction will pop an entry from the return stack [term RS],
assign it to the program counter [term PC], and then continue
execution at the new address.

[list_end]
[para]


[subsection {UNCONDITIONAL MATCHING}]

The instructions in this section are the remaining match
operators. They change the match status [term OK] directly and
unconditionally.

[list_begin definitions]

[def [cmd iok_ok]]

This instruction sets the match status [term OK] to [const true],
indicating a successful match.


[def [cmd iok_fail]]

This instruction sets the match status [term OK] to [const false],
indicating a failed match.


[def [cmd iok_negate]]

This instruction negates the match status [term OK], turning a failure
into a success and vice versa.

[list_end]
[para]


[subsection {CONTROL FLOW}]

The instructions in this section implement both conditional and
unconditional control flow. The conditional jumps query the match
status [term OK].

[list_begin definitions]

[def "[cmd icf_jalways] [arg branchlabel]"]

This instruction sets the program counter [term PC] to the address
specified by [arg branchlabel] and then continues execution from
there. This is an unconditional jump.


[def "[cmd icf_jok] [arg branchlabel]"]

This instruction sets the program counter [term PC] to the address
specified by [arg branchlabel]. This happens if, and only if the match
status [term OK] indicates a success. Otherwise it simply continues
execution at the next instruction. This is a conditional jump.


[def "[cmd icf_jfail] [arg branchlabel]"]

This instruction sets the program counter [term PC] to the address
specified by [arg branchlabel]. This happens if, and only if the match
status [term OK] indicates a failure. Otherwise it simply continues
execution at the next instruction. This is a conditional jump.


[def [cmd icf_halt]]

This instruction halts the machine and blocks any further execution.

[list_end]


[subsection {INPUT LOCATION HANDLING}]

The instructions in this section are for backtracking, they manipulate
the current location [term CL] of the machine state.

They allow a user of the machine to query and save locations in the
input, and to rewind the current location [term CL] to saved
locations, making them one of the components enabling the
implementation of backtracking parsers.

[list_begin definitions]

[def [cmd icl_push]]

This instruction pushes a copy of the current location [term CL] on
the location stack [term LS].


[def [cmd icl_rewind]]

This instruction pops an entry from the location stack [term LS] and
then moves the current location [term CL] back to this point in the
input.


[def [cmd icl_pop]]

This instruction pops an entry from the location stack [term LS] and
discards it.

[list_end]
[para]


[subsection {ERROR HANDLING}]

The instructions in this section provide read and write access to the
error status [term ER] of the machine.

[list_begin definitions]

[def [cmd ier_push]]

This instruction pushes a copy of the current error status [term ER]
on the error stack [term ES].


[def [cmd ier_clear]]

This instruction clears the error status [term ER].


[def "[cmd ier_nonterminal] [arg message]"]

This instruction checks if the error status [term ER] contains an
error whose location is just past the location found in the top entry
of the location stack [term LS].

Nothing happens if no such error is found.

Otherwise the found error is replaced by an error at the location
found on the stack, having the message [arg message].


[def [cmd ier_merge]]

This instruction pops an entry from the error stack [term ES], merges
it with the current error status [term ER] and stores the result of
the merge as the new error status [term ER].








<
















<













<








<














<




<








<















<






<








<





<


















<





<








<













<



<











<







376
377
378
379
380
381
382

383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398

399
400
401
402
403
404
405
406
407
408
409
410
411

412
413
414
415
416
417
418
419

420
421
422
423
424
425
426
427
428
429
430
431
432
433

434
435
436
437

438
439
440
441
442
443
444
445

446
447
448
449
450
451
452
453
454
455
456
457
458
459
460

461
462
463
464
465
466

467
468
469
470
471
472
473
474

475
476
477
478
479

480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497

498
499
500
501
502

503
504
505
506
507
508
509
510

511
512
513
514
515
516
517
518
519
520
521
522
523

524
525
526

527
528
529
530
531
532
533
534
535
536
537

538
539
540
541
542
543
544

[para]

Together with [cmd icf_ntcall] it is possible to generate code for
memoized and non-memoized matching of nonterminal symbols, either as
subroutine calls, or inlined in the caller.


[def "[cmd inc_save] [arg nt]"]

This instruction saves the current state of the machine (current
location [term CL], match status [term OK], semantic value [term SV],
and error status [term ER]), to the nonterminal cache [term NC]. It
will also pop an entry from the location stack [term LS] and save it
as the start location of the match.

[para]

It is expected to be called at the end of matching a nonterminal
symbol, with [arg nt] the name of the nonterminal symbol the code was
working on. This allows the instruction [cmd inc_restore] to check for
and retrieve the data, should we have to match this nonterminal symbol
at the same location again, during backtracking.


[def "[cmd icf_ntcall] [arg branchlabel]"]

This instruction invokes the code for matching the nonterminal symbol
[arg nt] as a subroutine. To this end it stores the current program
counter [term PC] on the return stack [term RS], the current location
[term CL] on the location stack [term LS], and then continues
execution at the address [arg branchlabel].

[para]

The next matching [cmd icf_ntreturn] will cause the execution to
continue at the instruction coming after the call.


[def [cmd icf_ntreturn]]

This instruction will pop an entry from the return stack [term RS],
assign it to the program counter [term PC], and then continue
execution at the new address.

[list_end]
[para]


[subsection {UNCONDITIONAL MATCHING}]

The instructions in this section are the remaining match
operators. They change the match status [term OK] directly and
unconditionally.

[list_begin definitions]

[def [cmd iok_ok]]

This instruction sets the match status [term OK] to [const true],
indicating a successful match.


[def [cmd iok_fail]]

This instruction sets the match status [term OK] to [const false],
indicating a failed match.


[def [cmd iok_negate]]

This instruction negates the match status [term OK], turning a failure
into a success and vice versa.

[list_end]
[para]


[subsection {CONTROL FLOW}]

The instructions in this section implement both conditional and
unconditional control flow. The conditional jumps query the match
status [term OK].

[list_begin definitions]

[def "[cmd icf_jalways] [arg branchlabel]"]

This instruction sets the program counter [term PC] to the address
specified by [arg branchlabel] and then continues execution from
there. This is an unconditional jump.


[def "[cmd icf_jok] [arg branchlabel]"]

This instruction sets the program counter [term PC] to the address
specified by [arg branchlabel]. This happens if, and only if the match
status [term OK] indicates a success. Otherwise it simply continues
execution at the next instruction. This is a conditional jump.


[def "[cmd icf_jfail] [arg branchlabel]"]

This instruction sets the program counter [term PC] to the address
specified by [arg branchlabel]. This happens if, and only if the match
status [term OK] indicates a failure. Otherwise it simply continues
execution at the next instruction. This is a conditional jump.


[def [cmd icf_halt]]

This instruction halts the machine and blocks any further execution.

[list_end]


[subsection {INPUT LOCATION HANDLING}]

The instructions in this section are for backtracking, they manipulate
the current location [term CL] of the machine state.

They allow a user of the machine to query and save locations in the
input, and to rewind the current location [term CL] to saved
locations, making them one of the components enabling the
implementation of backtracking parsers.

[list_begin definitions]

[def [cmd icl_push]]

This instruction pushes a copy of the current location [term CL] on
the location stack [term LS].


[def [cmd icl_rewind]]

This instruction pops an entry from the location stack [term LS] and
then moves the current location [term CL] back to this point in the
input.


[def [cmd icl_pop]]

This instruction pops an entry from the location stack [term LS] and
discards it.

[list_end]
[para]


[subsection {ERROR HANDLING}]

The instructions in this section provide read and write access to the
error status [term ER] of the machine.

[list_begin definitions]

[def [cmd ier_push]]

This instruction pushes a copy of the current error status [term ER]
on the error stack [term ES].


[def [cmd ier_clear]]

This instruction clears the error status [term ER].


[def "[cmd ier_nonterminal] [arg message]"]

This instruction checks if the error status [term ER] contains an
error whose location is just past the location found in the top entry
of the location stack [term LS].

Nothing happens if no such error is found.

Otherwise the found error is replaced by an error at the location
found on the stack, having the message [arg message].


[def [cmd ier_merge]]

This instruction pops an entry from the error stack [term ES], merges
it with the current error status [term ER] and stores the result of
the merge as the new error status [term ER].

585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
neither error state is empty, and refering to different locations,
then the error state with the location further in the input is
chosen. If both error states refer to the same location their messages
are merged (with removing duplicates).

[list_end]


[subsection {SEMANTIC VALUES}]

The instructions in this section manipulate the semantic value
[term SV].

[list_begin definitions]

[def [cmd isv_clear]]

This instruction clears the semantic value [term SV].


[def [cmd isv_terminal]]

This instruction creates a terminal AST node for the current token
[term CT], makes it the semantic value [term SV], and also pushes the
node on the AST stack [term AS].


[def "[cmd isv_nonterminal_leaf] [arg nt]"]

This instruction creates a nonterminal AST node without any children
for the nonterminal [arg nt], and makes it the semantic value
[term SV].

[para]

This instruction should be executed if, and only if the match status
[term OK] indicates a success.

In the case of a failure [cmd isv_clear] should be called.


[def "[cmd isv_nonterminal_range] [arg nt]"]

This instruction creates a nonterminal AST node for the nonterminal

[arg nt], with a single terminal node as its child, and makes this AST
the semantic value [term SV]. The terminal node refers to the input
string from the location found on top of the location stack [term LS]
to the current location [term CL] (both inclusive).

[para]

This instruction should be executed if, and only if the match status
[term OK] indicates a success.

In the case of a failure [cmd isv_clear] should be called.


[def "[cmd isv_nonterminal_reduce] [arg nt]"]

This instruction creates a nonterminal AST node for the nonterminal
[arg nt] and makes it the semantic value [term SV].

[para]







<











<





<













<
















<







552
553
554
555
556
557
558

559
560
561
562
563
564
565
566
567
568
569

570
571
572
573
574

575
576
577
578
579
580
581
582
583
584
585
586
587

588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603

604
605
606
607
608
609
610
neither error state is empty, and refering to different locations,
then the error state with the location further in the input is
chosen. If both error states refer to the same location their messages
are merged (with removing duplicates).

[list_end]


[subsection {SEMANTIC VALUES}]

The instructions in this section manipulate the semantic value
[term SV].

[list_begin definitions]

[def [cmd isv_clear]]

This instruction clears the semantic value [term SV].


[def [cmd isv_terminal]]

This instruction creates a terminal AST node for the current token
[term CT], makes it the semantic value [term SV], and also pushes the
node on the AST stack [term AS].


[def "[cmd isv_nonterminal_leaf] [arg nt]"]

This instruction creates a nonterminal AST node without any children
for the nonterminal [arg nt], and makes it the semantic value
[term SV].

[para]

This instruction should be executed if, and only if the match status
[term OK] indicates a success.

In the case of a failure [cmd isv_clear] should be called.


[def "[cmd isv_nonterminal_range] [arg nt]"]

This instruction creates a nonterminal AST node for the nonterminal

[arg nt], with a single terminal node as its child, and makes this AST
the semantic value [term SV]. The terminal node refers to the input
string from the location found on top of the location stack [term LS]
to the current location [term CL] (both inclusive).

[para]

This instruction should be executed if, and only if the match status
[term OK] indicates a success.

In the case of a failure [cmd isv_clear] should be called.


[def "[cmd isv_nonterminal_reduce] [arg nt]"]

This instruction creates a nonterminal AST node for the nonterminal
[arg nt] and makes it the semantic value [term SV].

[para]
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
[term OK] indicates a success.

In the case of a failure [cmd isv_clear] should be called.

[list_end]
[para]


[subsection {AST STACK HANDLING}]

The instructions in this section manipulate the AST stack [term AS],
and the AST Marker stack [term MS].

[list_begin definitions]

[def [cmd ias_push]]

This instruction pushes the semantic value [term SV] on the AST stack
[term AS].


[def [cmd ias_mark]]

This instruction pushes a marker for the current state of the AST
stack [term AS] on the AST Marker stack [term MS].


[def [cmd ias_mrewind]]

This instruction pops an entry from the AST Marker stack [term MS] and
then proceeds to pop entries from the AST stack [term AS] until the
state represented by the popped marker has been reached again.

Nothing is done if the AST stack [term AS] is already smaller than
indicated by the popped marker.


[def [cmd ias_mpop]]

This instruction pops an entry from the AST Marker stack [term MS] and
discards it.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph grammar_me] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[manpage_end]







<












<




<










<







<
|
<
<
|
<
<
<
<
<
<
<

621
622
623
624
625
626
627

628
629
630
631
632
633
634
635
636
637
638
639

640
641
642
643

644
645
646
647
648
649
650
651
652
653

654
655
656
657
658
659
660

661


662







663
[term OK] indicates a success.

In the case of a failure [cmd isv_clear] should be called.

[list_end]
[para]


[subsection {AST STACK HANDLING}]

The instructions in this section manipulate the AST stack [term AS],
and the AST Marker stack [term MS].

[list_begin definitions]

[def [cmd ias_push]]

This instruction pushes the semantic value [term SV] on the AST stack
[term AS].


[def [cmd ias_mark]]

This instruction pushes a marker for the current state of the AST
stack [term AS] on the AST Marker stack [term MS].


[def [cmd ias_mrewind]]

This instruction pops an entry from the AST Marker stack [term MS] and
then proceeds to pop entries from the AST stack [term AS] until the
state represented by the popped marker has been reached again.

Nothing is done if the AST stack [term AS] is already smaller than
indicated by the popped marker.


[def [cmd ias_mpop]]

This instruction pops an entry from the AST Marker stack [term MS] and
discards it.

[list_end]


[vset CATEGORY grammar_me]


[include ../doctools2base/include/feedback.inc]







[manpage_end]

Changes to modules/grammar_peg/peg.man.

1
2













3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::peg n 0.1]













[copyright {2005 Andreas Kupries <[email protected]>}]
[moddesc   {Grammar operations and usage}]
[titledesc {Create and manipulate parsing expression grammars}]
[category  {Grammars and finite automata}]
[require Tcl 8.4]
[require snit]
[require grammar::peg [opt 0.1]]
[description]
[keywords grammar expression {push down automaton}]
[keywords state {parsing expression} {parsing expression grammar}]
[keywords {context-free languages} parsing transducer LL(k)]
[keywords TDPL {top-down parsing languages} {recursive descent}]
[para]

This package provides a container class for
[term {parsing expression grammars}] (Short: PEG).

It allows the incremental definition of the grammar, its manipulation
and querying of the definition.

The package neither provides complex operations on the grammar, nor has
it the ability to execute a grammar definition for a stream of symbols.


Two packages related to this one are [package grammar::mengine] and
[package grammar::peg::interpreter]. The first of them defines a
general virtual machine for the matching of a character stream, and
the second implements an interpreter for parsing expression grammars
on top of that virtual machine.


[subsection {TERMS & CONCEPTS}]

PEGs are similar to context-free grammars, but not equivalent; in some
cases PEGs are strictly more powerful than context-free grammars (there
exist PEGs for some non-context-free languages).



>
>
>
>
>
>
>
>
>
>
>
>
>








<
<
<
<











<





<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23




24
25
26
27
28
29
30
31
32
33
34

35
36
37
38
39

40
41
42
43
44
45
46
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::peg n 0.1]
[keywords {context-free languages}]
[keywords expression]
[keywords grammar]
[keywords LL(k)]
[keywords parsing]
[keywords {parsing expression}]
[keywords {parsing expression grammar}]
[keywords {push down automaton}]
[keywords {recursive descent}]
[keywords state]
[keywords TDPL]
[keywords {top-down parsing languages}]
[keywords transducer]
[copyright {2005 Andreas Kupries <[email protected]>}]
[moddesc   {Grammar operations and usage}]
[titledesc {Create and manipulate parsing expression grammars}]
[category  {Grammars and finite automata}]
[require Tcl 8.4]
[require snit]
[require grammar::peg [opt 0.1]]
[description]




[para]

This package provides a container class for
[term {parsing expression grammars}] (Short: PEG).

It allows the incremental definition of the grammar, its manipulation
and querying of the definition.

The package neither provides complex operations on the grammar, nor has
it the ability to execute a grammar definition for a stream of symbols.


Two packages related to this one are [package grammar::mengine] and
[package grammar::peg::interpreter]. The first of them defines a
general virtual machine for the matching of a character stream, and
the second implements an interpreter for parsing expression grammars
on top of that virtual machine.


[subsection {TERMS & CONCEPTS}]

PEGs are similar to context-free grammars, but not equivalent; in some
cases PEGs are strictly more powerful than context-free grammars (there
exist PEGs for some non-context-free languages).

168
169
170
171
172
173
174
175
176
177
178
179
180
181
182

We cannot use the term [term incomplete] as this term is already
taken, see the last item.

[list_end]
[para]


[subsection {CONTAINER CLASS API}]

The package exports the API described here.

[list_begin definitions]

[call [cmd ::grammar::peg] [arg pegName] \







<







175
176
177
178
179
180
181

182
183
184
185
186
187
188

We cannot use the term [term incomplete] as this term is already
taken, see the last item.

[list_end]
[para]


[subsection {CONTAINER CLASS API}]

The package exports the API described here.

[list_begin definitions]

[call [cmd ::grammar::peg] [arg pegName] \
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274

An empty grammar has no nonterminal symbols, and the start expression
is the empty expression, i.e. epsilon. It is [term valid], but not
[term useful].

[list_end]


[subsection {CONTAINER OBJECT API}]
[para]

All grammar container objects provide the following methods for the
manipulation of their contents:

[list_begin definitions]


[call [arg pegName] [method destroy]]

Destroys the grammar, including its storage space and associated
command.


[call [arg pegName] [method clear]]

Clears out the definition of the grammar contained in [arg pegName],
but does [emph not] destroy the object.


[call [arg pegName] [method =] [arg srcPEG]]

Assigns the contents of the grammar contained in [arg srcPEG] to
[arg pegName], overwriting any existing definition.

This is the assignment operator for grammars. It copies the grammar
contained in the grammar object [arg srcPEG] over the grammar
definition in [arg pegName]. The old contents of [arg pegName] are
deleted by this operation.

[para]

This operation is in effect equivalent to
[para]
[example_begin]
    [arg pegName] [method deserialize] [lb][arg srcPEG] [method serialize][rb]
[example_end]


[call [arg pegName] [method -->] [arg dstPEG]]

This is the reverse assignment operator for grammars. It copies the
automation contained in the object [arg pegName] over the grammar
definition in the object [arg dstPEG].

The old contents of [arg dstPEG] are deleted by this operation.

[para]

This operation is in effect equivalent to
[para]
[example_begin]
    [arg dstPEG] [method deserialize] [lb][arg pegName] [method serialize][rb]
[example_end]


[call [arg pegName] [method serialize]]

This method serializes the grammar stored in [arg pegName]. In other
words it returns a tcl [emph value] completely describing that
grammar.








<








<





<




<



















<















<







210
211
212
213
214
215
216

217
218
219
220
221
222
223
224

225
226
227
228
229

230
231
232
233

234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252

253
254
255
256
257
258
259
260
261
262
263
264
265
266
267

268
269
270
271
272
273
274

An empty grammar has no nonterminal symbols, and the start expression
is the empty expression, i.e. epsilon. It is [term valid], but not
[term useful].

[list_end]


[subsection {CONTAINER OBJECT API}]
[para]

All grammar container objects provide the following methods for the
manipulation of their contents:

[list_begin definitions]


[call [arg pegName] [method destroy]]

Destroys the grammar, including its storage space and associated
command.


[call [arg pegName] [method clear]]

Clears out the definition of the grammar contained in [arg pegName],
but does [emph not] destroy the object.


[call [arg pegName] [method =] [arg srcPEG]]

Assigns the contents of the grammar contained in [arg srcPEG] to
[arg pegName], overwriting any existing definition.

This is the assignment operator for grammars. It copies the grammar
contained in the grammar object [arg srcPEG] over the grammar
definition in [arg pegName]. The old contents of [arg pegName] are
deleted by this operation.

[para]

This operation is in effect equivalent to
[para]
[example_begin]
    [arg pegName] [method deserialize] [lb][arg srcPEG] [method serialize][rb]
[example_end]


[call [arg pegName] [method -->] [arg dstPEG]]

This is the reverse assignment operator for grammars. It copies the
automation contained in the object [arg pegName] over the grammar
definition in the object [arg dstPEG].

The old contents of [arg dstPEG] are deleted by this operation.

[para]

This operation is in effect equivalent to
[para]
[example_begin]
    [arg dstPEG] [method deserialize] [lb][arg pegName] [method serialize][rb]
[example_end]


[call [arg pegName] [method serialize]]

This method serializes the grammar stored in [arg pegName]. In other
words it returns a tcl [emph value] completely describing that
grammar.

347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
    Expression
}]
[para]

A possible one, because the order of the nonterminals in the
dictionary is not relevant.


[call [arg pegName] [method deserialize] [arg serialization]]

This is the complement to [method serialize]. It replaces the grammar
definition in [arg pegName] with the grammar described by the
[arg serialization] value. The old contents of [arg pegName] are
deleted by this operation.


[call [arg pegName] [method {is valid}]]

A predicate. It tests whether the PEG in [arg pegName] is [term valid].
See section [sectref {TERMS & CONCEPTS}] for the definition of this
grammar property.

The result is a boolean value. It will be set to [const true] if
the PEG has the tested property, and [const false] otherwise.


[call [arg pegName] [method start] [opt [arg pe]]]

This method defines the [term {start expression}] of the grammar. It
replaces the previously defined start expression with the parsing
expression [arg pe].

The method fails and throws an error if [arg pe] does not contain a
valid parsing expression as specified in the section
[sectref {PARSING EXPRESSIONS}]. In that case the existing start
expression is not changed.

The method returns the empty string as its result.

[para]

If the method is called without an argument it will return the currently
defined start expression.


[call [arg pegName] [method nonterminals]]

Returns the set of all nonterminal symbols known to the grammar.


[call [arg pegName] [method {nonterminal add}] [arg nt] [arg pe]]

This method adds the nonterminal [arg nt] and its associated parsing
expression [arg pe] to the set of nonterminal symbols and rules of the
PEG contained in the object [arg pegName].

The method fails and throws an error if either the string [arg nt] is
already known as a symbol of the grammar, or if [arg pe] does not
contain a valid parsing expression as specified in the section
[sectref {PARSING EXPRESSIONS}]. In that case the current set of
nonterminal symbols and rules is not changed.

The method returns the empty string as its result.


[call [arg pegName] [method {nonterminal delete}] [arg nt1] [opt "[arg nt2] ..."]]

This method removes the named symbols [arg nt1], [arg nt2] from the
set of nonterminal symbols of the PEG contained in the object
[arg pegName].

The method fails and throws an error if any of the strings is not
known as a nonterminal symbol. In that case the current set of
nonterminal symbols is not changed.

The method returns the empty string as its result.

[para]

The stored grammar becomes invalid if the deleted nonterminals are
referenced by the RHS of still-known rules.


[call [arg pegName] [method {nonterminal exists}] [arg nt]]

A predicate. It tests whether the nonterminal symbol [arg nt] is known
to the PEG in [arg pegName].

The result is a boolean value. It will be set to [const true] if the
symbol [arg nt] is known, and [const false] otherwise.


[call [arg pegName] [method {nonterminal rename}] [arg nt] [arg ntnew]]

This method renames the nonterminal symbol [arg nt] to [arg ntnew].

The method fails and throws an error if either [arg nt] is not known
as a nonterminal, or if [arg ntnew] is a known symbol.

The method returns the empty string as its result.


[call [arg pegName] [method {nonterminal mode}] [arg nt] [opt [arg mode]]]

This mode returns or sets the semantic mode associated with the
nonterminal symbol [arg nt]. If no [arg mode] is specified the
current mode of the nonterminal is returned. Otherwise the current
mode is set to [arg mode].







<






<









<



















<



<














<


















<







<









<







347
348
349
350
351
352
353

354
355
356
357
358
359

360
361
362
363
364
365
366
367
368

369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387

388
389
390

391
392
393
394
395
396
397
398
399
400
401
402
403
404

405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422

423
424
425
426
427
428
429

430
431
432
433
434
435
436
437
438

439
440
441
442
443
444
445
    Expression
}]
[para]

A possible one, because the order of the nonterminals in the
dictionary is not relevant.


[call [arg pegName] [method deserialize] [arg serialization]]

This is the complement to [method serialize]. It replaces the grammar
definition in [arg pegName] with the grammar described by the
[arg serialization] value. The old contents of [arg pegName] are
deleted by this operation.


[call [arg pegName] [method {is valid}]]

A predicate. It tests whether the PEG in [arg pegName] is [term valid].
See section [sectref {TERMS & CONCEPTS}] for the definition of this
grammar property.

The result is a boolean value. It will be set to [const true] if
the PEG has the tested property, and [const false] otherwise.


[call [arg pegName] [method start] [opt [arg pe]]]

This method defines the [term {start expression}] of the grammar. It
replaces the previously defined start expression with the parsing
expression [arg pe].

The method fails and throws an error if [arg pe] does not contain a
valid parsing expression as specified in the section
[sectref {PARSING EXPRESSIONS}]. In that case the existing start
expression is not changed.

The method returns the empty string as its result.

[para]

If the method is called without an argument it will return the currently
defined start expression.


[call [arg pegName] [method nonterminals]]

Returns the set of all nonterminal symbols known to the grammar.


[call [arg pegName] [method {nonterminal add}] [arg nt] [arg pe]]

This method adds the nonterminal [arg nt] and its associated parsing
expression [arg pe] to the set of nonterminal symbols and rules of the
PEG contained in the object [arg pegName].

The method fails and throws an error if either the string [arg nt] is
already known as a symbol of the grammar, or if [arg pe] does not
contain a valid parsing expression as specified in the section
[sectref {PARSING EXPRESSIONS}]. In that case the current set of
nonterminal symbols and rules is not changed.

The method returns the empty string as its result.


[call [arg pegName] [method {nonterminal delete}] [arg nt1] [opt "[arg nt2] ..."]]

This method removes the named symbols [arg nt1], [arg nt2] from the
set of nonterminal symbols of the PEG contained in the object
[arg pegName].

The method fails and throws an error if any of the strings is not
known as a nonterminal symbol. In that case the current set of
nonterminal symbols is not changed.

The method returns the empty string as its result.

[para]

The stored grammar becomes invalid if the deleted nonterminals are
referenced by the RHS of still-known rules.


[call [arg pegName] [method {nonterminal exists}] [arg nt]]

A predicate. It tests whether the nonterminal symbol [arg nt] is known
to the PEG in [arg pegName].

The result is a boolean value. It will be set to [const true] if the
symbol [arg nt] is known, and [const false] otherwise.


[call [arg pegName] [method {nonterminal rename}] [arg nt] [arg ntnew]]

This method renames the nonterminal symbol [arg nt] to [arg ntnew].

The method fails and throws an error if either [arg nt] is not known
as a nonterminal, or if [arg ntnew] is a known symbol.

The method returns the empty string as its result.


[call [arg pegName] [method {nonterminal mode}] [arg nt] [opt [arg mode]]]

This mode returns or sets the semantic mode associated with the
nonterminal symbol [arg nt]. If no [arg mode] is specified the
current mode of the nonterminal is returned. Otherwise the current
mode is set to [arg mode].
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
[def discard]

The nonterminal has no semantic value. The ASTs generated by the RHS
are discarded (as well).

[list_end]


[call [arg pegName] [method {nonterminal rule}] [arg nt]]

This method returns the parsing expression associated with the
nonterminal [arg nt].

The method fails and throws an error if [arg nt] is not known as a
nonterminal.


[call [arg pegName] [method {unknown nonterminals}]]

This method returns a list containing the names of all nonterminal
symbols which are referenced on the RHS of a grammatical rule, but
have no rule definining their structure. In other words, a list of
the nonterminal symbols which make the grammar invalid. The grammar
is valid if this list is empty.


[list_end]

[para]

[subsection {PARSING EXPRESSIONS}]
[para]







<








<







<







473
474
475
476
477
478
479

480
481
482
483
484
485
486
487

488
489
490
491
492
493
494

495
496
497
498
499
500
501
[def discard]

The nonterminal has no semantic value. The ASTs generated by the RHS
are discarded (as well).

[list_end]


[call [arg pegName] [method {nonterminal rule}] [arg nt]]

This method returns the parsing expression associated with the
nonterminal [arg nt].

The method fails and throws an error if [arg nt] is not known as a
nonterminal.


[call [arg pegName] [method {unknown nonterminals}]]

This method returns a list containing the names of all nonterminal
symbols which are referenced on the RHS of a grammatical rule, but
have no rule definining their structure. In other words, a list of
the nonterminal symbols which make the grammar invalid. The grammar
is valid if this list is empty.


[list_end]

[para]

[subsection {PARSING EXPRESSIONS}]
[para]
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626

    [lb]list ! [var e][rb]

is a parsing expression as well.

This is the [term {not lookahead predicate}].


[enum]
For a parsing expression [var e] the result of

    [lb]list ? [var e][rb]

is a parsing expression as well.

This is the [term {optional input}].

[list_end]
[para]

Examples of parsing expressions where already shown, in the
description of the method [method serialize].


[section {PARSING EXPRESSION GRAMMARS}]
[para]

For the mathematically inclined, a PEG is a 4-tuple (VN,VT,R,eS) where

[list_begin itemized]







<














<







585
586
587
588
589
590
591

592
593
594
595
596
597
598
599
600
601
602
603
604
605

606
607
608
609
610
611
612

    [lb]list ! [var e][rb]

is a parsing expression as well.

This is the [term {not lookahead predicate}].


[enum]
For a parsing expression [var e] the result of

    [lb]list ? [var e][rb]

is a parsing expression as well.

This is the [term {optional input}].

[list_end]
[para]

Examples of parsing expressions where already shown, in the
description of the method [method serialize].


[section {PARSING EXPRESSION GRAMMARS}]
[para]

For the mathematically inclined, a PEG is a 4-tuple (VN,VT,R,eS) where

[list_begin itemized]
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718

[para]

They can be easily implemented by recursive descent parsers with
backtracking. This makes them relatives of LL(k) Context-Free
Grammars.


[section REFERENCES]

[list_begin enumerated]
[enum]
[uri {http://www.pdos.lcs.mit.edu/~baford/packrat/} \
	{The Packrat Parsing and Parsing Expression Grammars Page}],
by Bryan Ford, Massachusetts Institute of Technology. This is the main







<







690
691
692
693
694
695
696

697
698
699
700
701
702
703

[para]

They can be easily implemented by recursive descent parsers with
backtracking. This makes them relatives of LL(k) Context-Free
Grammars.


[section REFERENCES]

[list_begin enumerated]
[enum]
[uri {http://www.pdos.lcs.mit.edu/~baford/packrat/} \
	{The Packrat Parsing and Parsing Expression Grammars Page}],
by Bryan Ford, Massachusetts Institute of Technology. This is the main
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746

[enum]
[uri {http://scifac.ru.ac.za/compilers/} \
	{Compilers and Compiler Generators}], an online book using
CoCo/R, a generator for recursive descent parsers.
[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph grammar_peg] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<

712
713
714
715
716
717
718

719


720







721

[enum]
[uri {http://scifac.ru.ac.za/compilers/} \
	{Compilers and Compiler Generators}], an online book using
CoCo/R, a generator for recursive descent parsers.
[list_end]


[vset CATEGORY grammar_peg]


[include ../doctools2base/include/feedback.inc]







[manpage_end]

Changes to modules/grammar_peg/peg_interp.man.

1
2















3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::peg::interp n 0.1.1]















[copyright {2005-2011 Andreas Kupries <[email protected]>}]
[moddesc   {Grammar operations and usage}]
[titledesc {Interpreter for parsing expression grammars}]
[category  {Grammars and finite automata}]
[require Tcl 8.4]
[require grammar::mengine     [opt 0.1]]
[require grammar::peg::interp [opt 0.1.1]]
[description]
[keywords grammar expression {push down automaton}]
[keywords state {parsing expression} {parsing expression grammar}]
[keywords {context-free languages} parsing transducer LL(k)]
[keywords TDPL {top-down parsing languages} {recursive descent}]
[keywords {virtual machine} matching]
[para]

This package provides commands for the controlled matching of a
character stream via a parsing expression grammar and the creation
of an abstract syntax tree for the stream and partials.

[para]


>
>
>
>
>
>
>
>
>
>
>
>
>
>
>








<
<
<
<
<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25





26
27
28
29
30
31
32
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin grammar::peg::interp n 0.1.1]
[keywords {context-free languages}]
[keywords expression]
[keywords grammar]
[keywords LL(k)]
[keywords matching]
[keywords parsing]
[keywords {parsing expression}]
[keywords {parsing expression grammar}]
[keywords {push down automaton}]
[keywords {recursive descent}]
[keywords state]
[keywords TDPL]
[keywords {top-down parsing languages}]
[keywords transducer]
[keywords {virtual machine}]
[copyright {2005-2011 Andreas Kupries <[email protected]>}]
[moddesc   {Grammar operations and usage}]
[titledesc {Interpreter for parsing expression grammars}]
[category  {Grammars and finite automata}]
[require Tcl 8.4]
[require grammar::mengine     [opt 0.1]]
[require grammar::peg::interp [opt 0.1.1]]
[description]





[para]

This package provides commands for the controlled matching of a
character stream via a parsing expression grammar and the creation
of an abstract syntax tree for the stream and partials.

[para]
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
Also of note is that the implementation assumes a pull-type
handling of the input. In other words, the interpreter pulls
characters from the input stream as it needs them. For usage
in a push environment, i.e. where the environment pushes new
characters as they come we have to put the engine into its
own thread.


[section {THE INTERPRETER API}]

The package exports the following API

[list_begin definitions]

[call [cmd ::grammar::peg::interp::setup] [arg peg]]

This command (re)initializes the interpreter. It returns the
empty string. This command has to be invoked first, before any
matching run.

[para]

Its argument [arg peg] is the handle of an object containing the
parsing expression grammar to interpret. This grammar has to be
valid, or an error will be thrown.


[call [cmd ::grammar::peg::interp::parse] [arg nextcmd] [arg errorvar] [arg astvar]]

This command interprets the loaded grammar and tries to match it
against the stream of characters represented by the command prefix
[arg nextcmd].








<

















<







56
57
58
59
60
61
62

63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79

80
81
82
83
84
85
86
Also of note is that the implementation assumes a pull-type
handling of the input. In other words, the interpreter pulls
characters from the input stream as it needs them. For usage
in a push environment, i.e. where the environment pushes new
characters as they come we have to put the engine into its
own thread.


[section {THE INTERPRETER API}]

The package exports the following API

[list_begin definitions]

[call [cmd ::grammar::peg::interp::setup] [arg peg]]

This command (re)initializes the interpreter. It returns the
empty string. This command has to be invoked first, before any
matching run.

[para]

Its argument [arg peg] is the handle of an object containing the
parsing expression grammar to interpret. This grammar has to be
valid, or an error will be thrown.


[call [cmd ::grammar::peg::interp::parse] [arg nextcmd] [arg errorvar] [arg astvar]]

This command interprets the loaded grammar and tries to match it
against the stream of characters represented by the command prefix
[arg nextcmd].

105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
The abstract syntax tree is represented by a nested list, as
described in section [sectref-external {AST VALUES}] of
document [term grammar::me_ast].

[list_end]
[para]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph grammar_peg] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.



[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<

113
114
115
116
117
118
119

120


121








122
The abstract syntax tree is represented by a nested list, as
described in section [sectref-external {AST VALUES}] of
document [term grammar::me_ast].

[list_end]
[para]


[vset CATEGORY grammar_peg]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/hook/hook.man.

1
2










3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin hook n 0.1]










[copyright {2010, by William H. Duquette}]
[moddesc {Hooks}]
[titledesc  {Hooks}]
[category  {Programming tools}]
[require Tcl 8.5]
[require hook [opt 0.1]]
[keywords hook event subject observer producer callback]
[keywords publisher subscriber uevent]
[see_also uevent(n)]
[description]
[para]


This package provides the [cmd hook] ensemble command, which
implements the Subject/Observer pattern. It allows [term subjects],
which may be [term modules], [term objects], [term widgets], and so
forth, to synchronously call [term hooks] which may be bound to an
arbitrary number of subscribers, called [term observers]. A subject
may call any number of distinct hooks, and any number of observers can


>
>
>
>
>
>
>
>
>
>






<
<
<


<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18



19
20

21
22
23
24
25
26
27
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin hook n 0.1]
[see_also uevent(n)]
[keywords callback]
[keywords event]
[keywords hook]
[keywords observer]
[keywords producer]
[keywords publisher]
[keywords subject]
[keywords subscriber]
[keywords uevent]
[copyright {2010, by William H. Duquette}]
[moddesc {Hooks}]
[titledesc  {Hooks}]
[category  {Programming tools}]
[require Tcl 8.5]
[require hook [opt 0.1]]



[description]
[para]


This package provides the [cmd hook] ensemble command, which
implements the Subject/Observer pattern. It allows [term subjects],
which may be [term modules], [term objects], [term widgets], and so
forth, to synchronously call [term hooks] which may be bound to an
arbitrary number of subscribers, called [term observers]. A subject
may call any number of distinct hooks, and any number of observers can
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
Views subscribe.}] The Model is decoupled from the Views, and indeed
need not know whether any Views actually exist.

At present, Tcl/Tk has no standard mechanism for implementing loose
coupling of this kind. This package defines a new command, [cmd hook],
which implements just such a mechanism.


[subsection Bindings]

The [cmd hook] command manages a collection of hook bindings. A hook
binding has four elements:

[list_begin enumerated]
[enum]







<







51
52
53
54
55
56
57

58
59
60
61
62
63
64
Views subscribe.}] The Model is decoupled from the Views, and indeed
need not know whether any Views actually exist.

At present, Tcl/Tk has no standard mechanism for implementing loose
coupling of this kind. This package defines a new command, [cmd hook],
which implements just such a mechanism.


[subsection Bindings]

The [cmd hook] command manages a collection of hook bindings. A hook
binding has four elements:

[list_begin enumerated]
[enum]
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
names and arguments of the hooks it can call.

[enum]
The name of the [term observer] that wishes to receive the [term hook]
from the [term subject].

[enum]
A command prefix to which the [term hook] arguments will be appended 
when the binding is executed. 

[list_end]


[subsection {Subjects and observers}]

For convenience, this document collectively refers to subjects and
observers as [term objects], while placing no requirements on how
these [term objects] are actually implemented. An object can be a
[package TclOO] or [package Snit] or [package XOTcl] object, a Tcl







|
|


<







73
74
75
76
77
78
79
80
81
82
83

84
85
86
87
88
89
90
names and arguments of the hooks it can call.

[enum]
The name of the [term observer] that wishes to receive the [term hook]
from the [term subject].

[enum]
A command prefix to which the [term hook] arguments will be appended
when the binding is executed.

[list_end]


[subsection {Subjects and observers}]

For convenience, this document collectively refers to subjects and
observers as [term objects], while placing no requirements on how
these [term objects] are actually implemented. An object can be a
[package TclOO] or [package Snit] or [package XOTcl] object, a Tcl
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
other packages, users of [package hook], these [cmd ::foo] handles
should have names like [const ::foo::1], [const ::foo::2], and so on.

[para]
Because object names are arbitrary strings, application code can use
whatever additional conventions are dictated by the needs of the
application.


[section Reference]

Hook provides the following commands:

[list_begin definitions]








<







109
110
111
112
113
114
115

116
117
118
119
120
121
122
other packages, users of [package hook], these [cmd ::foo] handles
should have names like [const ::foo::1], [const ::foo::2], and so on.

[para]
Because object names are arbitrary strings, application code can use
whatever additional conventions are dictated by the needs of the
application.


[section Reference]

Hook provides the following commands:

[list_begin definitions]

165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192

[example {
    hook call $s $h
}]

[list_begin enumerated]
[enum]
No binding is ever called after it is deleted. 

[enum]
When a binding is called, the most recently given command prefix is
always used.

[enum]
The set of observers whose bindings are to be called is determined
when this method begins to execute, and does not change thereafter,
except that deleted bindings are not called.

[list_end]

In particular: 

[list_begin enumerated]
[enum]

If [var \$o]s binding to [var \$s] and [var \$h] is deleted, and
[var \$o]s binding has not yet been called during this execution of








|












|







168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195

[example {
    hook call $s $h
}]

[list_begin enumerated]
[enum]
No binding is ever called after it is deleted.

[enum]
When a binding is called, the most recently given command prefix is
always used.

[enum]
The set of observers whose bindings are to be called is determined
when this method begins to execute, and does not change thereafter,
except that deleted bindings are not called.

[list_end]

In particular:

[list_begin enumerated]
[enum]

If [var \$o]s binding to [var \$s] and [var \$h] is deleted, and
[var \$o]s binding has not yet been called during this execution of

215
216
217
218
219
220
221
222
223
224
225
226
227
228
229

[example {
    hook call $s $h
}]

[list_end]


[call [cmd hook] [method call] [arg subject] [arg hook] [opt [arg args]...]]

This command is called when the named [arg subject] wishes to call the
named [arg hook]. All relevant bindings are called with the specified
arguments in the global namespace. Note that the bindings are called
synchronously, before the command returns; this allows the [arg args]
to include references to entities that will be cleaned up as soon as







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231

[example {
    hook call $s $h
}]

[list_end]


[call [cmd hook] [method call] [arg subject] [arg hook] [opt [arg args]...]]

This command is called when the named [arg subject] wishes to call the
named [arg hook]. All relevant bindings are called with the specified
arguments in the global namespace. Note that the bindings are called
synchronously, before the command returns; this allows the [arg args]
to include references to entities that will be cleaned up as soon as
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
Because the [cmd hook] mechanism is intended to support loose
coupling, it is presumed that the [arg subject] has no knowledge of
the observers, nor any expectation regarding return values. This has a
number of implications:

[list_begin enumerated]
[enum]
[cmd {hook call}] returns the empty string. 

[enum]
Normal return values from observer bindings are ignored. 

[enum]
Errors and other exceptional returns propagate normally by
default. This will rarely be what is wanted, because the subjects
usually have no knowledge of the observers and will therefore have no
particular competence at handling their errors. That makes it an
application issue, and so applications will usually want to define an
[option -errorcommand].

[list_end]

If the [option -errorcommand] configuration option has a non-empty
value, its value will be invoked for all errors and other exceptional
returns in observer bindings. See [cmd {hook configure}], below, for
more information on configuration options.


[call [cmd hook] [method forget] [arg object]]

This command deletes any existing bindings in which the named
[arg object] appears as either the [term subject] or the
[term observer].








|


|















<







241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266

267
268
269
270
271
272
273
Because the [cmd hook] mechanism is intended to support loose
coupling, it is presumed that the [arg subject] has no knowledge of
the observers, nor any expectation regarding return values. This has a
number of implications:

[list_begin enumerated]
[enum]
[cmd {hook call}] returns the empty string.

[enum]
Normal return values from observer bindings are ignored.

[enum]
Errors and other exceptional returns propagate normally by
default. This will rarely be what is wanted, because the subjects
usually have no knowledge of the observers and will therefore have no
particular competence at handling their errors. That makes it an
application issue, and so applications will usually want to define an
[option -errorcommand].

[list_end]

If the [option -errorcommand] configuration option has a non-empty
value, its value will be invoked for all errors and other exceptional
returns in observer bindings. See [cmd {hook configure}], below, for
more information on configuration options.


[call [cmd hook] [method forget] [arg object]]

This command deletes any existing bindings in which the named
[arg object] appears as either the [term subject] or the
[term observer].

285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
[example {hook call $s $h}]

then [cmd {hook call}] will return as soon as the current binding
returns.  No further bindings will be called.

[list_end]


[call [cmd hook] [method cget] [arg option]]

This command returns the value of one of the [cmd hook] command's
configuration options.

[call [cmd hook] [method configure] [option option] [arg value] ...]

This command sets the value of one or more of the [cmd hook] command's
configuration options:

[list_begin options]

[opt_def -errorcommand [arg cmdPrefix]]
If the value of this option is the empty string, "", then errors 
and other exception returns in binding scripts are propagated 
normally. Otherwise, it must be a command prefix taking three 
additional arguments:

[list_begin enumerated]
[enum] a 4-element list {subject hook arglist observer}, 
[enum] the result string, and
[enum] the return options dictionary.
[list_end]

Given this information, the [option -errorcommand] can choose to log
the error, call [cmd {interp bgerror}], delete the errant binding
(thus preventing the error from arising a second time) and so forth.

[opt_def -tracecommand [arg cmdPrefix]]
The option's value should be a command prefix taking four 
arguments:

[list_begin enumerated]
[enum] a [term subject],
[enum] a [term hook],
[enum] a list of the hook's argument values, and
[enum] a list of [term objects] the hook was called for.







<













|
|
|



|









|







286
287
288
289
290
291
292

293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
[example {hook call $s $h}]

then [cmd {hook call}] will return as soon as the current binding
returns.  No further bindings will be called.

[list_end]


[call [cmd hook] [method cget] [arg option]]

This command returns the value of one of the [cmd hook] command's
configuration options.

[call [cmd hook] [method configure] [option option] [arg value] ...]

This command sets the value of one or more of the [cmd hook] command's
configuration options:

[list_begin options]

[opt_def -errorcommand [arg cmdPrefix]]
If the value of this option is the empty string, "", then errors
and other exception returns in binding scripts are propagated
normally. Otherwise, it must be a command prefix taking three
additional arguments:

[list_begin enumerated]
[enum] a 4-element list {subject hook arglist observer},
[enum] the result string, and
[enum] the return options dictionary.
[list_end]

Given this information, the [option -errorcommand] can choose to log
the error, call [cmd {interp bgerror}], delete the errant binding
(thus preventing the error from arising a second time) and so forth.

[opt_def -tracecommand [arg cmdPrefix]]
The option's value should be a command prefix taking four
arguments:

[list_begin enumerated]
[enum] a [term subject],
[enum] a [term hook],
[enum] a list of the hook's argument values, and
[enum] a list of [term objects] the hook was called for.
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
Later the [widget .view] megawidget is destroyed. In its destructor,
it tells the [term hook] that it no longer exists:

[example {
     hook forget .view
}]

All bindings involving [widget .view] are deleted. 


[section Credits]

Hook has been designed and implemented by William H. Duquette.

[vset CATEGORY hook]
[include ../doctools2base/include/feedback.inc]
[manpage_end]







|
<








360
361
362
363
364
365
366
367

368
369
370
371
372
373
374
375
Later the [widget .view] megawidget is destroyed. In its destructor,
it tells the [term hook] that it no longer exists:

[example {
     hook forget .view
}]

All bindings involving [widget .view] are deleted.


[section Credits]

Hook has been designed and implemented by William H. Duquette.

[vset CATEGORY hook]
[include ../doctools2base/include/feedback.inc]
[manpage_end]

Changes to modules/html/html.man.

1
2








3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin html n 1.4]








[moddesc   {HTML Generation}]
[titledesc {Procedures to generate HTML structures}]
[category  {CGI programming}]
[require Tcl 8.2]
[require html [opt 1.4]]
[description]
[para]


>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin html n 1.4]
[see_also htmlparse]
[see_also ncgi]
[keywords checkbox]
[keywords checkbutton]
[keywords form]
[keywords html]
[keywords radiobutton]
[keywords table]
[moddesc   {HTML Generation}]
[titledesc {Procedures to generate HTML structures}]
[category  {CGI programming}]
[require Tcl 8.2]
[require html [opt 1.4]]
[description]
[para]
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170

[call [cmd ::html::author] [arg author]]

[emph {Side effect only}].  Call this before [cmd ::html::head] to
define an author for the page.  The author is noted in a comment in
the HEAD section.


[call [cmd ::html::bodyTag] [arg args]]

Generate a [term body] tag.  The tag parameters are taken from [arg args] or
from the body.* attributes define with [cmd ::html::init].


[call [cmd ::html::cell] [arg {param value}] [opt [arg tag]]]

Generate a [term td] (or [term th]) tag, a value, and a closing
[term td] (or [term th]) tag. The
tag parameters come from [arg param] or TD.* attributes defined with
[cmd ::html::init].  This uses [cmd ::html::font] to insert a standard
[term font] tag into the table cell. The [arg tag] argument defaults to "td".


[call [cmd ::html::checkbox] [arg {name value}]]

Generate a [term checkbox] form element with the specified name and value.
This uses [cmd ::html::checkValue].


[call [cmd ::html::checkSet] [arg {key sep list}]]

Generate a set of [term checkbox] form elements and associated labels.  The
[arg list] should contain an alternating list of labels and values.
This uses [cmd ::html::checkbox]. All the [term checkbox] buttons share the
same [arg key] for their name. The [arg sep] is text used to separate
the elements.


[call [cmd ::html::checkValue] [arg name] [opt [arg value]]]

Generate the "name=[arg name] value=[arg value] for a [term checkbox] form
element.  If the CGI variable [arg name] has the value [arg value],
then SELECTED is added to the return value. [arg value] defaults to
"1".


[call [cmd ::html::closeTag]]

Pop a tag off the stack created by [cmd ::html::openTag] and generate
the corresponding close tag (e.g., </body>).


[call [cmd ::html::default] [arg key] [opt [arg param]]]

This procedure is used by [cmd ::html::tagParam] to generate the name,
value list of parameters for a tag.  The [cmd ::html::default]
procedure is used to generate default values for those items not
already in [arg param].  If the value identified by [arg key] matches
a value in [arg param] then this procedure returns the empty string.
Otherwise, it returns a "parameter=value" string for a form element
identified by [arg key].  The [arg key] has the form "tag.parameter"
(e.g., body.bgcolor).  Use [cmd ::html::init] to register default
values. [arg param] defaults to the empty string.


[call [cmd ::html::description] [arg description]]

[emph {Side effect only}].  Call this before [cmd ::html::head] to
define a description [term meta] tag for the page.  This tag is generated
later in the call to [cmd ::html::head].


[call [cmd ::html::end]]

Pop all open tags from the stack and generate the corresponding close
HTML tags, (e.g., </body></html>).


[call [cmd ::html::eval] [arg arg] [opt [arg args]]]

This procedure is similar to the built-in Tcl [cmd eval] command.  The
only difference is that it returns "" so it can be called from an HTML
template file without appending unwanted results.


[call [cmd ::html::extractParam] [arg {param key}] [opt [arg varName]]]

This is a parsing procedure that extracts the value of [arg key] from
[arg param], which is a HTML-style "name=quotedvalue" list.

[arg varName] is used as the name of a Tcl variable that is changed to
have the value found in the parameters.  The function returns 1 if the
parameter was found in [arg param], otherwise it returns 0.  If the
[arg varName] is not specified, then [arg key] is used as the variable
name.


[call [cmd ::html::font] [arg args]]

Generate a standard [term font] tag.  The parameters to the tag are taken
from [arg args] and the HTML defaults defined with [cmd ::html::init].


[call [cmd ::html::for] [arg {start test next body}]]

This procedure is similar to the built-in Tcl [cmd for] control
structure.  Rather than evaluating the body, it returns the subst'ed
[arg body]. Each iteration of the loop causes another string to be
concatenated to the result value.


[call [cmd ::html::foreach] [arg {varlist1 list1}] [opt [arg {varlist2 list2 ...}]] [arg body]]

This procedure is similar to the built-in Tcl [cmd foreach] control
structure.  Rather than evaluating the body, it returns the subst'ed
[arg body].  Each iteration of the loop causes another string to be
concatenated to the result value.


[call [cmd ::html::formValue] [arg name] [opt [arg defvalue]]]

Return a name and value pair, where the value is initialized from
existing CGI data, if any.  The result has this form:

[para]
[example {
  name="fred" value="freds value"
}]


[call [cmd ::html::getFormInfo] [arg args]]

Generate hidden fields to capture form values.  If [arg args] is
empty, then hidden fields are generated for all CGI values.  Otherwise
args is a list of string match patterns for form element names.


[call [cmd ::html::getTitle]]

Return the title string, with out the surrounding [term title] tag,
set with a previous call to [cmd ::html::title].


[call [cmd ::html::h] [arg {level string}] [opt [arg param]]]

Generate a heading (e.g., [term h[var level]]) tag.  The [arg string] is nested in the
heading, and [arg param] is used for the tag parameters.

[call [cmd ::html::h1] [arg string] [opt [arg param]]]







<




<









<




<









<







<




<













<





<






<





<












<




<








<






<











<






<




<







30
31
32
33
34
35
36

37
38
39
40

41
42
43
44
45
46
47
48
49

50
51
52
53

54
55
56
57
58
59
60
61
62

63
64
65
66
67
68
69

70
71
72
73

74
75
76
77
78
79
80
81
82
83
84
85
86

87
88
89
90
91

92
93
94
95
96
97

98
99
100
101
102

103
104
105
106
107
108
109
110
111
112
113
114

115
116
117
118

119
120
121
122
123
124
125
126

127
128
129
130
131
132

133
134
135
136
137
138
139
140
141
142
143

144
145
146
147
148
149

150
151
152
153

154
155
156
157
158
159
160

[call [cmd ::html::author] [arg author]]

[emph {Side effect only}].  Call this before [cmd ::html::head] to
define an author for the page.  The author is noted in a comment in
the HEAD section.


[call [cmd ::html::bodyTag] [arg args]]

Generate a [term body] tag.  The tag parameters are taken from [arg args] or
from the body.* attributes define with [cmd ::html::init].


[call [cmd ::html::cell] [arg {param value}] [opt [arg tag]]]

Generate a [term td] (or [term th]) tag, a value, and a closing
[term td] (or [term th]) tag. The
tag parameters come from [arg param] or TD.* attributes defined with
[cmd ::html::init].  This uses [cmd ::html::font] to insert a standard
[term font] tag into the table cell. The [arg tag] argument defaults to "td".


[call [cmd ::html::checkbox] [arg {name value}]]

Generate a [term checkbox] form element with the specified name and value.
This uses [cmd ::html::checkValue].


[call [cmd ::html::checkSet] [arg {key sep list}]]

Generate a set of [term checkbox] form elements and associated labels.  The
[arg list] should contain an alternating list of labels and values.
This uses [cmd ::html::checkbox]. All the [term checkbox] buttons share the
same [arg key] for their name. The [arg sep] is text used to separate
the elements.


[call [cmd ::html::checkValue] [arg name] [opt [arg value]]]

Generate the "name=[arg name] value=[arg value] for a [term checkbox] form
element.  If the CGI variable [arg name] has the value [arg value],
then SELECTED is added to the return value. [arg value] defaults to
"1".


[call [cmd ::html::closeTag]]

Pop a tag off the stack created by [cmd ::html::openTag] and generate
the corresponding close tag (e.g., </body>).


[call [cmd ::html::default] [arg key] [opt [arg param]]]

This procedure is used by [cmd ::html::tagParam] to generate the name,
value list of parameters for a tag.  The [cmd ::html::default]
procedure is used to generate default values for those items not
already in [arg param].  If the value identified by [arg key] matches
a value in [arg param] then this procedure returns the empty string.
Otherwise, it returns a "parameter=value" string for a form element
identified by [arg key].  The [arg key] has the form "tag.parameter"
(e.g., body.bgcolor).  Use [cmd ::html::init] to register default
values. [arg param] defaults to the empty string.


[call [cmd ::html::description] [arg description]]

[emph {Side effect only}].  Call this before [cmd ::html::head] to
define a description [term meta] tag for the page.  This tag is generated
later in the call to [cmd ::html::head].


[call [cmd ::html::end]]

Pop all open tags from the stack and generate the corresponding close
HTML tags, (e.g., </body></html>).


[call [cmd ::html::eval] [arg arg] [opt [arg args]]]

This procedure is similar to the built-in Tcl [cmd eval] command.  The
only difference is that it returns "" so it can be called from an HTML
template file without appending unwanted results.


[call [cmd ::html::extractParam] [arg {param key}] [opt [arg varName]]]

This is a parsing procedure that extracts the value of [arg key] from
[arg param], which is a HTML-style "name=quotedvalue" list.

[arg varName] is used as the name of a Tcl variable that is changed to
have the value found in the parameters.  The function returns 1 if the
parameter was found in [arg param], otherwise it returns 0.  If the
[arg varName] is not specified, then [arg key] is used as the variable
name.


[call [cmd ::html::font] [arg args]]

Generate a standard [term font] tag.  The parameters to the tag are taken
from [arg args] and the HTML defaults defined with [cmd ::html::init].


[call [cmd ::html::for] [arg {start test next body}]]

This procedure is similar to the built-in Tcl [cmd for] control
structure.  Rather than evaluating the body, it returns the subst'ed
[arg body]. Each iteration of the loop causes another string to be
concatenated to the result value.


[call [cmd ::html::foreach] [arg {varlist1 list1}] [opt [arg {varlist2 list2 ...}]] [arg body]]

This procedure is similar to the built-in Tcl [cmd foreach] control
structure.  Rather than evaluating the body, it returns the subst'ed
[arg body].  Each iteration of the loop causes another string to be
concatenated to the result value.


[call [cmd ::html::formValue] [arg name] [opt [arg defvalue]]]

Return a name and value pair, where the value is initialized from
existing CGI data, if any.  The result has this form:

[para]
[example {
  name="fred" value="freds value"
}]


[call [cmd ::html::getFormInfo] [arg args]]

Generate hidden fields to capture form values.  If [arg args] is
empty, then hidden fields are generated for all CGI values.  Otherwise
args is a list of string match patterns for form element names.


[call [cmd ::html::getTitle]]

Return the title string, with out the surrounding [term title] tag,
set with a previous call to [cmd ::html::title].


[call [cmd ::html::h] [arg {level string}] [opt [arg param]]]

Generate a heading (e.g., [term h[var level]]) tag.  The [arg string] is nested in the
heading, and [arg param] is used for the tag parameters.

[call [cmd ::html::h1] [arg string] [opt [arg param]]]
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390

Generate an [term h5] tag.  See [cmd ::html::h].

[call [cmd ::html::h6] [arg string] [opt [arg param]]]

Generate an [term h6] tag.  See [cmd ::html::h].


[call [cmd ::html::hdrRow] [arg args]]

Generate a table row, including [term tr] and [term th] tags.
Each value in [arg args] is place into its own table cell.
This uses [cmd ::html::cell].


[call [cmd ::html::head] [arg title]]

Generate the [term head] section that includes the page [term title].
If previous calls have been made to
[cmd ::html::author], 
[cmd ::html::keywords], 
[cmd ::html::description], 
or
[cmd ::html::meta]
then additional tags are inserted into the [term head] section.
This leaves an open [term html] tag pushed on the stack with
[cmd ::html::openTag].


[call [cmd ::html::headTag] [arg string]]

Save a tag for inclusion in the [term head] section generated by

[cmd ::html::head].  The [arg string] is everything in the tag except
the enclosing angle brackets, < >.


[call [cmd ::html::html_entities] [arg string]]

This command replaces all special characters in the [arg string] with
their HTML entities and returns the modified text.


[call [cmd ::html::if] [arg {expr1 body1}] [opt "[const elseif] [arg {expr2 body2 ...}]"] [opt "[const else] [arg bodyN]"]]

This procedure is similar to the built-in Tcl [cmd if] control
structure.  Rather than evaluating the body of the branch that is
taken, it returns the subst'ed [arg body].  Note that the syntax is
slightly more restrictive than that of the built-in Tcl [cmd if]
control structure.


[call [cmd ::html::init] [opt [arg list]]]

[cmd ::html::init] accepts a Tcl-style name-value list that defines
values for items with a name of the form "tag.parameter".  For
example, a default with key "body.bgcolor" defines the background
color for the [term body] tag.


[call [cmd ::html::keywords] [arg args]]

[emph {Side effect only}].  Call this before [cmd ::html::head] to
define a keyword [term meta] tag for the page.  The [term meta] tag
is included in the result of [cmd ::html::head].


[call [cmd ::html::mailto] [arg email] [opt [arg subject]]]

Generate a hypertext link to a mailto: URL.


[call [cmd ::html::meta] [arg args]]

[emph {Side effect only}].  Call this before [cmd ::html::head] to
define a [term meta] tag for the page.  The [arg args] is a Tcl-style name,
value list that is used for the name= and value= parameters for the
[term meta] tag.  The [term meta] tag is included in the result of
[cmd ::html::head].


[call [cmd ::html::minorList] [arg list] [opt [arg ordered]]]

Generate an ordered or unordered list of links.  The [arg list] is a
Tcl-style name, value list of labels and urls for the links.

[arg ordered] is a boolean used to choose between an ordered or
unordered list. It defaults to [const false].


[call [cmd ::html::minorMenu] [arg list] [opt [arg sep]]]

Generate a series of hypertext links.  The [arg list] is a Tcl-style
name, value list of labels and urls for the links.  The [arg sep] is
the text to put between each link. It defaults to " | ".


[call [cmd ::html::nl2br] [arg string]]

This command replaces all line-endings in the [arg string] with a
[term br] tag and returns the modified text.


[call [cmd ::html::openTag] [arg tag] [opt [arg param]]]

Push [arg tag] onto a stack and generate the opening tag for
[arg tag]. Use [cmd ::html::closeTag] to pop the tag from the
stack. The second argument provides any tag arguments, as a
list whose elements are formatted to be in the form
"[var key]=[const value]".


[call [cmd ::html::paramRow] [arg list] [opt [arg rparam]] [opt [arg cparam]]]

Generate a table row, including [term tr] and [term td] tags. Each value in

[arg list] is placed into its own table cell. This uses

[cmd ::html::cell]. The value of [arg rparam] is used as parameter for
the [term tr] tag. The value of [arg cparam] is passed to [cmd ::html::cell]
as parameter for the [term td] tags.


[call [cmd ::html::passwordInput] [opt [arg name]]]

Generate an [term input] tag of type [term password]. The [arg name] defaults to
"password".


[call [cmd ::html::passwordInputRow] [arg label] [opt [arg name]]]

Format a table row containing a label and an [term input] tag of type
[term password]. The [arg name] defaults to "password".


[call [cmd ::html::quoteFormValue] [arg value]]

Quote special characters in [arg value] by replacing them with HTML
entities for quotes, ampersand, and angle brackets.


[call [cmd ::html::radioSet] [arg {key sep list}]]

Generate a set of [term input] tags of type [term radio] and an associated text
label.  All the radio buttons share the same [arg key] for their name.
The [arg sep] is text used to separate the elements.  The [arg list]
is a Tcl-style label, value list.


[call [cmd ::html::radioValue] [arg {name value}]]

Generate the "name=[arg name] value=[arg value] for a [term radio] form
element.  If the CGI variable [arg name] has the value [arg value],
then SELECTED is added to the return value.


[call [cmd ::html::refresh] [arg {seconds url}]]

Set up a refresh [term meta] tag. Call this before [cmd ::html::head] and the
HEAD section will contain a [term meta] tag that causes the document to
refresh in [arg seconds] seconds.  The [arg url] is optional.  If
specified, it specifies a new page to load after the refresh interval.


[call [cmd ::html::row] [arg args]]

Generate a table row, including [term tr] and [term td] tags.  Each value in
[arg args] is place into its own table cell. This uses
[cmd ::html::cell]. Ignores any default information set up via
[cmd ::html::init].


[call [cmd ::html::select] [arg {name param choices}] [opt [arg current]]]

Generate a [term select] form element and nested [term option] tags. The [arg name]
and [arg param] are used to generate the [term select] tag. The [arg choices]
list is a Tcl-style name, value list.


[call [cmd ::html::selectPlain] [arg {name param choices}] [opt [arg current]]]

Like [cmd ::html::select] except that [arg choices] is a Tcl list of
values used for the [term option] tags.  The label and the value for each
[term option] are the same.

[call [cmd ::html::set] [arg {var val}]]

This procedure is similar to the built-in Tcl [cmd set] command.  The
main difference is that it returns "" so it can be called from an HTML
template file without appending unwanted results.  The other
difference is that it must take two arguments.


[call [cmd ::html::submit] [arg label] [opt [arg name]]]

Generate an [term input] tag of type [term submit]. [arg name] defaults to "submit".


[call [cmd ::html::tableFromArray] [arg arrname] [opt [arg param]] [opt [arg pat]]]

Generate a two-column [term table] and nested rows to display a Tcl array. The
table gets a heading that matches the array name, and each generated row
contains a name, value pair. The array names are sorted ([cmd lsort] without
special options). The argument [arg param] is for the [term table] tag and has







<






<




|
|
|





<








<




<









<






<







<



<








<









<






<




<








<











<




<






<




<








<





<








<







<





<














<



<







177
178
179
180
181
182
183

184
185
186
187
188
189

190
191
192
193
194
195
196
197
198
199
200
201

202
203
204
205
206
207
208
209

210
211
212
213

214
215
216
217
218
219
220
221
222

223
224
225
226
227
228

229
230
231
232
233
234
235

236
237
238

239
240
241
242
243
244
245
246

247
248
249
250
251
252
253
254
255

256
257
258
259
260
261

262
263
264
265

266
267
268
269
270
271
272
273

274
275
276
277
278
279
280
281
282
283
284

285
286
287
288

289
290
291
292
293
294

295
296
297
298

299
300
301
302
303
304
305
306

307
308
309
310
311

312
313
314
315
316
317
318
319

320
321
322
323
324
325
326

327
328
329
330
331

332
333
334
335
336
337
338
339
340
341
342
343
344
345

346
347
348

349
350
351
352
353
354
355

Generate an [term h5] tag.  See [cmd ::html::h].

[call [cmd ::html::h6] [arg string] [opt [arg param]]]

Generate an [term h6] tag.  See [cmd ::html::h].


[call [cmd ::html::hdrRow] [arg args]]

Generate a table row, including [term tr] and [term th] tags.
Each value in [arg args] is place into its own table cell.
This uses [cmd ::html::cell].


[call [cmd ::html::head] [arg title]]

Generate the [term head] section that includes the page [term title].
If previous calls have been made to
[cmd ::html::author],
[cmd ::html::keywords],
[cmd ::html::description],
or
[cmd ::html::meta]
then additional tags are inserted into the [term head] section.
This leaves an open [term html] tag pushed on the stack with
[cmd ::html::openTag].


[call [cmd ::html::headTag] [arg string]]

Save a tag for inclusion in the [term head] section generated by

[cmd ::html::head].  The [arg string] is everything in the tag except
the enclosing angle brackets, < >.


[call [cmd ::html::html_entities] [arg string]]

This command replaces all special characters in the [arg string] with
their HTML entities and returns the modified text.


[call [cmd ::html::if] [arg {expr1 body1}] [opt "[const elseif] [arg {expr2 body2 ...}]"] [opt "[const else] [arg bodyN]"]]

This procedure is similar to the built-in Tcl [cmd if] control
structure.  Rather than evaluating the body of the branch that is
taken, it returns the subst'ed [arg body].  Note that the syntax is
slightly more restrictive than that of the built-in Tcl [cmd if]
control structure.


[call [cmd ::html::init] [opt [arg list]]]

[cmd ::html::init] accepts a Tcl-style name-value list that defines
values for items with a name of the form "tag.parameter".  For
example, a default with key "body.bgcolor" defines the background
color for the [term body] tag.


[call [cmd ::html::keywords] [arg args]]

[emph {Side effect only}].  Call this before [cmd ::html::head] to
define a keyword [term meta] tag for the page.  The [term meta] tag
is included in the result of [cmd ::html::head].


[call [cmd ::html::mailto] [arg email] [opt [arg subject]]]

Generate a hypertext link to a mailto: URL.


[call [cmd ::html::meta] [arg args]]

[emph {Side effect only}].  Call this before [cmd ::html::head] to
define a [term meta] tag for the page.  The [arg args] is a Tcl-style name,
value list that is used for the name= and value= parameters for the
[term meta] tag.  The [term meta] tag is included in the result of
[cmd ::html::head].


[call [cmd ::html::minorList] [arg list] [opt [arg ordered]]]

Generate an ordered or unordered list of links.  The [arg list] is a
Tcl-style name, value list of labels and urls for the links.

[arg ordered] is a boolean used to choose between an ordered or
unordered list. It defaults to [const false].


[call [cmd ::html::minorMenu] [arg list] [opt [arg sep]]]

Generate a series of hypertext links.  The [arg list] is a Tcl-style
name, value list of labels and urls for the links.  The [arg sep] is
the text to put between each link. It defaults to " | ".


[call [cmd ::html::nl2br] [arg string]]

This command replaces all line-endings in the [arg string] with a
[term br] tag and returns the modified text.


[call [cmd ::html::openTag] [arg tag] [opt [arg param]]]

Push [arg tag] onto a stack and generate the opening tag for
[arg tag]. Use [cmd ::html::closeTag] to pop the tag from the
stack. The second argument provides any tag arguments, as a
list whose elements are formatted to be in the form
"[var key]=[const value]".


[call [cmd ::html::paramRow] [arg list] [opt [arg rparam]] [opt [arg cparam]]]

Generate a table row, including [term tr] and [term td] tags. Each value in

[arg list] is placed into its own table cell. This uses

[cmd ::html::cell]. The value of [arg rparam] is used as parameter for
the [term tr] tag. The value of [arg cparam] is passed to [cmd ::html::cell]
as parameter for the [term td] tags.


[call [cmd ::html::passwordInput] [opt [arg name]]]

Generate an [term input] tag of type [term password]. The [arg name] defaults to
"password".


[call [cmd ::html::passwordInputRow] [arg label] [opt [arg name]]]

Format a table row containing a label and an [term input] tag of type
[term password]. The [arg name] defaults to "password".


[call [cmd ::html::quoteFormValue] [arg value]]

Quote special characters in [arg value] by replacing them with HTML
entities for quotes, ampersand, and angle brackets.


[call [cmd ::html::radioSet] [arg {key sep list}]]

Generate a set of [term input] tags of type [term radio] and an associated text
label.  All the radio buttons share the same [arg key] for their name.
The [arg sep] is text used to separate the elements.  The [arg list]
is a Tcl-style label, value list.


[call [cmd ::html::radioValue] [arg {name value}]]

Generate the "name=[arg name] value=[arg value] for a [term radio] form
element.  If the CGI variable [arg name] has the value [arg value],
then SELECTED is added to the return value.


[call [cmd ::html::refresh] [arg {seconds url}]]

Set up a refresh [term meta] tag. Call this before [cmd ::html::head] and the
HEAD section will contain a [term meta] tag that causes the document to
refresh in [arg seconds] seconds.  The [arg url] is optional.  If
specified, it specifies a new page to load after the refresh interval.


[call [cmd ::html::row] [arg args]]

Generate a table row, including [term tr] and [term td] tags.  Each value in
[arg args] is place into its own table cell. This uses
[cmd ::html::cell]. Ignores any default information set up via
[cmd ::html::init].


[call [cmd ::html::select] [arg {name param choices}] [opt [arg current]]]

Generate a [term select] form element and nested [term option] tags. The [arg name]
and [arg param] are used to generate the [term select] tag. The [arg choices]
list is a Tcl-style name, value list.


[call [cmd ::html::selectPlain] [arg {name param choices}] [opt [arg current]]]

Like [cmd ::html::select] except that [arg choices] is a Tcl list of
values used for the [term option] tags.  The label and the value for each
[term option] are the same.

[call [cmd ::html::set] [arg {var val}]]

This procedure is similar to the built-in Tcl [cmd set] command.  The
main difference is that it returns "" so it can be called from an HTML
template file without appending unwanted results.  The other
difference is that it must take two arguments.


[call [cmd ::html::submit] [arg label] [opt [arg name]]]

Generate an [term input] tag of type [term submit]. [arg name] defaults to "submit".


[call [cmd ::html::tableFromArray] [arg arrname] [opt [arg param]] [opt [arg pat]]]

Generate a two-column [term table] and nested rows to display a Tcl array. The
table gets a heading that matches the array name, and each generated row
contains a name, value pair. The array names are sorted ([cmd lsort] without
special options). The argument [arg param] is for the [term table] tag and has
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
argument [arg param] is for the [term table] tag  and has to contain a
pre-formatted string.

[call [cmd ::html::textarea] [arg name] [opt [arg param]] [opt [arg current]]]

Generate a [term textarea] tag wrapped around its current values.


[call [cmd ::html::textInput] [arg {name value args}]]

Generate an [term input] form tag with type [term text].  This uses

[cmd ::html::formValue].  The args is any additional tag attributes
you want to put into the [term input] tag.


[call [cmd ::html::textInputRow] [arg {label name value args}]]

Generate an [term input] form tag with type [term text] formatted into a table row
with an associated label.  The args is any additional tag attributes
you want to put into the [term input] tag.

[comment {
[call [cmd ::html::title] [arg title]]

[emph {Side effect only}].  Call this before [cmd ::html::head] to
define the [term title] for a page.
}]

[call [cmd ::html::varEmpty] [arg name]]

This returns 1 if the named variable either does not exist or has the
empty string for its value.


[call [cmd ::html::while] [arg {test body}]]

This procedure is similar to the built-in Tcl [cmd while] control
structure.  Rather than evaluating the body, it returns the subst'ed
[arg body].  Each iteration of the loop causes another string to be
concatenated to the result value.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph html] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also ncgi htmlparse]
[keywords html form table checkbox radiobutton checkbutton]
[manpage_end]







<






<



















<









<
|
<
<
|
<
<
<
<
<
<
<
<
<

365
366
367
368
369
370
371

372
373
374
375
376
377

378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396

397
398
399
400
401
402
403
404
405

406


407









408
argument [arg param] is for the [term table] tag  and has to contain a
pre-formatted string.

[call [cmd ::html::textarea] [arg name] [opt [arg param]] [opt [arg current]]]

Generate a [term textarea] tag wrapped around its current values.


[call [cmd ::html::textInput] [arg {name value args}]]

Generate an [term input] form tag with type [term text].  This uses

[cmd ::html::formValue].  The args is any additional tag attributes
you want to put into the [term input] tag.


[call [cmd ::html::textInputRow] [arg {label name value args}]]

Generate an [term input] form tag with type [term text] formatted into a table row
with an associated label.  The args is any additional tag attributes
you want to put into the [term input] tag.

[comment {
[call [cmd ::html::title] [arg title]]

[emph {Side effect only}].  Call this before [cmd ::html::head] to
define the [term title] for a page.
}]

[call [cmd ::html::varEmpty] [arg name]]

This returns 1 if the named variable either does not exist or has the
empty string for its value.


[call [cmd ::html::while] [arg {test body}]]

This procedure is similar to the built-in Tcl [cmd while] control
structure.  Rather than evaluating the body, it returns the subst'ed
[arg body].  Each iteration of the loop causes another string to be
concatenated to the result value.

[list_end]


[vset CATEGORY html]


[include ../doctools2base/include/feedback.inc]









[manpage_end]

Changes to modules/htmlparse/htmlparse.man.

1
2





3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin htmlparse n 1.2.1]





[moddesc   {HTML Parser}]
[titledesc {Procedures to parse HTML strings}]
[category  {Text processing}]
[require Tcl 8.2]
[require struct::stack 1.3]
[require cmdline 1.1]
[require htmlparse [opt 1.2.1]]
[description]
[para]

The [package htmlparse] package provides commands that allow libraries
and applications to parse HTML in a string into a representation of
their choice.

[para]
The following commands are available:

[list_begin definitions]


[call [cmd ::htmlparse::parse] [opt "-cmd [arg cmd]"] [opt "-vroot [arg tag]"] [opt "-split [arg n]"] [opt "-incvar [arg var]"] [opt "-queue [arg q]"] [arg html]]

This command is the basic parser for HTML. It takes an HTML string,
parses it and invokes a command prefix for every tag encountered. It
is not necessary for the HTML to be valid for this parser to
function. It is the responsibility of the command invoked for every


>
>
>
>
>


















<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

26
27
28
29
30
31
32
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin htmlparse n 1.2.1]
[see_also struct::tree]
[keywords html]
[keywords parsing]
[keywords queue]
[keywords tree]
[moddesc   {HTML Parser}]
[titledesc {Procedures to parse HTML strings}]
[category  {Text processing}]
[require Tcl 8.2]
[require struct::stack 1.3]
[require cmdline 1.1]
[require htmlparse [opt 1.2.1]]
[description]
[para]

The [package htmlparse] package provides commands that allow libraries
and applications to parse HTML in a string into a representation of
their choice.

[para]
The following commands are available:

[list_begin definitions]


[call [cmd ::htmlparse::parse] [opt "-cmd [arg cmd]"] [opt "-vroot [arg tag]"] [opt "-split [arg n]"] [opt "-incvar [arg var]"] [opt "-queue [arg q]"] [arg html]]

This command is the basic parser for HTML. It takes an HTML string,
parses it and invokes a command prefix for every tag encountered. It
is not necessary for the HTML to be valid for this parser to
function. It is the responsibility of the command invoked for every
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
down on the size of the tree as generated by

[cmd ::htmlparse::2tree]. It removes all nodes representing forms and
form elements. Its only argument is the name of the tree to cut down.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph htmlparse] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also struct::tree]
[keywords html parsing tree queue]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<
<

256
257
258
259
260
261
262

263


264









265
down on the size of the tree as generated by

[cmd ::htmlparse::2tree]. It removes all nodes representing forms and
form elements. Its only argument is the name of the tree to cut down.

[list_end]


[vset CATEGORY htmlparse]


[include ../doctools2base/include/feedback.inc]









[manpage_end]

Changes to modules/http/autoproxy.man.

1




2
3
4
5
6
7
8
[manpage_begin autoproxy n 1.5.3]




[moddesc   {HTTP protocol helper modules}]
[titledesc {Automatic HTTP proxy usage and authentication}]
[category  Networking]
[require Tcl 8.2]
[require http [opt 2.0]]
[require autoproxy [opt 1.5.3]]
[description]

>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
[manpage_begin autoproxy n 1.5.3]
[see_also http(n)]
[keywords authentication]
[keywords http]
[keywords proxy]
[moddesc   {HTTP protocol helper modules}]
[titledesc {Automatic HTTP proxy usage and authentication}]
[category  Networking]
[require Tcl 8.2]
[require http [opt 2.0]]
[require autoproxy [opt 1.5.3]]
[description]
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[para]

On Unix the standard for identifying the local HTTP proxy server
seems to be to use the environment variable http_proxy or ftp_proxy and
no_proxy to list those domains to be excluded from proxying.
On Windows we can retrieve the Internet Settings values from the registry
to obtain pretty much the same information.
With this information we can setup a suitable filter procedure for the 
Tcl http package and arrange for automatic use of the proxy.

[para]

There seem to be a number of ways that the http_proxy environment
variable may be set up. Either a plain host:port or more commonly a
URL and sometimes the URL may contain authentication parameters or







|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
[para]

On Unix the standard for identifying the local HTTP proxy server
seems to be to use the environment variable http_proxy or ftp_proxy and
no_proxy to list those domains to be excluded from proxying.
On Windows we can retrieve the Internet Settings values from the registry
to obtain pretty much the same information.
With this information we can setup a suitable filter procedure for the
Tcl http package and arrange for automatic use of the proxy.

[para]

There seem to be a number of ways that the http_proxy environment
variable may be set up. Either a plain host:port or more commonly a
URL and sometimes the URL may contain authentication parameters or
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
[call [cmd ::autoproxy::cget] [arg "-option"]]

Retrieve individual package configuration options. See [sectref OPTIONS].

[call [cmd ::autoproxy::configure] [opt "-option [arg value]"]]

Configure the autoproxy package. Calling [cmd configure] with no
options will return a list of all option names and values. 
See [sectref OPTIONS].

[call [cmd ::autoproxy::tls_connect] [arg args]]

Connect to a secure socket through a proxy. HTTP proxy servers permit
the use of the CONNECT HTTP command to open a link through the proxy
to the target machine. This function hides the details. For use with







|







51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
[call [cmd ::autoproxy::cget] [arg "-option"]]

Retrieve individual package configuration options. See [sectref OPTIONS].

[call [cmd ::autoproxy::configure] [opt "-option [arg value]"]]

Configure the autoproxy package. Calling [cmd configure] with no
options will return a list of all option names and values.
See [sectref OPTIONS].

[call [cmd ::autoproxy::tls_connect] [arg args]]

Connect to a secure socket through a proxy. HTTP proxy servers permit
the use of the CONNECT HTTP command to open a link through the proxy
to the target machine. This function hides the details. For use with
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112

[opt_def -port number]
[opt_def -proxy_port number]
Set the proxy port number. This is normally set up by [cmd init].
e.g. [cmd configure] [option -port] [arg 3128]

[opt_def -no_proxy list]
You may manipulate the [option no_proxy] list that was setup by 
[cmd init]. The value of this option is a tcl list of
strings that are matched against the http request host using the tcl
[cmd "string match"] command. Therefore glob patterns are permitted.
For instance, [cmd configure] [option -no_proxy] [arg "*.localdomain"]

[opt_def -authProc procedure]
This option may be used to set an application defined procedure to be







|







102
103
104
105
106
107
108
109
110
111
112
113
114
115
116

[opt_def -port number]
[opt_def -proxy_port number]
Set the proxy port number. This is normally set up by [cmd init].
e.g. [cmd configure] [option -port] [arg 3128]

[opt_def -no_proxy list]
You may manipulate the [option no_proxy] list that was setup by
[cmd init]. The value of this option is a tcl list of
strings that are matched against the http request host using the tcl
[cmd "string match"] command. Therefore glob patterns are permitted.
For instance, [cmd configure] [option -no_proxy] [arg "*.localdomain"]

[opt_def -authProc procedure]
This option may be used to set an application defined procedure to be
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
[list_end]

[section {BUGS}]

At this time only Basic authentication (1) (2) is supported. It is
planned to add support for Digest (2) and NTLM in the future.

[see_also http(n)]
[section AUTHORS]
Pat Thoyts

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {http :: autoproxy}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords http proxy authentication]
[manpage_end]







<



<
<
<
<
<
|
<
|
<
<
<
<
<

185
186
187
188
189
190
191

192
193
194





195

196





197
[list_end]

[section {BUGS}]

At this time only Basic authentication (1) (2) is supported. It is
planned to add support for Digest (2) and NTLM in the future.


[section AUTHORS]
Pat Thoyts






[vset CATEGORY {http :: autoproxy}]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/ident/ident.man.

1
2



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[comment {-*- Tcl -*- doctools manpage}]
[manpage_begin ident n 0.42]



[copyright {2004 Reinhard Max <[email protected]>}]
[titledesc {Ident protocol client}]
[moddesc   {Identification protocol client}]
[category  Networking]
[require Tcl 8.3]
[require ident [opt 0.42]]
[description]

The [package ident] package provides a client implementation of the ident
protocol as defined in

RFC 1413 ([uri http://www.rfc-editor.org/rfc/rfc1413.txt]).


[list_begin definitions]
[call [cmd ::ident::query] [arg socket] [opt [arg callback]]]

This command queries the ident daemon on the remote side of the given
socket, and returns the result of the query as a dictionary.



>
>
>












<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

18
19
20
21
22
23
24
[comment {-*- Tcl -*- doctools manpage}]
[manpage_begin ident n 0.42]
[keywords ident]
[keywords identification]
[keywords {rfc 1413}]
[copyright {2004 Reinhard Max <[email protected]>}]
[titledesc {Ident protocol client}]
[moddesc   {Identification protocol client}]
[category  Networking]
[require Tcl 8.3]
[require ident [opt 0.42]]
[description]

The [package ident] package provides a client implementation of the ident
protocol as defined in

RFC 1413 ([uri http://www.rfc-editor.org/rfc/rfc1413.txt]).


[list_begin definitions]
[call [cmd ::ident::query] [arg socket] [opt [arg callback]]]

This command queries the ident daemon on the remote side of the given
socket, and returns the result of the query as a dictionary.

43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
side, or when the ident server gives a response that does not conform
to the RFC. A detailed error message is returned under the
[const error] key.

[list_end]
[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph ident] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords {rfc 1413} ident identification]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<

45
46
47
48
49
50
51

52


53








54
side, or when the ident server gives a response that does not conform
to the RFC. A detailed error message is returned under the
[const error] key.

[list_end]
[list_end]


[vset CATEGORY ident]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/imap4/imap4.man.

1














2
3
4
5
6
7
8
[manpage_begin imap4 n 0.5.1]














[moddesc   {imap client}]
[titledesc {imap client-side tcl implementation of imap protocol}]

[require Tcl 8.5]
[require imap4 [opt 0.5.1]]

[description]

>
>
>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[manpage_begin imap4 n 0.5.1]
[see_also ftp]
[see_also http]
[see_also imap]
[see_also mime]
[see_also pop3]
[see_also tls]
[keywords email]
[keywords imap]
[keywords internet]
[keywords mail]
[keywords net]
[keywords rfc3501]
[keywords ssl]
[keywords tls]
[moddesc   {imap client}]
[titledesc {imap client-side tcl implementation of imap protocol}]

[require Tcl 8.5]
[require imap4 [opt 0.5.1]]

[description]
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
[section "PROCEDURES"]
This package defines the following public procedures:

[list_begin definitions]
[call [cmd ::imap4::open] [arg hostname] [opt [arg port]]]
[para]Open a new IMAP connection and initalize the handler,
the imap communication channel (handler) is returned.
[para][arg hostname] - mail server 
[para][arg port] - connection port, defaults to 143 
[para]The namespace variable [option ::imap4::use_ssl]
can be used to establish to a secure connection
via TSL/SSL if set to true. In this case default connection port
defaults to 993.
[para][emph Note:]
For connecting via SSL the Tcl module [emph tls] must be already
loaded otherwise an error is raised.
[example {
    package require tls              ; # must be loaded for TLS/SSL   
    set ::imap4::use_ssl 1           ; # request a secure connection
    set chan [::imap4::open $server] ; # default port is now 993 }]

[call [cmd ::imap4::login] [arg chan] [arg user] [arg pass]]
[para]Login using the IMAP LOGIN command, 0 is returned on successful login.
[para][arg chan] - imap channel
[para][arg user] - username







|
|








|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
[section "PROCEDURES"]
This package defines the following public procedures:

[list_begin definitions]
[call [cmd ::imap4::open] [arg hostname] [opt [arg port]]]
[para]Open a new IMAP connection and initalize the handler,
the imap communication channel (handler) is returned.
[para][arg hostname] - mail server
[para][arg port] - connection port, defaults to 143
[para]The namespace variable [option ::imap4::use_ssl]
can be used to establish to a secure connection
via TSL/SSL if set to true. In this case default connection port
defaults to 993.
[para][emph Note:]
For connecting via SSL the Tcl module [emph tls] must be already
loaded otherwise an error is raised.
[example {
    package require tls              ; # must be loaded for TLS/SSL
    set ::imap4::use_ssl 1           ; # request a secure connection
    set chan [::imap4::open $server] ; # default port is now 993 }]

[call [cmd ::imap4::login] [arg chan] [arg user] [arg pass]]
[para]Login using the IMAP LOGIN command, 0 is returned on successful login.
[para][arg chan] - imap channel
[para][arg user] - username
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
[para]If the required information name is suffixed with a ? character,
the command returns true if the information is available, or
false if it is not.
[para][arg chan] - imap channel
[para][arg opt] - mailbox option to retrieve
[para]
Currently supported options:
[emph EXISTS] (noof msgs), 
[emph RECENT] (noof 'recent' flagged msgs), 
[emph FLAGS]
[para]In conjunction with OK:
[emph PERMFLAGS], [emph UIDNEXT], [emph UIDVAL], [emph UNSEEN]
[para]Div. states:
[emph CURRENT], [emph FOUND], [emph PERM].

[example {







|
|







148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
[para]If the required information name is suffixed with a ? character,
the command returns true if the information is available, or
false if it is not.
[para][arg chan] - imap channel
[para][arg opt] - mailbox option to retrieve
[para]
Currently supported options:
[emph EXISTS] (noof msgs),
[emph RECENT] (noof 'recent' flagged msgs),
[emph FLAGS]
[para]In conjunction with OK:
[emph PERMFLAGS], [emph UIDNEXT], [emph UIDVAL], [emph UNSEEN]
[para]Div. states:
[emph CURRENT], [emph FOUND], [emph PERM].

[example {
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
[para][arg mailbox] - old mailbox name
[para][arg mailbox] - new mailbox name

[call [cmd ::imap4::subscribe] [arg chan] [arg mailbox]]
[para]Subscribe a new mailbox.
[para][arg chan] - imap channel
[para][arg mailbox] - mailbox name
    
[call [cmd ::imap4::unsubscribe] [arg chan] [arg mailbox]]
[para]Unsubscribe a new mailbox.
[para][arg chan] - imap channel
[para][arg mailbox] - mailbox name
    
[call [cmd ::imap4::search] [arg chan] [arg expr] [opt [arg "..."]] ]
[para]Search for mails matching search criterions, 0 is returned on success.
[para][arg chan] - imap channel
[para][arg expr] - imap search expression

[para]
[emph Notes:]
Currently the following search expressions are handled:
[para][emph "Mail header flags:"]
all mail header entries (ending with a colon ":"), like "From:", "Bcc:", ...
[para][emph "Imap message search flags:"]
ANSWERED, DELETED, DRAFT, FLAGGED, RECENT,
SEEN, NEW, OLD, UNANSWERED, UNDELETED,
UNDRAFT, UNFLAGGED, UNSEEN, ALL
[para][emph "Imap header search flags:"]
BODY, CC, FROM, SUBJECT, TEXT, KEYWORD, BCC 
[para][emph "Imap conditional search flags:"]
SMALLER, LARGER, ON, SENTBEFORE, SENTON, SENTSINCE, SINCE,
BEFORE (not implemented),
UID (not implemented)
[para][emph "Logical search conditions:"]
OR, NOT 
[example {::imap4::search $chan larger 4000 seen
puts "Found messages: [::imap4::mboxinfo $chan found]"
Found messages: 1 3 6 7 8 9 13 14 15 19 20}]

[call [cmd ::imap4::close] [arg chan]]
[para]Close the mailbox. Permanently removes \Deleted messages and
return to the AUTH state.







|




|















|





|







193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
[para][arg mailbox] - old mailbox name
[para][arg mailbox] - new mailbox name

[call [cmd ::imap4::subscribe] [arg chan] [arg mailbox]]
[para]Subscribe a new mailbox.
[para][arg chan] - imap channel
[para][arg mailbox] - mailbox name

[call [cmd ::imap4::unsubscribe] [arg chan] [arg mailbox]]
[para]Unsubscribe a new mailbox.
[para][arg chan] - imap channel
[para][arg mailbox] - mailbox name

[call [cmd ::imap4::search] [arg chan] [arg expr] [opt [arg "..."]] ]
[para]Search for mails matching search criterions, 0 is returned on success.
[para][arg chan] - imap channel
[para][arg expr] - imap search expression

[para]
[emph Notes:]
Currently the following search expressions are handled:
[para][emph "Mail header flags:"]
all mail header entries (ending with a colon ":"), like "From:", "Bcc:", ...
[para][emph "Imap message search flags:"]
ANSWERED, DELETED, DRAFT, FLAGGED, RECENT,
SEEN, NEW, OLD, UNANSWERED, UNDELETED,
UNDRAFT, UNFLAGGED, UNSEEN, ALL
[para][emph "Imap header search flags:"]
BODY, CC, FROM, SUBJECT, TEXT, KEYWORD, BCC
[para][emph "Imap conditional search flags:"]
SMALLER, LARGER, ON, SENTBEFORE, SENTON, SENTSINCE, SINCE,
BEFORE (not implemented),
UID (not implemented)
[para][emph "Logical search conditions:"]
OR, NOT
[example {::imap4::search $chan larger 4000 seen
puts "Found messages: [::imap4::mboxinfo $chan found]"
Found messages: 1 3 6 7 8 9 13 14 15 19 20}]

[call [cmd ::imap4::close] [arg chan]]
[para]Close the mailbox. Permanently removes \Deleted messages and
return to the AUTH state.
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
[para] Copies the specified message (identified by its message number)
to the named mailbox, i.e. imap folder.

[para][arg chan] - imap channel
[para][arg msgid] - message number
[para][arg mailbox] - mailbox name


[call [cmd ::imap4::logout] [arg chan]]

[para] Informs the server that the client is done with the connection
and closes the network connection. Permanently removes \Deleted
messages.

[para] A new connection will need to be established to login once
more.

[para][arg chan] - imap channel

[list_end]

[section EXAMPLES]

[example_begin]
    set user myusername
    set pass xtremescrt
    set server imap.test.tld 
    set FOLDER INBOX
    # Connect to server
    set imap [lb]::imap4::open $server[rb]
    ::imap4::login $imap $user $pass
    ::imap4::select $imap $FOLDER
    # Output all the information about that mailbox
    foreach info [lb]::imap4::mboxinfo $imap[rb] {
        puts "$info -> [lb]::imap4::mboxinfo $imap $info[rb]"
    }
    # fetch 3 records inline 
    set fields {from: to: subject: size}
    foreach rec [lb]::imap4::fetch $imap :3 -inline {*}$fields[rb] {
        puts -nonewline "#[lb]incr idx[rb])"
        for {set j 0} {$j<[lb]llength $fields[rb]} {incr j} {
            puts "\t[lb]lindex $fields $j[rb] [lb]lindex $rec $j[rb]"
        }
    }
    
    # Show all the information available about the message ID 1
    puts "Available info about message 1: [lb]::imap4::msginfo $imap 1[rb]"
    
    # Use the capability stuff
    puts "Capabilities: [lb]::imap4::isableto $imap[rb]"
    puts "Is able to imap4rev1? [lb]::imap4::isableto $imap imap4rev1[rb]"
    
    # Cleanup
    ::imap4::cleanup $imap
[example_end]

[section REFERENCES]
Mark R. Crispin, "INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1",
RFC 3501, March 2003, [uri http://www.rfc-editor.org/rfc/rfc3501.txt]

[para]
OpenSSL, [uri http://www.openssl.org/]

[section {BUGS, IDEAS, FEEDBACK}]
This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Only a small part of rfc3501 implemented.

[para]
Please report such in the category [emph imap4] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[see_also imap ftp http mime pop3 tls]
[keywords imap email internet mail net imap rfc3501 ssl tls]
[manpage_end]







<


















|









|







|


|



|











|
|
<


<
<
<
<
<
<
<
<
<
<

293
294
295
296
297
298
299

300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356

357
358










359
[para] Copies the specified message (identified by its message number)
to the named mailbox, i.e. imap folder.

[para][arg chan] - imap channel
[para][arg msgid] - message number
[para][arg mailbox] - mailbox name


[call [cmd ::imap4::logout] [arg chan]]

[para] Informs the server that the client is done with the connection
and closes the network connection. Permanently removes \Deleted
messages.

[para] A new connection will need to be established to login once
more.

[para][arg chan] - imap channel

[list_end]

[section EXAMPLES]

[example_begin]
    set user myusername
    set pass xtremescrt
    set server imap.test.tld
    set FOLDER INBOX
    # Connect to server
    set imap [lb]::imap4::open $server[rb]
    ::imap4::login $imap $user $pass
    ::imap4::select $imap $FOLDER
    # Output all the information about that mailbox
    foreach info [lb]::imap4::mboxinfo $imap[rb] {
        puts "$info -> [lb]::imap4::mboxinfo $imap $info[rb]"
    }
    # fetch 3 records inline
    set fields {from: to: subject: size}
    foreach rec [lb]::imap4::fetch $imap :3 -inline {*}$fields[rb] {
        puts -nonewline "#[lb]incr idx[rb])"
        for {set j 0} {$j<[lb]llength $fields[rb]} {incr j} {
            puts "\t[lb]lindex $fields $j[rb] [lb]lindex $rec $j[rb]"
        }
    }

    # Show all the information available about the message ID 1
    puts "Available info about message 1: [lb]::imap4::msginfo $imap 1[rb]"

    # Use the capability stuff
    puts "Capabilities: [lb]::imap4::isableto $imap[rb]"
    puts "Is able to imap4rev1? [lb]::imap4::isableto $imap imap4rev1[rb]"

    # Cleanup
    ::imap4::cleanup $imap
[example_end]

[section REFERENCES]
Mark R. Crispin, "INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1",
RFC 3501, March 2003, [uri http://www.rfc-editor.org/rfc/rfc3501.txt]

[para]
OpenSSL, [uri http://www.openssl.org/]

[vset CATEGORY imap4]
[include ../doctools2base/include/feedback.inc]


Only a small part of rfc3501 implemented.










[manpage_end]

Changes to modules/inifile/ini.man.

87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106

Reads and sets the comment character. Lines that begin with this character are treated as
comments. When comments are written out each line is preceded by this character. The default
is [const \;].

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph inifile] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<

87
88
89
90
91
92
93

94


95







96

Reads and sets the comment character. Lines that begin with this character are treated as
comments. When comments are written out each line is preceded by this character. The default
is [const \;].

[list_end]


[vset CATEGORY inifile]


[include ../doctools2base/include/feedback.inc]







[manpage_end]

Changes to modules/interp/deleg_method.man.

1
2





3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin deleg_method n 0.2]





[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Interpreter utilities}]
[titledesc {Creation of comm delegates (snit methods)}]
[category  {Programming tools}]
[require Tcl 8.3]
[require snit [opt 1.1]]
[require interp::delegate::method [opt 0.2]]


>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin deleg_method n 0.2]
[keywords comm]
[keywords delegation]
[keywords interpreter]
[keywords method]
[keywords snit]
[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Interpreter utilities}]
[titledesc {Creation of comm delegates (snit methods)}]
[category  {Programming tools}]
[require Tcl 8.3]
[require snit [opt 1.1]]
[require interp::delegate::method [opt 0.2]]
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Normally the generated method marshalls the [arg arguments], and
returns the result from the remote method as its own result. If
however the option [option -async] was specified then the generated
method will not wait for a result and return immediately.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph interp] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords interpreter delegation comm method snit]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<

40
41
42
43
44
45
46

47


48








49
Normally the generated method marshalls the [arg arguments], and
returns the result from the remote method as its own result. If
however the option [option -async] was specified then the generated
method will not wait for a result and return immediately.

[list_end]


[vset CATEGORY interp]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/interp/deleg_proc.man.

1
2




3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin deleg_proc n 0.2]




[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Interpreter utilities}]
[titledesc {Creation of comm delegates (procedures)}]
[category  {Programming tools}]
[require Tcl 8.3]
[require interp::delegate::proc [opt 0.2]]
[description]


>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin deleg_proc n 0.2]
[keywords comm]
[keywords delegation]
[keywords interpreter]
[keywords procedure]
[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Interpreter utilities}]
[titledesc {Creation of comm delegates (procedures)}]
[category  {Programming tools}]
[require Tcl 8.3]
[require interp::delegate::proc [opt 0.2]]
[description]
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Normally the generated procedure marshalls the [arg arguments], and
returns the result from the remote procedure as its own result. If
however the option [option -async] was specified then the generated
procedure will not wait for a result and return immediately.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph interp] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords interpreter delegation comm procedure]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<

38
39
40
41
42
43
44

45


46








47
Normally the generated procedure marshalls the [arg arguments], and
returns the result from the remote procedure as its own result. If
however the option [option -async] was specified then the generated
procedure will not wait for a result and return immediately.

[list_end]


[vset CATEGORY interp]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/interp/tcllib_interp.man.

1
2





3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin interp n 0.1.2]





[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Interpreter utilities}]
[titledesc {Interp creation and aliasing}]
[category  {Programming tools}]
[require Tcl 8.3]
[require interp [opt 0.1.2]]
[description]
[para]

This package provides a number of commands for the convenient creation
of Tcl interpreters for highly restricted execution.


[section API]
[list_begin definitions]

[call [cmd ::interp::createEmpty] [opt [arg path]]]

This commands creates an empty Tcl interpreter and returns it
name. Empty means that the new interpreter has neither namespaces, nor
any commands. It is useful only for the creation of aliases.

[para]

If a [arg path] is specified then it is taken as the name of the new
interpreter.


[call [cmd ::interp::snitLink] [arg path] [arg methodlist]]

This command assumes that it was called from within a method of a snit
object, and that the command [cmd mymethod] is available.

[para]


>
>
>
>
>











<














<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

19
20
21
22
23
24
25
26
27
28
29
30
31
32

33
34
35
36
37
38
39
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin interp n 0.1.2]
[keywords alias]
[keywords {empty interpreter}]
[keywords interpreter]
[keywords method]
[keywords snit]
[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Interpreter utilities}]
[titledesc {Interp creation and aliasing}]
[category  {Programming tools}]
[require Tcl 8.3]
[require interp [opt 0.1.2]]
[description]
[para]

This package provides a number of commands for the convenient creation
of Tcl interpreters for highly restricted execution.


[section API]
[list_begin definitions]

[call [cmd ::interp::createEmpty] [opt [arg path]]]

This commands creates an empty Tcl interpreter and returns it
name. Empty means that the new interpreter has neither namespaces, nor
any commands. It is useful only for the creation of aliases.

[para]

If a [arg path] is specified then it is taken as the name of the new
interpreter.


[call [cmd ::interp::snitLink] [arg path] [arg methodlist]]

This command assumes that it was called from within a method of a snit
object, and that the command [cmd mymethod] is available.

[para]
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
prefix, with the first word of each prefix the name of the method to
link to.

[para]

The result of the command is the empty string.


[call [cmd ::interp::snitDictLink] [arg path] [arg methoddict]]

This command behaves like [cmd ::interp::snitLink], except that it
takes a dictionary mapping from commands to methods as its input, and
not a list of methods.

Like for [cmd ::interp::snitLink] the method references are actually
command prefixes.

This command allows the creation of more complex command-method
mappings than [cmd ::interp::snitLink].

[para]

The result of the command is the empty string.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph interp] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords interpreter {empty interpreter}]
[keywords snit method alias]
[manpage_end]







<


















<
|
<
<
|
<
<
<
<
<
<
<
<
<

47
48
49
50
51
52
53

54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71

72


73









74
prefix, with the first word of each prefix the name of the method to
link to.

[para]

The result of the command is the empty string.


[call [cmd ::interp::snitDictLink] [arg path] [arg methoddict]]

This command behaves like [cmd ::interp::snitLink], except that it
takes a dictionary mapping from commands to methods as its input, and
not a list of methods.

Like for [cmd ::interp::snitLink] the method references are actually
command prefixes.

This command allows the creation of more complex command-method
mappings than [cmd ::interp::snitLink].

[para]

The result of the command is the empty string.

[list_end]


[vset CATEGORY interp]


[include ../doctools2base/include/feedback.inc]









[manpage_end]

Changes to modules/irc/irc.man.

1
2



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin irc n 0.6.1]



[moddesc   {Low Level Tcl IRC Interface}]
[titledesc {Create IRC connection and interface.}]
[category  Networking]
[require Tcl]
[require irc [opt 0.6.1]]
[description]

This package provides low-level commands to deal with the IRC protocol
(Internet Relay Chat) for immediate and interactive multi-cast
communication.

[para]

[list_begin definitions]


[call [cmd ::irc::config] [opt key] [opt value]]

Sets configuration [opt key] to [opt value]. The configuration keys
currently defined are the boolean flags [const logger] and [const debug].
[const logger] makes [package irc] use the logger package for printing
error. [const debug] requires [const logger] and prints extra debug output.

If no [opt key] or [opt value] is given the current values are returned.


[call [cmd ::irc::connection]]

The command creates a new object to deal with an IRC connection.
Creating this IRC object does not automatically create the network
connection.  It returns a new irc namespace command which can be used
to interact with the new IRC connection.  NOTE: the old form of the
connection command, which took a hostname and port as arguments, is
deprecated.  Use [cmd connect] instead to specify this information.


[call [cmd ::irc::connections]]

Returns a list of all the current connections that were created with
[const connection]

[list_end]


>
>
>















<









<








<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

21
22
23
24
25
26
27
28
29

30
31
32
33
34
35
36
37

38
39
40
41
42
43
44
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin irc n 0.6.1]
[see_also {rfc 1459}]
[keywords chat]
[keywords irc]
[moddesc   {Low Level Tcl IRC Interface}]
[titledesc {Create IRC connection and interface.}]
[category  Networking]
[require Tcl]
[require irc [opt 0.6.1]]
[description]

This package provides low-level commands to deal with the IRC protocol
(Internet Relay Chat) for immediate and interactive multi-cast
communication.

[para]

[list_begin definitions]


[call [cmd ::irc::config] [opt key] [opt value]]

Sets configuration [opt key] to [opt value]. The configuration keys
currently defined are the boolean flags [const logger] and [const debug].
[const logger] makes [package irc] use the logger package for printing
error. [const debug] requires [const logger] and prints extra debug output.

If no [opt key] or [opt value] is given the current values are returned.


[call [cmd ::irc::connection]]

The command creates a new object to deal with an IRC connection.
Creating this IRC object does not automatically create the network
connection.  It returns a new irc namespace command which can be used
to interact with the new IRC connection.  NOTE: the old form of the
connection command, which took a hostname and port as arguments, is
deprecated.  Use [cmd connect] instead to specify this information.


[call [cmd ::irc::connections]]

Returns a list of all the current connections that were created with
[const connection]

[list_end]
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
File condition. The events [const defaultcmd], [const defaultnumeric],
[const defaultevent], and [const EOF] are required.

[arg script] is executed in the connection namespace, which can take
advantage of several commands (see [sectref {Callback Commands}]
below) to aid in the parsing of data.


[call [arg net] [method getevent] [arg event] [arg script]]

Returns the current handler for the event if one exists. Otherwise an
empty string is returned.


[call [arg net] [method eventexists] [arg event] [arg script]]

Returns a boolean value indicating the existence of the event handler.


[call [arg net] [method connect] [arg hostname] [opt port]]

This causes the socket to be established.  [cmd ::irc::connection]
created the namespace and the commands to be used, but did not
actually open the socket. This is done here.  NOTE: the older form of
'connect' did not require the user to specify a hostname and port,







<





<



<







66
67
68
69
70
71
72

73
74
75
76
77

78
79
80

81
82
83
84
85
86
87
File condition. The events [const defaultcmd], [const defaultnumeric],
[const defaultevent], and [const EOF] are required.

[arg script] is executed in the connection namespace, which can take
advantage of several commands (see [sectref {Callback Commands}]
below) to aid in the parsing of data.


[call [arg net] [method getevent] [arg event] [arg script]]

Returns the current handler for the event if one exists. Otherwise an
empty string is returned.


[call [arg net] [method eventexists] [arg event] [arg script]]

Returns a boolean value indicating the existence of the event handler.


[call [arg net] [method connect] [arg hostname] [opt port]]

This causes the socket to be established.  [cmd ::irc::connection]
created the namespace and the commands to be used, but did not
actually open the socket. This is done here.  NOTE: the older form of
'connect' did not require the user to specify a hostname and port,
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219

Returns the name of the logger instance if logger is turned on.

[call [arg net] [method connected]]

Returns a boolean value indicating if this connection is connected to a server.


[call [arg net] [method sockname]]

Returns a 3 element list consisting of the ip address, the hostname, and the port
of the local end of the connection, if currently connected.


[call [arg net] [method peername]]

Returns a 3 element list consisting of the ip address, the hostname, and the port
of the remote end of the connection, if currently connected.


[call [arg net] [method socket]]

Return the Tcl channel for the socket used by the connection.

[call [arg net] [method user] [arg username] [arg localhostname] [arg localdomainname] [arg userinfo]]

Sends USER command to server.  [arg username] is the username you want
to appear.  [arg localhostname] is the host portion of your hostname, [arg localdomainname]
is your domain name, and [arg userinfo] is a short description of who you are. The 2nd and 3rd
arguments are normally ignored by the IRC server.


[call [arg net] [method nick] [arg nick]]

NICK command.  [arg nick] is the nickname you wish to use for the
particular connection.


[call [arg net] [method ping] [arg target]]

Send a CTCP PING to [arg target].


[call [arg net] [method serverping]]

PING the server.


[call [arg net] [method join] [arg channel] [opt [arg key]]]

[arg channel] is the IRC channel to join.  IRC channels typically
begin with a hashmark ("#") or ampersand ("&").


[call [arg net] [method part] [arg channel] [opt [arg message]]]

Makes the client leave [arg channel]. Some networks may support the optional
argument [arg message]

[call [arg net] [method quit] [opt [arg message]]]

Instructs the IRC server to close the current connection. The package
will use a generic default if no [arg message] was specified.


[call [arg net] [method privmsg] [arg target] [arg message]]

Sends [arg message] to [arg target], which can be either a channel, or
another user, in which case their nick is used.


[call [arg net] [method notice] [arg target] [arg message]]

Sends a [const notice] with message [arg message] to [arg target],
which can be either a channel, or another user, in which case their nick is used.


[call [arg net] [method ctcp] [arg target] [arg message]]

Sends a CTCP of type [arg message] to [arg target]


[call [arg net] [method kick] [arg channel] [arg target] [opt [arg message]]]

Kicks the user [arg target] from the channel [arg channel] with a [arg message].
The latter can be left out.


[call [arg net] [method mode] [arg target] [arg args]]

Sets the mode [arg args] on the target [arg target]. [arg target] may be a channel,
a channel user, or yourself.


[call [arg net] [method topic] [arg channel] [arg message]]

Sets the topic on [arg channel] to [arg message] specifying an empty string
will remove the topic.


[call [arg net] [method invite] [arg channel] [arg target]]

Invites [arg target] to join the channel [arg channel]


[call [arg net] [method send] [arg text]]

Sends [arg text] to the IRC server.


[call [arg net] [method destroy]]

Deletes the connection and its associated namespace and information.

[list_end]








<





<




<












<




<





<



<





<











<




<






<



<






<




<






<




<



<







101
102
103
104
105
106
107

108
109
110
111
112

113
114
115
116

117
118
119
120
121
122
123
124
125
126
127
128

129
130
131
132

133
134
135
136
137

138
139
140

141
142
143
144
145

146
147
148
149
150
151
152
153
154
155
156

157
158
159
160

161
162
163
164
165
166

167
168
169

170
171
172
173
174
175

176
177
178
179

180
181
182
183
184
185

186
187
188
189

190
191
192

193
194
195
196
197
198
199

Returns the name of the logger instance if logger is turned on.

[call [arg net] [method connected]]

Returns a boolean value indicating if this connection is connected to a server.


[call [arg net] [method sockname]]

Returns a 3 element list consisting of the ip address, the hostname, and the port
of the local end of the connection, if currently connected.


[call [arg net] [method peername]]

Returns a 3 element list consisting of the ip address, the hostname, and the port
of the remote end of the connection, if currently connected.


[call [arg net] [method socket]]

Return the Tcl channel for the socket used by the connection.

[call [arg net] [method user] [arg username] [arg localhostname] [arg localdomainname] [arg userinfo]]

Sends USER command to server.  [arg username] is the username you want
to appear.  [arg localhostname] is the host portion of your hostname, [arg localdomainname]
is your domain name, and [arg userinfo] is a short description of who you are. The 2nd and 3rd
arguments are normally ignored by the IRC server.


[call [arg net] [method nick] [arg nick]]

NICK command.  [arg nick] is the nickname you wish to use for the
particular connection.


[call [arg net] [method ping] [arg target]]

Send a CTCP PING to [arg target].


[call [arg net] [method serverping]]

PING the server.


[call [arg net] [method join] [arg channel] [opt [arg key]]]

[arg channel] is the IRC channel to join.  IRC channels typically
begin with a hashmark ("#") or ampersand ("&").


[call [arg net] [method part] [arg channel] [opt [arg message]]]

Makes the client leave [arg channel]. Some networks may support the optional
argument [arg message]

[call [arg net] [method quit] [opt [arg message]]]

Instructs the IRC server to close the current connection. The package
will use a generic default if no [arg message] was specified.


[call [arg net] [method privmsg] [arg target] [arg message]]

Sends [arg message] to [arg target], which can be either a channel, or
another user, in which case their nick is used.


[call [arg net] [method notice] [arg target] [arg message]]

Sends a [const notice] with message [arg message] to [arg target],
which can be either a channel, or another user, in which case their nick is used.


[call [arg net] [method ctcp] [arg target] [arg message]]

Sends a CTCP of type [arg message] to [arg target]


[call [arg net] [method kick] [arg channel] [arg target] [opt [arg message]]]

Kicks the user [arg target] from the channel [arg channel] with a [arg message].
The latter can be left out.


[call [arg net] [method mode] [arg target] [arg args]]

Sets the mode [arg args] on the target [arg target]. [arg target] may be a channel,
a channel user, or yourself.


[call [arg net] [method topic] [arg channel] [arg message]]

Sets the topic on [arg channel] to [arg message] specifying an empty string
will remove the topic.


[call [arg net] [method invite] [arg channel] [arg target]]

Invites [arg target] to join the channel [arg channel]


[call [arg net] [method send] [arg text]]

Sends [arg text] to the IRC server.


[call [arg net] [method destroy]]

Deletes the connection and its associated namespace and information.

[list_end]

234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271

Returns the action performed, such as KICK, PRIVMSG, MODE, etc...
Normally not useful, as callbacks are bound to a particular event.

[call [cmd target]]

Returns the target of a particular command, such as the channel or
user to whom a PRIVMSG is sent. 

[call [cmd additional]]

Returns a list of any additional arguments after the target.

[call [cmd header]]

Returns the entire event header (everything up to the :) as a proper list.

[call [cmd msg]]

Returns the message portion of the command (the part after the :).

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph irc] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also {rfc 1459}]
[keywords irc chat]
[manpage_end]







|















<
|
<
<
|
<
<
<
<
<
<
<
<
<

214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236

237


238









239

Returns the action performed, such as KICK, PRIVMSG, MODE, etc...
Normally not useful, as callbacks are bound to a particular event.

[call [cmd target]]

Returns the target of a particular command, such as the channel or
user to whom a PRIVMSG is sent.

[call [cmd additional]]

Returns a list of any additional arguments after the target.

[call [cmd header]]

Returns the entire event header (everything up to the :) as a proper list.

[call [cmd msg]]

Returns the message portion of the command (the part after the :).

[list_end]


[vset CATEGORY irc]


[include ../doctools2base/include/feedback.inc]









[manpage_end]

Changes to modules/irc/picoirc.man.

1
2



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin picoirc n 0.5]



[moddesc   {Simple embeddable IRC interface}]
[titledesc {Small and simple embeddable IRC client.}]
[category  Networking]
[require Tcl]
[require picoirc [opt 0.5]]
[description]

This package provides a general purpose minimal IRC client suitable for 
embedding in other applications. All communication with the parent
application is done via an application provided callback procedure.
Each connection has its own state so you can hook up multiple servers
in a single application instance.

[para]



>
>
>







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin picoirc n 0.5]
[see_also {rfc 1459}]
[keywords chat]
[keywords irc]
[moddesc   {Simple embeddable IRC interface}]
[titledesc {Small and simple embeddable IRC client.}]
[category  Networking]
[require Tcl]
[require picoirc [opt 0.5]]
[description]

This package provides a general purpose minimal IRC client suitable for
embedding in other applications. All communication with the parent
application is done via an application provided callback procedure.
Each connection has its own state so you can hook up multiple servers
in a single application instance.

[para]

68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
The callback must look like:

[example {
proc Callback {context state args} {
}
}]

where context is the irc context variable name (in case you need to pass 
it back to a picoirc procedure). state is one of a number of states as
described below.

[list_begin options]

[opt_def init]








|







71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
The callback must look like:

[example {
proc Callback {context state args} {
}
}]

where context is the irc context variable name (in case you need to pass
it back to a picoirc procedure). state is one of a number of states as
described below.

[list_begin options]

[opt_def init]

100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
lines from the server and calls this callback when they have all been
received.

[opt_def chat "[arg target] [arg nick] [arg message] [arg type]"]

called when a message arrives. [arg target] is the identity that the
message was targetted for. This can be the logged in nick or a channel
name. [arg nick] is the name of the sender of the message. 
[arg message] is the message text. [arg type] is set to "ACTION" if the
message was sent as a CTCP ACTION

[opt_def system "[arg channel] [arg message]"]

called when a system message is received








|







103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
lines from the server and calls this callback when they have all been
received.

[opt_def chat "[arg target] [arg nick] [arg message] [arg type]"]

called when a message arrives. [arg target] is the identity that the
message was targetted for. This can be the logged in nick or a channel
name. [arg nick] is the name of the sender of the message.
[arg message] is the message text. [arg type] is set to "ACTION" if the
message was sent as a CTCP ACTION

[opt_def system "[arg channel] [arg message]"]

called when a system message is received

144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161

called when data is either being read or written to the network
socket. [arg type] is set to [const read] when reading data and
[const write] if the data is to be written. [arg raw] is the
unprocessed IRC protocol data.
[para]
In both cases the application can return a break error code to
interrupt further processing of the raw data. If this is a 
[const read] operation then the package will not handle this line. If
the operation is [const write] then the package will not send the
data. This callback is intended for debugging protocol issues but
could be used to redirect all input and output if desired.

[list_end]

[see_also {rfc 1459}]
[keywords irc chat]
[manpage_end]







|






<
<
<

147
148
149
150
151
152
153
154
155
156
157
158
159
160



161

called when data is either being read or written to the network
socket. [arg type] is set to [const read] when reading data and
[const write] if the data is to be written. [arg raw] is the
unprocessed IRC protocol data.
[para]
In both cases the application can return a break error code to
interrupt further processing of the raw data. If this is a
[const read] operation then the package will not handle this line. If
the operation is [const write] then the package will not send the
data. This callback is intended for debugging protocol issues but
could be used to redirect all input and output if desired.

[list_end]



[manpage_end]

Changes to modules/javascript/javascript.man.

1
2







3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin javascript n 1.0.2]







[moddesc   {HTML and Java Script Generation}]
[titledesc {Procedures to generate HTML and Java Script structures.}]
[category  {CGI programming}]
[require Tcl 8]
[require javascript [opt 1.0.2]]
[description]
[para]


>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin javascript n 1.0.2]
[see_also html]
[see_also ncgi]
[keywords checkbox]
[keywords html]
[keywords javascript]
[keywords selectionbox]
[keywords submitbutton]
[moddesc   {HTML and Java Script Generation}]
[titledesc {Procedures to generate HTML and Java Script structures.}]
[category  {CGI programming}]
[require Tcl 8]
[require javascript [opt 1.0.2]]
[description]
[para]
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106

[arg rightNameList] argument is the names to appear in the right
selection box.  The [arg length] argument (optional) determines the
number of elts to show before adding a vertical scrollbar; it defaults
to 8.  The [arg minWidth] argument (optional) is the number of spaces
to determine the minimum box width; it defaults to 32.


[call [cmd ::javascript::makeSubmitButton] [arg {name value}]]

Create an HTML submit button that resets a hidden field for each
registered multi-selection box.  The [arg name] argument is the name
of the HTML button object to create.  The [arg value] argument is the
label of the HTML button object to create.


[call [cmd ::javascript::makeProtectedSubmitButton] [arg {name value msg}]]

Create an HTML submit button that prompts the user with a
continue/cancel shutdown warning before the form is submitted.  The
[arg name] argument is the name of the HTML button object to create.
The [arg value] argument is the label of the HTML button object to
create. The [arg msg] argument is the message to display when the
button is pressed.


[call [cmd ::javascript::makeMasterButton] [arg {master value slavePattern boolean}]]

Create an HTML button that sets its slave checkboxs to the boolean
value.  The [arg master] argument is the name of the child's parent
html checkbox object.  The [arg value] argument is the value of the
master.  The [arg slaves] argument is the name of child html checkbox
object to create.  The [arg boolean] argument is the java script
boolean value that will be given to all the slaves; it must be "true"
or "false".


[call [cmd ::javascript::makeParentCheckbox] [arg {parentName childName}]]

Create an HTML checkbox and tie its value to that of its child
checkbox.  If the parent is unchecked, the child is automatically
unchecked.  The [arg parentName] argument is the name of parent html
checkbox object to create. The [arg childName] argument is the name of
the parent's child html checkbox object.


[call [cmd ::javascript::makeChildCheckbox] [arg {parentName childName}]]

Create an HTML checkbox and tie its value to that of its parent
checkbox.  If the child is checked, the parent is automatically
checked.  The [arg parentName] argument is the name of the child's
parent html checkbox object.  The [arg childName] argument is the name
of child html checkbox object to create.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph javascript] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also html ncgi]
[keywords javascript html checkbox submitbutton selectionbox]
[manpage_end]







<






<









<











<







<











<
|
<
<
|
<
<
<
<
<
<
<
<
<

43
44
45
46
47
48
49

50
51
52
53
54
55

56
57
58
59
60
61
62
63
64

65
66
67
68
69
70
71
72
73
74
75

76
77
78
79
80
81
82

83
84
85
86
87
88
89
90
91
92
93

94


95









96

[arg rightNameList] argument is the names to appear in the right
selection box.  The [arg length] argument (optional) determines the
number of elts to show before adding a vertical scrollbar; it defaults
to 8.  The [arg minWidth] argument (optional) is the number of spaces
to determine the minimum box width; it defaults to 32.


[call [cmd ::javascript::makeSubmitButton] [arg {name value}]]

Create an HTML submit button that resets a hidden field for each
registered multi-selection box.  The [arg name] argument is the name
of the HTML button object to create.  The [arg value] argument is the
label of the HTML button object to create.


[call [cmd ::javascript::makeProtectedSubmitButton] [arg {name value msg}]]

Create an HTML submit button that prompts the user with a
continue/cancel shutdown warning before the form is submitted.  The
[arg name] argument is the name of the HTML button object to create.
The [arg value] argument is the label of the HTML button object to
create. The [arg msg] argument is the message to display when the
button is pressed.


[call [cmd ::javascript::makeMasterButton] [arg {master value slavePattern boolean}]]

Create an HTML button that sets its slave checkboxs to the boolean
value.  The [arg master] argument is the name of the child's parent
html checkbox object.  The [arg value] argument is the value of the
master.  The [arg slaves] argument is the name of child html checkbox
object to create.  The [arg boolean] argument is the java script
boolean value that will be given to all the slaves; it must be "true"
or "false".


[call [cmd ::javascript::makeParentCheckbox] [arg {parentName childName}]]

Create an HTML checkbox and tie its value to that of its child
checkbox.  If the parent is unchecked, the child is automatically
unchecked.  The [arg parentName] argument is the name of parent html
checkbox object to create. The [arg childName] argument is the name of
the parent's child html checkbox object.


[call [cmd ::javascript::makeChildCheckbox] [arg {parentName childName}]]

Create an HTML checkbox and tie its value to that of its parent
checkbox.  If the child is checked, the parent is automatically
checked.  The [arg parentName] argument is the name of the child's
parent html checkbox object.  The [arg childName] argument is the name
of child html checkbox object to create.

[list_end]


[vset CATEGORY javascript]


[include ../doctools2base/include/feedback.inc]









[manpage_end]

Changes to modules/jpeg/jpeg.man.

1






2
3
4
5
6
7
8
[manpage_begin jpeg n 0.4.0]






[copyright {2004-2005, Code: Aaron Faupell <[email protected]>}]
[copyright {2007, Code:  Andreas Kupries <[email protected]>}]
[copyright {2004-2009, Doc:  Andreas Kupries <[email protected]>}]
[copyright {2011, Code: Pat Thoyts <[email protected]>}]
[moddesc   {JPEG image manipulation}]
[titledesc {JPEG querying and manipulation of meta data}]
[category  {File formats}]

>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
[manpage_begin jpeg n 0.4.0]
[keywords comment]
[keywords exif]
[keywords image]
[keywords jfif]
[keywords jpeg]
[keywords thumbnail]
[copyright {2004-2005, Code: Aaron Faupell <[email protected]>}]
[copyright {2007, Code:  Andreas Kupries <[email protected]>}]
[copyright {2004-2009, Doc:  Andreas Kupries <[email protected]>}]
[copyright {2011, Code: Pat Thoyts <[email protected]>}]
[moddesc   {JPEG image manipulation}]
[titledesc {JPEG querying and manipulation of meta data}]
[category  {File formats}]
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Returns a dictionary with keys [const version], [const units],
[const xdensity], [const ydensity], [const xthumb], and
[const ythumb]. The values are the associated properties of the JPEG
image in [arg file].

Throws an error if [arg file] is not a JPEG image.


[call [cmd ::jpeg::dimensions] [arg file]]

Returns the dimensions of the JPEG [arg file] as a list of the
horizontal and vertical pixel count.

Throws an error if [arg file] is not a JPEG image.


[call [cmd ::jpeg::getThumbnail] [arg file]]

This procedure will return the binary thumbnail image data, if a JPEG
thumbnail is included in [arg file], and the empty string
otherwise. Note that it is possible to include thumbnails in formats
other than JPEG although that is not common. The command finds







<






<







35
36
37
38
39
40
41

42
43
44
45
46
47

48
49
50
51
52
53
54
Returns a dictionary with keys [const version], [const units],
[const xdensity], [const ydensity], [const xthumb], and
[const ythumb]. The values are the associated properties of the JPEG
image in [arg file].

Throws an error if [arg file] is not a JPEG image.


[call [cmd ::jpeg::dimensions] [arg file]]

Returns the dimensions of the JPEG [arg file] as a list of the
horizontal and vertical pixel count.

Throws an error if [arg file] is not a JPEG image.


[call [cmd ::jpeg::getThumbnail] [arg file]]

This procedure will return the binary thumbnail image data, if a JPEG
thumbnail is included in [arg file], and the empty string
otherwise. Note that it is possible to include thumbnails in formats
other than JPEG although that is not common. The command finds
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93

Throws an error if [arg file] is not a JPEG image.

[call [cmd ::jpeg::getExifFromChannel] [arg channel] [opt [arg section]]]

This command is as per [cmd ::jpeg::getExif] except that it uses a
previously opened channel.  [arg channel] should be a seekable channel
and [arg section] is as described in the documentation of 
[cmd ::jpeg::getExif]

Note: the jpeg parser expects that the start of the channel is the
start of the image data. If working with an image embedded in a
container file format it may be necessary to read the jpeg data into
a temporary container: either a temporary file or a memory channel.








|







83
84
85
86
87
88
89
90
91
92
93
94
95
96
97

Throws an error if [arg file] is not a JPEG image.

[call [cmd ::jpeg::getExifFromChannel] [arg channel] [opt [arg section]]]

This command is as per [cmd ::jpeg::getExif] except that it uses a
previously opened channel.  [arg channel] should be a seekable channel
and [arg section] is as described in the documentation of
[cmd ::jpeg::getExif]

Note: the jpeg parser expects that the start of the channel is the
start of the image data. If working with an image embedded in a
container file format it may be necessary to read the jpeg data into
a temporary container: either a temporary file or a memory channel.

125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161

Removes all metadata from the JPEG file leaving only
the image. This includes comments, EXIF segments, JFXX
segments, and application specific segments.

Throws an error if [arg file] is not a JPEG image.


[call [cmd ::jpeg::getComments] [arg file]]

Returns a list containing all the JPEG comments found in
the [arg file].

Throws an error if [arg file] is not a valid JPEG image.


[call [cmd ::jpeg::addComment] [arg file] [arg text]...]

Adds one or more plain [arg text] comments to the JPEG image
in [arg file].

Throws an error if [arg file] is not a valid JPEG image.


[call [cmd ::jpeg::removeComments] [arg file]]

Removes all comments from the file specified.

Throws an error if [arg file] is not a valid JPEG image.


[call [cmd ::jpeg::replaceComment] [arg file] [arg text]]

Replaces the first comment in the file with the new [arg text].
This is merely a shortcut for [cmd ::jpeg::removeComments]
and [cmd ::jpeg::addComment]








<






<








<





<







129
130
131
132
133
134
135

136
137
138
139
140
141

142
143
144
145
146
147
148
149

150
151
152
153
154

155
156
157
158
159
160
161

Removes all metadata from the JPEG file leaving only
the image. This includes comments, EXIF segments, JFXX
segments, and application specific segments.

Throws an error if [arg file] is not a JPEG image.


[call [cmd ::jpeg::getComments] [arg file]]

Returns a list containing all the JPEG comments found in
the [arg file].

Throws an error if [arg file] is not a valid JPEG image.


[call [cmd ::jpeg::addComment] [arg file] [arg text]...]

Adds one or more plain [arg text] comments to the JPEG image
in [arg file].

Throws an error if [arg file] is not a valid JPEG image.


[call [cmd ::jpeg::removeComments] [arg file]]

Removes all comments from the file specified.

Throws an error if [arg file] is not a valid JPEG image.


[call [cmd ::jpeg::replaceComment] [arg file] [arg text]]

Replaces the first comment in the file with the new [arg text].
This is merely a shortcut for [cmd ::jpeg::removeComments]
and [cmd ::jpeg::addComment]

182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
[section LIMITATIONS]

can only work with files
cant write exif data
gps exif data not parsed
makernote data not yet implemented

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph jpeg] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords jpeg image comment exif thumbnail jfif]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<

182
183
184
185
186
187
188

189


190








191
[section LIMITATIONS]

can only work with files
cant write exif data
gps exif data not parsed
makernote data not yet implemented


[vset CATEGORY jpeg]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/json/json.man.

1
2




3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin json n 1.1.2]




[copyright {2006 ActiveState Software Inc.}]
[copyright {2009 Thomas Maeder, Glue Software Engineering AG}]
[moddesc   {JSON}]
[titledesc {JSON parser}]
[category  {CGI programming}]
[require Tcl 8.4]
[require json [opt 1.1.2]]
[keywords json javascript {data exchange} {exchange format}]
[description]
[para]

The [package json] package provides a simple Tcl-only library for parsing the
JSON [uri http://www.json.org/] data exchange format as specified in RFC 4627
[uri http://www.ietf.org/rfc/rfc4627.txt].



>
>
>
>







<







1
2
3
4
5
6
7
8
9
10
11
12
13

14
15
16
17
18
19
20
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin json n 1.1.2]
[keywords {data exchange}]
[keywords {exchange format}]
[keywords javascript]
[keywords json]
[copyright {2006 ActiveState Software Inc.}]
[copyright {2009 Thomas Maeder, Glue Software Engineering AG}]
[moddesc   {JSON}]
[titledesc {JSON parser}]
[category  {CGI programming}]
[require Tcl 8.4]
[require json [opt 1.1.2]]

[description]
[para]

The [package json] package provides a simple Tcl-only library for parsing the
JSON [uri http://www.json.org/] data exchange format as specified in RFC 4627
[uri http://www.ietf.org/rfc/rfc4627.txt].

Changes to modules/json/json_write.man.

1
2




3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin json::write n 1.0.2]




[copyright {2009-2013 Andreas Kupries <[email protected]>}]
[moddesc   {JSON}]
[titledesc {JSON generation}]
[category  {CGI programming}]
[require Tcl 8.5]
[require json::write [opt 1.0.2]]
[keywords json javascript {data exchange} {exchange format}]
[description]
[para]

The [package json::write] package provides a simple Tcl-only library
for generation of text in the JSON [uri http://www.json.org/] data
exchange format as specified in
RFC 4627 [uri http://www.ietf.org/rfc/rfc4627.txt].

[section COMMANDS]

[list_begin definitions]

[call [cmd ::json::write] [method indented]]

This method returns the current state of the indentation setting.


[call [cmd ::json::write] [method indented] [arg flag]]

This and the method [method aligned] configure the layout of the JSON
generated by the package.

[para]

If this [arg flag] is set (default) the package will break the
generated JSON code across lines and indent it according to its inner
structure, with each key of an object on a separate line.

[para]

If this flag is not set, the whole JSON object will be written on a
single line, with minimum spacing between all elements.


[call [cmd ::json::write] [method aligned]]

This method returns the current state of the alignment setting.


[call [cmd ::json::write] [method aligned] [arg flag]]


This and the method [method indented] configure the layout of the JSON
generated by the package.

[para]

If this [arg flag] is set (default) the package ensures that the
values for the keys in an object are vertically aligned with each
other, for a nice table effect. To make this work this also implies
that [var indented] is set as well.

[para]

If this flag is not set, the output is formatted as per the value of
[var indented], without trying to align the values for object keys.


[call [cmd ::json::write] [method string] [arg s]]

This method takes the string [arg s] and returns it properly quoted
for JSON as its result.


[call [cmd ::json::write] [method array] [arg arg]...]

This method takes a series of JSON formatted arguments and returns
them as a properly formatted JSON array as its result.


[call [cmd ::json::write] [method object] [arg key] [arg value]...]

This method takes a series of key/value arguments, the values already
formatted for JSON, and returns them as a properly formatted JSON
object as its result, with the keys formatted as JSON strings.


[list_end]
[para]

[vset CATEGORY json]
[include ../doctools2base/include/feedback.inc]
[manpage_end]


>
>
>
>






<















<

















<




<

<
















<




<






<





<







1
2
3
4
5
6
7
8
9
10
11
12

13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

45
46
47
48

49

50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65

66
67
68
69

70
71
72
73
74
75

76
77
78
79
80

81
82
83
84
85
86
87
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin json::write n 1.0.2]
[keywords {data exchange}]
[keywords {exchange format}]
[keywords javascript]
[keywords json]
[copyright {2009-2013 Andreas Kupries <[email protected]>}]
[moddesc   {JSON}]
[titledesc {JSON generation}]
[category  {CGI programming}]
[require Tcl 8.5]
[require json::write [opt 1.0.2]]

[description]
[para]

The [package json::write] package provides a simple Tcl-only library
for generation of text in the JSON [uri http://www.json.org/] data
exchange format as specified in
RFC 4627 [uri http://www.ietf.org/rfc/rfc4627.txt].

[section COMMANDS]

[list_begin definitions]

[call [cmd ::json::write] [method indented]]

This method returns the current state of the indentation setting.


[call [cmd ::json::write] [method indented] [arg flag]]

This and the method [method aligned] configure the layout of the JSON
generated by the package.

[para]

If this [arg flag] is set (default) the package will break the
generated JSON code across lines and indent it according to its inner
structure, with each key of an object on a separate line.

[para]

If this flag is not set, the whole JSON object will be written on a
single line, with minimum spacing between all elements.


[call [cmd ::json::write] [method aligned]]

This method returns the current state of the alignment setting.


[call [cmd ::json::write] [method aligned] [arg flag]]


This and the method [method indented] configure the layout of the JSON
generated by the package.

[para]

If this [arg flag] is set (default) the package ensures that the
values for the keys in an object are vertically aligned with each
other, for a nice table effect. To make this work this also implies
that [var indented] is set as well.

[para]

If this flag is not set, the output is formatted as per the value of
[var indented], without trying to align the values for object keys.


[call [cmd ::json::write] [method string] [arg s]]

This method takes the string [arg s] and returns it properly quoted
for JSON as its result.


[call [cmd ::json::write] [method array] [arg arg]...]

This method takes a series of JSON formatted arguments and returns
them as a properly formatted JSON array as its result.


[call [cmd ::json::write] [method object] [arg key] [arg value]...]

This method takes a series of key/value arguments, the values already
formatted for JSON, and returns them as a properly formatted JSON
object as its result, with the keys formatted as JSON strings.


[list_end]
[para]

[vset CATEGORY json]
[include ../doctools2base/include/feedback.inc]
[manpage_end]

Changes to modules/lambda/lambda.man.

1
2









3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin lambda n 1]









[copyright {2011 Andreas Kupries, BSD licensed}]
[moddesc {Utility commands for anonymous procedures}]
[titledesc {Utility commands for anonymous procedures}]
[category  Utility]
[require Tcl 8.5]
[require lambda [opt 1]]
[keywords lambda {anonymous procedure} callback {command prefix}]
[keywords {partial application} currying proc]
[see_also apply(n) proc(n)]
[description]
[para]

This package provides two convenience commands to make the writing of
anonymous procedures, i.e. lambdas more [cmd proc]-like. Instead of,
for example, to write



>
>
>
>
>
>
>
>
>






<
<
<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17



18
19
20
21
22
23
24
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin lambda n 1]
[see_also apply(n)]
[see_also proc(n)]
[keywords {anonymous procedure}]
[keywords callback]
[keywords {command prefix}]
[keywords currying]
[keywords lambda]
[keywords {partial application}]
[keywords proc]
[copyright {2011 Andreas Kupries, BSD licensed}]
[moddesc {Utility commands for anonymous procedures}]
[titledesc {Utility commands for anonymous procedures}]
[category  Utility]
[require Tcl 8.5]
[require lambda [opt 1]]



[description]
[para]

This package provides two convenience commands to make the writing of
anonymous procedures, i.e. lambdas more [cmd proc]-like. Instead of,
for example, to write

57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
arguments, body script and (optional) predefined argument values and
returns a command prefix representing this anonymous procedure.

[para] When invoked the [arg body] is run in a new procedure scope
just underneath the global scope, with the arguments set to the values
supplied at both construction and invokation time.


[comment {- - -- --- ----- -------- ------------- ---------------------}]
[call [cmd ::lambda@] [arg namespace] [arg arguments] [arg body] [opt [arg arg]...]]

The command constructs an anonymous procedure from the namespace name,
list of arguments, body script and (optional) predefined argument
values and returns a command prefix representing this anonymous
procedure.

[para] When invoked the [arg body] is run in a new procedure scope in
the [arg namespace], with the arguments set to the values supplied at
both construction and invokation time.

[list_end]

[section AUTHORS]
Andreas Kupries

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph lambda] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]







<

















<
|
<
<
|
<
<
<
<
<
<

63
64
65
66
67
68
69

70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86

87


88






89
arguments, body script and (optional) predefined argument values and
returns a command prefix representing this anonymous procedure.

[para] When invoked the [arg body] is run in a new procedure scope
just underneath the global scope, with the arguments set to the values
supplied at both construction and invokation time.


[comment {- - -- --- ----- -------- ------------- ---------------------}]
[call [cmd ::lambda@] [arg namespace] [arg arguments] [arg body] [opt [arg arg]...]]

The command constructs an anonymous procedure from the namespace name,
list of arguments, body script and (optional) predefined argument
values and returns a command prefix representing this anonymous
procedure.

[para] When invoked the [arg body] is run in a new procedure scope in
the [arg namespace], with the arguments set to the values supplied at
both construction and invokation time.

[list_end]

[section AUTHORS]
Andreas Kupries


[vset CATEGORY lambda]


[include ../doctools2base/include/feedback.inc]






[manpage_end]

Changes to modules/ldap/ldap.man.

1
2








3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin ldap n 1.6.9]








[copyright {2004 Andreas Kupries <[email protected]>}]
[copyright {2004 Jochen Loewer <[email protected]>}]
[copyright {2006 Michael Schlenker <[email protected]>}]
[moddesc   {LDAP client}]
[titledesc {LDAP client}]
[category  Networking]
[require Tcl 8.4]


>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin ldap n 1.6.9]
[keywords {directory access}]
[keywords internet]
[keywords ldap]
[keywords {ldap client}]
[keywords protocol]
[keywords {rfc 2251}]
[keywords {rfc 4511}]
[keywords x.500]
[copyright {2004 Andreas Kupries <[email protected]>}]
[copyright {2004 Jochen Loewer <[email protected]>}]
[copyright {2006 Michael Schlenker <[email protected]>}]
[moddesc   {LDAP client}]
[titledesc {LDAP client}]
[category  Networking]
[require Tcl 8.4]
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
in [arg handle], with a user name and associated password. It blocks
until a response from the ldap server arrives. Its result is the empty
string.

Both [arg name] and [arg passwd] default to the empty string if they
are not specified.

By leaving out [arg name] and [arg passwd] you can make an anonymous bind to 
the ldap server.

You can issue [cmd ::ldap::bind] again to bind with different credentials. 

[call [cmd ::ldap::bindSASL] [arg handle] [opt [arg name]] [opt [arg password]]]

This command uses SASL authentication mechanisms to do a multistage bind.

Its otherwise identical to the standard [cmd ::ldap::bind].

This feature is currently experimental and subject to change. See the documentation
for the [package SASL] and the [file SASL.txt] in the tcllib CVS repository for 
details how to setup and use SASL with openldap.

[call [cmd ::ldap::unbind] [arg handle]]

This command asks the ldap server to release the last bind done for
the connection refered to by the token in [arg handle].

The [arg handle] is invalid after the unbind, as the server closes the connection. 
So this is effectivly just a more polite disconnect operation.

[call [cmd ::ldap::search] [arg handle] [arg baseObject] [arg filterString] [arg attributes] [arg options]]

This command performs a LDAP search below the [arg baseObject] tree
using a complex LDAP search expression [arg filterString] and returns
the specified [arg attributes] of all matching objects (DNs). If the







|


|








|







|







77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
in [arg handle], with a user name and associated password. It blocks
until a response from the ldap server arrives. Its result is the empty
string.

Both [arg name] and [arg passwd] default to the empty string if they
are not specified.

By leaving out [arg name] and [arg passwd] you can make an anonymous bind to
the ldap server.

You can issue [cmd ::ldap::bind] again to bind with different credentials.

[call [cmd ::ldap::bindSASL] [arg handle] [opt [arg name]] [opt [arg password]]]

This command uses SASL authentication mechanisms to do a multistage bind.

Its otherwise identical to the standard [cmd ::ldap::bind].

This feature is currently experimental and subject to change. See the documentation
for the [package SASL] and the [file SASL.txt] in the tcllib CVS repository for
details how to setup and use SASL with openldap.

[call [cmd ::ldap::unbind] [arg handle]]

This command asks the ldap server to release the last bind done for
the connection refered to by the token in [arg handle].

The [arg handle] is invalid after the unbind, as the server closes the connection.
So this is effectivly just a more polite disconnect operation.

[call [cmd ::ldap::search] [arg handle] [arg baseObject] [arg filterString] [arg attributes] [arg options]]

This command performs a LDAP search below the [arg baseObject] tree
using a complex LDAP search expression [arg filterString] and returns
the specified [arg attributes] of all matching objects (DNs). If the
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148

[para]
[example {
    {dn1 {attr1 {val11 val12 ...} attr2 {val21...} ...}} {dn2 {a1 {v11 ...} ...}} ...
}]
[para]


[call [cmd ::ldap::searchInit] [arg handle] [arg baseObject] [arg filterString] [arg attributes] [arg options]]

This command initiates a LDAP search below the [arg baseObject] tree
using a complex LDAP search expression [arg filterString]. 
The search gets the specified [arg attributes] of all matching objects (DNs). 

The command itself just starts the search, to retrieve the actual results, use 
[cmd ::ldap::searchNext]. 
A search can be terminated at any time by
[cmd ::ldap::searchEnd]. This informs the server that no further results should be sent by sending and ABANDON message
and cleans up the internal state of the search.

Only one [cmd ::ldap::search] can be active at a given time, this
includes the introspection commands [cmd {::ldap::info saslmechanisms}], [cmd {ldap::info control}] and 
[cmd {ldap::info extensions}], which invoke a search internally.

Error responses from the server due to wrong arguments or similar things are returned
with the first [cmd ::ldap::searchNext] call and should be checked and dealed with there.

If the list of requested [arg attributes] is empty all attributes will be returned.
The parameter [arg options] specifies the options to be used in the search,







<



|
|

|
|





|







128
129
130
131
132
133
134

135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155

[para]
[example {
    {dn1 {attr1 {val11 val12 ...} attr2 {val21...} ...}} {dn2 {a1 {v11 ...} ...}} ...
}]
[para]


[call [cmd ::ldap::searchInit] [arg handle] [arg baseObject] [arg filterString] [arg attributes] [arg options]]

This command initiates a LDAP search below the [arg baseObject] tree
using a complex LDAP search expression [arg filterString].
The search gets the specified [arg attributes] of all matching objects (DNs).

The command itself just starts the search, to retrieve the actual results, use
[cmd ::ldap::searchNext].
A search can be terminated at any time by
[cmd ::ldap::searchEnd]. This informs the server that no further results should be sent by sending and ABANDON message
and cleans up the internal state of the search.

Only one [cmd ::ldap::search] can be active at a given time, this
includes the introspection commands [cmd {::ldap::info saslmechanisms}], [cmd {ldap::info control}] and
[cmd {ldap::info extensions}], which invoke a search internally.

Error responses from the server due to wrong arguments or similar things are returned
with the first [cmd ::ldap::searchNext] call and should be checked and dealed with there.

If the list of requested [arg attributes] is empty all attributes will be returned.
The parameter [arg options] specifies the options to be used in the search,
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224

Following options are available:

[list_begin options]
[opt_def -scope  {base one sub} ]

Control the scope of the search to be one of [const base], [const one], or [const sub],  to  specify  a  base
object,  one-level or  subtree  search.   The  default is [const sub].  

[opt_def {-derefaliases} {never search find always}]

Control how aliases dereferencing is done.  Should be one of [const never], [const always], [const search],  or  [const find]  to
specify that aliases are never dereferenced, always dereferenced, dereferenced when searching, or
dereferenced only when locating the base object for the search.  
The default is to never dereference aliases.

[opt_def {-sizelimit} num ]

Determines the maximum number of entries to return in a search. If specified as
0 no limit is enforced. The server may enforce a configuration dependent sizelimit,
which may be lower than the one given by this option. The default is 0, no limit.

[opt_def {-timelimit} seconds]

Asks the server to use a timelimit of [arg seconds] for the search. Zero means no 
limit. The default is 0, no limit.

[opt_def {-attrsonly} boolean]

If set to 1 only the attribute names but not the values will be present in the search result.
The default is to retrieve attribute names and values.

[opt_def {-referencevar} varname]

If set the search result reference LDAPURIs, if any, are returned in the given variable.
The caller can than decide to follow those references and query other LDAP servers for
further results.

[list_end]
[para]


[call [cmd ::ldap::searchNext] [arg handle]]

This command returns the next entry from a LDAP search initiated
by [cmd ::ldap::searchInit]. It returns only after a new result is received
or when no further results are available, but takes care to keep
the event loop alive.

The returned entry is a list with
two elements: the first is the DN of the entry, the second is the
list of attributes and values, under the format:

[para]
[example {
    dn {attr1 {val11 val12 ...} attr2 {val21...} ...}
}]
[para]

The [cmd ::ldap::searchNext] command returns an empty list at the
end of the search.


[para]

[call [cmd ::ldap::searchEnd] [arg handle]]

This command terminates a LDAP search initiated
by [cmd ::ldap::searchInit]. It also cleans up







|





|










|















<




















<







163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202

203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222

223
224
225
226
227
228
229

Following options are available:

[list_begin options]
[opt_def -scope  {base one sub} ]

Control the scope of the search to be one of [const base], [const one], or [const sub],  to  specify  a  base
object,  one-level or  subtree  search.   The  default is [const sub].

[opt_def {-derefaliases} {never search find always}]

Control how aliases dereferencing is done.  Should be one of [const never], [const always], [const search],  or  [const find]  to
specify that aliases are never dereferenced, always dereferenced, dereferenced when searching, or
dereferenced only when locating the base object for the search.
The default is to never dereference aliases.

[opt_def {-sizelimit} num ]

Determines the maximum number of entries to return in a search. If specified as
0 no limit is enforced. The server may enforce a configuration dependent sizelimit,
which may be lower than the one given by this option. The default is 0, no limit.

[opt_def {-timelimit} seconds]

Asks the server to use a timelimit of [arg seconds] for the search. Zero means no
limit. The default is 0, no limit.

[opt_def {-attrsonly} boolean]

If set to 1 only the attribute names but not the values will be present in the search result.
The default is to retrieve attribute names and values.

[opt_def {-referencevar} varname]

If set the search result reference LDAPURIs, if any, are returned in the given variable.
The caller can than decide to follow those references and query other LDAP servers for
further results.

[list_end]
[para]


[call [cmd ::ldap::searchNext] [arg handle]]

This command returns the next entry from a LDAP search initiated
by [cmd ::ldap::searchInit]. It returns only after a new result is received
or when no further results are available, but takes care to keep
the event loop alive.

The returned entry is a list with
two elements: the first is the DN of the entry, the second is the
list of attributes and values, under the format:

[para]
[example {
    dn {attr1 {val11 val12 ...} attr2 {val21...} ...}
}]
[para]

The [cmd ::ldap::searchNext] command returns an empty list at the
end of the search.


[para]

[call [cmd ::ldap::searchEnd] [arg handle]]

This command terminates a LDAP search initiated
by [cmd ::ldap::searchInit]. It also cleans up
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279

[list_end]
[para]

The command blocks until all modifications have completed. Its result
is the empty string.


[call [cmd ::ldap::modifyMulti] [arg handle] [arg dn] \
	[arg attrValToReplace] \
	[opt [arg attrValToDelete]] \
	[opt [arg attrValToAdd]]]

This command modifies the object [arg dn] on the ldap server we are
connected to via [arg handle]. It replaces attributes with new values,







<







270
271
272
273
274
275
276

277
278
279
280
281
282
283

[list_end]
[para]

The command blocks until all modifications have completed. Its result
is the empty string.


[call [cmd ::ldap::modifyMulti] [arg handle] [arg dn] \
	[arg attrValToReplace] \
	[opt [arg attrValToDelete]] \
	[opt [arg attrValToAdd]]]

This command modifies the object [arg dn] on the ldap server we are
connected to via [arg handle]. It replaces attributes with new values,
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353

[list_end]
[para]

The command blocks until all modifications have completed. Its result
is the empty string.


[call [cmd ::ldap::add] [arg handle] [arg dn] [arg attrValueTuples]]

This command creates a new object using the specified [arg dn]. The
attributes of the new object are set to the values in the list
[arg attrValueTuples].
Multiple valuated attributes may be specified using multiple tuples.

The command blocks until the operation has completed. Its result
is the empty string.


[call [cmd ::ldap::addMulti] [arg handle] [arg dn] [arg attrValueTuples]]

This command is the preferred one to create
a new object using the specified [arg dn]. The
attributes of the new object are set to the values in the dictionary
[arg attrValueTuples] (which is keyed by the attribute names).
Each tuple is a list containing multiple values.

The command blocks until the operation has completed. Its result
is the empty string.


[call [cmd ::ldap::delete] [arg handle] [arg dn]]

This command removes the object specified by [arg dn], and all its
attributes from the server.

The command blocks until the operation has completed. Its result
is the empty string.


[call [cmd ::ldap::modifyDN] [arg handle] [arg dn] [arg newrdn] [opt [arg deleteOld]] [opt [arg newSuperior]]]]

This command moves or copies the object specified by [arg dn]
to a new location in the tree of object. This location is
specified by [arg newrdn], a [emph relative] designation,
or by [arg newrdn] and [arg newSuperior], a [emph absolute] designation.







<









<












<







<







312
313
314
315
316
317
318

319
320
321
322
323
324
325
326
327

328
329
330
331
332
333
334
335
336
337
338
339

340
341
342
343
344
345
346

347
348
349
350
351
352
353

[list_end]
[para]

The command blocks until all modifications have completed. Its result
is the empty string.


[call [cmd ::ldap::add] [arg handle] [arg dn] [arg attrValueTuples]]

This command creates a new object using the specified [arg dn]. The
attributes of the new object are set to the values in the list
[arg attrValueTuples].
Multiple valuated attributes may be specified using multiple tuples.

The command blocks until the operation has completed. Its result
is the empty string.


[call [cmd ::ldap::addMulti] [arg handle] [arg dn] [arg attrValueTuples]]

This command is the preferred one to create
a new object using the specified [arg dn]. The
attributes of the new object are set to the values in the dictionary
[arg attrValueTuples] (which is keyed by the attribute names).
Each tuple is a list containing multiple values.

The command blocks until the operation has completed. Its result
is the empty string.


[call [cmd ::ldap::delete] [arg handle] [arg dn]]

This command removes the object specified by [arg dn], and all its
attributes from the server.

The command blocks until the operation has completed. Its result
is the empty string.


[call [cmd ::ldap::modifyDN] [arg handle] [arg dn] [arg newrdn] [opt [arg deleteOld]] [opt [arg newSuperior]]]]

This command moves or copies the object specified by [arg dn]
to a new location in the tree of object. This location is
specified by [arg newrdn], a [emph relative] designation,
or by [arg newrdn] and [arg newSuperior], a [emph absolute] designation.
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395

[call [cmd ::ldap::info] [cmd ip] [arg handle]]

This command returns the IP address of the remote LDAP server the handle is connected to.

[call [cmd ::ldap::info] [cmd bound] [arg handle]]

This command returns 1 if a handle has successfully completed a [cmd ::ldap::bind]. 
If no bind was done or it failed, a 0 is returned.

[call [cmd ::ldap::info] [cmd bounduser] [arg handle]]

This command returns the username used in the bind operation if a handle has successfully completed a [cmd ::ldap::bind]. 
If no bound was done or it failed, an empty string is returned.

[call [cmd ::ldap::info] [cmd connections] ]

This command returns all currently existing ldap connection handles.

[call [cmd ::ldap::info] [cmd tls] [arg handle] ]

This command returns 1 if the ldap connection [arg handle] used TLS/SSL for
connection via [cmd ldap::secure_connect] or completed [cmd ldap::starttls], 0 otherwise. 

[call [cmd ::ldap::info] [cmd saslmechanisms] [arg handle]]

Return the supported SASL mechanisms advertised by the server. Only valid in a
bound state (anonymous or other).

[call [cmd ::ldap::info] [cmd control] [arg handle] ]







|




|









|







366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395

[call [cmd ::ldap::info] [cmd ip] [arg handle]]

This command returns the IP address of the remote LDAP server the handle is connected to.

[call [cmd ::ldap::info] [cmd bound] [arg handle]]

This command returns 1 if a handle has successfully completed a [cmd ::ldap::bind].
If no bind was done or it failed, a 0 is returned.

[call [cmd ::ldap::info] [cmd bounduser] [arg handle]]

This command returns the username used in the bind operation if a handle has successfully completed a [cmd ::ldap::bind].
If no bound was done or it failed, an empty string is returned.

[call [cmd ::ldap::info] [cmd connections] ]

This command returns all currently existing ldap connection handles.

[call [cmd ::ldap::info] [cmd tls] [arg handle] ]

This command returns 1 if the ldap connection [arg handle] used TLS/SSL for
connection via [cmd ldap::secure_connect] or completed [cmd ldap::starttls], 0 otherwise.

[call [cmd ::ldap::info] [cmd saslmechanisms] [arg handle]]

Return the supported SASL mechanisms advertised by the server. Only valid in a
bound state (anonymous or other).

[call [cmd ::ldap::info] [cmd control] [arg handle] ]
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
Returns the supported LDAP extensions as list of OIDs. Only valid in a bound state.

This is currently experimental and subject to change.

[call [cmd ::ldap::info] [cmd whoami] [arg handle]]

Returns authzId for the current connection. This implements the RFC 4532
protocol extension. 

[list_end]
[para]

[section EXAMPLES]
[para]








|







403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
Returns the supported LDAP extensions as list of OIDs. Only valid in a bound state.

This is currently experimental and subject to change.

[call [cmd ::ldap::info] [cmd whoami] [arg handle]]

Returns authzId for the current connection. This implements the RFC 4532
protocol extension.

[list_end]
[para]

[section EXAMPLES]
[para]

467
468
469
470
471
472
473
474
475
476
477
478
479
480
481

    # Move
    ldap::modifyDN $handle $dn "cn=Tester"

    # Kill the test object, and shut the connection down.
    set dn "cn=Tester,ou=People,o=University of Michigan,c=US"
    ldap::delete $handle $dn
 
    ldap::unbind     $handle
    ldap::disconnect $handle
}]
[para]

And a another example, a simple query, and processing the
results.







|







467
468
469
470
471
472
473
474
475
476
477
478
479
480
481

    # Move
    ldap::modifyDN $handle $dn "cn=Tester"

    # Kill the test object, and shut the connection down.
    set dn "cn=Tester,ou=People,o=University of Michigan,c=US"
    ldap::delete $handle $dn

    ldap::unbind     $handle
    ldap::disconnect $handle
}]
[para]

And a another example, a simple query, and processing the
results.
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
	# generating properly aligned output listing all attributes
	# and their values.

	set width 0
	set sortedAttribs {}
	foreach {type values} $attributes {
	    if {[string length $type] > $width} {
		set width [string length $type] 
	    }
	    lappend sortedAttribs [list $type $values]
	}     

	puts "object='$object'"

	foreach sortedAttrib  $sortedAttribs {
	    foreach {type values} $sortedAttrib break
	    foreach value $values {
		regsub -all "\[\x01-\x1f\]" $value ? value
		puts [format "  %-${width}s %s" $type $value]
	    }
	}
	puts ""
    }
    ldap::unbind $handle
    ldap::disconnect $handle
}]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph ldap] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

One know bug is the usage of [cmd vwait] inside the dispatch mechanism, which makes
it currently unsafe to use this code in code that also enters the event loop.

[keywords ldap {rfc 2251} {rfc 4511} x.500 {ldap client} {directory access} internet protocol]
[manpage_end]







|


|
















<
|
<
<
|
<
<
<
<
<
<
<
<
<
<

494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520

521


522










523
	# generating properly aligned output listing all attributes
	# and their values.

	set width 0
	set sortedAttribs {}
	foreach {type values} $attributes {
	    if {[string length $type] > $width} {
		set width [string length $type]
	    }
	    lappend sortedAttribs [list $type $values]
	}

	puts "object='$object'"

	foreach sortedAttrib  $sortedAttribs {
	    foreach {type values} $sortedAttrib break
	    foreach value $values {
		regsub -all "\[\x01-\x1f\]" $value ? value
		puts [format "  %-${width}s %s" $type $value]
	    }
	}
	puts ""
    }
    ldap::unbind $handle
    ldap::disconnect $handle
}]


[vset CATEGORY ldap]


[include ../doctools2base/include/feedback.inc]










[manpage_end]

Changes to modules/ldap/ldap.tcl.

1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582

    CheckHandle $handle

    #
    # In order to handle multi-valuated attributes (see bug 1191326 on
    # sourceforge), we walk through tuples to collect all values for
    # an attribute.
    # http://sourceforge.net/tracker/index.php?func=detail&atid=112883&group_id=12883&aid=1191326
    #

    foreach { attrName attrValue } $attrValueTuples {
	lappend avpairs($attrName) $attrValue
    }

    return [addMulti $handle $dn [array get avpairs]]







|







1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582

    CheckHandle $handle

    #
    # In order to handle multi-valuated attributes (see bug 1191326 on
    # sourceforge), we walk through tuples to collect all values for
    # an attribute.
    # http://core.tcl.tk/tcllib/tktview?name=1191326fff
    #

    foreach { attrName attrValue } $attrValueTuples {
	lappend avpairs($attrName) $attrValue
    }

    return [addMulti $handle $dn [array get avpairs]]

Changes to modules/ldap/ldapx.man.

1
2
3








4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[comment {-*- tcl -*- doctools manpage}]
[comment {$Id: ldapx.man,v 1.14 2009/01/29 06:16:19 andreas_kupries Exp $}]
[manpage_begin ldapx n 0.2.5]








[copyright {2006 Pierre David <[email protected]>}]
[moddesc   {LDAP extended object interface}]
[titledesc {LDAP extended object interface}]
[category  Networking]
[require Tcl 8.4]
[require ldapx [opt 1.0]]
[description]
[para]

The [package ldapx] package provides an extended Tcl interface to
LDAP directores and LDIF files. The [package ldapx] package is built
upon the [package ldap] package in order to get low level LDAP access.

[para]

LDAP access is compatible with RFC 2251
([uri http://www.rfc-editor.org/rfc/rfc2251.txt]).
LDIF access is compatible with RFC 2849
([uri http://www.rfc-editor.org/rfc/rfc2849.txt]).


[section OVERVIEW]

The [package ldapx] package provides objects to interact with LDAP
directories and LDIF files with an easy to use programming interface.
It implements three [package snit]::type classes.




>
>
>
>
>
>
>
>



















<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

31
32
33
34
35
36
37
[comment {-*- tcl -*- doctools manpage}]
[comment {$Id: ldapx.man,v 1.14 2009/01/29 06:16:19 andreas_kupries Exp $}]
[manpage_begin ldapx n 0.2.5]
[keywords {directory access}]
[keywords internet]
[keywords ldap]
[keywords {ldap client}]
[keywords ldif]
[keywords protocol]
[keywords {rfc 2251}]
[keywords {rfc 2849}]
[copyright {2006 Pierre David <[email protected]>}]
[moddesc   {LDAP extended object interface}]
[titledesc {LDAP extended object interface}]
[category  Networking]
[require Tcl 8.4]
[require ldapx [opt 1.0]]
[description]
[para]

The [package ldapx] package provides an extended Tcl interface to
LDAP directores and LDIF files. The [package ldapx] package is built
upon the [package ldap] package in order to get low level LDAP access.

[para]

LDAP access is compatible with RFC 2251
([uri http://www.rfc-editor.org/rfc/rfc2251.txt]).
LDIF access is compatible with RFC 2849
([uri http://www.rfc-editor.org/rfc/rfc2849.txt]).


[section OVERVIEW]

The [package ldapx] package provides objects to interact with LDAP
directories and LDIF files with an easy to use programming interface.
It implements three [package snit]::type classes.

151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
		[para]
		Renaming of an entry.

	[list_end]

[list_end]


[subsection {Entry Options}]

No option is defined by this class.


[subsection {Methods for all kinds of entries}]

[list_begin definitions]
    [call [arg e] [method reset]]

	This method resets the entry to an uninitialized state.







<



<







158
159
160
161
162
163
164

165
166
167

168
169
170
171
172
173
174
		[para]
		Renaming of an entry.

	[list_end]

[list_end]


[subsection {Entry Options}]

No option is defined by this class.


[subsection {Methods for all kinds of entries}]

[list_begin definitions]
    [call [arg e] [method reset]]

	This method resets the entry to an uninitialized state.
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
	values of the attribute [arg attr].

    [call [arg se] [method add1] [arg attr] [arg value]]

	This method adds a single value given by the parameter
	[arg value] to the attribute [arg attr].


    [call [arg se] [method del] [arg attr] [opt [arg values]]]

	If the optional list [arg values] is specified, this method
	deletes all specified values from the attribute [arg attr].
	If the argument [arg values] is not specified, this method
	deletes all values.








<







232
233
234
235
236
237
238

239
240
241
242
243
244
245
	values of the attribute [arg attr].

    [call [arg se] [method add1] [arg attr] [arg value]]

	This method adds a single value given by the parameter
	[arg value] to the attribute [arg attr].


    [call [arg se] [method del] [arg attr] [opt [arg values]]]

	If the optional list [arg values] is specified, this method
	deletes all specified values from the attribute [arg attr].
	If the argument [arg values] is not specified, this method
	deletes all values.

284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
    [call [arg se] [method apply] [arg centry]]

	This method applies changes defined in the [arg centry]
	argument, which must be a [emph change] entry.

[list_end]


[subsection {Methods for change entries only}]

[list_begin definitions]
    [call [arg ce] [method change] [opt [arg new]]]

	If the optional argument [arg new] is specified, this method
	modifies the change list (see subsection [sectref {Entry Instance Data}] for







<







288
289
290
291
292
293
294

295
296
297
298
299
300
301
    [call [arg se] [method apply] [arg centry]]

	This method applies changes defined in the [arg centry]
	argument, which must be a [emph change] entry.

[list_end]


[subsection {Methods for change entries only}]

[list_begin definitions]
    [call [arg ce] [method change] [opt [arg new]]]

	If the optional argument [arg new] is specified, this method
	modifies the change list (see subsection [sectref {Entry Instance Data}] for
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
	stores this list into the current [emph change] entry. If
	the optional argument [arg old] is not specified, difference
	is computed from the entry and its internal backup (see
	section [sectref OVERVIEW]). Return value is the computed
	change list.

[list_end]


[subsection {Entry Example}]

[example {
    package require ldapx

    #







<







312
313
314
315
316
317
318

319
320
321
322
323
324
325
	stores this list into the current [emph change] entry. If
	the optional argument [arg old] is not specified, difference
	is computed from the entry and its internal backup (see
	section [sectref OVERVIEW]). Return value is the computed
	change list.

[list_end]


[subsection {Entry Example}]

[example {
    package require ldapx

    #
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
    #

    e destroy
    $b destroy
    c destroy
    nc destroy
}]


[section {LDAP CLASS}]

[subsection {Ldap Instance Data}]

An instance of the [class ldap] class keeps the following data:








<







378
379
380
381
382
383
384

385
386
387
388
389
390
391
    #

    e destroy
    $b destroy
    c destroy
    nc destroy
}]


[section {LDAP CLASS}]

[subsection {Ldap Instance Data}]

An instance of the [class ldap] class keeps the following data:

456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
[list_end]

[para]

The last option is used when getting entries or committing changes
in the directory:


[list_begin options]

    [opt_def -utf8 {pattern-yes pattern-no}]

	Specify which attribute values are encoded in UTF-8. This
	information is specific to the LDAP schema in use by the
	application, since some attributes such as jpegPhoto, for







<







457
458
459
460
461
462
463

464
465
466
467
468
469
470
[list_end]

[para]

The last option is used when getting entries or committing changes
in the directory:


[list_begin options]

    [opt_def -utf8 {pattern-yes pattern-no}]

	Specify which attribute values are encoded in UTF-8. This
	information is specific to the LDAP schema in use by the
	application, since some attributes such as jpegPhoto, for
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492

	[para]

	Default is {{.*} {}}, meaning: all attributes are converted,
	without exception.

[list_end]


[subsection {Ldap Methods}]

[list_begin definitions]
    [call [arg la] [method error] [opt [arg newmsg]]]

	This method returns the error message that occurred in the







<







478
479
480
481
482
483
484

485
486
487
488
489
490
491

	[para]

	Default is {{.*} {}}, meaning: all attributes are converted,
	without exception.

[list_end]


[subsection {Ldap Methods}]

[list_begin definitions]
    [call [arg la] [method error] [opt [arg newmsg]]]

	This method returns the error message that occurred in the
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
	entry, or a [emph standard] entry with a backup.
	[para]
	Note: in the future, this method should use the LDAP
	transaction extension provided by OpenLDAP 2.3 and later.

[list_end]


[subsection {Ldap Example}]

[example {
    package require ldapx

    #
    # Connects to the LDAP directory







<







551
552
553
554
555
556
557

558
559
560
561
562
563
564
	entry, or a [emph standard] entry with a backup.
	[para]
	Note: in the future, this method should use the LDAP
	transaction extension provided by OpenLDAP 2.3 and later.

[list_end]


[subsection {Ldap Example}]

[example {
    package require ldapx

    #
    # Connects to the LDAP directory
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
	$e destroy
    }

    l disconnect
    l destroy
}]


[section {LDIF CLASS}]

[subsection {Ldif Instance Data}]

An instance of the [class ldif] class keeps the following data:

[list_begin definitions]







<







605
606
607
608
609
610
611

612
613
614
615
616
617
618
	$e destroy
    }

    l disconnect
    l destroy
}]


[section {LDIF CLASS}]

[subsection {Ldif Instance Data}]

An instance of the [class ldif] class keeps the following data:

[list_begin definitions]
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
	This is the version of the LDIF file. Only version 1 is
	supported: the method [method read] can only read from
	version 1 files, and method [method write] only creates
	version 1 files.

[list_end]


[subsection {Ldif Options}]

This class defines two options:


[list_begin options]

    [opt_def -ignore {list-of-attributes}]

	This option is used to ignore certain attribute names on
	reading. For example, to read OpenLDAP replica files (replog),







<



<







644
645
646
647
648
649
650

651
652
653

654
655
656
657
658
659
660
	This is the version of the LDIF file. Only version 1 is
	supported: the method [method read] can only read from
	version 1 files, and method [method write] only creates
	version 1 files.

[list_end]


[subsection {Ldif Options}]

This class defines two options:


[list_begin options]

    [opt_def -ignore {list-of-attributes}]

	This option is used to ignore certain attribute names on
	reading. For example, to read OpenLDAP replica files (replog),
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
	[para]

	Default is {{.*} {}}, meaning: all attributes are converted,
	without exception.

[list_end]



[subsection {Ldif Methods}]

[list_begin definitions]

    [call [arg li] [method channel] [arg chan]]

	This method associates the Tcl channel named [arg chan]







<
<







680
681
682
683
684
685
686


687
688
689
690
691
692
693
	[para]

	Default is {{.*} {}}, meaning: all attributes are converted,
	without exception.

[list_end]



[subsection {Ldif Methods}]

[list_begin definitions]

    [call [arg li] [method channel] [arg chan]]

	This method associates the Tcl channel named [arg chan]
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
	The entry may be a [emph standard] or [emph change] entry.

    [call [arg li] [method write] [arg entry]]

	This method writes the entry given in the argument
	[arg entry] to the LDIF file.


[list_end]


[subsection {Ldif Example}]

[example {
    package require ldapx

    # This examples reads a LDIF file containing entries,







<

<







708
709
710
711
712
713
714

715

716
717
718
719
720
721
722
	The entry may be a [emph standard] or [emph change] entry.

    [call [arg li] [method write] [arg entry]]

	This method writes the entry given in the argument
	[arg entry] to the LDIF file.


[list_end]


[subsection {Ldif Example}]

[example {
    package require ldapx

    # This examples reads a LDIF file containing entries,
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
    e1 destroy
    e2 destroy
    c destroy
    liout destroy
    liin destroy
}]


[section References]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph ldap] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords ldap ldif {rfc 2251} {rfc 2849} {ldap client} {directory access} internet protocol]
[manpage_end]







<


|
<
|
<
<
<
<
<
<
<
<
<
<
<

761
762
763
764
765
766
767

768
769
770

771











772
    e1 destroy
    e2 destroy
    c destroy
    liout destroy
    liin destroy
}]


[section References]

[vset CATEGORY ldap]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/log/log.man.

1
2




3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin log n 1.3]




[copyright {2001-2009 Andreas Kupries <[email protected]>}]
[moddesc   {Logging facility}]
[titledesc {Procedures to log messages of libraries and applications.}]
[category  {Programming tools}]
[require Tcl 8]
[require log [opt 1.3]]
[description]


>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin log n 1.3]
[keywords log]
[keywords {log level}]
[keywords message]
[keywords {message level}]
[copyright {2001-2009 Andreas Kupries <[email protected]>}]
[moddesc   {Logging facility}]
[titledesc {Procedures to log messages of libraries and applications.}]
[category  {Programming tools}]
[require Tcl 8]
[require log [opt 1.3]]
[description]
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
[section API]

[para]

The following commands are available:

[list_begin definitions]


[call [cmd ::log::levels]]

Returns the names of all known levels, in alphabetical order.

[call [cmd ::log::lv2longform] [arg level]]








<







93
94
95
96
97
98
99

100
101
102
103
104
105
106
[section API]

[para]

The following commands are available:

[list_begin definitions]


[call [cmd ::log::levels]]

Returns the names of all known levels, in alphabetical order.

[call [cmd ::log::lv2longform] [arg level]]

204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
specified for the given level. If no channel is specified for the
level the message won't be logged. Unique abbreviations of level names
are allowed. Errors in the actual logging command are [emph not]
caught, but propagated to the caller, as they may indicate
misconfigurations of the log facility or errors in the callers code
itself.


[call [cmd ::log::logarray] [arg level] [arg arrayvar] [opt [arg pattern]]]

Like [cmd ::log::log], but logs the contents of the specified array
variable [arg arrayvar], possibly restricted to entries matching the
[arg pattern]. The pattern defaults to [const *] (i.e. all entries) if
none was specified.


[call [cmd ::log::loghex] [arg level] [arg text] [arg data]]

Like [cmd ::log::log], but assumes that [arg data] contains binary
data. It converts this into a mixed hex/ascii representation before
writing them to the log.


[call [cmd ::log::logMsg] [arg text]]

Convenience wrapper around [cmd ::log::log].
Equivalent to [cmd "::log::log info text"].

[call [cmd ::log::logError] [arg text]]







<







<





<







207
208
209
210
211
212
213

214
215
216
217
218
219
220

221
222
223
224
225

226
227
228
229
230
231
232
specified for the given level. If no channel is specified for the
level the message won't be logged. Unique abbreviations of level names
are allowed. Errors in the actual logging command are [emph not]
caught, but propagated to the caller, as they may indicate
misconfigurations of the log facility or errors in the callers code
itself.


[call [cmd ::log::logarray] [arg level] [arg arrayvar] [opt [arg pattern]]]

Like [cmd ::log::log], but logs the contents of the specified array
variable [arg arrayvar], possibly restricted to entries matching the
[arg pattern]. The pattern defaults to [const *] (i.e. all entries) if
none was specified.


[call [cmd ::log::loghex] [arg level] [arg text] [arg data]]

Like [cmd ::log::log], but assumes that [arg data] contains binary
data. It converts this into a mixed hex/ascii representation before
writing them to the log.


[call [cmd ::log::logMsg] [arg text]]

Convenience wrapper around [cmd ::log::log].
Equivalent to [cmd "::log::log info text"].

[call [cmd ::log::logError] [arg text]]
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
[list_end]

[emph Note] that by default all messages with levels [const warning] down to
[const debug] are suppressed. This is done intentionally, because (we believe
that) in most situations debugging output is not wanted. Most people wish to
have such output only when actually debugging an application.


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph log] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords log {log level} {message level} message]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<

268
269
270
271
272
273
274
275

276











277
[list_end]

[emph Note] that by default all messages with levels [const warning] down to
[const debug] are suppressed. This is done intentionally, because (we believe
that) in most situations debugging output is not wanted. Most people wish to
have such output only when actually debugging an application.

[vset CATEGORY log]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/log/logger.man.

1
2
3




4
5
6
7
8
9
10
[comment {-*- tcl -*- doctools manpage}]
[comment {$Id: logger.man,v 1.26 2012/07/10 03:34:47 andreas_kupries Exp $}]
[manpage_begin logger n 0.9.3]




[moddesc {Object Oriented logging facility}]
[titledesc {System to control logging of events.}]
[category  {Programming tools}]
[require Tcl 8.2]
[require logger [opt 0.9.3]]
[description]




>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
[comment {-*- tcl -*- doctools manpage}]
[comment {$Id: logger.man,v 1.26 2012/07/10 03:34:47 andreas_kupries Exp $}]
[manpage_begin logger n 0.9.3]
[keywords log]
[keywords {log level}]
[keywords logger]
[keywords service]
[moddesc {Object Oriented logging facility}]
[titledesc {System to control logging of events.}]
[category  {Programming tools}]
[require Tcl 8.2]
[require logger [opt 0.9.3]]
[description]

47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
parents.  For instance, if there were a service [term foo], and
we did a [cmd logger::init] [arg foo::bar] (to create a [term bar]
service underneath [term foo]), [term bar] would copy the current
configuration of the [term foo] service, although it would of
course, also be possible to then separately configure [term bar].

If a logger service is initialized and the parent does not yet exist, the
parent is also created. 

The new logger service is initialized with the default loglevel set 
with [cmd logger::setlevel].

[call [cmd logger::import] [opt [option -all] ] [opt [option -force]] [opt "[option -prefix] [arg prefix]" ] [opt "[option -namespace] [arg namespace]" ] [arg service] ]

Import the logger service commands into the current namespace. Without the [option -all] option
only the commands corresponding to the log levels are imported. If [option -all] is given, 
all the [cmd \${log}::cmd] style commands are imported. If the import would overwrite a command
an error is returned and no command is imported. Use the [option -force] option to force the import
and overwrite existing commands without complaining.

If the [option -prefix] option is given, the commands are imported with the given [arg prefix]
prepended to their names. 

If the [option -namespace] option is given, the commands are imported into the given namespace. If the
namespace does not exist, it is created. If a namespace without a leading :: is given, it is interpreted as
a child namespace to the current namespace.

[call [cmd logger::initNamespace] [arg ns] [opt [arg level]]]








|

|





|





|







51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
parents.  For instance, if there were a service [term foo], and
we did a [cmd logger::init] [arg foo::bar] (to create a [term bar]
service underneath [term foo]), [term bar] would copy the current
configuration of the [term foo] service, although it would of
course, also be possible to then separately configure [term bar].

If a logger service is initialized and the parent does not yet exist, the
parent is also created.

The new logger service is initialized with the default loglevel set
with [cmd logger::setlevel].

[call [cmd logger::import] [opt [option -all] ] [opt [option -force]] [opt "[option -prefix] [arg prefix]" ] [opt "[option -namespace] [arg namespace]" ] [arg service] ]

Import the logger service commands into the current namespace. Without the [option -all] option
only the commands corresponding to the log levels are imported. If [option -all] is given,
all the [cmd \${log}::cmd] style commands are imported. If the import would overwrite a command
an error is returned and no command is imported. Use the [option -force] option to force the import
and overwrite existing commands without complaining.

If the [option -prefix] option is given, the commands are imported with the given [arg prefix]
prepended to their names.

If the [option -namespace] option is given, the commands are imported into the given namespace. If the
namespace does not exist, it is created. If a namespace without a leading :: is given, it is interpreted as
a child namespace to the current namespace.

[call [cmd logger::initNamespace] [arg ns] [opt [arg level]]]

131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
Enable logging, in the service referenced by [var \${log}], and its
children, at and above the level specified.  Note that this does [emph not] disable logging below this level, so you should probably use
[cmd setlevel] instead.

[call [cmd \${log}::disable] [arg level]]

Disable logging, in the service referenced by [var \${log}], and its
children, at and below the level specified. Note that this does [emph not] enable logging above this level, 
so you should probably use [cmd setlevel] instead.
Disabling the loglevel [const emergency] switches logging off for the service and its children.

[call [cmd \${log}::lvlchangeproc] [arg command]]
[call [cmd \${log}::lvlchangeproc]]

Set the script to call when the log instance in question changes its log level.
If called without a command it returns the currently registered command. The command gets two arguments
appended, the old and the new loglevel. The callback is invoked after all changes have been done.
If child loggers are affected, their callbacks are called before their parents callback. 

[example {
 	proc lvlcallback {old new} {
 	    puts "Loglevel changed from $old to $new"
 	}
 	${log}::lvlchangeproc lvlcallback
 }]

[call [cmd \${log}::logproc] [arg level]]
[call [cmd \${log}::logproc] [arg level] [arg command]]
[call [cmd \${log}::logproc] [arg level] [arg argname] [arg body]]

This command comes in three forms - the third, older one is deprecated
and may be removed from future versions of the logger package.  
The current set version takes one argument, a command to be executed when the
level is called.  The callback command takes on argument, the text to
be logged. If called only with a valid level [cmd logproc] returns the name of the command
currently registered as callback command.

[cmd logproc] specifies which command will perform the actual logging
for a given level.  The logger package ships with default commands for







|









|













|







135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
Enable logging, in the service referenced by [var \${log}], and its
children, at and above the level specified.  Note that this does [emph not] disable logging below this level, so you should probably use
[cmd setlevel] instead.

[call [cmd \${log}::disable] [arg level]]

Disable logging, in the service referenced by [var \${log}], and its
children, at and below the level specified. Note that this does [emph not] enable logging above this level,
so you should probably use [cmd setlevel] instead.
Disabling the loglevel [const emergency] switches logging off for the service and its children.

[call [cmd \${log}::lvlchangeproc] [arg command]]
[call [cmd \${log}::lvlchangeproc]]

Set the script to call when the log instance in question changes its log level.
If called without a command it returns the currently registered command. The command gets two arguments
appended, the old and the new loglevel. The callback is invoked after all changes have been done.
If child loggers are affected, their callbacks are called before their parents callback.

[example {
 	proc lvlcallback {old new} {
 	    puts "Loglevel changed from $old to $new"
 	}
 	${log}::lvlchangeproc lvlcallback
 }]

[call [cmd \${log}::logproc] [arg level]]
[call [cmd \${log}::logproc] [arg level] [arg command]]
[call [cmd \${log}::logproc] [arg level] [arg argname] [arg body]]

This command comes in three forms - the third, older one is deprecated
and may be removed from future versions of the logger package.
The current set version takes one argument, a command to be executed when the
level is called.  The callback command takes on argument, the text to
be logged. If called only with a valid level [cmd logproc] returns the name of the command
currently registered as callback command.

[cmd logproc] specifies which command will perform the actual logging
for a given level.  The logger package ships with default commands for
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
  ${log}::logproc trace tracecmd

  proc foo { args } {
      puts "In foo"
      bar 1
      return "foo_result"
  }
    
  proc bar { x } {
      puts "In bar"
      return "bar_result"
  }

  ${log}::trace add foo bar
  ${log}::trace on







|







260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
  ${log}::logproc trace tracecmd

  proc foo { args } {
      puts "In foo"
      bar 1
      return "foo_result"
  }

  proc bar { x } {
      puts "In bar"
      return "bar_result"
  }

  ${log}::trace add foo bar
  ${log}::trace on
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
          puts "$txt"
          puts "Caller: $caller"
          puts "Variables in callers scope:"
          foreach {var value} $val {
          	puts "$var = $value"
          }
     }
     
     # install as logproc
     ${log}::logproc debug log_local_var
     }
]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph logger] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.



[keywords logger log service {log level}]
[manpage_end]







|





<
|
<
<
|
<
<
<
<
<
<
<
<
<

380
381
382
383
384
385
386
387
388
389
390
391
392

393


394









395
          puts "$txt"
          puts "Caller: $caller"
          puts "Variables in callers scope:"
          foreach {var value} $val {
          	puts "$var = $value"
          }
     }

     # install as logproc
     ${log}::logproc debug log_local_var
     }
]


[vset CATEGORY logger]


[include ../doctools2base/include/feedback.inc]









[manpage_end]

Changes to modules/log/loggerAppender.man.

1
2
3


4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[comment {-*- tcl -*- doctools manpage}]
[comment {$Id: loggerAppender.man,v 1.6 2009/01/29 06:16:19 andreas_kupries Exp $}]
[manpage_begin logger::appender n 1.2]


[copyright {2005 Aamer Akhter <[email protected]>}]
[moddesc {Object Oriented logging facility}]
[titledesc {Collection of predefined appenders for logger}]
[category  {Programming tools}]
[require Tcl 8.2]
[require logger::appender [opt 1.2]]
[description]
[keywords logger appender]

This package provides a predefined set of logger templates.

[list_begin definitions]

[call [cmd ::logger::appender::console] \
	[option -level] [arg level] \



>
>







<







1
2
3
4
5
6
7
8
9
10
11
12

13
14
15
16
17
18
19
[comment {-*- tcl -*- doctools manpage}]
[comment {$Id: loggerAppender.man,v 1.6 2009/01/29 06:16:19 andreas_kupries Exp $}]
[manpage_begin logger::appender n 1.2]
[keywords appender]
[keywords logger]
[copyright {2005 Aamer Akhter <[email protected]>}]
[moddesc {Object Oriented logging facility}]
[titledesc {Collection of predefined appenders for logger}]
[category  {Programming tools}]
[require Tcl 8.2]
[require logger::appender [opt 1.2]]
[description]


This package provides a predefined set of logger templates.

[list_begin definitions]

[call [cmd ::logger::appender::console] \
	[option -level] [arg level] \
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
[opt_def -procNameVar procNameVar]

Name of the variable to set in the calling context. This variable will
contain the name of the procedure.

[list_end]


[call [cmd ::logger::appender::colorConsole] \
	[option -level] [arg level] \
	[option -service] [arg service] [opt [arg options]...] \
]

See [cmd ::logger::appender::colorConsole] for a description of the
applicable options.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph logger] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[manpage_end]







<










<
|
<
<
|
<
<
<
<
<
<
<

46
47
48
49
50
51
52

53
54
55
56
57
58
59
60
61
62

63


64







65
[opt_def -procNameVar procNameVar]

Name of the variable to set in the calling context. This variable will
contain the name of the procedure.

[list_end]


[call [cmd ::logger::appender::colorConsole] \
	[option -level] [arg level] \
	[option -service] [arg service] [opt [arg options]...] \
]

See [cmd ::logger::appender::colorConsole] for a description of the
applicable options.

[list_end]


[vset CATEGORY logger]


[include ../doctools2base/include/feedback.inc]







[manpage_end]

Changes to modules/log/loggerUtils.man.

1
2
3


4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[comment {-*- tcl -*- doctools manpage}]
[comment {$Id: loggerUtils.man,v 1.7 2009/01/29 06:16:19 andreas_kupries Exp $}]
[manpage_begin logger::utils n 1.3]


[copyright {2005 Aamer Akhter <[email protected]>}]
[moddesc {Object Oriented logging facility}]
[titledesc {Utilities for logger}]
[category  {Programming tools}]
[require Tcl 8.4]
[require logger::utils [opt 1.3]]
[description]
[keywords logger appender]

This package adds template based [term appenders].

[list_begin definitions]

[call [cmd ::logger::utils::createFormatCmd] [arg formatString]]




>
>







<







1
2
3
4
5
6
7
8
9
10
11
12

13
14
15
16
17
18
19
[comment {-*- tcl -*- doctools manpage}]
[comment {$Id: loggerUtils.man,v 1.7 2009/01/29 06:16:19 andreas_kupries Exp $}]
[manpage_begin logger::utils n 1.3]
[keywords appender]
[keywords logger]
[copyright {2005 Aamer Akhter <[email protected]>}]
[moddesc {Object Oriented logging facility}]
[titledesc {Utilities for logger}]
[category  {Programming tools}]
[require Tcl 8.4]
[require logger::utils [opt 1.3]]
[description]


This package adds template based [term appenders].

[list_begin definitions]

[call [cmd ::logger::utils::createFormatCmd] [arg formatString]]

28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
[def %d] Current date in yyyy/MM/dd hh:mm:ss
[def %H] Hostname
[def %m] Message to be logged
[def %M] Method where logging event was issued
[def %p] Priority of logging event
[def %P] Pid of current process
[list_end]


[call [cmd ::logger::utils::createLogProc] \
	[option -procName] [arg procName] \
	[opt [arg options]...]]

This command ...








<







29
30
31
32
33
34
35

36
37
38
39
40
41
42
[def %d] Current date in yyyy/MM/dd hh:mm:ss
[def %H] Hostname
[def %m] Message to be logged
[def %M] Method where logging event was issued
[def %p] Priority of logging event
[def %P] Pid of current process
[list_end]


[call [cmd ::logger::utils::createLogProc] \
	[option -procName] [arg procName] \
	[opt [arg options]...]]

This command ...

60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
The priority (level).

[opt_def -outputChannel channel]

channel to output on (default stdout)

[list_end]


[call [cmd ::logger::utils::applyAppender] \
	[option -appender] [arg appenderType] \
	[opt [arg options]...]]

This command will create an appender for the specified logger
services. If no service is specified then the appender will be added







<







60
61
62
63
64
65
66

67
68
69
70
71
72
73
The priority (level).

[opt_def -outputChannel channel]

channel to output on (default stdout)

[list_end]


[call [cmd ::logger::utils::applyAppender] \
	[option -appender] [arg appenderType] \
	[opt [arg options]...]]

This command will create an appender for the specified logger
services. If no service is specified then the appender will be added
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
   % set log [logger::init testLog]
   ::logger::tree::testLog
   % logger::utils::applyAppender -appender console -serviceCmd $log
   % ${log}::error "this is an error"
   [2005/08/22 10:14:13] [testLog] [global] [error] this is an error
}]



[call [cmd ::logger::utils::autoApplyAppender] \
	[arg command] [arg command-string] [arg log] [arg op] [arg args]... \
]

This command is designed to be added via [cmd {trace leave}] to calls
of [cmd logger::init]. It will look at preconfigured state (via
[cmd ::logger::utils::applyAppender]) to autocreate appenders for







<
<







114
115
116
117
118
119
120


121
122
123
124
125
126
127
   % set log [logger::init testLog]
   ::logger::tree::testLog
   % logger::utils::applyAppender -appender console -serviceCmd $log
   % ${log}::error "this is an error"
   [2005/08/22 10:14:13] [testLog] [global] [error] this is an error
}]



[call [cmd ::logger::utils::autoApplyAppender] \
	[arg command] [arg command-string] [arg log] [arg op] [arg args]... \
]

This command is designed to be added via [cmd {trace leave}] to calls
of [cmd logger::init]. It will look at preconfigured state (via
[cmd ::logger::utils::applyAppender]) to autocreate appenders for
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
[example {
  logger::utils::applyAppender -appender console
  set log [logger::init applyAppender-3]
  ${log}::error "this is an error"
}]
[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph logger] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<

135
136
137
138
139
140
141

142


143







144
[example {
  logger::utils::applyAppender -appender console
  set log [logger::init applyAppender-3]
  ${log}::error "this is an error"
}]
[list_end]


[vset CATEGORY logger]


[include ../doctools2base/include/feedback.inc]







[manpage_end]

Changes to modules/map/map_geocode_nominatim.man.

1
2







3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin map::geocode::nominatim n 0.1]







[moddesc   {Mapping utilities}]
[titledesc {Resolving geographical names with a Nominatim service}]
[require Tcl 8.5]
[require http]
[require json]
[require uri]
[require snit]


>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin map::geocode::nominatim n 0.1]
[keywords geocoding]
[keywords http]
[keywords location]
[keywords map]
[keywords nominatim]
[keywords server]
[keywords url]
[moddesc   {Mapping utilities}]
[titledesc {Resolving geographical names with a Nominatim service}]
[require Tcl 8.5]
[require http]
[require json]
[require uri]
[require snit]
99
100
101
102
103
104
105
106
107
108
109

[section References]

[list_begin enum]
[enum] [uri http://wiki.openstreetmap.org/wiki/Nominatim]
[enum] [uri http://open.mapquestapi.com/nominatim/]
[list_end]

[keywords server geocoding map location nominatim http url]
[manpage_end]








<
<

<
106
107
108
109
110
111
112


113


[section References]

[list_begin enum]
[enum] [uri http://wiki.openstreetmap.org/wiki/Nominatim]
[enum] [uri http://open.mapquestapi.com/nominatim/]
[list_end]


[manpage_end]

Changes to modules/map/map_slippy.man.

1
2








3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin map::slippy n 0.5]








[moddesc   {Mapping utilities}]
[titledesc {Common code for slippy based map packages}]
[require Tcl 8.4]
[require Tk 8.4]
[require map::slippy [opt 0.5]]
[description]



>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin map::slippy n 0.5]
[keywords geodesy]
[keywords geography]
[keywords latitute]
[keywords location]
[keywords longitude]
[keywords map]
[keywords slippy]
[keywords zoom]
[moddesc   {Mapping utilities}]
[titledesc {Common code for slippy based map packages}]
[require Tcl 8.4]
[require Tk 8.4]
[require map::slippy [opt 0.5]]
[description]

20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
specified zoom [arg level], in pixels. This is, in essence, the result
of

[example {
	expr { [tiles $level] * [tile size] }
}]


[call [cmd ::map::slippy] [method tiles] [arg level]]

This method returns the width/height of a slippy-based map at the
specified zoom [arg level], in [term tiles].


[call [cmd ::map::slippy] [method {tile size}]]

This method returns the width/height of a tile in a slippy-based map,
in pixels.


[call [cmd ::map::slippy] [method {tile valid}] [arg tile] \
	[arg levels] [opt [arg msgvar]]]

This method checks whether [arg tile] described a valid tile in a
slippy-based map containing that many zoom [arg levels]. The result is
a boolean value, [const true] if the tile is valid, and [const false]
otherwise. For the latter a message is left in the variable named by
[arg msgvar], should it be specified.

[para]

A tile identifier as stored in [arg tile] is a list containing zoom
level, tile row, and tile column, in this order. The command
essentially checks this, i.e. the syntax, that the zoom level is
between 0 and "[arg levels]-1", and that the row/col information is
within the boundaries for the zoom level, i.e. 0 ...
"[lb]tiles $zoom[rb]-1".


[call [cmd ::map::slippy] [method {geo 2tile}] [arg geo]]

Converts a geographical location at a zoom level ([arg geo], a list
containing zoom level, latitude, and longitude, in this order) to a
tile identifier (list containing zoom level, row, and column) at that
level. The tile identifier uses pure integer numbers for the tile
coordinates, for all geographic coordinates mapping to that tile.


[call [cmd ::map::slippy] [method {geo 2tile.float}] [arg geo]]

Converts a geographical location at a zoom level ([arg geo], a list
containing zoom level, latitude, and longitude, in this order) to a
tile identifier (list containing zoom level, row, and column) at that
level. The tile identifier uses floating point numbers for the tile
coordinates, representing not only the tile the geographic coordinates
map to, but also the fractional location inside of that tile.


[call [cmd ::map::slippy] [method {geo 2point}] [arg geo]]

Converts a geographical location at a zoom level ([arg geo], a list
containing zoom level, latitude, and longitude, in this order) to a
pixel position (list containing zoom level, y, and x) at that level.


[call [cmd ::map::slippy] [method {tile 2geo}] [arg tile]]

Converts a tile identifier at a zoom level ([arg tile], list
containing zoom level, row, and column) to a geographical location
(list containing zoom level, latitude, and longitude, in this order)
at that level.


[call [cmd ::map::slippy] [method {tile 2point}] [arg tile]]

Converts a tile identifier at a zoom level ([arg tile], a list
containing zoom level, row, and column, in this order) to a pixel
position (list containing zoom level, y, and x) at that level.


[call [cmd ::map::slippy] [method {point 2geo}] [arg point]]

Converts a pixel position at a zoom level ([arg point], list
containing zoom level, y, and x) to a geographical location (list
containing zoom level, latitude, and longitude, in this order) at that
level.


[call [cmd ::map::slippy] [method {point 2tile}] [arg point]]

Converts a pixel position at a zoom level ([arg point], a list
containing zoom level, y, and x, in this order) to a tile identifier
(list containing zoom level, row, and column) at that level.

[call [cmd ::map::slippy] [method {fit geobox}] [arg canvdim] \
     [arg geobox] [arg zmin] [arg zmax]]

Calculates the zoom level (whithin the bounds [arg zmin] and
[arg zmax]) such that [arg geobox] (a 4-element list containing the
latitudes and longitudes lat0, lat1, lon0 and lon1 of a geo box,
in this order) fits into a viewport given by [arg canvdim], a
2-element list containing the width and height of the viewport, in
this order.

[list_end]


[section {Coordinate systems}]

The commands of this package operate on three distinct coordinate
systems, which are explained below.

[subsection Geographic]







<





<




<



















<







<










<





<








<





<







<


















<







28
29
30
31
32
33
34

35
36
37
38
39

40
41
42
43

44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62

63
64
65
66
67
68
69

70
71
72
73
74
75
76
77
78
79

80
81
82
83
84

85
86
87
88
89
90
91
92

93
94
95
96
97

98
99
100
101
102
103
104

105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122

123
124
125
126
127
128
129
specified zoom [arg level], in pixels. This is, in essence, the result
of

[example {
	expr { [tiles $level] * [tile size] }
}]


[call [cmd ::map::slippy] [method tiles] [arg level]]

This method returns the width/height of a slippy-based map at the
specified zoom [arg level], in [term tiles].


[call [cmd ::map::slippy] [method {tile size}]]

This method returns the width/height of a tile in a slippy-based map,
in pixels.


[call [cmd ::map::slippy] [method {tile valid}] [arg tile] \
	[arg levels] [opt [arg msgvar]]]

This method checks whether [arg tile] described a valid tile in a
slippy-based map containing that many zoom [arg levels]. The result is
a boolean value, [const true] if the tile is valid, and [const false]
otherwise. For the latter a message is left in the variable named by
[arg msgvar], should it be specified.

[para]

A tile identifier as stored in [arg tile] is a list containing zoom
level, tile row, and tile column, in this order. The command
essentially checks this, i.e. the syntax, that the zoom level is
between 0 and "[arg levels]-1", and that the row/col information is
within the boundaries for the zoom level, i.e. 0 ...
"[lb]tiles $zoom[rb]-1".


[call [cmd ::map::slippy] [method {geo 2tile}] [arg geo]]

Converts a geographical location at a zoom level ([arg geo], a list
containing zoom level, latitude, and longitude, in this order) to a
tile identifier (list containing zoom level, row, and column) at that
level. The tile identifier uses pure integer numbers for the tile
coordinates, for all geographic coordinates mapping to that tile.


[call [cmd ::map::slippy] [method {geo 2tile.float}] [arg geo]]

Converts a geographical location at a zoom level ([arg geo], a list
containing zoom level, latitude, and longitude, in this order) to a
tile identifier (list containing zoom level, row, and column) at that
level. The tile identifier uses floating point numbers for the tile
coordinates, representing not only the tile the geographic coordinates
map to, but also the fractional location inside of that tile.


[call [cmd ::map::slippy] [method {geo 2point}] [arg geo]]

Converts a geographical location at a zoom level ([arg geo], a list
containing zoom level, latitude, and longitude, in this order) to a
pixel position (list containing zoom level, y, and x) at that level.


[call [cmd ::map::slippy] [method {tile 2geo}] [arg tile]]

Converts a tile identifier at a zoom level ([arg tile], list
containing zoom level, row, and column) to a geographical location
(list containing zoom level, latitude, and longitude, in this order)
at that level.


[call [cmd ::map::slippy] [method {tile 2point}] [arg tile]]

Converts a tile identifier at a zoom level ([arg tile], a list
containing zoom level, row, and column, in this order) to a pixel
position (list containing zoom level, y, and x) at that level.


[call [cmd ::map::slippy] [method {point 2geo}] [arg point]]

Converts a pixel position at a zoom level ([arg point], list
containing zoom level, y, and x) to a geographical location (list
containing zoom level, latitude, and longitude, in this order) at that
level.


[call [cmd ::map::slippy] [method {point 2tile}] [arg point]]

Converts a pixel position at a zoom level ([arg point], a list
containing zoom level, y, and x, in this order) to a tile identifier
(list containing zoom level, row, and column) at that level.

[call [cmd ::map::slippy] [method {fit geobox}] [arg canvdim] \
     [arg geobox] [arg zmin] [arg zmax]]

Calculates the zoom level (whithin the bounds [arg zmin] and
[arg zmax]) such that [arg geobox] (a 4-element list containing the
latitudes and longitudes lat0, lat1, lon0 and lon1 of a geo box,
in this order) fits into a viewport given by [arg canvdim], a
2-element list containing the width and height of the viewport, in
this order.

[list_end]


[section {Coordinate systems}]

The commands of this package operate on three distinct coordinate
systems, which are explained below.

[subsection Geographic]
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156

[para] [const zero] latitude the [term Equator], with positive values
going [term north] and negative values going [term south]. While the
true range is +/- 90 degrees the projection used by the package
requires us to cap the range at +/- 85.05112877983284 degrees. This
means that north and south pole are not representable and not part of
any map.


[subsection Tiles]

While [sectref Geographic]al coordinates of the previous section are
independent of zoom level the [term {tile coordinates}] are not.

[para] Generally the integer part of tile coordinates represent the







<







139
140
141
142
143
144
145

146
147
148
149
150
151
152

[para] [const zero] latitude the [term Equator], with positive values
going [term north] and negative values going [term south]. While the
true range is +/- 90 degrees the projection used by the package
requires us to cap the range at +/- 85.05112877983284 degrees. This
means that north and south pole are not representable and not part of
any map.


[subsection Tiles]

While [sectref Geographic]al coordinates of the previous section are
independent of zoom level the [term {tile coordinates}] are not.

[para] Generally the integer part of tile coordinates represent the
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
tile of level N is split into its four quadrants, which then are the
tiles of level N+1.

[para] This means that at zoom level N the map is sliced (horizontally
and vertically) into 2^N stripes, for a total of 4^N tiles, with tile
coordinates ranging from 0 to 2^N+1.


[subsection Pixels/Points]

[term {pixel coordinates}], also called [term {point coordinates}] are
in essence [sectref Tiles {tile coordinates}] scaled by the size of
the image representing a tile. This tile size currently has a fixed
value, [const 256].


[section References]

[list_begin enum]
[enum]	[uri http://wiki.openstreetmap.org/wiki/Main_Page]
[list_end]


[keywords slippy map location geodesy geography latitute longitude zoom]
[manpage_end]







<







<





<
<
<

170
171
172
173
174
175
176

177
178
179
180
181
182
183

184
185
186
187
188



189
tile of level N is split into its four quadrants, which then are the
tiles of level N+1.

[para] This means that at zoom level N the map is sliced (horizontally
and vertically) into 2^N stripes, for a total of 4^N tiles, with tile
coordinates ranging from 0 to 2^N+1.


[subsection Pixels/Points]

[term {pixel coordinates}], also called [term {point coordinates}] are
in essence [sectref Tiles {tile coordinates}] scaled by the size of
the image representing a tile. This tile size currently has a fixed
value, [const 256].


[section References]

[list_begin enum]
[enum]	[uri http://wiki.openstreetmap.org/wiki/Main_Page]
[list_end]



[manpage_end]

Changes to modules/map/map_slippy_cache.man.

1
2







3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin map::slippy::cache n 0.2]







[moddesc   {Mapping utilities}]
[titledesc {Management of a tile cache in the local filesystem}]
[require Tcl 8.4]
[require Tk 8.4]
[require img::png]
[require map::slippy]
[require map::slippy::cache [opt 0.2]]


>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin map::slippy::cache n 0.2]
[keywords cache]
[keywords filesystem]
[keywords location]
[keywords map]
[keywords slippy]
[keywords tile]
[keywords zoom]
[moddesc   {Mapping utilities}]
[titledesc {Management of a tile cache in the local filesystem}]
[require Tcl 8.4]
[require Tk 8.4]
[require img::png]
[require map::slippy]
[require map::slippy::cache [opt 0.2]]
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60

[para]

The result of the command is [arg cacheName].

[list_end]


[subsection Methods]

[list_begin definitions]

[call [arg cacheName] [method valid] [arg tile] [opt [arg msgvar]]]

This method checks the validity of a the given [arg tile] identifier.
This is a convenience wrapper to [cmd {::map::slippy tile valid}] and
has the same interface.



[call [arg cacheName] [method exists] [arg tile]]

This methods tests whether the cache contains the specified [arg tile]
or not. The result is a boolean value, [const true] if the tile is
known, and [const false] otherwise. The tile is identified by a list
containing three elements, zoom level, row, and column number, in this
order.



[call [arg cacheName] [method get] [arg tile] [arg donecmd]]

This is the main method of the cache, retrieving the image for the
specified [arg tile] from the cache. The tile identifier is a list
containing three elements, the zoom level, row, and column number of
the tile, in this order.







<










<
<







<
<







32
33
34
35
36
37
38

39
40
41
42
43
44
45
46
47
48


49
50
51
52
53
54
55


56
57
58
59
60
61
62

[para]

The result of the command is [arg cacheName].

[list_end]


[subsection Methods]

[list_begin definitions]

[call [arg cacheName] [method valid] [arg tile] [opt [arg msgvar]]]

This method checks the validity of a the given [arg tile] identifier.
This is a convenience wrapper to [cmd {::map::slippy tile valid}] and
has the same interface.



[call [arg cacheName] [method exists] [arg tile]]

This methods tests whether the cache contains the specified [arg tile]
or not. The result is a boolean value, [const true] if the tile is
known, and [const false] otherwise. The tile is identified by a list
containing three elements, zoom level, row, and column number, in this
order.



[call [arg cacheName] [method get] [arg tile] [arg donecmd]]

This is the main method of the cache, retrieving the image for the
specified [arg tile] from the cache. The tile identifier is a list
containing three elements, the zoom level, row, and column number of
the tile, in this order.
90
91
92
93
94
95
96
97
98
99
100
101
[list_end]

[section References]

[list_begin enum]
[enum]	[uri http://wiki.openstreetmap.org/wiki/Main_Page]
[list_end]


[keywords cache tile slippy map location zoom filesystem]
[manpage_end]








<
<
<

<
92
93
94
95
96
97
98



99

[list_end]

[section References]

[list_begin enum]
[enum]	[uri http://wiki.openstreetmap.org/wiki/Main_Page]
[list_end]



[manpage_end]

Changes to modules/map/map_slippy_fetcher.man.

1
2








3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin map::slippy::fetcher n 0.3]








[moddesc   {Mapping utilities}]
[titledesc {Accessing a server providing tiles for slippy-based maps}]
[require Tcl 8.4]
[require Tk 8.4]
[require img::png]
[require map::slippy]
[require map::slippy::fetcher [opt 0.3]]


>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin map::slippy::fetcher n 0.3]
[keywords http]
[keywords location]
[keywords map]
[keywords server]
[keywords slippy]
[keywords tile]
[keywords url]
[keywords zoom]
[moddesc   {Mapping utilities}]
[titledesc {Accessing a server providing tiles for slippy-based maps}]
[require Tcl 8.4]
[require Tk 8.4]
[require img::png]
[require map::slippy]
[require map::slippy::fetcher [opt 0.3]]
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56

[para]

The result of the command is [arg fetcherName].

[list_end]


[subsection Methods]

[list_begin definitions]

[call [arg fetcherName] [method levels]]

This method returns the number of zoom levels supported by the fetcher
object, and the tile server it is accessing.

[call [arg fetcherName] [method tileheight]]

This method returns the height of tiles served, in pixels.


[call [arg fetcherName] [method tilewidth]]

This method returns the width of tiles served, in pixels.


[call [arg fetcherName] [method get] [arg tile] [arg donecmd]]

This is the main method of the fetcher, retrieving the image for the
specified [arg tile]. The tile identifier is a list containing three
elements, the zoom level, row, and column number of the tile, in this
order.







<













<



<







32
33
34
35
36
37
38

39
40
41
42
43
44
45
46
47
48
49
50
51

52
53
54

55
56
57
58
59
60
61

[para]

The result of the command is [arg fetcherName].

[list_end]


[subsection Methods]

[list_begin definitions]

[call [arg fetcherName] [method levels]]

This method returns the number of zoom levels supported by the fetcher
object, and the tile server it is accessing.

[call [arg fetcherName] [method tileheight]]

This method returns the height of tiles served, in pixels.


[call [arg fetcherName] [method tilewidth]]

This method returns the width of tiles served, in pixels.


[call [arg fetcherName] [method get] [arg tile] [arg donecmd]]

This is the main method of the fetcher, retrieving the image for the
specified [arg tile]. The tile identifier is a list containing three
elements, the zoom level, row, and column number of the tile, in this
order.
72
73
74
75
76
77
78
79
80
81
82
83
[list_end]

[section References]

[list_begin enum]
[enum]	[uri http://wiki.openstreetmap.org/wiki/Main_Page]
[list_end]


[keywords server tile slippy map location zoom http url]
[manpage_end]








<
<
<

<
77
78
79
80
81
82
83



84

[list_end]

[section References]

[list_begin enum]
[enum]	[uri http://wiki.openstreetmap.org/wiki/Main_Page]
[list_end]



[manpage_end]

Changes to modules/mapproj/mapproj.man.

1
2



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin mapproj n 0.1]



[copyright {2007 Kevin B. Kenny <[email protected]>}]
[moddesc {Tcl Library}]
[titledesc {Map projection routines}]
[require Tcl [opt 8.4]]
[require math::interpolate [opt 1.0]]
[require math::special [opt 0.2.1]]
[require mapproj [opt 1.0]]
[keywords map projection geodesy]
[description]
The [package mapproj] package provides a set of procedures for
converting between world co-ordinates (latitude and longitude) and map
co-ordinates on a number of different map projections.

[section Commands]



>
>
>







<







1
2
3
4
5
6
7
8
9
10
11
12

13
14
15
16
17
18
19
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin mapproj n 0.1]
[keywords geodesy]
[keywords map]
[keywords projection]
[copyright {2007 Kevin B. Kenny <[email protected]>}]
[moddesc {Tcl Library}]
[titledesc {Map projection routines}]
[require Tcl [opt 8.4]]
[require math::interpolate [opt 1.0]]
[require math::special [opt 0.2.1]]
[require mapproj [opt 1.0]]

[description]
The [package mapproj] package provides a set of procedures for
converting between world co-ordinates (latitude and longitude) and map
co-ordinates on a number of different map projections.

[section Commands]

73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
[call [cmd ::mapproj::toOrthographic] [arg lambda_0] [arg phi_0] [arg lambda] [arg phi]]
Converts to the orthographic projection.
[call [cmd ::mapproj::fromOrthographic] [arg lambda_0] [arg phi_0] [arg x] [arg y]]
Converts from the orthographic projection.
[call [cmd ::mapproj::toStereographic] [arg lambda_0] [arg phi_0] [arg lambda] [arg phi]]
Converts to the stereographic (azimuthal conformal) projection.
[call [cmd ::mapproj::fromStereographic] [arg lambda_0] [arg phi_0] [arg x] [arg y]]
Converts from the stereographic (azimuthal conformal) projection. 
[call [cmd ::mapproj::toGnomonic] [arg lambda_0] [arg phi_0] [arg lambda] [arg phi]]
Converts to the gnomonic projection.
[call [cmd ::mapproj::fromGnomonic] [arg lambda_0] [arg phi_0] [arg x] [arg y]]
Converts from the gnomonic projection.
[call [cmd ::mapproj::toAzimuthalEquidistant] [arg lambda_0] [arg phi_0] [arg lambda] [arg phi]]
Converts to the azimuthal equidistant projection.
[call [cmd ::mapproj::fromAzimuthalEquidistant] [arg lambda_0] [arg phi_0] [arg x] [arg y]]







|







75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
[call [cmd ::mapproj::toOrthographic] [arg lambda_0] [arg phi_0] [arg lambda] [arg phi]]
Converts to the orthographic projection.
[call [cmd ::mapproj::fromOrthographic] [arg lambda_0] [arg phi_0] [arg x] [arg y]]
Converts from the orthographic projection.
[call [cmd ::mapproj::toStereographic] [arg lambda_0] [arg phi_0] [arg lambda] [arg phi]]
Converts to the stereographic (azimuthal conformal) projection.
[call [cmd ::mapproj::fromStereographic] [arg lambda_0] [arg phi_0] [arg x] [arg y]]
Converts from the stereographic (azimuthal conformal) projection.
[call [cmd ::mapproj::toGnomonic] [arg lambda_0] [arg phi_0] [arg lambda] [arg phi]]
Converts to the gnomonic projection.
[call [cmd ::mapproj::fromGnomonic] [arg lambda_0] [arg phi_0] [arg x] [arg y]]
Converts from the gnomonic projection.
[call [cmd ::mapproj::toAzimuthalEquidistant] [arg lambda_0] [arg phi_0] [arg lambda] [arg phi]]
Converts to the azimuthal equidistant projection.
[call [cmd ::mapproj::fromAzimuthalEquidistant] [arg lambda_0] [arg phi_0] [arg x] [arg y]]
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283

[section Arguments]

The following arguments are accepted by the projection commands:

[list_begin definitions]

[def [arg lambda]] 

Longitude of the point to be projected, in degrees.

[def [arg phi]]

Latitude of the point to be projected, in degrees.

[def [arg lambda_0]]

Longitude of the center of the sheet, in degrees.  For many projections,
this figure is also the reference meridian of the projection.

[def [arg phi_0]]

Latitude of the center of the sheet, in degrees.  For the azimuthal 
projections, this figure is also the latitude of the center of the projection.

[def [arg phi_1]]

Latitude of the first reference parallel, for projections that use reference
parallels.

[def [arg phi_2]]

Latitude of the second reference parallel, for projections that use reference 
parallels.

[def [arg x]]

X co-ordinate of a point on the map, in units of Earth radii.

[def [arg y]]

Y co-ordinate of a point on the map, in units of Earth radii.

[list_end]

[section Results]

For all of the procedures whose names begin with 'to', the return value 
is a list comprising an [emph x] co-ordinate and a [emph y] co-ordinate.
The co-ordinates are relative to the center of the map sheet to be drawn,
measured in Earth radii at the reference location on the map.

For all of the functions whose names begin with 'from', the return value
is a list comprising the longitude and latitude, in degrees.

[section {Choosing a projection}]

This package offers a great many projections, because no single projection
is appropriate to all maps.  This section attempts to provide guidance
on how to choose a projection.
[para]
First, consider the type of data that you intend to display on the map.
If the data are [emph directional] ([emph e.g.,] winds, ocean currents, or 
magnetic fields) then you need to use a projection that preserves
angles; these are known as [emph conformal] projections.  Conformal
projections include the Mercator, the Albers azimuthal equal-area,
the stereographic, and the Peirce Quincuncial projection.  If the
data are [emph thematic], describing properties of land or water, such
as temperature, population density, land use, or demographics; then
you need a projection that will show these data with the areas on the map
proportional to the areas in real life.  These so-called [emph {equal area}]
projections include the various cylindrical equal area projections,
the sinusoidal projection, the Lambert azimuthal equal-area projection, 
the Albers equal-area conic projection, and several of the world-map 
projections (Miller Cylindrical, Mollweide, Eckert IV, Eckert VI, Robinson,
and Hammer). If the significant factor in your data is distance from a
central point or line (such as air routes), then you will do best with
an [emph equidistant] projection such as [emph "plate carr\u00e9e"],
Cassini, azimuthal equidistant, or conic equidistant.  If direction from 
a central point is a critical factor in your data (for instance,
air routes, radio antenna pointing), then you will almost surely want to
use one of the azimuthal projections. Appropriate choices are azimuthal
equidistant, azimuthal equal-area, stereographic, and perhaps orthographic.
[para]
Next, consider how much of the Earth your map will cover, and the general
shape of the area of interest.  For maps of the entire Earth,
the cylindrical equal area, Eckert IV and VI, Mollweide, Robinson, and Hammer
projections are good overall choices.  The Mercator projection is traditional,
but the extreme distortions of area at high latitudes make it
a poor choice unless a conformal projection is required. The Peirce
projection is a better choice of conformal projection, having less distortion
of landforms.  The Miller Cylindrical is a compromise designed to give 
shapes similar to the traditional Mercator, but with less polar stretching.
The Peirce Quincuncial projection shows all the continents with acceptable
distortion if a reference meridian close to +20 degrees is chosen.
The Robinson projection yields attractive maps for things like political
divisions, but should be avoided in presenting scientific data, since other
projections have moe useful geometric properties.
[para]
If the map will cover a hemisphere, then choose stereographic, 
azimuthal-equidistant, Hammer, or Mollweide projections; these all project
the hemisphere into a circle.
[para]
If the map will cover a large area (at least a few hundred km on a side), 
but less than
a hemisphere, then you have several choices.  Azimuthal projections
are usually good (choose stereographic, azimuthal equidistant, or
Lambert azimuthal equal-area according to whether shapes, distances from 
a central point, or areas are important).  Azimuthal projections (and possibly 
the Cassini projection) are the only
really good choices for mapping the polar regions.
[para]
If the large area is in one of the temperate zones and is round or has
a primarily east-west extent, then the conic projections are good choices.
Choose the Lambert conformal conic, the conic equidistant, or the Albers
equal-area conic according to whether shape, distance, or area are the
most important parameters.  For any of these, the reference parallels
should be chosen at approximately 1/6 and 5/6 of the range of latitudes
to be displayed.  For instance, maps of the 48 coterminous United States
are attractive with reference parallels of 28.5 and 45.5 degrees.
[para]
If the large area is equatorial and is round or has a primarily east-west
extent, then the Mercator projection is a good choice for a conformal 
projection; Lambert cylindrical equal-area and sinusoidal projections are
good equal-area projections; and the [emph "plate carr\u00e9e"] is a
good equidistant projection.
[para]
Large areas having a primarily North-South aspect, particularly those
spanning the Equator, need some other choices.  The Cassini projection
is a good choice for an equidistant projection (for instance, a Cassini







|














|









|














|














|









|
|




|












|







|



|



|
|













|







156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285

[section Arguments]

The following arguments are accepted by the projection commands:

[list_begin definitions]

[def [arg lambda]]

Longitude of the point to be projected, in degrees.

[def [arg phi]]

Latitude of the point to be projected, in degrees.

[def [arg lambda_0]]

Longitude of the center of the sheet, in degrees.  For many projections,
this figure is also the reference meridian of the projection.

[def [arg phi_0]]

Latitude of the center of the sheet, in degrees.  For the azimuthal
projections, this figure is also the latitude of the center of the projection.

[def [arg phi_1]]

Latitude of the first reference parallel, for projections that use reference
parallels.

[def [arg phi_2]]

Latitude of the second reference parallel, for projections that use reference
parallels.

[def [arg x]]

X co-ordinate of a point on the map, in units of Earth radii.

[def [arg y]]

Y co-ordinate of a point on the map, in units of Earth radii.

[list_end]

[section Results]

For all of the procedures whose names begin with 'to', the return value
is a list comprising an [emph x] co-ordinate and a [emph y] co-ordinate.
The co-ordinates are relative to the center of the map sheet to be drawn,
measured in Earth radii at the reference location on the map.

For all of the functions whose names begin with 'from', the return value
is a list comprising the longitude and latitude, in degrees.

[section {Choosing a projection}]

This package offers a great many projections, because no single projection
is appropriate to all maps.  This section attempts to provide guidance
on how to choose a projection.
[para]
First, consider the type of data that you intend to display on the map.
If the data are [emph directional] ([emph e.g.,] winds, ocean currents, or
magnetic fields) then you need to use a projection that preserves
angles; these are known as [emph conformal] projections.  Conformal
projections include the Mercator, the Albers azimuthal equal-area,
the stereographic, and the Peirce Quincuncial projection.  If the
data are [emph thematic], describing properties of land or water, such
as temperature, population density, land use, or demographics; then
you need a projection that will show these data with the areas on the map
proportional to the areas in real life.  These so-called [emph {equal area}]
projections include the various cylindrical equal area projections,
the sinusoidal projection, the Lambert azimuthal equal-area projection,
the Albers equal-area conic projection, and several of the world-map
projections (Miller Cylindrical, Mollweide, Eckert IV, Eckert VI, Robinson,
and Hammer). If the significant factor in your data is distance from a
central point or line (such as air routes), then you will do best with
an [emph equidistant] projection such as [emph "plate carr\u00e9e"],
Cassini, azimuthal equidistant, or conic equidistant.  If direction from
a central point is a critical factor in your data (for instance,
air routes, radio antenna pointing), then you will almost surely want to
use one of the azimuthal projections. Appropriate choices are azimuthal
equidistant, azimuthal equal-area, stereographic, and perhaps orthographic.
[para]
Next, consider how much of the Earth your map will cover, and the general
shape of the area of interest.  For maps of the entire Earth,
the cylindrical equal area, Eckert IV and VI, Mollweide, Robinson, and Hammer
projections are good overall choices.  The Mercator projection is traditional,
but the extreme distortions of area at high latitudes make it
a poor choice unless a conformal projection is required. The Peirce
projection is a better choice of conformal projection, having less distortion
of landforms.  The Miller Cylindrical is a compromise designed to give
shapes similar to the traditional Mercator, but with less polar stretching.
The Peirce Quincuncial projection shows all the continents with acceptable
distortion if a reference meridian close to +20 degrees is chosen.
The Robinson projection yields attractive maps for things like political
divisions, but should be avoided in presenting scientific data, since other
projections have moe useful geometric properties.
[para]
If the map will cover a hemisphere, then choose stereographic,
azimuthal-equidistant, Hammer, or Mollweide projections; these all project
the hemisphere into a circle.
[para]
If the map will cover a large area (at least a few hundred km on a side),
but less than
a hemisphere, then you have several choices.  Azimuthal projections
are usually good (choose stereographic, azimuthal equidistant, or
Lambert azimuthal equal-area according to whether shapes, distances from
a central point, or areas are important).  Azimuthal projections (and possibly
the Cassini projection) are the only
really good choices for mapping the polar regions.
[para]
If the large area is in one of the temperate zones and is round or has
a primarily east-west extent, then the conic projections are good choices.
Choose the Lambert conformal conic, the conic equidistant, or the Albers
equal-area conic according to whether shape, distance, or area are the
most important parameters.  For any of these, the reference parallels
should be chosen at approximately 1/6 and 5/6 of the range of latitudes
to be displayed.  For instance, maps of the 48 coterminous United States
are attractive with reference parallels of 28.5 and 45.5 degrees.
[para]
If the large area is equatorial and is round or has a primarily east-west
extent, then the Mercator projection is a good choice for a conformal
projection; Lambert cylindrical equal-area and sinusoidal projections are
good equal-area projections; and the [emph "plate carr\u00e9e"] is a
good equidistant projection.
[para]
Large areas having a primarily North-South aspect, particularly those
spanning the Equator, need some other choices.  The Cassini projection
is a good choice for an equidistant projection (for instance, a Cassini
299
300
301
302
303
304
305
306
307
properties.  The orthographic projection produces views of the
Earth as seen from space.  The gnomonic projection produces a
map on which all great circles (the shortest distance between
two points on the Earth's surface) are rendered as straight lines.
While this projection is useful for navigational planning, it
has extreme distortions of shape and area, and can display
only a limited area of the Earth (substantially less than a hemisphere).

[manpage_end]







<

301
302
303
304
305
306
307

308
properties.  The orthographic projection produces views of the
Earth as seen from space.  The gnomonic projection produces a
map on which all great circles (the shortest distance between
two points on the Earth's surface) are rendered as straight lines.
While this projection is useful for navigational planning, it
has extreme distortions of shape and area, and can display
only a limited area of the Earth (substantially less than a hemisphere).

[manpage_end]

Changes to modules/math/bigfloat.man.

1






2
3
4
5
6
7
8
[manpage_begin math::bigfloat n 2.0.1]






[copyright {2004-2008, by Stephane Arnold <stephanearnold at yahoo dot fr>}]
[moddesc   {Tcl Math Library}]
[titledesc {Arbitrary precision floating-point numbers}]
[category  Mathematics]
[require Tcl 8.5]
[require math::bigfloat [opt 2.0.1]]


>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
[manpage_begin math::bigfloat n 2.0.1]
[keywords computations]
[keywords floating-point]
[keywords interval]
[keywords math]
[keywords multiprecision]
[keywords tcl]
[copyright {2004-2008, by Stephane Arnold <stephanearnold at yahoo dot fr>}]
[moddesc   {Tcl Math Library}]
[titledesc {Arbitrary precision floating-point numbers}]
[category  Mathematics]
[require Tcl 8.5]
[require math::bigfloat [opt 2.0.1]]

73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
For example :
[example_begin]
set x [lb]fromstr 1.0000000000[rb]
# the next line does the same, but smarter
set y [lb]fromstr 1. 10[rb]
[example_end]


[call [cmd tostr] [opt [option -nosci]] [arg number]]
Returns a string form of a BigFloat, in which all digits are exacts.
[emph "All exact digits"] means a rounding may occur, for example to zero,
if the uncertainty interval does not clearly show the true digits.
[emph number] may be an integer, causing the command to return exactly the input argument.
With the [option -nosci] option, the number returned is never shown in scientific
notation, i.e. not like '3.4523e+5' but like '345230.'.
[example_begin]
puts [lb]tostr [lb]fromstr 0.99999[rb][rb] ;# 1.0000
puts [lb]tostr [lb]fromstr 1.00001[rb][rb] ;# 1.0000
puts [lb]tostr [lb]fromstr 0.002[rb][rb] ;# 0.e-2
[example_end]
See [sectref PRECISION] for that matter.

See also [cmd iszero] for how to detect zeros, which is useful when performing a division.

[call [cmd fromdouble] [arg double] [opt [arg decimals]]]

Converts a double (a simple floating-point value) to a BigFloat, with
exactly [arg decimals] digits.  Without the [arg decimals] argument,
it behaves like [cmd fromstr]. 
Here, the only important feature you might care of is the ability
to create BigFloats with a fixed number of [arg decimals].

[example_begin]
tostr [lb]fromstr 1.111 4[rb]
# returns : 1.111000 (3 zeros)
tostr [lb]fromdouble 1.111 4[rb]







<




















|







79
80
81
82
83
84
85

86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
For example :
[example_begin]
set x [lb]fromstr 1.0000000000[rb]
# the next line does the same, but smarter
set y [lb]fromstr 1. 10[rb]
[example_end]


[call [cmd tostr] [opt [option -nosci]] [arg number]]
Returns a string form of a BigFloat, in which all digits are exacts.
[emph "All exact digits"] means a rounding may occur, for example to zero,
if the uncertainty interval does not clearly show the true digits.
[emph number] may be an integer, causing the command to return exactly the input argument.
With the [option -nosci] option, the number returned is never shown in scientific
notation, i.e. not like '3.4523e+5' but like '345230.'.
[example_begin]
puts [lb]tostr [lb]fromstr 0.99999[rb][rb] ;# 1.0000
puts [lb]tostr [lb]fromstr 1.00001[rb][rb] ;# 1.0000
puts [lb]tostr [lb]fromstr 0.002[rb][rb] ;# 0.e-2
[example_end]
See [sectref PRECISION] for that matter.

See also [cmd iszero] for how to detect zeros, which is useful when performing a division.

[call [cmd fromdouble] [arg double] [opt [arg decimals]]]

Converts a double (a simple floating-point value) to a BigFloat, with
exactly [arg decimals] digits.  Without the [arg decimals] argument,
it behaves like [cmd fromstr].
Here, the only important feature you might care of is the ability
to create BigFloats with a fixed number of [arg decimals].

[example_begin]
tostr [lb]fromstr 1.111 4[rb]
# returns : 1.111000 (3 zeros)
tostr [lb]fromdouble 1.111 4[rb]
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
[example_begin]
set n 10
set x [lb]int2float $n[rb]; # like fromstr 10.0
puts [lb]tostr $x[rb]; # prints "10."
set x [lb]int2float $n 3[rb]; # like fromstr 10.000
puts [lb]tostr $x[rb]; # prints "10.00"
[example_end]


[list_end]

[section "ARITHMETICS"]
[list_begin definitions]

[call [cmd add] [arg x] [arg y]]







<







131
132
133
134
135
136
137

138
139
140
141
142
143
144
[example_begin]
set n 10
set x [lb]int2float $n[rb]; # like fromstr 10.0
puts [lb]tostr $x[rb]; # prints "10."
set x [lb]int2float $n 3[rb]; # like fromstr 10.000
puts [lb]tostr $x[rb]; # prints "10.00"
[example_end]


[list_end]

[section "ARITHMETICS"]
[list_begin definitions]

[call [cmd add] [arg x] [arg y]]
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
Returns the opposite of [emph x]

[call [cmd pow] [arg x] [arg n]]
Returns [emph x] taken to the [emph n]th power.
It only works if [emph n] is an integer.
[emph x] might be a BigFloat or an integer.


[list_end]

[section COMPARISONS]
[list_begin definitions]
[call [cmd iszero] [arg x]]

Returns 1 if [emph x] is :







<







163
164
165
166
167
168
169

170
171
172
173
174
175
176
Returns the opposite of [emph x]

[call [cmd pow] [arg x] [arg n]]
Returns [emph x] taken to the [emph n]th power.
It only works if [emph n] is an integer.
[emph x] might be a BigFloat or an integer.


[list_end]

[section COMPARISONS]
[list_begin definitions]
[call [cmd iszero] [arg x]]

Returns 1 if [emph x] is :
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
tostr  $a ; # 0.e-2
iszero $a ; # false

set a [lb]fromstr 0.001[rb] ; # uncertainty interval : 0.000, 0.002
tostr  $a ; # 0.e-2
iszero $a ; # true
[example_end]


[call  [cmd equal] [arg x] [arg y]]

Returns 1 if [emph x] and [emph y] are equal, 0 elsewhere.

[call [cmd compare] [arg x] [arg y]]








<







190
191
192
193
194
195
196

197
198
199
200
201
202
203
tostr  $a ; # 0.e-2
iszero $a ; # false

set a [lb]fromstr 0.001[rb] ; # uncertainty interval : 0.000, 0.002
tostr  $a ; # 0.e-2
iszero $a ; # true
[example_end]


[call  [cmd equal] [arg x] [arg y]]

Returns 1 if [emph x] and [emph y] are equal, 0 elsewhere.

[call [cmd compare] [arg x] [arg y]]

262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
holds its uncertainty as 1 at the level of the last digit.
[item] During computations, the uncertainty of each result
is internally computed the closest to the reality, thus saving the memory used.
[item] When converting back to string, the digits that are printed
are not subject to uncertainty. However, some rounding is done, as not doing so
causes severe problems.
[list_end]
Uncertainties are kept in the internal representation of the number ; 
it is recommended to use [cmd tostr] only for outputting data (on the screen or in a file),
and NEVER call [cmd fromstr] with the result of [cmd tostr].
It is better to always keep operands in their internal representation.
Due to the internals of this library, the uncertainty interval may be slightly
wider than expected, but this should not cause false digits.
[para]

Now you may ask this question : What precision am I going to get
after calling add, sub, mul or div?
First you set a number from the string representation and,
by the way, its uncertainty is set:
[example_begin]
set a [lb]fromstr 1.230[rb]
# $a belongs to [lb]1.229, 1.231[rb]
set a [lb]fromstr 1.000[rb]
# $a belongs to [lb]0.999, 1.001[rb]
# $a has a relative uncertainty of 0.1% : 0.001(the uncertainty)/1.000(the medium value)
[example_end]
The uncertainty of the sum, or the difference, of two numbers, is the sum 
of their respective uncertainties.

[example_begin]
set a [lb]fromstr 1.230[rb]
set b [lb]fromstr 2.340[rb]
set sum [lb]add $a $b[rb][rb]
# the result is : [lb]3.568, 3.572[rb] (the last digit is known with an uncertainty of 2)
tostr $sum ; # 3.57
[example_end]
But when, for example, we add or substract an integer to a BigFloat, 
the relative uncertainty of the result is unchanged. So it is desirable 
not to convert integers to BigFloats:

[example_begin]
set a [lb]fromstr 0.999999999[rb]
# now something dangerous
set b [lb]fromstr 2.000[rb]
# the result has only 3 digits







|


















|









|
|







264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
holds its uncertainty as 1 at the level of the last digit.
[item] During computations, the uncertainty of each result
is internally computed the closest to the reality, thus saving the memory used.
[item] When converting back to string, the digits that are printed
are not subject to uncertainty. However, some rounding is done, as not doing so
causes severe problems.
[list_end]
Uncertainties are kept in the internal representation of the number ;
it is recommended to use [cmd tostr] only for outputting data (on the screen or in a file),
and NEVER call [cmd fromstr] with the result of [cmd tostr].
It is better to always keep operands in their internal representation.
Due to the internals of this library, the uncertainty interval may be slightly
wider than expected, but this should not cause false digits.
[para]

Now you may ask this question : What precision am I going to get
after calling add, sub, mul or div?
First you set a number from the string representation and,
by the way, its uncertainty is set:
[example_begin]
set a [lb]fromstr 1.230[rb]
# $a belongs to [lb]1.229, 1.231[rb]
set a [lb]fromstr 1.000[rb]
# $a belongs to [lb]0.999, 1.001[rb]
# $a has a relative uncertainty of 0.1% : 0.001(the uncertainty)/1.000(the medium value)
[example_end]
The uncertainty of the sum, or the difference, of two numbers, is the sum
of their respective uncertainties.

[example_begin]
set a [lb]fromstr 1.230[rb]
set b [lb]fromstr 2.340[rb]
set sum [lb]add $a $b[rb][rb]
# the result is : [lb]3.568, 3.572[rb] (the last digit is known with an uncertainty of 2)
tostr $sum ; # 3.57
[example_end]
But when, for example, we add or substract an integer to a BigFloat,
the relative uncertainty of the result is unchanged. So it is desirable
not to convert integers to BigFloats:

[example_begin]
set a [lb]fromstr 0.999999999[rb]
# now something dangerous
set b [lb]fromstr 2.000[rb]
# the result has only 3 digits
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
[example_begin]
puts [lb]tostr [lb]cos [lb]fromstr 0. 10[rb][rb][rb]; # -> 1.000000000
puts [lb]tostr [lb]cos [lb]fromstr 0. 5[rb][rb][rb]; # -> 1.0000
puts [lb]tostr [lb]cos [lb]fromstr 0e-10[rb][rb][rb]; # -> 1.000000000
puts [lb]tostr [lb]cos [lb]fromstr 1e-10[rb][rb][rb]; # -> 1.000000000
[example_end]

BigFloats with different internal representations may be converted 
to the same string.

[para]

For most analysis functions (cosine, square root, logarithm, etc.), determining the precision
of the result is difficult.
It seems however that in many cases, the loss of precision in the result
is of one or two digits.
There are some exceptions : for example,
[example_begin]
tostr [lb]exp [lb]fromstr 100.0 10[rb][rb]
# returns : 2.688117142e+43 which has only 10 digits of precision, although the entry
# has 14 digits of precision.
[example_end]


[section "WHAT ABOUT TCL 8.4 ?"]
If your setup do not provide Tcl 8.5 but supports 8.4, the package can still be loaded,
switching back to [emph math::bigfloat] 1.2. Indeed, an important function introduced in Tcl 8.5
is required - the ability to handle bignums, that we can do with [cmd expr].
Before 8.5, this ability was provided by several packages,
including the pure-Tcl [emph math::bignum] package provided by [emph tcllib].







|














<







335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356

357
358
359
360
361
362
363
[example_begin]
puts [lb]tostr [lb]cos [lb]fromstr 0. 10[rb][rb][rb]; # -> 1.000000000
puts [lb]tostr [lb]cos [lb]fromstr 0. 5[rb][rb][rb]; # -> 1.0000
puts [lb]tostr [lb]cos [lb]fromstr 0e-10[rb][rb][rb]; # -> 1.000000000
puts [lb]tostr [lb]cos [lb]fromstr 1e-10[rb][rb][rb]; # -> 1.000000000
[example_end]

BigFloats with different internal representations may be converted
to the same string.

[para]

For most analysis functions (cosine, square root, logarithm, etc.), determining the precision
of the result is difficult.
It seems however that in many cases, the loss of precision in the result
is of one or two digits.
There are some exceptions : for example,
[example_begin]
tostr [lb]exp [lb]fromstr 100.0 10[rb][rb]
# returns : 2.688117142e+43 which has only 10 digits of precision, although the entry
# has 14 digits of precision.
[example_end]


[section "WHAT ABOUT TCL 8.4 ?"]
If your setup do not provide Tcl 8.5 but supports 8.4, the package can still be loaded,
switching back to [emph math::bigfloat] 1.2. Indeed, an important function introduced in Tcl 8.5
is required - the ability to handle bignums, that we can do with [cmd expr].
Before 8.5, this ability was provided by several packages,
including the pure-Tcl [emph math::bignum] package provided by [emph tcllib].
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
[example_begin]
namespace import ::math::bigfloat::*
[example_end]
If you matter much about avoiding names conflicts,
I considere it should be resolved by the following :
[example_begin]
package require math::bigfloat
# beware: namespace ensembles are not available in Tcl 8.4 
namespace eval ::math::bigfloat {namespace ensemble create -command ::bigfloat}
# from now, the bigfloat command takes as subcommands all original math::bigfloat::* commands
set a [lb]bigfloat sub [lb]bigfloat fromstr 2.000[rb] [lb]bigfloat fromstr 0.530[rb][rb]
puts [lb]bigfloat tostr $a[rb]
[example_end]
[section "EXAMPLES"]
Guess what happens when you are doing some astronomy. Here is an example :







|







390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
[example_begin]
namespace import ::math::bigfloat::*
[example_end]
If you matter much about avoiding names conflicts,
I considere it should be resolved by the following :
[example_begin]
package require math::bigfloat
# beware: namespace ensembles are not available in Tcl 8.4
namespace eval ::math::bigfloat {namespace ensemble create -command ::bigfloat}
# from now, the bigfloat command takes as subcommands all original math::bigfloat::* commands
set a [lb]bigfloat sub [lb]bigfloat fromstr 2.000[rb] [lb]bigfloat fromstr 0.530[rb][rb]
puts [lb]bigfloat tostr $a[rb]
[example_end]
[section "EXAMPLES"]
Guess what happens when you are doing some astronomy. Here is an example :
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
set opposite3 [lb]deg2rad [lb]degree-angle 51  0 50 500[rb][rb]
set sinProduct [lb]mul [lb]sin $angle1[rb] [lb]sin $angle2[rb][rb]
set cosProduct [lb]mul [lb]cos $angle1[rb] [lb]cos $angle2[rb][rb]
set angle3 [lb]asin [lb]add [lb]mul $sinProduct [lb]cos $opposite3[rb][rb] $cosProduct[rb][rb]
puts "angle3 : [lb]tostr [lb]rad2deg $angle3[rb][rb]"
[example_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {math :: bignum :: float}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords tcl multiprecision math floating-point interval computations]
[manpage_end]







<
<
<
<
<
|
<
|
<
<
<
<
<

423
424
425
426
427
428
429





430

431





432
set opposite3 [lb]deg2rad [lb]degree-angle 51  0 50 500[rb][rb]
set sinProduct [lb]mul [lb]sin $angle1[rb] [lb]sin $angle2[rb][rb]
set cosProduct [lb]mul [lb]cos $angle1[rb] [lb]cos $angle2[rb][rb]
set angle3 [lb]asin [lb]add [lb]mul $sinProduct [lb]cos $opposite3[rb][rb] $cosProduct[rb][rb]
puts "angle3 : [lb]tostr [lb]rad2deg $angle3[rb][rb]"
[example_end]






[vset CATEGORY {math :: bignum :: float}]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/math/bignum.man.

1
2




3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin math::bignum n 3.1]




[copyright {2004 Salvatore Sanfilippo <antirez at invece dot org>}]
[copyright {2004 Arjen Markus <arjenmarkus at users dot sourceforge dot net>}]
[moddesc   {Tcl Math Library}]
[titledesc {Arbitrary precision integer numbers}]
[category  Mathematics]
[require Tcl [opt 8.4]]
[require math::bignum [opt 3.1]]


>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin math::bignum n 3.1]
[keywords bignums]
[keywords math]
[keywords multiprecision]
[keywords tcl]
[copyright {2004 Salvatore Sanfilippo <antirez at invece dot org>}]
[copyright {2004 Arjen Markus <arjenmarkus at users dot sourceforge dot net>}]
[moddesc   {Tcl Math Library}]
[titledesc {Arbitrary precision integer numbers}]
[category  Mathematics]
[require Tcl [opt 8.4]]
[require math::bignum [opt 3.1]]
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
[para]

The bignum interface is opaque, so
operations on bignums that are not returned by procedures
in this package (but created by hand) may lead to unspecified behaviours.
It's safe to treat bignums as pure values, so there is no need
to free a bignum, or to duplicate it via a special operation.


[section "EXAMPLES"]
This section shows some simple example. This library being just
a way to perform math operations, examples may be the simplest way
to learn how to work with it. Consult the API section of
this man page for information about individual procedures.








<







34
35
36
37
38
39
40

41
42
43
44
45
46
47
[para]

The bignum interface is opaque, so
operations on bignums that are not returned by procedures
in this package (but created by hand) may lead to unspecified behaviours.
It's safe to treat bignums as pure values, so there is no need
to free a bignum, or to duplicate it via a special operation.


[section "EXAMPLES"]
This section shows some simple example. This library being just
a way to perform math operations, examples may be the simplest way
to learn how to work with it. Consult the API section of
this man page for information about individual procedures.

216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236

[call [cmd ::math::bignum::bits] [arg bignum]]
Return the number of bits needed to represent bignum in radix 2.

[list_end]
[para]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {math :: bignum}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords tcl multiprecision math bignums]
[manpage_end]







<
<
<
<
<
|
<
|
<
<
<
<
<

219
220
221
222
223
224
225





226

227





228

[call [cmd ::math::bignum::bits] [arg bignum]]
Return the number of bits needed to represent bignum in radix 2.

[list_end]
[para]






[vset CATEGORY {math :: bignum}]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/math/calculus.man.

1






2
3
4
5
6
7
8
[manpage_begin math::calculus n 0.7.1]






[copyright {2002,2003,2004 Arjen Markus}]
[moddesc   {Tcl Math Library}]
[titledesc {Integration and ordinary differential equations}]
[category  Mathematics]
[require Tcl 8.4]
[require math::calculus 0.7.1]
[description]

>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
[manpage_begin math::calculus n 0.7.1]
[see_also romberg]
[keywords calculus]
[keywords {differential equations}]
[keywords integration]
[keywords math]
[keywords roots]
[copyright {2002,2003,2004 Arjen Markus}]
[moddesc   {Tcl Math Library}]
[titledesc {Integration and ordinary differential equations}]
[category  Mathematics]
[require Tcl 8.4]
[require math::calculus 0.7.1]
[description]
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
each rectangle, whereas the command [cmd integral2D_accurate] uses a
four-point quadrature formula. This results in an exact integration of
polynomials of third degree or less.
[para]
The function must take two arguments and return the function
value.


[call [cmd ::math::calculus::integral3D] [arg xinterval] [arg yinterval] [arg zinterval] [arg func]]
[call [cmd ::math::calculus::integral3D_accurate] [arg xinterval] [arg yinterval] [arg zinterval] [arg func]]
The commands [cmd integral3D] and [cmd integral3D_accurate] are the
three-dimensional equivalent of [cmd integral2D] and [cmd integral3D_accurate].
The function [emph func] takes three arguments and is integrated over the block in
3D space given by three intervals.


[call [cmd ::math::calculus::eulerStep] [arg t] [arg tstep] [arg xvec] [arg func]]
Set a single step in the numerical integration of a system of
differential equations. The method used is Euler's.

[list_begin definitions]
[def [arg t]]







<






<







80
81
82
83
84
85
86

87
88
89
90
91
92

93
94
95
96
97
98
99
each rectangle, whereas the command [cmd integral2D_accurate] uses a
four-point quadrature formula. This results in an exact integration of
polynomials of third degree or less.
[para]
The function must take two arguments and return the function
value.


[call [cmd ::math::calculus::integral3D] [arg xinterval] [arg yinterval] [arg zinterval] [arg func]]
[call [cmd ::math::calculus::integral3D_accurate] [arg xinterval] [arg yinterval] [arg zinterval] [arg func]]
The commands [cmd integral3D] and [cmd integral3D_accurate] are the
three-dimensional equivalent of [cmd integral2D] and [cmd integral3D_accurate].
The function [emph func] takes three arguments and is integrated over the block in
3D space given by three intervals.


[call [cmd ::math::calculus::eulerStep] [arg t] [arg tstep] [arg xvec] [arg func]]
Set a single step in the numerical integration of a system of
differential equations. The method used is Euler's.

[list_begin definitions]
[def [arg t]]
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118

[def [arg func]]
Function of t and the dependent values, returning
a list of the derivatives of the dependent values. (The lengths of
xvec and the return value of "func" must match).
[list_end]
[para]


[call [cmd ::math::calculus::heunStep] [arg t] [arg tstep] [arg xvec] [arg func]]
Set a single step in the numerical integration of a system of
differential equations. The method used is Heun's.

[list_begin definitions]
[def [arg t]]







<







108
109
110
111
112
113
114

115
116
117
118
119
120
121

[def [arg func]]
Function of t and the dependent values, returning
a list of the derivatives of the dependent values. (The lengths of
xvec and the return value of "func" must match).
[list_end]
[para]


[call [cmd ::math::calculus::heunStep] [arg t] [arg tstep] [arg xvec] [arg func]]
Set a single step in the numerical integration of a system of
differential equations. The method used is Heun's.

[list_begin definitions]
[def [arg t]]
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
[def [arg func]]
Function of t and the dependent values, returning
a list of the derivatives of the dependent values. (The lengths of
xvec and the return value of "func" must match).
[list_end]
[para]


[call [cmd ::math::calculus::rungeKuttaStep] [arg t] [arg tstep] [arg xvec] [arg func]]
Set a single step in the numerical integration of a system of
differential equations. The method used is Runge-Kutta 4th
order.

[list_begin definitions]
[def [arg t]]







<







131
132
133
134
135
136
137

138
139
140
141
142
143
144
[def [arg func]]
Function of t and the dependent values, returning
a list of the derivatives of the dependent values. (The lengths of
xvec and the return value of "func" must match).
[list_end]
[para]


[call [cmd ::math::calculus::rungeKuttaStep] [arg t] [arg tstep] [arg xvec] [arg func]]
Set a single step in the numerical integration of a system of
differential equations. The method used is Runge-Kutta 4th
order.

[list_begin definitions]
[def [arg t]]
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165

[def [arg func]]
Function of t and the dependent values, returning
a list of the derivatives of the dependent values. (The lengths of
xvec and the return value of "func" must match).
[list_end]
[para]


[call [cmd ::math::calculus::boundaryValueSecondOrder] [arg coeff_func] [arg force_func] [arg leftbnd] [arg rightbnd] [arg nostep]]
Solve a second order linear differential equation with boundary
values at two sides. The equation has to be of the form (the
"conservative" form):
[example_begin]
         d      dy     d







<







153
154
155
156
157
158
159

160
161
162
163
164
165
166

[def [arg func]]
Function of t and the dependent values, returning
a list of the derivatives of the dependent values. (The lengths of
xvec and the return value of "func" must match).
[list_end]
[para]


[call [cmd ::math::calculus::boundaryValueSecondOrder] [arg coeff_func] [arg force_func] [arg leftbnd] [arg rightbnd] [arg nostep]]
Solve a second order linear differential equation with boundary
values at two sides. The equation has to be of the form (the
"conservative" form):
[example_begin]
         d      dy     d
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
interval.

The procedure returns a list of x-coordinates and the approximated
values of the solution.
[list_end]
[para]


[call [cmd ::math::calculus::solveTriDiagonal] [arg acoeff] [arg bcoeff] [arg ccoeff] [arg dvalue]]
Solve a system of linear equations Ax = b with A a tridiagonal
matrix. Returns the solution as a list.

[list_begin definitions]
[def [arg acoeff]]
List of values on the lower diagonal

[def [arg bcoeff]]
List of values on the main diagonal

[def [arg ccoeff]]
List of values on the upper diagonal

[def [arg dvalue]]
List of values on the righthand-side
[list_end]
[para]


[call [cmd ::math::calculus::newtonRaphson] [arg func] [arg deriv] [arg initval]]
Determine the root of an equation given by
[example_begin]
    func(x) = 0
[example_end]
using the method of Newton-Raphson. The procedure takes the following







<


















<







206
207
208
209
210
211
212

213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230

231
232
233
234
235
236
237
interval.

The procedure returns a list of x-coordinates and the approximated
values of the solution.
[list_end]
[para]


[call [cmd ::math::calculus::solveTriDiagonal] [arg acoeff] [arg bcoeff] [arg ccoeff] [arg dvalue]]
Solve a system of linear equations Ax = b with A a tridiagonal
matrix. Returns the solution as a list.

[list_begin definitions]
[def [arg acoeff]]
List of values on the lower diagonal

[def [arg bcoeff]]
List of values on the main diagonal

[def [arg ccoeff]]
List of values on the upper diagonal

[def [arg dvalue]]
List of values on the righthand-side
[list_end]
[para]


[call [cmd ::math::calculus::newtonRaphson] [arg func] [arg deriv] [arg initval]]
Determine the root of an equation given by
[example_begin]
    func(x) = 0
[example_end]
using the method of Newton-Raphson. The procedure takes the following
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
Procedure that returns the derivative of the function at x

[def [arg initval]]
Initial value for x
[list_end]
[para]


[call [cmd ::math::calculus::newtonRaphsonParameters] [arg maxiter] [arg tolerance]]
Set the numerical parameters for the Newton-Raphson method:

[list_begin definitions]
[def [arg maxiter]]
Maximum number of iteration steps (defaults to 20)

[def [arg tolerance]]
Relative precision (defaults to 0.001)
[list_end]


[call [cmd ::math::calculus::regula_falsi] [arg f] [arg xb] [arg xe] [arg eps]]

Return an estimate of the zero or one of the zeros of the function
contained in the interval [lb]xb,xe[rb]. The error in this estimate is of the
order of eps*abs(xe-xb), the actual error may be slightly larger.








<










<







245
246
247
248
249
250
251

252
253
254
255
256
257
258
259
260
261

262
263
264
265
266
267
268
Procedure that returns the derivative of the function at x

[def [arg initval]]
Initial value for x
[list_end]
[para]


[call [cmd ::math::calculus::newtonRaphsonParameters] [arg maxiter] [arg tolerance]]
Set the numerical parameters for the Newton-Raphson method:

[list_begin definitions]
[def [arg maxiter]]
Maximum number of iteration steps (defaults to 20)

[def [arg tolerance]]
Relative precision (defaults to 0.001)
[list_end]


[call [cmd ::math::calculus::regula_falsi] [arg f] [arg xb] [arg xe] [arg eps]]

Return an estimate of the zero or one of the zeros of the function
contained in the interval [lb]xb,xe[rb]. The error in this estimate is of the
order of eps*abs(xe-xb), the actual error may be slightly larger.

405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
   set decay  0.0001
   set length 100.0

   set y [lb]::math::calculus::boundaryValueSecondOrder \
      coeffs force {0.0 1.0} [lb]list $length 0.0[rb] 100[rb]
[example_end]

[see_also romberg]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {math :: calculus}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords math calculus integration "differential equations" roots]
[manpage_end]







<
<
<
<
<
<
<
|
<
|
<
<
<
<
<

402
403
404
405
406
407
408







409

410





411
   set decay  0.0001
   set length 100.0

   set y [lb]::math::calculus::boundaryValueSecondOrder \
      coeffs force {0.0 1.0} [lb]list $length 0.0[rb] 100[rb]
[example_end]








[vset CATEGORY {math :: calculus}]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/math/combinatorics.man.

32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

The approximation used in the Tcl Math Library is from Lanczos,
[emph {ISIAM J. Numerical Analysis, series B,}] volume 1, p. 86.
For "[var x] > 1", the absolute error of the result is claimed to be
smaller than 5.5*10**-10 -- that is, the resulting value of Gamma when

[example {
  exp( ln_Gamma( x) ) 
}]

is computed is expected to be precise to better than nine significant
figures.

[call [cmd ::math::factorial] [arg x]]








|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

The approximation used in the Tcl Math Library is from Lanczos,
[emph {ISIAM J. Numerical Analysis, series B,}] volume 1, p. 86.
For "[var x] > 1", the absolute error of the result is claimed to be
smaller than 5.5*10**-10 -- that is, the resulting value of Gamma when

[example {
  exp( ln_Gamma( x) )
}]

is computed is expected to be precise to better than nine significant
figures.

[call [cmd ::math::factorial] [arg x]]

99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118

Results are returned as a floating point number precise to better than
nine significant digits provided that [arg w] and [arg z] are both at
least 1.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph math] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<

99
100
101
102
103
104
105

106


107







108

Results are returned as a floating point number precise to better than
nine significant digits provided that [arg w] and [arg z] are both at
least 1.

[list_end]


[vset CATEGORY math]


[include ../doctools2base/include/feedback.inc]







[manpage_end]

Changes to modules/math/constants.man.

1
2






3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin math::constants n 1.0.1]






[copyright {2004 Arjen Markus <[email protected]>}]
[moddesc   {Tcl Math Library}]
[titledesc {Mathematical and numerical constants}]
[category  Mathematics]
[require Tcl [opt 8.3]]
[require math::constants [opt 1.0.1]]



>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin math::constants n 1.0.1]
[keywords constants]
[keywords degrees]
[keywords e]
[keywords math]
[keywords pi]
[keywords radians]
[copyright {2004 Arjen Markus <[email protected]>}]
[moddesc   {Tcl Math Library}]
[titledesc {Mathematical and numerical constants}]
[category  Mathematics]
[require Tcl [opt 8.3]]
[require math::constants [opt 1.0.1]]

98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118

Print the constants whose names are given as arguments on the screen
(name, value and description) or, if no arguments are given, print all
defined constants. This is mainly a convenience procedure.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {math :: constants}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords math constants pi e radians degrees]
[manpage_end]







<
<
<
<
<
|
<
|
<
<
<
<
<

104
105
106
107
108
109
110





111

112





113

Print the constants whose names are given as arguments on the screen
(name, value and description) or, if no arguments are given, print all
defined constants. This is mainly a convenience procedure.

[list_end]






[vset CATEGORY {math :: constants}]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/math/decimal.man.

1
2



3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin math::decimal n 1.0.2]



[copyright {2011 Mark Alston <mark at beernut dot com>}]
[moddesc   {Tcl Decimal Arithmetic Library}]
[titledesc {General decimal arithmetic}]
[category  Mathematics]
[require Tcl [opt 8.5]]

[description]


>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin math::decimal n 1.0.2]
[keywords decimal]
[keywords math]
[keywords tcl]
[copyright {2011 Mark Alston <mark at beernut dot com>}]
[moddesc   {Tcl Decimal Arithmetic Library}]
[titledesc {General decimal arithmetic}]
[category  Mathematics]
[require Tcl [opt 8.5]]

[description]
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
    puts [lb]::math::decimal::tostr $c[rb] ; # => will output 8.0

    # Why bother using this instead of simply expr?
    puts [expr {8.2 + .2}] ; # => will output 8.399999999999999
    puts [expr {8.2 - .2}] ; # => will output 7.999999999999999
    # See http://speleotrove.com/decimal to learn more about why this happens.
[example_end]


[section "API"]
[list_begin definitions]

[call [cmd ::math::decimal::fromstr] [arg string]]
Convert [emph string] into a decimal.








<







65
66
67
68
69
70
71

72
73
74
75
76
77
78
    puts [lb]::math::decimal::tostr $c[rb] ; # => will output 8.0

    # Why bother using this instead of simply expr?
    puts [expr {8.2 + .2}] ; # => will output 8.399999999999999
    puts [expr {8.2 - .2}] ; # => will output 7.999999999999999
    # See http://speleotrove.com/decimal to learn more about why this happens.
[example_end]


[section "API"]
[list_begin definitions]

[call [cmd ::math::decimal::fromstr] [arg string]]
Convert [emph string] into a decimal.

187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
[call [cmd ::math::decimal::round_05up] [arg decimal] [arg digits]]
Rounds [emph decimal] to [emph digits] number of decimal points with the following rules: Round zero or five away from 0. The same as round-up, except that rounding up only occurs if the digit to be rounded up is 0 or 5, and after overflow
the result is the same as for round-down.

[list_end]
[para]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {Decimal}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords tcl decimal math]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<

189
190
191
192
193
194
195

196


197








198
[call [cmd ::math::decimal::round_05up] [arg decimal] [arg digits]]
Rounds [emph decimal] to [emph digits] number of decimal points with the following rules: Round zero or five away from 0. The same as round-up, except that rounding up only occurs if the digit to be rounded up is 0 or 5, and after overflow
the result is the same as for round-down.

[list_end]
[para]


[vset CATEGORY decimal]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/math/fourier.man.

1




2
3
4
5
6
7
8
[manpage_begin math::fourier n 1.0.2]




[moddesc {Tcl Math Library}]
[titledesc {Discrete and fast fourier transforms}]
[category  Mathematics]
[require Tcl 8.4]
[require math::fourier 1.0.2]
[description]
[para]

>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
[manpage_begin math::fourier n 1.0.2]
[keywords {complex numbers}]
[keywords FFT]
[keywords {Fourier transform}]
[keywords mathematics]
[moddesc {Tcl Math Library}]
[titledesc {Discrete and fast fourier transforms}]
[category  Mathematics]
[require Tcl 8.4]
[require math::fourier 1.0.2]
[description]
[para]
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84

[para]
The package includes two simple filters. They have an analogue
equivalent in a simple electronic circuit, a resistor and a capacitance
in series. Using these filters requires the
[package math::complexnumbers] package.


[section "PROCEDURES"]
The public Fourier transform procedures are:

[list_begin definitions]

[call [cmd ::math::fourier::dft] [arg in_data]]
Determine the [emph "Fourier transform"] of the given list of complex







<







74
75
76
77
78
79
80

81
82
83
84
85
86
87

[para]
The package includes two simple filters. They have an analogue
equivalent in a simple electronic circuit, a resistor and a capacitance
in series. Using these filters requires the
[package math::complexnumbers] package.


[section "PROCEDURES"]
The public Fourier transform procedures are:

[list_begin definitions]

[call [cmd ::math::fourier::dft] [arg in_data]]
Determine the [emph "Fourier transform"] of the given list of complex
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
[arg_def float cutoff] Cut-off frequency
[arg_def list in_data] List of data (amplitudes)
[list_end]
[para]

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {math :: fourier}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords mathematics "FFT" "Fourier transform" "complex numbers"]
[manpage_end]







<
<
<
<
<
|
<
|
<
<
<
<
<

125
126
127
128
129
130
131





132

133





134
[arg_def float cutoff] Cut-off frequency
[arg_def list in_data] List of data (amplitudes)
[list_end]
[para]

[list_end]






[vset CATEGORY {math :: fourier}]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/math/fuzzy.man.

1



2
3
4
5
6
7
8
[manpage_begin math::fuzzy n 0.2]



[moddesc {Tcl Math Library}]
[titledesc {Fuzzy comparison of floating-point numbers}]
[category  Mathematics]
[require Tcl [opt 8.3]]
[require math::fuzzy [opt 0.2]]
[description]
[para]

>
>
>







1
2
3
4
5
6
7
8
9
10
11
[manpage_begin math::fuzzy n 0.2]
[keywords floating-point]
[keywords math]
[keywords rounding]
[moddesc {Tcl Math Library}]
[titledesc {Fuzzy comparison of floating-point numbers}]
[category  Mathematics]
[require Tcl [opt 8.3]]
[require math::fuzzy [opt 0.2]]
[description]
[para]
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141

APL QUOTE QUAD 8(3):16-23, March 1978.
[para]
D. Knuth, Art of Computer Programming,

Vol. 1, Problem 1.2.4-5.

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {math :: fuzzy}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords math floating-point rounding]
[manpage_end]







<
<
<
<
<
|
<
|
<
<
<
<
<

124
125
126
127
128
129
130





131

132





133

APL QUOTE QUAD 8(3):16-23, March 1978.
[para]
D. Knuth, Art of Computer Programming,

Vol. 1, Problem 1.2.4-5.






[vset CATEGORY {math :: fuzzy}]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/math/interpolate.man.

1
2



3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin math::interpolate n 1.0.2]



[copyright {2004 Arjen Markus <[email protected]>}]
[copyright {2004 Kevn B. Kenny <[email protected]>}]
[moddesc   {Tcl Math Library}]
[titledesc {Interpolation routines}]
[category  Mathematics]
[require Tcl [opt 8.4]]
[require struct]


>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin math::interpolate n 1.0.2]
[keywords interpolation]
[keywords math]
[keywords {spatial interpolation}]
[copyright {2004 Arjen Markus <[email protected]>}]
[copyright {2004 Kevn B. Kenny <[email protected]>}]
[moddesc   {Tcl Math Library}]
[titledesc {Interpolation routines}]
[category  Mathematics]
[require Tcl [opt 8.4]]
[require struct]
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127

[para]
The values must be sorted with respect to the independent variable(s).

[list_end]
[para]


[call [cmd ::math::interpolate::interp-1d-table] [arg name] [arg xval]]

Interpolate into the one-dimensional table "name" and return a list of values, one for
each dependent column.

[list_begin arguments]
[arg_def string name in] Name of an existing table

[arg_def float xval in] Value of the independent [emph row] variable

[list_end]

[para]


[call [cmd ::math::interpolate::interp-table] [arg name] [arg xval] [arg yval]]

Interpolate into the two-dimensional table "name" and return the interpolated value.

[list_begin arguments]
[arg_def string name in] Name of an existing table

[arg_def float xval in] Value of the independent [emph row] variable

[arg_def float yval in] Value of the independent [emph column] variable

[list_end]

[para]


[call [cmd ::math::interpolate::interp-linear] [arg xyvalues] [arg xval]]

Interpolate linearly into the list of x,y pairs and return the interpolated value.

[list_begin arguments]

[arg_def list xyvalues in] List of pairs of (x,y) values, sorted to increasing x.
They are used as the breakpoints of a piecewise linear function.

[arg_def float xval in] Value of the independent variable for which the value of y
must be computed.

[list_end]

[para]


[call [cmd ::math::interpolate::interp-lagrange] [arg xyvalues] [arg xval]]

Use the list of x,y pairs to construct the unique polynomial of lowest degree
that passes through all points and return the interpolated value.

[list_begin arguments]







<













<
















<















<







69
70
71
72
73
74
75

76
77
78
79
80
81
82
83
84
85
86
87
88

89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104

105
106
107
108
109
110
111
112
113
114
115
116
117
118
119

120
121
122
123
124
125
126

[para]
The values must be sorted with respect to the independent variable(s).

[list_end]
[para]


[call [cmd ::math::interpolate::interp-1d-table] [arg name] [arg xval]]

Interpolate into the one-dimensional table "name" and return a list of values, one for
each dependent column.

[list_begin arguments]
[arg_def string name in] Name of an existing table

[arg_def float xval in] Value of the independent [emph row] variable

[list_end]

[para]


[call [cmd ::math::interpolate::interp-table] [arg name] [arg xval] [arg yval]]

Interpolate into the two-dimensional table "name" and return the interpolated value.

[list_begin arguments]
[arg_def string name in] Name of an existing table

[arg_def float xval in] Value of the independent [emph row] variable

[arg_def float yval in] Value of the independent [emph column] variable

[list_end]

[para]


[call [cmd ::math::interpolate::interp-linear] [arg xyvalues] [arg xval]]

Interpolate linearly into the list of x,y pairs and return the interpolated value.

[list_begin arguments]

[arg_def list xyvalues in] List of pairs of (x,y) values, sorted to increasing x.
They are used as the breakpoints of a piecewise linear function.

[arg_def float xval in] Value of the independent variable for which the value of y
must be computed.

[list_end]

[para]


[call [cmd ::math::interpolate::interp-lagrange] [arg xyvalues] [arg xval]]

Use the list of x,y pairs to construct the unique polynomial of lowest degree
that passes through all points and return the interpolated value.

[list_begin arguments]
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
[arg_def float x] x-coordinate at which to estimate the function. Must
be between the first and last x-coordinate for which values were given.

[list_end]

[para]


[call [cmd ::math::interpolate::interp-spatial] [arg xyvalues] [arg coord]]

Use a straightforward interpolation method with weights as function of the
inverse distance to interpolate in 2D and N-dimensional space

[para]
The list xyvalues is a list of lists:







<







163
164
165
166
167
168
169

170
171
172
173
174
175
176
[arg_def float x] x-coordinate at which to estimate the function. Must
be between the first and last x-coordinate for which values were given.

[list_end]

[para]


[call [cmd ::math::interpolate::interp-spatial] [arg xyvalues] [arg coord]]

Use a straightforward interpolation method with weights as function of the
inverse distance to interpolate in 2D and N-dimensional space

[para]
The list xyvalues is a list of lists:
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208

[arg_def list coord in] List of coordinates for which the values must be calculated

[list_end]

[para]


[call [cmd ::math::interpolate::interp-spatial-params] [arg max_search] [arg power]]

Set the parameters for spatial interpolation

[list_begin arguments]
[arg_def float max_search in] Search radius (data points further than this are ignored)








<







192
193
194
195
196
197
198

199
200
201
202
203
204
205

[arg_def list coord in] List of coordinates for which the values must be calculated

[list_end]

[para]


[call [cmd ::math::interpolate::interp-spatial-params] [arg max_search] [arg power]]

Set the parameters for spatial interpolation

[list_begin arguments]
[arg_def float max_search in] Search radius (data points further than this are ignored)

220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
of the absolute error of the result.  Neville's algorithm for polynomial
interpolation is used.  Note that a large table of values will use an
interpolating polynomial of high degree, which is likely to result in
numerical instabilities; one is better off using only a few tabulated
values near the desired abscissa.

[list_end]


[section EXAMPLES]
[emph TODO]

Example of using the cubic splines:
[para]
Suppose the following values are given:







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
of the absolute error of the result.  Neville's algorithm for polynomial
interpolation is used.  Note that a large table of values will use an
interpolating polynomial of high degree, which is likely to result in
numerical instabilities; one is better off using only a few tabulated
values near the desired abscissa.

[list_end]


[section EXAMPLES]
[emph TODO]

Example of using the cubic splines:
[para]
Suppose the following values are given:
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
0.7: 5.41804227941
0.8: 4.11
0.9: 3.95675857843
1.0: 4.12
}]
As you can see, the values at the abscissae are reproduced perfectly.


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {math :: interpolate}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords math interpolation "spatial interpolation"]
[manpage_end]







<
<
<
<
<
<
|
<
|
<
<
<
<
<

256
257
258
259
260
261
262






263

264





265
0.7: 5.41804227941
0.8: 4.11
0.9: 3.95675857843
1.0: 4.12
}]
As you can see, the values at the abscissae are reproduced perfectly.







[vset CATEGORY {math :: interpolate}]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/math/linalg.man.

1
2







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin math::linearalgebra n 1.1]







[copyright {2004-2008 Arjen Markus <[email protected]>}]
[copyright {2004 Ed Hume <http://www.hume.com/contact.us.htm>}]
[copyright {2008 Michael Buadin <[email protected]>}]
[moddesc   {Tcl Math Library}]
[titledesc {Linear Algebra}]
[category  Mathematics]
[require Tcl [opt 8.4]]
[require math::linearalgebra [opt 1.1]]
[keywords math {linear algebra} vectors matrices {least squares}]
[keywords matrix {linear equations}]
[description]
[para]
This package offers both low-level procedures and high-level algorithms
to deal with linear algebra problems:

[list_begin itemized]
[item]


>
>
>
>
>
>
>








<
<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17


18
19
20
21
22
23
24
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin math::linearalgebra n 1.1]
[keywords {least squares}]
[keywords {linear algebra}]
[keywords {linear equations}]
[keywords math]
[keywords matrices]
[keywords matrix]
[keywords vectors]
[copyright {2004-2008 Arjen Markus <[email protected]>}]
[copyright {2004 Ed Hume <http://www.hume.com/contact.us.htm>}]
[copyright {2008 Michael Buadin <[email protected]>}]
[moddesc   {Tcl Math Library}]
[titledesc {Linear Algebra}]
[category  Mathematics]
[require Tcl [opt 8.4]]
[require math::linearalgebra [opt 1.1]]


[description]
[para]
This package offers both low-level procedures and high-level algorithms
to deal with linear algebra problems:

[list_begin itemized]
[item]
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
be a naming conflict, as both this package and Tk define a command
[emph scale]. See the [sectref "NAMING CONFLICT"] section below.

[section "PROCEDURES"]

The package defines the following public procedures (several exist as
specialised procedures, see below):



[para]
[emph "Constructing matrices and vectors"]

[list_begin definitions]

[call [cmd ::math::linearalgebra::mkVector] [arg ndim] [arg value]]







<
<







50
51
52
53
54
55
56


57
58
59
60
61
62
63
be a naming conflict, as both this package and Tk define a command
[emph scale]. See the [sectref "NAMING CONFLICT"] section below.

[section "PROCEDURES"]

The package defines the following public procedures (several exist as
specialised procedures, see below):



[para]
[emph "Constructing matrices and vectors"]

[list_begin definitions]

[call [cmd ::math::linearalgebra::mkVector] [arg ndim] [arg value]]
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
[arg_def integer irow2] Index of second column
[arg_def integer imin] Minimum row index (default: 0)
[arg_def integer imin] Maximum row index (default: nrows-1)
[list_end]

[list_end]



[para]
[emph "Querying matrices and vectors"]

[list_begin definitions]

[call [cmd ::math::linearalgebra::show] [arg obj] [opt format] [opt rowsep] [opt colsep]]








<
<







191
192
193
194
195
196
197


198
199
200
201
202
203
204
[arg_def integer irow2] Index of second column
[arg_def integer imin] Minimum row index (default: 0)
[arg_def integer imin] Maximum row index (default: nrows-1)
[list_end]

[list_end]



[para]
[emph "Querying matrices and vectors"]

[list_begin definitions]

[call [cmd ::math::linearalgebra::show] [arg obj] [opt format] [opt rowsep] [opt colsep]]

268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
[list_begin arguments]
[arg_def list matrix] Matrix to be inspected
[arg_def float eps] Tolerance for determining approximate equality
(defaults to 1.0e-8)
[list_end]

[list_end]



[para]
[emph "Basic operations"]

[list_begin definitions]

[call [cmd ::math::linearalgebra::norm] [arg vector] [arg type]]







<
<







269
270
271
272
273
274
275


276
277
278
279
280
281
282
[list_begin arguments]
[arg_def list matrix] Matrix to be inspected
[arg_def float eps] Tolerance for determining approximate equality
(defaults to 1.0e-8)
[list_end]

[list_end]



[para]
[emph "Basic operations"]

[list_begin definitions]

[call [cmd ::math::linearalgebra::norm] [arg vector] [arg type]]
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
[list_begin arguments]
[arg_def list mv1] First vector/matrix (x)
[arg_def list mv2] Second vector/matrix (y)
[list_end]

[list_end]



[para]
[emph "Common matrices and test matrices"]

[list_begin definitions]

[call [cmd ::math::linearalgebra::mkIdentity] [arg size]]








<
<







486
487
488
489
490
491
492


493
494
495
496
497
498
499
[list_begin arguments]
[arg_def list mv1] First vector/matrix (x)
[arg_def list mv2] Second vector/matrix (y)
[list_end]

[list_end]



[para]
[emph "Common matrices and test matrices"]

[list_begin definitions]

[call [cmd ::math::linearalgebra::mkIdentity] [arg size]]

623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
is odd.

[list_begin arguments]
[arg_def integer size] Dimension of the matrix
[list_end]

[list_end]



[para]
[emph "Common algorithms"]

[list_begin definitions]

[call [cmd ::math::linearalgebra::solveGauss] [arg matrix] [arg bvect]]







<
<







620
621
622
623
624
625
626


627
628
629
630
631
632
633
is odd.

[list_begin arguments]
[arg_def integer size] Dimension of the matrix
[list_end]

[list_end]



[para]
[emph "Common algorithms"]

[list_begin definitions]

[call [cmd ::math::linearalgebra::solveGauss] [arg matrix] [arg bvect]]
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
[arg_def list matrix] Square matrix (matrix A)
[arg_def double tolerance] The relative tolerance of the eigenvalue (default:1.e-8).
[arg_def integer maxiter] The maximum number of iterations (default:10).
[list_end]

[list_end]


[para]
[emph "Compability with the LA package"]

Two procedures are provided for compatibility with Hume's LA package:

[list_begin definitions]








<







845
846
847
848
849
850
851

852
853
854
855
856
857
858
[arg_def list matrix] Square matrix (matrix A)
[arg_def double tolerance] The relative tolerance of the eigenvalue (default:1.e-8).
[arg_def integer maxiter] The maximum number of iterations (default:10).
[list_end]

[list_end]


[para]
[emph "Compability with the LA package"]

Two procedures are provided for compatibility with Hume's LA package:

[list_begin definitions]

876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
Transforms a vector or matrix from the format used by the original LA
package into the format used by the present implementation.

[list_begin arguments]
[arg_def list mv] Matrix or vector as used by the LA package
[list_end]


[list_end]

[para]


[section "STORAGE"]

While most procedures assume that the matrices are given in full form,
the procedures [emph solveGaussBand] and [emph solveTriangularBand]
assume that the matrices are stored as [emph "band matrices"]. This
common type of "sparse" matrices is related to ordinary matrices as







<



<







870
871
872
873
874
875
876

877
878
879

880
881
882
883
884
885
886
Transforms a vector or matrix from the format used by the original LA
package into the format used by the present implementation.

[list_begin arguments]
[arg_def list mv] Matrix or vector as used by the LA package
[list_end]


[list_end]

[para]


[section "STORAGE"]

While most procedures assume that the matrices are given in full form,
the procedures [emph solveGaussBand] and [emph solveTriangularBand]
assume that the matrices are stored as [emph "band matrices"]. This
common type of "sparse" matrices is related to ordinary matrices as
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
[example {
namespace eval compute {
    rename ::scale scaleTk
    scaleTk .scale ...
}
}]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {math :: linearalgebra}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]







<
<
<
<
<
|
<
|
<
<
<

958
959
960
961
962
963
964





965

966



967
[example {
namespace eval compute {
    rename ::scale scaleTk
    scaleTk .scale ...
}
}]






[vset CATEGORY {math :: linearalgebra}]

[include ../doctools2base/include/feedback.inc]



[manpage_end]

Changes to modules/math/machineparameters.man.

180
181
182
183
184
185
186


187

[call [arg objectname] [method print]]

Print machine parameters on standard output.

[list_end]



[manpage_end]







>
>

180
181
182
183
184
185
186
187
188
189

[call [arg objectname] [method print]]

Print machine parameters on standard output.

[list_end]

[vset CATEGORY math]
[include ../doctools2base/include/feedback.inc]
[manpage_end]

Changes to modules/math/math.man.

1


2
3
4
5
6
7
8
[manpage_begin math n 1.2.5]


[comment {-*- tcl -*- doctools manpage}]
[moddesc   {Tcl Math Library}]
[titledesc {Tcl Math Library}]
[category  Mathematics]
[require Tcl 8.2]
[require math [opt 1.2.5]]
[description]

>
>







1
2
3
4
5
6
7
8
9
10
[manpage_begin math n 1.2.5]
[keywords math]
[keywords statistics]
[comment {-*- tcl -*- doctools manpage}]
[moddesc   {Tcl Math Library}]
[titledesc {Tcl Math Library}]
[category  Mathematics]
[require Tcl 8.2]
[require math [opt 1.2.5]]
[description]
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
[list_begin definitions]

[call [cmd ::math::cov] [arg value] [arg value] [opt [arg {value ...}]]]

Return the coefficient of variation expressed as percent of two or
more numeric values.


[call [cmd ::math::integrate] [arg {list of xy value pairs}]]

Return the area under a "curve" defined by a set of x,y pairs and the
error bound as a list.


[call [cmd ::math::fibonacci] [arg n]]

Return the [arg n]'th Fibonacci number.


[call [cmd ::math::max] [arg value] [opt [arg {value ...}]]]

Return the maximum of one or more numeric values.


[call [cmd ::math::mean] [arg value] [opt [arg {value ...}]]]

Return the mean, or "average" of one or more numeric values.


[call [cmd ::math::min] [arg value] [opt [arg {value ...}]]]

Return the minimum of one or more numeric values.


[call [cmd ::math::product] [arg value] [opt [arg {value ...}]]]

Return the product of one or more numeric values.


[call [cmd ::math::random] [opt [arg value1]] [opt [arg value2]]]

Return a random number.  If no arguments are given, the number is a
floating point value between 0 and 1.  If one argument is given, the
number is an integer value between 0 and [arg value1].  If two
arguments are given, the number is an integer value between

[arg value1] and [arg value2].


[call [cmd ::math::sigma] [arg value] [arg value] [opt [arg {value ...}]]]

Return the population standard deviation of two or more numeric
values.


[call [cmd ::math::stats] [arg value] [arg value] [opt [arg {value ...}]]]

Return the mean, standard deviation, and coefficient of variation (as
percent) as a list.


[call [cmd ::math::sum] [arg value] [opt [arg {value ...}]]]

Return the sum of one or more numeric values.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph math] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords math statistics]
[manpage_end]







<





<



<





<



<





<



<










<





<




<







<
|
<
<
|
<
<
<
<
<
<
<
<

67
68
69
70
71
72
73

74
75
76
77
78

79
80
81

82
83
84
85
86

87
88
89

90
91
92
93
94

95
96
97

98
99
100
101
102
103
104
105
106
107

108
109
110
111
112

113
114
115
116

117
118
119
120
121
122
123

124


125








126
[list_begin definitions]

[call [cmd ::math::cov] [arg value] [arg value] [opt [arg {value ...}]]]

Return the coefficient of variation expressed as percent of two or
more numeric values.


[call [cmd ::math::integrate] [arg {list of xy value pairs}]]

Return the area under a "curve" defined by a set of x,y pairs and the
error bound as a list.


[call [cmd ::math::fibonacci] [arg n]]

Return the [arg n]'th Fibonacci number.


[call [cmd ::math::max] [arg value] [opt [arg {value ...}]]]

Return the maximum of one or more numeric values.


[call [cmd ::math::mean] [arg value] [opt [arg {value ...}]]]

Return the mean, or "average" of one or more numeric values.


[call [cmd ::math::min] [arg value] [opt [arg {value ...}]]]

Return the minimum of one or more numeric values.


[call [cmd ::math::product] [arg value] [opt [arg {value ...}]]]

Return the product of one or more numeric values.


[call [cmd ::math::random] [opt [arg value1]] [opt [arg value2]]]

Return a random number.  If no arguments are given, the number is a
floating point value between 0 and 1.  If one argument is given, the
number is an integer value between 0 and [arg value1].  If two
arguments are given, the number is an integer value between

[arg value1] and [arg value2].


[call [cmd ::math::sigma] [arg value] [arg value] [opt [arg {value ...}]]]

Return the population standard deviation of two or more numeric
values.


[call [cmd ::math::stats] [arg value] [arg value] [opt [arg {value ...}]]]

Return the mean, standard deviation, and coefficient of variation (as
percent) as a list.


[call [cmd ::math::sum] [arg value] [opt [arg {value ...}]]]

Return the sum of one or more numeric values.

[list_end]


[vset CATEGORY math]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/math/math_geometry.man.

1
2






3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin math::geometry n 1.1.2]






[copyright {2001 by Ideogramic ApS and other parties}]
[copyright {2004 by Arjen Markus}]
[copyright {2010 by Andreas Kupries}]
[copyright {2010 by Kevin Kenny}]
[moddesc   {Tcl Math Library}]
[titledesc {Geometrical computations}]
[category  Mathematics]


>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin math::geometry n 1.1.2]
[keywords angle]
[keywords distance]
[keywords line]
[keywords math]
[keywords {plane geometry}]
[keywords point]
[copyright {2001 by Ideogramic ApS and other parties}]
[copyright {2004 by Arjen Markus}]
[copyright {2010 by Andreas Kupries}]
[copyright {2010 by Kevin Kenny}]
[moddesc   {Tcl Math Library}]
[titledesc {Geometrical computations}]
[category  Mathematics]
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69

[item]
[emph "point set"] - again a list of an even number of coordinates, but
the points are regarded without any ordering.

[list_end]


[section "PROCEDURES"]

The package defines the following public procedures:

[list_begin definitions]

[call [cmd ::math::geometry::+] [arg point1] [arg point2]]







<







61
62
63
64
65
66
67

68
69
70
71
72
73
74

[item]
[emph "point set"] - again a list of an even number of coordinates, but
the points are regarded without any ordering.

[list_end]


[section "PROCEDURES"]

The package defines the following public procedures:

[list_begin definitions]

[call [cmd ::math::geometry::+] [arg point1] [arg point2]]
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
}]

[call [cmd ::math::geometry::length] [arg point]]

Compute the length of the vector and return it as the
result of the command.


[call [cmd ::math::geometry::s*] [arg factor] [arg point]]

Scale the vector by the factor and return it as the
result of the command. This is a vector as well.

[call [cmd ::math::geometry::direction] [arg angle]]

Given the angle in degrees this command computes and returns
the unit vector pointing into this direction. The vector for
angle == 0 points to the right (up), and for angle == 90 up (north).

[call [cmd ::math::geometry::h] [arg length]]

Returns a horizontal vector on the X-axis of the specified length.
Positive lengths point to the right (east).


[call [cmd ::math::geometry::v] [arg length]]

Returns a vertical vector on the Y-axis of the specified length.
Positive lengths point down (south).

[call [cmd ::math::geometry::between] [arg point1] [arg point2] [arg s]]

Compute the point which is at relative distance [arg s] between the two
points and return it as the result of the command. A relative distance of
[const 0] returns [arg point1], the distance [const 1] returns [arg point2].
Distances < 0 or > 1 extrapolate along the line between the two point.


[call [cmd ::math::geometry::octant] [arg point]]

Compute the octant of the circle the point is in and return it as the result
of the command. The possible results are

[list_begin enum]
[enum] east
[enum] northeast
[enum] north
[enum] northwest
[enum] west
[enum] southwest
[enum] south
[enum] southeast
[list_end]

Each octant is the arc of the circle +/- 22.5 degrees from the cardinal direction
the octant is named for.


[call [cmd ::math::geometry::rect] [arg nw] [arg se]]

Construct a rectangle from its northwest and southeast corners and return
it as the result of the command.

[call [cmd ::math::geometry::nwse] [arg rect]]







<
















<











<



















<







96
97
98
99
100
101
102

103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118

119
120
121
122
123
124
125
126
127
128
129

130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148

149
150
151
152
153
154
155
}]

[call [cmd ::math::geometry::length] [arg point]]

Compute the length of the vector and return it as the
result of the command.


[call [cmd ::math::geometry::s*] [arg factor] [arg point]]

Scale the vector by the factor and return it as the
result of the command. This is a vector as well.

[call [cmd ::math::geometry::direction] [arg angle]]

Given the angle in degrees this command computes and returns
the unit vector pointing into this direction. The vector for
angle == 0 points to the right (up), and for angle == 90 up (north).

[call [cmd ::math::geometry::h] [arg length]]

Returns a horizontal vector on the X-axis of the specified length.
Positive lengths point to the right (east).


[call [cmd ::math::geometry::v] [arg length]]

Returns a vertical vector on the Y-axis of the specified length.
Positive lengths point down (south).

[call [cmd ::math::geometry::between] [arg point1] [arg point2] [arg s]]

Compute the point which is at relative distance [arg s] between the two
points and return it as the result of the command. A relative distance of
[const 0] returns [arg point1], the distance [const 1] returns [arg point2].
Distances < 0 or > 1 extrapolate along the line between the two point.


[call [cmd ::math::geometry::octant] [arg point]]

Compute the octant of the circle the point is in and return it as the result
of the command. The possible results are

[list_begin enum]
[enum] east
[enum] northeast
[enum] north
[enum] northwest
[enum] west
[enum] southwest
[enum] south
[enum] southeast
[list_end]

Each octant is the arc of the circle +/- 22.5 degrees from the cardinal direction
the octant is named for.


[call [cmd ::math::geometry::rect] [arg nw] [arg se]]

Construct a rectangle from its northwest and southeast corners and return
it as the result of the command.

[call [cmd ::math::geometry::nwse] [arg rect]]
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450

[list_begin enumerated]
[enum] [uri http:/wiki.tcl.tk/12070 {Polygon Intersection}]
[enum] [uri http://en.wikipedia.org/wiki/Line-line_intersection]
[enum] [uri http://local.wasp.uwa.edu.au/~pbourke/geometry/lineline2d/]
[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {math :: geometry}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords math "plane geometry" "point" "line" "distance" "angle"]
[manpage_end]







<
<
<
<
<
|
<
|
<
<
<
<
<

431
432
433
434
435
436
437





438

439





440

[list_begin enumerated]
[enum] [uri http:/wiki.tcl.tk/12070 {Polygon Intersection}]
[enum] [uri http://en.wikipedia.org/wiki/Line-line_intersection]
[enum] [uri http://local.wasp.uwa.edu.au/~pbourke/geometry/lineline2d/]
[list_end]






[vset CATEGORY {math :: geometry}]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/math/numtheory.man.

1


2
3
4
5
6
7
8
[manpage_begin math::numtheory n 1.0]


[copyright "2010 Lars Hellstr\u00F6m\
  <Lars dot Hellstrom at residenset dot net>"]
[moddesc   {Tcl Math Library}]
[titledesc {Number Theory}]
[category  Mathematics]
[require Tcl [opt 8.5]]
[require math::numtheory [opt 1.0]]

>
>







1
2
3
4
5
6
7
8
9
10
[manpage_begin math::numtheory n 1.0]
[keywords {number theory}]
[keywords prime]
[copyright "2010 Lars Hellstr\u00F6m\
  <Lars dot Hellstrom at residenset dot net>"]
[moddesc   {Tcl Math Library}]
[titledesc {Number Theory}]
[category  Mathematics]
[require Tcl [opt 8.5]]
[require math::numtheory [opt 1.0]]
45
46
47
48
49
50
51
52

53
    probability of a false positive by a factor at least 4. The
    default for [arg repetitions] is 4.
  [list_end]
  Unknown options are silently ignored.

[list_end]

[keywords {number theory} prime]

[manpage_end]







|
>

47
48
49
50
51
52
53
54
55
56
    probability of a false positive by a factor at least 4. The
    default for [arg repetitions] is 4.
  [list_end]
  Unknown options are silently ignored.

[list_end]

[vset CATEGORY {math :: numtheory}]
[include ../doctools2base/include/feedback.inc]
[manpage_end]

Changes to modules/math/optimize.man.

1
2





3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin math::optimize n 1.0]





[copyright {2004 Arjen Markus <[email protected]>}]
[copyright {2004,2005 Kevn B. Kenny <[email protected]>}]
[moddesc   {Tcl Math Library}]
[titledesc {Optimisation routines}]
[category  Mathematics]
[require Tcl 8.4]
[require math::optimize [opt 1.0]]


>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin math::optimize n 1.0]
[keywords {linear program}]
[keywords math]
[keywords maximum]
[keywords minimum]
[keywords optimization]
[copyright {2004 Arjen Markus <[email protected]>}]
[copyright {2004,2005 Kevn B. Kenny <[email protected]>}]
[moddesc   {Tcl Math Library}]
[titledesc {Optimisation routines}]
[category  Mathematics]
[require Tcl 8.4]
[require math::optimize [opt 1.0]]
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
Convenience function to return the maximum for the solution found by the
solveLinearProgram procedure.
[para]
[arg objective] - The M coefficients of the objective function
[para]
[arg result] - The result as returned by solveLinearProgram


[call [cmd ::math::optimize::nelderMead] [arg objective] [arg xVector] [opt "[option -scale] [arg xScaleVector]"] [opt "[option -ftol] [arg epsilon]"] [opt "[option -maxiter] [arg count]"] [opt "[opt -trace] [arg flag]"]]

Minimizes, in unconstrained fashion, a function of several variable over all
of space.  The function to evaluate, [arg objective], must be a single Tcl
command. To it will be appended as many elements as appear in the initial guess at
the location of the minimum, passed in as a Tcl list, [arg xVector].
[para]







<







168
169
170
171
172
173
174

175
176
177
178
179
180
181
Convenience function to return the maximum for the solution found by the
solveLinearProgram procedure.
[para]
[arg objective] - The M coefficients of the objective function
[para]
[arg result] - The result as returned by solveLinearProgram


[call [cmd ::math::optimize::nelderMead] [arg objective] [arg xVector] [opt "[option -scale] [arg xScaleVector]"] [opt "[option -ftol] [arg epsilon]"] [opt "[option -maxiter] [arg count]"] [opt "[opt -trace] [arg flag]"]]

Minimizes, in unconstrained fashion, a function of several variable over all
of space.  The function to evaluate, [arg objective], must be a single Tcl
command. To it will be appended as many elements as appear in the initial guess at
the location of the minimum, passed in as a Tcl list, [arg xVector].
[para]
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
}]

[para]
The theory of linear programming is the subject of many a text book and
the Simplex algorithm that is implemented here is the best-known
method to solve this type of problems, but it is not the only one.

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {math :: optimize}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords math optimization minimum maximum "linear program"]
[manpage_end]







<
<
<
<
<
|
<
|
<
<
<
<
<

316
317
318
319
320
321
322





323

324





325
}]

[para]
The theory of linear programming is the subject of many a text book and
the Simplex algorithm that is implemented here is the best-known
method to solve this type of problems, but it is not the only one.






[vset CATEGORY {math :: optimize}]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/math/polynomials.man.

1
2


3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin math::polynomials n 1.0.1]


[copyright {2004 Arjen Markus <[email protected]>}]
[moddesc   {Tcl Math Library}]
[titledesc {Polynomial functions}]
[category  Mathematics]
[require Tcl [opt 8.3]]
[require math::polynomials [opt 1.0.1]]



>
>







1
2
3
4
5
6
7
8
9
10
11
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin math::polynomials n 1.0.1]
[keywords math]
[keywords {polynomial functions}]
[copyright {2004 Arjen Markus <[email protected]>}]
[moddesc   {Tcl Math Library}]
[titledesc {Polynomial functions}]
[category  Mathematics]
[require Tcl [opt 8.3]]
[require math::polynomials [opt 1.0.1]]

70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240

[arg_def float x] The coordinate at which to evaluate the polynomial

[list_end]

[para]


[call [cmd ::math::polynomials::addPolyn] [arg polyn1] [arg polyn2]]

Return a new polynomial which is the sum of the two others.

[list_begin arguments]
[arg_def list polyn1] The first polynomial operand

[arg_def list polyn2] The second polynomial operand

[list_end]

[para]


[call [cmd ::math::polynomials::subPolyn] [arg polyn1] [arg polyn2]]

Return a new polynomial which is the difference of the two others.

[list_begin arguments]
[arg_def list polyn1] The first polynomial operand

[arg_def list polyn2] The second polynomial operand

[list_end]

[para]


[call [cmd ::math::polynomials::multPolyn] [arg polyn1] [arg polyn2]]

Return a new polynomial which is the product of the two others. If one
of the arguments is a scalar value, the other polynomial is simply
scaled.

[list_begin arguments]
[arg_def list polyn1] The first polynomial operand or a scalar

[arg_def list polyn2] The second polynomial operand or a scalar

[list_end]

[para]


[call [cmd ::math::polynomials::divPolyn] [arg polyn1] [arg polyn2]]

Divide the first polynomial by the second polynomial and return the
result. The remainder is dropped

[list_begin arguments]
[arg_def list polyn1] The first polynomial operand

[arg_def list polyn2] The second polynomial operand

[list_end]

[para]


[call [cmd ::math::polynomials::remainderPolyn] [arg polyn1] [arg polyn2]]

Divide the first polynomial by the second polynomial and return the
remainder.

[list_begin arguments]
[arg_def list polyn1] The first polynomial operand

[arg_def list polyn2] The second polynomial operand

[list_end]

[para]


[call [cmd ::math::polynomials::derivPolyn] [arg polyn]]

Differentiate the polynomial and return the result.

[list_begin arguments]
[arg_def list polyn] The polynomial to be differentiated

[list_end]

[para]


[call [cmd ::math::polynomials::primitivePolyn] [arg polyn]]

Integrate the polynomial and return the result. The integration
constant is set to zero.

[list_begin arguments]
[arg_def list polyn] The polynomial to be integrated

[list_end]

[para]


[call [cmd ::math::polynomials::degreePolyn] [arg polyn]]

Return the degree of the polynomial.

[list_begin arguments]
[arg_def list polyn] The polynomial to be examined

[list_end]

[para]


[call [cmd ::math::polynomials::coeffPolyn] [arg polyn] [arg index]]

Return the coefficient of the term of the index'th degree of the
polynomial.

[list_begin arguments]
[arg_def list polyn] The polynomial to be examined
[arg_def int  index] The degree of the term

[list_end]

[para]


[call [cmd ::math::polynomials::allCoeffsPolyn] [arg polyn]]

Return the coefficients of the polynomial (in ascending order).

[list_begin arguments]
[arg_def list polyn] The polynomial in question

[list_end]

[list_end]


[section "REMARKS ON THE IMPLEMENTATION"]

The implementation for evaluating the polynomials at some point uses
Horn's rule, which guarantees numerical stability and a minimum of
arithmetic operations.

To recognise that a polynomial definition is indeed a correct
definition, it consists of a list of two elements: the keyword
"POLYNOMIAL" and the list of coefficients in descending order. The
latter makes it easier to implement Horner's rule.


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {math :: polynomials}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords math "polynomial functions"]
[manpage_end]







<













<












<
















<













<















<










<













<










<














<










<












<
<
<
<
<
<
|
<
|
<
<
<
<
<

72
73
74
75
76
77
78

79
80
81
82
83
84
85
86
87
88
89
90
91

92
93
94
95
96
97
98
99
100
101
102
103

104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119

120
121
122
123
124
125
126
127
128
129
130
131
132

133
134
135
136
137
138
139
140
141
142
143
144
145
146
147

148
149
150
151
152
153
154
155
156
157

158
159
160
161
162
163
164
165
166
167
168
169
170

171
172
173
174
175
176
177
178
179
180

181
182
183
184
185
186
187
188
189
190
191
192
193
194

195
196
197
198
199
200
201
202
203
204

205
206
207
208
209
210
211
212
213
214
215
216






217

218





219

[arg_def float x] The coordinate at which to evaluate the polynomial

[list_end]

[para]


[call [cmd ::math::polynomials::addPolyn] [arg polyn1] [arg polyn2]]

Return a new polynomial which is the sum of the two others.

[list_begin arguments]
[arg_def list polyn1] The first polynomial operand

[arg_def list polyn2] The second polynomial operand

[list_end]

[para]


[call [cmd ::math::polynomials::subPolyn] [arg polyn1] [arg polyn2]]

Return a new polynomial which is the difference of the two others.

[list_begin arguments]
[arg_def list polyn1] The first polynomial operand

[arg_def list polyn2] The second polynomial operand

[list_end]

[para]


[call [cmd ::math::polynomials::multPolyn] [arg polyn1] [arg polyn2]]

Return a new polynomial which is the product of the two others. If one
of the arguments is a scalar value, the other polynomial is simply
scaled.

[list_begin arguments]
[arg_def list polyn1] The first polynomial operand or a scalar

[arg_def list polyn2] The second polynomial operand or a scalar

[list_end]

[para]


[call [cmd ::math::polynomials::divPolyn] [arg polyn1] [arg polyn2]]

Divide the first polynomial by the second polynomial and return the
result. The remainder is dropped

[list_begin arguments]
[arg_def list polyn1] The first polynomial operand

[arg_def list polyn2] The second polynomial operand

[list_end]

[para]


[call [cmd ::math::polynomials::remainderPolyn] [arg polyn1] [arg polyn2]]

Divide the first polynomial by the second polynomial and return the
remainder.

[list_begin arguments]
[arg_def list polyn1] The first polynomial operand

[arg_def list polyn2] The second polynomial operand

[list_end]

[para]


[call [cmd ::math::polynomials::derivPolyn] [arg polyn]]

Differentiate the polynomial and return the result.

[list_begin arguments]
[arg_def list polyn] The polynomial to be differentiated

[list_end]

[para]


[call [cmd ::math::polynomials::primitivePolyn] [arg polyn]]

Integrate the polynomial and return the result. The integration
constant is set to zero.

[list_begin arguments]
[arg_def list polyn] The polynomial to be integrated

[list_end]

[para]


[call [cmd ::math::polynomials::degreePolyn] [arg polyn]]

Return the degree of the polynomial.

[list_begin arguments]
[arg_def list polyn] The polynomial to be examined

[list_end]

[para]


[call [cmd ::math::polynomials::coeffPolyn] [arg polyn] [arg index]]

Return the coefficient of the term of the index'th degree of the
polynomial.

[list_begin arguments]
[arg_def list polyn] The polynomial to be examined
[arg_def int  index] The degree of the term

[list_end]

[para]


[call [cmd ::math::polynomials::allCoeffsPolyn] [arg polyn]]

Return the coefficients of the polynomial (in ascending order).

[list_begin arguments]
[arg_def list polyn] The polynomial in question

[list_end]

[list_end]


[section "REMARKS ON THE IMPLEMENTATION"]

The implementation for evaluating the polynomials at some point uses
Horn's rule, which guarantees numerical stability and a minimum of
arithmetic operations.

To recognise that a polynomial definition is indeed a correct
definition, it consists of a list of two elements: the keyword
"POLYNOMIAL" and the list of coefficients in descending order. The
latter makes it easier to implement Horner's rule.







[vset CATEGORY {math :: polynomials}]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/math/qcomplex.man.

1
2


3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin math::complexnumbers n 1.0.2]


[copyright {2004 Arjen Markus <[email protected]>}]
[moddesc   {Tcl Math Library}]
[titledesc {Straightforward complex number package}]
[category  Mathematics]
[require Tcl 8.3]
[require math::complexnumbers [opt 1.0.2]]



>
>







1
2
3
4
5
6
7
8
9
10
11
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin math::complexnumbers n 1.0.2]
[keywords {complex numbers}]
[keywords math]
[copyright {2004 Arjen Markus <[email protected]>}]
[moddesc   {Tcl Math Library}]
[titledesc {Straightforward complex number package}]
[category  Mathematics]
[require Tcl 8.3]
[require math::complexnumbers [opt 1.0.2]]

291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
[arg_def complex z2 in]
The complex power to be used

[list_end]

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {math :: complexnumbers}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords math {complex numbers}]
[manpage_end]







<
<
<
<
<
<
|
<
|
<
<
<
<
<

293
294
295
296
297
298
299






300

301





302
[arg_def complex z2 in]
The complex power to be used

[list_end]

[list_end]







[vset CATEGORY {math :: complexnumbers}]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/math/rational_funcs.man.

1
2


3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin math::rationalfunctions n 1.0.1]


[copyright {2005 Arjen Markus <[email protected]>}]
[moddesc   {Math}]
[titledesc {Polynomial functions}]
[category  Mathematics]
[require Tcl [opt 8.4]]
[require math::rationalfunctions [opt 1.0.1]]



>
>







1
2
3
4
5
6
7
8
9
10
11
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin math::rationalfunctions n 1.0.1]
[keywords math]
[keywords {rational functions}]
[copyright {2005 Arjen Markus <[email protected]>}]
[moddesc   {Math}]
[titledesc {Polynomial functions}]
[category  Mathematics]
[require Tcl [opt 8.4]]
[require math::rationalfunctions [opt 1.0.1]]

79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203

[arg_def float x] The coordinate at which to evaluate the function

[list_end]

[para]


[call [cmd ::math::rationalfunctions::addRatio] [arg ratio1] [arg ratio2]]

Return a new rational function which is the sum of the two others.

[list_begin arguments]
[arg_def list ratio1] The first rational function operand

[arg_def list ratio2] The second rational function operand

[list_end]

[para]


[call [cmd ::math::rationalfunctions::subRatio] [arg ratio1] [arg ratio2]]

Return a new rational function which is the difference of the two
others.

[list_begin arguments]
[arg_def list ratio1] The first rational function operand

[arg_def list ratio2] The second rational function operand

[list_end]

[para]


[call [cmd ::math::rationalfunctions::multRatio] [arg ratio1] [arg ratio2]]

Return a new rational function which is the product of the two others.
If one of the arguments is a scalar value, the other rational function is
simply scaled.

[list_begin arguments]
[arg_def list ratio1] The first rational function operand or a scalar

[arg_def list ratio2] The second rational function operand or a scalar

[list_end]

[para]


[call [cmd ::math::rationalfunctions::divRatio] [arg ratio1] [arg ratio2]]

Divide the first rational function by the second rational function and
return the result. The remainder is dropped

[list_begin arguments]
[arg_def list ratio1] The first rational function operand

[arg_def list ratio2] The second rational function operand

[list_end]

[para]


[call [cmd ::math::rationalfunctions::derivPolyn] [arg ratio]]

Differentiate the rational function and return the result.

[list_begin arguments]
[arg_def list ratio] The rational function to be differentiated

[list_end]

[para]


[call [cmd ::math::rationalfunctions::coeffsNumerator] [arg ratio]]

Return the coefficients of the numerator of the rational function.

[list_begin arguments]
[arg_def list ratio] The rational function to be examined
[list_end]

[para]


[call [cmd ::math::rationalfunctions::coeffsDenominator] [arg ratio]]

Return the coefficients of the denominator of the rational
function.

[list_begin arguments]
[arg_def list ratio] The rational function to be examined
[list_end]

[para]

[list_end]


[section "REMARKS ON THE IMPLEMENTATION"]

The implementation of the rational functions relies on the
math::polynomials package. For further remarks see the documentation on
that package.

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {math :: rationalfunctions}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords math "rational functions"]
[manpage_end]







<












<














<
















<














<











<









<














<






<
<
<
<
<
|
<
|
<
<
<
<
<

81
82
83
84
85
86
87

88
89
90
91
92
93
94
95
96
97
98
99

100
101
102
103
104
105
106
107
108
109
110
111
112
113

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129

130
131
132
133
134
135
136
137
138
139
140
141
142
143

144
145
146
147
148
149
150
151
152
153
154

155
156
157
158
159
160
161
162
163

164
165
166
167
168
169
170
171
172
173
174
175
176
177

178
179
180
181
182
183





184

185





186

[arg_def float x] The coordinate at which to evaluate the function

[list_end]

[para]


[call [cmd ::math::rationalfunctions::addRatio] [arg ratio1] [arg ratio2]]

Return a new rational function which is the sum of the two others.

[list_begin arguments]
[arg_def list ratio1] The first rational function operand

[arg_def list ratio2] The second rational function operand

[list_end]

[para]


[call [cmd ::math::rationalfunctions::subRatio] [arg ratio1] [arg ratio2]]

Return a new rational function which is the difference of the two
others.

[list_begin arguments]
[arg_def list ratio1] The first rational function operand

[arg_def list ratio2] The second rational function operand

[list_end]

[para]


[call [cmd ::math::rationalfunctions::multRatio] [arg ratio1] [arg ratio2]]

Return a new rational function which is the product of the two others.
If one of the arguments is a scalar value, the other rational function is
simply scaled.

[list_begin arguments]
[arg_def list ratio1] The first rational function operand or a scalar

[arg_def list ratio2] The second rational function operand or a scalar

[list_end]

[para]


[call [cmd ::math::rationalfunctions::divRatio] [arg ratio1] [arg ratio2]]

Divide the first rational function by the second rational function and
return the result. The remainder is dropped

[list_begin arguments]
[arg_def list ratio1] The first rational function operand

[arg_def list ratio2] The second rational function operand

[list_end]

[para]


[call [cmd ::math::rationalfunctions::derivPolyn] [arg ratio]]

Differentiate the rational function and return the result.

[list_begin arguments]
[arg_def list ratio] The rational function to be differentiated

[list_end]

[para]


[call [cmd ::math::rationalfunctions::coeffsNumerator] [arg ratio]]

Return the coefficients of the numerator of the rational function.

[list_begin arguments]
[arg_def list ratio] The rational function to be examined
[list_end]

[para]


[call [cmd ::math::rationalfunctions::coeffsDenominator] [arg ratio]]

Return the coefficients of the denominator of the rational
function.

[list_begin arguments]
[arg_def list ratio] The rational function to be examined
[list_end]

[para]

[list_end]


[section "REMARKS ON THE IMPLEMENTATION"]

The implementation of the rational functions relies on the
math::polynomials package. For further remarks see the documentation on
that package.






[vset CATEGORY {math :: rationalfunctions}]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/math/roman.man.

1
2



3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin math::roman "" 1.0]



[copyright {2005 Kenneth Green <[email protected]>}]
[moddesc   {Tcl Math Library}]
[titledesc {Tools for creating and manipulating roman numerals}]
[category  Mathematics]
[require Tcl 8.3]
[require math::roman [opt 1.0]]
[description]


>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin math::roman "" 1.0]
[keywords conversion]
[keywords integer]
[keywords {roman numeral}]
[copyright {2005 Kenneth Green <[email protected]>}]
[moddesc   {Tcl Math Library}]
[titledesc {Tools for creating and manipulating roman numerals}]
[category  Mathematics]
[require Tcl 8.3]
[require math::roman [opt 1.0]]
[description]
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

  [list_end]

Of these commands both [emph toroman] and [emph tointeger] are exported
for easier use. The other two are not, as they could interfer or be
confused with existing Tcl commands.

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {math :: roman}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords conversion integer "roman numeral"]
[manpage_end]







<
<
<
<
<
|
<
|
<
<
<
<
<

42
43
44
45
46
47
48





49

50





51

  [list_end]

Of these commands both [emph toroman] and [emph tointeger] are exported
for easier use. The other two are not, as they could interfer or be
confused with existing Tcl commands.






[vset CATEGORY {math :: roman}]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/math/romberg.man.

1


2
3
4
5
6
7
8
[manpage_begin math::calculus::romberg n 0.6]


[copyright "2004 Kevin B. Kenny <[email protected]>. All rights\
reserved. Redistribution permitted under the terms of the Open\
Publication License <http://www.opencontent.org/openpub/>"]
[moddesc {Tcl Math Library}]
[titledesc {Romberg integration}]
[category  Mathematics]
[require Tcl 8.2]

>
>







1
2
3
4
5
6
7
8
9
10
[manpage_begin math::calculus::romberg n 0.6]
[see_also math::calculus]
[see_also math::interpolate]
[copyright "2004 Kevin B. Kenny <[email protected]>. All rights\
reserved. Redistribution permitted under the terms of the Open\
Publication License <http://www.opencontent.org/openpub/>"]
[moddesc {Tcl Math Library}]
[titledesc {Romberg integration}]
[category  Mathematics]
[require Tcl 8.2]
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
[example {
foreach { value error } [romberg_sine f -1.0 1.0] break
puts [format "integral is %.6g +/- %.6g" $value $error]

integral is 3.97746 +/- 2.3557e-010
}]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {math :: calculus}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.



[see_also math::calculus math::interpolate]
[manpage_end]







<
<
<
<
<
<
|
<
|
<
<
<
<
<
<

331
332
333
334
335
336
337






338

339






340
[example {
foreach { value error } [romberg_sine f -1.0 1.0] break
puts [format "integral is %.6g +/- %.6g" $value $error]

integral is 3.97746 +/- 2.3557e-010
}]







[vset CATEGORY {math :: calculus}]

[include ../doctools2base/include/feedback.inc]






[manpage_end]

Changes to modules/math/special.man.

1
2




3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin math::special n 0.2]




[copyright {2004 Arjen Markus <[email protected]>}]
[moddesc   {Tcl Math Library}]
[titledesc {Special mathematical functions}]
[category  Mathematics]
[require Tcl [opt 8.3]]
[require math::special [opt 0.2]]



>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin math::special n 0.2]
[keywords {Bessel functions}]
[keywords {error function}]
[keywords math]
[keywords {special functions}]
[copyright {2004 Arjen Markus <[email protected]>}]
[moddesc   {Tcl Math Library}]
[titledesc {Special mathematical functions}]
[category  Mathematics]
[require Tcl [opt 8.3]]
[require math::special [opt 0.2]]

49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
exponent_Ei and other functions related to the so-called exponential
integrals

[item]
legendre, hermite: some of the classical orthogonal polynomials.

[list_end]


[section OVERVIEW]

In the following table several characteristics of the functions in this
package are summarized: the domain for the argument, the values for the
parameters and error bounds.








<







53
54
55
56
57
58
59

60
61
62
63
64
65
66
exponent_Ei and other functions related to the so-called exponential
integrals

[item]
legendre, hermite: some of the classical orthogonal polynomials.

[list_end]


[section OVERVIEW]

In the following table several characteristics of the functions in this
package are summarized: the domain for the argument, the values for the
parameters and error bounds.

117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
[item]
Chebyshev polynomials of the second kind (U_n)
[item]
The digamma function (psi)
[item]
The incomplete gamma and beta functions
[list_end]


[section "PROCEDURES"]

The package defines the following public procedures:

[list_begin definitions]








<







120
121
122
123
124
125
126

127
128
129
130
131
132
133
[item]
Chebyshev polynomials of the second kind (U_n)
[item]
The digamma function (psi)
[item]
The incomplete gamma and beta functions
[list_end]


[section "PROCEDURES"]

The package defines the following public procedures:

[list_begin definitions]

330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433

Compute the hyperbolic sine integral for the argument "x"

[list_begin arguments]
[arg_def float x] Argument for the function (x > 0)
[list_end]


[call [cmd ::math::special::fresnel_C] [arg x]]

Compute the Fresnel cosine integral for real argument x

[list_begin arguments]
[arg_def float x] Argument for the function
[list_end]


[call [cmd ::math::special::fresnel_S] [arg x]]

Compute the Fresnel sine integral for real argument x

[list_begin arguments]
[arg_def float x] Argument for the function
[list_end]


[call [cmd ::math::special::sinc] [arg x]]

Compute the sinc function for real argument x

[list_begin arguments]
[arg_def float x] Argument for the function
[list_end]


[call [cmd ::math::special::legendre] [arg n]]

Return the Legendre polynomial of degree n
(see [sectref "THE ORTHOGONAL POLYNOMIALS"])

[list_begin arguments]
[arg_def int n] Degree of the polynomial
[list_end]

[para]


[call [cmd ::math::special::chebyshev] [arg n]]

Return the Chebyshev polynomial of degree n (of the first kind)

[list_begin arguments]
[arg_def int n] Degree of the polynomial
[list_end]

[para]


[call [cmd ::math::special::laguerre] [arg alpha] [arg n]]

Return the Laguerre polynomial of degree n with parameter alpha

[list_begin arguments]
[arg_def float alpha] Parameter of the Laguerre polynomial
[arg_def int n] Degree of the polynomial
[list_end]

[para]


[call [cmd ::math::special::hermite] [arg n]]

Return the Hermite polynomial of degree n

[list_begin arguments]
[arg_def int n] Degree of the polynomial
[list_end]

[para]

[list_end]


[section "THE ORTHOGONAL POLYNOMIALS"]

For dealing with the classical families of orthogonal polynomials, the
package relies on the [emph math::polynomials] package. To evaluate the
polynomial at some coordinate, use the [emph evalPolyn] command:
[example {
   set leg2 [::math::special::legendre 2]
   puts "Value at x=$x: [::math::polynomials::evalPolyn $leg2 $x]"
}]

[para]
The return value from the [emph legendre] and other commands is actually
the definition of the corresponding polynomial as used in that package.


[section "REMARKS ON THE IMPLEMENTATION"]

It should be noted, that the actual implementation of J0 and J1 depends
on straightforward Gaussian quadrature formulas. The (absolute) accuracy
of the results is of the order 1.0e-4 or better. The main reason to
implement them like that was that it was fast to do (the formulas are







<







<









<







<












<









<












<











<














<







332
333
334
335
336
337
338

339
340
341
342
343
344
345

346
347
348
349
350
351
352
353
354

355
356
357
358
359
360
361

362
363
364
365
366
367
368
369
370
371
372
373

374
375
376
377
378
379
380
381
382

383
384
385
386
387
388
389
390
391
392
393
394

395
396
397
398
399
400
401
402
403
404
405

406
407
408
409
410
411
412
413
414
415
416
417
418
419

420
421
422
423
424
425
426

Compute the hyperbolic sine integral for the argument "x"

[list_begin arguments]
[arg_def float x] Argument for the function (x > 0)
[list_end]


[call [cmd ::math::special::fresnel_C] [arg x]]

Compute the Fresnel cosine integral for real argument x

[list_begin arguments]
[arg_def float x] Argument for the function
[list_end]


[call [cmd ::math::special::fresnel_S] [arg x]]

Compute the Fresnel sine integral for real argument x

[list_begin arguments]
[arg_def float x] Argument for the function
[list_end]


[call [cmd ::math::special::sinc] [arg x]]

Compute the sinc function for real argument x

[list_begin arguments]
[arg_def float x] Argument for the function
[list_end]


[call [cmd ::math::special::legendre] [arg n]]

Return the Legendre polynomial of degree n
(see [sectref "THE ORTHOGONAL POLYNOMIALS"])

[list_begin arguments]
[arg_def int n] Degree of the polynomial
[list_end]

[para]


[call [cmd ::math::special::chebyshev] [arg n]]

Return the Chebyshev polynomial of degree n (of the first kind)

[list_begin arguments]
[arg_def int n] Degree of the polynomial
[list_end]

[para]


[call [cmd ::math::special::laguerre] [arg alpha] [arg n]]

Return the Laguerre polynomial of degree n with parameter alpha

[list_begin arguments]
[arg_def float alpha] Parameter of the Laguerre polynomial
[arg_def int n] Degree of the polynomial
[list_end]

[para]


[call [cmd ::math::special::hermite] [arg n]]

Return the Hermite polynomial of degree n

[list_begin arguments]
[arg_def int n] Degree of the polynomial
[list_end]

[para]

[list_end]


[section "THE ORTHOGONAL POLYNOMIALS"]

For dealing with the classical families of orthogonal polynomials, the
package relies on the [emph math::polynomials] package. To evaluate the
polynomial at some coordinate, use the [emph evalPolyn] command:
[example {
   set leg2 [::math::special::legendre 2]
   puts "Value at x=$x: [::math::polynomials::evalPolyn $leg2 $x]"
}]

[para]
The return value from the [emph legendre] and other commands is actually
the definition of the corresponding polynomial as used in that package.


[section "REMARKS ON THE IMPLEMENTATION"]

It should be noted, that the actual implementation of J0 and J1 depends
on straightforward Gaussian quadrature formulas. The (absolute) accuracy
of the results is of the order 1.0e-4 or better. The main reason to
implement them like that was that it was fast to do (the formulas are
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477

[para]
Much information about these functions can be found in:
[para]
Abramowitz and Stegun: [emph "Handbook of Mathematical Functions"]
(Dover, ISBN 486-61272-4)


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {math :: special}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords math "special functions" "Bessel functions" "error function"]
[manpage_end]







<
<
<
<
<
<
|
<
|
<
<
<
<
<

449
450
451
452
453
454
455






456

457





458

[para]
Much information about these functions can be found in:
[para]
Abramowitz and Stegun: [emph "Handbook of Mathematical Functions"]
(Dover, ISBN 486-61272-4)







[vset CATEGORY {math :: special}]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/math/statistics.man.

1



2
3
4
5
6
7
8
[manpage_begin math::statistics n 0.8]



[moddesc {Tcl Math Library}]
[titledesc {Basic statistical functions and procedures}]
[category  Mathematics]
[require Tcl 8.4]
[require math::statistics 0.8]
[description]
[para]

>
>
>







1
2
3
4
5
6
7
8
9
10
11
[manpage_begin math::statistics n 0.8]
[keywords {data analysis}]
[keywords mathematics]
[keywords statistics]
[moddesc {Tcl Math Library}]
[titledesc {Basic statistical functions and procedures}]
[category  Mathematics]
[require Tcl 8.4]
[require math::statistics 0.8]
[description]
[para]
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
Determine the [term mean] value of the given list of data.

[list_begin arguments]
[arg_def list data] - List of data
[list_end]
[para]


[call [cmd ::math::statistics::min] [arg data]]
Determine the [term minimum] value of the given list of data.

[list_begin arguments]
[arg_def list data] - List of data
[list_end]
[para]


[call [cmd ::math::statistics::max] [arg data]]
Determine the [term maximum] value of the given list of data.

[list_begin arguments]
[arg_def list data] - List of data
[list_end]
[para]


[call [cmd ::math::statistics::number] [arg data]]
Determine the [term number] of non-missing data in the given list

[list_begin arguments]
[arg_def list data] - List of data
[list_end]
[para]

[call [cmd ::math::statistics::stdev] [arg data]]
Determine the [term "sample standard deviation"] of the data in the
given list

[list_begin arguments]
[arg_def list data] - List of data
[list_end]
[para]


[call [cmd ::math::statistics::var] [arg data]]
Determine the [term "sample variance"] of the data in the given list

[list_begin arguments]
[arg_def list data] - List of data
[list_end]
[para]


[call [cmd ::math::statistics::pstdev] [arg data]]
Determine the [term "population standard deviation"] of the data
in the given list

[list_begin arguments]
[arg_def list data] - List of data
[list_end]
[para]


[call [cmd ::math::statistics::pvar] [arg data]]
Determine the [term "population variance"] of the data in the
given list

[list_begin arguments]
[arg_def list data] - List of data
[list_end]
[para]


[call [cmd ::math::statistics::median] [arg data]]
Determine the [term median] of the data in the given list
(Note that this requires sorting the data, which may be a
costly operation)

[list_begin arguments]
[arg_def list data] - List of data
[list_end]
[para]


[call [cmd ::math::statistics::basic-stats] [arg data]]
Determine a list of all the descriptive parameters: mean, minimum,
maximum, number of data, sample standard deviation, sample variance,
population standard deviation and population variance.
[para]
(This routine is called whenever either or all of the basic statistical
parameters are required. Hence all calculations are done and the
relevant values are returned.)

[list_begin arguments]
[arg_def list data] - List of data
[list_end]
[para]


[call [cmd ::math::statistics::histogram] [arg limits] [arg values]]
Determine histogram information for the given list of data. Returns a
list consisting of the number of values that fall into each interval.
(The first interval consists of all values lower than the first limit,
the last interval consists of all values greater than the last limit.
There is one more interval than there are limits.)

[list_begin arguments]
[arg_def list limits] - List of upper limits (in ascending order) for the
intervals of the histogram.
[arg_def list values] - List of data
[list_end]
[para]


[call [cmd ::math::statistics::corr] [arg data1] [arg data2]]
Determine the correlation coefficient between two sets of data.

[list_begin arguments]
[arg_def list data1] - First list of data
[arg_def list data2] - Second list of data
[list_end]
[para]


[call [cmd ::math::statistics::interval-mean-stdev] [arg data] [arg confidence]]
Return the interval containing the mean value and one
containing the standard deviation with a certain
level of confidence (assuming a normal distribution)

[list_begin arguments]
[arg_def list data] - List of raw data values (small sample)
[arg_def float confidence] - Confidence level (0.95 or 0.99 for instance)
[list_end]
[para]


[call [cmd ::math::statistics::t-test-mean] [arg data] [arg est_mean] \
[arg est_stdev] [arg confidence]]
Test whether the mean value of a sample is in accordance with the
estimated normal distribution with a certain level of confidence.
Returns 1 if the test succeeds or 0 if the mean is unlikely to fit
the given distribution.

[list_begin arguments]
[arg_def list data] - List of raw data values (small sample)
[arg_def float est_mean] - Estimated mean of the distribution
[arg_def float est_stdev] - Estimated stdev of the distribution
[arg_def float confidence] - Confidence level (0.95 or 0.99 for instance)
[list_end]
[para]


[call [cmd ::math::statistics::test-normal] [arg data] [arg confidence]]
Test whether the given data follow a normal distribution
with a certain level of confidence.
Returns 1 if the data are normally distributed within the level of
confidence, returns 0 if not. The underlying test is the Lilliefors
test.

[list_begin arguments]
[arg_def list data] - List of raw data values
[arg_def float confidence] - Confidence level (one of 0.80, 0.90, 0.95 or 0.99)
[list_end]
[para]


[call [cmd ::math::statistics::lillieforsFit] [arg data]]
Returns the goodness of fit to a normal distribution according to
Lilliefors. The higher the number, the more likely the data are indeed
normally distributed. The test requires at least [emph five] data
points.








<








<







<


















<







<









<










<









<















<














<








<











<
















<












<







56
57
58
59
60
61
62

63
64
65
66
67
68
69
70

71
72
73
74
75
76
77

78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95

96
97
98
99
100
101
102

103
104
105
106
107
108
109
110
111

112
113
114
115
116
117
118
119
120
121

122
123
124
125
126
127
128
129
130

131
132
133
134
135
136
137
138
139
140
141
142
143
144
145

146
147
148
149
150
151
152
153
154
155
156
157
158
159

160
161
162
163
164
165
166
167

168
169
170
171
172
173
174
175
176
177
178

179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194

195
196
197
198
199
200
201
202
203
204
205
206

207
208
209
210
211
212
213
Determine the [term mean] value of the given list of data.

[list_begin arguments]
[arg_def list data] - List of data
[list_end]
[para]


[call [cmd ::math::statistics::min] [arg data]]
Determine the [term minimum] value of the given list of data.

[list_begin arguments]
[arg_def list data] - List of data
[list_end]
[para]


[call [cmd ::math::statistics::max] [arg data]]
Determine the [term maximum] value of the given list of data.

[list_begin arguments]
[arg_def list data] - List of data
[list_end]
[para]


[call [cmd ::math::statistics::number] [arg data]]
Determine the [term number] of non-missing data in the given list

[list_begin arguments]
[arg_def list data] - List of data
[list_end]
[para]

[call [cmd ::math::statistics::stdev] [arg data]]
Determine the [term "sample standard deviation"] of the data in the
given list

[list_begin arguments]
[arg_def list data] - List of data
[list_end]
[para]


[call [cmd ::math::statistics::var] [arg data]]
Determine the [term "sample variance"] of the data in the given list

[list_begin arguments]
[arg_def list data] - List of data
[list_end]
[para]


[call [cmd ::math::statistics::pstdev] [arg data]]
Determine the [term "population standard deviation"] of the data
in the given list

[list_begin arguments]
[arg_def list data] - List of data
[list_end]
[para]


[call [cmd ::math::statistics::pvar] [arg data]]
Determine the [term "population variance"] of the data in the
given list

[list_begin arguments]
[arg_def list data] - List of data
[list_end]
[para]


[call [cmd ::math::statistics::median] [arg data]]
Determine the [term median] of the data in the given list
(Note that this requires sorting the data, which may be a
costly operation)

[list_begin arguments]
[arg_def list data] - List of data
[list_end]
[para]


[call [cmd ::math::statistics::basic-stats] [arg data]]
Determine a list of all the descriptive parameters: mean, minimum,
maximum, number of data, sample standard deviation, sample variance,
population standard deviation and population variance.
[para]
(This routine is called whenever either or all of the basic statistical
parameters are required. Hence all calculations are done and the
relevant values are returned.)

[list_begin arguments]
[arg_def list data] - List of data
[list_end]
[para]


[call [cmd ::math::statistics::histogram] [arg limits] [arg values]]
Determine histogram information for the given list of data. Returns a
list consisting of the number of values that fall into each interval.
(The first interval consists of all values lower than the first limit,
the last interval consists of all values greater than the last limit.
There is one more interval than there are limits.)

[list_begin arguments]
[arg_def list limits] - List of upper limits (in ascending order) for the
intervals of the histogram.
[arg_def list values] - List of data
[list_end]
[para]


[call [cmd ::math::statistics::corr] [arg data1] [arg data2]]
Determine the correlation coefficient between two sets of data.

[list_begin arguments]
[arg_def list data1] - First list of data
[arg_def list data2] - Second list of data
[list_end]
[para]


[call [cmd ::math::statistics::interval-mean-stdev] [arg data] [arg confidence]]
Return the interval containing the mean value and one
containing the standard deviation with a certain
level of confidence (assuming a normal distribution)

[list_begin arguments]
[arg_def list data] - List of raw data values (small sample)
[arg_def float confidence] - Confidence level (0.95 or 0.99 for instance)
[list_end]
[para]


[call [cmd ::math::statistics::t-test-mean] [arg data] [arg est_mean] \
[arg est_stdev] [arg confidence]]
Test whether the mean value of a sample is in accordance with the
estimated normal distribution with a certain level of confidence.
Returns 1 if the test succeeds or 0 if the mean is unlikely to fit
the given distribution.

[list_begin arguments]
[arg_def list data] - List of raw data values (small sample)
[arg_def float est_mean] - Estimated mean of the distribution
[arg_def float est_stdev] - Estimated stdev of the distribution
[arg_def float confidence] - Confidence level (0.95 or 0.99 for instance)
[list_end]
[para]


[call [cmd ::math::statistics::test-normal] [arg data] [arg confidence]]
Test whether the given data follow a normal distribution
with a certain level of confidence.
Returns 1 if the data are normally distributed within the level of
confidence, returns 0 if not. The underlying test is the Lilliefors
test.

[list_begin arguments]
[arg_def list data] - List of raw data values
[arg_def float confidence] - Confidence level (one of 0.80, 0.90, 0.95 or 0.99)
[list_end]
[para]


[call [cmd ::math::statistics::lillieforsFit] [arg data]]
Returns the goodness of fit to a normal distribution according to
Lilliefors. The higher the number, the more likely the data are indeed
normally distributed. The test requires at least [emph five] data
points.

244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
[list_begin arguments]
[arg_def list limits] - List of upper limits from histogram
[arg_def list counts] - List of counts for for each interval in histogram
[arg_def float confidence] -  Confidence level (0.95 or 0.99 for instance)
[list_end]
[para]


[call [cmd ::math::statistics::autocorr] [arg data]]
Return the autocorrelation function as a list of values (assuming
equidistance between samples, about 1/2 of the number of raw data)
[para]
The correlation is determined in such a way that the first value is
always 1 and all others are equal to or smaller than 1. The number of
values involved will diminish as the "time" (the index in the list of
returned values) increases
[list_begin arguments]
[arg_def list data] - Raw data for which the autocorrelation must be determined
[list_end]
[para]


[call [cmd ::math::statistics::crosscorr] [arg data1] [arg data2]]
Return the cross-correlation function as a list of values (assuming
equidistance between samples, about 1/2 of the number of raw data)
[para]
The correlation is determined in such a way that the values can never
exceed 1 in magnitude. The number of values involved will diminish
as the "time" (the index in the list of returned values) increases.
[list_begin arguments]
[arg_def list data1] - First list of data
[arg_def list data2] - Second list of data
[list_end]
[para]


[call [cmd ::math::statistics::mean-histogram-limits] [arg mean] \
[arg stdev] [arg number]]
Determine reasonable limits based on mean and standard deviation
for a histogram
Convenience function - the result is suitable for the histogram function.

[list_begin arguments]
[arg_def float mean] - Mean of the data
[arg_def float stdev] - Standard deviation
[arg_def int number] - Number of limits to generate (defaults to 8)
[list_end]
[para]


[call [cmd ::math::statistics::minmax-histogram-limits] [arg min] \
[arg max] [arg number]]
Determine reasonable limits based on a minimum and maximum for a histogram
[para]
Convenience function - the result is suitable for the histogram function.
[list_begin arguments]
[arg_def float min] - Expected minimum
[arg_def float max] - Expected maximum
[arg_def int number] - Number of limits to generate (defaults to 8)
[list_end]
[para]


[call [cmd ::math::statistics::linear-model] [arg xdata] \
[arg ydata] [arg intercept]]
Determine the coefficients for a linear regression between
two series of data (the model: Y = A + B*X). Returns a list of
parameters describing the fit








<












<














<













<











<







233
234
235
236
237
238
239

240
241
242
243
244
245
246
247
248
249
250
251

252
253
254
255
256
257
258
259
260
261
262
263
264
265

266
267
268
269
270
271
272
273
274
275
276
277
278

279
280
281
282
283
284
285
286
287
288
289

290
291
292
293
294
295
296
[list_begin arguments]
[arg_def list limits] - List of upper limits from histogram
[arg_def list counts] - List of counts for for each interval in histogram
[arg_def float confidence] -  Confidence level (0.95 or 0.99 for instance)
[list_end]
[para]


[call [cmd ::math::statistics::autocorr] [arg data]]
Return the autocorrelation function as a list of values (assuming
equidistance between samples, about 1/2 of the number of raw data)
[para]
The correlation is determined in such a way that the first value is
always 1 and all others are equal to or smaller than 1. The number of
values involved will diminish as the "time" (the index in the list of
returned values) increases
[list_begin arguments]
[arg_def list data] - Raw data for which the autocorrelation must be determined
[list_end]
[para]


[call [cmd ::math::statistics::crosscorr] [arg data1] [arg data2]]
Return the cross-correlation function as a list of values (assuming
equidistance between samples, about 1/2 of the number of raw data)
[para]
The correlation is determined in such a way that the values can never
exceed 1 in magnitude. The number of values involved will diminish
as the "time" (the index in the list of returned values) increases.
[list_begin arguments]
[arg_def list data1] - First list of data
[arg_def list data2] - Second list of data
[list_end]
[para]


[call [cmd ::math::statistics::mean-histogram-limits] [arg mean] \
[arg stdev] [arg number]]
Determine reasonable limits based on mean and standard deviation
for a histogram
Convenience function - the result is suitable for the histogram function.

[list_begin arguments]
[arg_def float mean] - Mean of the data
[arg_def float stdev] - Standard deviation
[arg_def int number] - Number of limits to generate (defaults to 8)
[list_end]
[para]


[call [cmd ::math::statistics::minmax-histogram-limits] [arg min] \
[arg max] [arg number]]
Determine reasonable limits based on a minimum and maximum for a histogram
[para]
Convenience function - the result is suitable for the histogram function.
[list_begin arguments]
[arg_def float min] - Expected minimum
[arg_def float max] - Expected maximum
[arg_def int number] - Number of limits to generate (defaults to 8)
[list_end]
[para]


[call [cmd ::math::statistics::linear-model] [arg xdata] \
[arg ydata] [arg intercept]]
Determine the coefficients for a linear regression between
two series of data (the model: Y = A + B*X). Returns a list of
parameters describing the fit

336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
Standard error of the slope B
[item]
Significance level of B
[list_end]
[list_end]
[para]


[call [cmd ::math::statistics::linear-residuals] [arg xdata] [arg ydata] \
[arg intercept]]
Determine the difference between actual data and predicted from
the linear model.
[para]
Returns a list of the differences between the actual data and the
predicted values.
[list_begin arguments]
[arg_def list xdata] - List of independent data
[arg_def list ydata] - List of dependent data to be fitted
[arg_def boolean intercept] - (Optional) compute the intercept (1, default) or fit
to a line through the origin (0)
[list_end]
[para]


[call [cmd ::math::statistics::test-2x2] [arg n11] [arg n21] [arg n12] [arg n22]]
Determine if two set of samples, each from a binomial distribution,
differ significantly or not (implying a different parameter).
[para]
Returns the "chi-square" value, which can be used to the determine the
significance.
[list_begin arguments]
[arg_def int n11] - Number of outcomes with the first value from the first sample.
[arg_def int n21] - Number of outcomes with the first value from the second sample.
[arg_def int n12] - Number of outcomes with the second value from the first sample.
[arg_def int n22] - Number of outcomes with the second value from the second sample.
[list_end]
[para]


[call [cmd ::math::statistics::print-2x2] [arg n11] [arg n21] [arg n12] [arg n22]]
Determine if two set of samples, each from a binomial distribution,
differ significantly or not (implying a different parameter).
[para]
Returns a short report, useful in an interactive session.
[list_begin arguments]
[arg_def int n11] - Number of outcomes with the first value from the first sample.
[arg_def int n21] - Number of outcomes with the first value from the second sample.
[arg_def int n12] - Number of outcomes with the second value from the first sample.
[arg_def int n22] - Number of outcomes with the second value from the second sample.
[list_end]
[para]


[call [cmd ::math::statistics::control-xbar] [arg data] [opt nsamples]]
Determine the control limits for an xbar chart. The number of data
in each subsample defaults to 4. At least 20 subsamples are required.
[para]
Returns the mean, the lower limit, the upper limit and the number of
data per subsample.

[list_begin arguments]
[arg_def list data] - List of observed data
[arg_def int nsamples] - Number of data per subsample
[list_end]
[para]


[call [cmd ::math::statistics::control-Rchart] [arg data] [opt nsamples]]
Determine the control limits for an R chart. The number of data
in each subsample (nsamples) defaults to 4. At least 20 subsamples are required.
[para]
Returns the mean range, the lower limit, the upper limit and the number
of data per subsample.

[list_begin arguments]
[arg_def list data] - List of observed data
[arg_def int nsamples] - Number of data per subsample
[list_end]
[para]


[call [cmd ::math::statistics::test-xbar] [arg control] [arg data]]
Determine if the data exceed the control limits for the xbar chart.
[para]
Returns a list of subsamples (their indices) that indeed violate the
limits.

[list_begin arguments]
[arg_def list control] - Control limits as returned by the "control-xbar" procedure
[arg_def list data] - List of observed data
[list_end]
[para]


[call [cmd ::math::statistics::test-Rchart] [arg control] [arg data]]
Determine if the data exceed the control limits for the R chart.
[para]
Returns a list of subsamples (their indices) that indeed violate the
limits.
[list_begin arguments]







<














<















<












<














<













<











<







320
321
322
323
324
325
326

327
328
329
330
331
332
333
334
335
336
337
338
339
340

341
342
343
344
345
346
347
348
349
350
351
352
353
354
355

356
357
358
359
360
361
362
363
364
365
366
367

368
369
370
371
372
373
374
375
376
377
378
379
380
381

382
383
384
385
386
387
388
389
390
391
392
393
394

395
396
397
398
399
400
401
402
403
404
405

406
407
408
409
410
411
412
Standard error of the slope B
[item]
Significance level of B
[list_end]
[list_end]
[para]


[call [cmd ::math::statistics::linear-residuals] [arg xdata] [arg ydata] \
[arg intercept]]
Determine the difference between actual data and predicted from
the linear model.
[para]
Returns a list of the differences between the actual data and the
predicted values.
[list_begin arguments]
[arg_def list xdata] - List of independent data
[arg_def list ydata] - List of dependent data to be fitted
[arg_def boolean intercept] - (Optional) compute the intercept (1, default) or fit
to a line through the origin (0)
[list_end]
[para]


[call [cmd ::math::statistics::test-2x2] [arg n11] [arg n21] [arg n12] [arg n22]]
Determine if two set of samples, each from a binomial distribution,
differ significantly or not (implying a different parameter).
[para]
Returns the "chi-square" value, which can be used to the determine the
significance.
[list_begin arguments]
[arg_def int n11] - Number of outcomes with the first value from the first sample.
[arg_def int n21] - Number of outcomes with the first value from the second sample.
[arg_def int n12] - Number of outcomes with the second value from the first sample.
[arg_def int n22] - Number of outcomes with the second value from the second sample.
[list_end]
[para]


[call [cmd ::math::statistics::print-2x2] [arg n11] [arg n21] [arg n12] [arg n22]]
Determine if two set of samples, each from a binomial distribution,
differ significantly or not (implying a different parameter).
[para]
Returns a short report, useful in an interactive session.
[list_begin arguments]
[arg_def int n11] - Number of outcomes with the first value from the first sample.
[arg_def int n21] - Number of outcomes with the first value from the second sample.
[arg_def int n12] - Number of outcomes with the second value from the first sample.
[arg_def int n22] - Number of outcomes with the second value from the second sample.
[list_end]
[para]


[call [cmd ::math::statistics::control-xbar] [arg data] [opt nsamples]]
Determine the control limits for an xbar chart. The number of data
in each subsample defaults to 4. At least 20 subsamples are required.
[para]
Returns the mean, the lower limit, the upper limit and the number of
data per subsample.

[list_begin arguments]
[arg_def list data] - List of observed data
[arg_def int nsamples] - Number of data per subsample
[list_end]
[para]


[call [cmd ::math::statistics::control-Rchart] [arg data] [opt nsamples]]
Determine the control limits for an R chart. The number of data
in each subsample (nsamples) defaults to 4. At least 20 subsamples are required.
[para]
Returns the mean range, the lower limit, the upper limit and the number
of data per subsample.

[list_begin arguments]
[arg_def list data] - List of observed data
[arg_def int nsamples] - Number of data per subsample
[list_end]
[para]


[call [cmd ::math::statistics::test-xbar] [arg control] [arg data]]
Determine if the data exceed the control limits for the xbar chart.
[para]
Returns a list of subsamples (their indices) that indeed violate the
limits.

[list_begin arguments]
[arg_def list control] - Control limits as returned by the "control-xbar" procedure
[arg_def list data] - List of observed data
[list_end]
[para]


[call [cmd ::math::statistics::test-Rchart] [arg control] [arg data]]
Determine if the data exceed the control limits for the R chart.
[para]
Returns a list of subsamples (their indices) that indeed violate the
limits.
[list_begin arguments]
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
observation (as a sublist) and so on. The sublists of data are organised
as lists of the value of the dependent variable y and the independent
variables x1, x2 to xN.

[list_end]
[para]


[call [cmd ::math::statistics::mv-ols] [arg values]]
Carries out an ordinary least squares linear regression for
the data points provided.

[para]
This procedure simply calls ::mvlinreg::wls with the weights
set to 1.0, and returns the same information.

[list_end]


[emph "Example of the use:"]
[example {
# Store the value of the unicode value for the "+/-" character
set pm "\u00B1"

# Provide some data







<









<







507
508
509
510
511
512
513

514
515
516
517
518
519
520
521
522

523
524
525
526
527
528
529
observation (as a sublist) and so on. The sublists of data are organised
as lists of the value of the dependent variable y and the independent
variables x1, x2 to xN.

[list_end]
[para]


[call [cmd ::math::statistics::mv-ols] [arg values]]
Carries out an ordinary least squares linear regression for
the data points provided.

[para]
This procedure simply calls ::mvlinreg::wls with the weights
set to 1.0, and returns the same information.

[list_end]


[emph "Example of the use:"]
[example {
# Store the value of the unicode value for the "+/-" character
set pm "\u00B1"

# Provide some data
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
List of random values with the given distribution (random-*)
[list_end]

The following procedures have been implemented:

[list_begin definitions]


[call [cmd ::math::statistics::pdf-normal] [arg mean] [arg stdev] [arg value]]
Return the probability of a given value for a normal distribution with
given mean and standard deviation.

[list_begin arguments]
[arg_def float mean] - Mean value of the distribution
[arg_def float stdev] - Standard deviation of the distribution
[arg_def float value] - Value for which the probability is required
[list_end]
[para]


[call [cmd ::math::statistics::pdf-exponential] [arg mean] [arg value]]
Return the probability of a given value for an exponential
distribution with given mean.

[list_begin arguments]
[arg_def float mean] - Mean value of the distribution
[arg_def float value] - Value for which the probability is required
[list_end]
[para]


[call [cmd ::math::statistics::pdf-uniform] [arg xmin] [arg xmax] [arg value]]
Return the probability of a given value for a uniform
distribution with given extremes.

[list_begin arguments]
[arg_def float xmin] - Minimum value of the distribution
[arg_def float xmin] - Maximum value of the distribution
[arg_def float value] - Value for which the probability is required
[list_end]
[para]


[call [cmd ::math::statistics::pdf-gamma] [arg alpha] [arg beta] [arg value]]
Return the probability of a given value for a Gamma
distribution with given shape and rate parameters

[list_begin arguments]
[arg_def float alpha] - Shape parameter
[arg_def float beta] - Rate parameter
[arg_def float value] - Value for which the probability is required
[list_end]
[para]


[call [cmd ::math::statistics::pdf-poisson] [arg mu] [arg k]]
Return the probability of a given number of occurrences in the same
interval (k) for a Poisson distribution with given mean (mu)

[list_begin arguments]
[arg_def float mu] - Mean number of occurrences
[arg_def int k] - Number of occurences
[list_end]
[para]


[call [cmd ::math::statistics::pdf-chisquare] [arg df] [arg value]]
Return the probability of a given value for a chi square
distribution with given degrees of freedom

[list_begin arguments]
[arg_def float df] - Degrees of freedom
[arg_def float value] - Value for which the probability is required
[list_end]
[para]


[call [cmd ::math::statistics::pdf-student-t] [arg df] [arg value]]
Return the probability of a given value for a Student's t
distribution with given degrees of freedom

[list_begin arguments]
[arg_def float df] - Degrees of freedom
[arg_def float value] - Value for which the probability is required
[list_end]
[para]


[call [cmd ::math::statistics::pdf-beta] [arg a] [arg b] [arg value]]
Return the probability of a given value for a Beta
distribution with given shape parameters

[list_begin arguments]
[arg_def float a] - First shape parameter
[arg_def float b] - First shape parameter
[arg_def float value] - Value for which the probability is required
[list_end]
[para]


[call [cmd ::math::statistics::cdf-normal] [arg mean] [arg stdev] [arg value]]
Return the cumulative probability of a given value for a normal
distribution with given mean and standard deviation, that is the
probability for values up to the given one.

[list_begin arguments]
[arg_def float mean] - Mean value of the distribution
[arg_def float stdev] - Standard deviation of the distribution
[arg_def float value] - Value for which the probability is required
[list_end]
[para]


[call [cmd ::math::statistics::cdf-exponential] [arg mean] [arg value]]
Return the cumulative probability of a given value for an exponential
distribution with given mean.

[list_begin arguments]
[arg_def float mean] - Mean value of the distribution
[arg_def float value] - Value for which the probability is required
[list_end]
[para]


[call [cmd ::math::statistics::cdf-uniform] [arg xmin] [arg xmax] [arg value]]
Return the cumulative probability of a given value for a uniform
distribution with given extremes.

[list_begin arguments]
[arg_def float xmin] - Minimum value of the distribution
[arg_def float xmin] - Maximum value of the distribution
[arg_def float value] - Value for which the probability is required
[list_end]
[para]


[call [cmd ::math::statistics::cdf-students-t] [arg degrees] [arg value]]
Return the cumulative probability of a given value for a Student's t
distribution with given number of degrees.
[list_begin arguments]
[arg_def int degrees] - Number of degrees of freedom
[arg_def float value] - Value for which the probability is required
[list_end]
[para]


[call [cmd ::math::statistics::cdf-gamma] [arg alpha] [arg beta] [arg value]]
Return the cumulative probability of a given value for a Gamma
distribution with given shape and rate parameters

[list_begin arguments]
[arg_def float alpha] - Shape parameter
[arg_def float beta] - Rate parameter
[arg_def float value] - Value for which the cumulative probability is required
[list_end]
[para]


[call [cmd ::math::statistics::cdf-poisson] [arg mu] [arg k]]
Return the cumulative probability of a given number of occurrences in
the same interval (k) for a Poisson distribution with given mean (mu)

[list_begin arguments]
[arg_def float mu] - Mean number of occurrences
[arg_def int k] - Number of occurences
[list_end]
[para]


[call [cmd ::math::statistics::cdf-beta] [arg a] [arg b] [arg value]]
Return the cumulative probability of a given value for a Beta
distribution with given shape parameters

[list_begin arguments]
[arg_def float a] - First shape parameter
[arg_def float b] - First shape parameter
[arg_def float value] - Value for which the probability is required
[list_end]
[para]


[call [cmd ::math::statistics::random-normal] [arg mean] [arg stdev] [arg number]]
Return a list of "number" random values satisfying a normal
distribution with given mean and standard deviation.
[list_begin arguments]
[arg_def float mean] - Mean value of the distribution
[arg_def float stdev] - Standard deviation of the distribution
[arg_def int number] - Number of values to be returned
[list_end]
[para]


[call [cmd ::math::statistics::random-exponential] [arg mean] [arg number]]
Return a list of "number" random values satisfying an exponential
distribution with given mean.
[list_begin arguments]
[arg_def float mean] - Mean value of the distribution
[arg_def int number] - Number of values to be returned
[list_end]
[para]


[call [cmd ::math::statistics::random-uniform] [arg xmin] [arg xmax] [arg number]]
Return a list of "number" random values satisfying a uniform
distribution with given extremes.

[list_begin arguments]
[arg_def float xmin] - Minimum value of the distribution
[arg_def float xmax] - Maximum value of the distribution
[arg_def int number] - Number of values to be returned
[list_end]
[para]


[call [cmd ::math::statistics::random-gamma] [arg alpha] [arg beta] [arg number]]
Return a list of "number" random values satisfying
a Gamma distribution with given shape and rate parameters

[list_begin arguments]
[arg_def float alpha] - Shape parameter
[arg_def float beta] - Rate parameter
[arg_def int number] - Number of values to be returned
[list_end]
[para]


[call [cmd ::math::statistics::random-chisquare] [arg df] [arg number]]
Return a list of "number" random values satisfying
a chi square distribution with given degrees of freedom

[list_begin arguments]
[arg_def float df] - Degrees of freedom
[arg_def int number] - Number of values to be returned
[list_end]
[para]


[call [cmd ::math::statistics::random-student-t] [arg df] [arg number]]
Return a list of "number" random values satisfying
a Student's t distribution with given degrees of freedom

[list_begin arguments]
[arg_def float df] - Degrees of freedom
[arg_def int number] - Number of values to be returned
[list_end]
[para]


[call [cmd ::math::statistics::random-beta] [arg a] [arg b] [arg number]]
Return a list of "number" random values satisfying
a Beta distribution with given shape parameters

[list_begin arguments]
[arg_def float a] - First shape parameter
[arg_def float b] - Second shape parameter
[arg_def int number] - Number of values to be returned
[list_end]
[para]


[call [cmd ::math::statistics::histogram-uniform] [arg xmin] [arg xmax] [arg limits] [arg number]]
Return the expected histogram for a uniform distribution.

[list_begin arguments]
[arg_def float xmin] - Minimum value of the distribution
[arg_def float xmax] - Maximum value of the distribution
[arg_def list limits] - Upper limits for the buckets in the histogram
[arg_def int number] - Total number of "observations" in the histogram
[list_end]
[para]


[call [cmd ::math::statistics::incompleteGamma] [arg x] [arg p] [opt tol]]
Evaluate the incomplete Gamma integral

[example {
                    1       / x               p-1
      P(p,x) =  --------   |   dt exp(-t) * t
                Gamma(p)  / 0
}]

[list_begin arguments]
[arg_def float x] - Value of x (limit of the integral)
[arg_def float p] - Value of p in the integrand
[arg_def float tol] - Required tolerance (default: 1.0e-9)
[list_end]
[para]


[call [cmd ::math::statistics::incompleteBeta] [arg a] [arg b] [arg x] [opt tol]]
Evaluate the incomplete Beta integral

[list_begin arguments]
[arg_def float a] - First shape parameter
[arg_def float b] - Second shape parameter
[arg_def float x] - Value of x (limit of the integral)
[arg_def float tol] - Required tolerance (default: 1.0e-9)
[list_end]
[para]


[list_end]
TO DO: more function descriptions to be added

[section "DATA MANIPULATION"]
The data manipulation procedures act on lists or lists of lists:

[list_begin definitions]

[call [cmd ::math::statistics::filter] [arg varname] [arg data] [arg expression]]
Return a list consisting of the data for which the logical
expression is true (this command works analogously to the command [cmd foreach]).

[list_begin arguments]
[arg_def string varname] - Name of the variable used in the expression
[arg_def list data] - List of data
[arg_def string expression] - Logical expression using the variable name
[list_end]
[para]


[call [cmd ::math::statistics::map] [arg varname] [arg data] [arg expression]]
Return a list consisting of the data that are transformed via the
expression.

[list_begin arguments]
[arg_def string varname] - Name of the variable used in the expression
[arg_def list data] - List of data
[arg_def string expression] - Expression to be used to transform (map) the data
[list_end]
[para]


[call [cmd ::math::statistics::samplescount] [arg varname] [arg list] [arg expression]]
Return a list consisting of the [term counts] of all data in the
sublists of the "list" argument for which the expression is true.

[list_begin arguments]
[arg_def string varname] - Name of the variable used in the expression
[arg_def list data] - List of sublists, each containing the data
[arg_def string expression] - Logical expression to test the data (defaults to
"true").
[list_end]
[para]


[call [cmd ::math::statistics::subdivide]]
Routine [emph PM] - not implemented yet
[para]


[call [cmd ::math::statistics::test-Kruskal-Wallis] [arg confidence] [arg args]]
Check if the population medians of two or more groups are equal with a
given confidence level, using the Kruskal-Wallis test.

[list_begin arguments]
[arg_def float confidence] - Confidence level to be used (0-1)
[arg_def list args] - Two or more lists of data
[list_end]
[para]


[call [cmd ::math::statistics::analyse-Kruskal-Wallis] [arg args]]
Compute the statistical parameters for the Kruskal-Wallis test.
Returns the Kruskal-Wallis statistic and the probability that that
value would occur assuming the medians of the populations are
equal.

[list_begin arguments]
[arg_def list args] - Two or more lists of data
[list_end]
[para]


[call [cmd ::math::statistics::group-rank] [arg args]]
Rank the groups of data with respect to the complete set.
Returns a list consisting of the group ID, the value and the rank
(possibly a rational number, in case of ties) for each data item.

[list_begin arguments]
[arg_def list args] - Two or more lists of data
[list_end]
[para]


[call [cmd ::math::statistics::test-Wilcoxon] [arg sample_a] [arg sample_b]]
Compute the Wilcoxon test statistic to determine if two samples have the
same median or not. (The statistic can be regarded as standard normal, if the
sample sizes are both larger than 10. Returns the value of this statistic.

[list_begin arguments]
[arg_def list sample_a] - List of data comprising the first sample
[arg_def list sample_b] - List of data comprising the second sample
[list_end]
[para]


[call [cmd ::math::statistics::spearman-rank] [arg sample_a] [arg sample_b]]
Return the Spearman rank correlation as an alternative to the ordinary (Pearson's) correlation
coefficient. The two samples should have the same number of data.

[list_begin arguments]
[arg_def list sample_a] - First list of data
[arg_def list sample_b] - Second list of data
[list_end]
[para]


[call [cmd ::math::statistics::spearman-rank-extended] [arg sample_a] [arg sample_b]]
Return the Spearman rank correlation as an alternative to the ordinary (Pearson's) correlation
coefficient as well as additional data. The two samples should have the same number of data.
The procedure returns the correlation coefficient, the number of data pairs used and the
z-score, an approximately standard normal statistic, indicating the significance of the correlation.








<










<











<










<












<









<











<









<











<













<









<












<








<












<









<












<










<








<











<












<










<









<












<










<

















<










<




















<










<













<



<










<












<









<












<









<







590
591
592
593
594
595
596

597
598
599
600
601
602
603
604
605
606

607
608
609
610
611
612
613
614
615
616
617

618
619
620
621
622
623
624
625
626
627

628
629
630
631
632
633
634
635
636
637
638
639

640
641
642
643
644
645
646
647
648

649
650
651
652
653
654
655
656
657
658
659

660
661
662
663
664
665
666
667
668

669
670
671
672
673
674
675
676
677
678
679

680
681
682
683
684
685
686
687
688
689
690
691
692

693
694
695
696
697
698
699
700
701

702
703
704
705
706
707
708
709
710
711
712
713

714
715
716
717
718
719
720
721

722
723
724
725
726
727
728
729
730
731
732
733

734
735
736
737
738
739
740
741
742

743
744
745
746
747
748
749
750
751
752
753
754

755
756
757
758
759
760
761
762
763
764

765
766
767
768
769
770
771
772

773
774
775
776
777
778
779
780
781
782
783

784
785
786
787
788
789
790
791
792
793
794
795

796
797
798
799
800
801
802
803
804
805

806
807
808
809
810
811
812
813
814

815
816
817
818
819
820
821
822
823
824
825
826

827
828
829
830
831
832
833
834
835
836

837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853

854
855
856
857
858
859
860
861
862
863

864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883

884
885
886
887
888
889
890
891
892
893

894
895
896
897
898
899
900
901
902
903
904
905
906

907
908
909

910
911
912
913
914
915
916
917
918
919

920
921
922
923
924
925
926
927
928
929
930
931

932
933
934
935
936
937
938
939
940

941
942
943
944
945
946
947
948
949
950
951
952

953
954
955
956
957
958
959
960
961

962
963
964
965
966
967
968
List of random values with the given distribution (random-*)
[list_end]

The following procedures have been implemented:

[list_begin definitions]


[call [cmd ::math::statistics::pdf-normal] [arg mean] [arg stdev] [arg value]]
Return the probability of a given value for a normal distribution with
given mean and standard deviation.

[list_begin arguments]
[arg_def float mean] - Mean value of the distribution
[arg_def float stdev] - Standard deviation of the distribution
[arg_def float value] - Value for which the probability is required
[list_end]
[para]


[call [cmd ::math::statistics::pdf-exponential] [arg mean] [arg value]]
Return the probability of a given value for an exponential
distribution with given mean.

[list_begin arguments]
[arg_def float mean] - Mean value of the distribution
[arg_def float value] - Value for which the probability is required
[list_end]
[para]


[call [cmd ::math::statistics::pdf-uniform] [arg xmin] [arg xmax] [arg value]]
Return the probability of a given value for a uniform
distribution with given extremes.

[list_begin arguments]
[arg_def float xmin] - Minimum value of the distribution
[arg_def float xmin] - Maximum value of the distribution
[arg_def float value] - Value for which the probability is required
[list_end]
[para]


[call [cmd ::math::statistics::pdf-gamma] [arg alpha] [arg beta] [arg value]]
Return the probability of a given value for a Gamma
distribution with given shape and rate parameters

[list_begin arguments]
[arg_def float alpha] - Shape parameter
[arg_def float beta] - Rate parameter
[arg_def float value] - Value for which the probability is required
[list_end]
[para]


[call [cmd ::math::statistics::pdf-poisson] [arg mu] [arg k]]
Return the probability of a given number of occurrences in the same
interval (k) for a Poisson distribution with given mean (mu)

[list_begin arguments]
[arg_def float mu] - Mean number of occurrences
[arg_def int k] - Number of occurences
[list_end]
[para]


[call [cmd ::math::statistics::pdf-chisquare] [arg df] [arg value]]
Return the probability of a given value for a chi square
distribution with given degrees of freedom

[list_begin arguments]
[arg_def float df] - Degrees of freedom
[arg_def float value] - Value for which the probability is required
[list_end]
[para]


[call [cmd ::math::statistics::pdf-student-t] [arg df] [arg value]]
Return the probability of a given value for a Student's t
distribution with given degrees of freedom

[list_begin arguments]
[arg_def float df] - Degrees of freedom
[arg_def float value] - Value for which the probability is required
[list_end]
[para]


[call [cmd ::math::statistics::pdf-beta] [arg a] [arg b] [arg value]]
Return the probability of a given value for a Beta
distribution with given shape parameters

[list_begin arguments]
[arg_def float a] - First shape parameter
[arg_def float b] - First shape parameter
[arg_def float value] - Value for which the probability is required
[list_end]
[para]


[call [cmd ::math::statistics::cdf-normal] [arg mean] [arg stdev] [arg value]]
Return the cumulative probability of a given value for a normal
distribution with given mean and standard deviation, that is the
probability for values up to the given one.

[list_begin arguments]
[arg_def float mean] - Mean value of the distribution
[arg_def float stdev] - Standard deviation of the distribution
[arg_def float value] - Value for which the probability is required
[list_end]
[para]


[call [cmd ::math::statistics::cdf-exponential] [arg mean] [arg value]]
Return the cumulative probability of a given value for an exponential
distribution with given mean.

[list_begin arguments]
[arg_def float mean] - Mean value of the distribution
[arg_def float value] - Value for which the probability is required
[list_end]
[para]


[call [cmd ::math::statistics::cdf-uniform] [arg xmin] [arg xmax] [arg value]]
Return the cumulative probability of a given value for a uniform
distribution with given extremes.

[list_begin arguments]
[arg_def float xmin] - Minimum value of the distribution
[arg_def float xmin] - Maximum value of the distribution
[arg_def float value] - Value for which the probability is required
[list_end]
[para]


[call [cmd ::math::statistics::cdf-students-t] [arg degrees] [arg value]]
Return the cumulative probability of a given value for a Student's t
distribution with given number of degrees.
[list_begin arguments]
[arg_def int degrees] - Number of degrees of freedom
[arg_def float value] - Value for which the probability is required
[list_end]
[para]


[call [cmd ::math::statistics::cdf-gamma] [arg alpha] [arg beta] [arg value]]
Return the cumulative probability of a given value for a Gamma
distribution with given shape and rate parameters

[list_begin arguments]
[arg_def float alpha] - Shape parameter
[arg_def float beta] - Rate parameter
[arg_def float value] - Value for which the cumulative probability is required
[list_end]
[para]


[call [cmd ::math::statistics::cdf-poisson] [arg mu] [arg k]]
Return the cumulative probability of a given number of occurrences in
the same interval (k) for a Poisson distribution with given mean (mu)

[list_begin arguments]
[arg_def float mu] - Mean number of occurrences
[arg_def int k] - Number of occurences
[list_end]
[para]


[call [cmd ::math::statistics::cdf-beta] [arg a] [arg b] [arg value]]
Return the cumulative probability of a given value for a Beta
distribution with given shape parameters

[list_begin arguments]
[arg_def float a] - First shape parameter
[arg_def float b] - First shape parameter
[arg_def float value] - Value for which the probability is required
[list_end]
[para]


[call [cmd ::math::statistics::random-normal] [arg mean] [arg stdev] [arg number]]
Return a list of "number" random values satisfying a normal
distribution with given mean and standard deviation.
[list_begin arguments]
[arg_def float mean] - Mean value of the distribution
[arg_def float stdev] - Standard deviation of the distribution
[arg_def int number] - Number of values to be returned
[list_end]
[para]


[call [cmd ::math::statistics::random-exponential] [arg mean] [arg number]]
Return a list of "number" random values satisfying an exponential
distribution with given mean.
[list_begin arguments]
[arg_def float mean] - Mean value of the distribution
[arg_def int number] - Number of values to be returned
[list_end]
[para]


[call [cmd ::math::statistics::random-uniform] [arg xmin] [arg xmax] [arg number]]
Return a list of "number" random values satisfying a uniform
distribution with given extremes.

[list_begin arguments]
[arg_def float xmin] - Minimum value of the distribution
[arg_def float xmax] - Maximum value of the distribution
[arg_def int number] - Number of values to be returned
[list_end]
[para]


[call [cmd ::math::statistics::random-gamma] [arg alpha] [arg beta] [arg number]]
Return a list of "number" random values satisfying
a Gamma distribution with given shape and rate parameters

[list_begin arguments]
[arg_def float alpha] - Shape parameter
[arg_def float beta] - Rate parameter
[arg_def int number] - Number of values to be returned
[list_end]
[para]


[call [cmd ::math::statistics::random-chisquare] [arg df] [arg number]]
Return a list of "number" random values satisfying
a chi square distribution with given degrees of freedom

[list_begin arguments]
[arg_def float df] - Degrees of freedom
[arg_def int number] - Number of values to be returned
[list_end]
[para]


[call [cmd ::math::statistics::random-student-t] [arg df] [arg number]]
Return a list of "number" random values satisfying
a Student's t distribution with given degrees of freedom

[list_begin arguments]
[arg_def float df] - Degrees of freedom
[arg_def int number] - Number of values to be returned
[list_end]
[para]


[call [cmd ::math::statistics::random-beta] [arg a] [arg b] [arg number]]
Return a list of "number" random values satisfying
a Beta distribution with given shape parameters

[list_begin arguments]
[arg_def float a] - First shape parameter
[arg_def float b] - Second shape parameter
[arg_def int number] - Number of values to be returned
[list_end]
[para]


[call [cmd ::math::statistics::histogram-uniform] [arg xmin] [arg xmax] [arg limits] [arg number]]
Return the expected histogram for a uniform distribution.

[list_begin arguments]
[arg_def float xmin] - Minimum value of the distribution
[arg_def float xmax] - Maximum value of the distribution
[arg_def list limits] - Upper limits for the buckets in the histogram
[arg_def int number] - Total number of "observations" in the histogram
[list_end]
[para]


[call [cmd ::math::statistics::incompleteGamma] [arg x] [arg p] [opt tol]]
Evaluate the incomplete Gamma integral

[example {
                    1       / x               p-1
      P(p,x) =  --------   |   dt exp(-t) * t
                Gamma(p)  / 0
}]

[list_begin arguments]
[arg_def float x] - Value of x (limit of the integral)
[arg_def float p] - Value of p in the integrand
[arg_def float tol] - Required tolerance (default: 1.0e-9)
[list_end]
[para]


[call [cmd ::math::statistics::incompleteBeta] [arg a] [arg b] [arg x] [opt tol]]
Evaluate the incomplete Beta integral

[list_begin arguments]
[arg_def float a] - First shape parameter
[arg_def float b] - Second shape parameter
[arg_def float x] - Value of x (limit of the integral)
[arg_def float tol] - Required tolerance (default: 1.0e-9)
[list_end]
[para]


[list_end]
TO DO: more function descriptions to be added

[section "DATA MANIPULATION"]
The data manipulation procedures act on lists or lists of lists:

[list_begin definitions]

[call [cmd ::math::statistics::filter] [arg varname] [arg data] [arg expression]]
Return a list consisting of the data for which the logical
expression is true (this command works analogously to the command [cmd foreach]).

[list_begin arguments]
[arg_def string varname] - Name of the variable used in the expression
[arg_def list data] - List of data
[arg_def string expression] - Logical expression using the variable name
[list_end]
[para]


[call [cmd ::math::statistics::map] [arg varname] [arg data] [arg expression]]
Return a list consisting of the data that are transformed via the
expression.

[list_begin arguments]
[arg_def string varname] - Name of the variable used in the expression
[arg_def list data] - List of data
[arg_def string expression] - Expression to be used to transform (map) the data
[list_end]
[para]


[call [cmd ::math::statistics::samplescount] [arg varname] [arg list] [arg expression]]
Return a list consisting of the [term counts] of all data in the
sublists of the "list" argument for which the expression is true.

[list_begin arguments]
[arg_def string varname] - Name of the variable used in the expression
[arg_def list data] - List of sublists, each containing the data
[arg_def string expression] - Logical expression to test the data (defaults to
"true").
[list_end]
[para]


[call [cmd ::math::statistics::subdivide]]
Routine [emph PM] - not implemented yet
[para]


[call [cmd ::math::statistics::test-Kruskal-Wallis] [arg confidence] [arg args]]
Check if the population medians of two or more groups are equal with a
given confidence level, using the Kruskal-Wallis test.

[list_begin arguments]
[arg_def float confidence] - Confidence level to be used (0-1)
[arg_def list args] - Two or more lists of data
[list_end]
[para]


[call [cmd ::math::statistics::analyse-Kruskal-Wallis] [arg args]]
Compute the statistical parameters for the Kruskal-Wallis test.
Returns the Kruskal-Wallis statistic and the probability that that
value would occur assuming the medians of the populations are
equal.

[list_begin arguments]
[arg_def list args] - Two or more lists of data
[list_end]
[para]


[call [cmd ::math::statistics::group-rank] [arg args]]
Rank the groups of data with respect to the complete set.
Returns a list consisting of the group ID, the value and the rank
(possibly a rational number, in case of ties) for each data item.

[list_begin arguments]
[arg_def list args] - Two or more lists of data
[list_end]
[para]


[call [cmd ::math::statistics::test-Wilcoxon] [arg sample_a] [arg sample_b]]
Compute the Wilcoxon test statistic to determine if two samples have the
same median or not. (The statistic can be regarded as standard normal, if the
sample sizes are both larger than 10. Returns the value of this statistic.

[list_begin arguments]
[arg_def list sample_a] - List of data comprising the first sample
[arg_def list sample_b] - List of data comprising the second sample
[list_end]
[para]


[call [cmd ::math::statistics::spearman-rank] [arg sample_a] [arg sample_b]]
Return the Spearman rank correlation as an alternative to the ordinary (Pearson's) correlation
coefficient. The two samples should have the same number of data.

[list_begin arguments]
[arg_def list sample_a] - First list of data
[arg_def list sample_b] - Second list of data
[list_end]
[para]


[call [cmd ::math::statistics::spearman-rank-extended] [arg sample_a] [arg sample_b]]
Return the Spearman rank correlation as an alternative to the ordinary (Pearson's) correlation
coefficient as well as additional data. The two samples should have the same number of data.
The procedure returns the correlation coefficient, the number of data pairs used and the
z-score, an approximately standard normal statistic, indicating the significance of the correlation.

1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
[arg_def float xmin] - Minimum x value
[arg_def float xmax] - Maximum x value
[arg_def float ymin] - Minimum y value
[arg_def float ymax] - Maximum y value
[list_end]
[para]


[call [cmd ::math::statistics::plot-xydata] [arg canvas] \
[arg xdata] [arg ydata] [arg tag]]
Create a simple XY plot in the given canvas - the data are
shown as a collection of dots. The tag can be used to manipulate the
appearance.

[list_begin arguments]
[arg_def widget canvas] - Canvas widget to use
[arg_def float xdata] - Series of independent data
[arg_def float ydata] - Series of dependent data
[arg_def string tag] - Tag to give to the plotted data (defaults to xyplot)
[list_end]
[para]


[call [cmd ::math::statistics::plot-xyline] [arg canvas] \
[arg xdata] [arg ydata] [arg tag]]
Create a simple XY plot in the given canvas - the data are
shown as a line through the data points. The tag can be used to
manipulate the appearance.
[list_begin arguments]
[arg_def widget canvas] - Canvas widget to use
[arg_def list xdata] - Series of independent data
[arg_def list ydata] - Series of dependent data
[arg_def string tag] - Tag to give to the plotted data (defaults to xyplot)
[list_end]
[para]


[call [cmd ::math::statistics::plot-tdata] [arg canvas] \
[arg tdata] [arg tag]]
Create a simple XY plot in the given canvas - the data are
shown as a collection of dots. The horizontal coordinate is equal to the
index. The tag can be used to manipulate the appearance.
This type of presentation is suitable for autocorrelation functions for
instance or for inspecting the time-dependent behaviour.
[list_begin arguments]
[arg_def widget canvas] - Canvas widget to use
[arg_def list tdata] - Series of dependent data
[arg_def string tag] - Tag to give to the plotted data (defaults to xyplot)
[list_end]
[para]


[call [cmd ::math::statistics::plot-tline] [arg canvas] \
[arg tdata] [arg tag]]
Create a simple XY plot in the given canvas - the data are
shown as a line. See plot-tdata for an explanation.

[list_begin arguments]







<













<














<













<







988
989
990
991
992
993
994

995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007

1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021

1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034

1035
1036
1037
1038
1039
1040
1041
[arg_def float xmin] - Minimum x value
[arg_def float xmax] - Maximum x value
[arg_def float ymin] - Minimum y value
[arg_def float ymax] - Maximum y value
[list_end]
[para]


[call [cmd ::math::statistics::plot-xydata] [arg canvas] \
[arg xdata] [arg ydata] [arg tag]]
Create a simple XY plot in the given canvas - the data are
shown as a collection of dots. The tag can be used to manipulate the
appearance.

[list_begin arguments]
[arg_def widget canvas] - Canvas widget to use
[arg_def float xdata] - Series of independent data
[arg_def float ydata] - Series of dependent data
[arg_def string tag] - Tag to give to the plotted data (defaults to xyplot)
[list_end]
[para]


[call [cmd ::math::statistics::plot-xyline] [arg canvas] \
[arg xdata] [arg ydata] [arg tag]]
Create a simple XY plot in the given canvas - the data are
shown as a line through the data points. The tag can be used to
manipulate the appearance.
[list_begin arguments]
[arg_def widget canvas] - Canvas widget to use
[arg_def list xdata] - Series of independent data
[arg_def list ydata] - Series of dependent data
[arg_def string tag] - Tag to give to the plotted data (defaults to xyplot)
[list_end]
[para]


[call [cmd ::math::statistics::plot-tdata] [arg canvas] \
[arg tdata] [arg tag]]
Create a simple XY plot in the given canvas - the data are
shown as a collection of dots. The horizontal coordinate is equal to the
index. The tag can be used to manipulate the appearance.
This type of presentation is suitable for autocorrelation functions for
instance or for inspecting the time-dependent behaviour.
[list_begin arguments]
[arg_def widget canvas] - Canvas widget to use
[arg_def list tdata] - Series of dependent data
[arg_def string tag] - Tag to give to the plotted data (defaults to xyplot)
[list_end]
[para]


[call [cmd ::math::statistics::plot-tline] [arg canvas] \
[arg tdata] [arg tag]]
Create a simple XY plot in the given canvas - the data are
shown as a line. See plot-tdata for an explanation.

[list_begin arguments]
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
[item]
Both time series show a significant periodic component
[item]
The histograms are not very useful in identifying the nature of the time
series - they do not show the periodic nature.
[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {math :: statistics}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords mathematics "data analysis" statistics]
[manpage_end]







<
<
<
<
<
|
<
|
<
<
<
<
<

1213
1214
1215
1216
1217
1218
1219





1220

1221





1222
[item]
Both time series show a significant periodic component
[item]
The histograms are not very useful in identifying the nature of the time
series - they do not show the periodic nature.
[list_end]






[vset CATEGORY {math :: statistics}]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/math/symdiff.man.

1


2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
[manpage_begin math::calculus::symdiff n 1.0]


[copyright "2010 by Kevin B. Kenny <[email protected]>
Redistribution permitted under the terms of the Open\
Publication License <http://www.opencontent.org/openpub/>"]
[moddesc "Symbolic differentiation for Tcl"]
[titledesc "Symbolic differentiation for Tcl"]
[require Tcl 8.5]
[require grammar::aycock 1.0]
[require math::calculus::symdiff 1.0]
[description]
[para]
The [cmd math::calculus::symdiff] package provides a symbolic differentiation
facility for Tcl math expressions. It is useful for providing derivatives
to packages that either require the Jacobian of a set of functions or else
are more efficient or stable when the Jacobian is provided.
[section "Procedures"]
The [cmd math::calculus::symdiff] package exports the two procedures:
[list_begin definitions]
[call [cmd math::calculus::symdiff::symdiff] [arg expression] [arg variable]]
Differentiates the given [arg expression] with respect to the specified
[arg variable]. (See [sectref "Expressions"] below for a discussion of the
subset of Tcl math expressions that are acceptable to 
[cmd math::calculus::symdiff].)
The result is a Tcl expression that evaluates the derivative. Returns an
error if [arg expression] is not a well-formed expression or is not
differentiable.
[call [cmd math::calculus::jacobian] [arg variableDict]]
Computes the Jacobian of a system of equations.
The system is given by the dictionary [arg variableDict], whose keys
are the names of variables in the system, and whose values are Tcl expressions
giving the values of those variables. (See [sectref "Expressions"] below
for a discussion of the subset of Tcl math expressions that are acceptable
to [cmd math::calculus::symdiff]. The result is a list of lists: 
the i'th element of the j'th sublist is the partial derivative of 
the i'th variable with respect to the j'th variable. Returns an error if
any of the expressions cannot be differentiated, or if [arg variableDict] 
is not a well-formed dictionary.
[list_end]
[section "Expressions"]
The [cmd math::calculus::symdiff] package accepts only a small subset of the expressions
that are acceptable to Tcl commands such as [cmd expr] or [cmd if].
Specifically, the only constructs accepted are:
[list_begin itemized]
[item]Floating-point constants such as [const 5] or [const 3.14159e+00].
[item]References to Tcl variable using $-substitution. The variable names
must consist of alphanumerics and underscores: the [const \$\{...\}] notation
is not accepted.
[item]Parentheses.
[item]The [const +], [const -], [const *], [const /]. and [const **] 
operators.
[item]Calls to the functions [cmd acos], [cmd asin], [cmd atan],
[cmd atan2], [cmd cos], [cmd cosh], [cmd exp], [cmd hypot], [cmd log],
[cmd log10], [cmd pow], [cmd sin], [cmd sinh]. [cmd sqrt], [cmd tan],
and [cmd tanh].
[list_end]
Command substitution, backslash substitution, and argument expansion are
not accepted.
[section "Examples"]
[example {
math::calculus::symdiff::symdiff {($a*$x+$b)*($c*$x+$d)} x
==> (($c * (($a * $x) + $b)) + ($a * (($c * $x) + $d)))
math::calculus::symdiff::jacobian {x {$a * $x + $b * $y}
                         y {$c * $x + $d * $y}}
==> {{$a} {$b}} {{$c} {$d}}
}]
[section {Bugs, Ideas, Feedback}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {math :: calculus}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[see_also math::calculus math::interpolate]
[manpage_end]

>
>




















|










|
|

|












|
















<

<
<
<
|
<
|
<
<
<
<

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67

68



69

70




71
[manpage_begin math::calculus::symdiff n 1.0]
[see_also math::calculus]
[see_also math::interpolate]
[copyright "2010 by Kevin B. Kenny <[email protected]>
Redistribution permitted under the terms of the Open\
Publication License <http://www.opencontent.org/openpub/>"]
[moddesc "Symbolic differentiation for Tcl"]
[titledesc "Symbolic differentiation for Tcl"]
[require Tcl 8.5]
[require grammar::aycock 1.0]
[require math::calculus::symdiff 1.0]
[description]
[para]
The [cmd math::calculus::symdiff] package provides a symbolic differentiation
facility for Tcl math expressions. It is useful for providing derivatives
to packages that either require the Jacobian of a set of functions or else
are more efficient or stable when the Jacobian is provided.
[section "Procedures"]
The [cmd math::calculus::symdiff] package exports the two procedures:
[list_begin definitions]
[call [cmd math::calculus::symdiff::symdiff] [arg expression] [arg variable]]
Differentiates the given [arg expression] with respect to the specified
[arg variable]. (See [sectref "Expressions"] below for a discussion of the
subset of Tcl math expressions that are acceptable to
[cmd math::calculus::symdiff].)
The result is a Tcl expression that evaluates the derivative. Returns an
error if [arg expression] is not a well-formed expression or is not
differentiable.
[call [cmd math::calculus::jacobian] [arg variableDict]]
Computes the Jacobian of a system of equations.
The system is given by the dictionary [arg variableDict], whose keys
are the names of variables in the system, and whose values are Tcl expressions
giving the values of those variables. (See [sectref "Expressions"] below
for a discussion of the subset of Tcl math expressions that are acceptable
to [cmd math::calculus::symdiff]. The result is a list of lists:
the i'th element of the j'th sublist is the partial derivative of
the i'th variable with respect to the j'th variable. Returns an error if
any of the expressions cannot be differentiated, or if [arg variableDict]
is not a well-formed dictionary.
[list_end]
[section "Expressions"]
The [cmd math::calculus::symdiff] package accepts only a small subset of the expressions
that are acceptable to Tcl commands such as [cmd expr] or [cmd if].
Specifically, the only constructs accepted are:
[list_begin itemized]
[item]Floating-point constants such as [const 5] or [const 3.14159e+00].
[item]References to Tcl variable using $-substitution. The variable names
must consist of alphanumerics and underscores: the [const \$\{...\}] notation
is not accepted.
[item]Parentheses.
[item]The [const +], [const -], [const *], [const /]. and [const **]
operators.
[item]Calls to the functions [cmd acos], [cmd asin], [cmd atan],
[cmd atan2], [cmd cos], [cmd cosh], [cmd exp], [cmd hypot], [cmd log],
[cmd log10], [cmd pow], [cmd sin], [cmd sinh]. [cmd sqrt], [cmd tan],
and [cmd tanh].
[list_end]
Command substitution, backslash substitution, and argument expansion are
not accepted.
[section "Examples"]
[example {
math::calculus::symdiff::symdiff {($a*$x+$b)*($c*$x+$d)} x
==> (($c * (($a * $x) + $b)) + ($a * (($c * $x) + $d)))
math::calculus::symdiff::jacobian {x {$a * $x + $b * $y}
                         y {$c * $x + $d * $y}}
==> {{$a} {$b}} {{$c} {$d}}
}]





[vset CATEGORY {math :: calculus}]

[include ../doctools2base/include/feedback.inc]




[manpage_end]

Changes to modules/md4/md4.man.

1









2
3
4
5
6
7
8
[manpage_begin md4 n 1.0.5]









[moddesc   {MD4 Message-Digest Algorithm}]
[copyright {2003, Pat Thoyts <[email protected]>}]
[titledesc {MD4 Message-Digest Algorithm}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require md4 [opt 1.0]]
[description]

>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[manpage_begin md4 n 1.0.5]
[see_also md5]
[see_also sha1]
[keywords hashing]
[keywords md4]
[keywords message-digest]
[keywords {rfc 1320}]
[keywords {rfc 1321}]
[keywords {rfc 2104}]
[keywords security]
[moddesc   {MD4 Message-Digest Algorithm}]
[copyright {2003, Pat Thoyts <[email protected]>}]
[titledesc {MD4 Message-Digest Algorithm}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require md4 [opt 1.0]]
[description]
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Calculate the MD4 digest of the data given in string. This is returned
as a binary string by default. Giving the [arg "-hex"] option will
return a hexadecimal encoded version of the digest.

[para]

The data to be hashed can be specified either as a string argument to
the md4 command, or as a filename or a pre-opened channel. If the 
[arg "-filename"] argument is given then the file is opened, the data read
and hashed and the file is closed. If the [arg "-channel"] argument is
given then data is read from the channel until the end of file. The
channel is not closed.

[para]








|







44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Calculate the MD4 digest of the data given in string. This is returned
as a binary string by default. Giving the [arg "-hex"] option will
return a hexadecimal encoded version of the digest.

[para]

The data to be hashed can be specified either as a string argument to
the md4 command, or as a filename or a pre-opened channel. If the
[arg "-filename"] argument is given then the file is opened, the data read
and hashed and the file is closed. If the [arg "-channel"] argument is
given then data is read from the channel until the end of file. The
channel is not closed.

[para]

64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96

[section {PROGRAMMING INTERFACE}]

For the programmer, the MD4 hash can be viewed as a bucket into which
one pours data. When you have finished, you extract a value that is
derived from the data that was poured into the bucket. The programming
interface to the MD4 hash operates on a token (equivalent to the
bucket). You call [cmd MD4Init] to obtain a token and then call 
[cmd MD4Update] as many times as required to add data to the hash. To
release any resources and obtain the hash value, you then call 
[cmd MD4Final]. An equivalent set of functions gives you a keyed digest (HMAC).

[list_begin definitions]

[call [cmd "::md4::MD4Init"]]

Begins a new MD4 hash. Returns a token ID that must be used for the
remaining functions.

[call [cmd "::md4::MD4Update"] [arg "token"] [arg "data"]]

Add data to the hash identified by token. Calling 
[emph {MD4Update $token "abcd"}] is equivalent to calling
[emph {MD4Update $token "ab"}] followed by 
[emph {MD4Update $token "cb"}]. See [sectref {EXAMPLES}].


[call [cmd "::md4::MD4Final"] [arg "token"]]

Returns the hash value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a binary string of 16 bytes representing the 128 bit MD4
digest value.







|

|











|

|

<







73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97

98
99
100
101
102
103
104

[section {PROGRAMMING INTERFACE}]

For the programmer, the MD4 hash can be viewed as a bucket into which
one pours data. When you have finished, you extract a value that is
derived from the data that was poured into the bucket. The programming
interface to the MD4 hash operates on a token (equivalent to the
bucket). You call [cmd MD4Init] to obtain a token and then call
[cmd MD4Update] as many times as required to add data to the hash. To
release any resources and obtain the hash value, you then call
[cmd MD4Final]. An equivalent set of functions gives you a keyed digest (HMAC).

[list_begin definitions]

[call [cmd "::md4::MD4Init"]]

Begins a new MD4 hash. Returns a token ID that must be used for the
remaining functions.

[call [cmd "::md4::MD4Update"] [arg "token"] [arg "data"]]

Add data to the hash identified by token. Calling
[emph {MD4Update $token "abcd"}] is equivalent to calling
[emph {MD4Update $token "ab"}] followed by
[emph {MD4Update $token "cb"}]. See [sectref {EXAMPLES}].


[call [cmd "::md4::MD4Final"] [arg "token"]]

Returns the hash value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a binary string of 16 bytes representing the 128 bit MD4
digest value.
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172

[enum]
       Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, MIT and
       RSA Data Security, Inc, April 1992.
	([uri http://www.rfc-editor.org/rfc/rfc1321.txt])

[enum]
      Krawczyk, H., Bellare, M. and Canetti, R. "HMAC: Keyed-Hashing for 
      Message Authentication", RFC 2104, February 1997.
	([uri http://www.rfc-editor.org/rfc/rfc2104.txt])

[list_end]

[see_also md5 sha1]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph md4] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords md4 hashing message-digest security {rfc 1320} {rfc 1321} {rfc 2104}]
[manpage_end]







|





<
|
<
|
<
<
<
<
<
<
<
<
<
<
<

152
153
154
155
156
157
158
159
160
161
162
163
164

165

166











167

[enum]
       Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, MIT and
       RSA Data Security, Inc, April 1992.
	([uri http://www.rfc-editor.org/rfc/rfc1321.txt])

[enum]
      Krawczyk, H., Bellare, M. and Canetti, R. "HMAC: Keyed-Hashing for
      Message Authentication", RFC 2104, February 1997.
	([uri http://www.rfc-editor.org/rfc/rfc2104.txt])

[list_end]


[vset CATEGORY md4]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/md5/md5.man.

1









2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
[manpage_begin md5 n 2.0.7]









[moddesc {MD5 Message-Digest Algorithm}]
[copyright {2003, Pat Thoyts <[email protected]>}]
[titledesc {MD5 Message-Digest Algorithm}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require md5 [opt 2.0.7]]
[description]
[para]

This package is an implementation in Tcl of the MD5 message-digest
algorithm as described in RFC 1321 (1). This algorithm takes
an arbitrary quantity of data and generates a 128-bit message digest
from the input. The MD5 algorithm is related to the MD4 algorithm (2)
but has been strengthened against certain types of potential
attack. MD5 should be used in preference to MD4 for new applications.

[para]

If you have [package critcl] and have built the [package tcllibc]
package then the implementation of the hashing function will be
performed by compiled code. Alternatively if you have either 
[package cryptkit] or [package Trf] then either of these can be used to
accelerate the digest computation. If no suitable compiled package is
available then the pure-Tcl implementation wil be used. The
programming interface remains the same in all cases.

[para]

[emph "Note"] the previous version of this package always returned a
hex encoded string. This has been changed to simplify the programming
interface and to make this version more compatible with other
implementations. To obtain the previous usage, either explicitly
specify package version 1 or use the [arg "-hex"] option to the 
[cmd "md5"] command.

[section {COMMANDS}]

[list_begin definitions]

[call [cmd "::md5::md5"] \
        [opt "[arg -hex]"] \
        [lb] [arg "-channel channel"] | \
        [arg "-file filename"] | [arg "string"] [rb]]

Calculate the MD5 digest of the data given in string. This is returned
as a binary string by default. Giving the [arg "-hex"] option will
return a hexadecimal encoded version of the digest.

[para]

The data to be hashed can be specified either as a string argument to
the [cmd "md5"] command, or as a filename or a pre-opened channel. If the 
[arg "-filename"] argument is given then the file is opened, the data read
and hashed and the file is closed. If the [arg "-channel"] argument is
given then data is read from the channel until the end of file. The
channel is not closed.

[para]


>
>
>
>
>
>
>
>
>




















|











|


















|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
[manpage_begin md5 n 2.0.7]
[see_also md4]
[see_also sha1]
[keywords hashing]
[keywords md5]
[keywords message-digest]
[keywords {rfc 1320}]
[keywords {rfc 1321}]
[keywords {rfc 2104}]
[keywords security]
[moddesc {MD5 Message-Digest Algorithm}]
[copyright {2003, Pat Thoyts <[email protected]>}]
[titledesc {MD5 Message-Digest Algorithm}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require md5 [opt 2.0.7]]
[description]
[para]

This package is an implementation in Tcl of the MD5 message-digest
algorithm as described in RFC 1321 (1). This algorithm takes
an arbitrary quantity of data and generates a 128-bit message digest
from the input. The MD5 algorithm is related to the MD4 algorithm (2)
but has been strengthened against certain types of potential
attack. MD5 should be used in preference to MD4 for new applications.

[para]

If you have [package critcl] and have built the [package tcllibc]
package then the implementation of the hashing function will be
performed by compiled code. Alternatively if you have either
[package cryptkit] or [package Trf] then either of these can be used to
accelerate the digest computation. If no suitable compiled package is
available then the pure-Tcl implementation wil be used. The
programming interface remains the same in all cases.

[para]

[emph "Note"] the previous version of this package always returned a
hex encoded string. This has been changed to simplify the programming
interface and to make this version more compatible with other
implementations. To obtain the previous usage, either explicitly
specify package version 1 or use the [arg "-hex"] option to the
[cmd "md5"] command.

[section {COMMANDS}]

[list_begin definitions]

[call [cmd "::md5::md5"] \
        [opt "[arg -hex]"] \
        [lb] [arg "-channel channel"] | \
        [arg "-file filename"] | [arg "string"] [rb]]

Calculate the MD5 digest of the data given in string. This is returned
as a binary string by default. Giving the [arg "-hex"] option will
return a hexadecimal encoded version of the digest.

[para]

The data to be hashed can be specified either as a string argument to
the [cmd "md5"] command, or as a filename or a pre-opened channel. If the
[arg "-filename"] argument is given then the file is opened, the data read
and hashed and the file is closed. If the [arg "-channel"] argument is
given then data is read from the channel until the end of file. The
channel is not closed.

[para]

75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108

[section {PROGRAMMING INTERFACE}]

For the programmer, the MD5 hash can be viewed as a bucket into which
one pours data. When you have finished, you extract a value that is
derived from the data that was poured into the bucket. The programming
interface to the MD5 hash operates on a token (equivalent to the
bucket). You call [cmd "MD5Init"] to obtain a token and then call 
[cmd "MD5Update"] as many times as required to add data to the hash. To
release any resources and obtain the hash value, you then call 
[cmd "MD5Final"]. An equivalent set of functions gives you a keyed digest
(HMAC).

[list_begin definitions]

[call [cmd "::md5::MD5Init"]]

Begins a new MD5 hash. Returns a token ID that must be used for the
remaining functions.

[call [cmd "::md5::MD5Update"] [arg "token"] [arg "data"]]

Add data to the hash identified by token. Calling 
[emph {MD5Update $token "abcd"}] is equivalent to calling
[emph {MD5Update $token "ab"}] followed by 
[emph {MD5Update $token "cb"}]. See [sectref {EXAMPLES}].


[call [cmd "::md5::MD5Final"] [arg "token"]]

Returns the hash value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a binary string of 16 bytes representing the 128 bit MD5
digest value.







|

|












|

|

<







84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109

110
111
112
113
114
115
116

[section {PROGRAMMING INTERFACE}]

For the programmer, the MD5 hash can be viewed as a bucket into which
one pours data. When you have finished, you extract a value that is
derived from the data that was poured into the bucket. The programming
interface to the MD5 hash operates on a token (equivalent to the
bucket). You call [cmd "MD5Init"] to obtain a token and then call
[cmd "MD5Update"] as many times as required to add data to the hash. To
release any resources and obtain the hash value, you then call
[cmd "MD5Final"]. An equivalent set of functions gives you a keyed digest
(HMAC).

[list_begin definitions]

[call [cmd "::md5::MD5Init"]]

Begins a new MD5 hash. Returns a token ID that must be used for the
remaining functions.

[call [cmd "::md5::MD5Update"] [arg "token"] [arg "data"]]

Add data to the hash identified by token. Calling
[emph {MD5Update $token "abcd"}] is equivalent to calling
[emph {MD5Update $token "ab"}] followed by
[emph {MD5Update $token "cb"}]. See [sectref {EXAMPLES}].


[call [cmd "::md5::MD5Final"] [arg "token"]]

Returns the hash value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a binary string of 16 bytes representing the 128 bit MD5
digest value.
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
	([uri http://www.rfc-editor.org/rfc/rfc1321.txt])

[enum]
       Rivest, R., "The MD4 Message Digest Algorithm", RFC 1320, MIT,
       April 1992. ([uri http://www.rfc-editor.org/rfc/rfc1320.txt])

[enum]
      Krawczyk, H., Bellare, M. and Canetti, R. "HMAC: Keyed-Hashing for 
      Message Authentication", RFC 2104, February 1997.
	([uri http://www.rfc-editor.org/rfc/rfc2104.txt])

[list_end]

[see_also md4 sha1]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph md5] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords md5 hashing message-digest security {rfc 1320} {rfc 1321} {rfc 2104}]
[manpage_end]







|





<
|
<
|
<
<
<
<
<
<
<
<
<
<
<

159
160
161
162
163
164
165
166
167
168
169
170
171

172

173











174
	([uri http://www.rfc-editor.org/rfc/rfc1321.txt])

[enum]
       Rivest, R., "The MD4 Message Digest Algorithm", RFC 1320, MIT,
       April 1992. ([uri http://www.rfc-editor.org/rfc/rfc1320.txt])

[enum]
      Krawczyk, H., Bellare, M. and Canetti, R. "HMAC: Keyed-Hashing for
      Message Authentication", RFC 2104, February 1997.
	([uri http://www.rfc-editor.org/rfc/rfc2104.txt])

[list_end]


[vset CATEGORY md5]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/md5crypt/md5crypt.man.

1






2
3
4
5
6
7
8
[manpage_begin md5crypt n 1.1.0]






[moddesc   {MD5-based password encryption}]
[copyright {2003, Pat Thoyts <[email protected]>}]
[titledesc {MD5-based password encryption}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require md5 2.0]
[require md5crypt [opt 1.1.0]]

>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
[manpage_begin md5crypt n 1.1.0]
[see_also md5]
[keywords hashing]
[keywords md5]
[keywords md5crypt]
[keywords message-digest]
[keywords security]
[moddesc   {MD5-based password encryption}]
[copyright {2003, Pat Thoyts <[email protected]>}]
[titledesc {MD5-based password encryption}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require md5 2.0]
[require md5crypt [opt 1.1.0]]
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
}]

[example {
% md5crypt::md5crypt password [md5crypt::salt]
$1$dFmvyRmO$T.V3OmzqeEf3hqJp2WFcb.
}]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph md5crypt] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also md5]
[keywords md5crypt md5 hashing message-digest security]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<
<

76
77
78
79
80
81
82

83


84









85
}]

[example {
% md5crypt::md5crypt password [md5crypt::salt]
$1$dFmvyRmO$T.V3OmzqeEf3hqJp2WFcb.
}]


[vset CATEGORY md5crypt]


[include ../doctools2base/include/feedback.inc]









[manpage_end]

Changes to modules/mime/mime.man.

1
2















3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin mime n 1.5.6]















[copyright {1999-2000 Marshall T. Rose}]
[moddesc   {Mime}]
[titledesc {Manipulation of MIME body parts}]
[category  {Text processing}]
[require Tcl]
[require mime [opt 1.5.6]]
[description]
[para]

The [package mime] library package provides the commands to create and
manipulate MIME body parts.

[list_begin definitions]


[call [cmd ::mime::initialize] [opt "[option -canonical] [arg type/subtype] [opt "[option -param] \{[arg {key value}]\}..."] [opt "[option -encoding] [arg value]"] [opt "[option -header] \{[arg {key value}]\}..."]"] "([option -file] [arg name] | [option -string] [arg value] | [option -parts] \{[arg token1] ... [arg tokenN]\})"]

This command creates a MIME part and returns a token representing it.

[list_begin itemized]



>
>
>
>
>
>
>
>
>
>
>
>
>
>
>













<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

31
32
33
34
35
36
37
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin mime n 1.5.6]
[see_also ftp]
[see_also http]
[see_also pop3]
[see_also smtp]
[keywords email]
[keywords internet]
[keywords mail]
[keywords mime]
[keywords net]
[keywords {rfc 821}]
[keywords {rfc 822}]
[keywords {rfc 2045}]
[keywords {rfc 2046}]
[keywords {rfc 2049}]
[keywords smtp]
[copyright {1999-2000 Marshall T. Rose}]
[moddesc   {Mime}]
[titledesc {Manipulation of MIME body parts}]
[category  {Text processing}]
[require Tcl]
[require mime [opt 1.5.6]]
[description]
[para]

The [package mime] library package provides the commands to create and
manipulate MIME body parts.

[list_begin definitions]


[call [cmd ::mime::initialize] [opt "[option -canonical] [arg type/subtype] [opt "[option -param] \{[arg {key value}]\}..."] [opt "[option -encoding] [arg value]"] [opt "[option -header] \{[arg {key value}]\}..."]"] "([option -file] [arg name] | [option -string] [arg value] | [option -parts] \{[arg token1] ... [arg tokenN]\})"]

This command creates a MIME part and returns a token representing it.

[list_begin itemized]

46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88

If the [option -canonical] option is not present, then the MIME part
contained in either the [option -file] or the [option -string] option
is parsed, dynamically generating subordinates as appropriate.

[list_end]


[call [cmd ::mime::finalize] [arg token] [opt "[option -subordinates] [const all] | [const dynamic] | [const none]"]]

This command destroys the MIME part represented by [arg token]. It
returns an empty string.

[para]

If the [option -subordinates] option is present, it specifies which
subordinates should also be destroyed. The default value is

[const dynamic], destroying all subordinates which were created by
[cmd ::mime::initialize] together with the containing body part.


[call [cmd ::mime::getproperty] [arg token] [opt "[arg property] | [option -names]"]]

This command returns a string or a list of strings containing the
properties of a MIME part. If the command is invoked with the name of
a specific property, then the corresponding value is returned;
instead, if [option -names] is specified, a list of all properties is
returned; otherwise, a serialized array of properties and values is
returned.

[para]
The possible properties are:

[list_begin definitions]


[def [const content]]

The type/subtype describing the content

[def [const encoding]]








<












<














<







60
61
62
63
64
65
66

67
68
69
70
71
72
73
74
75
76
77
78

79
80
81
82
83
84
85
86
87
88
89
90
91
92

93
94
95
96
97
98
99

If the [option -canonical] option is not present, then the MIME part
contained in either the [option -file] or the [option -string] option
is parsed, dynamically generating subordinates as appropriate.

[list_end]


[call [cmd ::mime::finalize] [arg token] [opt "[option -subordinates] [const all] | [const dynamic] | [const none]"]]

This command destroys the MIME part represented by [arg token]. It
returns an empty string.

[para]

If the [option -subordinates] option is present, it specifies which
subordinates should also be destroyed. The default value is

[const dynamic], destroying all subordinates which were created by
[cmd ::mime::initialize] together with the containing body part.


[call [cmd ::mime::getproperty] [arg token] [opt "[arg property] | [option -names]"]]

This command returns a string or a list of strings containing the
properties of a MIME part. If the command is invoked with the name of
a specific property, then the corresponding value is returned;
instead, if [option -names] is specified, a list of all properties is
returned; otherwise, a serialized array of properties and values is
returned.

[para]
The possible properties are:

[list_begin definitions]


[def [const content]]

The type/subtype describing the content

[def [const encoding]]

99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162

[def [const size]]

The approximate size of the content (unencoded)

[list_end]


[call [cmd ::mime::getheader] [arg token] [opt "[arg key] | [option -names]"]]

This command returns the header of a MIME part, as a list of strings.

[para]

A header consists of zero or more key/value pairs. Each value is a
list containing one or more strings.

[para]

If this command is invoked with the name of a specific [arg key], then
a list containing the corresponding value(s) is returned; instead, if
-names is specified, a list of all keys is returned; otherwise, a
serialized array of keys and values is returned. Note that when a key
is specified (e.g., "Subject"), the list returned usually contains
exactly one string; however, some keys (e.g., "Received") often occur
more than once in the header, accordingly the list returned usually
contains more than one string.


[call [cmd ::mime::setheader] [arg token] [arg {key value}] [opt "[option -mode] [const write] | [const append] | [const delete]"]]

This command writes, appends to, or deletes the [arg value] associated
with a [arg key] in the header. It returns a list of strings
containing the previous value associated with the key.

[para]

The value for [option -mode] is one of:

[list_begin definitions]


[def [const write]]

The [arg key]/[arg value] is either created or overwritten (the default).

[def [const append]]

A new [arg value] is appended for the [arg key] (creating it as necessary).

[def [const delete]]

All values associated with the key are removed (the [arg value]
parameter is ignored).

[list_end]


[call [cmd ::mime::getbody] [arg token] [opt [option -decode]] [opt "[option -command] [arg callback] [opt "[option -blocksize] [arg octets]"]"]]

This command returns a string containing the body of the leaf MIME
part represented by [arg token] in canonical form.

[para]







<




















<











<















<







110
111
112
113
114
115
116

117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136

137
138
139
140
141
142
143
144
145
146
147

148
149
150
151
152
153
154
155
156
157
158
159
160
161
162

163
164
165
166
167
168
169

[def [const size]]

The approximate size of the content (unencoded)

[list_end]


[call [cmd ::mime::getheader] [arg token] [opt "[arg key] | [option -names]"]]

This command returns the header of a MIME part, as a list of strings.

[para]

A header consists of zero or more key/value pairs. Each value is a
list containing one or more strings.

[para]

If this command is invoked with the name of a specific [arg key], then
a list containing the corresponding value(s) is returned; instead, if
-names is specified, a list of all keys is returned; otherwise, a
serialized array of keys and values is returned. Note that when a key
is specified (e.g., "Subject"), the list returned usually contains
exactly one string; however, some keys (e.g., "Received") often occur
more than once in the header, accordingly the list returned usually
contains more than one string.


[call [cmd ::mime::setheader] [arg token] [arg {key value}] [opt "[option -mode] [const write] | [const append] | [const delete]"]]

This command writes, appends to, or deletes the [arg value] associated
with a [arg key] in the header. It returns a list of strings
containing the previous value associated with the key.

[para]

The value for [option -mode] is one of:

[list_begin definitions]


[def [const write]]

The [arg key]/[arg value] is either created or overwritten (the default).

[def [const append]]

A new [arg value] is appended for the [arg key] (creating it as necessary).

[def [const delete]]

All values associated with the key are removed (the [arg value]
parameter is ignored).

[list_end]


[call [cmd ::mime::getbody] [arg token] [opt [option -decode]] [opt "[option -command] [arg callback] [opt "[option -blocksize] [arg octets]"]"]]

This command returns a string containing the body of the leaf MIME
part represented by [arg token] in canonical form.

[para]
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
above is returned as is. This means that it will be in the charset
specified for the token and not the usual utf-8.

If the option [option -decode] is present however the command will use
the charset information associated with the token to convert the
string from its encoding into utf-8 before returning it.


[call [cmd ::mime::copymessage] [arg token] [arg channel]]

This command copies the MIME represented by [arg token] part to the
specified [arg channel]. The command operates synchronously, and uses
fileevent to allow asynchronous operations to proceed
independently. It returns an empty string.


[call [cmd ::mime::buildmessage] [arg token]]

This command returns the MIME part represented by [arg token] as a
string.  It is similar to [cmd ::mime::copymessage], only it returns
the data as a return string instead of writing to a channel.


[call [cmd ::mime::parseaddress] [arg string]]

This command takes a string containing one or more 822-style address
specifications and returns a list of serialized arrays, one element
for each address specified in the argument. If the string contains
more than one address they will be separated by commas.

[para]

Each serialized array contains the properties below. Note that one or
more of these properties may be empty.

[list_begin definitions]


[def [const address]]

local@domain

[def [const comment]]








<







<





<














<







213
214
215
216
217
218
219

220
221
222
223
224
225
226

227
228
229
230
231

232
233
234
235
236
237
238
239
240
241
242
243
244
245

246
247
248
249
250
251
252
above is returned as is. This means that it will be in the charset
specified for the token and not the usual utf-8.

If the option [option -decode] is present however the command will use
the charset information associated with the token to convert the
string from its encoding into utf-8 before returning it.


[call [cmd ::mime::copymessage] [arg token] [arg channel]]

This command copies the MIME represented by [arg token] part to the
specified [arg channel]. The command operates synchronously, and uses
fileevent to allow asynchronous operations to proceed
independently. It returns an empty string.


[call [cmd ::mime::buildmessage] [arg token]]

This command returns the MIME part represented by [arg token] as a
string.  It is similar to [cmd ::mime::copymessage], only it returns
the data as a return string instead of writing to a channel.


[call [cmd ::mime::parseaddress] [arg string]]

This command takes a string containing one or more 822-style address
specifications and returns a list of serialized arrays, one element
for each address specified in the argument. If the string contains
more than one address they will be separated by commas.

[para]

Each serialized array contains the properties below. Note that one or
more of these properties may be empty.

[list_begin definitions]


[def [const address]]

local@domain

[def [const comment]]

283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309

[def [const route]]

822-style route specification (obsolete)

[list_end]


[call [cmd ::mime::parsedatetime] ([arg string] | [option -now]) [arg property]]

This command takes a string containing an 822-style date-time
specification and returns the specified property as a serialized
array.

[para]

The list of properties and their ranges are:

[list_begin definitions]


[def [const hour]]

0 .. 23

[def [const lmonth]]








<











<







286
287
288
289
290
291
292

293
294
295
296
297
298
299
300
301
302
303

304
305
306
307
308
309
310

[def [const route]]

822-style route specification (obsolete)

[list_end]


[call [cmd ::mime::parsedatetime] ([arg string] | [option -now]) [arg property]]

This command takes a string containing an 822-style date-time
specification and returns the specified property as a serialized
array.

[para]

The list of properties and their ranges are:

[list_begin definitions]


[def [const hour]]

0 .. 23

[def [const lmonth]]

359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422

[def [const zone]]

-720 .. 720 (minutes east of GMT)

[list_end]


[call [cmd ::mime::mapencoding] [arg encoding_name]]

This commansd maps tcl encodings onto the proper names for their MIME
charset type.  This is only done for encodings whose charset types
were known.  The remaining encodings return "" for now.


[call [cmd ::mime::reversemapencoding] [arg charset_type]]

This command maps MIME charset types onto tcl encoding names.  Those
that are unknown return "".


[list_end]


[section {KNOWN BUGS}]

[list_begin definitions]
[def {SourceForge Tcllib Bug #447037}]

This problem affects only people which are using Tcl and Mime on a
64-bit system. The currently recommended fix for this problem is to
upgrade to Tcl version 8.4. This version has extended 64 bit support
and the bug does not appear anymore.

[para]

The problem could have been generally solved by requiring the use of
Tcl 8.4 for this package. We decided against this solution as it would
force a large number of unaffected users to upgrade their Tcl
interpreter for no reason.

[para]

See [uri http://sourceforge.net/tracker/?func=detail&aid=447037&group_id=12883&atid=112883]
for additional information.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph mime] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also smtp pop3 ftp http]
[keywords mail email smtp mime internet net]
[keywords {rfc 821} {rfc 822} {rfc 2045} {rfc 2046} {rfc 2049}]
[manpage_end]







<





<






<

<




|















<
|



<
|
<
<
|
<
<
<
<
<
<
<
<
<
<

360
361
362
363
364
365
366

367
368
369
370
371

372
373
374
375
376
377

378

379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398

399
400
401
402

403


404










405

[def [const zone]]

-720 .. 720 (minutes east of GMT)

[list_end]


[call [cmd ::mime::mapencoding] [arg encoding_name]]

This commansd maps tcl encodings onto the proper names for their MIME
charset type.  This is only done for encodings whose charset types
were known.  The remaining encodings return "" for now.


[call [cmd ::mime::reversemapencoding] [arg charset_type]]

This command maps MIME charset types onto tcl encoding names.  Those
that are unknown return "".


[list_end]


[section {KNOWN BUGS}]

[list_begin definitions]
[def {Tcllib Bug #447037}]

This problem affects only people which are using Tcl and Mime on a
64-bit system. The currently recommended fix for this problem is to
upgrade to Tcl version 8.4. This version has extended 64 bit support
and the bug does not appear anymore.

[para]

The problem could have been generally solved by requiring the use of
Tcl 8.4 for this package. We decided against this solution as it would
force a large number of unaffected users to upgrade their Tcl
interpreter for no reason.

[para]


See [uri {/tktview?name=447037} {Ticket 447037}] for additional information.

[list_end]


[vset CATEGORY mime]


[include ../doctools2base/include/feedback.inc]










[manpage_end]

Changes to modules/mime/smtp.man.

1
2




3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin smtp n 1.4.5]




[copyright {1999-2000 Marshall T. Rose and others}]
[moddesc   {smtp client}]
[titledesc {Client-side tcl implementation of the smtp protocol}]
[category  Networking]
[require Tcl]
[require mime [opt 1.5.4]]
[require smtp [opt 1.4.5]]


>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin smtp n 1.4.5]
[see_also ftp]
[see_also http]
[see_also mime]
[see_also pop3]
[copyright {1999-2000 Marshall T. Rose and others}]
[moddesc   {smtp client}]
[titledesc {Client-side tcl implementation of the smtp protocol}]
[category  Networking]
[require Tcl]
[require mime [opt 1.5.4]]
[require smtp [opt 1.4.5]]
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
present the header isn't examined for recipient addresses). If the
string contains more than one address they will be separated by
commas.

[def [option -header]]

A list containing two elements, an smtp header and its associated
value (the -header option may occur zero or more times). 

[def [option -usetls]]

This package supports the RFC 3207 TLS extension (3) by default provided the 
tls package is available. You can turn this off with this boolean option.

[def [option -tlspolicy]]

This option lets you specify a command to be called if an error occurs 
during TLS setup. The command is called with the SMTP code and diagnostic
message appended. The command should return 'secure' or 'insecure' where
insecure will cause the package to continue on the unencrypted channel.
Returning 'secure' will cause the socket to be closed and the next server
in the [option -servers] list to be tried.

[def [option -username]]







|



|




|







62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
present the header isn't examined for recipient addresses). If the
string contains more than one address they will be separated by
commas.

[def [option -header]]

A list containing two elements, an smtp header and its associated
value (the -header option may occur zero or more times).

[def [option -usetls]]

This package supports the RFC 3207 TLS extension (3) by default provided the
tls package is available. You can turn this off with this boolean option.

[def [option -tlspolicy]]

This option lets you specify a command to be called if an error occurs
during TLS setup. The command is called with the SMTP code and diagnostic
message appended. The command should return 'secure' or 'insecure' where
insecure will cause the package to continue on the unencrypted channel.
Returning 'secure' will cause the socket to be closed and the next server
in the [option -servers] list to be tried.

[def [option -username]]
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194

[enum]
    P. Hoffman, "SMTP Service Extension for Secure SMTP over Transport
    Layer Security", RFC 3207, February 2002.
    ([uri http://www.rfc-editor.org/rfc/rfc3207.txt])

[enum]
    J. Myers, "SMTP Service Extension for Authentication", 
    RFC 2554, March 1999.
    ([uri http://www.rfc-editor.org/rfc/rfc2554.txt])

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph smtp] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also mime pop3 ftp http]
[keywords mail mail email smtp mime tls \
     {rfc 821} {rfc 822} {rfc 2821} {rfc 3207} {rfc 2554} internet net]
[manpage_end]







|





<
|
<
<
|
<
<

<
<
<
<
<



170
171
172
173
174
175
176
177
178
179
180
181
182

183


184


185





186
187
188

[enum]
    P. Hoffman, "SMTP Service Extension for Secure SMTP over Transport
    Layer Security", RFC 3207, February 2002.
    ([uri http://www.rfc-editor.org/rfc/rfc3207.txt])

[enum]
    J. Myers, "SMTP Service Extension for Authentication",
    RFC 2554, March 1999.
    ([uri http://www.rfc-editor.org/rfc/rfc2554.txt])

[list_end]


[vset CATEGORY smtp]


[include ../doctools2base/include/feedback.inc]








[keywords mail mail email smtp mime tls \
     {rfc 821} {rfc 822} {rfc 2821} {rfc 3207} {rfc 2554} internet net]
[manpage_end]

Changes to modules/multiplexer/multiplexer.man.

1
2
3


4
5
6
7
8
9
10
[comment {-*- tcl -*- doctools manpage}]
[comment { $Id: multiplexer.man,v 1.11 2009/01/29 06:16:20 andreas_kupries Exp $ }]
[manpage_begin multiplexer n 0.2]


[moddesc   {One-to-many communication with sockets.}]
[titledesc {One-to-many communication with sockets.}]
[category  {Programming tools}]
[require Tcl 8.2]
[require logger]
[require multiplexer [opt 0.2]]
[description]



>
>







1
2
3
4
5
6
7
8
9
10
11
12
[comment {-*- tcl -*- doctools manpage}]
[comment { $Id: multiplexer.man,v 1.11 2009/01/29 06:16:20 andreas_kupries Exp $ }]
[manpage_begin multiplexer n 0.2]
[keywords chat]
[keywords multiplexer]
[moddesc   {One-to-many communication with sockets.}]
[titledesc {One-to-many communication with sockets.}]
[category  {Programming tools}]
[require Tcl 8.2]
[require logger]
[require multiplexer [opt 0.2]]
[description]
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
warn, error, critical).

[list_end]

[call [cmd \${multiplexer_instance}::AddFilter] [arg cmdprefix]]

Command to add a filter for data that passes through the multiplexer
instance. 

The registered [arg cmdprefix] is called when data arrives at a
multiplexer instance. If there is more than one filter command
registered at the instance they will be called in the order of
registristation, and each filter will get the result of the preceding
filter as its argument. The first filter gets the incoming data as its
argument. The result returned by the last filter is the data which
will be broadcast to all clients of the multiplexer instance.

The command prefix is called as

[list_begin definitions]
[call [cmd cmdprefix] [arg data] [arg chan] [arg clientaddress] [arg clientport]]

Takes the incoming [arg data], modifies it, and returns that as its
result. The last three arguments contain information about the client
which sent the data to filter: The channel connecting us to the
client, its ip-address, and its ip-port.

[list_end]


[call [cmd \${multiplexer_instance}::AddAccessFilter] [arg cmdprefix]]

Command to add an access filter.

The registered [arg cmdprefix] is called when a new client socket
tries to connect to the multixer instance. If there is more than one







|




















<







54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81

82
83
84
85
86
87
88
warn, error, critical).

[list_end]

[call [cmd \${multiplexer_instance}::AddFilter] [arg cmdprefix]]

Command to add a filter for data that passes through the multiplexer
instance.

The registered [arg cmdprefix] is called when data arrives at a
multiplexer instance. If there is more than one filter command
registered at the instance they will be called in the order of
registristation, and each filter will get the result of the preceding
filter as its argument. The first filter gets the incoming data as its
argument. The result returned by the last filter is the data which
will be broadcast to all clients of the multiplexer instance.

The command prefix is called as

[list_begin definitions]
[call [cmd cmdprefix] [arg data] [arg chan] [arg clientaddress] [arg clientport]]

Takes the incoming [arg data], modifies it, and returns that as its
result. The last three arguments contain information about the client
which sent the data to filter: The channel connecting us to the
client, its ip-address, and its ip-port.

[list_end]


[call [cmd \${multiplexer_instance}::AddAccessFilter] [arg cmdprefix]]

Command to add an access filter.

The registered [arg cmdprefix] is called when a new client socket
tries to connect to the multixer instance. If there is more than one
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112

The arguments contain information about the client which tries to
connected to the instance: The channel connecting us to the client,
its ip-address, and its ip-port.

[list_end]


[call [cmd \${multiplexer_instance}::AddExitFilter] [arg cmdprefix]]

Adds filter to be run when client socket generates an EOF condition.

The registered [arg cmdprefix] is called when a client socket of the
multixer signals EOF. If there is more than one exit filter command
registered at the instance they will be called in the order of







<







99
100
101
102
103
104
105

106
107
108
109
110
111
112

The arguments contain information about the client which tries to
connected to the instance: The channel connecting us to the client,
its ip-address, and its ip-port.

[list_end]


[call [cmd \${multiplexer_instance}::AddExitFilter] [arg cmdprefix]]

Adds filter to be run when client socket generates an EOF condition.

The registered [arg cmdprefix] is called when a client socket of the
multixer signals EOF. If there is more than one exit filter command
registered at the instance they will be called in the order of
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
The arguments contain information about the client which signaled the
EOF: The channel connecting us to the client, its ip-address, and its
ip-port.

[list_end]
[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph multiplexer] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords multiplexer chat]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<

121
122
123
124
125
126
127

128


129








130
The arguments contain information about the client which signaled the
EOF: The channel connecting us to the client, its ip-address, and its
ip-port.

[list_end]
[list_end]


[vset CATEGORY multiplexer]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/namespacex/namespacex.man.

1
2







3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin namespacex n 0.1]







[copyright {200? Neil Madden (http://wiki.tcl.tk/12790)}]
[copyright {200? Various (http://wiki.tcl.tk/1489)}]
[copyright {2010 Documentation, Andreas Kupries}]
[moddesc   {Namespace utility commands}]
[titledesc {Namespace utility commands}]
[require Tcl 8.5]
[require namespacex [opt 0.1]]


>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin namespacex n 0.1]
[keywords {extended namespace}]
[keywords info]
[keywords {namespace unknown}]
[keywords {namespace utilities}]
[keywords {state (de)serialization}]
[keywords {unknown hooking}]
[keywords utilities]
[copyright {200? Neil Madden (http://wiki.tcl.tk/12790)}]
[copyright {200? Various (http://wiki.tcl.tk/1489)}]
[copyright {2010 Documentation, Andreas Kupries}]
[moddesc   {Namespace utility commands}]
[titledesc {Namespace utility commands}]
[require Tcl 8.5]
[require namespacex [opt 0.1]]
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
[list_begin definitions]

[call [cmd {::namespacex hook add}]  [opt [arg namespace]] [arg cmdprefix]]
[call [cmd {::namespacex hook proc}] [opt [arg namespace]] [arg arguments] [arg body]]
[call [cmd {::namespacex hook on}]   [opt [arg namespace]] [arg guardcmdprefix] [arg actioncmdprefix]]
[call [cmd {::namespacex hook next}] [arg arg]...]


[call [cmd {::namespacex info allchildren}] [arg namespace]]

This command returns a list containing the names of all child
namespaces in the specified [arg namespace] and its children. The
names are all fully qualified.


[call [cmd {::namespacex info allvars}] [arg namespace]]

This command returns a list containing the names of all variables in
the specified [arg namespace] and its children. The names are all
relative to [arg namespace], and [emph not] fully qualified.


[call [cmd {::namespacex info vars}] [arg namespace] [opt [arg pattern]]]

This command returns a list containing the names of all variables in
the specified [arg namespace].


[call [cmd {::namespacex state get}] [arg namespace]]

This command returns a dictionary holding the names and values of all
variables in the specified [arg namespace] and its child namespaces.

[para]
Note that the names are all relative to [arg namespace],
and [emph not] fully qualified.


[call [cmd {::namespacex state set}] [arg namespace] [arg dict]]

This command takes a dictionary holding the names and values for a set
of variables and replaces the current state of the specified
[arg namespace] and its child namespaces with this state.

The result of the command is the empty string.


[call [cmd {::namespacex state drop}] [arg namespace]]

This command unsets all variables in the specified [arg namespace] and
its child namespaces.

The result of the command is the empty string.

[list_end]

[keywords {extended namespace} {namespace utilities} utilities {namespace unknown}]
[keywords {unknown hooking} {state (de)serialization} info]
[manpage_end]








<





<







<




<










<







<









<
<
<

<
24
25
26
27
28
29
30

31
32
33
34
35

36
37
38
39
40
41
42

43
44
45
46

47
48
49
50
51
52
53
54
55
56

57
58
59
60
61
62
63

64
65
66
67
68
69
70
71
72



73

[list_begin definitions]

[call [cmd {::namespacex hook add}]  [opt [arg namespace]] [arg cmdprefix]]
[call [cmd {::namespacex hook proc}] [opt [arg namespace]] [arg arguments] [arg body]]
[call [cmd {::namespacex hook on}]   [opt [arg namespace]] [arg guardcmdprefix] [arg actioncmdprefix]]
[call [cmd {::namespacex hook next}] [arg arg]...]


[call [cmd {::namespacex info allchildren}] [arg namespace]]

This command returns a list containing the names of all child
namespaces in the specified [arg namespace] and its children. The
names are all fully qualified.


[call [cmd {::namespacex info allvars}] [arg namespace]]

This command returns a list containing the names of all variables in
the specified [arg namespace] and its children. The names are all
relative to [arg namespace], and [emph not] fully qualified.


[call [cmd {::namespacex info vars}] [arg namespace] [opt [arg pattern]]]

This command returns a list containing the names of all variables in
the specified [arg namespace].


[call [cmd {::namespacex state get}] [arg namespace]]

This command returns a dictionary holding the names and values of all
variables in the specified [arg namespace] and its child namespaces.

[para]
Note that the names are all relative to [arg namespace],
and [emph not] fully qualified.


[call [cmd {::namespacex state set}] [arg namespace] [arg dict]]

This command takes a dictionary holding the names and values for a set
of variables and replaces the current state of the specified
[arg namespace] and its child namespaces with this state.

The result of the command is the empty string.


[call [cmd {::namespacex state drop}] [arg namespace]]

This command unsets all variables in the specified [arg namespace] and
its child namespaces.

The result of the command is the empty string.

[list_end]



[manpage_end]

Changes to modules/ncgi/ncgi.man.

1





2
3
4
5
6
7
8
[manpage_begin ncgi n 1.4.2]





[comment {-*- tcl -*- doctools manpage}]
[moddesc   {CGI Support}]
[titledesc {Procedures to manipulate CGI values.}]
[category  {CGI programming}]
[require Tcl 8.4]
[require ncgi [opt 1.4.2]]
[description]

>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
[manpage_begin ncgi n 1.4.2]
[see_also html]
[keywords CGI]
[keywords cookie]
[keywords form]
[keywords html]
[comment {-*- tcl -*- doctools manpage}]
[moddesc   {CGI Support}]
[titledesc {Procedures to manipulate CGI values.}]
[category  {CGI programming}]
[require Tcl 8.4]
[require ncgi [opt 1.4.2]]
[description]
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
servers to initialize the source of the CGI values.  Otherwise the
values are read in from the CGI environment.

[para]

The complete set of procedures is described below.


[list_begin definitions]

[call [cmd ::ncgi::cookie] [arg cookie]]

Return a list of values for [arg cookie], if any.  It is possible that
more than one cookie with the same name can be present, so this
procedure returns a list.


[call [cmd ::ncgi::decode] [arg str]]

Decode strings in www-url-encoding, which represents special
characters with a %xx sequence, where xx is the character code in hex.


[call [cmd ::ncgi::empty] [arg name]]

Returns 1 if the CGI variable [arg name] is not present or has the
empty string as its value.


[call [cmd ::ncgi::exists] [arg name]]

The return value is a boolean. It returns [const 0] if the CGI
variable [arg name] is not present, and [const 1] otherwise.


[call [cmd ::ncgi::encode] [arg string]]

Encode [arg string] into www-url-encoded format.


[call [cmd ::ncgi::header] [opt [arg type]] [arg args]]

Output the CGI header to standard output.  This emits a Content-Type:
header and additional headers based on [arg args], which is a list of
header names and header values. The [arg type] defaults to
"text/html".


[call [cmd ::ncgi::import] [arg cginame] [opt [arg tclname]]]

This creates a variable in the current scope with the value of the CGI
variable [arg cginame].  The name of the variable is [arg tclname], or
[arg cginame] if [arg tclname] is empty (default).


[call [cmd ::ncgi::importAll] [arg args]]

This imports several CGI variables as Tcl variables.  If [arg args] is
empty, then every CGI value is imported.  Otherwise each CGI variable
listed in [arg args] is imported.


[call [cmd ::ncgi::importFile] [arg cmd] [arg cginame] [opt [arg filename]]] 

This provides information about an uploaded file from a form input
field of type [const file] with name [arg cginame].  [arg cmd] can be
one of [option -server] [option -client], [option -type] or
[option -data].

[list_begin definitions]







<








<




<






<





<



<








<





<







<
|







42
43
44
45
46
47
48

49
50
51
52
53
54
55
56

57
58
59
60

61
62
63
64
65
66

67
68
69
70
71

72
73
74

75
76
77
78
79
80
81
82

83
84
85
86
87

88
89
90
91
92
93
94

95
96
97
98
99
100
101
102
servers to initialize the source of the CGI values.  Otherwise the
values are read in from the CGI environment.

[para]

The complete set of procedures is described below.


[list_begin definitions]

[call [cmd ::ncgi::cookie] [arg cookie]]

Return a list of values for [arg cookie], if any.  It is possible that
more than one cookie with the same name can be present, so this
procedure returns a list.


[call [cmd ::ncgi::decode] [arg str]]

Decode strings in www-url-encoding, which represents special
characters with a %xx sequence, where xx is the character code in hex.


[call [cmd ::ncgi::empty] [arg name]]

Returns 1 if the CGI variable [arg name] is not present or has the
empty string as its value.


[call [cmd ::ncgi::exists] [arg name]]

The return value is a boolean. It returns [const 0] if the CGI
variable [arg name] is not present, and [const 1] otherwise.


[call [cmd ::ncgi::encode] [arg string]]

Encode [arg string] into www-url-encoded format.


[call [cmd ::ncgi::header] [opt [arg type]] [arg args]]

Output the CGI header to standard output.  This emits a Content-Type:
header and additional headers based on [arg args], which is a list of
header names and header values. The [arg type] defaults to
"text/html".


[call [cmd ::ncgi::import] [arg cginame] [opt [arg tclname]]]

This creates a variable in the current scope with the value of the CGI
variable [arg cginame].  The name of the variable is [arg tclname], or
[arg cginame] if [arg tclname] is empty (default).


[call [cmd ::ncgi::importAll] [arg args]]

This imports several CGI variables as Tcl variables.  If [arg args] is
empty, then every CGI value is imported.  Otherwise each CGI variable
listed in [arg args] is imported.


[call [cmd ::ncgi::importFile] [arg cmd] [arg cginame] [opt [arg filename]]]

This provides information about an uploaded file from a form input
field of type [const file] with name [arg cginame].  [arg cmd] can be
one of [option -server] [option -client], [option -type] or
[option -data].

[list_begin definitions]
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142

writes the file contents to a local temporary file (or [arg filename]
if supplied) and returns the name of the file. The caller is
responsible for deleting this file after use.

[list_end]


[call [cmd ::ncgi::input] [opt [arg fakeinput]] [opt [arg fakecookie]]]

This reads and decodes the CGI values from the environment.  It
restricts repeated form values to have a trailing "List" in their
name.  The CGI values are obtained later with the [cmd ::ncgi::value]
procedure.


[call [cmd ::ncgi::multipart] [arg {type query}]]

This procedure parses a multipart/form-data [arg query].  This is used
by [cmd ::ncgi::nvlist] and not normally called directly.  It returns
an alternating list of names and structured values.  Each structure
value is in turn a list of two elements.  The first element is







<






<







117
118
119
120
121
122
123

124
125
126
127
128
129

130
131
132
133
134
135
136

writes the file contents to a local temporary file (or [arg filename]
if supplied) and returns the name of the file. The caller is
responsible for deleting this file after use.

[list_end]


[call [cmd ::ncgi::input] [opt [arg fakeinput]] [opt [arg fakecookie]]]

This reads and decodes the CGI values from the environment.  It
restricts repeated form values to have a trailing "List" in their
name.  The CGI values are obtained later with the [cmd ::ncgi::value]
procedure.


[call [cmd ::ncgi::multipart] [arg {type query}]]

This procedure parses a multipart/form-data [arg query].  This is used
by [cmd ::ncgi::nvlist] and not normally called directly.  It returns
an alternating list of names and structured values.  Each structure
value is in turn a list of two elements.  The first element is
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
The [arg type] is the whole Content-Type, including the parameters
like [arg boundary].  This returns a list of names and values that
describe the multipart data.  The values are a nested list structure
that has some descriptive information first, and the actual form value
second.  The descriptive information is list of header names and
values that describe the content.


[call [cmd ::ncgi::nvlist]]

This returns all the query data as a name, value list.  In the case of
multipart/form-data, the values are structured as described in

[cmd ::ncgi::multipart].


[call [cmd ::ncgi::names]]

This returns all names found in the query data, as a list.

[cmd ::ncgi::multipart].


[call [cmd ::ncgi::parse]]

This reads and decodes the CGI values from the environment.  The CGI
values are obtained later with the [cmd ::ncgi::value] procedure.  IF
a CGI value is repeated, then you should use [cmd ::ncgi::valueList]
to get the complete list of values.


[call [cmd ::ncgi::parseMimeValue] [arg value]]

This decodes the Content-Type and other MIME headers that have the
form of "primary value; param=val; p2=v2" It returns a list, where the
first element is the primary value, and the second element is a list
of parameter names and values.


[call [cmd ::ncgi::query]]

This returns the raw query data.


[call [cmd ::ncgi::redirect] [arg url]]

Generate a response that causes a 302 redirect by the Web server.  The
[arg url] is the new URL that is the target of the redirect.  The URL
will be qualified with the current server and current directory, if
necessary, to convert it into a full URL.


[call [cmd ::ncgi::reset] [arg {query type}]]

Set the query data and Content-Type for the current CGI session.  This
is used by the test suite and by Web servers to initialize the ncgi
module so it does not try to read standard input or use environment
variables to get its data.  If neither [arg query] or [arg type] are
specified, then the [package ncgi] module will look in the standard
CGI environment for its data.


[call [cmd ::ncgi::setCookie] [arg args]]

Set a cookie value that will be returned as part of the reply.  This
must be done before [cmd ::ncgi::header] or [cmd ::ncgi::redirect] is
called in order for the cookie to be returned properly.  The

[arg args] are a set of flags and values:

[list_begin definitions]

[def "[option -name] [arg name]"]
[def "[option -value] [arg value]"]
[def "[option -expires] [arg date]"]
[def "[option -path] [arg {path restriction}]"]
[def "[option -domain] [arg {domain restriction}]"]
[list_end]


[call [cmd ::ncgi::setDefaultValue] [arg {key defvalue}]]

Set a CGI value if it does not already exists.  This affects future
calls to [cmd ::ncgi::value] (but not future calls to

[cmd ::ncgi::nvlist]).  If the CGI value already is present, then this
procedure has no side effects.


[call [cmd ::ncgi::setDefaultValueList] [arg {key defvaluelist}]]

Like [cmd ::ncgi::setDefaultValue] except that the value already has
list structure to represent multiple checkboxes or a multi-selection.


[call [cmd ::ncgi::setValue] [arg {key value}]]

Set a CGI value, overriding whatever was present in the CGI
environment already.  This affects future calls to [cmd ::ncgi::value]
(but not future calls to [cmd ::ncgi::nvlist]).

[call [cmd ::ncgi::setValueList] [arg {key valuelist}]]

Like [cmd ::ncgi::setValue] except that the value already has list
structure to represent multiple checkboxes or a multi-selection.


[call [cmd ::ncgi::type]]

Returns the Content-Type of the current CGI values.


[call [cmd ::ncgi::urlStub] [opt [arg url]]]

Returns the current URL, but without the protocol, server, and port.
If [arg url] is specified, then it defines the URL for the current
session.  That value will be returned by future calls to

[cmd ::ncgi::urlStub]


[call [cmd ::ncgi::value] [arg key] [opt [arg default]]]

Return the CGI value identified by [arg key].  If the CGI value is not
present, then the [arg default] value is returned instead. This value
defaults to the empty string.

[para]

If the form value [arg key] is repeated, then there are two cases: if
[cmd ::ncgi::parse] was called, then [cmd ::ncgi::value] only returns
the first value associated with [arg key].  If [cmd ::ncgi::input] was
called, then [cmd ::ncgi::value] returns a Tcl list value and

[arg key] must end in "List" (e.g., "skuList").  In the case of
multipart/form-data, this procedure just returns the value of the form
element.  If you want the meta-data associated with each form value,
then use [cmd ::ncgi::valueList].


[call [cmd ::ncgi::valueList] [arg key] [opt [arg default]]]

Like [cmd ::ncgi::value], but this always returns a list of values
(even if there is only one value).  In the case of
multipart/form-data, this procedure returns a list of two elements.
The first element is meta-data in the form of a parameter, value list.







<







<





<








<







<



<







<









<


















<








<




<












<



<








<


















<







144
145
146
147
148
149
150

151
152
153
154
155
156
157

158
159
160
161
162

163
164
165
166
167
168
169
170

171
172
173
174
175
176
177

178
179
180

181
182
183
184
185
186
187

188
189
190
191
192
193
194
195
196

197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214

215
216
217
218
219
220
221
222

223
224
225
226

227
228
229
230
231
232
233
234
235
236
237
238

239
240
241

242
243
244
245
246
247
248
249

250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267

268
269
270
271
272
273
274
The [arg type] is the whole Content-Type, including the parameters
like [arg boundary].  This returns a list of names and values that
describe the multipart data.  The values are a nested list structure
that has some descriptive information first, and the actual form value
second.  The descriptive information is list of header names and
values that describe the content.


[call [cmd ::ncgi::nvlist]]

This returns all the query data as a name, value list.  In the case of
multipart/form-data, the values are structured as described in

[cmd ::ncgi::multipart].


[call [cmd ::ncgi::names]]

This returns all names found in the query data, as a list.

[cmd ::ncgi::multipart].


[call [cmd ::ncgi::parse]]

This reads and decodes the CGI values from the environment.  The CGI
values are obtained later with the [cmd ::ncgi::value] procedure.  IF
a CGI value is repeated, then you should use [cmd ::ncgi::valueList]
to get the complete list of values.


[call [cmd ::ncgi::parseMimeValue] [arg value]]

This decodes the Content-Type and other MIME headers that have the
form of "primary value; param=val; p2=v2" It returns a list, where the
first element is the primary value, and the second element is a list
of parameter names and values.


[call [cmd ::ncgi::query]]

This returns the raw query data.


[call [cmd ::ncgi::redirect] [arg url]]

Generate a response that causes a 302 redirect by the Web server.  The
[arg url] is the new URL that is the target of the redirect.  The URL
will be qualified with the current server and current directory, if
necessary, to convert it into a full URL.


[call [cmd ::ncgi::reset] [arg {query type}]]

Set the query data and Content-Type for the current CGI session.  This
is used by the test suite and by Web servers to initialize the ncgi
module so it does not try to read standard input or use environment
variables to get its data.  If neither [arg query] or [arg type] are
specified, then the [package ncgi] module will look in the standard
CGI environment for its data.


[call [cmd ::ncgi::setCookie] [arg args]]

Set a cookie value that will be returned as part of the reply.  This
must be done before [cmd ::ncgi::header] or [cmd ::ncgi::redirect] is
called in order for the cookie to be returned properly.  The

[arg args] are a set of flags and values:

[list_begin definitions]

[def "[option -name] [arg name]"]
[def "[option -value] [arg value]"]
[def "[option -expires] [arg date]"]
[def "[option -path] [arg {path restriction}]"]
[def "[option -domain] [arg {domain restriction}]"]
[list_end]


[call [cmd ::ncgi::setDefaultValue] [arg {key defvalue}]]

Set a CGI value if it does not already exists.  This affects future
calls to [cmd ::ncgi::value] (but not future calls to

[cmd ::ncgi::nvlist]).  If the CGI value already is present, then this
procedure has no side effects.


[call [cmd ::ncgi::setDefaultValueList] [arg {key defvaluelist}]]

Like [cmd ::ncgi::setDefaultValue] except that the value already has
list structure to represent multiple checkboxes or a multi-selection.


[call [cmd ::ncgi::setValue] [arg {key value}]]

Set a CGI value, overriding whatever was present in the CGI
environment already.  This affects future calls to [cmd ::ncgi::value]
(but not future calls to [cmd ::ncgi::nvlist]).

[call [cmd ::ncgi::setValueList] [arg {key valuelist}]]

Like [cmd ::ncgi::setValue] except that the value already has list
structure to represent multiple checkboxes or a multi-selection.


[call [cmd ::ncgi::type]]

Returns the Content-Type of the current CGI values.


[call [cmd ::ncgi::urlStub] [opt [arg url]]]

Returns the current URL, but without the protocol, server, and port.
If [arg url] is specified, then it defines the URL for the current
session.  That value will be returned by future calls to

[cmd ::ncgi::urlStub]


[call [cmd ::ncgi::value] [arg key] [opt [arg default]]]

Return the CGI value identified by [arg key].  If the CGI value is not
present, then the [arg default] value is returned instead. This value
defaults to the empty string.

[para]

If the form value [arg key] is repeated, then there are two cases: if
[cmd ::ncgi::parse] was called, then [cmd ::ncgi::value] only returns
the first value associated with [arg key].  If [cmd ::ncgi::input] was
called, then [cmd ::ncgi::value] returns a Tcl list value and

[arg key] must end in "List" (e.g., "skuList").  In the case of
multipart/form-data, this procedure just returns the value of the form
element.  If you want the meta-data associated with each form value,
then use [cmd ::ncgi::valueList].


[call [cmd ::ncgi::valueList] [arg key] [opt [arg default]]]

Like [cmd ::ncgi::value], but this always returns a list of values
(even if there is only one value).  In the case of
multipart/form-data, this procedure returns a list of two elements.
The first element is meta-data in the form of a parameter, value list.
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
set fh [open $filename w]
puts -nonewline $fh $filedata
close $fh
}]

[para]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph ncgi] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also html]
[keywords CGI form html cookie]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<
<

303
304
305
306
307
308
309

310


311









312
set fh [open $filename w]
puts -nonewline $fh $filedata
close $fh
}]

[para]


[vset CATEGORY ncgi]


[include ../doctools2base/include/feedback.inc]









[manpage_end]

Changes to modules/nmea/nmea.man.

1


2
3
4
5
6
7
8
[manpage_begin nmea n 1.0.0]


[copyright {2006-2009, Aaron Faupell <[email protected]>}]
[moddesc   {NMEA protocol implementation}]
[titledesc {Process NMEA data}]
[category Networking]
[require Tcl 8.4]
[require nmea [opt 1.0.0]]
[description]

>
>







1
2
3
4
5
6
7
8
9
10
[manpage_begin nmea n 1.0.0]
[keywords gps]
[keywords nmea]
[copyright {2006-2009, Aaron Faupell <[email protected]>}]
[moddesc   {NMEA protocol implementation}]
[titledesc {Process NMEA data}]
[category Networking]
[require Tcl 8.4]
[require nmea [opt 1.0.0]]
[description]
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
consistant across files, there does not need to be a file currently open to use this command.
Set to 0 to disable automatic line processing.

[call [cmd ::nmea::log] [opt file]]
Starts or stops input logging. If a file name is specified then all NMEA data recieved on
the open port will be logged to the [opt file] in append mode. If file is an empty string then
any logging will be stopped. If no file is specified then returns a boolean value indicating
if logging is currently enabled. Data written to the port by [cmd write], 
 data read from files, or input made using [cmd input], is not logged.

[call [cmd ::nmea::checksum] [arg data]]
Returns the checksum of the supplied data.

[call [cmd ::nmea::write] [arg sentence] [arg data]]
If there is a currently open port, this command will write the specified sentence and data to the port
in proper NMEA checksummed format.

[call [cmd ::nmea::event] [arg setence] [opt command]]
Registers a handler proc for a given NMEA [arg sentence]. There may be at most one handler per
sentence, any existing handler is replaced.  
If no command is specified, returns the name of the current handler for the given [arg setence]
or an empty string if none exists. In addition to the incoming sentences there are 2 builtin types,
EOF and DEFAULT. The handler for the DEFAULT setence is invoked if there is not a specific handler
for that sentence. The EOF handler is invoked when End Of File is reached on the open file or port.
[para]
The handler procedures, with the exception of the builtin types,must take exactly one argument,
which is a list of the data values.







|











|







55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
consistant across files, there does not need to be a file currently open to use this command.
Set to 0 to disable automatic line processing.

[call [cmd ::nmea::log] [opt file]]
Starts or stops input logging. If a file name is specified then all NMEA data recieved on
the open port will be logged to the [opt file] in append mode. If file is an empty string then
any logging will be stopped. If no file is specified then returns a boolean value indicating
if logging is currently enabled. Data written to the port by [cmd write],
 data read from files, or input made using [cmd input], is not logged.

[call [cmd ::nmea::checksum] [arg data]]
Returns the checksum of the supplied data.

[call [cmd ::nmea::write] [arg sentence] [arg data]]
If there is a currently open port, this command will write the specified sentence and data to the port
in proper NMEA checksummed format.

[call [cmd ::nmea::event] [arg setence] [opt command]]
Registers a handler proc for a given NMEA [arg sentence]. There may be at most one handler per
sentence, any existing handler is replaced.
If no command is specified, returns the name of the current handler for the given [arg setence]
or an empty string if none exists. In addition to the incoming sentences there are 2 builtin types,
EOF and DEFAULT. The handler for the DEFAULT setence is invoked if there is not a specific handler
for that sentence. The EOF handler is invoked when End Of File is reached on the open file or port.
[para]
The handler procedures, with the exception of the builtin types,must take exactly one argument,
which is a list of the data values.
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
proc handle_unknown {name data} {
    puts "unknown data type $name"
}
}]

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph nmea] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords nmea gps]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<

93
94
95
96
97
98
99

100


101








102
proc handle_unknown {name data} {
    puts "unknown data type $name"
}
}]

[list_end]


[vset CATEGORY nmea]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/nns/nns_auto.man.

1






2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[manpage_begin nameserv::auto n 0.3]






[copyright {2007-2008 Andreas Kupries <[email protected]>}]
[moddesc   {Name service facility}]
[titledesc {Name service facility, Client Extension}]
[category  Networking]
[require Tcl 8.4]
[require nameserv::auto [opt 0.3]]
[require nameserv]
[keywords {name service} client restore reconnect automatic]
[see_also nameserv(n)]
[description]

Please read the document [term {Name service facility, introduction}]
first.

[para]


>
>
>
>
>
>







<
<







1
2
3
4
5
6
7
8
9
10
11
12
13
14


15
16
17
18
19
20
21
[manpage_begin nameserv::auto n 0.3]
[see_also nameserv(n)]
[keywords automatic]
[keywords client]
[keywords {name service}]
[keywords reconnect]
[keywords restore]
[copyright {2007-2008 Andreas Kupries <[email protected]>}]
[moddesc   {Name service facility}]
[titledesc {Name service facility, Client Extension}]
[category  Networking]
[require Tcl 8.4]
[require nameserv::auto [opt 0.3]]
[require nameserv]


[description]

Please read the document [term {Name service facility, introduction}]
first.

[para]

28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
searches are remembered client-side and automatically re-entered into
the server when the connection comes back after its loss. For bound
names there is one important limitation to such restoration: It is
possible that a name of this client was bound by a different client
while the connection was gone. Such names are fully lost, and the best
the package can and will do is to inform the user of this.


[section API]

The user-visible API is mainly identical the API of [package nameserv]
and is therefore not described here. Please read the documentation of
[package nameserv].

[para]

The differences are explained in the sections [sectref OPTIONS] and
[sectref EVENTS].


[section OPTIONS]

This package supports all the option of package [package nameserv],
and one more. The additional option allows the user to specifies the
time interval between attempts to restore a lost connection.

[list_begin options]
[opt_def -delay [arg milliseconds]]

The value of this option is an integer value > 0 which specifies the
interval to wait between attempts to restore a lost connection, in
milliseconds. The default value is [const 1000], i.e. one second.

[list_end]


[section EVENTS]

This package generates all of the events of package [package nameserv],
and two more. Both events are generated for the tag [term nameserv].

[list_begin definitions]







<










<















<







32
33
34
35
36
37
38

39
40
41
42
43
44
45
46
47
48

49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

64
65
66
67
68
69
70
searches are remembered client-side and automatically re-entered into
the server when the connection comes back after its loss. For bound
names there is one important limitation to such restoration: It is
possible that a name of this client was bound by a different client
while the connection was gone. Such names are fully lost, and the best
the package can and will do is to inform the user of this.


[section API]

The user-visible API is mainly identical the API of [package nameserv]
and is therefore not described here. Please read the documentation of
[package nameserv].

[para]

The differences are explained in the sections [sectref OPTIONS] and
[sectref EVENTS].


[section OPTIONS]

This package supports all the option of package [package nameserv],
and one more. The additional option allows the user to specifies the
time interval between attempts to restore a lost connection.

[list_begin options]
[opt_def -delay [arg milliseconds]]

The value of this option is an integer value > 0 which specifies the
interval to wait between attempts to restore a lost connection, in
milliseconds. The default value is [const 1000], i.e. one second.

[list_end]


[section EVENTS]

This package generates all of the events of package [package nameserv],
and two more. Both events are generated for the tag [term nameserv].

[list_begin definitions]
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102

[para]

The event has no detail information.

[list_end]


[section DESIGN]

The package is implemented on top of the regular nameservice client,
i.e.  package [package nameserv]. It detects the loss of the
connection by listening for [term lost-connection] events, on the tag
[term nameserv].








<







89
90
91
92
93
94
95

96
97
98
99
100
101
102

[para]

The event has no detail information.

[list_end]


[section DESIGN]

The package is implemented on top of the regular nameservice client,
i.e.  package [package nameserv]. It detects the loss of the
connection by listening for [term lost-connection] events, on the tag
[term nameserv].

110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129

[para]

Another loss of the connection, be it during or after re-entering the
remembered information simply restarts the timer and subsequent
reconnection attempts.


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph nameserv] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<

110
111
112
113
114
115
116
117

118









119

[para]

Another loss of the connection, be it during or after re-entering the
remembered information simply restarts the timer and subsequent
reconnection attempts.

[vset CATEGORY nameserv]

[include ../doctools2base/include/feedback.inc]









[manpage_end]

Changes to modules/nns/nns_client.man.

1




2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[manpage_begin nameserv n 0.4.2]




[copyright {2007-2008 Andreas Kupries <[email protected]>}]
[moddesc   {Name service facility}]
[titledesc {Name service facility, Client}]
[category  Networking]
[require Tcl 8.4]
[require nameserv [opt 0.4.2]]
[require comm]
[require logger]
[keywords {name service} client]
[see_also nameserv::common(n)]
[see_also nameserv::server(n)]
[description]

Please read [term {Name service facility, introduction}] first.

[para]

This package provides a client for the name service facility

>
>
>
>








<
<
<







1
2
3
4
5
6
7
8
9
10
11
12
13



14
15
16
17
18
19
20
[manpage_begin nameserv n 0.4.2]
[see_also nameserv::common(n)]
[see_also nameserv::server(n)]
[keywords client]
[keywords {name service}]
[copyright {2007-2008 Andreas Kupries <[email protected]>}]
[moddesc   {Name service facility}]
[titledesc {Name service facility, Client}]
[category  Networking]
[require Tcl 8.4]
[require nameserv [opt 0.4.2]]
[require comm]
[require logger]



[description]

Please read [term {Name service facility, introduction}] first.

[para]

This package provides a client for the name service facility
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
than one name, and each name can have its own piece of [arg data].

[para]

Note that the name service, and thwerefore this command, will throw an
error if the chosen name is already registered.


[call [cmd ::nameserv::release]]

Invoking this command releases all names (and their data) registered
by all previous calls to [cmd ::nameserv::bind] of this client. Note
that the name service will run this command implicitly when it loses
the connection to this client.


[call [cmd ::nameserv::search] [opt [option -async]|[option -continuous]] [opt [arg pattern]]]

This command searches the name service for all registered names
matching the specified glob-[arg pattern]. If not specified the
pattern defaults to [const *], matching everything. The result of the
command is a dictionary mapping the matching names to the data







<






<







54
55
56
57
58
59
60

61
62
63
64
65
66

67
68
69
70
71
72
73
than one name, and each name can have its own piece of [arg data].

[para]

Note that the name service, and thwerefore this command, will throw an
error if the chosen name is already registered.


[call [cmd ::nameserv::release]]

Invoking this command releases all names (and their data) registered
by all previous calls to [cmd ::nameserv::bind] of this client. Note
that the name service will run this command implicitly when it loses
the connection to this client.


[call [cmd ::nameserv::search] [opt [option -async]|[option -continuous]] [opt [arg pattern]]]

This command searches the name service for all registered names
matching the specified glob-[arg pattern]. If not specified the
pattern defaults to [const *], matching everything. The result of the
command is a dictionary mapping the matching names to the data
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
further changes) arrive.

[para]

For more information about this object see section
[sectref {ASYNCHRONOUS AND CONTINUOUS SEARCHES}].


[call [cmd ::nameserv::protocol]]

This command returns the highest version of the name service protocol
supported by the package.


[call [cmd ::nameserv::server_protocol]]

This command returns the highest version of the name service protocol
supported by the name service the client is currently connected to.


[call [cmd ::nameserv::server_features]]

This command returns a list containing the names of the features of
the name service protocol which are supported by the name service the
client is currently connected to.


[call [cmd ::nameserv::cget] [option -option]]

This command returns the currently configured value for the specified
[option -option]. The list of supported options and their meaning can
be found in section [sectref OPTIONS].

[call [cmd ::nameserv::configure]]

In this form the command returns a dictionary of all supported
options, and their current values. The list of supported options and
their meaning can be found in section [sectref OPTIONS].


[call [cmd ::nameserv::configure] [option -option]]

In this form the command is an alias for
"[cmd ::nameserv::cget] [option -option]]".

The list of supported options and their meaning can be found in
section [sectref OPTIONS].


[call [cmd ::nameserv::configure] "[option -option] [arg value]..."]

In this form the command is used to configure one or more of the
supported options. At least one option has to be specified, and each
option is followed by its new value.








<




<






<





<













<







<







101
102
103
104
105
106
107

108
109
110
111

112
113
114
115
116
117

118
119
120
121
122

123
124
125
126
127
128
129
130
131
132
133
134
135

136
137
138
139
140
141
142

143
144
145
146
147
148
149
further changes) arrive.

[para]

For more information about this object see section
[sectref {ASYNCHRONOUS AND CONTINUOUS SEARCHES}].


[call [cmd ::nameserv::protocol]]

This command returns the highest version of the name service protocol
supported by the package.


[call [cmd ::nameserv::server_protocol]]

This command returns the highest version of the name service protocol
supported by the name service the client is currently connected to.


[call [cmd ::nameserv::server_features]]

This command returns a list containing the names of the features of
the name service protocol which are supported by the name service the
client is currently connected to.


[call [cmd ::nameserv::cget] [option -option]]

This command returns the currently configured value for the specified
[option -option]. The list of supported options and their meaning can
be found in section [sectref OPTIONS].

[call [cmd ::nameserv::configure]]

In this form the command returns a dictionary of all supported
options, and their current values. The list of supported options and
their meaning can be found in section [sectref OPTIONS].


[call [cmd ::nameserv::configure] [option -option]]

In this form the command is an alias for
"[cmd ::nameserv::cget] [option -option]]".

The list of supported options and their meaning can be found in
section [sectref OPTIONS].


[call [cmd ::nameserv::configure] "[option -option] [arg value]..."]

In this form the command is used to configure one or more of the
supported options. At least one option has to be specified, and each
option is followed by its new value.

170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
[cmd_def bind]
[cmd_def release]
[cmd_def search]
[cmd_def server_protocol]
[cmd_def server_features]
[list_end]
[list_end]


[section {CONNECTION HANDLING}]

The client automatically connects to the service when one of the
commands below is run for the first time, or whenever one of the
commands is run after the connection was lost, when it was lost.








<







163
164
165
166
167
168
169

170
171
172
173
174
175
176
[cmd_def bind]
[cmd_def release]
[cmd_def search]
[cmd_def server_protocol]
[cmd_def server_features]
[list_end]
[list_end]


[section {CONNECTION HANDLING}]

The client automatically connects to the service when one of the
commands below is run for the first time, or whenever one of the
commands is run after the connection was lost, when it was lost.

205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
detail information provided to that event is a Tcl dictionary. The
only key contained in the dictionnary is [const reason], and its value
will be a string describing why the connection was lost.

This string is supplied by the underlying communication package,
i.e. [package comm].


[section OPTIONS]

The options supported by the client are for the specification of which
name service to contact, i.e. of the location of the name service.

They are:

[list_begin options]
[opt_def -host [arg name]|[arg ipaddress]]

This option specifies the host name service to contact is running on,
either by [arg name], or by [arg ipaddress]. The initial default is
[const localhost], i.e. it is expected to contact a name service
running on the same host as the application using this package.


[opt_def -port [arg number]]

This option specifies the port the name service to contact is
listening on. It has to be a positive integer number (> 0) not greater
than 65536 (unsigned short). The initial default is the number
returned by the command [cmd ::nameserv::common::port], as provided by
the package [package ::nameserv::common].

[list_end]


[section {ASYNCHRONOUS AND CONTINUOUS SEARCHES}]

Asynchronous and continuous searches are invoked by using either
option [option -async] or [option -continuous] as argument to the
command [cmd ::nameserv::search].








<















<









<







197
198
199
200
201
202
203

204
205
206
207
208
209
210
211
212
213
214
215
216
217
218

219
220
221
222
223
224
225
226
227

228
229
230
231
232
233
234
detail information provided to that event is a Tcl dictionary. The
only key contained in the dictionnary is [const reason], and its value
will be a string describing why the connection was lost.

This string is supplied by the underlying communication package,
i.e. [package comm].


[section OPTIONS]

The options supported by the client are for the specification of which
name service to contact, i.e. of the location of the name service.

They are:

[list_begin options]
[opt_def -host [arg name]|[arg ipaddress]]

This option specifies the host name service to contact is running on,
either by [arg name], or by [arg ipaddress]. The initial default is
[const localhost], i.e. it is expected to contact a name service
running on the same host as the application using this package.


[opt_def -port [arg number]]

This option specifies the port the name service to contact is
listening on. It has to be a positive integer number (> 0) not greater
than 65536 (unsigned short). The initial default is the number
returned by the command [cmd ::nameserv::common::port], as provided by
the package [package ::nameserv::common].

[list_end]


[section {ASYNCHRONOUS AND CONTINUOUS SEARCHES}]

Asynchronous and continuous searches are invoked by using either
option [option -async] or [option -continuous] as argument to the
command [cmd ::nameserv::search].

294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
[list_begin definitions]

[call [cmd \$result] [method destroy]]

Destroys the object and cancels any continuous monitoring of the
service the object may have had active.


[call [cmd \$result] [method filled]]

The result is a boolean value indicating whether the search result has
already arrived ([const True]), or not ([const False]).

[call [cmd \$result] [method get] [arg name]]








<







283
284
285
286
287
288
289

290
291
292
293
294
295
296
[list_begin definitions]

[call [cmd \$result] [method destroy]]

Destroys the object and cancels any continuous monitoring of the
service the object may have had active.


[call [cmd \$result] [method filled]]

The result is a boolean value indicating whether the search result has
already arrived ([const True]), or not ([const False]).

[call [cmd \$result] [method get] [arg name]]

324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
Returns a dictionary containing the search result at the time of the
invokation, mapping the matching names to the data associated with
them at [term bind]-time.

[list_end]
[list_end]


[section HISTORY]
[list_begin definitions]
[def 0.3.1]
Fixed SF Bug 1954771.

[def 0.3]
Extended the client with the ability to perform asynchronous and
continuous searches.

[def 0.2]
Extended the client with the ability to generate events when it loses
its connection to the name service. Based on package [package uevent].

[def 0.1]
Initial implementation of the client.
[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph nameserv] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]







<

















<
|
<
<
|
<
<
<
<
<
<

312
313
314
315
316
317
318

319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335

336


337






338
Returns a dictionary containing the search result at the time of the
invokation, mapping the matching names to the data associated with
them at [term bind]-time.

[list_end]
[list_end]


[section HISTORY]
[list_begin definitions]
[def 0.3.1]
Fixed SF Bug 1954771.

[def 0.3]
Extended the client with the ability to perform asynchronous and
continuous searches.

[def 0.2]
Extended the client with the ability to generate events when it loses
its connection to the name service. Based on package [package uevent].

[def 0.1]
Initial implementation of the client.
[list_end]


[vset CATEGORY nameserv]


[include ../doctools2base/include/feedback.inc]






[manpage_end]

Changes to modules/nns/nns_common.man.

1





2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[manpage_begin nameserv::common n 0.1]





[copyright {2007-2008 Andreas Kupries <[email protected]>}]
[moddesc   {Name service facility}]
[titledesc {Name service facility, shared definitions}]
[category  Networking]
[require Tcl 8]
[require nameserv::common [opt 0.1]]
[keywords {name service} client server]
[see_also nameserv::client(n)]
[see_also nameserv::server(n)]
[description]

Please read [term {Name service facility, introduction}] first.

[para]

This package is internal and of no interest to users. It provides the

>
>
>
>
>






<
<
<







1
2
3
4
5
6
7
8
9
10
11
12



13
14
15
16
17
18
19
[manpage_begin nameserv::common n 0.1]
[see_also nameserv::client(n)]
[see_also nameserv::server(n)]
[keywords client]
[keywords {name service}]
[keywords server]
[copyright {2007-2008 Andreas Kupries <[email protected]>}]
[moddesc   {Name service facility}]
[titledesc {Name service facility, shared definitions}]
[category  Networking]
[require Tcl 8]
[require nameserv::common [opt 0.1]]



[description]

Please read [term {Name service facility, introduction}] first.

[para]

This package is internal and of no interest to users. It provides the
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54

The result returned by the command is the id of the default TCP/IP
port a nameservice server will listen on, and a name service client
will try to connect to.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph nameserv] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]







<
|
<
<
|
<
<
<
<
<
<

38
39
40
41
42
43
44

45


46






47

The result returned by the command is the id of the default TCP/IP
port a nameservice server will listen on, and a name service client
will try to connect to.

[list_end]


[vset CATEGORY nameserv]


[include ../doctools2base/include/feedback.inc]






[manpage_end]

Changes to modules/nns/nns_intro.man.

1
2










3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin nns_intro n 1.0]










[copyright {2008 Andreas Kupries <[email protected]>}]
[moddesc   {Name service facility}]
[titledesc {Name service facility, introduction}]
[category  Networking]
[description]
[para]



>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin nns_intro n 1.0]
[see_also nameserv(n)]
[see_also nameserv::auto(n)]
[see_also nameserv::common(n)]
[see_also nameserv::protocol(n)]
[see_also nameserv::server(n)]
[see_also nnsd(n)]
[see_also nss(n)]
[keywords client]
[keywords {name service}]
[keywords server]
[copyright {2008 Andreas Kupries <[email protected]>}]
[moddesc   {Name service facility}]
[titledesc {Name service facility, introduction}]
[category  Networking]
[description]
[para]

20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
the packages [package dns] and [package resolv], both found in Tcllib
too.

[para]

Tcllib provides 2 applications and 4 packages which are working
together and provide access to the facility at different levels.


[section Applications]

The application [syscmd nnsd] provides a simple name server which can
be run by anybody anywhere on their system, as they see fit.

It is also an example on the use of the server-side package







<







30
31
32
33
34
35
36

37
38
39
40
41
42
43
the packages [package dns] and [package resolv], both found in Tcllib
too.

[para]

Tcllib provides 2 applications and 4 packages which are working
together and provide access to the facility at different levels.


[section Applications]

The application [syscmd nnsd] provides a simple name server which can
be run by anybody anywhere on their system, as they see fit.

It is also an example on the use of the server-side package
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
[syscmd nns] client application. It is reduced to perform a continuous
search for all changes and logs all received events to stdout.

[para]

Both clients use the [package nameserv::auto] package to automatically
hande the loss and restoration of the connection to the server.


[section Packages]

The two main packages implementing the service are [package nameserv]
and [package nameserv::server], i.e. client and server. The latter has
not much of an API, just enough to start, stop, and configure it. See
the application [syscmd nnsd] on how to use it.







<







70
71
72
73
74
75
76

77
78
79
80
81
82
83
[syscmd nns] client application. It is reduced to perform a continuous
search for all changes and logs all received events to stdout.

[para]

Both clients use the [package nameserv::auto] package to automatically
hande the loss and restoration of the connection to the server.


[section Packages]

The two main packages implementing the service are [package nameserv]
and [package nameserv::server], i.e. client and server. The latter has
not much of an API, just enough to start, stop, and configure it. See
the application [syscmd nnsd] on how to use it.
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140

[para]

Developers wishing to modify and/or extend or to just understand the
internals of the nameservice facility however are strongly advised to
read it.


[section {Bugs, Ideas, Feedback}]

This document, will undoubtedly contain bugs and other problems.

Please report such in the category [emph nameserv] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

Please also report any ideas for enhancements you may have.


[keywords {name service} client server]
[see_also nnsd(n)]
[see_also nss(n)]
[see_also nameserv(n)]
[see_also nameserv::server(n)]
[see_also nameserv::common(n)]
[see_also nameserv::auto(n)]
[see_also nameserv::protocol(n)]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<

119
120
121
122
123
124
125
126

127



















128

[para]

Developers wishing to modify and/or extend or to just understand the
internals of the nameservice facility however are strongly advised to
read it.

[vset CATEGORY nameserv]

[include ../doctools2base/include/feedback.inc]



















[manpage_end]

Changes to modules/nns/nns_protocol.man.

1






2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[manpage_begin nameserv::protocol n 0.1]






[copyright {2007-2008 Andreas Kupries <[email protected]>}]
[moddesc   {Name service facility}]
[titledesc {Name service facility, client/server protocol}]
[category  Networking]
[keywords comm {name service} protocol]
[see_also nameserv::server(n)]
[see_also nameserv(n)]
[see_also comm_wire(n)]
[description]

The packages [package nameserv::server], [package nameserv], and
[package nameserv::common] provide a simple unprotected name service
facility for use in small trusted environments.

[para]

Please read [term {Name service facility, introduction}] first.

[para]

This document contains the specification of the network protocol which
is used by client and server to talk to each other, enabling
implementations of the same protocol in other languages.


[section {Nano Name Service Protocol Version 1}]

This protocol defines the basic set of messages to be supported by a
name service, also called the [term Core] feature.

[subsection {Basic Layer}]

>
>
>
>
>
>




<
<
<
<















<







1
2
3
4
5
6
7
8
9
10
11




12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

27
28
29
30
31
32
33
[manpage_begin nameserv::protocol n 0.1]
[see_also comm_wire(n)]
[see_also nameserv(n)]
[see_also nameserv::server(n)]
[keywords comm]
[keywords {name service}]
[keywords protocol]
[copyright {2007-2008 Andreas Kupries <[email protected]>}]
[moddesc   {Name service facility}]
[titledesc {Name service facility, client/server protocol}]
[category  Networking]




[description]

The packages [package nameserv::server], [package nameserv], and
[package nameserv::common] provide a simple unprotected name service
facility for use in small trusted environments.

[para]

Please read [term {Name service facility, introduction}] first.

[para]

This document contains the specification of the network protocol which
is used by client and server to talk to each other, enabling
implementations of the same protocol in other languages.


[section {Nano Name Service Protocol Version 1}]

This protocol defines the basic set of messages to be supported by a
name service, also called the [term Core] feature.

[subsection {Basic Layer}]
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116

[para]

The protocol is synchronous. I.e. for each message sent a response is
expected, and has to be generated. All messages are sent by the client.
The server does not sent messages, only responses to messages.


[subsection {Message Layer}]

[list_begin definitions]

[call [method Bind] [arg name] [arg data]]

The client sends this message when it registers itself at the service
with a [arg name] and some associated [arg data]. The server has to
send an error response if the [arg name] is already in use. Otherwise
the response has to be an empty string.

[para]

The server has to accept multiple names for the same client.

[call [method Release]]

The client sends this message to unregister all names it is known
under at the service. The response has to be an empty string, always.


[call [method Search] [arg pattern]]

The client sends this message to search the service for names matching
the glob-[arg pattern]. The response has to be a dictionary containing
the matching names as keys, and mapping them to the data associated
with it at [method Bind]-time.


[call [method ProtocolVersion]]

The client sends this message to query the service for the highest
version of the name service protocol it supports. The response has to
be a positive integer number.

[para]

Servers supporting only [term {Nano Name Service Protocol Version 1}]
have to return [const 1].


[call [method ProtocolFeatures]]

The client sends this message to query the service for the features of
the name service protocol it supports. The response has to be a
list containing feature names.

[para]

Servers supporting only [term {Nano Name Service Protocol Version 1}]
have to return [const {{Core}}].

[list_end]



[section {Nano Name Service Protocol Extension: Continuous Search}]

This protocol defines an extended set of messages to be supported by a
name service, also called the [term Search/Continuous] feature. This
feature defines additional messages between client and server, and is
otherwise identical to version 1 of the protocol. See the last section







<




















<






<











<













<
<







48
49
50
51
52
53
54

55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74

75
76
77
78
79
80

81
82
83
84
85
86
87
88
89
90
91

92
93
94
95
96
97
98
99
100
101
102
103
104


105
106
107
108
109
110
111

[para]

The protocol is synchronous. I.e. for each message sent a response is
expected, and has to be generated. All messages are sent by the client.
The server does not sent messages, only responses to messages.


[subsection {Message Layer}]

[list_begin definitions]

[call [method Bind] [arg name] [arg data]]

The client sends this message when it registers itself at the service
with a [arg name] and some associated [arg data]. The server has to
send an error response if the [arg name] is already in use. Otherwise
the response has to be an empty string.

[para]

The server has to accept multiple names for the same client.

[call [method Release]]

The client sends this message to unregister all names it is known
under at the service. The response has to be an empty string, always.


[call [method Search] [arg pattern]]

The client sends this message to search the service for names matching
the glob-[arg pattern]. The response has to be a dictionary containing
the matching names as keys, and mapping them to the data associated
with it at [method Bind]-time.


[call [method ProtocolVersion]]

The client sends this message to query the service for the highest
version of the name service protocol it supports. The response has to
be a positive integer number.

[para]

Servers supporting only [term {Nano Name Service Protocol Version 1}]
have to return [const 1].


[call [method ProtocolFeatures]]

The client sends this message to query the service for the features of
the name service protocol it supports. The response has to be a
list containing feature names.

[para]

Servers supporting only [term {Nano Name Service Protocol Version 1}]
have to return [const {{Core}}].

[list_end]



[section {Nano Name Service Protocol Extension: Continuous Search}]

This protocol defines an extended set of messages to be supported by a
name service, also called the [term Search/Continuous] feature. This
feature defines additional messages between client and server, and is
otherwise identical to version 1 of the protocol. See the last section
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
distinguish between the different results.

[call [method Search/Continuous/Stop] [arg tag]]

The client sends this message to stop the continuous search identified
by the [arg tag].


[call [method Search/Continuous/Change] [arg tag] [method add]|[method remove] [arg response]]

This message is sent by the service to clients with active continuous
searches to transfer found changes. The first such message for a new
continuous search has to contains the current set of matching entries.

[para]







<







151
152
153
154
155
156
157

158
159
160
161
162
163
164
distinguish between the different results.

[call [method Search/Continuous/Stop] [arg tag]]

The client sends this message to stop the continuous search identified
by the [arg tag].


[call [method Search/Continuous/Change] [arg tag] [method add]|[method remove] [arg response]]

This message is sent by the service to clients with active continuous
searches to transfer found changes. The first such message for a new
continuous search has to contains the current set of matching entries.

[para]
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
[method Bind]-time.

The argument coming before the response tells the client whether the
names in the response were added or removed from the service.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph nameserv] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]








|
<
|
<
<
<
<
<
<
<
<
<

<
173
174
175
176
177
178
179
180

181









182

[method Bind]-time.

The argument coming before the response tells the client whether the
names in the response were added or removed from the service.

[list_end]

[vset CATEGORY nameserv]

[include ../doctools2base/include/feedback.inc]









[manpage_end]

Changes to modules/nns/nns_server.man.

1




2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[manpage_begin nameserv::server n 0.3.2]




[copyright {2007-2008 Andreas Kupries <[email protected]>}]
[moddesc   {Name service facility}]
[titledesc {Name service facility, Server}]
[category  Networking]
[require Tcl 8.4]
[require nameserv::server [opt 0.3.2]]
[require comm]
[require interp]
[require logger]
[keywords {name service} server]
[see_also nameserv::common(n)]
[see_also nameserv::client(n)]
[description]

Please read [term {Name service facility, introduction}] first.

[para]

This package provides an implementation of the serviver side of the

>
>
>
>









<
<
<







1
2
3
4
5
6
7
8
9
10
11
12
13
14



15
16
17
18
19
20
21
[manpage_begin nameserv::server n 0.3.2]
[see_also nameserv::client(n)]
[see_also nameserv::common(n)]
[keywords {name service}]
[keywords server]
[copyright {2007-2008 Andreas Kupries <[email protected]>}]
[moddesc   {Name service facility}]
[titledesc {Name service facility, Server}]
[category  Networking]
[require Tcl 8.4]
[require nameserv::server [opt 0.3.2]]
[require comm]
[require interp]
[require logger]



[description]

Please read [term {Name service facility, introduction}] first.

[para]

This package provides an implementation of the serviver side of the
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
packages [package dns] and [package resolv].

[para]

This server supports the [term Core] protocol feature, and since
version 0.3 the [term Search/Continuous] feature as well.


[section API]

The package exports five commands, as specified below:

[list_begin definitions]

[call [cmd ::nameserv::server::start]]

This command starts the server and causes it to listen on the
configured port. From now on clients are able to connect and make
requests. The result of the command is the empty string.

[para]

Note that any incoming requests will only be handled if the
application the server is part of does enter an event loop after this
command has been run.


[call [cmd ::nameserv::server::stop]]

Invoking this command stops the server and releases all information it
had. Existing connections are shut down, and no new connections will
be accepted any longer. The result of the command is the empty string.


[call [cmd ::nameserv::server::active?]]

This command returns a boolean value indicating the state of the
server. The result will be [const true] if the server is active,
i.e. has been started, and [const false] otherwise.


[call [cmd ::nameserv::server::cget] [option -option]]

This command returns the currently configured value for the specified
[option -option]. The list of supported options and their meaning can
be found in section [sectref OPTIONS].

[call [cmd ::nameserv::server::configure]]

In this form the command returns a dictionary of all supported
options, and their current values. The list of supported options and
their meaning can be found in section [sectref OPTIONS].


[call [cmd ::nameserv::server::configure] [option -option]]

In this form the command is an alias for
"[cmd ::nameserv::server::cget] [option -option]]".

The list of supported options and their meaning can be found in
section [sectref OPTIONS].


[call [cmd ::nameserv::server::configure] "[option -option] [arg value]..."]

In this form the command is used to configure one or more of the
supported options. At least one option has to be specified, and each
option is followed by its new value.

The list of supported options and their meaning can be found in
section [sectref OPTIONS].

[para]

This form can be used only if the server is not active, i.e. has not
been started yet, or has been stopped. While the server is active it
cannot be reconfigured.

[list_end]


[section OPTIONS]

The options supported by the server are for the specification of the
TCP port to listen on, and whether to accept non-local connections or
not.








<


















<






<





<













<







<

















<







31
32
33
34
35
36
37

38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55

56
57
58
59
60
61

62
63
64
65
66

67
68
69
70
71
72
73
74
75
76
77
78
79

80
81
82
83
84
85
86

87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103

104
105
106
107
108
109
110
packages [package dns] and [package resolv].

[para]

This server supports the [term Core] protocol feature, and since
version 0.3 the [term Search/Continuous] feature as well.


[section API]

The package exports five commands, as specified below:

[list_begin definitions]

[call [cmd ::nameserv::server::start]]

This command starts the server and causes it to listen on the
configured port. From now on clients are able to connect and make
requests. The result of the command is the empty string.

[para]

Note that any incoming requests will only be handled if the
application the server is part of does enter an event loop after this
command has been run.


[call [cmd ::nameserv::server::stop]]

Invoking this command stops the server and releases all information it
had. Existing connections are shut down, and no new connections will
be accepted any longer. The result of the command is the empty string.


[call [cmd ::nameserv::server::active?]]

This command returns a boolean value indicating the state of the
server. The result will be [const true] if the server is active,
i.e. has been started, and [const false] otherwise.


[call [cmd ::nameserv::server::cget] [option -option]]

This command returns the currently configured value for the specified
[option -option]. The list of supported options and their meaning can
be found in section [sectref OPTIONS].

[call [cmd ::nameserv::server::configure]]

In this form the command returns a dictionary of all supported
options, and their current values. The list of supported options and
their meaning can be found in section [sectref OPTIONS].


[call [cmd ::nameserv::server::configure] [option -option]]

In this form the command is an alias for
"[cmd ::nameserv::server::cget] [option -option]]".

The list of supported options and their meaning can be found in
section [sectref OPTIONS].


[call [cmd ::nameserv::server::configure] "[option -option] [arg value]..."]

In this form the command is used to configure one or more of the
supported options. At least one option has to be specified, and each
option is followed by its new value.

The list of supported options and their meaning can be found in
section [sectref OPTIONS].

[para]

This form can be used only if the server is not active, i.e. has not
been started yet, or has been stopped. While the server is active it
cannot be reconfigured.

[list_end]


[section OPTIONS]

The options supported by the server are for the specification of the
TCP port to listen on, and whether to accept non-local connections or
not.

129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
it has been started. It has to be a positive integer number (> 0) not
greater than 65536 (unsigned short). The initial default is the number
returned by the command [cmd ::nameserv::server::common::port], as
provided by the package [package ::nameserv::server::common].

[list_end]


[section HISTORY]
[list_begin definitions]
[def 0.3]
Extended the server with the ability to perform asynchronous and
continuous searches.

[def 0.2]
Changed name of -local switch to -localonly.

[def 0.1]
Initial implementation of the server.
[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph nameserv] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]







<













|
<
|
<
<
<
<
<
<
<
<
<

123
124
125
126
127
128
129

130
131
132
133
134
135
136
137
138
139
140
141
142
143

144









145
it has been started. It has to be a positive integer number (> 0) not
greater than 65536 (unsigned short). The initial default is the number
returned by the command [cmd ::nameserv::server::common::port], as
provided by the package [package ::nameserv::server::common].

[list_end]


[section HISTORY]
[list_begin definitions]
[def 0.3]
Extended the server with the ability to perform asynchronous and
continuous searches.

[def 0.2]
Changed name of -local switch to -localonly.

[def 0.1]
Initial implementation of the server.
[list_end]

[vset CATEGORY nameserv]

[include ../doctools2base/include/feedback.inc]









[manpage_end]

Changes to modules/nntp/nntp.man.

1
2





3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin nntp n 1.5.1]





[moddesc   {Tcl NNTP Client Library}]
[titledesc {Tcl client for the NNTP protocol}]
[category  Networking]
[require Tcl  8.2]
[require nntp [opt 0.2.1]]
[description]



>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin nntp n 1.5.1]
[keywords news]
[keywords nntp]
[keywords nntpclient]
[keywords {rfc 977}]
[keywords {rfc 1036}]
[moddesc   {Tcl NNTP Client Library}]
[titledesc {Tcl client for the NNTP protocol}]
[category  Networking]
[require Tcl  8.2]
[require nntp [opt 0.2.1]]
[description]

78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
One application of this option would be the download of articles
containing yEnc encoded images. Although encoded the data is still
mostly binary and retrieving it as text will corrupt the information.

[para]

See package [package yencode] for both encoder and decoder of such data.


[call [arg nntpName] [method date]]

Query the server for the servers current date.  The date is returned in the
format [emph YYYYMMDDHHMMSS].

[call [arg nntpName] [method group] [opt [arg group]]]







<







83
84
85
86
87
88
89

90
91
92
93
94
95
96
One application of this option would be the download of articles
containing yEnc encoded images. Although encoded the data is still
mostly binary and retrieving it as text will corrupt the information.

[para]

See package [package yencode] for both encoder and decoder of such data.


[call [arg nntpName] [method date]]

Query the server for the servers current date.  The date is returned in the
format [emph YYYYMMDDHHMMSS].

[call [arg nntpName] [method group] [opt [arg group]]]
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
[def "[arg msgid1] [arg msgid2]"]

All messages between [arg msgid1] and [arg msgid2]
(including [arg msgid1] and [arg msgid2]) are queried.

[list_end]


[call [arg nntpName] [method xover] [opt [arg range]]]

Returns header information for the current message or for a range of messages
from the current group.  The information is returned in a tcl list
where each element is of the form:
[example {
    msgid subject from date idstring bodysize headersize xref
}]
If [arg range] is not specified or is "" then the current message is queried.
The [arg range] argument can be in any of the following forms:

[list_begin definitions]


[def [const {""}]]

The current message is queried.

[def [arg msgid1]-[arg msgid2]]

All messages between [arg msgid1] and [arg msgid2]
(including [arg msgid1] and [arg msgid2]) are queried.

[def "[arg msgid1] [arg msgid2]"]

All messages between [arg msgid1] and [arg msgid2]
(including [arg msgid1] and [arg msgid2]) are queried.

[list_end]


[call [arg nntpName] [method xpat] [arg field] [arg range] [opt [arg pattern_list]]]

Returns the specified header field value for a specified message or for a
list of messages from the current group where the messages match the
pattern(s) given in the pattern_list.  [arg field] is the title of a
field in the header such as from, subject, date, etc.  The information is







<












<
















<







248
249
250
251
252
253
254

255
256
257
258
259
260
261
262
263
264
265
266

267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282

283
284
285
286
287
288
289
[def "[arg msgid1] [arg msgid2]"]

All messages between [arg msgid1] and [arg msgid2]
(including [arg msgid1] and [arg msgid2]) are queried.

[list_end]


[call [arg nntpName] [method xover] [opt [arg range]]]

Returns header information for the current message or for a range of messages
from the current group.  The information is returned in a tcl list
where each element is of the form:
[example {
    msgid subject from date idstring bodysize headersize xref
}]
If [arg range] is not specified or is "" then the current message is queried.
The [arg range] argument can be in any of the following forms:

[list_begin definitions]


[def [const {""}]]

The current message is queried.

[def [arg msgid1]-[arg msgid2]]

All messages between [arg msgid1] and [arg msgid2]
(including [arg msgid1] and [arg msgid2]) are queried.

[def "[arg msgid1] [arg msgid2]"]

All messages between [arg msgid1] and [arg msgid2]
(including [arg msgid1] and [arg msgid2]) are queried.

[list_end]


[call [arg nntpName] [method xpat] [arg field] [arg range] [opt [arg pattern_list]]]

Returns the specified header field value for a specified message or for a
list of messages from the current group where the messages match the
pattern(s) given in the pattern_list.  [arg field] is the title of a
field in the header such as from, subject, date, etc.  The information is
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348

[section EXAMPLE]

A bigger example for posting a single article.

[para]
[example {
    package require nntp 
    set n [nntp::nntp NNTP_SERVER] 
    $n post "From: [email protected] (USER_FULL) 
    Path: COMPUTERNAME!USERNAME 
    Newsgroups: alt.test 
    Subject: Tcl test post -ignore 
    Message-ID: <[pid][clock seconds] 
    @COMPUTERNAME> 
    Date: [clock format [clock seconds] -format "%a, %d % 
    b %y %H:%M:%S GMT" -gmt true] 
    
    Test message body" 
}]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph nntp] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords news nntp nntpclient {rfc 1036} {rfc 977}]
[manpage_end]







|
|
|
|
|
|
|
|
|
|
|
|


<
|
<
<
|
<
<
<
<
<
<
<
<

315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335

336


337








338

[section EXAMPLE]

A bigger example for posting a single article.

[para]
[example {
    package require nntp
    set n [nntp::nntp NNTP_SERVER]
    $n post "From: [email protected] (USER_FULL)
    Path: COMPUTERNAME!USERNAME
    Newsgroups: alt.test
    Subject: Tcl test post -ignore
    Message-ID: <[pid][clock seconds]
    @COMPUTERNAME>
    Date: [clock format [clock seconds] -format "%a, %d %
    b %y %H:%M:%S GMT" -gmt true]

    Test message body"
}]


[vset CATEGORY nntp]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/ntp/ntp_time.man.

1






2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[manpage_begin ntp_time n 1.2.1]






[copyright {2002, Pat Thoyts <[email protected]>}]
[moddesc   {Network Time Facilities}]
[titledesc {Tcl Time Service Client}]
[category  Networking]
[require Tcl 8.0]
[require time [opt 1.2.1]]
[description]
[para]

This package implements a client for the RFC 868 TIME protocol
([uri http://www.rfc-editor.org/rfc/rfc868.txt]) and also a minimal
client for the RFC 2030 Simple Network Time Protocol 
([uri http://www.rfc-editor.org/rfc/rfc2030.txt]).

RFC 868 returns the time in seconds since 1 January 1900
to either tcp or udp clients. RFC 2030 also gives this time but also
provides a fractional part which is not used in this client.

[section COMMANDS]

>
>
>
>
>
>











|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[manpage_begin ntp_time n 1.2.1]
[see_also ntp]
[keywords NTP]
[keywords {rfc 868}]
[keywords {rfc 2030}]
[keywords SNTP]
[keywords time]
[copyright {2002, Pat Thoyts <[email protected]>}]
[moddesc   {Network Time Facilities}]
[titledesc {Tcl Time Service Client}]
[category  Networking]
[require Tcl 8.0]
[require time [opt 1.2.1]]
[description]
[para]

This package implements a client for the RFC 868 TIME protocol
([uri http://www.rfc-editor.org/rfc/rfc868.txt]) and also a minimal
client for the RFC 2030 Simple Network Time Protocol
([uri http://www.rfc-editor.org/rfc/rfc2030.txt]).

RFC 868 returns the time in seconds since 1 January 1900
to either tcp or udp clients. RFC 2030 also gives this time but also
provides a fractional part which is not used in this client.

[section COMMANDS]
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
token which must then be used with the remaining commands in this
package. Once you have finished, you should use [cmd cleanup] to
release all resources. The default port is [const 37].

[call [cmd ::time::getsntp] [opt [arg "options"]] [arg timeserver] [opt [arg "port"]]]

Get the time from an SNTP server. This accepts exactly the same
arguments as [cmd ::time::gettime] except that the default port is 
[const 123]. The result is a token as per [cmd ::time::gettime] and
should be handled in the same way.
[para]
Note that it is unlikely that any SNTP server will reply using tcp so
you will require the [package tcludp] or the [package ceptcl]
package. If a suitable package can be loaded then the udp protocol
will be used by default.







|







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
token which must then be used with the remaining commands in this
package. Once you have finished, you should use [cmd cleanup] to
release all resources. The default port is [const 37].

[call [cmd ::time::getsntp] [opt [arg "options"]] [arg timeserver] [opt [arg "port"]]]

Get the time from an SNTP server. This accepts exactly the same
arguments as [cmd ::time::gettime] except that the default port is
[const 123]. The result is a token as per [cmd ::time::gettime] and
should be handled in the same way.
[para]
Note that it is unlikely that any SNTP server will reply using tcp so
you will require the [package tcludp] or the [package ceptcl]
package. If a suitable package can be loaded then the udp protocol
will be used by default.
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
  Wait for a query to complete and return the status upon completion.

[call [cmd ::time::cleanup] [arg token]]
  Remove all state variables associated with the request.

[list_end]


[example {
% set tok [::time::gettime ntp2a.mcc.ac.uk]
% set t [::time::unixtime $tok]
% ::time::cleanup $tok
}]

[example {







<







95
96
97
98
99
100
101

102
103
104
105
106
107
108
  Wait for a query to complete and return the status upon completion.

[call [cmd ::time::cleanup] [arg token]]
  Remove all state variables associated with the request.

[list_end]


[example {
% set tok [::time::gettime ntp2a.mcc.ac.uk]
% set t [::time::unixtime $tok]
% ::time::cleanup $tok
}]

[example {
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
      puts [time::error $token]
   }
   time::cleanup $token
}
time::getsntp -command on_time pool.ntp.org
}]

[see_also ntp]
[section AUTHORS]
Pat Thoyts

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph ntp] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords time NTP {rfc 868} SNTP {rfc 2030}]
[manpage_end]







<



<
|
<
<
|
<
<
<
<
<
<
<
<

119
120
121
122
123
124
125

126
127
128

129


130








131
      puts [time::error $token]
   }
   time::cleanup $token
}
time::getsntp -command on_time pool.ntp.org
}]


[section AUTHORS]
Pat Thoyts


[vset CATEGORY ntp]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/ooutil/ooutil.man.

1
2










3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin oo::util n 1.1]










[copyright {2011-2013 Andreas Kupries, BSD licensed}]
[moddesc {Utility commands for TclOO}]
[titledesc {Utility commands for TclOO}]
[category  Utility]
[require Tcl 8.5]
[require TclOO]
[require oo::util [opt 1.1]]
[keywords TclOO callback {my method} {command prefix} currying {method reference}]
[keywords {class methods} {class variables} singleton]
[see_also snit(n)]
[description]
[para]

This package provides a convenience command for the easy specification
of instance methods as callback commands, like timers, file events, Tk
bindings, etc.



>
>
>
>
>
>
>
>
>
>







<
<
<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19



20
21
22
23
24
25
26
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin oo::util n 1.1]
[see_also snit(n)]
[keywords callback]
[keywords {class methods}]
[keywords {class variables}]
[keywords {command prefix}]
[keywords currying]
[keywords {method reference}]
[keywords {my method}]
[keywords singleton]
[keywords TclOO]
[copyright {2011-2013 Andreas Kupries, BSD licensed}]
[moddesc {Utility commands for TclOO}]
[titledesc {Utility commands for TclOO}]
[category  Utility]
[require Tcl 8.5]
[require TclOO]
[require oo::util [opt 1.1]]



[description]
[para]

This package provides a convenience command for the easy specification
of instance methods as callback commands, like timers, file events, Tk
bindings, etc.

27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
name and, possibly, arguments for the method and returns a command
prefix which, when executed, will invoke the named method of the
object we are in, with the provided arguments, and any others supplied
at the time of actual invokation.

[para] Note: The command is equivalent to and named after the command
provided by the OO package [package snit] for the same purpose.


[comment {- - -- --- ----- -------- ------------- ---------------------}]
[call [cmd classmethod] [arg name] [arg arguments] [arg body]]

This command is available within class definitions. It takes a method
name and, possibly, arguments for the method and creates a method on the
class, available to a user of the class and of derived classes.







<







34
35
36
37
38
39
40

41
42
43
44
45
46
47
name and, possibly, arguments for the method and returns a command
prefix which, when executed, will invoke the named method of the
object we are in, with the provided arguments, and any others supplied
at the time of actual invokation.

[para] Note: The command is equivalent to and named after the command
provided by the OO package [package snit] for the same purpose.


[comment {- - -- --- ----- -------- ------------- ---------------------}]
[call [cmd classmethod] [arg name] [arg arguments] [arg body]]

This command is available within class definitions. It takes a method
name and, possibly, arguments for the method and creates a method on the
class, available to a user of the class and of derived classes.
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
}
puts [Table find foo bar]
# ======
# which will write
# ======
# ::Table called with arguments: foo bar
}]


[comment {- - -- --- ----- -------- ------------- ---------------------}]
[call [cmd classvariable] [opt [arg arg]...]]

This command is available within instance methods. It takes a series
of variable names and makes them available in the method's scope. The
originating scope for the variables is the class (instance) the object







<







59
60
61
62
63
64
65

66
67
68
69
70
71
72
}
puts [Table find foo bar]
# ======
# which will write
# ======
# ::Table called with arguments: foo bar
}]


[comment {- - -- --- ----- -------- ------------- ---------------------}]
[call [cmd classvariable] [opt [arg arg]...]]

This command is available within instance methods. It takes a series
of variable names and makes them available in the method's scope. The
originating scope for the variables is the class (instance) the object
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
    # The methods a, b, and c all become directly acessible under their
    # own names.
}]

The main use of this command is expected to be in instance constructors,
for convenience, or to set up some methods for use in a mini DSL.


[comment {- - -- --- ----- -------- ------------- ---------------------}]
[call [cmd ooutil::singleton] [opt [arg arg]...]]

This command is a meta-class, i.e. a variant of the builtin
[cmd oo::class] which ensures that it creates only a single
instance of the classes defined with it.








<







128
129
130
131
132
133
134

135
136
137
138
139
140
141
    # The methods a, b, and c all become directly acessible under their
    # own names.
}]

The main use of this command is expected to be in instance constructors,
for convenience, or to set up some methods for use in a mini DSL.


[comment {- - -- --- ----- -------- ------------- ---------------------}]
[call [cmd ooutil::singleton] [opt [arg arg]...]]

This command is a meta-class, i.e. a variant of the builtin
[cmd oo::class] which ensures that it creates only a single
instance of the classes defined with it.

151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
}]

[list_end]

[section AUTHORS]
Donal Fellows, Andreas Kupries

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph oo::util] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]







<
|
<
<
|
<
<
<
<
<
<

155
156
157
158
159
160
161

162


163






164
}]

[list_end]

[section AUTHORS]
Donal Fellows, Andreas Kupries


[vset CATEGORY oo::util]


[include ../doctools2base/include/feedback.inc]






[manpage_end]

Changes to modules/otp/otp.man.

1










2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[manpage_begin otp n 1.0.0]










[moddesc   {RFC 2289 A One-Time Password System}]
[copyright {2006, Pat Thoyts <[email protected]>}]
[titledesc {One-Time Passwords}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require otp [opt 1.0.0]]
[description]
[para]

This package is an implementation in Tcl of the One-Time Password
system as described in RFC 2289 (1). This system uses message-digest
algorithms to sequentially hash a passphrase to create single-use
passwords. The resulting data is then provided to the user as either
hexadecimal digits or encoded using a dictionary of 2048 words. This
system is used by OpenBSD for secure login and can be used as a SASL
mechanism for authenticating users.

[para]

In this implementation we provide support for four algorithms that are
included in the tcllib distribution: MD5 (2), MD4 (3), RIPE-MD160 (4) 
and SHA-1 (5).

[section {COMMANDS}]

[list_begin definitions]

[call [cmd "::otp::otp-md4"] [opt "[arg -hex]"] [opt "[arg -words]"] \

>
>
>
>
>
>
>
>
>
>




















|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
[manpage_begin otp n 1.0.0]
[see_also md4]
[see_also md5]
[see_also ripemd160]
[see_also SASL]
[see_also sha1]
[keywords hashing]
[keywords message-digest]
[keywords password]
[keywords {rfc 2289}]
[keywords security]
[moddesc   {RFC 2289 A One-Time Password System}]
[copyright {2006, Pat Thoyts <[email protected]>}]
[titledesc {One-Time Passwords}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require otp [opt 1.0.0]]
[description]
[para]

This package is an implementation in Tcl of the One-Time Password
system as described in RFC 2289 (1). This system uses message-digest
algorithms to sequentially hash a passphrase to create single-use
passwords. The resulting data is then provided to the user as either
hexadecimal digits or encoded using a dictionary of 2048 words. This
system is used by OpenBSD for secure login and can be used as a SASL
mechanism for authenticating users.

[para]

In this implementation we provide support for four algorithms that are
included in the tcllib distribution: MD5 (2), MD4 (3), RIPE-MD160 (4)
and SHA-1 (5).

[section {COMMANDS}]

[list_begin definitions]

[call [cmd "::otp::otp-md4"] [opt "[arg -hex]"] [opt "[arg -words]"] \
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
(binary gibberish)
% otp::otp-md5 -words -count 99 -seed host67821 "My Secret Pass Phrase"
SOON ARAB BURG LIMB FILE WAD
% otp::otp-md5 -hex -count 99 -seed host67821 "My Secret Pass Phrase"
e249b58257c80087
}]


[section {REFERENCES}]

[list_begin enumerated]

[enum]
        Haller, N. et al., "A One-Time Password System", RFC 2289, February 1998.
	[uri http://www.rfc-editor.org/rfc/rfc2289.txt]

[enum]
       Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, MIT and
       RSA Data Security, Inc, April 1992.
	([uri http://www.rfc-editor.org/rfc/rfc1321.txt])

[enum]
       Rivest, R., "The MD4 Message Digest Algorithm", RFC 1320, MIT,
       April 1992. ([uri http://www.rfc-editor.org/rfc/rfc1320.txt])

[enum]
        H. Dobbertin, A. Bosselaers, B. Preneel, 
        "RIPEMD-160, a strengthened version of RIPEMD"
        [uri http://www.esat.kuleuven.ac.be/~cosicart/pdf/AB-9601/AB-9601.pdf]

[enum]
        "Secure Hash Standard", National Institute of Standards
        and Technology, U.S. Department Of Commerce, April 1995.
	([uri http://www.itl.nist.gov/fipspubs/fip180-1.htm])

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph otp] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also md4 md5 sha1 ripemd160 SASL]
[keywords password hashing message-digest security {rfc 2289}]
[manpage_end]







<


















|










<
|
<
<
|
<
<
<
<
<
<
<
<
<

57
58
59
60
61
62
63

64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92

93


94









95
(binary gibberish)
% otp::otp-md5 -words -count 99 -seed host67821 "My Secret Pass Phrase"
SOON ARAB BURG LIMB FILE WAD
% otp::otp-md5 -hex -count 99 -seed host67821 "My Secret Pass Phrase"
e249b58257c80087
}]


[section {REFERENCES}]

[list_begin enumerated]

[enum]
        Haller, N. et al., "A One-Time Password System", RFC 2289, February 1998.
	[uri http://www.rfc-editor.org/rfc/rfc2289.txt]

[enum]
       Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, MIT and
       RSA Data Security, Inc, April 1992.
	([uri http://www.rfc-editor.org/rfc/rfc1321.txt])

[enum]
       Rivest, R., "The MD4 Message Digest Algorithm", RFC 1320, MIT,
       April 1992. ([uri http://www.rfc-editor.org/rfc/rfc1320.txt])

[enum]
        H. Dobbertin, A. Bosselaers, B. Preneel,
        "RIPEMD-160, a strengthened version of RIPEMD"
        [uri http://www.esat.kuleuven.ac.be/~cosicart/pdf/AB-9601/AB-9601.pdf]

[enum]
        "Secure Hash Standard", National Institute of Standards
        and Technology, U.S. Department Of Commerce, April 1995.
	([uri http://www.itl.nist.gov/fipspubs/fip180-1.htm])

[list_end]


[vset CATEGORY otp]


[include ../doctools2base/include/feedback.inc]









[manpage_end]

Changes to modules/page/page_intro.man.

1
2



3
4
5
6
7
8
9
10
11
12
13
14
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin page_intro n 1.0]



[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Parser generator tools}]
[titledesc {page introduction}]
[category  {Page Parser Generator}]
[keywords page {parser generator} {text processing}]
[description]
[para]

[term page] (short for [emph {parser generator}]) stands for a set of
related packages which help in the construction of parser generators,
and other utilities doing text processing.



>
>
>




<







1
2
3
4
5
6
7
8
9

10
11
12
13
14
15
16
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin page_intro n 1.0]
[keywords page]
[keywords {parser generator}]
[keywords {text processing}]
[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Parser generator tools}]
[titledesc {page introduction}]
[category  {Page Parser Generator}]

[description]
[para]

[term page] (short for [emph {parser generator}]) stands for a set of
related packages which help in the construction of parser generators,
and other utilities doing text processing.

24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
[para]

The packages implementing the plugins are not documented as regular
packages, as they cannot be loaded into a general interpreter, like
tclsh, without extensive preparation of the interpreter. Preparation
which is done for them by the plugin manager.

[section {BUGS, IDEAS, FEEDBACK}]

This document, will undoubtedly contain bugs and other problems.

Please report such in the category [emph page] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have.

[manpage_end]







<
|
<
|
<
<
<
<
<

26
27
28
29
30
31
32

33

34





35
[para]

The packages implementing the plugins are not documented as regular
packages, as they cannot be loaded into a general interpreter, like
tclsh, without extensive preparation of the interpreter. Preparation
which is done for them by the plugin manager.


[vset CATEGORY page]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/page/page_pluginmgr.man.

1
2



3
4
5
6
7
8
9
10
11
12
13
14
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin page_pluginmgr n 1.0]



[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Parser generator tools}]
[titledesc {page plugin manager}]
[category  {Page Parser Generator}]
[keywords page {parser generator} {text processing}]
[require page::pluginmgr [opt 0.2]]
[require fileutil]
[description]
[para]

This package provides the plugin manager central to the [syscmd page]
application. It manages the various reader, writer, configuration, and


>
>
>




<







1
2
3
4
5
6
7
8
9

10
11
12
13
14
15
16
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin page_pluginmgr n 1.0]
[keywords page]
[keywords {parser generator}]
[keywords {text processing}]
[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Parser generator tools}]
[titledesc {page plugin manager}]
[category  {Page Parser Generator}]

[require page::pluginmgr [opt 0.2]]
[require fileutil]
[description]
[para]

This package provides the plugin manager central to the [syscmd page]
application. It manages the various reader, writer, configuration, and
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
[para]

The optional argument [arg from] and [arg to] can be used by the
caller to indicate the location (or range) in the input where the
reported problem occured. Each is a list containing two elements, the
line and the column in the input, in this order.


[call [cmd ::page::pluginmgr::log] [arg cmd]]

This command defines a log callback command to be used by loaded
plugins for the reporting of internal errors, warnings, and general
information. Specifying the empty string as callback disables logging.

[para]

Note: The [arg cmd] has to be created by the [package logger] package,
or follow the same API as such.

[para]

The command returns the empty string as its result.


[call [cmd ::page::pluginmgr::configuration] [arg name]]

This command loads the named configuration plugin, retrieves the
options encoded in it, and then immediately unloads it again.

[para]







<














<







64
65
66
67
68
69
70

71
72
73
74
75
76
77
78
79
80
81
82
83
84

85
86
87
88
89
90
91
[para]

The optional argument [arg from] and [arg to] can be used by the
caller to indicate the location (or range) in the input where the
reported problem occured. Each is a list containing two elements, the
line and the column in the input, in this order.


[call [cmd ::page::pluginmgr::log] [arg cmd]]

This command defines a log callback command to be used by loaded
plugins for the reporting of internal errors, warnings, and general
information. Specifying the empty string as callback disables logging.

[para]

Note: The [arg cmd] has to be created by the [package logger] package,
or follow the same API as such.

[para]

The command returns the empty string as its result.


[call [cmd ::page::pluginmgr::configuration] [arg name]]

This command loads the named configuration plugin, retrieves the
options encoded in it, and then immediately unloads it again.

[para]
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
See section [sectref {CONFIG PLUGIN API}] for the API expected of
configuration plugins.

[para]

The result of the command is the list of options retrieved.


[call [cmd ::page::pluginmgr::reader] [arg name]]

This command loads the named reader plugin and initializes it. The
result of the command is a list of options the plugin understands.

[para]

Only a single reader plugin can be loaded. Loading another reader
plugin causes the previously loaded reader plugin to be de-initialized
and unloaded.

[para]

See section [sectref {READER PLUGIN API}] for the API expected of
reader plugins.


[call [cmd ::page::pluginmgr::rconfigure] [arg dict]]

This commands configures the loaded reader plugin. The options and
their values are provided as a Tcl dictionary. The result of the
command is the empty string.








<















<







101
102
103
104
105
106
107

108
109
110
111
112
113
114
115
116
117
118
119
120
121
122

123
124
125
126
127
128
129
See section [sectref {CONFIG PLUGIN API}] for the API expected of
configuration plugins.

[para]

The result of the command is the list of options retrieved.


[call [cmd ::page::pluginmgr::reader] [arg name]]

This command loads the named reader plugin and initializes it. The
result of the command is a list of options the plugin understands.

[para]

Only a single reader plugin can be loaded. Loading another reader
plugin causes the previously loaded reader plugin to be de-initialized
and unloaded.

[para]

See section [sectref {READER PLUGIN API}] for the API expected of
reader plugins.


[call [cmd ::page::pluginmgr::rconfigure] [arg dict]]

This commands configures the loaded reader plugin. The options and
their values are provided as a Tcl dictionary. The result of the
command is the empty string.

787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811

	Describe the commands expected by plugins to be available in
	the environment.

	Describe the predefined features.
}]


[section FEATURES]

The plugin manager currently checks the plugins for only one feature,
[const timeable]. A plugin supporting this feature is assumed to be
able to collect timing statistics on request.


[section {BUGS, IDEAS, FEEDBACK}]

This document, will undoubtedly contain bugs and other problems.

Please report such in the category [emph page] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have.

[manpage_end]







<






|
<
|
<
<
<
<
<
<
<

785
786
787
788
789
790
791

792
793
794
795
796
797
798

799







800

	Describe the commands expected by plugins to be available in
	the environment.

	Describe the predefined features.
}]


[section FEATURES]

The plugin manager currently checks the plugins for only one feature,
[const timeable]. A plugin supporting this feature is assumed to be
able to collect timing statistics on request.

[vset CATEGORY page]

[include ../doctools2base/include/feedback.inc]







[manpage_end]

Changes to modules/page/page_util_flow.man.

1
2






3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin page_util_flow n 1.0]






[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Parser generator tools}]
[titledesc {page dataflow/treewalker utility}]
[category  {Page Parser Generator}]
[require page::util::flow [opt 0.1]]
[require snit]
[keywords page dataflow {tree walking} {graph walking}]
[keywords {parser generator} {text processing}]
[description]
[para]

This package provides a single utility command for easy dataflow based
manipulation of arbitrary data structures, especially abstract syntax
trees.



>
>
>
>
>
>






<
<







1
2
3
4
5
6
7
8
9
10
11
12
13
14


15
16
17
18
19
20
21
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin page_util_flow n 1.0]
[keywords dataflow]
[keywords {graph walking}]
[keywords page]
[keywords {parser generator}]
[keywords {text processing}]
[keywords {tree walking}]
[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Parser generator tools}]
[titledesc {page dataflow/treewalker utility}]
[category  {Page Parser Generator}]
[require page::util::flow [opt 0.1]]
[require snit]


[description]
[para]

This package provides a single utility command for easy dataflow based
manipulation of arbitrary data structures, especially abstract syntax
trees.

83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
[call [arg flow] [method visita] [arg node]...]

This is the variadic arguments form of the method [method visitl], see
above.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, will undoubtedly contain bugs and other problems.

Please report such in the category [emph page] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have.

[manpage_end]







<
|
<
|
<
<
<
<
<

87
88
89
90
91
92
93

94

95





96
[call [arg flow] [method visita] [arg node]...]

This is the variadic arguments form of the method [method visitl], see
above.

[list_end]


[vset CATEGORY page]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/page/page_util_norm_lemon.man.

1
2







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin page_util_norm_lemon n 1.0]







[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Parser generator tools}]
[titledesc {page AST normalization, LEMON}]
[category  {Page Parser Generator}]
[require page::util::norm_lemon [opt 0.1]]
[require snit]
[keywords page lemon normalization {tree walking} {graph walking}]
[keywords {parser generator} {text processing}]
[description]
[para]

This package provides a single utility command which takes an AST for a
lemon  grammar and normalizes it in various ways. The result
is called a [term {Normalized Lemon Grammar Tree}].



>
>
>
>
>
>
>






<
<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15


16
17
18
19
20
21
22
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin page_util_norm_lemon n 1.0]
[keywords {graph walking}]
[keywords lemon]
[keywords normalization]
[keywords page]
[keywords {parser generator}]
[keywords {text processing}]
[keywords {tree walking}]
[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Parser generator tools}]
[titledesc {page AST normalization, LEMON}]
[category  {Page Parser Generator}]
[require page::util::norm_lemon [opt 0.1]]
[require snit]


[description]
[para]

This package provides a single utility command which takes an AST for a
lemon  grammar and normalizes it in various ways. The result
is called a [term {Normalized Lemon Grammar Tree}].

37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

[para]

The exact operations performed are left undocumented for the moment.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, will undoubtedly contain bugs and other problems.

Please report such in the category [emph page] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have.

[manpage_end]







<
|
<
|
<
<
<
<
<

42
43
44
45
46
47
48

49

50





51

[para]

The exact operations performed are left undocumented for the moment.

[list_end]


[vset CATEGORY page]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/page/page_util_norm_peg.man.

1
2







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin page_util_norm_peg n 1.0]







[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Parser generator tools}]
[titledesc {page AST normalization, PEG}]
[category  {Page Parser Generator}]
[require page::util::norm_peg [opt 0.1]]
[require snit]
[keywords page PEG normalization {tree walking} {graph walking}]
[keywords {parser generator} {text processing}]
[description]
[para]

This package provides a single utility command which takes an AST for a
parsing expression grammar and normalizes it in various ways. The result
is called a [term {Normalized PE Grammar Tree}].



>
>
>
>
>
>
>






<
<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15


16
17
18
19
20
21
22
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin page_util_norm_peg n 1.0]
[keywords {graph walking}]
[keywords normalization]
[keywords page]
[keywords {parser generator}]
[keywords PEG]
[keywords {text processing}]
[keywords {tree walking}]
[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Parser generator tools}]
[titledesc {page AST normalization, PEG}]
[category  {Page Parser Generator}]
[require page::util::norm_peg [opt 0.1]]
[require snit]


[description]
[para]

This package provides a single utility command which takes an AST for a
parsing expression grammar and normalizes it in various ways. The result
is called a [term {Normalized PE Grammar Tree}].

36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
The result is called a  [term {Normalized PE Grammar Tree}].

[para]

The following operations are performd

[list_begin enum]
[enum] 
The data for all terminals is stored in their grandparental
nodes. The terminal nodes and their parents are removed. Type
information is dropped.

[enum]
All nodes which have exactly one child are irrelevant and are
removed, with the exception of the root node. The immediate







|







41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
The result is called a  [term {Normalized PE Grammar Tree}].

[para]

The following operations are performd

[list_begin enum]
[enum]
The data for all terminals is stored in their grandparental
nodes. The terminal nodes and their parents are removed. Type
information is dropped.

[enum]
All nodes which have exactly one child are irrelevant and are
removed, with the exception of the root node. The immediate
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
[para]
The order matters, to shed as much nodes as possible early, and
to avoid unnecessary work later.

[list_end]
[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, will undoubtedly contain bugs and other problems.

Please report such in the category [emph page] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have.

[manpage_end]







<
|
<
|
<
<
<
<
<

96
97
98
99
100
101
102

103

104





105
[para]
The order matters, to shed as much nodes as possible early, and
to avoid unnecessary work later.

[list_end]
[list_end]


[vset CATEGORY page]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/page/page_util_peg.man.

1
2






3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin page_util_peg n 1.0]






[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Parser generator tools}]
[titledesc {page PEG transformation utilities}]
[category  {Page Parser Generator}]
[require page::util::peg [opt 0.1]]
[require snit]
[keywords page {parsing expression grammar} {parser generator} {text processing}]
[keywords PEG transformation]
[description]
[para]

This package provides a few common operations to PEG transformations.
They assume a [term {Normalized PE Grammar Tree}] as input, see the
package [package page::util::norm::peg], possibly augmented with
attributes coming from transformations not in conflict with the base


>
>
>
>
>
>






<
<







1
2
3
4
5
6
7
8
9
10
11
12
13
14


15
16
17
18
19
20
21
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin page_util_peg n 1.0]
[keywords page]
[keywords {parser generator}]
[keywords {parsing expression grammar}]
[keywords PEG]
[keywords {text processing}]
[keywords transformation]
[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Parser generator tools}]
[titledesc {page PEG transformation utilities}]
[category  {Page Parser Generator}]
[require page::util::peg [opt 0.1]]
[require snit]


[description]
[para]

This package provides a few common operations to PEG transformations.
They assume a [term {Normalized PE Grammar Tree}] as input, see the
package [package page::util::norm::peg], possibly augmented with
attributes coming from transformations not in conflict with the base
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
list [arg pe] into a Tcl string which can be placed into a Tcl script.

See the package [package grammar::peg] for the exact syntax of
[arg pe].

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, will undoubtedly contain bugs and other problems.

Please report such in the category [emph page] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have.

[manpage_end]







<
|
<
|
<
<
<
<
<

99
100
101
102
103
104
105

106

107





108
list [arg pe] into a Tcl string which can be placed into a Tcl script.

See the package [package grammar::peg] for the exact syntax of
[arg pe].

[list_end]


[vset CATEGORY page]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/page/page_util_quote.man.

1
2




3
4
5
6
7
8
9
10
11
12
13
14
15
16
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin page_util_quote n 1.0]




[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Parser generator tools}]
[titledesc {page character quoting utilities}]
[category  {Page Parser Generator}]
[require page::util::quote [opt 0.1]]
[require snit]
[keywords page quoting {parser generator} {text processing}]
[description]
[para]

This package provides a few utility commands to convert characters
into various forms.

[section API]


>
>
>
>






<







1
2
3
4
5
6
7
8
9
10
11
12

13
14
15
16
17
18
19
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin page_util_quote n 1.0]
[keywords page]
[keywords {parser generator}]
[keywords quoting]
[keywords {text processing}]
[copyright {2007 Andreas Kupries <[email protected]>}]
[moddesc   {Parser generator tools}]
[titledesc {page character quoting utilities}]
[category  {Page Parser Generator}]
[require page::util::quote [opt 0.1]]
[require snit]

[description]
[para]

This package provides a few utility commands to convert characters
into various forms.

[section API]
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
This command takes a Tcl character (internal representation) and
converts it into a string which is accepted by the Tcl parser when
used within a Tcl comment. The string is returned as the result of
this command.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, will undoubtedly contain bugs and other problems.

Please report such in the category [emph page] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have.

[manpage_end]







<
|
<
|
<
<
<
<
<

53
54
55
56
57
58
59

60

61





62
This command takes a Tcl character (internal representation) and
converts it into a string which is accepted by the Tcl parser when
used within a Tcl comment. The string is returned as the result of
this command.

[list_end]


[vset CATEGORY page]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/pki/pki.man.

1
2











3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin pki n 0.6]











[copyright {2010, 2011, 2012, 2013, Roy Keene, Andreas Kupries}]
[moddesc {public key encryption}]
[titledesc {Implementation of the public key cipher}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.5]
[require pki [opt 0.6]]
[description]


>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin pki n 0.6]
[see_also aes(n)]
[see_also blowfish(n)]
[see_also des(n)]
[see_also md5(n)]
[see_also sha1(n)]
[keywords cipher]
[keywords {data integrity}]
[keywords encryption]
[keywords {public key cipher}]
[keywords rsa]
[keywords security]
[copyright {2010, 2011, 2012, 2013, Roy Keene, Andreas Kupries}]
[moddesc {public key encryption}]
[titledesc {Implementation of the public key cipher}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.5]
[require pki [opt 0.6]]
[description]
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100

[para] Mapping to OpenSSL's [syscmd openssl] application:
[list_begin enumerated]
[enum]	"openssl rsautl -encrypt" == "::pki::encrypt -binary -pub"
[enum]	"openssl rsautl -sign"    == "::pki::encrypt -binary -priv"
[list_end]


[call [cmd "::pki::decrypt"] \
        [opt [arg "-binary"]] \
        [opt [arg "-hex"]] \
        [opt [arg "-unpad"]] \
        [opt [arg "-nounpad"]] \
        [opt [arg "-priv"]] \
        [opt [arg "-pub"]] \
        [opt [arg "--"]] \
	[arg input] [arg key]]

Decrypt a message using PKI (probably RSA). See [cmd ::pki::encrypt] for option handling.

[para] Mapping to OpenSSL's [syscmd openssl] application:
[list_begin enumerated]
[enum]	"openssl rsautl -decrypt" == "::pki::decrypt -binary -priv"
[enum]	"openssl rsautl -verify"  == "::pki::decrypt -binary -pub"
[list_end]



[call [cmd ::pki::sign] [arg input] [arg key] [opt [arg algo]]]

Digitally sign message [arg input] using the private [arg key].  If [arg algo]
is ommited "sha1" is assumed.  Possible values for [arg algo] include
"md5", "sha1", "sha256", and "raw".  Specifyin "raw" for [arg algo] will
inhibit the building of an ASN.1 structure to encode which hashing







<

















<
<







78
79
80
81
82
83
84

85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101


102
103
104
105
106
107
108

[para] Mapping to OpenSSL's [syscmd openssl] application:
[list_begin enumerated]
[enum]	"openssl rsautl -encrypt" == "::pki::encrypt -binary -pub"
[enum]	"openssl rsautl -sign"    == "::pki::encrypt -binary -priv"
[list_end]


[call [cmd "::pki::decrypt"] \
        [opt [arg "-binary"]] \
        [opt [arg "-hex"]] \
        [opt [arg "-unpad"]] \
        [opt [arg "-nounpad"]] \
        [opt [arg "-priv"]] \
        [opt [arg "-pub"]] \
        [opt [arg "--"]] \
	[arg input] [arg key]]

Decrypt a message using PKI (probably RSA). See [cmd ::pki::encrypt] for option handling.

[para] Mapping to OpenSSL's [syscmd openssl] application:
[list_begin enumerated]
[enum]	"openssl rsautl -decrypt" == "::pki::decrypt -binary -priv"
[enum]	"openssl rsautl -verify"  == "::pki::decrypt -binary -pub"
[list_end]



[call [cmd ::pki::sign] [arg input] [arg key] [opt [arg algo]]]

Digitally sign message [arg input] using the private [arg key].  If [arg algo]
is ommited "sha1" is assumed.  Possible values for [arg algo] include
"md5", "sha1", "sha256", and "raw".  Specifyin "raw" for [arg algo] will
inhibit the building of an ASN.1 structure to encode which hashing
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
[cmd ::pki::verify].

[comment {
	What is the default for password?
	What choices for password has the user ?
}]


[call [cmd ::pki::x509::parse_cert] [arg cert]]

Convert an X.509 certificate to a usable (public) key, i.e. one which
can be used as argument for
[cmd ::pki:encrypt],
[cmd ::pki::decrypt], and
[cmd ::pki::verify].

The [arg cert] argument can be either PEM or DER encoded.


[call [cmd ::pki::rsa::generate] [arg bitlength] [opt [arg exponent]]]

Generate a new RSA key pair, the parts of which can be used as
argument for
[cmd ::pki::encrypt],
[cmd ::pki::decrypt],







<









<







149
150
151
152
153
154
155

156
157
158
159
160
161
162
163
164

165
166
167
168
169
170
171
[cmd ::pki::verify].

[comment {
	What is the default for password?
	What choices for password has the user ?
}]


[call [cmd ::pki::x509::parse_cert] [arg cert]]

Convert an X.509 certificate to a usable (public) key, i.e. one which
can be used as argument for
[cmd ::pki:encrypt],
[cmd ::pki::decrypt], and
[cmd ::pki::verify].

The [arg cert] argument can be either PEM or DER encoded.


[call [cmd ::pki::rsa::generate] [arg bitlength] [opt [arg exponent]]]

Generate a new RSA key pair, the parts of which can be used as
argument for
[cmd ::pki::encrypt],
[cmd ::pki::decrypt],
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
[comment {
	What is the default for exponent?
          -- 65537 (0x10001)
	What choices for exponent has the user ?
          -- Any value, but it should be chosen wisely.  This is the "RSA exponent" and small values may represent a security risk.
}]



[call [cmd ::pki::x509::verify_cert] [arg cert] [arg trustedcerts] [opt [arg intermediatecerts]]]

Verify that a trust can be found between the certificate specified in the
[arg cert] argument and one of the certificates specified in the list
of certificates in the [arg trustedcerts] argument.  (Eventually the
chain can be through untrusted certificates listed in the [arg intermediatecerts]
argument, but this is currently unimplemented).

The certificates specified in the [arg cert] and [arg trustedcerts] option
should be parsed (from [cmd ::pki::x509::parse_cert]).



[call [cmd ::pki::x509::validate_cert] \
     [arg cert] \
     [opt "[option -sign_message] [arg dn_of_signer]"] \
     [opt "[option -encrypt_message] [arg dn_of_signer]"] \
     [opt "[option -sign_cert] [arg dn_to_be_signed] [arg ca_depth]"] \
     [opt "[option -ssl] [arg dn]"] \







<
<










<
<







180
181
182
183
184
185
186


187
188
189
190
191
192
193
194
195
196


197
198
199
200
201
202
203
[comment {
	What is the default for exponent?
          -- 65537 (0x10001)
	What choices for exponent has the user ?
          -- Any value, but it should be chosen wisely.  This is the "RSA exponent" and small values may represent a security risk.
}]



[call [cmd ::pki::x509::verify_cert] [arg cert] [arg trustedcerts] [opt [arg intermediatecerts]]]

Verify that a trust can be found between the certificate specified in the
[arg cert] argument and one of the certificates specified in the list
of certificates in the [arg trustedcerts] argument.  (Eventually the
chain can be through untrusted certificates listed in the [arg intermediatecerts]
argument, but this is currently unimplemented).

The certificates specified in the [arg cert] and [arg trustedcerts] option
should be parsed (from [cmd ::pki::x509::parse_cert]).



[call [cmd ::pki::x509::validate_cert] \
     [arg cert] \
     [opt "[option -sign_message] [arg dn_of_signer]"] \
     [opt "[option -encrypt_message] [arg dn_of_signer]"] \
     [opt "[option -sign_cert] [arg dn_to_be_signed] [arg ca_depth]"] \
     [opt "[option -ssl] [arg dn]"] \
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
and [arg ca_depth].  The [arg dn_to_be_signed] is the distinguished from
the subject of a certificate to verify that the certificate specified in
the [arg cert] argument can sign.  The [arg ca_depth] argument is used to
indicate at which depth the verification should be done at.  Some
certificates are limited to how far down the chain they can be used to
verify a given certificate.



[call [cmd ::pki::pkcs::create_csr] [arg keylist] [arg namelist] [opt [arg encodePem]] [opt [arg algo]]]

Generate a certificate signing request from a key pair specified in
the [arg keylist] argument.

The [arg namelist] argument is a list of "name" followed by "value"
pairs to encoding as the requested distinguished name in the CSR.

The [arg encodePem] option specifies whether or not the result should
be PEM encoded or DER encoded.  A "true" value results in the result
being PEM encoded, while any other value 9results in the the result
being DER encoded.  DER encoding is the default.

The [arg algo] argument specifies the hashing algorithm we should use
to sign this certificate signing request with.  The default is "sha1".
Other possible values include "md5" and "sha256".



[call [cmd ::pki::pkcs::parse_csr] [arg csr]]

Parse a Certificate Signing Request.  The [arg csr] argument can be
either PEM or DER encoded.



[call [cmd ::pki::x509::create_cert] [arg signreqlist] [arg cakeylist] [arg serial_number] [arg notBefore] [arg notAfter] [arg isCA] [arg extensions] [opt [arg encodePem]] [opt [arg algo]]]

Sign a signing request (usually from [cmd ::pki::pkcs::create_csr] or
[cmd ::pki::pkcs::parse_csr]) with a Certificate Authority (CA) certificate.

The [arg signreqlist] argument should be the parsed signing request.

The [arg cakeylist] argument should be the parsed CA certificate.

The [arg serial_number] argument should be a serial number unique to
this certificate from this certificate authority.  

The [arg notBefore] and [arg notAfter] arguments should contain the
time before and after which (respectively) the certificate should
be considered invalid.  The time should be encoded as something
[cmd "clock format"] will accept (i.e., the results of [cmd "clock seconds"]
and [cmd "clock add"]).








<
<

















<
<




<
<











|







213
214
215
216
217
218
219


220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236


237
238
239
240


241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
and [arg ca_depth].  The [arg dn_to_be_signed] is the distinguished from
the subject of a certificate to verify that the certificate specified in
the [arg cert] argument can sign.  The [arg ca_depth] argument is used to
indicate at which depth the verification should be done at.  Some
certificates are limited to how far down the chain they can be used to
verify a given certificate.



[call [cmd ::pki::pkcs::create_csr] [arg keylist] [arg namelist] [opt [arg encodePem]] [opt [arg algo]]]

Generate a certificate signing request from a key pair specified in
the [arg keylist] argument.

The [arg namelist] argument is a list of "name" followed by "value"
pairs to encoding as the requested distinguished name in the CSR.

The [arg encodePem] option specifies whether or not the result should
be PEM encoded or DER encoded.  A "true" value results in the result
being PEM encoded, while any other value 9results in the the result
being DER encoded.  DER encoding is the default.

The [arg algo] argument specifies the hashing algorithm we should use
to sign this certificate signing request with.  The default is "sha1".
Other possible values include "md5" and "sha256".



[call [cmd ::pki::pkcs::parse_csr] [arg csr]]

Parse a Certificate Signing Request.  The [arg csr] argument can be
either PEM or DER encoded.



[call [cmd ::pki::x509::create_cert] [arg signreqlist] [arg cakeylist] [arg serial_number] [arg notBefore] [arg notAfter] [arg isCA] [arg extensions] [opt [arg encodePem]] [opt [arg algo]]]

Sign a signing request (usually from [cmd ::pki::pkcs::create_csr] or
[cmd ::pki::pkcs::parse_csr]) with a Certificate Authority (CA) certificate.

The [arg signreqlist] argument should be the parsed signing request.

The [arg cakeylist] argument should be the parsed CA certificate.

The [arg serial_number] argument should be a serial number unique to
this certificate from this certificate authority.

The [arg notBefore] and [arg notAfter] arguments should contain the
time before and after which (respectively) the certificate should
be considered invalid.  The time should be encoded as something
[cmd "clock format"] will accept (i.e., the results of [cmd "clock seconds"]
and [cmd "clock add"]).

272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
extension is understood ("id-ce-basicConstraints").  It accepts three
arguments [arg critical] [arg allowCA] [arg caDepth].  The [arg critical]
argument to this extension (and any extension) whether or not the
validator should reject the certificate as invalid if it does not
understand the extension (if set to "true") or should ignore the extension
(if set to "false").  The [arg allowCA] argument is used to specify
as a boolean value whether or not we can be used a certificate
authority (CA).  The [arg caDepth] argument indicates how many children 
CAs can be children of this CA in a depth-wise fashion.  A value of "0"
for the [arg caDepth] argument means that this CA cannot sign a CA
certificate and have the result be valid.  A value of "-1" indicates
infinite depth.



[list_end]

[section "EXAMPLES"]

[example {
}]

[example {
}]

[section "REFERENCES"]

[list_begin enumerated]
[enum]
[list_end]

[see_also aes(n) des(n) md5(n) sha1(n) blowfish(n)]

[section AUTHORS]
Roy Keene

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph rsa] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[keywords rsa cipher {public key cipher} security encryption {data integrity}]
[manpage_end]







|




<
<

















<
<



<
|
<
<
|
<
<
<
<
<
<
<

268
269
270
271
272
273
274
275
276
277
278
279


280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296


297
298
299

300


301







302
extension is understood ("id-ce-basicConstraints").  It accepts three
arguments [arg critical] [arg allowCA] [arg caDepth].  The [arg critical]
argument to this extension (and any extension) whether or not the
validator should reject the certificate as invalid if it does not
understand the extension (if set to "true") or should ignore the extension
(if set to "false").  The [arg allowCA] argument is used to specify
as a boolean value whether or not we can be used a certificate
authority (CA).  The [arg caDepth] argument indicates how many children
CAs can be children of this CA in a depth-wise fashion.  A value of "0"
for the [arg caDepth] argument means that this CA cannot sign a CA
certificate and have the result be valid.  A value of "-1" indicates
infinite depth.



[list_end]

[section "EXAMPLES"]

[example {
}]

[example {
}]

[section "REFERENCES"]

[list_begin enumerated]
[enum]
[list_end]



[section AUTHORS]
Roy Keene


[vset CATEGORY rsa]


[include ../doctools2base/include/feedback.inc]







[manpage_end]

Changes to modules/pluginmgr/pluginmgr.man.

1
2


3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*- paths manpage}]
[manpage_begin pluginmgr n 0.3]


[copyright {2005 Andreas Kupries <[email protected]>}]
[moddesc   {Plugin management}]
[titledesc {Manage a plugin}]
[category  {Programming tools}]
[require Tcl 8.4]
[require pluginmgr [opt 0.3]]
[description]
[keywords {plugin management} {plugin search}]

This package provides commands and objects for the generic management
of plugins which can be loaded into an application.

[para]

To avoid the implementation of yet another system to locate Tcl code


>
>







<







1
2
3
4
5
6
7
8
9
10
11

12
13
14
15
16
17
18
[comment {-*- tcl -*- paths manpage}]
[manpage_begin pluginmgr n 0.3]
[keywords {plugin management}]
[keywords {plugin search}]
[copyright {2005 Andreas Kupries <[email protected]>}]
[moddesc   {Plugin management}]
[titledesc {Manage a plugin}]
[category  {Programming tools}]
[require Tcl 8.4]
[require pluginmgr [opt 0.3]]
[description]


This package provides commands and objects for the generic management
of plugins which can be loaded into an application.

[para]

To avoid the implementation of yet another system to locate Tcl code
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
qualified, and in the specified namespace otherwise.

[para]

The options and their values coming after the name of the object are
used to set the initial configuration of the mamager object,
specifying the applicable plugins and their API.


[call [cmd ::pluginmgr::paths] [arg objectName] [arg name]...]

This utility command adds a set of paths to the specified object,
based on the given [arg name]s.

It will search for:







<







70
71
72
73
74
75
76

77
78
79
80
81
82
83
qualified, and in the specified namespace otherwise.

[para]

The options and their values coming after the name of the object are
used to set the initial configuration of the mamager object,
specifying the applicable plugins and their API.


[call [cmd ::pluginmgr::paths] [arg objectName] [arg name]...]

This utility command adds a set of paths to the specified object,
based on the given [arg name]s.

It will search for:
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
       reg  HKEY_CURRENT_USER\SOFTWARE\doctools\idx\PLUGINS
       path ~/.doctools/plugin
       path ~/.doctools/idx/plugin
}]

[list_end]


[subsection {OBJECT COMMAND}]

All commands created by the command [cmd ::pluginmgr] (See section
[sectref {PACKAGE COMMANDS}]) have the following general form and may
be used to invoke various operations on their plugin manager object.

[list_begin definitions]

[call [cmd objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the exact
behavior of the command. See section [sectref {OBJECT METHODS}] for
the detailed specifications.

[list_end]


[subsection {OBJECT METHODS}]

[list_begin definitions]

[call [arg objectName] [method clone]]

This method creates a new plugin management object and returns the
associated object command. The generated object is a clone of the
object the method was invoked on. I.e. the new object will have the
same configuration as the current object. With regard to state, if the
current object has a plugin loaded then this plugin and all associated
state is moved to the generated clone and the current object is reset
into the base state (no plugin loaded). In this manner a configured
plugin manager is also a factory for loaded plugins.


[call [arg objectName] [method configure]]

The method returns a list of all known options and their current
values when called without any arguments.


[call [arg objectName] [method configure] [arg option]]

The method behaves like the method [method cget] when called with a
single argument and returns the value of the option specified by said
argument.


[call [arg objectName] [method configure] [option -option] [arg value]...]

The method reconfigures the specified [option option]s of the object,
setting them to the associated [arg value]s, when called with an even
number of arguments, at least two.

[para]

The legal options are described in the section
[sectref {OBJECT CONFIGURATION}].


[call [arg objectName] [method cget] [option -option]]

This method expects a legal configuration option as argument and will
return the current value of that option for the object the method was
invoked for.

[para]

The legal configuration options are described in section
[sectref {OBJECT CONFIGURATION}].


[call [arg objectName] [method destroy]]

This method destroys the object it is invoked for.


[call [arg objectName] [method do] [arg arg]...]

This method interprets its list of arguments as the words of a command
and invokes this command in the execution context of the plugin.

The result of the invoked command is made the result of the method.

The call will fail with an error if no valid plugin has been loaded
into the manager object.


[call [arg objectName] [method interpreter]]

This method returns the handle of the safe interpreter the current
plugin is loaded into. An empty string as return value signals that
the manager currently has no valid plugin loaded.


[call [arg objectName] [method plugin]]

This method returns the name of the plugin currently loaded. An empty
string as return value signals that the manager currently has no valid
plugin loaded.


[call [arg objectName] [method load] [arg string]]

This method loads, validates, and initializes a named plugin into the
manager object.

[para]







<















<
















<




<






<











<












<



<











<






<





<







163
164
165
166
167
168
169

170
171
172
173
174
175
176
177
178
179
180
181
182
183
184

185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200

201
202
203
204

205
206
207
208
209
210

211
212
213
214
215
216
217
218
219
220
221

222
223
224
225
226
227
228
229
230
231
232
233

234
235
236

237
238
239
240
241
242
243
244
245
246
247

248
249
250
251
252
253

254
255
256
257
258

259
260
261
262
263
264
265
       reg  HKEY_CURRENT_USER\SOFTWARE\doctools\idx\PLUGINS
       path ~/.doctools/plugin
       path ~/.doctools/idx/plugin
}]

[list_end]


[subsection {OBJECT COMMAND}]

All commands created by the command [cmd ::pluginmgr] (See section
[sectref {PACKAGE COMMANDS}]) have the following general form and may
be used to invoke various operations on their plugin manager object.

[list_begin definitions]

[call [cmd objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the exact
behavior of the command. See section [sectref {OBJECT METHODS}] for
the detailed specifications.

[list_end]


[subsection {OBJECT METHODS}]

[list_begin definitions]

[call [arg objectName] [method clone]]

This method creates a new plugin management object and returns the
associated object command. The generated object is a clone of the
object the method was invoked on. I.e. the new object will have the
same configuration as the current object. With regard to state, if the
current object has a plugin loaded then this plugin and all associated
state is moved to the generated clone and the current object is reset
into the base state (no plugin loaded). In this manner a configured
plugin manager is also a factory for loaded plugins.


[call [arg objectName] [method configure]]

The method returns a list of all known options and their current
values when called without any arguments.


[call [arg objectName] [method configure] [arg option]]

The method behaves like the method [method cget] when called with a
single argument and returns the value of the option specified by said
argument.


[call [arg objectName] [method configure] [option -option] [arg value]...]

The method reconfigures the specified [option option]s of the object,
setting them to the associated [arg value]s, when called with an even
number of arguments, at least two.

[para]

The legal options are described in the section
[sectref {OBJECT CONFIGURATION}].


[call [arg objectName] [method cget] [option -option]]

This method expects a legal configuration option as argument and will
return the current value of that option for the object the method was
invoked for.

[para]

The legal configuration options are described in section
[sectref {OBJECT CONFIGURATION}].


[call [arg objectName] [method destroy]]

This method destroys the object it is invoked for.


[call [arg objectName] [method do] [arg arg]...]

This method interprets its list of arguments as the words of a command
and invokes this command in the execution context of the plugin.

The result of the invoked command is made the result of the method.

The call will fail with an error if no valid plugin has been loaded
into the manager object.


[call [arg objectName] [method interpreter]]

This method returns the handle of the safe interpreter the current
plugin is loaded into. An empty string as return value signals that
the manager currently has no valid plugin loaded.


[call [arg objectName] [method plugin]]

This method returns the name of the plugin currently loaded. An empty
string as return value signals that the manager currently has no valid
plugin loaded.


[call [arg objectName] [method load] [arg string]]

This method loads, validates, and initializes a named plugin into the
manager object.

[para]
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
[para]

A previously loaded plugin is discarded, but only if the new plugin
was found and sucessfully validated and initialized. Note that there
will be no intereference between old and new plugin as both will be
put into separate safe interpreters.


[call [arg objectName] [method unload]]

This method unloads the currently loaded plugin. It returns the empty
string. The call will be silently ignored if no plugin is loaded at
all.


[call [arg objectName] [method list]]

This method uses the contents of the option [option -pattern] to find
all packages which can be plugins under the purview of this manager
object. It translates their names into plugin names and returns a list
containing them.


[call [arg objectName] [method path] [arg path]]

This methods adds the specified [arg path] to the list of additional
package paths to look at when searching for a plugin. It returns the
empty string. Duplicate paths are ignored, i.e. each path is added
only once. Paths are made absolute, but are not normalized.


[call [arg objectName] [method paths]]

This method returns a list containing all additional paths which have
been added to the plugin manager object since its creation.

[list_end]


[subsection {OBJECT CONFIGURATION}]

All plugin manager objects understand the following configuration options:

[list_begin options]








<





<








<







<






<







304
305
306
307
308
309
310

311
312
313
314
315

316
317
318
319
320
321
322
323

324
325
326
327
328
329
330

331
332
333
334
335
336

337
338
339
340
341
342
343
[para]

A previously loaded plugin is discarded, but only if the new plugin
was found and sucessfully validated and initialized. Note that there
will be no intereference between old and new plugin as both will be
put into separate safe interpreters.


[call [arg objectName] [method unload]]

This method unloads the currently loaded plugin. It returns the empty
string. The call will be silently ignored if no plugin is loaded at
all.


[call [arg objectName] [method list]]

This method uses the contents of the option [option -pattern] to find
all packages which can be plugins under the purview of this manager
object. It translates their names into plugin names and returns a list
containing them.


[call [arg objectName] [method path] [arg path]]

This methods adds the specified [arg path] to the list of additional
package paths to look at when searching for a plugin. It returns the
empty string. Duplicate paths are ignored, i.e. each path is added
only once. Paths are made absolute, but are not normalized.


[call [arg objectName] [method paths]]

This method returns a list containing all additional paths which have
been added to the plugin manager object since its creation.

[list_end]


[subsection {OBJECT CONFIGURATION}]

All plugin manager objects understand the following configuration options:

[list_begin options]

367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390

[para]

This option has no default, except if option [option -name] was set.
It has to be set before attempting to load a plugin, either directly,
or through option [option -name].


[opt_def -api [arg list]]

The value of this option is a list of command names, and any plugin
loaded has to provide these commands. Names which are not fully
qualified are considered to be rooted in the global namespace.

If empty no expectations are made on the plugin. The default value is
the empty list.


[opt_def -check [arg cmdprefix]]

The value of this option is interpreted as a command prefix.

Its purpose is to perform complex checks on a loaded plugin package to
validate it, which go beyond a simple list of provided commands.







<








<







351
352
353
354
355
356
357

358
359
360
361
362
363
364
365

366
367
368
369
370
371
372

[para]

This option has no default, except if option [option -name] was set.
It has to be set before attempting to load a plugin, either directly,
or through option [option -name].


[opt_def -api [arg list]]

The value of this option is a list of command names, and any plugin
loaded has to provide these commands. Names which are not fully
qualified are considered to be rooted in the global namespace.

If empty no expectations are made on the plugin. The default value is
the empty list.


[opt_def -check [arg cmdprefix]]

The value of this option is interpreted as a command prefix.

Its purpose is to perform complex checks on a loaded plugin package to
validate it, which go beyond a simple list of provided commands.
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
passed the basic API check specified through the option [option -api].

[para]

The default value is the empty list, which causes the manager object
to suppress the call and to assume the candidate plugin passes.


[opt_def -cmds [arg dict]]

The value of this option is a dictionary.  It specifies the commands
which will be made available to the plugin (as keys), and the trusted
commands in the environment which implement them (as values).

The trusted commands will be executed in the interpreter specified by
the option [option -cmdip].

The default value is the empty dictionary.


[opt_def -cmdip [arg ipspec]]

The value of this option is the path of the interpreter where the
trusted commands given to the plugin will be executed in.

The default is the empty string, referring to the current interpreter.


[opt_def -setup [arg cmdprefix]]

The value of this option is interpreted as a command prefix.

[para]

It is called whenever a new safe interpreter for a plugin has been
created, but before a plugin is loaded. It is provided with the
manager object command and the interpreter handle as its only
arguments. Any return value will be ignored.

[para]

Its purpose is give a user of the plugin management the ability to
define commands, packages, etc. a chosen plugin may need while being
loaded.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph pluginmgr] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]







<











<






<




















|
<
|
<
<
<
<
<
<
<
<
<

381
382
383
384
385
386
387

388
389
390
391
392
393
394
395
396
397
398

399
400
401
402
403
404

405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425

426









427
passed the basic API check specified through the option [option -api].

[para]

The default value is the empty list, which causes the manager object
to suppress the call and to assume the candidate plugin passes.


[opt_def -cmds [arg dict]]

The value of this option is a dictionary.  It specifies the commands
which will be made available to the plugin (as keys), and the trusted
commands in the environment which implement them (as values).

The trusted commands will be executed in the interpreter specified by
the option [option -cmdip].

The default value is the empty dictionary.


[opt_def -cmdip [arg ipspec]]

The value of this option is the path of the interpreter where the
trusted commands given to the plugin will be executed in.

The default is the empty string, referring to the current interpreter.


[opt_def -setup [arg cmdprefix]]

The value of this option is interpreted as a command prefix.

[para]

It is called whenever a new safe interpreter for a plugin has been
created, but before a plugin is loaded. It is provided with the
manager object command and the interpreter handle as its only
arguments. Any return value will be ignored.

[para]

Its purpose is give a user of the plugin management the ability to
define commands, packages, etc. a chosen plugin may need while being
loaded.

[list_end]

[vset CATEGORY pluginmgr]

[include ../doctools2base/include/feedback.inc]









[manpage_end]

Changes to modules/png/png.man.

1




2
3
4
5
6
7
8
[manpage_begin png n 0.1.2]




[copyright {2004, Code: Aaron Faupell <[email protected]>}]
[copyright {2004, Doc:  Andreas Kupries <[email protected]>}]
[moddesc   {Image manipulation}]
[titledesc {PNG querying and manipulation of meta data}]
[category  {File formats}]
[require Tcl 8.2]
[require crc32]

>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
[manpage_begin png n 0.1.2]
[keywords comment]
[keywords image]
[keywords png]
[keywords timestamp]
[copyright {2004, Code: Aaron Faupell <[email protected]>}]
[copyright {2004, Doc:  Andreas Kupries <[email protected]>}]
[moddesc   {Image manipulation}]
[titledesc {PNG querying and manipulation of meta data}]
[category  {File formats}]
[require Tcl 8.2]
[require crc32]
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126

Throws an error if file is not a PNG image, or if the checksum of the
header is invalid. For information on interpreting the values for the
returned properties see

[uri http://www.libpng.org/pub/png/spec/1.2/PNG-Chunks.html].


[call [cmd ::png::getTimestamp] [arg file]]

Returns the epoch time if a timestamp chunk is found in the PNG image
contained in the [arg file], otherwise returns the empty string. Does
not attempt to verify the checksum of the timestamp chunk.

Throws an error if the [arg file] is not a valid PNG image.


[call [cmd ::png::setTimestamp] [arg file] [arg time]]

Writes a new timestamp to the [arg file], either replacing the old
timestamp, or adding one just before the data chunks if there was no
previous timestamp. [arg time] is the new time in the gmt epoch
format.

Throws an error if [arg file] is not a valid PNG image.


[call [cmd ::png::getComments] [arg file]]

Currently supports only uncompressed comments. Does not attempt to
verify the checksums of the comment chunks. Returns a list where each
element is a comment. Each comment is itself a list. The list for a
plain text comment consists of 2 elements: the human readable keyword,
and the text data. A unicode (international) comment consists of 4
elements: the human readable keyword, the language identifier, the
translated keyword, and the unicode text data.

Throws an error if [arg file] is not a valid PNG image.


[call [cmd ::png::removeComments] [arg file]]

Removes all comments from the PNG image in [arg file]. Beware - This
uses memory equal to the file size minus comments, to hold the
intermediate result.

Throws an error if [arg file] is not a valid PNG image.


[call [cmd ::png::addComment] [arg file] [arg keyword] [arg text]]

Adds a plain [arg text] comment to the PNG image in [arg file], just
before the first data chunk. Will throw an error if no data chunk is
found. [arg keyword] has to be less than 80 characters long to conform
to the PNG specification.


[call [cmd ::png::addComment] [arg file] [arg keyword] [arg lang] [arg keyword2] [arg text]]

Adds a unicode (international) comment to the PNG image in [arg file],
just before the first data chunk. Will throw an error if no data chunk
is found. [arg keyword] has to be less than 80 characters long to
conform to the PNG specification. [arg keyword2] is the translated







<







<









<













<








<






<







68
69
70
71
72
73
74

75
76
77
78
79
80
81

82
83
84
85
86
87
88
89
90

91
92
93
94
95
96
97
98
99
100
101
102
103

104
105
106
107
108
109
110
111

112
113
114
115
116
117

118
119
120
121
122
123
124

Throws an error if file is not a PNG image, or if the checksum of the
header is invalid. For information on interpreting the values for the
returned properties see

[uri http://www.libpng.org/pub/png/spec/1.2/PNG-Chunks.html].


[call [cmd ::png::getTimestamp] [arg file]]

Returns the epoch time if a timestamp chunk is found in the PNG image
contained in the [arg file], otherwise returns the empty string. Does
not attempt to verify the checksum of the timestamp chunk.

Throws an error if the [arg file] is not a valid PNG image.


[call [cmd ::png::setTimestamp] [arg file] [arg time]]

Writes a new timestamp to the [arg file], either replacing the old
timestamp, or adding one just before the data chunks if there was no
previous timestamp. [arg time] is the new time in the gmt epoch
format.

Throws an error if [arg file] is not a valid PNG image.


[call [cmd ::png::getComments] [arg file]]

Currently supports only uncompressed comments. Does not attempt to
verify the checksums of the comment chunks. Returns a list where each
element is a comment. Each comment is itself a list. The list for a
plain text comment consists of 2 elements: the human readable keyword,
and the text data. A unicode (international) comment consists of 4
elements: the human readable keyword, the language identifier, the
translated keyword, and the unicode text data.

Throws an error if [arg file] is not a valid PNG image.


[call [cmd ::png::removeComments] [arg file]]

Removes all comments from the PNG image in [arg file]. Beware - This
uses memory equal to the file size minus comments, to hold the
intermediate result.

Throws an error if [arg file] is not a valid PNG image.


[call [cmd ::png::addComment] [arg file] [arg keyword] [arg text]]

Adds a plain [arg text] comment to the PNG image in [arg file], just
before the first data chunk. Will throw an error if no data chunk is
found. [arg keyword] has to be less than 80 characters long to conform
to the PNG specification.


[call [cmd ::png::addComment] [arg file] [arg keyword] [arg lang] [arg keyword2] [arg text]]

Adds a unicode (international) comment to the PNG image in [arg file],
just before the first data chunk. Will throw an error if no data chunk
is found. [arg keyword] has to be less than 80 characters long to
conform to the PNG specification. [arg keyword2] is the translated
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
[call [cmd ::png::write] [arg file] [arg data]]

Takes a list of scanlines in the Tk_GetColor format and writes the represented image
to [arg file].

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph png] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords png image comment timestamp]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<

132
133
134
135
136
137
138

139


140








141
[call [cmd ::png::write] [arg file] [arg data]]

Takes a list of scanlines in the Tk_GetColor format and writes the represented image
to [arg file].

[list_end]


[vset CATEGORY png]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/pop3/pop3.man.

1








2
3
4
5
6
7
8
9
10
11
12
[manpage_begin pop3 n 1.9]








[comment {-*- tcl -*- doctools manpage}]
[moddesc   {Tcl POP3 Client Library}]
[titledesc {Tcl client for POP3 email protocol}]
[keywords mail email pop pop3 {rfc 1939} ssl tls secure]
[category  Networking]
[require Tcl  8.4]
[require pop3 [opt 1.9]]
[description]

The [package pop3] package provides a simple Tcl-only client library
for the POP3 email protocol as specified in

>
>
>
>
>
>
>
>



<







1
2
3
4
5
6
7
8
9
10
11
12

13
14
15
16
17
18
19
[manpage_begin pop3 n 1.9]
[keywords email]
[keywords mail]
[keywords pop]
[keywords pop3]
[keywords {rfc 1939}]
[keywords secure]
[keywords ssl]
[keywords tls]
[comment {-*- tcl -*- doctools manpage}]
[moddesc   {Tcl POP3 Client Library}]
[titledesc {Tcl client for POP3 email protocol}]

[category  Networking]
[require Tcl  8.4]
[require pop3 [opt 1.9]]
[description]

The [package pop3] package provides a simple Tcl-only client library
for the POP3 email protocol as specified in
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
SSLv3 or TLSv1 connection. If the connection cannot be secured, the
connection will be closed and an error will be returned

[opt_def -tls-callback stls-callback-command]

This option allows the user to overide the [cmd tls::callback] used during
the [const -stls] SSL/TLS handshake. See the TLS manual for details on how
to implement this callback. 

[list_end]


[call [cmd ::pop3::config] [arg chan]]

Returns the configuration of the pop3 connection identified by the
channel handle [arg chan] as a serialized array.


[call [cmd ::pop3::status] [arg chan]]

Query the server for the status of the mail spool.  The status is
returned as a list containing two elements, the first is the number of
email messages on the server and the second is the size (in octets, 8
bit blocks) of the entire mail spool.







|


<





<







81
82
83
84
85
86
87
88
89
90

91
92
93
94
95

96
97
98
99
100
101
102
SSLv3 or TLSv1 connection. If the connection cannot be secured, the
connection will be closed and an error will be returned

[opt_def -tls-callback stls-callback-command]

This option allows the user to overide the [cmd tls::callback] used during
the [const -stls] SSL/TLS handshake. See the TLS manual for details on how
to implement this callback.

[list_end]


[call [cmd ::pop3::config] [arg chan]]

Returns the configuration of the pop3 connection identified by the
channel handle [arg chan] as a serialized array.


[call [cmd ::pop3::status] [arg chan]]

Query the server for the status of the mail spool.  The status is
returned as a list containing two elements, the first is the number of
email messages on the server and the second is the size (in octets, 8
bit blocks) of the entire mail spool.
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138

[para]

It should also be noted that the system checks upon the configured
mode and falls back to the slower modes if the above assumptions are
not true.


[call [cmd ::pop3::delete] [arg {chan startIndex}] [opt [arg endIndex]]]

Delete a range of messages from the server.  If the [arg endIndex] is
not specified, only one message will be deleted.  Note, the indices
are not reordered on the server, so if you delete message 1, then the
first message in the queue is message 2 (message index 1 is no longer
valid).  See the [arg startIndex] and [arg endIndex] descriptions







<







129
130
131
132
133
134
135

136
137
138
139
140
141
142

[para]

It should also be noted that the system checks upon the configured
mode and falls back to the slower modes if the above assumptions are
not true.


[call [cmd ::pop3::delete] [arg {chan startIndex}] [opt [arg endIndex]]]

Delete a range of messages from the server.  If the [arg endIndex] is
not specified, only one message will be deleted.  Note, the indices
are not reordered on the server, so if you delete message 1, then the
first message in the queue is message 2 (message index 1 is no longer
valid).  See the [arg startIndex] and [arg endIndex] descriptions
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165

This is a logical value for the first message in the spool, equivalent
to the value 1.

[def [const next]]

The message immediately following the last message read, see
[cmd ::pop3::last]. 

[def [const end]]

The most recent message in the spool (the end of the spool).  This is
useful to retrieve only the most recent message.

[list_end]







|







155
156
157
158
159
160
161
162
163
164
165
166
167
168
169

This is a logical value for the first message in the spool, equivalent
to the value 1.

[def [const next]]

The message immediately following the last message read, see
[cmd ::pop3::last].

[def [const end]]

The most recent message in the spool (the end of the spool).  This is
useful to retrieve only the most recent message.

[list_end]
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
[list_end]

[call [cmd ::pop3::list] [arg chan] [opt [arg msg]]]

Returns the scan listing of the mailbox. If parameter [arg msg] is
given, then the listing only for that message is returned.


[call [cmd ::pop3::top] [arg chan] [arg msg] [arg n] ]


Optional POP3 command, not all servers may support this.

[cmd ::pop3::top] retrieves headers of a message, specified by
parameter [arg msg], and number of [arg n] lines from the message
body.

[call [cmd ::pop3::uidl] [arg chan] [opt [arg msg]]]

Optional POP3 command, not all servers may support this. 

[cmd ::pop3::uidl] returns the uid listing of the mailbox. If the
parameter [arg msg] is specified, then the listing only for that
message is returned.

[call [cmd ::pop3::capa] [arg chan]]

Optional POP3 command, not all servers may support this. 

[cmd ::pop3::capa] returns a list of the capabilities of the server.
TOP, SASL, UIDL, LOGIN-DELAY and STLS are typical capabilities.

See IETF RFC 2449.

[call [cmd ::pop3::close] [arg chan]]

Gracefully close the connect after sending a POP3 QUIT command down
the socket.

[list_end]


[section {Secure mail transfer}]

A pop3 connection can be secured with SSL/TLS by requiring the package
[package TLS] and then using either the option [option -socketcmd] or
the option [option -stls] of the command [cmd pop3::open].








<

<









|







|












<







192
193
194
195
196
197
198

199

200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229

230
231
232
233
234
235
236
[list_end]

[call [cmd ::pop3::list] [arg chan] [opt [arg msg]]]

Returns the scan listing of the mailbox. If parameter [arg msg] is
given, then the listing only for that message is returned.


[call [cmd ::pop3::top] [arg chan] [arg msg] [arg n] ]


Optional POP3 command, not all servers may support this.

[cmd ::pop3::top] retrieves headers of a message, specified by
parameter [arg msg], and number of [arg n] lines from the message
body.

[call [cmd ::pop3::uidl] [arg chan] [opt [arg msg]]]

Optional POP3 command, not all servers may support this.

[cmd ::pop3::uidl] returns the uid listing of the mailbox. If the
parameter [arg msg] is specified, then the listing only for that
message is returned.

[call [cmd ::pop3::capa] [arg chan]]

Optional POP3 command, not all servers may support this.

[cmd ::pop3::capa] returns a list of the capabilities of the server.
TOP, SASL, UIDL, LOGIN-DELAY and STLS are typical capabilities.

See IETF RFC 2449.

[call [cmd ::pop3::close] [arg chan]]

Gracefully close the connect after sending a POP3 QUIT command down
the socket.

[list_end]


[section {Secure mail transfer}]

A pop3 connection can be secured with SSL/TLS by requiring the package
[package TLS] and then using either the option [option -socketcmd] or
the option [option -stls] of the command [cmd pop3::open].

261
262
263
264
265
266
267
268
269
270
271
272

	# Create secured pop3 channel
	pop3::open -stls 1 \\
		$thehost $theuser $thepassword

	...
}]


[vset CATEGORY pop3]
[include ../doctools2base/include/feedback.inc]
[manpage_end]







<




262
263
264
265
266
267
268

269
270
271
272

	# Create secured pop3 channel
	pop3::open -stls 1 \\
		$thehost $theuser $thepassword

	...
}]


[vset CATEGORY pop3]
[include ../doctools2base/include/feedback.inc]
[manpage_end]

Changes to modules/pop3d/pop3d.man.

1
2








3
4
5
6
7
8
9
10
11
12
13
14
15
[comment {-*- tcl -*-}]
[manpage_begin pop3d n 1.1.0]








[copyright {2002-2009 Andreas Kupries <[email protected]>}]
[copyright {2005 Reinhard Max  <[email protected]>}]
[moddesc   {Tcl POP3 Server Package}]
[titledesc {Tcl POP3 server implementation}]
[category  Networking]
[keywords pop3 internet network protocol {rfc 1939} ssl tls secure]
[require Tcl 8.3]
[require pop3d [opt 1.1.0]]
[description]
[para]

[list_begin definitions]



>
>
>
>
>
>
>
>





<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

16
17
18
19
20
21
22
[comment {-*- tcl -*-}]
[manpage_begin pop3d n 1.1.0]
[keywords internet]
[keywords network]
[keywords pop3]
[keywords protocol]
[keywords {rfc 1939}]
[keywords secure]
[keywords ssl]
[keywords tls]
[copyright {2002-2009 Andreas Kupries <[email protected]>}]
[copyright {2005 Reinhard Max  <[email protected]>}]
[moddesc   {Tcl POP3 Server Package}]
[titledesc {Tcl POP3 server implementation}]
[category  Networking]

[require Tcl 8.3]
[require pop3d [opt 1.1.0]]
[description]
[para]

[list_begin definitions]

249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
	package require tls
	tls::init \\
		...

	pop3d::new S -socket tls::socket
	...
}]


[section References]

[list_begin enumerated]
[enum] [uri http://www.rfc-editor.org/rfc/rfc1939.txt {RFC 1939}]
[enum] [uri http://www.rfc-editor.org/rfc/rfc2449.txt {RFC 2449}]
[list_end]

[vset CATEGORY pop3d]
[include ../doctools2base/include/feedback.inc]
[manpage_end]







<











256
257
258
259
260
261
262

263
264
265
266
267
268
269
270
271
272
273
	package require tls
	tls::init \\
		...

	pop3d::new S -socket tls::socket
	...
}]


[section References]

[list_begin enumerated]
[enum] [uri http://www.rfc-editor.org/rfc/rfc1939.txt {RFC 1939}]
[enum] [uri http://www.rfc-editor.org/rfc/rfc2449.txt {RFC 2449}]
[list_end]

[vset CATEGORY pop3d]
[include ../doctools2base/include/feedback.inc]
[manpage_end]

Changes to modules/pop3d/pop3d_dbox.man.

1
2





3
4
5
6
7
8
9
[comment {-*- tcl -*-}]
[manpage_begin pop3d::dbox n 1.0.2]





[copyright {2002 Andreas Kupries <[email protected]>}]
[moddesc   {Tcl POP3 Server Package}]
[titledesc {Simple mailbox database for pop3d}]
[category  Networking]
[require Tcl 8.3]
[require pop3d::dbox [opt 1.0.2]]
[description]


>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
[comment {-*- tcl -*-}]
[manpage_begin pop3d::dbox n 1.0.2]
[keywords internet]
[keywords network]
[keywords pop3]
[keywords protocol]
[keywords {rfc 822}]
[copyright {2002 Andreas Kupries <[email protected]>}]
[moddesc   {Tcl POP3 Server Package}]
[titledesc {Simple mailbox database for pop3d}]
[category  Networking]
[require Tcl 8.3]
[require pop3d::dbox [opt 1.0.2]]
[description]
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173

If specified the [arg msgId] has to be in the range "1 ... [lb][arg dbName] [method stat][rb]"

or this call will fail. If [method stat] was not called before this
call, [method size] will assume that there are zero messages in the
mailbox.


[call [arg dbName] [method dele] [arg {mbox msgList}]]

Deletes the messages whose numeric ids are contained in the
[arg msgList] from the mailbox specified via [arg mbox].

The [arg msgList] must not be empty or this call will fail.

The numeric ids in [arg msgList] have to be in the range "1 ...
[lb][arg dbName] [method stat][rb]" or this
call will fail. If [method stat] was not called
before this call, [method dele] will assume
that there are zero messages in the mailbox.


[call [arg storageCmd] [method get] [arg mbox] [arg msgId]]

Returns a handle for the specified message. This handle is a mime
token following the interface described in the documentation of
package [package mime]. The token is [emph read-only]. In other
words, the caller is allowed to do anything with the token except to
modify it.

The [arg msgId] has to be in the range "1 ...
[lb][arg dbName] [method stat][rb]" or this
call will fail. If [method stat] was not called
before this call, [method get] will assume
that there are zero messages in the mailbox.


[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph pop3d] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords pop3 internet network protocol {rfc 822}]
[manpage_end]







<












<















<


<
|
<
<
|
<
<
<
<
<
<
<
<

126
127
128
129
130
131
132

133
134
135
136
137
138
139
140
141
142
143
144

145
146
147
148
149
150
151
152
153
154
155
156
157
158
159

160
161

162


163








164

If specified the [arg msgId] has to be in the range "1 ... [lb][arg dbName] [method stat][rb]"

or this call will fail. If [method stat] was not called before this
call, [method size] will assume that there are zero messages in the
mailbox.


[call [arg dbName] [method dele] [arg {mbox msgList}]]

Deletes the messages whose numeric ids are contained in the
[arg msgList] from the mailbox specified via [arg mbox].

The [arg msgList] must not be empty or this call will fail.

The numeric ids in [arg msgList] have to be in the range "1 ...
[lb][arg dbName] [method stat][rb]" or this
call will fail. If [method stat] was not called
before this call, [method dele] will assume
that there are zero messages in the mailbox.


[call [arg storageCmd] [method get] [arg mbox] [arg msgId]]

Returns a handle for the specified message. This handle is a mime
token following the interface described in the documentation of
package [package mime]. The token is [emph read-only]. In other
words, the caller is allowed to do anything with the token except to
modify it.

The [arg msgId] has to be in the range "1 ...
[lb][arg dbName] [method stat][rb]" or this
call will fail. If [method stat] was not called
before this call, [method get] will assume
that there are zero messages in the mailbox.


[list_end]


[vset CATEGORY pop3d]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/pop3d/pop3d_udb.man.

1
2




3
4
5
6
7
8
9
[comment {-*- tcl -*-}]
[manpage_begin pop3d::udb n 1.0.1]




[copyright {2002 Andreas Kupries <[email protected]>}]
[moddesc   {Tcl POP3 Server Package}]
[titledesc {Simple user database for pop3d}]
[category  Networking]
[require Tcl 8.2]
[require pop3d::udb [opt 1.0.1]]
[description]


>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
[comment {-*- tcl -*-}]
[manpage_begin pop3d::udb n 1.0.1]
[keywords internet]
[keywords network]
[keywords pop3]
[keywords protocol]
[copyright {2002 Andreas Kupries <[email protected]>}]
[moddesc   {Tcl POP3 Server Package}]
[titledesc {Simple user database for pop3d}]
[category  Networking]
[require Tcl 8.2]
[require pop3d::udb [opt 1.0.1]]
[description]
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[para]

Objects created by this package can be directly used in the
authentication callback of pop3 servers following the same interface
as servers created by the package [package pop3d].

[para]


[list_begin definitions]

[call  [cmd ::pop3d::udb::new] [opt [arg dbName]]]

This command creates a new database object with an associated global
Tcl command whose name is [arg dbName].







<







21
22
23
24
25
26
27

28
29
30
31
32
33
34
[para]

Objects created by this package can be directly used in the
authentication callback of pop3 servers following the same interface
as servers created by the package [package pop3d].

[para]


[list_begin definitions]

[call  [cmd ::pop3d::udb::new] [opt [arg dbName]]]

This command creates a new database object with an associated global
Tcl command whose name is [arg dbName].
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
interpreter knows the [cmd add] command for adding users and their
associated data to this database. This command has the same argument
signature as the method [method add]. The path of the [arg file] is
remembered internally so that it can be used in the next call of

[arg dbName] [method save] without an argument.


[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph pop3d] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords pop3 internet network protocol]
[manpage_end]







<


<
|
<
<
|
<
<
<
<
<
<
<
<

101
102
103
104
105
106
107

108
109

110


111








112
interpreter knows the [cmd add] command for adding users and their
associated data to this database. This command has the same argument
signature as the method [method add]. The path of the [arg file] is
remembered internally so that it can be used in the next call of

[arg dbName] [method save] without an argument.


[list_end]


[vset CATEGORY pop3d]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/profiler/profiler.man.

1
2



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin profiler n 0.3]



[moddesc   {Tcl Profiler}]
[titledesc {Tcl source code profiler}]
[category  {Programming tools}]
[require Tcl 8.3]
[require profiler [opt 0.3]]
[description]
[para]

The [package profiler] package provides a simple Tcl source code
profiler.  It is a function-level profiler; that is, it collects only
function-level information, not the more detailed line-level
information.  It operates by redefining the Tcl [cmd proc] command.
Profiling is initiated via the [cmd ::profiler::init] command.

[section COMMANDS]

[list_begin definitions]


[call [cmd ::profiler::init]]

Initiate profiling.  All procedures created after this command is
called will be profiled.  To profile an entire application, this
command must be called before any other commands.



>
>
>

















<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

23
24
25
26
27
28
29
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin profiler n 0.3]
[keywords performance]
[keywords profile]
[keywords speed]
[moddesc   {Tcl Profiler}]
[titledesc {Tcl source code profiler}]
[category  {Programming tools}]
[require Tcl 8.3]
[require profiler [opt 0.3]]
[description]
[para]

The [package profiler] package provides a simple Tcl source code
profiler.  It is a function-level profiler; that is, it collects only
function-level information, not the more detailed line-level
information.  It operates by redefining the Tcl [cmd proc] command.
Profiling is initiated via the [cmd ::profiler::init] command.

[section COMMANDS]

[list_begin definitions]


[call [cmd ::profiler::init]]

Initiate profiling.  All procedures created after this command is
called will be profiled.  To profile an entire application, this
command must be called before any other commands.

63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80

[def [const descendantTime]]

Sum of the time spent in descendants of [arg functionName].

[def [const averageDescendantTime]]

Average time spent in descendants of [arg functionName]. 

[list_end]


[call [cmd ::profiler::print] [opt [arg pattern]]]

Print profiling information for all functions matching [arg pattern].
If no pattern is specified, information about all functions will be
displayed.  The return result is a human readable display of the
profiling information.







|


<







65
66
67
68
69
70
71
72
73
74

75
76
77
78
79
80
81

[def [const descendantTime]]

Sum of the time spent in descendants of [arg functionName].

[def [const averageDescendantTime]]

Average time spent in descendants of [arg functionName].

[list_end]


[call [cmd ::profiler::print] [opt [arg pattern]]]

Print profiling information for all functions matching [arg pattern].
If no pattern is specified, information about all functions will be
displayed.  The return result is a human readable display of the
profiling information.
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131

[const avgRuntime].  The return result is a list of lists, where each
sublist consists of a function name and the value of [arg key] for
that function.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph profiler] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords profile performance speed]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<

112
113
114
115
116
117
118

119


120








121

[const avgRuntime].  The return result is a list of lists, where each
sublist consists of a function name and the value of [arg key] for
that function.

[list_end]


[vset CATEGORY profiler]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/pt/pt_astree.man.

37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
non-canonical serialization.

[para]

For the specification of serializations see the section
[sectref {AST serialization format}].


[call [cmd ::pt::ast] [method verify-as-canonical] \
	[arg serial]]

This command verifies that the content of [arg serial] is a valid
[term canonical] serialization of an abstract syntax tree and will
throw an error if that is not the case. The result of the command is
the empty string.

[para]

For the specification of canonical serializations see the section
[sectref {AST serialization format}].


[call [cmd ::pt::ast] [method canonicalize] [arg serial]]

This command assumes that the content of [arg serial] is a valid
[term regular] serialization of an abstract syntax and will throw an
error if that is not the case.

[para]

It will then convert the input into the [term canonical] serialization
of the contained tree and return it as its result. If the input is
already canonical it will be returned unchanged.

[para]

For the specification of regular and canonical serializations see the
section [sectref {AST serialization format}].


[call [cmd ::pt::ast] [method print] [arg serial]]

This command assumes that the argument [arg serial] contains a valid
serialization of an abstract syntax tree and returns a string
containing that tree in a human readable form.

[para]

The exact format of this form is not specified and cannot be relied on
for parsing or other machine-based activities.

[para]

For the specification of serializations see the section
[sectref {AST serialization format}].


[call [cmd ::pt::ast] [method bottomup] [arg cmdprefix] [arg ast]]

This command walks the abstract syntax tree [arg ast] from the bottom
up to the root, invoking the command prefix [arg cmdprefix] for each
node. This implies that the children of a node N are handled before N.








<












<


















<















<







37
38
39
40
41
42
43

44
45
46
47
48
49
50
51
52
53
54
55

56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73

74
75
76
77
78
79
80
81
82
83
84
85
86
87
88

89
90
91
92
93
94
95
non-canonical serialization.

[para]

For the specification of serializations see the section
[sectref {AST serialization format}].


[call [cmd ::pt::ast] [method verify-as-canonical] \
	[arg serial]]

This command verifies that the content of [arg serial] is a valid
[term canonical] serialization of an abstract syntax tree and will
throw an error if that is not the case. The result of the command is
the empty string.

[para]

For the specification of canonical serializations see the section
[sectref {AST serialization format}].


[call [cmd ::pt::ast] [method canonicalize] [arg serial]]

This command assumes that the content of [arg serial] is a valid
[term regular] serialization of an abstract syntax and will throw an
error if that is not the case.

[para]

It will then convert the input into the [term canonical] serialization
of the contained tree and return it as its result. If the input is
already canonical it will be returned unchanged.

[para]

For the specification of regular and canonical serializations see the
section [sectref {AST serialization format}].


[call [cmd ::pt::ast] [method print] [arg serial]]

This command assumes that the argument [arg serial] contains a valid
serialization of an abstract syntax tree and returns a string
containing that tree in a human readable form.

[para]

The exact format of this form is not specified and cannot be relied on
for parsing or other machine-based activities.

[para]

For the specification of serializations see the section
[sectref {AST serialization format}].


[call [cmd ::pt::ast] [method bottomup] [arg cmdprefix] [arg ast]]

This command walks the abstract syntax tree [arg ast] from the bottom
up to the root, invoking the command prefix [arg cmdprefix] for each
node. This implies that the children of a node N are handled before N.

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175

This also means that for all inner node the contents of the children
elements are the results of the command prefix invoked for the
children of this node.

[list_end]


[call [cmd ::pt::ast] [method topdown] [arg cmdprefix] [arg pe]]

This command walks the abstract syntax tree [arg ast] from the root
down to the leaves, invoking the command prefix [arg cmdprefix] for
each node. This implies that the children of a node N are handled
after N.

[para]

The command prefix has the same signature as for [method bottomup],
see above.

[para]

The result returned by the command prefix is [emph ignored].


[call [cmd ::pt::ast] [method equal] \
	[arg seriala] [arg serialb]]

This command tests the two sbstract syntax trees [arg seriala] and
[arg serialb] for structural equality. The result of the command is a
boolean value. It will be set to [const true] if the trees are
identical, and [const false] otherwise.

[para]

String equality is usable only if we can assume that the two trees are
pure Tcl lists.


[call [cmd ::pt::ast] [method terminal] [arg loc]]

This command command constructs the ast for a terminal node refering
to the position [arg loc] in the input, and returns it as the result
of the command.


[call [cmd ::pt::ast] [method nonterminal] [arg s] \
	[arg start] [arg end] [opt [arg child]...]]

This command command constructs the ast for a nonterminal node
refering to the symbol [arg s] covering the range of positions
[arg start] to [arg end] in the input, and the set of child nodes
[arg child] ..., from left right. The latter may be empty. The
constructed node is returned as the result of the command.


[list_end]

[include include/serial/ast.inc]
[include include/feedback.inc]
[manpage_end]







<
















<













<





<









<






111
112
113
114
115
116
117

118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133

134
135
136
137
138
139
140
141
142
143
144
145
146

147
148
149
150
151

152
153
154
155
156
157
158
159
160

161
162
163
164
165
166

This also means that for all inner node the contents of the children
elements are the results of the command prefix invoked for the
children of this node.

[list_end]


[call [cmd ::pt::ast] [method topdown] [arg cmdprefix] [arg pe]]

This command walks the abstract syntax tree [arg ast] from the root
down to the leaves, invoking the command prefix [arg cmdprefix] for
each node. This implies that the children of a node N are handled
after N.

[para]

The command prefix has the same signature as for [method bottomup],
see above.

[para]

The result returned by the command prefix is [emph ignored].


[call [cmd ::pt::ast] [method equal] \
	[arg seriala] [arg serialb]]

This command tests the two sbstract syntax trees [arg seriala] and
[arg serialb] for structural equality. The result of the command is a
boolean value. It will be set to [const true] if the trees are
identical, and [const false] otherwise.

[para]

String equality is usable only if we can assume that the two trees are
pure Tcl lists.


[call [cmd ::pt::ast] [method terminal] [arg loc]]

This command command constructs the ast for a terminal node refering
to the position [arg loc] in the input, and returns it as the result
of the command.


[call [cmd ::pt::ast] [method nonterminal] [arg s] \
	[arg start] [arg end] [opt [arg child]...]]

This command command constructs the ast for a nonterminal node
refering to the symbol [arg s] covering the range of positions
[arg start] to [arg end] in the input, and the set of child nodes
[arg child] ..., from left right. The latter may be empty. The
constructed node is returned as the result of the command.


[list_end]

[include include/serial/ast.inc]
[include include/feedback.inc]
[manpage_end]

Changes to modules/pt/pt_from_api.man.

53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
parsing expression grammar, as specified in section
[sectref {PEG serialization format}], the result of reading and
converting the input text.

[list_end][comment {-- api command signatures --}]
[list_end][comment {-- converter rules --}]


[section {Plugin API}]

Any (grammar) import plugin has to follow the rules set out below:

[list_begin enumerated][comment {-- plugin rules --}]

[enum]	A plugin is a package.







<







53
54
55
56
57
58
59

60
61
62
63
64
65
66
parsing expression grammar, as specified in section
[sectref {PEG serialization format}], the result of reading and
converting the input text.

[list_end][comment {-- api command signatures --}]
[list_end][comment {-- converter rules --}]


[section {Plugin API}]

Any (grammar) import plugin has to follow the rules set out below:

[list_begin enumerated][comment {-- plugin rules --}]

[enum]	A plugin is a package.
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
[enum] An empty string in case of success of a [const notfound]
       failure, and an additional error message describing the reason
       for a [const notread] error in more detail.

[list_end][comment {-- result list elements --}]
[list_end][comment {-- include-file signature --}]


[enum]	A plugin has to provide a single command, in the global
	namespace, with the signature shown below. Plugins are allowed
	to provide more commands of their own, but not less, and they
	may not provide different semantics for the standardized
	command.

[list_begin definitions][comment {-- api command signatures --}]







<







131
132
133
134
135
136
137

138
139
140
141
142
143
144
[enum] An empty string in case of success of a [const notfound]
       failure, and an additional error message describing the reason
       for a [const notread] error in more detail.

[list_end][comment {-- result list elements --}]
[list_end][comment {-- include-file signature --}]


[enum]	A plugin has to provide a single command, in the global
	namespace, with the signature shown below. Plugins are allowed
	to provide more commands of their own, but not less, and they
	may not provide different semantics for the standardized
	command.

[list_begin definitions][comment {-- api command signatures --}]
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
[list_end][comment {-- api command signatures --}]

[enum]	A single usage cycle of a plugin consists of an invokation of
	the command [cmd import]. This call has to leave the plugin in
	a state where another usage cycle can be run without problems.

[list_end][comment {-- plugin rules --}]


[section Usage]

To use a converter do

[example {
    # Get the converter (single command here, not class)







<







165
166
167
168
169
170
171

172
173
174
175
176
177
178
[list_end][comment {-- api command signatures --}]

[enum]	A single usage cycle of a plugin consists of an invokation of
	the command [cmd import]. This call has to leave the plugin in
	a state where another usage cycle can be run without problems.

[list_end][comment {-- plugin rules --}]


[section Usage]

To use a converter do

[example {
    # Get the converter (single command here, not class)

Changes to modules/pt/pt_introduction.man.

83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
[list_end]

[subsection {User Packages}]
[list_begin definitions]
[def [package pt::pgen]]
[list_end]


[subsection {Core Packages}]

This layer is further split into six sections handling the storage,
import, export, transformation, and execution of grammars, plus
grammar specific support packages.

[list_begin definitions]







<







83
84
85
86
87
88
89

90
91
92
93
94
95
96
[list_end]

[subsection {User Packages}]
[list_begin definitions]
[def [package pt::pgen]]
[list_end]


[subsection {Core Packages}]

This layer is further split into six sections handling the storage,
import, export, transformation, and execution of grammars, plus
grammar specific support packages.

[list_begin definitions]
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
[def [package pt::tclparam::configuration::tcloo]]
[def [package pt::cparam::configuration::critcl]]
[def [package pt::ast]]
[def [package pt::pe]]
[def [package pt::peg]]
[list_end][comment {------------------- core support ---}]
[list_end]


[subsection {Support Packages}]
[list_begin definitions]
[def [package pt::peg::container::peg]]
[def [package text::write]]
[def [package configuration]]
[def [package paths]]
[def [package char]]
[list_end]

[include include/feedback.inc]
[manpage_end]







<












137
138
139
140
141
142
143

144
145
146
147
148
149
150
151
152
153
154
155
[def [package pt::tclparam::configuration::tcloo]]
[def [package pt::cparam::configuration::critcl]]
[def [package pt::ast]]
[def [package pt::pe]]
[def [package pt::peg]]
[list_end][comment {------------------- core support ---}]
[list_end]


[subsection {Support Packages}]
[list_begin definitions]
[def [package pt::peg::container::peg]]
[def [package text::write]]
[def [package configuration]]
[def [package paths]]
[def [package char]]
[list_end]

[include include/feedback.inc]
[manpage_end]

Changes to modules/pt/pt_param.man.

1
2
3
4

5
6
7
8
9
10
11
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin pt::param n 1]
[include include/module.inc]
[keywords {virtual machine}]

[titledesc {PackRat Machine Specification}]
[description]
[include include/ref_intro.inc]

Welcome to the PackRat Machine (short: [term PARAM]), a virtual
machine geared towards the support of recursive descent parsers,
especially packrat parsers. Towards this end it has features like the


<

>







1
2

3
4
5
6
7
8
9
10
11
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin pt::param n 1]

[keywords {virtual machine}]
[include include/module.inc]
[titledesc {PackRat Machine Specification}]
[description]
[include include/ref_intro.inc]

Welcome to the PackRat Machine (short: [term PARAM]), a virtual
machine geared towards the support of recursive descent parsers,
especially packrat parsers. Towards this end it has features like the
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
enabling backtracking at, i.e. in the case of IN not randomly
seekable.

[vset INS0 {Input Handling}][include include/param_1is.inc]

[list_end]


[section {Instruction Set}]

With the machine's architectural state specified it is now possible to
specify the instruction set operating on that state and to be
implemented by any realization of the PARAM. The 37 instructions are
grouped roughly by the state they influence and/or query during their
execution.







<







144
145
146
147
148
149
150

151
152
153
154
155
156
157
enabling backtracking at, i.e. in the case of IN not randomly
seekable.

[vset INS0 {Input Handling}][include include/param_1is.inc]

[list_end]


[section {Instruction Set}]

With the machine's architectural state specified it is now possible to
specify the instruction set operating on that state and to be
implemented by any realization of the PARAM. The 37 instructions are
grouped roughly by the state they influence and/or query during their
execution.
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
[para]

If, on the other hand, the end of IN was reached, the operation is
recorded as failed in ST, CL is left unchanged, and the pair of CL and
[arg msg] becomes the new ES.

[list_end]


[subsection {Character Processing}]

The instructions in this section mainly access CC, testing it against
character classes, ranges, and individual characters.

[list_begin definitions]







<







180
181
182
183
184
185
186

187
188
189
190
191
192
193
[para]

If, on the other hand, the end of IN was reached, the operation is
recorded as failed in ST, CL is left unchanged, and the pair of CL and
[arg msg] becomes the new ES.

[list_end]


[subsection {Character Processing}]

The instructions in this section mainly access CC, testing it against
character classes, ranges, and individual characters.

[list_begin definitions]
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
[vset OP wordchar][include include/param_special.inc]

[def [cmd test_xdigit]]
[vset OP xdigit][include include/param_special.inc]

[list_end]


[subsection {Error Handling}]

The instructions in this section mainly access ER and ES.

[list_begin definitions]

[def [cmd error_clear]]







<







242
243
244
245
246
247
248

249
250
251
252
253
254
255
[vset OP wordchar][include include/param_special.inc]

[def [cmd test_xdigit]]
[vset OP xdigit][include include/param_special.inc]

[list_end]


[subsection {Error Handling}]

The instructions in this section mainly access ER and ES.

[list_begin definitions]

[def [cmd error_clear]]
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333

[para]
[emph Note]: In the above "just past" means "that location plus one",
or also "the location of the next character after that location".

[list_end]


[subsection {Status Control}]

The instructions in this section directly manipulate ST.

[list_begin definitions]

[def [cmd status_ok]]

This instruction sets ST to [const true], recording a success.

[def [cmd status_fail]]

This instruction sets ST to [const false], recording a failure.

[def [cmd status_negate]]

This instruction negates ST, turning a failure into a success and vice
versa.

[list_end]


[subsection {Location Handling}]

The instructions in this section access CL and LS.

[list_begin definitions]








<




















<







295
296
297
298
299
300
301

302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321

322
323
324
325
326
327
328

[para]
[emph Note]: In the above "just past" means "that location plus one",
or also "the location of the next character after that location".

[list_end]


[subsection {Status Control}]

The instructions in this section directly manipulate ST.

[list_begin definitions]

[def [cmd status_ok]]

This instruction sets ST to [const true], recording a success.

[def [cmd status_fail]]

This instruction sets ST to [const false], recording a failure.

[def [cmd status_negate]]

This instruction negates ST, turning a failure into a success and vice
versa.

[list_end]


[subsection {Location Handling}]

The instructions in this section access CL and LS.

[list_begin definitions]

342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
[def [cmd loc_pop_rewind]]

This instruction pops the last saved location from LS and restores it
as CL.

[list_end]


[subsection {Nonterminal Execution}]

The instructions in this section access and manipulate NC.


[list_begin definitions]

[def "[cmd symbol_restore] [arg symbol]"]

This instruction checks if NC contains data for the nonterminal
[arg symbol] at CL, or not. The result of the instruction is a boolean







<



<







337
338
339
340
341
342
343

344
345
346

347
348
349
350
351
352
353
[def [cmd loc_pop_rewind]]

This instruction pops the last saved location from LS and restores it
as CL.

[list_end]


[subsection {Nonterminal Execution}]

The instructions in this section access and manipulate NC.


[list_begin definitions]

[def "[cmd symbol_restore] [arg symbol]"]

This instruction checks if NC contains data for the nonterminal
[arg symbol] at CL, or not. The result of the instruction is a boolean
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387

This instructions saves the current settings of CL, ST, ER, and SV in
NC, using the pair of nonterminal [arg symbol] and the last location
saved in LS as key.

[list_end]


[subsection {Value Construction}]

The instructions in this section manipulate SV.

[list_begin definitions]
[def [cmd value_clear]]








<







366
367
368
369
370
371
372

373
374
375
376
377
378
379

This instructions saves the current settings of CL, ST, ER, and SV in
NC, using the pair of nonterminal [arg symbol] and the last location
saved in LS as key.

[list_end]


[subsection {Value Construction}]

The instructions in this section manipulate SV.

[list_begin definitions]
[def [cmd value_clear]]

399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
except that it takes all AST nodes on ARS, if any, and makes them the
children of the new node, with the last node saved on ARS becoming the
right-most / last child. Note that ARS is not modfied by this
operation.

[list_end]


[subsection {AST Construction}]

The instructions in this section manipulate ARS and AS.


[list_begin definitions]

[def [cmd ast_value_push]]

This instruction makes a copy of SV and pushes it on ARS.








<



<







391
392
393
394
395
396
397

398
399
400

401
402
403
404
405
406
407
except that it takes all AST nodes on ARS, if any, and makes them the
children of the new node, with the last node saved on ARS becoming the
right-most / last child. Note that ARS is not modfied by this
operation.

[list_end]


[subsection {AST Construction}]

The instructions in this section manipulate ARS and AS.


[list_begin definitions]

[def [cmd ast_value_push]]

This instruction makes a copy of SV and pushes it on ARS.

427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455

[def [cmd ast_pop_discard]]

This instruction pops the last entry saved on AS.

[list_end]


[subsection {Control Flow}]

Normally this section would contain the specifications of the control
flow instructions of the PARAM, i.e. (un)conditional jumps and the
like. However, this part of the PARAM is intentionally left
unspecified. This allows the implementations to freely choose how to
implement control flow.

[para]

The implementation of this machine in Parser Tools, i.e the package
[package pt::rde], is not only coded in Tcl, but also relies on Tcl
commands to provide it with control flow (instructions).


[section {Interaction of the Instructions with the Architectural State}]

[comment {-- in lieu of a true table markup --}]
[example {
Instruction		Inputs				Outputs
======================= =======================		====================







<













<







417
418
419
420
421
422
423

424
425
426
427
428
429
430
431
432
433
434
435
436

437
438
439
440
441
442
443

[def [cmd ast_pop_discard]]

This instruction pops the last entry saved on AS.

[list_end]


[subsection {Control Flow}]

Normally this section would contain the specifications of the control
flow instructions of the PARAM, i.e. (un)conditional jumps and the
like. However, this part of the PARAM is intentionally left
unspecified. This allows the implementations to freely choose how to
implement control flow.

[para]

The implementation of this machine in Parser Tools, i.e the package
[package pt::rde], is not only coded in Tcl, but also relies on Tcl
commands to provide it with control flow (instructions).


[section {Interaction of the Instructions with the Architectural State}]

[comment {-- in lieu of a true table markup --}]
[example {
Instruction		Inputs				Outputs
======================= =======================		====================

Changes to modules/pt/pt_parser_api.man.

42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
[section {Instance API}]

All parser instances provide at least the methods shown below:

[list_begin definitions]
[include include/std_parser_object_api.inc]
[list_end]


[section Usage]

A generated parser is used like this

[example {
    package require the-parser-package ;# Generated by result-formats 'critcl', 'snit' or 'oo' of 'pt'.







<







42
43
44
45
46
47
48

49
50
51
52
53
54
55
[section {Instance API}]

All parser instances provide at least the methods shown below:

[list_begin definitions]
[include include/std_parser_object_api.inc]
[list_end]


[section Usage]

A generated parser is used like this

[example {
    package require the-parser-package ;# Generated by result-formats 'critcl', 'snit' or 'oo' of 'pt'.

Changes to modules/pt/pt_peg_container.man.

40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
[def [package pt::peg::interp]]

This package implements an interpreter for PEGs on top of the virtual
machine provided by [package pt::peg::rde]

[list_end]


[subsection {Class API}]

The package exports the API described here.

[list_begin definitions]

[call [cmd ::pt::peg] [arg objectName] \







<







40
41
42
43
44
45
46

47
48
49
50
51
52
53
[def [package pt::peg::interp]]

This package implements an interpreter for PEGs on top of the virtual
machine provided by [package pt::peg::rde]

[list_end]


[subsection {Class API}]

The package exports the API described here.

[list_begin definitions]

[call [cmd ::pt::peg] [arg objectName] \
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199

An empty grammar has no nonterminal symbols, and the start expression
is the empty expression, i.e. epsilon. It is [term valid], but not
[term useful].

[list_end]


[subsection {Object API}]
[para]

All objects created by this package provide the following methods for
the manipulation and querying of their contents:

[list_begin definitions]

[call [arg objectName] [method destroy]]

This method destroys the object, releasing all claimed memory, and
deleting the associated object command.


[call [arg objectName] [method clear]]

This method resets the object to contain the empty grammar. It does
[emph not] destroy the object itself.


[call [arg objectName] [method importer]]

This method returns the import manager object currently attached to
the container, if any.


[call [arg objectName] [method importer] [arg object]]

This method attaches the [arg object] as import manager to the
container, and returns it as the result of the command.

Note that the [arg object] is [emph not] put into ownership of the
container. I.e., destruction of the container will [emph not] destroy
the [arg object].

[para]

It is expected that [arg object] provides a method named
[method {import text}] which takes a text and a format name, and
returns the canonical serialization of the table of contents contained in
the text, assuming the given format.


[call [arg objectName] [method exporter]]

This method returns the export manager object currently attached to
the container, if any.


[call [arg objectName] [method exporter] [arg object]]

This method attaches the [arg object] as export manager to the
container, and returns it as the result of the command.

Note that the [arg object] is [emph not] put into ownership of the
container. I.e., destruction of the container will [emph not] destroy
the [arg object].

[para]

It is expected that [arg object] provides a method named
[method {export object}] which takes the container and a format name,
and returns a text encoding table of contents stored in the container, in
the given format. It is further expected that the [arg object] will
use the container's method [method serialize] to obtain the
serialization of the table of contents from which to generate the text.


[call [arg objectName] [method =] [arg source]]

This method assigns the contents of the PEG object [arg source] to
ourselves, overwriting the existing definition. This is the assignment
operator for grammars.

[para]

This operation is in effect equivalent to
[para]
[example_begin]
    [arg objectName] [method {deserialize =}] [lb][arg source] [method serialize][rb]
[example_end]


[call [arg objectName] [method -->] [arg destination]]

This method assigns our contents to the PEG object [arg destination],
overwriting the existing definition. This is the reverse assignment
operator for grammars.

[para]

This operation is in effect equivalent to
[para]
[example_begin]
    [arg destination] [method {deserialize =}] [lb][arg objectName] [method serialize][rb]
[example_end]


[call [arg objectName] [method serialize] [opt [arg format]]]

This method returns our grammar in some textual form usable for
transfer, persistent storage, etc. If no [arg format] is not specified
the returned result is the canonical serialization of the grammar, as
specified in the section [sectref {PEG serialization format}].

[para]

Otherwise the object will use the attached export manager to convert
the data to the specified format. In that case the method will fail
with an error if the container has no export manager attached to it.


[call [arg objectName] [method {deserialize =}] [arg data] [opt [arg format]]]

This is the complementary method to [method serialize].

It replaces the current definition with the grammar contained in the
[arg data]. If no [arg format] was specified it is assumed to be the







<













<





<




<

















<




<



















<













<















<












<







73
74
75
76
77
78
79

80
81
82
83
84
85
86
87
88
89
90
91
92

93
94
95
96
97

98
99
100
101

102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118

119
120
121
122

123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141

142
143
144
145
146
147
148
149
150
151
152
153
154

155
156
157
158
159
160
161
162
163
164
165
166
167
168
169

170
171
172
173
174
175
176
177
178
179
180
181

182
183
184
185
186
187
188

An empty grammar has no nonterminal symbols, and the start expression
is the empty expression, i.e. epsilon. It is [term valid], but not
[term useful].

[list_end]


[subsection {Object API}]
[para]

All objects created by this package provide the following methods for
the manipulation and querying of their contents:

[list_begin definitions]

[call [arg objectName] [method destroy]]

This method destroys the object, releasing all claimed memory, and
deleting the associated object command.


[call [arg objectName] [method clear]]

This method resets the object to contain the empty grammar. It does
[emph not] destroy the object itself.


[call [arg objectName] [method importer]]

This method returns the import manager object currently attached to
the container, if any.


[call [arg objectName] [method importer] [arg object]]

This method attaches the [arg object] as import manager to the
container, and returns it as the result of the command.

Note that the [arg object] is [emph not] put into ownership of the
container. I.e., destruction of the container will [emph not] destroy
the [arg object].

[para]

It is expected that [arg object] provides a method named
[method {import text}] which takes a text and a format name, and
returns the canonical serialization of the table of contents contained in
the text, assuming the given format.


[call [arg objectName] [method exporter]]

This method returns the export manager object currently attached to
the container, if any.


[call [arg objectName] [method exporter] [arg object]]

This method attaches the [arg object] as export manager to the
container, and returns it as the result of the command.

Note that the [arg object] is [emph not] put into ownership of the
container. I.e., destruction of the container will [emph not] destroy
the [arg object].

[para]

It is expected that [arg object] provides a method named
[method {export object}] which takes the container and a format name,
and returns a text encoding table of contents stored in the container, in
the given format. It is further expected that the [arg object] will
use the container's method [method serialize] to obtain the
serialization of the table of contents from which to generate the text.


[call [arg objectName] [method =] [arg source]]

This method assigns the contents of the PEG object [arg source] to
ourselves, overwriting the existing definition. This is the assignment
operator for grammars.

[para]

This operation is in effect equivalent to
[para]
[example_begin]
    [arg objectName] [method {deserialize =}] [lb][arg source] [method serialize][rb]
[example_end]


[call [arg objectName] [method -->] [arg destination]]

This method assigns our contents to the PEG object [arg destination],
overwriting the existing definition. This is the reverse assignment
operator for grammars.

[para]

This operation is in effect equivalent to
[para]
[example_begin]
    [arg destination] [method {deserialize =}] [lb][arg objectName] [method serialize][rb]
[example_end]


[call [arg objectName] [method serialize] [opt [arg format]]]

This method returns our grammar in some textual form usable for
transfer, persistent storage, etc. If no [arg format] is not specified
the returned result is the canonical serialization of the grammar, as
specified in the section [sectref {PEG serialization format}].

[para]

Otherwise the object will use the attached export manager to convert
the data to the specified format. In that case the method will fail
with an error if the container has no export manager attached to it.


[call [arg objectName] [method {deserialize =}] [arg data] [opt [arg format]]]

This is the complementary method to [method serialize].

It replaces the current definition with the grammar contained in the
[arg data]. If no [arg format] was specified it is assumed to be the
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
In that case the method will fail with an error if the container has
no import manager attached to it.

[para]

The result of the method is the empty string.


[call [arg objectName] [method {deserialize +=}] [arg data] [opt [arg format]]]

This method behaves like [method {deserialize =}] in its essentials,
except that it merges the grammar in the [arg data] to its
contents instead of replacing it. 

The method will fail with an error and leave the grammar unchanged if
merging is not possible, i.e. would produce an invalid grammar.

[para]

The result of the method is the empty string.


[call [arg objectName] [method start]]

This method returns the current start expression of the grammar.


[call [arg objectName] [method start] [arg pe]]

This method defines the [term {start expression}] of the grammar. It
replaces the current start expression with the parsing expression
[arg pe], and returns the new start expression.

[para]

The method will fail with an error and leave the grammar unchanged if
[arg pe] does not contain a valid parsing expression as specified in
the section [sectref {PE serialization format}].


[call [arg objectName] [method nonterminals]]

This method returns the set of all nonterminal symbols known to the
grammar.


[call [arg objectName] [method modes]]

This method returns a dictionary mapping the set of all nonterminal
symbols known to the grammar to their semantic modes.


[call [arg objectName] [method modes] [arg dict]]

This method takes a dictionary mapping a set of nonterminal symbols
known to the grammar to their semantic modes, and returns the new full
mapping of nonterminal symbols to semantic modes.

[para]

The method will fail with an error if any of the nonterminal symbols
in the dictionary is not known to the grammar, or the empty string,
i.e. an invalid nonterminal symbol, or if any the chosen [arg mode]s
is not one of the legal values.


[call [arg objectName] [method rules]]

This method returns a dictionary mapping the set of all nonterminal
symbols known to the grammar to their parsing expressions (right-hand
sides).


[call [arg objectName] [method rules] [arg dict]]

This method takes a dictionary mapping a set of nonterminal symbols
known to the grammar to their parsing expressions (right-hand sides),
and returns the new full mapping of nonterminal symbols to parsing
expressions.

[para]

The method will fail with an error any of the nonterminal symbols in
the dictionary is not known to the grammar, or the empty string,
i.e. an invalid nonterminal symbol, or any of the chosen parsing
expressions is not a valid parsing expression as specified in the
section [sectref {PE serialization format}].


[call [arg objectName] [method add] [opt [arg nt]...]]

This method adds the nonterminal symbols [arg nt], etc. to the
grammar, and defines default semantic mode and expression for it
([const value] and [const epsilon] respectively).

The method returns the empty string as its result.

[para]

The method will fail with an error and leaves the grammar unchanged if
any of the nonterminal symbols are either already defined in our
grammar, or are the empty string (an invalid nonterminal symbol).

[para]

The method does nothing if no symbol was specified as argument.


[call [arg objectName] [method remove] [opt [arg nt]...]]

This method removes the named nonterminal symbols [arg nt], etc. from
the set of nonterminal symbols known to our grammar.

The method returns the empty string as its result.

[para]

The method will fail with an error and leave the grammar unchanged if
any of the nonterminal symbols is not known to the grammar, or is the
empty string, i.e. an invalid nonterminal symbol.


[call [arg objectName] [method exists] [arg nt]]

This method tests whether the nonterminal symbol [arg nt] is known
to our grammar or not.

The result is a boolean value. It will be set to [const true] if
[arg nt] is known, and [const false] otherwise.

[para]

The method will fail with an error if [arg nt] is the empty string,
i.e. an invalid nonterminal symbol.


[call [arg objectName] [method rename] [arg ntold] [arg ntnew]]

This method renames the nonterminal symbol [arg ntold] to [arg ntnew].
The method returns the empty string as its result.

[para]

The method will fail with an error and leave the grammar unchanged if
either [arg ntold] is not known to the grammar, or [arg ntnew] is
already known, or any of them is the empty string, i.e. an invalid
nonterminal symbol.


[call [arg objectName] [method mode] [arg nt]]

This method returns the current semantic mode for the nonterminal
symbol [arg nt].

[para]

The method will fail with an error if [arg nt] is not known to the
grammar, or the empty string, i.e. an invalid nonterminal symbol.


[call [arg objectName] [method mode] [arg nt] [arg mode]]

This mode sets the semantic mode for the nonterminal symbol [arg nt],
and returns the new mode.

The method will fail with an error if [arg nt] is not known to the
grammar, or the empty string, i.e. an invalid nonterminal symbol, or
the chosen [arg mode] is not one of the legal values.

[para]

The following modes are legal:
[include include/modes.inc]


[call [arg objectName] [method rule] [arg nt]]

This method returns the current parsing expression (right-hand side)
for the nonterminal symbol [arg nt].

[para]

The method will fail with an error if [arg nt] is not known to the
grammar, or the empty string, i.e. an invalid nonterminal symbol.


[call [arg objectName] [method rule] [arg nt] [arg pe]]

This method set the parsing expression (right-hand side) of the
nonterminal [arg nt] to [arg pe], and returns the new parsing
expression.








<




|








<



<













<





<




<














<





<















<



















<












<














<












<









<















<









<







196
197
198
199
200
201
202

203
204
205
206
207
208
209
210
211
212
213
214
215

216
217
218

219
220
221
222
223
224
225
226
227
228
229
230
231

232
233
234
235
236

237
238
239
240

241
242
243
244
245
246
247
248
249
250
251
252
253
254

255
256
257
258
259

260
261
262
263
264
265
266
267
268
269
270
271
272
273
274

275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293

294
295
296
297
298
299
300
301
302
303
304
305

306
307
308
309
310
311
312
313
314
315
316
317
318
319

320
321
322
323
324
325
326
327
328
329
330
331

332
333
334
335
336
337
338
339
340

341
342
343
344
345
346
347
348
349
350
351
352
353
354
355

356
357
358
359
360
361
362
363
364

365
366
367
368
369
370
371
In that case the method will fail with an error if the container has
no import manager attached to it.

[para]

The result of the method is the empty string.


[call [arg objectName] [method {deserialize +=}] [arg data] [opt [arg format]]]

This method behaves like [method {deserialize =}] in its essentials,
except that it merges the grammar in the [arg data] to its
contents instead of replacing it.

The method will fail with an error and leave the grammar unchanged if
merging is not possible, i.e. would produce an invalid grammar.

[para]

The result of the method is the empty string.


[call [arg objectName] [method start]]

This method returns the current start expression of the grammar.


[call [arg objectName] [method start] [arg pe]]

This method defines the [term {start expression}] of the grammar. It
replaces the current start expression with the parsing expression
[arg pe], and returns the new start expression.

[para]

The method will fail with an error and leave the grammar unchanged if
[arg pe] does not contain a valid parsing expression as specified in
the section [sectref {PE serialization format}].


[call [arg objectName] [method nonterminals]]

This method returns the set of all nonterminal symbols known to the
grammar.


[call [arg objectName] [method modes]]

This method returns a dictionary mapping the set of all nonterminal
symbols known to the grammar to their semantic modes.


[call [arg objectName] [method modes] [arg dict]]

This method takes a dictionary mapping a set of nonterminal symbols
known to the grammar to their semantic modes, and returns the new full
mapping of nonterminal symbols to semantic modes.

[para]

The method will fail with an error if any of the nonterminal symbols
in the dictionary is not known to the grammar, or the empty string,
i.e. an invalid nonterminal symbol, or if any the chosen [arg mode]s
is not one of the legal values.


[call [arg objectName] [method rules]]

This method returns a dictionary mapping the set of all nonterminal
symbols known to the grammar to their parsing expressions (right-hand
sides).


[call [arg objectName] [method rules] [arg dict]]

This method takes a dictionary mapping a set of nonterminal symbols
known to the grammar to their parsing expressions (right-hand sides),
and returns the new full mapping of nonterminal symbols to parsing
expressions.

[para]

The method will fail with an error any of the nonterminal symbols in
the dictionary is not known to the grammar, or the empty string,
i.e. an invalid nonterminal symbol, or any of the chosen parsing
expressions is not a valid parsing expression as specified in the
section [sectref {PE serialization format}].


[call [arg objectName] [method add] [opt [arg nt]...]]

This method adds the nonterminal symbols [arg nt], etc. to the
grammar, and defines default semantic mode and expression for it
([const value] and [const epsilon] respectively).

The method returns the empty string as its result.

[para]

The method will fail with an error and leaves the grammar unchanged if
any of the nonterminal symbols are either already defined in our
grammar, or are the empty string (an invalid nonterminal symbol).

[para]

The method does nothing if no symbol was specified as argument.


[call [arg objectName] [method remove] [opt [arg nt]...]]

This method removes the named nonterminal symbols [arg nt], etc. from
the set of nonterminal symbols known to our grammar.

The method returns the empty string as its result.

[para]

The method will fail with an error and leave the grammar unchanged if
any of the nonterminal symbols is not known to the grammar, or is the
empty string, i.e. an invalid nonterminal symbol.


[call [arg objectName] [method exists] [arg nt]]

This method tests whether the nonterminal symbol [arg nt] is known
to our grammar or not.

The result is a boolean value. It will be set to [const true] if
[arg nt] is known, and [const false] otherwise.

[para]

The method will fail with an error if [arg nt] is the empty string,
i.e. an invalid nonterminal symbol.


[call [arg objectName] [method rename] [arg ntold] [arg ntnew]]

This method renames the nonterminal symbol [arg ntold] to [arg ntnew].
The method returns the empty string as its result.

[para]

The method will fail with an error and leave the grammar unchanged if
either [arg ntold] is not known to the grammar, or [arg ntnew] is
already known, or any of them is the empty string, i.e. an invalid
nonterminal symbol.


[call [arg objectName] [method mode] [arg nt]]

This method returns the current semantic mode for the nonterminal
symbol [arg nt].

[para]

The method will fail with an error if [arg nt] is not known to the
grammar, or the empty string, i.e. an invalid nonterminal symbol.


[call [arg objectName] [method mode] [arg nt] [arg mode]]

This mode sets the semantic mode for the nonterminal symbol [arg nt],
and returns the new mode.

The method will fail with an error if [arg nt] is not known to the
grammar, or the empty string, i.e. an invalid nonterminal symbol, or
the chosen [arg mode] is not one of the legal values.

[para]

The following modes are legal:
[include include/modes.inc]


[call [arg objectName] [method rule] [arg nt]]

This method returns the current parsing expression (right-hand side)
for the nonterminal symbol [arg nt].

[para]

The method will fail with an error if [arg nt] is not known to the
grammar, or the empty string, i.e. an invalid nonterminal symbol.


[call [arg objectName] [method rule] [arg nt] [arg pe]]

This method set the parsing expression (right-hand side) of the
nonterminal [arg nt] to [arg pe], and returns the new parsing
expression.

Changes to modules/pt/pt_peg_export.man.

74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131

For readers wishing to write their own export plugin for some format,
i.e. [term {plugin writer}]s, reading and understanding the
[manpage {Parser Tools Export API}] specification is an absolute
necessity, as it documents the interaction between this package and
its plugins in detail.


[section API]
[subsection {Package commands}]

[list_begin definitions]

[call [cmd ::pt::peg::export] [arg objectName]]

This command creates a new export manager object with an associated
Tcl command whose name is [arg objectName]. This [term object] command
is explained in full detail in the sections [sectref {Object command}]
and [sectref {Object methods}]. The object command will be created
under the current namespace if the [arg objectName] is not fully
qualified, and in the specified namespace otherwise.

[list_end]


[subsection {Object command}]

All objects created by the [cmd ::pt::peg::export] command have
the following general form:

[list_begin definitions]

[call [cmd objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the
exact behavior of the command.

See section [sectref {Object methods}] for the detailed
specifications.

[list_end]


[subsection {Object methods}]

[list_begin definitions]

[call [arg objectName] [method destroy]]

This method destroys the object it is invoked for.


[call [arg objectName] [method {export serial}] [arg serial] [opt [arg format]]]

This method takes the canonical serialization of a parsing expression
grammar stored in [arg serial] and converts it to the specified
[arg format], using the export plugin for the format. This will fail
with an error if no plugin could be found for the format.







<















<


















<







<







74
75
76
77
78
79
80

81
82
83
84
85
86
87
88
89
90
91
92
93
94
95

96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113

114
115
116
117
118
119
120

121
122
123
124
125
126
127

For readers wishing to write their own export plugin for some format,
i.e. [term {plugin writer}]s, reading and understanding the
[manpage {Parser Tools Export API}] specification is an absolute
necessity, as it documents the interaction between this package and
its plugins in detail.


[section API]
[subsection {Package commands}]

[list_begin definitions]

[call [cmd ::pt::peg::export] [arg objectName]]

This command creates a new export manager object with an associated
Tcl command whose name is [arg objectName]. This [term object] command
is explained in full detail in the sections [sectref {Object command}]
and [sectref {Object methods}]. The object command will be created
under the current namespace if the [arg objectName] is not fully
qualified, and in the specified namespace otherwise.

[list_end]


[subsection {Object command}]

All objects created by the [cmd ::pt::peg::export] command have
the following general form:

[list_begin definitions]

[call [cmd objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the
exact behavior of the command.

See section [sectref {Object methods}] for the detailed
specifications.

[list_end]


[subsection {Object methods}]

[list_begin definitions]

[call [arg objectName] [method destroy]]

This method destroys the object it is invoked for.


[call [arg objectName] [method {export serial}] [arg serial] [opt [arg format]]]

This method takes the canonical serialization of a parsing expression
grammar stored in [arg serial] and converts it to the specified
[arg format], using the export plugin for the format. This will fail
with an error if no plugin could be found for the format.
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
found in the section [sectref {PEG serialization format}].

[para]

The plugin has to conform to the interface documented in the
[manpage {Parser Tools Export API}] specification.


[call [arg objectName] [method {export object}] [arg object] [opt [arg format]]]

This method is a convenient wrapper around the [method {export serial}]
method described by the previous item.

It expects that [arg object] is an object command supporting a
[method serialize] method returning the canonical serialization of a
parsing expression grammar. It invokes that method, feeds the result
into [method {export serial}] and returns the resulting string as its
own result.


[call [arg objectName] [method {configuration names}]]

This method returns a list containing the names of all configuration
options currently known to the object.


[call [arg objectName] [method {configuration get}]]

This method returns a dictionary containing the names and values of
all configuration options currently known to the object.


[call [arg objectName] [method {configuration set}] [arg name] \
     [opt [arg value]]]

This method sets the configuration option [arg name] to the
specified [arg value] and returns the new value of the option.

[para]

If no value is specified it simply returns the current value, without
changing it.

[para]

Note that these configuration options and their values are simply
passed to a plugin when the actual export is performed. It is the
plugin which checks the validity, not the manager.


[call [arg objectName] [method {configuration unset}] [arg pattern]...]

This method unsets all configuration options matching the specified
glob [arg pattern]s. If no pattern is specified it will unset all
currently defined configuration options.


[list_end]


[include include/serial/pegrammar.inc]
[include include/serial/pexpression.inc]
[include include/feedback.inc]
[manpage_end]







<











<





<




<


















<






<

<





139
140
141
142
143
144
145

146
147
148
149
150
151
152
153
154
155
156

157
158
159
160
161

162
163
164
165

166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183

184
185
186
187
188
189

190

191
192
193
194
195
found in the section [sectref {PEG serialization format}].

[para]

The plugin has to conform to the interface documented in the
[manpage {Parser Tools Export API}] specification.


[call [arg objectName] [method {export object}] [arg object] [opt [arg format]]]

This method is a convenient wrapper around the [method {export serial}]
method described by the previous item.

It expects that [arg object] is an object command supporting a
[method serialize] method returning the canonical serialization of a
parsing expression grammar. It invokes that method, feeds the result
into [method {export serial}] and returns the resulting string as its
own result.


[call [arg objectName] [method {configuration names}]]

This method returns a list containing the names of all configuration
options currently known to the object.


[call [arg objectName] [method {configuration get}]]

This method returns a dictionary containing the names and values of
all configuration options currently known to the object.


[call [arg objectName] [method {configuration set}] [arg name] \
     [opt [arg value]]]

This method sets the configuration option [arg name] to the
specified [arg value] and returns the new value of the option.

[para]

If no value is specified it simply returns the current value, without
changing it.

[para]

Note that these configuration options and their values are simply
passed to a plugin when the actual export is performed. It is the
plugin which checks the validity, not the manager.


[call [arg objectName] [method {configuration unset}] [arg pattern]...]

This method unsets all configuration options matching the specified
glob [arg pattern]s. If no pattern is specified it will unset all
currently defined configuration options.


[list_end]


[include include/serial/pegrammar.inc]
[include include/serial/pexpression.inc]
[include include/feedback.inc]
[manpage_end]

Changes to modules/pt/pt_peg_from_container.man.

15
16
17
18
19
20
21
22
grammar we wish to import loaded.

Another way of looking at this is, the CONTAINER output is its own
import package.

[include include/feedback.inc]
[manpage_end]








<
15
16
17
18
19
20
21

grammar we wish to import loaded.

Another way of looking at this is, the CONTAINER output is its own
import package.

[include include/feedback.inc]
[manpage_end]

Changes to modules/pt/pt_peg_import.man.

74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131

For readers wishing to write their own import plugin for some format,
i.e. [term {plugin writer}]s, reading and understanding the
[manpage {Parser Tools Impport API}] specification is an absolute
necessity, as it documents the interaction between this package and
its plugins in detail.


[section API]
[subsection {Package commands}]

[list_begin definitions]

[call [cmd ::pt::peg::import] [arg objectName]]

This command creates a new import manager object with an associated
Tcl command whose name is [arg objectName]. This [term object] command
is explained in full detail in the sections [sectref {Object command}]
and [sectref {Object methods}]. The object command will be created
under the current namespace if the [arg objectName] is not fully
qualified, and in the specified namespace otherwise.

[list_end]


[subsection {Object command}]

All objects created by the [cmd ::pt::peg::import] command have
the following general form:

[list_begin definitions]

[call [cmd objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the
exact behavior of the command.

See section [sectref {Object methods}] for the detailed
specifications.

[list_end]


[subsection {Object methods}]

[list_begin definitions]

[call [arg objectName] [method destroy]]

This method destroys the object it is invoked for.


[call [arg objectName] [method {import text}] [arg text] [opt [arg format]]]

This method takes the [arg text] and converts it from the specified
[arg format] to the canonical serialization of a parsing expression
grammar using the import plugin for the format. An error is thrown if
no plugin could be found for the format.







<















<


















<







<







74
75
76
77
78
79
80

81
82
83
84
85
86
87
88
89
90
91
92
93
94
95

96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113

114
115
116
117
118
119
120

121
122
123
124
125
126
127

For readers wishing to write their own import plugin for some format,
i.e. [term {plugin writer}]s, reading and understanding the
[manpage {Parser Tools Impport API}] specification is an absolute
necessity, as it documents the interaction between this package and
its plugins in detail.


[section API]
[subsection {Package commands}]

[list_begin definitions]

[call [cmd ::pt::peg::import] [arg objectName]]

This command creates a new import manager object with an associated
Tcl command whose name is [arg objectName]. This [term object] command
is explained in full detail in the sections [sectref {Object command}]
and [sectref {Object methods}]. The object command will be created
under the current namespace if the [arg objectName] is not fully
qualified, and in the specified namespace otherwise.

[list_end]


[subsection {Object command}]

All objects created by the [cmd ::pt::peg::import] command have
the following general form:

[list_begin definitions]

[call [cmd objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the
exact behavior of the command.

See section [sectref {Object methods}] for the detailed
specifications.

[list_end]


[subsection {Object methods}]

[list_begin definitions]

[call [arg objectName] [method destroy]]

This method destroys the object it is invoked for.


[call [arg objectName] [method {import text}] [arg text] [opt [arg format]]]

This method takes the [arg text] and converts it from the specified
[arg format] to the canonical serialization of a parsing expression
grammar using the import plugin for the format. An error is thrown if
no plugin could be found for the format.
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
found in the section [sectref {PEG serialization format}].

[para]

The plugin has to conform to the interface documented in the
[manpage {Parser Tools Import API}] specification.


[call [arg objectName] [method {import file}] [arg path] [opt [arg format]]]

This method is a convenient wrapper around the [method {import text}]
method described by the previous item.

It reads the contents of the specified file into memory, feeds the
result into [method {import text}] and returns the resulting
serialization as its own result.


[call [arg objectName] [method {import object text}] [arg object] \
	[arg text] [opt [arg format]]]

This method is a convenient wrapper around the [method {import text}]
method described by the previous item.

It expects that [arg object] is an object command supporting a
[method deserialize] method expecting the canonical serialization of a
parsing expression grammar.

It imports the text using [method {import text}] and then feeds the
resulting serialization into the [arg object] via [method deserialize].

This method returns the empty string as it result.


[call [arg objectName] [method {import object file}] [arg object] \
	[arg path] [opt [arg format]]]

This method behaves like [method {import object text}], except that it
reads the text to convert from the specified file instead of being
given it as argument.


[call [arg objectName] [method includes]]

This method returns a list containing the currently specified paths to
use to search for include files when processing input.

The order of paths in the list corresponds to the order in which they
are used, from first to last, and also corresponds to the order in
which they were added to the object.


[call [arg objectName] [method {include add}] [arg path]]

This methods adds the specified [arg path] to the list of paths to use
to search for include files when processing input. The path is added
to the end of the list, causing it to be searched after all previously
added paths. The result of the command is the empty string.

[para]

The method does nothing if the path is already known.


[call [arg objectName] [method {include remove}] [arg path]]

This methods removes the specified [arg path] from the list of paths
to use to search for include files when processing input. The result
of the command is the empty string.

[para]

The method does nothing if the path is not known.


[call [arg objectName] [method {include clear}]]

This method clears the list of paths to use to search for include
files when processing input. The result of the command is the empty
string.

[list_end]


[include include/serial/pegrammar.inc]
[include include/serial/pexpression.inc]
[include include/feedback.inc]
[manpage_end]







<








<
















<






<









<












<










<







<





139
140
141
142
143
144
145

146
147
148
149
150
151
152
153

154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169

170
171
172
173
174
175

176
177
178
179
180
181
182
183
184

185
186
187
188
189
190
191
192
193
194
195
196

197
198
199
200
201
202
203
204
205
206

207
208
209
210
211
212
213

214
215
216
217
218
found in the section [sectref {PEG serialization format}].

[para]

The plugin has to conform to the interface documented in the
[manpage {Parser Tools Import API}] specification.


[call [arg objectName] [method {import file}] [arg path] [opt [arg format]]]

This method is a convenient wrapper around the [method {import text}]
method described by the previous item.

It reads the contents of the specified file into memory, feeds the
result into [method {import text}] and returns the resulting
serialization as its own result.


[call [arg objectName] [method {import object text}] [arg object] \
	[arg text] [opt [arg format]]]

This method is a convenient wrapper around the [method {import text}]
method described by the previous item.

It expects that [arg object] is an object command supporting a
[method deserialize] method expecting the canonical serialization of a
parsing expression grammar.

It imports the text using [method {import text}] and then feeds the
resulting serialization into the [arg object] via [method deserialize].

This method returns the empty string as it result.


[call [arg objectName] [method {import object file}] [arg object] \
	[arg path] [opt [arg format]]]

This method behaves like [method {import object text}], except that it
reads the text to convert from the specified file instead of being
given it as argument.


[call [arg objectName] [method includes]]

This method returns a list containing the currently specified paths to
use to search for include files when processing input.

The order of paths in the list corresponds to the order in which they
are used, from first to last, and also corresponds to the order in
which they were added to the object.


[call [arg objectName] [method {include add}] [arg path]]

This methods adds the specified [arg path] to the list of paths to use
to search for include files when processing input. The path is added
to the end of the list, causing it to be searched after all previously
added paths. The result of the command is the empty string.

[para]

The method does nothing if the path is already known.


[call [arg objectName] [method {include remove}] [arg path]]

This methods removes the specified [arg path] from the list of paths
to use to search for include files when processing input. The result
of the command is the empty string.

[para]

The method does nothing if the path is not known.


[call [arg objectName] [method {include clear}]]

This method clears the list of paths to use to search for include
files when processing input. The result of the command is the empty
string.

[list_end]


[include include/serial/pegrammar.inc]
[include include/serial/pexpression.inc]
[include include/feedback.inc]
[manpage_end]

Changes to modules/pt/pt_peg_import_container.man.

15
16
17
18
19
20
21
22
grammar we wish to import loaded.

Another way of looking at this is, the CONTAINER output is its own
import package.

[include include/feedback.inc]
[manpage_end]








<
15
16
17
18
19
20
21

grammar we wish to import loaded.

Another way of looking at this is, the CONTAINER output is its own
import package.

[include include/feedback.inc]
[manpage_end]

Changes to modules/pt/pt_peg_interp.man.

23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
[para]

The interpreted grammar is copied from an instance of [package \
pt::peg::container], or anything providing the same API, like the
container classes created by [package pt::peg::to::container] or the
associated export plugin [package pt::peg::export::container].


[subsection {Class API}]

The package exports the API described here.

[list_begin definitions]

[call [cmd ::pt::peg::interpreter] [arg objectName] [arg grammar]]

The command creates a new parser object and returns the fully
qualified name of the object command as its result. The API of this
object command is described in the section [sectref {Object API}]. It
may be used to invoke various operations on the object.

[para]

This new parser is configured for the execution of an empty PEG. To
configure the object for any other PEG use the method [method use] of
the [sectref {Object API}].

[list_end]


[subsection {Object API}]

All objects created by this package provide the following methods.

[list_begin definitions]








<




















<







23
24
25
26
27
28
29

30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

50
51
52
53
54
55
56
[para]

The interpreted grammar is copied from an instance of [package \
pt::peg::container], or anything providing the same API, like the
container classes created by [package pt::peg::to::container] or the
associated export plugin [package pt::peg::export::container].


[subsection {Class API}]

The package exports the API described here.

[list_begin definitions]

[call [cmd ::pt::peg::interpreter] [arg objectName] [arg grammar]]

The command creates a new parser object and returns the fully
qualified name of the object command as its result. The API of this
object command is described in the section [sectref {Object API}]. It
may be used to invoke various operations on the object.

[para]

This new parser is configured for the execution of an empty PEG. To
configure the object for any other PEG use the method [method use] of
the [sectref {Object API}].

[list_end]


[subsection {Object API}]

All objects created by this package provide the following methods.

[list_begin definitions]

70
71
72
73
74
75
76
77
78
79
80
81
82

[para]

The result of the method the empty string.

[include include/std_parser_object_api.inc]
[list_end]


[include include/serial/ast.inc]
[include include/serial/pexpression.inc]
[include include/feedback.inc]
[manpage_end]







<





68
69
70
71
72
73
74

75
76
77
78
79

[para]

The result of the method the empty string.

[include include/std_parser_object_api.inc]
[list_end]


[include include/serial/ast.inc]
[include include/serial/pexpression.inc]
[include include/feedback.inc]
[manpage_end]

Changes to modules/pt/pt_peg_introduction.man.

83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
[para]

The remainder of this document consists of the formal definition of
PEGs for the mathematically inclined, and an appendix listing
references to places with more information on PEGs specifically, and
parsing in general.


[section {Formal definition}]
[para]

For the mathematically inclined, a Parsing Expression Grammar is a
4-tuple (VN,VT,R,eS) where

[list_begin itemized]







<







83
84
85
86
87
88
89

90
91
92
93
94
95
96
[para]

The remainder of this document consists of the formal definition of
PEGs for the mathematically inclined, and an appendix listing
references to places with more information on PEGs specifically, and
parsing in general.


[section {Formal definition}]
[para]

For the mathematically inclined, a Parsing Expression Grammar is a
4-tuple (VN,VT,R,eS) where

[list_begin itemized]
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189

[para]

They can be easily implemented by recursive descent parsers with
backtracking. This makes them relatives of LL(k) Context-Free
Grammars.


[section References]

[list_begin enumerated]
[enum]
[uri {http://www.pdos.lcs.mit.edu/~baford/packrat/} \
	{The Packrat Parsing and Parsing Expression Grammars Page}],
by Bryan Ford, Massachusetts Institute of Technology. This is the main







<







174
175
176
177
178
179
180

181
182
183
184
185
186
187

[para]

They can be easily implemented by recursive descent parsers with
backtracking. This makes them relatives of LL(k) Context-Free
Grammars.


[section References]

[list_begin enumerated]
[enum]
[uri {http://www.pdos.lcs.mit.edu/~baford/packrat/} \
	{The Packrat Parsing and Parsing Expression Grammars Page}],
by Bryan Ford, Massachusetts Institute of Technology. This is the main
201
202
203
204
205
206
207
208
209
210
211
applicabilities, including error recovery techniques.

[enum]
[uri {http://scifac.ru.ac.za/compilers/} \
	{Compilers and Compiler Generators}], an online book using
CoCo/R, a generator for recursive descent parsers.
[list_end]


[include include/feedback.inc]
[manpage_end]







<



199
200
201
202
203
204
205

206
207
208
applicabilities, including error recovery techniques.

[enum]
[uri {http://scifac.ru.ac.za/compilers/} \
	{Compilers and Compiler Generators}], an online book using
CoCo/R, a generator for recursive descent parsers.
[list_end]


[include include/feedback.inc]
[manpage_end]

Changes to modules/pt/pt_peg_language.man.

116
117
118
119
120
121
122
123
124
125
126
127
128
129
130

[example {
    # Binary operators.

    <<expression-1>>     <<expression-2>>  # sequence. parse 1, then 2.
    <<expression-1>>  /  <<expression-2>>  # alternative. try to parse 1, and parse 2 if 1 failed to parse.

    # Prefix operators. Lookahead constraints. Same priority. 

    & <<expression>>  # Parse expression, ok on successful parse.
    ! <<expression>>  # Ditto, except ok on failure to parse.

    # Suffix operators. Repetition. Same priority.

    <<expression>> ?  # Parse expression none, or once (repeat 0 or 1).







|







116
117
118
119
120
121
122
123
124
125
126
127
128
129
130

[example {
    # Binary operators.

    <<expression-1>>     <<expression-2>>  # sequence. parse 1, then 2.
    <<expression-1>>  /  <<expression-2>>  # alternative. try to parse 1, and parse 2 if 1 failed to parse.

    # Prefix operators. Lookahead constraints. Same priority.

    & <<expression>>  # Parse expression, ok on successful parse.
    ! <<expression>>  # Ditto, except ok on failure to parse.

    # Suffix operators. Repetition. Same priority.

    <<expression>> ?  # Parse expression none, or once (repeat 0 or 1).
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270

All the escaped forms are started with a backslash character ('\',
unicode codepoint 0x5C). This is then followed by a series of octal
digits, or 'u' and hexedecimal digits, or a regular character from a
fixed set for various control characters. Some examples:

[example {
    \n \r \t \' \" \[ \] \\ # 
    \000 up to \277         # octal escape, all ascii character, leading 0's can be removed.
    \u2CA7                  # hexadecimal escape, all unicode characters.
    #                       # Here 2ca7 <=> Koptic Small Letter Tau
}]


[subsection {Whitespace and comments}]

One issue not touched upon so far is whitespace and comments.

[para]








|




<







251
252
253
254
255
256
257
258
259
260
261
262

263
264
265
266
267
268
269

All the escaped forms are started with a backslash character ('\',
unicode codepoint 0x5C). This is then followed by a series of octal
digits, or 'u' and hexedecimal digits, or a regular character from a
fixed set for various control characters. Some examples:

[example {
    \n \r \t \' \" \[ \] \\ #
    \000 up to \277         # octal escape, all ascii character, leading 0's can be removed.
    \u2CA7                  # hexadecimal escape, all unicode characters.
    #                       # Here 2ca7 <=> Koptic Small Letter Tau
}]


[subsection {Whitespace and comments}]

One issue not touched upon so far is whitespace and comments.

[para]

307
308
309
310
311
312
313
314
315
316
317
318
absence of a mode before the nonterminal.

[para]

Now, with all the above under our belt it should be possible to not
only read, but understand the formal specification of the text
representation shown in the next section, written in itself.


[include include/format/peg.inc]
[include include/feedback.inc]
[manpage_end]







<




306
307
308
309
310
311
312

313
314
315
316
absence of a mode before the nonterminal.

[para]

Now, with all the above under our belt it should be possible to not
only read, but understand the formal specification of the text
representation shown in the next section, written in itself.


[include include/format/peg.inc]
[include include/feedback.inc]
[manpage_end]

Changes to modules/pt/pt_pegrammar.man.

38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
non-canonical serialization.

[para]

For the specification of serializations see the section
[sectref {PE serialization format}].


[call [cmd ::pt::peg] [method verify-as-canonical] \
	[arg serial]]

This command verifies that the content of [arg serial] is a valid
[term canonical] serialization of a PEG and will throw an error if
that is not the case. The result of the command is the empty string.

[para]

For the specification of canonical serializations see the section
[sectref {PEG serialization format}].


[call [cmd ::pt::peg] [method canonicalize] [arg serial]]

This command assumes that the content of [arg serial] is a valid
[term regular] serialization of a PEG and will throw an error if that
is not the case.

[para]

It will then convert the input into the [term canonical] serialization
of the contained PEG and return it as its result. If the input is
already canonical it will be returned unchanged.

[para]

For the specification of regular and canonical serializations see the
section [sectref {PEG serialization format}].


[call [cmd ::pt::peg] [method print] [arg serial]]

This command assumes that the argument [arg serial] contains a valid
serialization of a parsing expression and returns a string containing
that PE in a human readable form.

[para]

The exact format of this form is not specified and cannot be relied on
for parsing or other machine-based activities.

[para]

For the specification of serializations see the section
[sectref {PEG serialization format}].


[call [cmd ::pt::peg] [method merge] \
	[arg seriala] [arg serialb]]

This command accepts the regular serializations of two grammars and
uses them to create their union.  The result of the command is the
canonical serialization of this unified grammar.







<











<


















<















<







38
39
40
41
42
43
44

45
46
47
48
49
50
51
52
53
54
55

56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73

74
75
76
77
78
79
80
81
82
83
84
85
86
87
88

89
90
91
92
93
94
95
non-canonical serialization.

[para]

For the specification of serializations see the section
[sectref {PE serialization format}].


[call [cmd ::pt::peg] [method verify-as-canonical] \
	[arg serial]]

This command verifies that the content of [arg serial] is a valid
[term canonical] serialization of a PEG and will throw an error if
that is not the case. The result of the command is the empty string.

[para]

For the specification of canonical serializations see the section
[sectref {PEG serialization format}].


[call [cmd ::pt::peg] [method canonicalize] [arg serial]]

This command assumes that the content of [arg serial] is a valid
[term regular] serialization of a PEG and will throw an error if that
is not the case.

[para]

It will then convert the input into the [term canonical] serialization
of the contained PEG and return it as its result. If the input is
already canonical it will be returned unchanged.

[para]

For the specification of regular and canonical serializations see the
section [sectref {PEG serialization format}].


[call [cmd ::pt::peg] [method print] [arg serial]]

This command assumes that the argument [arg serial] contains a valid
serialization of a parsing expression and returns a string containing
that PE in a human readable form.

[para]

The exact format of this form is not specified and cannot be relied on
for parsing or other machine-based activities.

[para]

For the specification of serializations see the section
[sectref {PEG serialization format}].


[call [cmd ::pt::peg] [method merge] \
	[arg seriala] [arg serialb]]

This command accepts the regular serializations of two grammars and
uses them to create their union.  The result of the command is the
canonical serialization of this unified grammar.
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
grammar.

[para]
The start expression of the unified grammar is the choice between the
start expressions of the input grammars, with the start expression of
[arg seriala] coming first, except if both expressions are identical.
In that case the first expression is taken


[call [cmd ::pt::peg] [method equal] \
	[arg seriala] [arg serialb]]

This command tests the two grammars [arg seriala] and [arg serialb]
for structural equality. The result of the command is a boolean
value. It will be set to [const true] if the expressions are







<







118
119
120
121
122
123
124

125
126
127
128
129
130
131
grammar.

[para]
The start expression of the unified grammar is the choice between the
start expressions of the input grammars, with the start expression of
[arg seriala] coming first, except if both expressions are identical.
In that case the first expression is taken


[call [cmd ::pt::peg] [method equal] \
	[arg seriala] [arg serialb]]

This command tests the two grammars [arg seriala] and [arg serialb]
for structural equality. The result of the command is a boolean
value. It will be set to [const true] if the expressions are

Changes to modules/pt/pt_pexpr_op.man.

27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
      [arg dropset] [arg pe]]

This command removes all occurences of any of the nonterminals symbols
in the set [arg dropset] from the parsing expression [arg pe], and
simplifies it. This may result in the expression becoming "epsilon",
i.e. matching nothing.


[call [cmd ::pt::pe::op] [method rename] \
      [arg nt] [arg ntnew] [arg pe]]

This command renames all occurences of the nonterminal [arg nt] in the
parsing expression [arg pe] into [arg ntnew].


[call [cmd ::pt::pe::op] [method called] [arg pe]]

This command extracts the set of all nonterminal symbols used,
i.e. 'called', in the parsing expression [arg pe].


[call [cmd ::pt::pe::op] [method flatten] [arg pe]]

This command transforms the parsing expression by eliminating
sequences nested in sequences, and choices in choices, lifting the
children of the nested expression into the parent. It further
eliminates all sequences and choices with only one child, as these are
redundant.

[para]

The resulting parsing expression is returned as the result of the
command.


[call [cmd ::pt::pe::op] [method fusechars] [arg pe]]

This command transforms the parsing expression by fusing adjacent
terminals in sequences and adjacent terminals and ranges in choices,
it (re)constructs highlevel [term strings] and
[term {character classes}].







<






<




<













<







27
28
29
30
31
32
33

34
35
36
37
38
39

40
41
42
43

44
45
46
47
48
49
50
51
52
53
54
55
56

57
58
59
60
61
62
63
      [arg dropset] [arg pe]]

This command removes all occurences of any of the nonterminals symbols
in the set [arg dropset] from the parsing expression [arg pe], and
simplifies it. This may result in the expression becoming "epsilon",
i.e. matching nothing.


[call [cmd ::pt::pe::op] [method rename] \
      [arg nt] [arg ntnew] [arg pe]]

This command renames all occurences of the nonterminal [arg nt] in the
parsing expression [arg pe] into [arg ntnew].


[call [cmd ::pt::pe::op] [method called] [arg pe]]

This command extracts the set of all nonterminal symbols used,
i.e. 'called', in the parsing expression [arg pe].


[call [cmd ::pt::pe::op] [method flatten] [arg pe]]

This command transforms the parsing expression by eliminating
sequences nested in sequences, and choices in choices, lifting the
children of the nested expression into the parent. It further
eliminates all sequences and choices with only one child, as these are
redundant.

[para]

The resulting parsing expression is returned as the result of the
command.


[call [cmd ::pt::pe::op] [method fusechars] [arg pe]]

This command transforms the parsing expression by fusing adjacent
terminals in sequences and adjacent terminals and ranges in choices,
it (re)constructs highlevel [term strings] and
[term {character classes}].
82
83
84
85
86
87
88
89
90
91
92
93
parsing expression.

Notably, the commands [cmd {::pt::peg bottomup}] and
[cmd {::pt::peg topdown}] will process them without
trouble.

[list_end]


[include include/serial/pexpression.inc]
[include include/feedback.inc]
[manpage_end]







<




78
79
80
81
82
83
84

85
86
87
88
parsing expression.

Notably, the commands [cmd {::pt::peg bottomup}] and
[cmd {::pt::peg topdown}] will process them without
trouble.

[list_end]


[include include/serial/pexpression.inc]
[include include/feedback.inc]
[manpage_end]

Changes to modules/pt/pt_pexpression.man.

38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
non-canonical serialization.

[para]

For the specification of serializations see the section
[sectref {PE serialization format}].


[call [cmd ::pt::pe] [method verify-as-canonical] \
	[arg serial]]

This command verifies that the content of [arg serial] is a valid
[term canonical] serialization of a parsing expression and will throw
an error if that is not the case. The result of the command is the
empty string.

[para]

For the specification of canonical serializations see the section
[sectref {PE serialization format}].


[call [cmd ::pt::pe] [method canonicalize] [arg serial]]

This command assumes that the content of [arg serial] is a valid
[term regular] serialization of a parsing expression and will throw an
error if that is not the case.

[para]

It will then convert the input into the [term canonical] serialization
of this parsing expression and return it as its result. If the input
is already canonical it will be returned unchanged.

[para]

For the specification of regular and canonical serializations see the
section [sectref {PE serialization format}].


[call [cmd ::pt::pe] [method print] [arg serial]]

This command assumes that the argument [arg serial] contains a valid
serialization of a parsing expression and returns a string containing
that PE in a human readable form.

[para]

The exact format of this form is not specified and cannot be relied on
for parsing or other machine-based activities.

[para]

For the specification of serializations see the section
[sectref {PE serialization format}].


[call [cmd ::pt::pe] [method bottomup] [arg cmdprefix] [arg pe]]

This command walks the parsing expression [arg pe] from the bottom up
to the root, invoking the command prefix [arg cmdprefix] for each
partial expression. This implies that the children of a parsing
expression PE are handled before PE.







<












<


















<















<







38
39
40
41
42
43
44

45
46
47
48
49
50
51
52
53
54
55
56

57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74

75
76
77
78
79
80
81
82
83
84
85
86
87
88
89

90
91
92
93
94
95
96
non-canonical serialization.

[para]

For the specification of serializations see the section
[sectref {PE serialization format}].


[call [cmd ::pt::pe] [method verify-as-canonical] \
	[arg serial]]

This command verifies that the content of [arg serial] is a valid
[term canonical] serialization of a parsing expression and will throw
an error if that is not the case. The result of the command is the
empty string.

[para]

For the specification of canonical serializations see the section
[sectref {PE serialization format}].


[call [cmd ::pt::pe] [method canonicalize] [arg serial]]

This command assumes that the content of [arg serial] is a valid
[term regular] serialization of a parsing expression and will throw an
error if that is not the case.

[para]

It will then convert the input into the [term canonical] serialization
of this parsing expression and return it as its result. If the input
is already canonical it will be returned unchanged.

[para]

For the specification of regular and canonical serializations see the
section [sectref {PE serialization format}].


[call [cmd ::pt::pe] [method print] [arg serial]]

This command assumes that the argument [arg serial] contains a valid
serialization of a parsing expression and returns a string containing
that PE in a human readable form.

[para]

The exact format of this form is not specified and cannot be relied on
for parsing or other machine-based activities.

[para]

For the specification of serializations see the section
[sectref {PE serialization format}].


[call [cmd ::pt::pe] [method bottomup] [arg cmdprefix] [arg pe]]

This command walks the parsing expression [arg pe] from the bottom up
to the root, invoking the command prefix [arg cmdprefix] for each
partial expression. This implies that the children of a parsing
expression PE are handled before PE.
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307

This also means that for all inner parsing expressions the contents of
[arg arguments] are the results of the command prefix invoked for the
children of this inner parsing expression.

[list_end]


[call [cmd ::pt::pe] [method topdown] [arg cmdprefix] [arg pe]]

This command walks the parsing expression [arg pe] from the root down
to the leaves, invoking the command prefix [arg cmdprefix] for each
partial expression. This implies that the children of a parsing
expression PE are handled after PE.

[para]

The command prefix has the same signature as for [method bottomup],
see above.

[para]

The result returned by the command prefix is [emph ignored].


[call [cmd ::pt::pe] [method equal] \
	[arg seriala] [arg serialb]]

This command tests the two parsing expressions [arg seriala] and
[arg serialb] for structural equality. The result of the command is a
boolean value. It will be set to [const true] if the expressions are
identical, and [const false] otherwise.

[para]

String equality is usable only if we can assume that the two parsing
expressions are pure Tcl lists.


[call [cmd ::pt::pe] [method epsilon]]

This command constructs the atomic parsing expression for epsilon.


[call [cmd ::pt::pe] [method dot]]

This command constructs the atomic parsing expression for dot.


[call [cmd ::pt::pe] [method alnum]]

This command constructs the atomic parsing expression for alnum.


[call [cmd ::pt::pe] [method alpha]]

This command constructs the atomic parsing expression for alpha.


[call [cmd ::pt::pe] [method ascii]]

This command constructs the atomic parsing expression for ascii.


[call [cmd ::pt::pe] [method control]]

This command constructs the atomic parsing expression for control.


[call [cmd ::pt::pe] [method digit]]

This command constructs the atomic parsing expression for digit.


[call [cmd ::pt::pe] [method graph]]

This command constructs the atomic parsing expression for graph.


[call [cmd ::pt::pe] [method lower]]

This command constructs the atomic parsing expression for lower.


[call [cmd ::pt::pe] [method print]]

This command constructs the atomic parsing expression for print.


[call [cmd ::pt::pe] [method punct]]

This command constructs the atomic parsing expression for punct.


[call [cmd ::pt::pe] [method space]]

This command constructs the atomic parsing expression for space.


[call [cmd ::pt::pe] [method upper]]

This command constructs the atomic parsing expression for upper.


[call [cmd ::pt::pe] [method wordchar]]

This command constructs the atomic parsing expression for wordchar.


[call [cmd ::pt::pe] [method xdigit]]

This command constructs the atomic parsing expression for xdigit.


[call [cmd ::pt::pe] [method ddigit]]

This command constructs the atomic parsing expression for ddigit.


[call [cmd ::pt::pe] [method terminal] [arg t]]

This command constructs the atomic parsing expression for the terminal
symbol [arg t].


[call [cmd ::pt::pe] [method range] [arg ta] [arg tb]]

This command constructs the atomic parsing expression for the range of
terminal symbols [arg ta] ... [arg tb].


[call [cmd ::pt::pe] [method nonterminal] [arg nt]]

This command constructs the atomic parsing expression for the
nonterminal symbol [arg nt].


[call [cmd ::pt::pe] [method choice] [arg pe]...]

This command constructs the parsing expression representing the
ordered or prioritized choice between the argument parsing
expressions. The first argument has the highest priority.


[call [cmd ::pt::pe] [method sequence] [arg pe]...]

This command constructs the parsing expression representing the
sequence of the argument parsing expression. The first argument is the
first element of the sequence.


[call [cmd ::pt::pe] [method repeat0] [arg pe]]

This command constructs the parsing expression representing the zero
or more repetition of the argument parsing expression [arg pe], also
known as the kleene closure.


[call [cmd ::pt::pe] [method repeat1] [arg pe]]

This command constructs the parsing expression representing the one or
more repetition of the argument parsing expression [arg pe], also
known as the positive kleene closure.


[call [cmd ::pt::pe] [method optional] [arg pe]]

This command constructs the parsing expression representing the
optionality of the argument parsing expression [arg pe].


[call [cmd ::pt::pe] [method ahead] [arg pe]]

This command constructs the parsing expression representing the
positive lookahead of the argument parsing expression [arg pe].


[call [cmd ::pt::pe] [method notahead] [arg pe]]

This command constructs the parsing expression representing the
negative lookahead of the argument parsing expression [arg pe].

[list_end]


[include include/serial/pexpression.inc]
[include include/feedback.inc]
[manpage_end]







<
















<













<



<





<



<





<



<





<



<





<



<





<



<





<



<





<




<



<






<





<




<







<






<





<







<





<




<







<




116
117
118
119
120
121
122

123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138

139
140
141
142
143
144
145
146
147
148
149
150
151

152
153
154

155
156
157
158
159

160
161
162

163
164
165
166
167

168
169
170

171
172
173
174
175

176
177
178

179
180
181
182
183

184
185
186

187
188
189
190
191

192
193
194

195
196
197
198
199

200
201
202

203
204
205
206
207

208
209
210
211

212
213
214

215
216
217
218
219
220

221
222
223
224
225

226
227
228
229

230
231
232
233
234
235
236

237
238
239
240
241
242

243
244
245
246
247

248
249
250
251
252
253
254

255
256
257
258
259

260
261
262
263

264
265
266
267
268
269
270

271
272
273
274

This also means that for all inner parsing expressions the contents of
[arg arguments] are the results of the command prefix invoked for the
children of this inner parsing expression.

[list_end]


[call [cmd ::pt::pe] [method topdown] [arg cmdprefix] [arg pe]]

This command walks the parsing expression [arg pe] from the root down
to the leaves, invoking the command prefix [arg cmdprefix] for each
partial expression. This implies that the children of a parsing
expression PE are handled after PE.

[para]

The command prefix has the same signature as for [method bottomup],
see above.

[para]

The result returned by the command prefix is [emph ignored].


[call [cmd ::pt::pe] [method equal] \
	[arg seriala] [arg serialb]]

This command tests the two parsing expressions [arg seriala] and
[arg serialb] for structural equality. The result of the command is a
boolean value. It will be set to [const true] if the expressions are
identical, and [const false] otherwise.

[para]

String equality is usable only if we can assume that the two parsing
expressions are pure Tcl lists.


[call [cmd ::pt::pe] [method epsilon]]

This command constructs the atomic parsing expression for epsilon.


[call [cmd ::pt::pe] [method dot]]

This command constructs the atomic parsing expression for dot.


[call [cmd ::pt::pe] [method alnum]]

This command constructs the atomic parsing expression for alnum.


[call [cmd ::pt::pe] [method alpha]]

This command constructs the atomic parsing expression for alpha.


[call [cmd ::pt::pe] [method ascii]]

This command constructs the atomic parsing expression for ascii.


[call [cmd ::pt::pe] [method control]]

This command constructs the atomic parsing expression for control.


[call [cmd ::pt::pe] [method digit]]

This command constructs the atomic parsing expression for digit.


[call [cmd ::pt::pe] [method graph]]

This command constructs the atomic parsing expression for graph.


[call [cmd ::pt::pe] [method lower]]

This command constructs the atomic parsing expression for lower.


[call [cmd ::pt::pe] [method print]]

This command constructs the atomic parsing expression for print.


[call [cmd ::pt::pe] [method punct]]

This command constructs the atomic parsing expression for punct.


[call [cmd ::pt::pe] [method space]]

This command constructs the atomic parsing expression for space.


[call [cmd ::pt::pe] [method upper]]

This command constructs the atomic parsing expression for upper.


[call [cmd ::pt::pe] [method wordchar]]

This command constructs the atomic parsing expression for wordchar.


[call [cmd ::pt::pe] [method xdigit]]

This command constructs the atomic parsing expression for xdigit.


[call [cmd ::pt::pe] [method ddigit]]

This command constructs the atomic parsing expression for ddigit.


[call [cmd ::pt::pe] [method terminal] [arg t]]

This command constructs the atomic parsing expression for the terminal
symbol [arg t].


[call [cmd ::pt::pe] [method range] [arg ta] [arg tb]]

This command constructs the atomic parsing expression for the range of
terminal symbols [arg ta] ... [arg tb].


[call [cmd ::pt::pe] [method nonterminal] [arg nt]]

This command constructs the atomic parsing expression for the
nonterminal symbol [arg nt].


[call [cmd ::pt::pe] [method choice] [arg pe]...]

This command constructs the parsing expression representing the
ordered or prioritized choice between the argument parsing
expressions. The first argument has the highest priority.


[call [cmd ::pt::pe] [method sequence] [arg pe]...]

This command constructs the parsing expression representing the
sequence of the argument parsing expression. The first argument is the
first element of the sequence.


[call [cmd ::pt::pe] [method repeat0] [arg pe]]

This command constructs the parsing expression representing the zero
or more repetition of the argument parsing expression [arg pe], also
known as the kleene closure.


[call [cmd ::pt::pe] [method repeat1] [arg pe]]

This command constructs the parsing expression representing the one or
more repetition of the argument parsing expression [arg pe], also
known as the positive kleene closure.


[call [cmd ::pt::pe] [method optional] [arg pe]]

This command constructs the parsing expression representing the
optionality of the argument parsing expression [arg pe].


[call [cmd ::pt::pe] [method ahead] [arg pe]]

This command constructs the parsing expression representing the
positive lookahead of the argument parsing expression [arg pe].


[call [cmd ::pt::pe] [method notahead] [arg pe]]

This command constructs the parsing expression representing the
negative lookahead of the argument parsing expression [arg pe].

[list_end]


[include include/serial/pexpression.inc]
[include include/feedback.inc]
[manpage_end]

Changes to modules/pt/pt_rdengine.man.

43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
parser with backtracking and returns the fully qualified name of the
object command as its result. The API of this object command is
described in the section [sectref {Object API}]. It may be used to
invoke various operations on the object.

[list_end]


[subsection {Object API}]

All objects created by this package provide the following 63 methods
for the manipulation and querying of their state, which is, in essence
the architectural state of a PARAM.

[para]







<







43
44
45
46
47
48
49

50
51
52
53
54
55
56
parser with backtracking and returns the fully qualified name of the
object command as its result. The API of this object command is
described in the section [sectref {Object API}]. It may be used to
invoke various operations on the object.

[list_end]


[subsection {Object API}]

All objects created by this package provide the following 63 methods
for the manipulation and querying of their state, which is, in essence
the architectural state of a PARAM.

[para]
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
i_loc_push
i_error_clear
i_error_push
}]

Parsers use it at the beginning of sequences generating an AST and
choices with an initial branch generating an AST.


[call [arg objectName] [method si:void_state_merge]]

This method combines [example {
i_error_pop_merge
i_loc_pop_rewind/discard
}]







<







343
344
345
346
347
348
349

350
351
352
353
354
355
356
i_loc_push
i_error_clear
i_error_push
}]

Parsers use it at the beginning of sequences generating an AST and
choices with an initial branch generating an AST.


[call [arg objectName] [method si:void_state_merge]]

This method combines [example {
i_error_pop_merge
i_loc_pop_rewind/discard
}]

Changes to modules/pt/pt_to_api.man.

46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106

[call [cmd CONVERTER] [method reset]]

This method has to reset the configuration of the converter to its
default settings. The result of the method has to be the empty
string.


[call [cmd CONVERTER] [method configure]]

This method, in this form, has to return a dictionary containing the
current configuration of the converter.


[call [cmd CONVERTER] [method configure] [arg option]]

This method, in this form, has to return the current value of the
specified configuration [arg option] of the converter.

[para]

Please read the section [sectref Options] for the set of standard
options any converter has to accept.

Any other options accepted by a specific converter will be described
in its manpage.


[call [cmd CONVERTER] [method configure] [arg option] [arg value]...]

This command, in this form, sets the specified [arg option]s of the
converter to the given [arg value]s.

[para]

Please read the section [sectref Options] for the set of standard
options a converter has to accept.

Any other options accepted by a specific converter will be described
in its manpage.


[call [cmd CONVERTER] [method convert] [arg serial]]

This method has to accept the canonical serialization of a parsing
expression grammar, as specified in section
[sectref {PEG serialization format}], and contained in [arg serial].

The result of the method has to be the result of converting the input
grammar into whatever the converter is for, per its configuration.

[list_end][comment {-- api command signatures --}]
[list_end][comment {-- converter rules --}]


[section {Plugin API}]

Any (grammar) export plugin has to follow the rules set out below:

[list_begin enumerated][comment {-- plugin rules --}]








<




<













<














<











<







46
47
48
49
50
51
52

53
54
55
56

57
58
59
60
61
62
63
64
65
66
67
68
69

70
71
72
73
74
75
76
77
78
79
80
81
82
83

84
85
86
87
88
89
90
91
92
93
94

95
96
97
98
99
100
101

[call [cmd CONVERTER] [method reset]]

This method has to reset the configuration of the converter to its
default settings. The result of the method has to be the empty
string.


[call [cmd CONVERTER] [method configure]]

This method, in this form, has to return a dictionary containing the
current configuration of the converter.


[call [cmd CONVERTER] [method configure] [arg option]]

This method, in this form, has to return the current value of the
specified configuration [arg option] of the converter.

[para]

Please read the section [sectref Options] for the set of standard
options any converter has to accept.

Any other options accepted by a specific converter will be described
in its manpage.


[call [cmd CONVERTER] [method configure] [arg option] [arg value]...]

This command, in this form, sets the specified [arg option]s of the
converter to the given [arg value]s.

[para]

Please read the section [sectref Options] for the set of standard
options a converter has to accept.

Any other options accepted by a specific converter will be described
in its manpage.


[call [cmd CONVERTER] [method convert] [arg serial]]

This method has to accept the canonical serialization of a parsing
expression grammar, as specified in section
[sectref {PEG serialization format}], and contained in [arg serial].

The result of the method has to be the result of converting the input
grammar into whatever the converter is for, per its configuration.

[list_end][comment {-- api command signatures --}]
[list_end][comment {-- converter rules --}]


[section {Plugin API}]

Any (grammar) export plugin has to follow the rules set out below:

[list_begin enumerated][comment {-- plugin rules --}]

167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193

[enum]	A single usage cycle of a plugin consists of an invokation of
	the command [cmd export]. This call has to leave the plugin in
	a state where another usage cycle can be run without problems.

[list_end][comment {-- plugin rules --}]


[section Options]

Each export converter and plugin for an export converter has to accept
the options below in their [method configure] method. Converters are
allowed to ignore the contents of these options when performing a
conversion, but they must not reject them. Plugins are expected to
pass the options given to them to the converter they are invoking.

[list_begin options]
[include include/format/options_std.inc]
[list_end]


[section Usage]

To use a converter do

[example {
    # Get the converter (single command here, not class)







<











<







162
163
164
165
166
167
168

169
170
171
172
173
174
175
176
177
178
179

180
181
182
183
184
185
186

[enum]	A single usage cycle of a plugin consists of an invokation of
	the command [cmd export]. This call has to leave the plugin in
	a state where another usage cycle can be run without problems.

[list_end][comment {-- plugin rules --}]


[section Options]

Each export converter and plugin for an export converter has to accept
the options below in their [method configure] method. Converters are
allowed to ignore the contents of these options when performing a
conversion, but they must not reject them. Plugins are expected to
pass the options given to them to the converter they are invoking.

[list_begin options]
[include include/format/options_std.inc]
[list_end]


[section Usage]

To use a converter do

[example {
    # Get the converter (single command here, not class)

Changes to modules/rc4/rc4.man.

1
2









3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin rc4 n 1.1.0]









[copyright {2003, Pat Thoyts <[email protected]>}]
[moddesc   {RC4 Stream Cipher}]
[titledesc {Implementation of the RC4 stream cipher}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require rc4 [opt 1.1.0]]
[description]
[para]

This package is an implementation in Tcl of the RC4 stream cipher 
developed by Ron Rivest of RSA Data Security Inc. The cipher was a
trade secret of RSA but was reverse-engineered and published to the
internet in 1994. It is used in a number of network protocols for
securing communications. To evade trademark restrictions this cipher
is sometimes known as ARCFOUR.

[section {COMMANDS}]


>
>
>
>
>
>
>
>
>









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin rc4 n 1.1.0]
[see_also aes(n)]
[see_also blowfish(n)]
[see_also des(n)]
[keywords arcfour]
[keywords {data integrity}]
[keywords encryption]
[keywords rc4]
[keywords security]
[keywords {stream cipher}]
[copyright {2003, Pat Thoyts <[email protected]>}]
[moddesc   {RC4 Stream Cipher}]
[titledesc {Implementation of the RC4 stream cipher}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require rc4 [opt 1.1.0]]
[description]
[para]

This package is an implementation in Tcl of the RC4 stream cipher
developed by Ron Rivest of RSA Data Security Inc. The cipher was a
trade secret of RSA but was reverse-engineered and published to the
internet in 1994. It is used in a number of network protocols for
securing communications. To evade trademark restrictions this cipher
is sometimes known as ARCFOUR.

[section {COMMANDS}]
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
channel is given then the result will be written to this channel.
Giving the [arg "-hex"] option will return a hexadecimal encoded
version of the result if not using an [arg -out] channel.

[para]

The data to be processes can be specified either as a string argument to
the rc4 command, or as a filename or a pre-opened channel. If the 
[arg "-infile"] argument is given then the file is opened, the data read
and processed and the file is closed. If the [arg "-in"] argument is
given then data is read from the channel until the end of file. The
channel is not closed. If the [arg "-out"] argument is given then the
processing result is written to this channel.

[para]







|







42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
channel is given then the result will be written to this channel.
Giving the [arg "-hex"] option will return a hexadecimal encoded
version of the result if not using an [arg -out] channel.

[para]

The data to be processes can be specified either as a string argument to
the rc4 command, or as a filename or a pre-opened channel. If the
[arg "-infile"] argument is given then the file is opened, the data read
and processed and the file is closed. If the [arg "-in"] argument is
given then data is read from the channel until the end of file. The
channel is not closed. If the [arg "-out"] argument is given then the
processing result is written to this channel.

[para]
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
[section "PROGRAMMING INTERFACE"]

[list_begin definitions]

[call [cmd "::rc4::RC4Init"] [arg "keydata"]]

Initialize a new RC4 key. The [arg keydata] is any amount of binary
data and is used to initialize the cipher internal state. 

[call [cmd "::rc4::RC4"] [arg "Key"] [arg "data"]]

Encrypt or decrypt the input data using the key obtained by calling
[cmd RC4Init].

[call [cmd "::rc4::RC4Final"] [arg "Key"]]

This should be called to clean up resources associated with 
[arg Key]. Once this function has been called the key is destroyed.

[list_end]

[section "EXAMPLES"]

[example {







|








|







70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
[section "PROGRAMMING INTERFACE"]

[list_begin definitions]

[call [cmd "::rc4::RC4Init"] [arg "keydata"]]

Initialize a new RC4 key. The [arg keydata] is any amount of binary
data and is used to initialize the cipher internal state.

[call [cmd "::rc4::RC4"] [arg "Key"] [arg "data"]]

Encrypt or decrypt the input data using the key obtained by calling
[cmd RC4Init].

[call [cmd "::rc4::RC4Final"] [arg "Key"]]

This should be called to clean up resources associated with
[arg Key]. Once this function has been called the key is destroyed.

[list_end]

[section "EXAMPLES"]

[example {
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
[example {
 proc ::Finish {myState data} {
     DoStuffWith $myState $data
 }
 rc4::rc4 -in $socket -command [list ::Finish $ApplicationState]
}]

[see_also des(n) aes(n) blowfish(n)]

[section "AUTHORS"]
Pat Thoyts

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph rc4] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords rc4 arcfour {stream cipher} security encryption {data integrity}]
[manpage_end]







<
<



<
|
<
<
|
<
<
<
<
<
<
<
<

108
109
110
111
112
113
114


115
116
117

118


119








120
[example {
 proc ::Finish {myState data} {
     DoStuffWith $myState $data
 }
 rc4::rc4 -in $socket -command [list ::Finish $ApplicationState]
}]



[section "AUTHORS"]
Pat Thoyts


[vset CATEGORY rc4]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/rcs/rcs.man.

1










2
3
4
5
6
7
8
[manpage_begin rcs n 2.0.2]










[moddesc {RCS low level utilities}]
[copyright {2005, Andreas Kupries <[email protected]>}]
[copyright {2005, Colin McCormack <[email protected]>}]
[titledesc {RCS low level utilities}]
[category  {Text processing}]
[require Tcl 8.4]
[require rcs [opt 0.1]]

>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[manpage_begin rcs n 2.0.2]
[see_also struct]
[see_also textutil]
[keywords CVS]
[keywords {diff -n format}]
[keywords patching]
[keywords RCS]
[keywords {RCS patch}]
[keywords SCCS]
[keywords {text conversion}]
[keywords {text differences}]
[moddesc {RCS low level utilities}]
[copyright {2005, Andreas Kupries <[email protected]>}]
[copyright {2005, Colin McCormack <[email protected]>}]
[titledesc {RCS low level utilities}]
[category  {Text processing}]
[require Tcl 8.4]
[require rcs [opt 0.1]]
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
[list_end]
[comment {
	In the future we might add the generation and decoding
	of other patch formats as well. Like regular 'patch'
	patches, or also context and unified patches.
}]


[section {COMMANDS}]

[list_begin definitions]

[call [cmd ::rcs::text2dict] [arg text]]

Converts the argument [arg text] into a dictionary containing and
representing the same text in an indexed form and returns that
dictionary as its result.

More information about the format of the result can be found in
section [sectref {TEXT DICT DATA STRUCTURE}]. This command returns the
[term canonical] representation of the input.


[call [cmd ::rcs::dict2text] [arg dict]]

This command provides the complementary operation to

[cmd ::rcs::text2dict]. It converts a dictionary in the form described
in section [sectref {TEXT DICT DATA STRUCTURE}] back into a text and
returns that text as its result. The command does accept non-canonical
representations of the text as its input.


[call [cmd ::rcs::file2dict] [arg filename]]

This command is identical to [cmd ::rcs::text2dict], except that it
reads the text to convert from the file with path [arg filename]. The
file has to exist and must be readable as well.


[call [cmd ::rcs::dict2file] [arg filename] [arg dict]]

This command is identical to [cmd ::rcs::2dict2text], except that it
stores the resulting text in the file with path [arg filename]. The
file is created if it did not exist, and must be writable. The result
of the command is the empty string.


[call [cmd ::rcs::decodeRcsPatch] [arg text]]

Converts the [arg text] argument into a patch command list (PCL) as
specified in the section [sectref {RCS PATCH COMMAND LIST}] and
returns this list as its result.

It is assumed that the input text is in [term {diff -n format}], also
known as [term {RCS patch}] format, as specified in the section
[sectref rpf].

Please note that the command ignores no-ops in the input, in other
words the resulting PCL contains only instructions doing something.


[call [cmd ::rcs::encodeRcsPatch] [arg pcmds]]

This command provides the complementary operation to

[cmd ::rcs::decodeRcsPatch]. It convert a patch comand list (PCL) list
as specified in the section [sectref {RCS PATCH COMMAND LIST}] back
into a text in [sectref rpf] and returns that text as its result.

[para]

Note that this command and [cmd ::rcs::decodeRcsPatch] are not exactly
complementary, as the latter strips no-ops from its input, which the
encoder cannot put back anymore into the generated RCS patch. In other
words, the result of a decode/encode step may not match the original
input at the character level, but it will match it at the functional
level.


[call [cmd ::rcs::applyRcsPatch] [arg text] [arg pcmds]]

This operation applies a patch in the form of a PCL to a text given in
the form of a dictionary and returns the modified text, again as
dictionary, as its result.

[para]

To handle actual text use the commands [cmd ::rcs::text2dict] (or
equivalent) and [cmd ::rcs::decodeRcsPatch] to transform the inputs
into data structures acceptable to this command. Analogously use the
command [cmd ::rcs::dict2text] (or equivalent) to transform the
result of this command into actuall text as required.

[list_end]


[section {TEXT DICT DATA STRUCTURE}]

A text dictionary is a dictionary whose keys are integer numbers and
text strings as the associated values. The keys represent the line
numbers of a text and the values the text of that line.  Note that one
text can have many representations as a dictionary, as the index







<














<









<





<







<













<


















<















<







49
50
51
52
53
54
55

56
57
58
59
60
61
62
63
64
65
66
67
68
69

70
71
72
73
74
75
76
77
78

79
80
81
82
83

84
85
86
87
88
89
90

91
92
93
94
95
96
97
98
99
100
101
102
103

104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121

122
123
124
125
126
127
128
129
130
131
132
133
134
135
136

137
138
139
140
141
142
143
[list_end]
[comment {
	In the future we might add the generation and decoding
	of other patch formats as well. Like regular 'patch'
	patches, or also context and unified patches.
}]


[section {COMMANDS}]

[list_begin definitions]

[call [cmd ::rcs::text2dict] [arg text]]

Converts the argument [arg text] into a dictionary containing and
representing the same text in an indexed form and returns that
dictionary as its result.

More information about the format of the result can be found in
section [sectref {TEXT DICT DATA STRUCTURE}]. This command returns the
[term canonical] representation of the input.


[call [cmd ::rcs::dict2text] [arg dict]]

This command provides the complementary operation to

[cmd ::rcs::text2dict]. It converts a dictionary in the form described
in section [sectref {TEXT DICT DATA STRUCTURE}] back into a text and
returns that text as its result. The command does accept non-canonical
representations of the text as its input.


[call [cmd ::rcs::file2dict] [arg filename]]

This command is identical to [cmd ::rcs::text2dict], except that it
reads the text to convert from the file with path [arg filename]. The
file has to exist and must be readable as well.


[call [cmd ::rcs::dict2file] [arg filename] [arg dict]]

This command is identical to [cmd ::rcs::2dict2text], except that it
stores the resulting text in the file with path [arg filename]. The
file is created if it did not exist, and must be writable. The result
of the command is the empty string.


[call [cmd ::rcs::decodeRcsPatch] [arg text]]

Converts the [arg text] argument into a patch command list (PCL) as
specified in the section [sectref {RCS PATCH COMMAND LIST}] and
returns this list as its result.

It is assumed that the input text is in [term {diff -n format}], also
known as [term {RCS patch}] format, as specified in the section
[sectref rpf].

Please note that the command ignores no-ops in the input, in other
words the resulting PCL contains only instructions doing something.


[call [cmd ::rcs::encodeRcsPatch] [arg pcmds]]

This command provides the complementary operation to

[cmd ::rcs::decodeRcsPatch]. It convert a patch comand list (PCL) list
as specified in the section [sectref {RCS PATCH COMMAND LIST}] back
into a text in [sectref rpf] and returns that text as its result.

[para]

Note that this command and [cmd ::rcs::decodeRcsPatch] are not exactly
complementary, as the latter strips no-ops from its input, which the
encoder cannot put back anymore into the generated RCS patch. In other
words, the result of a decode/encode step may not match the original
input at the character level, but it will match it at the functional
level.


[call [cmd ::rcs::applyRcsPatch] [arg text] [arg pcmds]]

This operation applies a patch in the form of a PCL to a text given in
the form of a dictionary and returns the modified text, again as
dictionary, as its result.

[para]

To handle actual text use the commands [cmd ::rcs::text2dict] (or
equivalent) and [cmd ::rcs::decodeRcsPatch] to transform the inputs
into data structures acceptable to this command. Analogously use the
command [cmd ::rcs::dict2text] (or equivalent) to transform the
result of this command into actuall text as required.

[list_end]


[section {TEXT DICT DATA STRUCTURE}]

A text dictionary is a dictionary whose keys are integer numbers and
text strings as the associated values. The keys represent the line
numbers of a text and the values the text of that line.  Note that one
text can have many representations as a dictionary, as the index
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
dictionary and returning text will generally accept all
representations, canonical or not.

[para]

The result of applying a patch to a text dictionary will in general
cause the dictionary to become non-canonical.


[section {RCS PATCH FORMAT} rpf]

A [term patch] is in general a series of instructions how to transform
an input text T into a different text T', and also encoded in text
form as well.








<







186
187
188
189
190
191
192

193
194
195
196
197
198
199
dictionary and returning text will generally accept all
representations, canonical or not.

[para]

The result of applying a patch to a text dictionary will in general
cause the dictionary to become non-canonical.


[section {RCS PATCH FORMAT} rpf]

A [term patch] is in general a series of instructions how to transform
an input text T into a different text T', and also encoded in text
form as well.

255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
[para]

This is the format of results returned by the command
[cmd ::rcs::decodeRcsPatch] and accepted by the commands
[cmd ::rcs::encodeRcsPatch] and [cmd ::rcs::appplyRcsPatch]
resp.


Note however that the decoder will strip no-op commands, and the
encoder will not generate no-ops, making them not fully complementary
at the textual level, only at the functional level.

[para]

And example of a RCS patch is

[para]
[example {d1 2
d4 1
a4 2
The named is the mother of all things.

a11 3
They both may be called deep and profound.
Deeper and more profound,
The door of all subtleties!}]


[section {RCS PATCH COMMAND LIST}]

Patch command lists (sort: PCL's) are the data structures generated by
patch decoder command and accepted by the patch encoder and applicator
commands. They represent RCS patches in the form of Tcl data
structures.







<


















<







256
257
258
259
260
261
262

263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280

281
282
283
284
285
286
287
[para]

This is the format of results returned by the command
[cmd ::rcs::decodeRcsPatch] and accepted by the commands
[cmd ::rcs::encodeRcsPatch] and [cmd ::rcs::appplyRcsPatch]
resp.


Note however that the decoder will strip no-op commands, and the
encoder will not generate no-ops, making them not fully complementary
at the textual level, only at the functional level.

[para]

And example of a RCS patch is

[para]
[example {d1 2
d4 1
a4 2
The named is the mother of all things.

a11 3
They both may be called deep and profound.
Deeper and more profound,
The door of all subtleties!}]


[section {RCS PATCH COMMAND LIST}]

Patch command lists (sort: PCL's) are the data structures generated by
patch decoder command and accepted by the patch encoder and applicator
commands. They represent RCS patches in the form of Tcl data
structures.
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
[para]
[example {{{d 1 2} {d 4 1} {a 4 {The named is the mother of all things.

}} {a 11 {They both may be called deep and profound.
Deeper and more profound,
The door of all subtleties!}}}}]

[see_also textutil struct]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph rcs] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords RCS CVS SCCS]
[keywords {RCS patch} {diff -n format} patching]
[keywords {text conversion} {text differences}]
[manpage_end]







<
|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<

321
322
323
324
325
326
327

328

329













330
[para]
[example {{{d 1 2} {d 4 1} {a 4 {The named is the mother of all things.

}} {a 11 {They both may be called deep and profound.
Deeper and more profound,
The door of all subtleties!}}}}]


[vset CATEGORY rcs]

[include ../doctools2base/include/feedback.inc]













[manpage_end]

Changes to modules/report/report.man.

1
2



3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin report n 0.3.1]



[copyright {2002 Andreas Kupries <[email protected]>}]
[moddesc   {Matrix reports}]
[titledesc {Create and manipulate report objects}]
[category  {Data structures}]
[require Tcl 8.2]
[require report [opt 0.3.1]]
[description]


>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin report n 0.3.1]
[keywords matrix]
[keywords report]
[keywords table]
[copyright {2002 Andreas Kupries <[email protected]>}]
[moddesc   {Matrix reports}]
[titledesc {Create and manipulate report objects}]
[category  {Data structures}]
[require Tcl 8.2]
[require report [opt 0.3.1]]
[description]
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116

[para]

The different kinds of lines and the codes used by the report methods
to address them are:

[list_begin definitions]


[def [const top]]

The topmost line of a report. Separates the report from anything which
came before it. The user can enable the usage of this line at will.

[def [const topdatasep]]







<







105
106
107
108
109
110
111

112
113
114
115
116
117
118

[para]

The different kinds of lines and the codes used by the report methods
to address them are:

[list_begin definitions]


[def [const top]]

The topmost line of a report. Separates the report from anything which
came before it. The user can enable the usage of this line at will.

[def [const topdatasep]]
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245

[section {REPORT METHODS}]
[para]

The following commands are possible for report objects:

[list_begin definitions]


[call [arg reportName] [method destroy]]

Destroys the report, including its storage space and associated
command.

[call [arg reportName] [arg templatecode] [method disable]|[method enable]]







<







233
234
235
236
237
238
239

240
241
242
243
244
245
246

[section {REPORT METHODS}]
[para]

The following commands are possible for report objects:

[list_begin definitions]


[call [arg reportName] [method destroy]]

Destroys the report, including its storage space and associated
command.

[call [arg reportName] [arg templatecode] [method disable]|[method enable]]
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
    |   |true numeric       |       |       |        |
    +---+-------------------+-------+-------+--------+
    %
    % # alternate way of doing the above
    % m format 2string r
}]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph report] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords matrix report table]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<

466
467
468
469
470
471
472

473


474








475
    |   |true numeric       |       |       |        |
    +---+-------------------+-------+-------+--------+
    %
    % # alternate way of doing the above
    % m format 2string r
}]


[vset CATEGORY report]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/rest/rest.man.

15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[call [cmd ::rest::simple] [arg url] [arg query] [opt config] [opt body]]
[call [cmd ::rest::get] [arg url] [arg query] [opt config] [opt body]]
[call [cmd ::rest::post] [arg url] [arg query] [opt config] [opt body]]
[call [cmd ::rest::head] [arg url] [arg query] [opt config] [opt body]]
[call [cmd ::rest::put] [arg url] [arg query] [opt config] [opt body]]
[call [cmd ::rest::delete] [arg url] [arg query] [opt config] [opt body]]
[list_end]
The above commands are all equivalent except for the http method used. If you use [cmd simple] then the method should be specified as an option in the [opt config] dict, otherwise it defaults to [const get]. If a body is needed then the config dict must be present, however it may be empty. 

[example {
    set appid APPID
    set search tcl
    set res [rest::get http://boss.yahooapis.com/ysearch/web/v1/$search [list appid $appid]]
    set res [rest::format_json $res]
}]







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[call [cmd ::rest::simple] [arg url] [arg query] [opt config] [opt body]]
[call [cmd ::rest::get] [arg url] [arg query] [opt config] [opt body]]
[call [cmd ::rest::post] [arg url] [arg query] [opt config] [opt body]]
[call [cmd ::rest::head] [arg url] [arg query] [opt config] [opt body]]
[call [cmd ::rest::put] [arg url] [arg query] [opt config] [opt body]]
[call [cmd ::rest::delete] [arg url] [arg query] [opt config] [opt body]]
[list_end]
The above commands are all equivalent except for the http method used. If you use [cmd simple] then the method should be specified as an option in the [opt config] dict, otherwise it defaults to [const get]. If a body is needed then the config dict must be present, however it may be empty.

[example {
    set appid APPID
    set search tcl
    set res [rest::get http://boss.yahooapis.com/ysearch/web/v1/$search [list appid $appid]]
    set res [rest::format_json $res]
}]
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
headers
cookie
auth
format
method
content-type


Interface usage
An interface to a REST API consists of a series of definitions of REST calls contained in an array. The array name becomes a namespace containing the defined commands. Each array element defines the name of the call and takes the form of a dict, aka key/value pairs. These keys are the defined configuration options below.
After creating the definitions simply call rest::create_interface on the array to create the commands.

[example {
package require rest

set yweather(forecast) {
   url http://weather.yahooapis.com/forecastrss
   req_args { p: }
   opt_args { u: }
}

rest::create_interface yweather

puts [yweather::forecast -p 94089]
}]


::${name}::basic_auth [arg u] [arg p]

::${name}::set_static_args [opt args]]

[list_begin definitions]

[call [cmd ::rest::save] [arg name] [arg file]]
saves a copy of the dynamically created procs to a file for later loading

[call [cmd ::rest::describe] [arg name]]
print a description of defined api calls

[call [cmd ::rest::parameters] [arg url] [opt args]]
parse a url query string into a dict

[call [cmd ::rest::parse_opts] [arg static] [arg required] [arg optional] [arg string]]

[call [cmd ::rest::substitute] [arg string] [opt var]]
take a string and substitute real values for any option identifiers


[call [cmd ::rest::create_interface] [arg name]]
TOKENS
     the value is substituted into the url at call time. tokens in the form of %name:default_value% will be an optional argument with a default value.

url
    the target of the http request







<

















<




















<







42
43
44
45
46
47
48

49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65

66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85

86
87
88
89
90
91
92
headers
cookie
auth
format
method
content-type


Interface usage
An interface to a REST API consists of a series of definitions of REST calls contained in an array. The array name becomes a namespace containing the defined commands. Each array element defines the name of the call and takes the form of a dict, aka key/value pairs. These keys are the defined configuration options below.
After creating the definitions simply call rest::create_interface on the array to create the commands.

[example {
package require rest

set yweather(forecast) {
   url http://weather.yahooapis.com/forecastrss
   req_args { p: }
   opt_args { u: }
}

rest::create_interface yweather

puts [yweather::forecast -p 94089]
}]


::${name}::basic_auth [arg u] [arg p]

::${name}::set_static_args [opt args]]

[list_begin definitions]

[call [cmd ::rest::save] [arg name] [arg file]]
saves a copy of the dynamically created procs to a file for later loading

[call [cmd ::rest::describe] [arg name]]
print a description of defined api calls

[call [cmd ::rest::parameters] [arg url] [opt args]]
parse a url query string into a dict

[call [cmd ::rest::parse_opts] [arg static] [arg required] [arg optional] [arg string]]

[call [cmd ::rest::substitute] [arg string] [opt var]]
take a string and substitute real values for any option identifiers


[call [cmd ::rest::create_interface] [arg name]]
TOKENS
     the value is substituted into the url at call time. tokens in the form of %name:default_value% will be an optional argument with a default value.

url
    the target of the http request
197
198
199
200
201
202
203
204
205
yahoo boss
yahoo weather
google calendar
facebook
del.icio.us
read the file or source it and use [cmd describe] for more information. also see the
developers documentation on the respective sites.

[manpage_end]







<

194
195
196
197
198
199
200

201
yahoo boss
yahoo weather
google calendar
facebook
del.icio.us
read the file or source it and use [cmd describe] for more information. also see the
developers documentation on the respective sites.

[manpage_end]

Changes to modules/ripemd/ripemd128.man.

1












2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[manpage_begin ripemd128 n 1.0.3]












[moddesc   {RIPEMD Message-Digest Algorithm}]
[copyright {2004, Pat Thoyts <[email protected]>}]
[titledesc {RIPEMD-128 Message-Digest Algorithm}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require ripemd128 [opt 1.0.3]]
[description]
[para]

This package is an implementation in Tcl of the RIPEMD-128 message-digest
algorithm (1). This algorithm takes an arbitrary quantity of data and
generates a 128-bit message digest from the input. The RIPEMD-128 
algorithm is based upon the MD4 algorithm (2, 4) but has been
cryptographically strengthened against weaknesses that have been found
in MD4 (4). RIPEMD-128 has been designed to be a drop-in replacement
for MD4 and MD5 (5). If security is the major consideration, then
RIPEMD-160 or SHA1 should be considered.

[para]

>
>
>
>
>
>
>
>
>
>
>
>











|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[manpage_begin ripemd128 n 1.0.3]
[see_also md4]
[see_also md5]
[see_also ripemd160]
[see_also sha1]
[keywords hashing]
[keywords md4]
[keywords message-digest]
[keywords {rfc 1320}]
[keywords {rfc 1321}]
[keywords {rfc 2104}]
[keywords RIPEMD]
[keywords security]
[moddesc   {RIPEMD Message-Digest Algorithm}]
[copyright {2004, Pat Thoyts <[email protected]>}]
[titledesc {RIPEMD-128 Message-Digest Algorithm}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require ripemd128 [opt 1.0.3]]
[description]
[para]

This package is an implementation in Tcl of the RIPEMD-128 message-digest
algorithm (1). This algorithm takes an arbitrary quantity of data and
generates a 128-bit message digest from the input. The RIPEMD-128
algorithm is based upon the MD4 algorithm (2, 4) but has been
cryptographically strengthened against weaknesses that have been found
in MD4 (4). RIPEMD-128 has been designed to be a drop-in replacement
for MD4 and MD5 (5). If security is the major consideration, then
RIPEMD-160 or SHA1 should be considered.

[para]
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Calculate the RIPEMD-128 digest of the data given in string. This is
returned as a binary string by default. Giving the [arg "-hex"] option
will return a hexadecimal encoded version of the digest.

[para]

The data to be hashed can be specified either as a string argument to
the ripemd128 command, or as a filename or a pre-opened channel. If the 
[arg "-filename"] argument is given then the file is opened, the data read
and hashed and the file is closed. If the [arg "-channel"] argument is
given then data is read from the channel until the end of file. The
channel is not closed.

[para]








|







48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Calculate the RIPEMD-128 digest of the data given in string. This is
returned as a binary string by default. Giving the [arg "-hex"] option
will return a hexadecimal encoded version of the digest.

[para]

The data to be hashed can be specified either as a string argument to
the ripemd128 command, or as a filename or a pre-opened channel. If the
[arg "-filename"] argument is given then the file is opened, the data read
and hashed and the file is closed. If the [arg "-channel"] argument is
given then data is read from the channel until the end of file. The
channel is not closed.

[para]

63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81

[list_end]

[section {PROGRAMMING INTERFACE}]

For the programmer, hash functions can be viewed as a bucket into which
one pours data. When you have finished, you extract a value that is
uniquely derived from the data that was poured into the bucket. The 
programming interface to the hash operates on a token (equivalent to the
bucket). You call [cmd RIPEMD128Init] to obtain a token and then call 
[cmd RIPEMD128Update] as many times as required to add data to the hash. To
release any resources and obtain the hash value, you then call 
[cmd RIPEMD128Final]. An equivalent set of functions gives you a keyed
digest (HMAC).

[para]

If you have [package critcl] and have built the [package tcllibc]
package then the implementation of the hashing function will be







|

|

|







75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93

[list_end]

[section {PROGRAMMING INTERFACE}]

For the programmer, hash functions can be viewed as a bucket into which
one pours data. When you have finished, you extract a value that is
uniquely derived from the data that was poured into the bucket. The
programming interface to the hash operates on a token (equivalent to the
bucket). You call [cmd RIPEMD128Init] to obtain a token and then call
[cmd RIPEMD128Update] as many times as required to add data to the hash. To
release any resources and obtain the hash value, you then call
[cmd RIPEMD128Final]. An equivalent set of functions gives you a keyed
digest (HMAC).

[para]

If you have [package critcl] and have built the [package tcllibc]
package then the implementation of the hashing function will be
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
[call [cmd "::ripemd::RIPEMD128Init"]]

Begins a new RIPEMD-128 hash. Returns a token ID that must be used for the
remaining functions.

[call [cmd "::ripemd::RIPEMD128Update"] [arg "token"] [arg "data"]]

Add data to the hash identified by token. Calling 
[emph {RIPEMD128Update $token "abcd"}] is equivalent to calling
[emph {RIPEMD128Update $token "ab"}] followed by 
[emph {RIPEMD128Update $token "cb"}]. See [sectref {EXAMPLES}].


[call [cmd "::ripemd::RIPEMD128Final"] [arg "token"]]

Returns the hash value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a binary string of 16 bytes representing the 128 bit
RIPEMD-128 digest value.







|

|

<







101
102
103
104
105
106
107
108
109
110
111

112
113
114
115
116
117
118
[call [cmd "::ripemd::RIPEMD128Init"]]

Begins a new RIPEMD-128 hash. Returns a token ID that must be used for the
remaining functions.

[call [cmd "::ripemd::RIPEMD128Update"] [arg "token"] [arg "data"]]

Add data to the hash identified by token. Calling
[emph {RIPEMD128Update $token "abcd"}] is equivalent to calling
[emph {RIPEMD128Update $token "ab"}] followed by
[emph {RIPEMD128Update $token "cb"}]. See [sectref {EXAMPLES}].


[call [cmd "::ripemd::RIPEMD128Final"] [arg "token"]]

Returns the hash value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a binary string of 16 bytes representing the 128 bit
RIPEMD-128 digest value.
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
}]

[section {REFERENCES}]

[list_begin enumerated]

[enum]
        H. Dobbertin, A. Bosselaers, B. Preneel, 
        "RIPEMD-160, a strengthened version of RIPEMD"
        [uri http://www.esat.kuleuven.ac.be/~cosicart/pdf/AB-9601/AB-9601.pdf]

[enum]
       Rivest, R., "The MD4 Message Digest Algorithm", RFC 1320, MIT,
       April 1992. ([uri http://www.rfc-editor.org/rfc/rfc1320.txt])








|







152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
}]

[section {REFERENCES}]

[list_begin enumerated]

[enum]
        H. Dobbertin, A. Bosselaers, B. Preneel,
        "RIPEMD-160, a strengthened version of RIPEMD"
        [uri http://www.esat.kuleuven.ac.be/~cosicart/pdf/AB-9601/AB-9601.pdf]

[enum]
       Rivest, R., "The MD4 Message Digest Algorithm", RFC 1320, MIT,
       April 1992. ([uri http://www.rfc-editor.org/rfc/rfc1320.txt])

164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191

[enum]
       Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, MIT and
       RSA Data Security, Inc, April 1992.
	([uri http://www.rfc-editor.org/rfc/rfc1321.txt])

[enum]
      Krawczyk, H., Bellare, M. and Canetti, R. "HMAC: Keyed-Hashing for 
      Message Authentication", RFC 2104, February 1997.
	([uri http://www.rfc-editor.org/rfc/rfc2104.txt])

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph ripemd] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also md4 md5 sha1 ripemd160]
[keywords RIPEMD md4 hashing message-digest security {rfc 1320} {rfc 1321} {rfc 2104}]
[manpage_end]







|





<
|
<
<
|
<
<
<
<
<
<
<
<
<

175
176
177
178
179
180
181
182
183
184
185
186
187

188


189









190

[enum]
       Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, MIT and
       RSA Data Security, Inc, April 1992.
	([uri http://www.rfc-editor.org/rfc/rfc1321.txt])

[enum]
      Krawczyk, H., Bellare, M. and Canetti, R. "HMAC: Keyed-Hashing for
      Message Authentication", RFC 2104, February 1997.
	([uri http://www.rfc-editor.org/rfc/rfc2104.txt])

[list_end]


[vset CATEGORY ripemd]


[include ../doctools2base/include/feedback.inc]









[manpage_end]

Changes to modules/ripemd/ripemd160.man.

1












2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[manpage_begin ripemd160 n 1.0.3]












[moddesc   {RIPEMD Message-Digest Algorithm}]
[copyright {2004, Pat Thoyts <[email protected]>}]
[titledesc {RIPEMD-160 Message-Digest Algorithm}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require ripemd160 [opt 1.0.3]]
[description]
[para]

This package is an implementation in Tcl of the RIPEMD-160 message-digest
algorithm (1). This algorithm takes an arbitrary quantity of data and
generates a 160-bit message digest from the input. The RIPEMD-160 
algorithm is based upon the MD4 algorithm (2, 4) but has been
cryptographically strengthened against weaknesses that have been found
in MD4 (4).

[para]

This package will use [package cryptkit] or [package Trf] to

>
>
>
>
>
>
>
>
>
>
>
>











|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[manpage_begin ripemd160 n 1.0.3]
[see_also md4]
[see_also md5]
[see_also ripemd128]
[see_also sha1]
[keywords hashing]
[keywords md4]
[keywords message-digest]
[keywords {rfc 1320}]
[keywords {rfc 1321}]
[keywords {rfc 2104}]
[keywords RIPEMD]
[keywords security]
[moddesc   {RIPEMD Message-Digest Algorithm}]
[copyright {2004, Pat Thoyts <[email protected]>}]
[titledesc {RIPEMD-160 Message-Digest Algorithm}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require ripemd160 [opt 1.0.3]]
[description]
[para]

This package is an implementation in Tcl of the RIPEMD-160 message-digest
algorithm (1). This algorithm takes an arbitrary quantity of data and
generates a 160-bit message digest from the input. The RIPEMD-160
algorithm is based upon the MD4 algorithm (2, 4) but has been
cryptographically strengthened against weaknesses that have been found
in MD4 (4).

[para]

This package will use [package cryptkit] or [package Trf] to
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Calculate the RIPEMD-160 digest of the data given in string. This is
returned as a binary string by default. Giving the [arg "-hex"] option
will return a hexadecimal encoded version of the digest.

[para]

The data to be hashed can be specified either as a string argument to
the ripemd160 command, or as a filename or a pre-opened channel. If the 
[arg "-filename"] argument is given then the file is opened, the data read
and hashed and the file is closed. If the [arg "-channel"] argument is
given then data is read from the channel until the end of file. The
channel is not closed.

[para]








|







46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Calculate the RIPEMD-160 digest of the data given in string. This is
returned as a binary string by default. Giving the [arg "-hex"] option
will return a hexadecimal encoded version of the digest.

[para]

The data to be hashed can be specified either as a string argument to
the ripemd160 command, or as a filename or a pre-opened channel. If the
[arg "-filename"] argument is given then the file is opened, the data read
and hashed and the file is closed. If the [arg "-channel"] argument is
given then data is read from the channel until the end of file. The
channel is not closed.

[para]

61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96

[list_end]

[section {PROGRAMMING INTERFACE}]

For the programmer, hash functions can be viewed as a bucket into which
one pours data. When you have finished, you extract a value that is
uniquely derived from the data that was poured into the bucket. The 
programming interface to the hash operates on a token (equivalent to the
bucket). You call [cmd RIPEMD160Init] to obtain a token and then call 
[cmd RIPEMD160Update] as many times as required to add data to the hash. To
release any resources and obtain the hash value, you then call 
[cmd RIPEMD160Final]. An equivalent set of functions gives you a keyed
digest (HMAC).

[list_begin definitions]

[call [cmd "::ripemd::RIPEMD160Init"]]

Begins a new RIPEMD-160 hash. Returns a token ID that must be used for the
remaining functions.

[call [cmd "::ripemd::RIPEMD160Update"] [arg "token"] [arg "data"]]

Add data to the hash identified by token. Calling 
[emph {RIPEMD160Update $token "abcd"}] is equivalent to calling
[emph {RIPEMD160Update $token "ab"}] followed by 
[emph {RIPEMD160Update $token "cb"}]. See [sectref {EXAMPLES}].


[call [cmd "::ripemd::RIPEMD160Final"] [arg "token"]]

Returns the hash value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a binary string of 16 bytes representing the 160 bit
RIPEMD-160 digest value.







|

|

|












|

|

<







73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100

101
102
103
104
105
106
107

[list_end]

[section {PROGRAMMING INTERFACE}]

For the programmer, hash functions can be viewed as a bucket into which
one pours data. When you have finished, you extract a value that is
uniquely derived from the data that was poured into the bucket. The
programming interface to the hash operates on a token (equivalent to the
bucket). You call [cmd RIPEMD160Init] to obtain a token and then call
[cmd RIPEMD160Update] as many times as required to add data to the hash. To
release any resources and obtain the hash value, you then call
[cmd RIPEMD160Final]. An equivalent set of functions gives you a keyed
digest (HMAC).

[list_begin definitions]

[call [cmd "::ripemd::RIPEMD160Init"]]

Begins a new RIPEMD-160 hash. Returns a token ID that must be used for the
remaining functions.

[call [cmd "::ripemd::RIPEMD160Update"] [arg "token"] [arg "data"]]

Add data to the hash identified by token. Calling
[emph {RIPEMD160Update $token "abcd"}] is equivalent to calling
[emph {RIPEMD160Update $token "ab"}] followed by
[emph {RIPEMD160Update $token "cb"}]. See [sectref {EXAMPLES}].


[call [cmd "::ripemd::RIPEMD160Final"] [arg "token"]]

Returns the hash value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a binary string of 16 bytes representing the 160 bit
RIPEMD-160 digest value.
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
}]

[section {REFERENCES}]

[list_begin enumerated]

[enum]
        H. Dobbertin, A. Bosselaers, B. Preneel, 
        "RIPEMD-160, a strengthened version of RIPEMD"
        [uri http://www.esat.kuleuven.ac.be/~cosicart/pdf/AB-9601/AB-9601.pdf]

[enum]
       Rivest, R., "The MD4 Message Digest Algorithm", RFC 1320, MIT,
       April 1992. ([uri http://www.rfc-editor.org/rfc/rfc1320.txt])

[enum]
       Rivest, R., "The MD4 message digest algorithm", in A.J.  Menezes
       and S.A. Vanstone, editors, Advances in Cryptology - CRYPTO '90
       Proceedings, pages 303-311, Springer-Verlag, 1991.

[enum]
        Dobbertin, H., "Cryptanalysis of MD4", Journal of Cryptology
        vol 11 (4), pp. 253-271 (1998)

[enum]
      Krawczyk, H., Bellare, M. and Canetti, R. "HMAC: Keyed-Hashing for 
      Message Authentication", RFC 2104, February 1997.
	([uri http://www.rfc-editor.org/rfc/rfc2104.txt])

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph ripemd] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also md4 md5 sha1 ripemd128]
[keywords RIPEMD md4 hashing message-digest security {rfc 1320} {rfc 1321} {rfc 2104}]
[manpage_end]







|

















|





<
|
<
<
|
<
<
<
<
<
<
<
<
<

141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171

172


173









174
}]

[section {REFERENCES}]

[list_begin enumerated]

[enum]
        H. Dobbertin, A. Bosselaers, B. Preneel,
        "RIPEMD-160, a strengthened version of RIPEMD"
        [uri http://www.esat.kuleuven.ac.be/~cosicart/pdf/AB-9601/AB-9601.pdf]

[enum]
       Rivest, R., "The MD4 Message Digest Algorithm", RFC 1320, MIT,
       April 1992. ([uri http://www.rfc-editor.org/rfc/rfc1320.txt])

[enum]
       Rivest, R., "The MD4 message digest algorithm", in A.J.  Menezes
       and S.A. Vanstone, editors, Advances in Cryptology - CRYPTO '90
       Proceedings, pages 303-311, Springer-Verlag, 1991.

[enum]
        Dobbertin, H., "Cryptanalysis of MD4", Journal of Cryptology
        vol 11 (4), pp. 253-271 (1998)

[enum]
      Krawczyk, H., Bellare, M. and Canetti, R. "HMAC: Keyed-Hashing for
      Message Authentication", RFC 2104, February 1997.
	([uri http://www.rfc-editor.org/rfc/rfc2104.txt])

[list_end]


[vset CATEGORY ripemd]


[include ../doctools2base/include/feedback.inc]









[manpage_end]

Changes to modules/sasl/sasl.man.

1
2


3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin SASL n 1.3.0]


[copyright {2005-2006, Pat Thoyts <[email protected]>}]
[moddesc {Simple Authentication and Security Layer (SASL)}]
[titledesc {Implementation of SASL mechanisms for Tcl}]
[category  Networking]
[require Tcl 8.2]
[require SASL [opt 1.3]]
[description]


>
>







1
2
3
4
5
6
7
8
9
10
11
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin SASL n 1.3.0]
[keywords authentication]
[keywords SASL]
[copyright {2005-2006, Pat Thoyts <[email protected]>}]
[moddesc {Simple Authentication and Security Layer (SASL)}]
[titledesc {Implementation of SASL mechanisms for Tcl}]
[category  Networking]
[require Tcl 8.2]
[require SASL [opt 1.3]]
[description]
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
[call [cmd "::SASL::configure"] [arg "option value"] [opt [arg "..."]]]

Modify and inspect the SASL context option. See [sectref OPTIONS] for
further details.

[call [cmd "::SASL::step"] [arg "context"] [arg "challenge"] [opt [arg "..."]]]

This is the core procedure for using the SASL framework. The 
[cmd step] procedure should be called until it returns 0. Each step takes a
server challenge string and the response is calculated and stored in
the context. Each mechanism may require one or more steps. For some
steps there may be no server challenge required in which case an empty
string should be provided for this parameter. All mechanisms should accept
an initial empty challenge.








|







41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
[call [cmd "::SASL::configure"] [arg "option value"] [opt [arg "..."]]]

Modify and inspect the SASL context option. See [sectref OPTIONS] for
further details.

[call [cmd "::SASL::step"] [arg "context"] [arg "challenge"] [opt [arg "..."]]]

This is the core procedure for using the SASL framework. The
[cmd step] procedure should be called until it returns 0. Each step takes a
server challenge string and the response is calculated and stored in
the context. Each mechanism may require one or more steps. For some
steps there may be no server challenge required in which case an empty
string should be provided for this parameter. All mechanisms should accept
an initial empty challenge.

65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
Release all resources associated with the SASL context. The context
token may not be used again after this procedure has been called.

[call [cmd "::SASL::mechanisms"] [opt [arg "type"]] [opt [arg "minimum"]]]

Returns a list of all the available SASL mechanisms. The list is
sorted by the mechanism preference value (see [cmd register]) with the
preferred mechanisms and the head of the list. Any mechanism with a 
preference value less than the[arg minimum] (which defaults to 0) is removed
from the returned list. This permits a security threshold to be set. Mechanisms
with a preference less that 25 transmit authentication are particularly
susceptible to eavesdropping and should not be provided unless a secure
channel is in use (eg: tls).
[para]
The [arg type] parameter
may be one of [arg client] or [arg server] and defaults to [arg client].
Only mechanisms that have an implementation matching the [arg type] are 
returned (this permits servers to correctly declare support only for 
mechanisms that actually provide a server implementation).

[call [cmd "::SASL::register"] [arg "mechanism"] [arg "preference"] \
  [arg "clientproc"] [opt [arg "serverproc"]]]

New mechanisms can be added to the package by registering the
mechanism name and the implementing procedures. The server procedure
is optional. The preference value is an integer that is used to order
the list returned by the [cmd mechanisms] command. Higher values
indicate a preferred mechanism. If the mechanism is already registered
then the recorded values are updated.

[list_end]



[section "OPTIONS"]

[list_begin definitions]

[def [option "-callback"]]








|








|
|













<
<







67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97


98
99
100
101
102
103
104
Release all resources associated with the SASL context. The context
token may not be used again after this procedure has been called.

[call [cmd "::SASL::mechanisms"] [opt [arg "type"]] [opt [arg "minimum"]]]

Returns a list of all the available SASL mechanisms. The list is
sorted by the mechanism preference value (see [cmd register]) with the
preferred mechanisms and the head of the list. Any mechanism with a
preference value less than the[arg minimum] (which defaults to 0) is removed
from the returned list. This permits a security threshold to be set. Mechanisms
with a preference less that 25 transmit authentication are particularly
susceptible to eavesdropping and should not be provided unless a secure
channel is in use (eg: tls).
[para]
The [arg type] parameter
may be one of [arg client] or [arg server] and defaults to [arg client].
Only mechanisms that have an implementation matching the [arg type] are
returned (this permits servers to correctly declare support only for
mechanisms that actually provide a server implementation).

[call [cmd "::SASL::register"] [arg "mechanism"] [arg "preference"] \
  [arg "clientproc"] [opt [arg "serverproc"]]]

New mechanisms can be added to the package by registering the
mechanism name and the implementing procedures. The server procedure
is optional. The preference value is an integer that is used to order
the list returned by the [cmd mechanisms] command. Higher values
indicate a preferred mechanism. If the mechanism is already registered
then the recorded values are updated.

[list_end]



[section "OPTIONS"]

[list_begin definitions]

[def [option "-callback"]]

132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
challenges. Mechanisms may be written to support server-side SASL and
setting this option will cause each [cmd step] to issue the next
challenge. A new context must be created for each incoming client
connection when in server mode.

[list_end]



[section "CALLBACK PROCEDURE"]

When the SASL framework requires any user details it will call the
procedure provided when the context was created with an argument that
specfies the item of information required.
[para]
In all cases a single response string should be returned.







<
<







132
133
134
135
136
137
138


139
140
141
142
143
144
145
challenges. Mechanisms may be written to support server-side SASL and
setting this option will cause each [cmd step] to issue the next
challenge. A new context must be created for each incoming client
connection when in server mode.

[list_end]



[section "CALLBACK PROCEDURE"]

When the SASL framework requires any user details it will call the
procedure provided when the context was created with an argument that
specfies the item of information required.
[para]
In all cases a single response string should be returned.
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
authorization and authentication identities within SASL.

[def "password"]

The callback procedure should return the password that matches the
authentication identity as used within the current realm.
[para]
For server mechanisms the password callback should always be called with 
the authentication identity and the realm as the first two parameters.

[def "realm"]

Some SASL mechanisms use realms to partition authentication identities.
The realm string is protocol dependent and is often the current DNS
domain or in the case of the NTLM mechanism it is the Windows NT domain name.

[def "hostname"]

Returns the client host name - typically [lb]info host[rb].

[list_end]



[section "MECHANISMS"]

[list_begin definitions]

[def "ANONYMOUS"]








|













<
<







160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180


181
182
183
184
185
186
187
authorization and authentication identities within SASL.

[def "password"]

The callback procedure should return the password that matches the
authentication identity as used within the current realm.
[para]
For server mechanisms the password callback should always be called with
the authentication identity and the realm as the first two parameters.

[def "realm"]

Some SASL mechanisms use realms to partition authentication identities.
The realm string is protocol dependent and is often the current DNS
domain or in the case of the NTLM mechanism it is the Windows NT domain name.

[def "hostname"]

Returns the client host name - typically [lb]info host[rb].

[list_end]



[section "MECHANISMS"]

[list_begin definitions]

[def "ANONYMOUS"]

223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
transmitted across the network. Specified in [lb]3[rb].

[def "OTP"]

OTP is the One-Time Password system described in RFC 2289 [lb]6[rb].
This mechanism is secure against replay attacks and also avoids storing
password or password equivalents on the server. Only a digest of a seed
and a passphrase is ever transmitted across the network. Requires the 
[package otp] package from tcllib and one or more of the cryptographic 
digest packages (md5 or sha-1 are the most commonly used).

[def "NTLM"]

This is a proprietary protocol developed by Microsoft [lb]5[rb] and is
in common use for authenticating users in a Windows network
environment. NTLM uses DES encryption and MD4 digests of the users
password to authenticate a connection. Certain weaknesses have been
found in NTLM and thus there are a number of versions of the protocol.
As this mechanism has additional dependencies it is made available as
a separate sub-package. To enable this mechanism your application must 
load the SASL::NTLM package.

[def "X-GOOGLE-TOKEN"]

This is a proprietary protocol developed by Google and used for 
authenticating users for the Google Talk service. This mechanism makes
a pair of HTTP requests over an SSL channel and so this mechanism 
depends upon the availability of the tls and http packages. To enable
this mechanism your application must load the SASL::XGoogleToken package.
In addition you are recommended to make use of the autoproxy package to 
handle HTTP proxies reasonably transparently.

[list_end]



[section "EXAMPLES"]

See the examples subdirectory for more complete samples using SASL
with network protocols. The following should give an idea how the SASL
commands are to be used. In reality this should be event
driven. Each time the [cmd step] command is called, the last server







|
|










|




|

|


|



<
<







219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251


252
253
254
255
256
257
258
transmitted across the network. Specified in [lb]3[rb].

[def "OTP"]

OTP is the One-Time Password system described in RFC 2289 [lb]6[rb].
This mechanism is secure against replay attacks and also avoids storing
password or password equivalents on the server. Only a digest of a seed
and a passphrase is ever transmitted across the network. Requires the
[package otp] package from tcllib and one or more of the cryptographic
digest packages (md5 or sha-1 are the most commonly used).

[def "NTLM"]

This is a proprietary protocol developed by Microsoft [lb]5[rb] and is
in common use for authenticating users in a Windows network
environment. NTLM uses DES encryption and MD4 digests of the users
password to authenticate a connection. Certain weaknesses have been
found in NTLM and thus there are a number of versions of the protocol.
As this mechanism has additional dependencies it is made available as
a separate sub-package. To enable this mechanism your application must
load the SASL::NTLM package.

[def "X-GOOGLE-TOKEN"]

This is a proprietary protocol developed by Google and used for
authenticating users for the Google Talk service. This mechanism makes
a pair of HTTP requests over an SSL channel and so this mechanism
depends upon the availability of the tls and http packages. To enable
this mechanism your application must load the SASL::XGoogleToken package.
In addition you are recommended to make use of the autoproxy package to
handle HTTP proxies reasonably transparently.

[list_end]



[section "EXAMPLES"]

See the examples subdirectory for more complete samples using SASL
with network protocols. The following should give an idea how the SASL
commands are to be used. In reality this should be event
driven. Each time the [cmd step] command is called, the last server
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
    ([uri http://www.ieft.org/rfc/rfc2289.txt])

[list_end]

[section AUTHORS]
Pat Thoyts

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph sasl] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords SASL authentication]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<

320
321
322
323
324
325
326

327


328








329
    ([uri http://www.ieft.org/rfc/rfc2289.txt])

[list_end]

[section AUTHORS]
Pat Thoyts


[vset CATEGORY sasl]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/sha1/sha1.man.

1










2
3
4
5
6
7
8
[manpage_begin sha1 n 2.0.3]










[moddesc   {SHA-x Message-Digest Algorithm}]
[copyright {2005, Pat Thoyts <[email protected]>}]
[titledesc {SHA1 Message-Digest Algorithm}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require sha1 [opt 2.0.3]]
[description]

>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[manpage_begin sha1 n 2.0.3]
[see_also md4]
[see_also md5]
[see_also ripemd128]
[see_also ripemd160]
[keywords {FIPS 180-1}]
[keywords hashing]
[keywords message-digest]
[keywords {rfc 2104}]
[keywords security]
[keywords sha1]
[moddesc   {SHA-x Message-Digest Algorithm}]
[copyright {2005, Pat Thoyts <[email protected]>}]
[titledesc {SHA1 Message-Digest Algorithm}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require sha1 [opt 2.0.3]]
[description]
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
The command takes a message and returns the SHA1 digest of this message
as a hexadecimal string. You may request the result as binary data by
giving [arg "-bin"].

[para]

The data to be hashed can be specified either as a string argument to
the [cmd "sha1"] command, or as a filename or a pre-opened channel. If the 
[arg "-filename"] argument is given then the file is opened, the data read
and hashed and the file is closed. If the [arg "-channel"] argument is
given then data is read from the channel until the end of file. The
channel is not closed. [emph NOTE] use of the channel or filename
options results in the internal use of [cmd vwait]. To avoid nested
event loops in Tk or tclhttpd applications you should use the
incremental programming API (see below).







|







43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
The command takes a message and returns the SHA1 digest of this message
as a hexadecimal string. You may request the result as binary data by
giving [arg "-bin"].

[para]

The data to be hashed can be specified either as a string argument to
the [cmd "sha1"] command, or as a filename or a pre-opened channel. If the
[arg "-filename"] argument is given then the file is opened, the data read
and hashed and the file is closed. If the [arg "-channel"] argument is
given then data is read from the channel until the end of file. The
channel is not closed. [emph NOTE] use of the channel or filename
options results in the internal use of [cmd vwait]. To avoid nested
event loops in Tk or tclhttpd applications you should use the
incremental programming API (see below).
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107

[section {PROGRAMMING INTERFACE}]

For the programmer, the SHA1 hash can be viewed as a bucket into which
one pours data. When you have finished, you extract a value that is
derived from the data that was poured into the bucket. The programming
interface to the SHA1 hash operates on a token (equivalent to the
bucket). You call [cmd "SHA1Init"] to obtain a token and then call 
[cmd "SHA1Update"] as many times as required to add data to the hash. To
release any resources and obtain the hash value, you then call 
[cmd "SHA1Final"]. An equivalent set of functions gives you a keyed digest
(HMAC).

[para]

If you have [package critcl] and have built the [package tcllibc] package
then the implementation of the hashing function will be performed by compiled
code. Failing that if you have the [package Trf] package then this can
be used otherwise there is a pure-tcl equivalent. The programming
interface remains the same in all cases.

[list_begin definitions]

[call [cmd "::sha1::SHA1Init"]]

Begins a new SHA1 hash. Returns a token ID that must be used for the
remaining functions.

[call [cmd "::sha1::SHA1Update"] [arg "token"] [arg "data"]]

Add data to the hash identified by token. Calling 
[emph {SHA1Update $token "abcd"}] is equivalent to calling
[emph {SHA1Update $token "ab"}] followed by 
[emph {SHA1Update $token "cb"}]. See [sectref {EXAMPLES}].


[call [cmd "::sha1::SHA1Final"] [arg "token"]]

Returns the hash value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a binary string of 20 bytes representing the 160 bit SHA1
digest value.







|

|




















|

|

<







76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109

110
111
112
113
114
115
116

[section {PROGRAMMING INTERFACE}]

For the programmer, the SHA1 hash can be viewed as a bucket into which
one pours data. When you have finished, you extract a value that is
derived from the data that was poured into the bucket. The programming
interface to the SHA1 hash operates on a token (equivalent to the
bucket). You call [cmd "SHA1Init"] to obtain a token and then call
[cmd "SHA1Update"] as many times as required to add data to the hash. To
release any resources and obtain the hash value, you then call
[cmd "SHA1Final"]. An equivalent set of functions gives you a keyed digest
(HMAC).

[para]

If you have [package critcl] and have built the [package tcllibc] package
then the implementation of the hashing function will be performed by compiled
code. Failing that if you have the [package Trf] package then this can
be used otherwise there is a pure-tcl equivalent. The programming
interface remains the same in all cases.

[list_begin definitions]

[call [cmd "::sha1::SHA1Init"]]

Begins a new SHA1 hash. Returns a token ID that must be used for the
remaining functions.

[call [cmd "::sha1::SHA1Update"] [arg "token"] [arg "data"]]

Add data to the hash identified by token. Calling
[emph {SHA1Update $token "abcd"}] is equivalent to calling
[emph {SHA1Update $token "ab"}] followed by
[emph {SHA1Update $token "cb"}]. See [sectref {EXAMPLES}].


[call [cmd "::sha1::SHA1Final"] [arg "token"]]

Returns the hash value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a binary string of 20 bytes representing the 160 bit SHA1
digest value.
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
	([uri http://www.itl.nist.gov/fipspubs/fip180-1.htm])

[enum]
       Rivest, R., "The MD4 Message Digest Algorithm", RFC 1320, MIT,
       April 1992. ([uri http://www.rfc-editor.org/rfc/rfc1320.txt])

[enum]
      Krawczyk, H., Bellare, M. and Canetti, R. "HMAC: Keyed-Hashing for 
      Message Authentication", RFC 2104, February 1997.
	([uri http://www.rfc-editor.org/rfc/rfc2104.txt])

[list_end]

[see_also md4 md5 ripemd128 ripemd160]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph sha1] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords sha1 hashing security message-digest {FIPS 180-1} {rfc 2104}]
[manpage_end]







|





<
|
<
|
<
<
<
<
<
<
<
<
<
<
<

159
160
161
162
163
164
165
166
167
168
169
170
171

172

173











174
	([uri http://www.itl.nist.gov/fipspubs/fip180-1.htm])

[enum]
       Rivest, R., "The MD4 Message Digest Algorithm", RFC 1320, MIT,
       April 1992. ([uri http://www.rfc-editor.org/rfc/rfc1320.txt])

[enum]
      Krawczyk, H., Bellare, M. and Canetti, R. "HMAC: Keyed-Hashing for
      Message Authentication", RFC 2104, February 1997.
	([uri http://www.rfc-editor.org/rfc/rfc2104.txt])

[list_end]


[vset CATEGORY sha1]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/sha1/sha256.man.

1











2
3
4
5
6
7
8
[manpage_begin sha256 n 1.0.3]











[moddesc   {SHA-x Message-Digest Algorithm}]
[copyright {2008, Andreas Kupries <[email protected]>}]
[titledesc {SHA256 Message-Digest Algorithm}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require sha256 [opt 1.0.3]]
[description]

>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[manpage_begin sha256 n 1.0.3]
[see_also md4]
[see_also md5]
[see_also ripemd128]
[see_also ripemd160]
[see_also sha1]
[keywords {FIPS 180-1}]
[keywords hashing]
[keywords message-digest]
[keywords {rfc 2104}]
[keywords security]
[keywords sha256]
[moddesc   {SHA-x Message-Digest Algorithm}]
[copyright {2008, Andreas Kupries <[email protected]>}]
[titledesc {SHA256 Message-Digest Algorithm}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require sha256 [opt 1.0.3]]
[description]
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
The command takes a message and returns the SHA256 digest of this
message as a hexadecimal string. You may request the result as binary
data by giving [arg "-bin"].

[para]

The data to be hashed can be specified either as a string argument to
the [cmd "sha256"] command, or as a filename or a pre-opened channel. If the 
[arg "-filename"] argument is given then the file is opened, the data read
and hashed and the file is closed. If the [arg "-channel"] argument is
given then data is read from the channel until the end of file. The
channel is not closed. [emph NOTE] use of the channel or filename
options results in the internal use of [cmd vwait]. To avoid nested
event loops in Tk or tclhttpd applications you should use the
incremental programming API (see below).

[para]

Only one of [arg "-file"], [arg "-channel"] or [arg "string"] should be given.

[call [cmd ::sha2::sha224] \
        [opt "[arg -hex|-bin]"] \
        [lb] [arg "-channel channel"] | \
        [arg "-file filename"] | [arg "string"] [rb]]

Like [cmd ::sha2::sha256], except that the SHA224 digest is returned.


[call [cmd "::sha2::hmac"] [arg "key"] [arg "string"]]
[call [cmd "::sha2::hmac"] \
        [opt "[arg -hex|-bin]"] \
        [arg "-key key"] \
        [lb] [arg "-channel channel"] | \
        [arg "-file filename"] | [arg "string"] [rb]]







|


















<







43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68

69
70
71
72
73
74
75
The command takes a message and returns the SHA256 digest of this
message as a hexadecimal string. You may request the result as binary
data by giving [arg "-bin"].

[para]

The data to be hashed can be specified either as a string argument to
the [cmd "sha256"] command, or as a filename or a pre-opened channel. If the
[arg "-filename"] argument is given then the file is opened, the data read
and hashed and the file is closed. If the [arg "-channel"] argument is
given then data is read from the channel until the end of file. The
channel is not closed. [emph NOTE] use of the channel or filename
options results in the internal use of [cmd vwait]. To avoid nested
event loops in Tk or tclhttpd applications you should use the
incremental programming API (see below).

[para]

Only one of [arg "-file"], [arg "-channel"] or [arg "string"] should be given.

[call [cmd ::sha2::sha224] \
        [opt "[arg -hex|-bin]"] \
        [lb] [arg "-channel channel"] | \
        [arg "-file filename"] | [arg "string"] [rb]]

Like [cmd ::sha2::sha256], except that the SHA224 digest is returned.


[call [cmd "::sha2::hmac"] [arg "key"] [arg "string"]]
[call [cmd "::sha2::hmac"] \
        [opt "[arg -hex|-bin]"] \
        [arg "-key key"] \
        [lb] [arg "-channel channel"] | \
        [arg "-file filename"] | [arg "string"] [rb]]
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
[call [cmd "::sha2::SHA224Init"]]

Begins a new SHA256/SHA224 hash. Returns a token ID that must be used
for the remaining functions.

[call [cmd "::sha2::SHA256Update"] [arg "token"] [arg "data"]]

Add data to the hash identified by token. Calling 
[emph {SHA256Update $token "abcd"}] is equivalent to calling
[emph {SHA256Update $token "ab"}] followed by 
[emph {SHA256Update $token "cb"}]. See [sectref {EXAMPLES}].

Note that this command is used for both SHA256 and SHA224. Only the
initialization and finalization commands of both hashes differ.

[call [cmd "::sha2::SHA256Final"] [arg "token"]]
[call [cmd "::sha2::SHA224Final"] [arg "token"]]







|

|







106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
[call [cmd "::sha2::SHA224Init"]]

Begins a new SHA256/SHA224 hash. Returns a token ID that must be used
for the remaining functions.

[call [cmd "::sha2::SHA256Update"] [arg "token"] [arg "data"]]

Add data to the hash identified by token. Calling
[emph {SHA256Update $token "abcd"}] is equivalent to calling
[emph {SHA256Update $token "ab"}] followed by
[emph {SHA256Update $token "cb"}]. See [sectref {EXAMPLES}].

Note that this command is used for both SHA256 and SHA224. Only the
initialization and finalization commands of both hashes differ.

[call [cmd "::sha2::SHA256Final"] [arg "token"]]
[call [cmd "::sha2::SHA224Final"] [arg "token"]]
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
	([uri http://www.itl.nist.gov/fipspubs/fip180-1.htm])

[enum]
       Rivest, R., "The MD4 Message Digest Algorithm", RFC 1320, MIT,
       April 1992. ([uri http://www.rfc-editor.org/rfc/rfc1320.txt])

[enum]
      Krawczyk, H., Bellare, M. and Canetti, R. "HMAC: Keyed-Hashing for 
      Message Authentication", RFC 2104, February 1997.
	([uri http://www.rfc-editor.org/rfc/rfc2104.txt])

[list_end]

[see_also sha1 md4 md5 ripemd128 ripemd160]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph sha1] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords sha256 hashing security message-digest {FIPS 180-1} {rfc 2104}]
[manpage_end]







|





<
|
<
|
<
<
<
<
<
<
<
<
<
<
<

170
171
172
173
174
175
176
177
178
179
180
181
182

183

184











185
	([uri http://www.itl.nist.gov/fipspubs/fip180-1.htm])

[enum]
       Rivest, R., "The MD4 Message Digest Algorithm", RFC 1320, MIT,
       April 1992. ([uri http://www.rfc-editor.org/rfc/rfc1320.txt])

[enum]
      Krawczyk, H., Bellare, M. and Canetti, R. "HMAC: Keyed-Hashing for
      Message Authentication", RFC 2104, February 1997.
	([uri http://www.rfc-editor.org/rfc/rfc2104.txt])

[list_end]


[vset CATEGORY sha1]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/simulation/annealing.man.

1
2



3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin simulation::annealing n 0.2]



[copyright {2008 Arjen Markus <[email protected]>}]
[moddesc   {Tcl Simulation Tools}]
[titledesc {Simulated annealing}]
[category  Mathematics]
[require Tcl [opt 8.4]]
[require simulation::annealing 0.2]



>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin simulation::annealing n 0.2]
[keywords math]
[keywords optimization]
[keywords {simulated annealing}]
[copyright {2008 Arjen Markus <[email protected]>}]
[moddesc   {Tcl Simulation Tools}]
[titledesc {Simulated annealing}]
[category  Mathematics]
[require Tcl [opt 8.4]]
[require simulation::annealing 0.2]

247
248
249
250
251
252
253
254
255
256
As the vector grows, the computation time increases, but the procedure
will stop if some kind of equilibrium is reached. To achieve a useful
solution you may want to try different values of the trials parameter
for instance. Also ensure that the function to be minimized depends on
all or most parameters - see the source code for a counter example and
run that.
[list_end]

[keywords math optimization "simulated annealing"]
[manpage_end]







<
<

250
251
252
253
254
255
256


257
As the vector grows, the computation time increases, but the procedure
will stop if some kind of equilibrium is reached. To achieve a useful
solution you may want to try different values of the trials parameter
for instance. Also ensure that the function to be minimized depends on
all or most parameters - see the source code for a counter example and
run that.
[list_end]


[manpage_end]

Changes to modules/simulation/montecarlo.man.

1
2



3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin simulation::montecarlo n 0.1]



[copyright {2008 Arjen Markus <[email protected]>}]
[moddesc   {Tcl Simulation Tools}]
[titledesc {Monte Carlo simulations}]
[category  Mathematics]
[require Tcl [opt 8.4]]
[require simulation::montecarlo 0.1]
[require simulation::random]


>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin simulation::montecarlo n 0.1]
[keywords math]
[keywords {montecarlo simulation}]
[keywords {stochastic modelling}]
[copyright {2008 Arjen Markus <[email protected]>}]
[moddesc   {Tcl Simulation Tools}]
[titledesc {Monte Carlo simulations}]
[category  Mathematics]
[require Tcl [opt 8.4]]
[require simulation::montecarlo 0.1]
[require simulation::random]
209
210
211
212
213
214
215
216
217
218
[section TIPS]
The procedure [term singleExperiment] works by constructing a
temporary procedure that does the actual work. It loops for the given
number of trials.
[para]
As it constructs a temporary procedure, local variables defined at the
start continue to exist in the loop.

[keywords math "montecarlo simulation" "stochastic modelling"]
[manpage_end]







<
<

212
213
214
215
216
217
218


219
[section TIPS]
The procedure [term singleExperiment] works by constructing a
temporary procedure that does the actual work. It loops for the given
number of trials.
[para]
As it constructs a temporary procedure, local variables defined at the
start continue to exist in the loop.


[manpage_end]

Changes to modules/simulation/simulation_random.man.

1
2




3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin simulation::random n 0.1]




[copyright {2004 Arjen Markus <[email protected]>}]
[moddesc   {Tcl Simulation Tools}]
[titledesc {Pseudo-random number generators}]
[category  Mathematics]
[require Tcl [opt 8.4]]
[require simulation::random 0.1]



>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin simulation::random n 0.1]
[keywords math]
[keywords {random numbers}]
[keywords simulation]
[keywords {statistical distribution}]
[copyright {2004 Arjen Markus <[email protected]>}]
[moddesc   {Tcl Simulation Tools}]
[titledesc {Pseudo-random number generators}]
[category  Mathematics]
[require Tcl [opt 8.4]]
[require simulation::random 0.1]

63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
distribution.

[list_begin arguments]
[arg_def float lambda] Mean number per time interval
[list_end]

[list_end]


The package defines the following public procedures for [emph continuous] distributions:

[list_begin definitions]

[call [cmd ::simulation::random::prng_Uniform] [arg min ] [arg max]]








<







67
68
69
70
71
72
73

74
75
76
77
78
79
80
distribution.

[list_begin arguments]
[arg_def float lambda] Mean number per time interval
[list_end]

[list_end]


The package defines the following public procedures for [emph continuous] distributions:

[list_begin definitions]

[call [cmd ::simulation::random::prng_Uniform] [arg min ] [arg max]]

145
146
147
148
149
150
151
152
153
154
155
156
157
158
159

[list_begin arguments]
[arg_def float df] Degrees of freedom
[list_end]

[list_end]


The package defines the following public procedures for random point sets:

[list_begin definitions]

[call [cmd ::simulation::random::prng_Disk] [arg rad]]

Create a command (PRNG) that generates (x,y)-coordinates for points







<







148
149
150
151
152
153
154

155
156
157
158
159
160
161

[list_begin arguments]
[arg_def float df] Degrees of freedom
[list_end]

[list_end]


The package defines the following public procedures for random point sets:

[list_begin definitions]

[call [cmd ::simulation::random::prng_Disk] [arg rad]]

Create a command (PRNG) that generates (x,y)-coordinates for points
207
208
209
210
211
212
213
214
215
216
217
[list_begin arguments]
[arg_def float length] Length of the block (x-direction)
[arg_def float width] Width of the block (y-direction)
[arg_def float depth] Depth of the block (z-direction)
[list_end]

[list_end]


[keywords math "statistical distribution" simulation "random numbers"]
[manpage_end]







<
<
<

209
210
211
212
213
214
215



216
[list_begin arguments]
[arg_def float length] Length of the block (x-direction)
[arg_def float width] Width of the block (y-direction)
[arg_def float depth] Depth of the block (z-direction)
[list_end]

[list_end]



[manpage_end]

Changes to modules/smtpd/smtpd.man.

1
2







3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin smtpd n 1.5]







[copyright {Pat Thoyts <[email protected]>}]
[moddesc   {Tcl SMTP Server Package}]
[titledesc {Tcl SMTP server implementation}]
[category  Networking]
[require Tcl 8.3]
[require smtpd [opt 1.5]]
[description]


>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin smtpd n 1.5]
[keywords {rfc 821}]
[keywords {rfc 2821}]
[keywords services]
[keywords smtp]
[keywords smtpd]
[keywords socket]
[keywords vwait]
[copyright {Pat Thoyts <[email protected]>}]
[moddesc   {Tcl SMTP Server Package}]
[titledesc {Tcl SMTP server implementation}]
[category  Networking]
[require Tcl 8.3]
[require smtpd [opt 1.5]]
[description]
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
[para]
[example {
 proc validate_sender {address} {
    eval array set addr [mime::parseaddress $address]
    if {[string match "denied" $addr(local)]} {
         error "mailbox $addr(local) denied"
    }
    return    
 }
}]

[para]

The content of any error message will not be passed back to the client.








|







201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
[para]
[example {
 proc validate_sender {address} {
    eval array set addr [mime::parseaddress $address]
    if {[string match "denied" $addr(local)]} {
         error "mailbox $addr(local) denied"
    }
    return
 }
}]

[para]

The content of any error message will not be passed back to the client.

276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
[section LICENSE]

This software is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the file
[file license.terms] for more details.

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph smtpd] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords smtpd smtp services {rfc 821} {rfc 2821} vwait socket]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<

283
284
285
286
287
288
289

290


291








292
[section LICENSE]

This software is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the file
[file license.terms] for more details.


[vset CATEGORY smtpd]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/snit/snit.man.

1
2












3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin snit n 2.3.2]












[copyright {2003-2009, by William H. Duquette}]
[moddesc {Snit's Not Incr Tcl, OO system}]
[titledesc  {Snit's Not Incr Tcl}]
[category  {Programming tools}]
[require Tcl 8.5]
[require snit [opt 2.3.2]]
[description]
[para]

Snit is a pure Tcl object and megawidget system.  It's
unique among Tcl object systems in that it's based not on inheritance
but on delegation.  Object systems based on inheritance only allow you
to inherit from classes defined using the same system, which is
limiting.  In Tcl, an object is 
anything that acts like an object; it shouldn't matter how the object
was implemented.  Snit is intended to help you build applications out of
the materials at hand; thus, Snit is designed to be able to
incorporate and build on any object, whether it's a hand-coded object,
a [package Tk] widget, an [package {Incr Tcl}] object,
a [package BWidget] or almost anything else.



>
>
>
>
>
>
>
>
>
>
>
>













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin snit n 2.3.2]
[keywords adaptors]
[keywords BWidget]
[keywords C++]
[keywords class]
[keywords {Incr Tcl}]
[keywords {mega widget}]
[keywords object]
[keywords {object oriented}]
[keywords Snit]
[keywords type]
[keywords widget]
[keywords {widget adaptors}]
[copyright {2003-2009, by William H. Duquette}]
[moddesc {Snit's Not Incr Tcl, OO system}]
[titledesc  {Snit's Not Incr Tcl}]
[category  {Programming tools}]
[require Tcl 8.5]
[require snit [opt 2.3.2]]
[description]
[para]

Snit is a pure Tcl object and megawidget system.  It's
unique among Tcl object systems in that it's based not on inheritance
but on delegation.  Object systems based on inheritance only allow you
to inherit from classes defined using the same system, which is
limiting.  In Tcl, an object is
anything that acts like an object; it shouldn't matter how the object
was implemented.  Snit is intended to help you build applications out of
the materials at hand; thus, Snit is designed to be able to
incorporate and build on any object, whether it's a hand-coded object,
a [package Tk] widget, an [package {Incr Tcl}] object,
a [package BWidget] or almost anything else.

64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
contain the following definitions:

[list_begin definitions]
[call [cmd typevariable] [arg name] [opt [const -array]] [opt [arg value]]]

Defines a type variable with the specified [arg name], and optionally
the specified [arg value].  Type variables are shared by all instances
of the type.  If the [const -array] option is included, then 
[arg value] should be a dictionary; it will be
assigned to the variable using [cmd "array set"].

[call [cmd typemethod] [arg name] [arg arglist] [arg body]]

Defines a type method, a subcommand of the new type command,
with the specified name, argument list, and
body.  The [arg arglist] is a normal Tcl argument list and may contain
default arguments and the [var args] argument; however, it may not
contain the argument names [var type], [var self], [var selfns], or
[var win].

[para]

The variable [var type] is automatically defined in the [arg body] to
the type's fully-qualified name.  In addition,
type variables are automatically visible in the [arg body] 
of every type method.

[para]

If the [arg name] consists of two or more tokens, Snit handles it specially:

[example {    typemethod {a b} {arg} { puts "Got $arg" }
}]

This statement implicitly defines a type method called [const a] which
has a subcommand [const b].  [const b] is called like this:

[example {    $type a b "Hello, world!"
}]

[const a] may have any number of subcommands.  This makes it possible
to define a hierarchical command structure; see [cmd method], below, 
for more examples.

[para]

Type methods can call commands from the namespace in which the type is
defined without importing them, e.g., if the type name is 
[cmd ::parentns::typename], then the type's type methods can call
[cmd ::parentns::someproc] just as [cmd someproc].  
[emph {Snit 1.x Incompatibility:}] This does not work in Snit 1.x, as
it depends on [cmd "namespace path"], a new command in Tcl 8.5.

[para]

[emph {Snit 1.x Incompatibility:}] In Snit 1.x, the following
following two calls to this type method are equivalent:







|
















|
















|





|

|







76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
contain the following definitions:

[list_begin definitions]
[call [cmd typevariable] [arg name] [opt [const -array]] [opt [arg value]]]

Defines a type variable with the specified [arg name], and optionally
the specified [arg value].  Type variables are shared by all instances
of the type.  If the [const -array] option is included, then
[arg value] should be a dictionary; it will be
assigned to the variable using [cmd "array set"].

[call [cmd typemethod] [arg name] [arg arglist] [arg body]]

Defines a type method, a subcommand of the new type command,
with the specified name, argument list, and
body.  The [arg arglist] is a normal Tcl argument list and may contain
default arguments and the [var args] argument; however, it may not
contain the argument names [var type], [var self], [var selfns], or
[var win].

[para]

The variable [var type] is automatically defined in the [arg body] to
the type's fully-qualified name.  In addition,
type variables are automatically visible in the [arg body]
of every type method.

[para]

If the [arg name] consists of two or more tokens, Snit handles it specially:

[example {    typemethod {a b} {arg} { puts "Got $arg" }
}]

This statement implicitly defines a type method called [const a] which
has a subcommand [const b].  [const b] is called like this:

[example {    $type a b "Hello, world!"
}]

[const a] may have any number of subcommands.  This makes it possible
to define a hierarchical command structure; see [cmd method], below,
for more examples.

[para]

Type methods can call commands from the namespace in which the type is
defined without importing them, e.g., if the type name is
[cmd ::parentns::typename], then the type's type methods can call
[cmd ::parentns::someproc] just as [cmd someproc].
[emph {Snit 1.x Incompatibility:}] This does not work in Snit 1.x, as
it depends on [cmd "namespace path"], a new command in Tcl 8.5.

[para]

[emph {Snit 1.x Incompatibility:}] In Snit 1.x, the following
following two calls to this type method are equivalent:
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
The type constructor's [arg body] is executed once when the
type is first defined; it is typically used to
initialize array-valued type variables and to add
entries to [sectref {The Tk Option Database}].

[para]

The variable [var type] is automatically defined in the [arg body], 
and contains the type's fully-qualified name.  In addition,
type variables are automatically visible in the [arg body] of the type 
constructor.

[para]

A type may define at most one type constructor.

[para]

The type constructor can call commands from the namespace in which the type is
defined without importing them, e.g., if the type name is 
[cmd ::parentns::typename], then the type constructor can call
[cmd ::parentns::someproc] just as [cmd someproc].  
[emph {Snit 1.x Incompatibility:}] This does not work in Snit 1.x, as
it depends on [cmd "namespace path"], a new command in Tcl 8.5.

[call [cmd variable] [arg name] [opt [const -array]] [opt [arg value]]]

Defines an instance variable, a private variable associated with each
instance of this type, and optionally its initial value.  
If the [const -array] option is included, then 
[arg value] should be a dictionary; it will be
assigned to the variable using [cmd "array set"].

[call [cmd method] [arg name] [arg arglist] [arg body]]

Defines an instance method, a subcommand of each instance of this
type, with the specified name, argument list and body.
The [arg arglist] is a normal Tcl argument list and may contain
default arguments and the [var args] argument.  

[para]

The method is implicitly passed the following arguments as well:

[var type], which contains the fully-qualified type name; [var self],
which contains the current instance command name; [var selfns], which







|

|









|

|






|
|








|







142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
The type constructor's [arg body] is executed once when the
type is first defined; it is typically used to
initialize array-valued type variables and to add
entries to [sectref {The Tk Option Database}].

[para]

The variable [var type] is automatically defined in the [arg body],
and contains the type's fully-qualified name.  In addition,
type variables are automatically visible in the [arg body] of the type
constructor.

[para]

A type may define at most one type constructor.

[para]

The type constructor can call commands from the namespace in which the type is
defined without importing them, e.g., if the type name is
[cmd ::parentns::typename], then the type constructor can call
[cmd ::parentns::someproc] just as [cmd someproc].
[emph {Snit 1.x Incompatibility:}] This does not work in Snit 1.x, as
it depends on [cmd "namespace path"], a new command in Tcl 8.5.

[call [cmd variable] [arg name] [opt [const -array]] [opt [arg value]]]

Defines an instance variable, a private variable associated with each
instance of this type, and optionally its initial value.
If the [const -array] option is included, then
[arg value] should be a dictionary; it will be
assigned to the variable using [cmd "array set"].

[call [cmd method] [arg name] [arg arglist] [arg body]]

Defines an instance method, a subcommand of each instance of this
type, with the specified name, argument list and body.
The [arg arglist] is a normal Tcl argument list and may contain
default arguments and the [var args] argument.

[para]

The method is implicitly passed the following arguments as well:

[var type], which contains the fully-qualified type name; [var self],
which contains the current instance command name; [var selfns], which
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
What we've done is implicitly defined a "tail" method with subcommands
"wag" and "droop".  Consequently, it's an error to define "tail"
explicitly.

[para]

Methods can call commands from the namespace in which the type is
defined without importing them, e.g., if the type name is 
[cmd ::parentns::typename], then the type's methods can call
[cmd ::parentns::someproc] just as [cmd someproc].  
[emph {Snit 1.x Incompatibility:}] This does not work in Snit 1.x, as
it depends on [cmd "namespace path"], a new command in Tcl 8.5.

[para]

[emph {Snit 1.x Incompatibility:}] In Snit 1.x, the following
following two calls to this method are equivalent:







|

|







235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
What we've done is implicitly defined a "tail" method with subcommands
"wag" and "droop".  Consequently, it's an error to define "tail"
explicitly.

[para]

Methods can call commands from the namespace in which the type is
defined without importing them, e.g., if the type name is
[cmd ::parentns::typename], then the type's methods can call
[cmd ::parentns::someproc] just as [cmd someproc].
[emph {Snit 1.x Incompatibility:}] This does not work in Snit 1.x, as
it depends on [cmd "namespace path"], a new command in Tcl 8.5.

[para]

[emph {Snit 1.x Incompatibility:}] In Snit 1.x, the following
following two calls to this method are equivalent:
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
See [sectref {The Tk Option Database}] for more information about
resource and class names.

[para]

Options are normally set and retrieved using the standard
instance methods [method configure] and [method cget]; within instance code
(method bodies, etc.), option values are available through the 
[var options] array:

[example {    set myfont $options(-font)
}]

If the type defines any option handlers (e.g., [const -configuremethod]), 
then it should probably use [method configure] and [method cget] to 
access its options to avoid subtle errors.

[para]

The [cmd option] statement may include the following options:

[list_begin definitions]
[def "[const -default] [arg defvalue]"]

Defines the option's default value; the option's default value 
will be "" otherwise.

[def "[const -readonly] [arg flag]"]

The [arg flag] can be any Boolean value recognized by Tcl.  
If [arg flag] is true, then the option is read-only--it can only
be set using [method configure] or [method configurelist] 
at creation time, i.e., in the type's constructor.

[def "[const -type] [arg type]"]

Every locally-defined option may define its validation type, which may
be either the name of a validation type or a specification for a
validation subtype







|





|
|









|




|

|







288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
See [sectref {The Tk Option Database}] for more information about
resource and class names.

[para]

Options are normally set and retrieved using the standard
instance methods [method configure] and [method cget]; within instance code
(method bodies, etc.), option values are available through the
[var options] array:

[example {    set myfont $options(-font)
}]

If the type defines any option handlers (e.g., [const -configuremethod]),
then it should probably use [method configure] and [method cget] to
access its options to avoid subtle errors.

[para]

The [cmd option] statement may include the following options:

[list_begin definitions]
[def "[const -default] [arg defvalue]"]

Defines the option's default value; the option's default value
will be "" otherwise.

[def "[const -readonly] [arg flag]"]

The [arg flag] can be any Boolean value recognized by Tcl.
If [arg flag] is true, then the option is read-only--it can only
be set using [method configure] or [method configurelist]
at creation time, i.e., in the type's constructor.

[def "[const -type] [arg type]"]

Every locally-defined option may define its validation type, which may
be either the name of a validation type or a specification for a
validation subtype
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
by specifying a validation subtype:

[example {    option -number -type {snit::integer -min 1 -max 10}
}]

If a validation type or subtype is defined for an option, then
it will be used to validate the option's value whenever it is
changed by the object's [method configure] or 
[method configurelist] methods.  In addition, all such options
will have their values validated automatically immediately
after the constructor executes.

[para]

Snit defines a family of validation types and subtypes, and it's
quite simple to define new ones.  See
[sectref "Validation Types"] for the complete list, and
[sectref "Defining Validation Types"] for an explanation of how
to define your own.

[def "[const -cgetmethod] [arg methodName]"]

Every locally-defined option may define a [const -cgetmethod];
it is called when the option's value is retrieved using the
[method cget] method.  Whatever the method's [arg body] returns will
be the return value of the call to [method cget].  

[para]

The named method must take one argument, the option name.
For example, this code is equivalent to (though slower than)
Snit's default handling of [cmd cget]:

[example {    option -font -cgetmethod GetOption
    method GetOption {option} {
        return $options($option)
    }
}]

Note that it's possible for any number of options to share a 
[const -cgetmethod].

[def "[const -configuremethod] [arg methodName]"]

Every locally-defined option may define a [const -configuremethod];
it is called when the option's value is set using the
[method configure] or [method configurelist] methods.  It is the
named method's responsibility to save the option's value; in other
words, the value will not be saved to the [var options()] array unless
the method saves it there.

[para]

The named method must take two arguments, the option name and
its new value.  For example, this code is equivalent to 
(though slower than) Snit's default handling of [cmd configure]:

[example {    option -font -configuremethod SetOption
    method SetOption {option value} {
        set options($option) $value
    }
}]

Note that it's possible for any number of options to share a 
single [const -configuremethod].

[def "[const -validatemethod] [arg methodName]"]

Every locally-defined option may define a [const -validatemethod];
it is called when the option's value is set using the
[method configure] or [method configurelist] methods, just before
the [const -configuremethod] (if any).  It is the
named method's responsibility to validate the option's new value,
and to throw an error if the value is invalid.

[para]

The named method must take two arguments, the option name and
its new value.  For example, this code verifies that 
[const -flag]'s value is a valid Boolean value:

[example {    option -font -validatemethod CheckBoolean
    method CheckBoolean {option value} {
        if {![string is boolean -strict $value]} {
            error "option $option must have a boolean value."
        }
    }
}]

Note that it's possible for any number of options to share a 
single [const -validatemethod].

[list_end]

[call [cmd constructor] [arg arglist] [arg body]]

The constructor definition specifies a [arg body] of code to be
executed when a new instance is created.  The [arg arglist] is a 
normal Tcl argument list and may contain default arguments and 
the [var args] argument.

[para]

As with methods, the arguments [var type], [var self], [var selfns], 
and [var win] are defined implicitly, and all type and instance 
variables are automatically visible in its [arg body].

[para]

If the [arg definition] doesn't explicitly define the constructor,
Snit defines one implicitly.  If the type declares at least one option
(whether locally or by delegation), the default constructor will 
be defined as follows:

[example {    constructor {args} {
        $self configurelist $args
    }
}]

For standard Tk widget behavior, the argument list should be 
the single name [const args], as shown.

[para]

If the [arg definition] defines neither a constructor nor
any options, the default constructor is defined as follows:

[example {    constructor {} {}
}]

As with methods, the constructor can call commands from the namespace
in which the type is
defined without importing them, e.g., if the type name is 
[cmd ::parentns::typename], then the constructor can call
[cmd ::parentns::someproc] just as [cmd someproc].  
[emph {Snit 1.x Incompatibility:}] This does not work in Snit 1.x, as
it depends on [cmd "namespace path"], a new command in Tcl 8.5.

[call [cmd destructor] [arg body]]

The destructor is used to code any actions that must take place when
an instance of the type is destroyed: typically, the destruction of
anything created in the constructor.

[para]

The destructor takes no explicit arguments; as with methods, the 
arguments [var type], [var self], [var selfns], and [var win], are 
defined implicitly, and all type and instance 
variables are automatically visible in its [arg body].

As with methods, the destructor can call commands from the namespace
in which the type is
defined without importing them, e.g., if the type name is 
[cmd ::parentns::typename], then the destructor can call
[cmd ::parentns::someproc] just as [cmd someproc].  
[emph {Snit 1.x Incompatibility:}] This does not work in Snit 1.x, as
it depends on [cmd "namespace path"], a new command in Tcl 8.5.

[call [cmd proc] [arg name] [arg args] [arg body]]

Defines a new Tcl procedure in the type's namespace.

[para]

The defined proc differs from a normal Tcl proc in that all type
variables are automatically visible.  The proc can access 
instance variables as well, provided that it is passed
[var selfns] (with precisely that name) as one of its arguments.

[para]

Although they are not implicitly defined for procs, the argument names
[const type], [const self], and [const win] should be avoided.

[para]

As with methods and typemethods, procs can call commands from the namespace
in which the type is
defined without importing them, e.g., if the type name is 
[cmd ::parentns::typename], then the proc can call
[cmd ::parentns::someproc] just as [cmd someproc].  
[emph {Snit 1.x Incompatibility:}] This does not work in Snit 1.x, as
it depends on [cmd "namespace path"], a new command in Tcl 8.5.

[call [cmd delegate] [const method] [arg name] [const to] [arg comp] [opt "[const as] [arg target]"]]

Delegates method [arg name] to component [arg comp].  That is, when
method [arg name] is called on an instance of this type, the method







|

















|













|














|








|














|










|







|
|




|
|






|







|












|

|











|
|
|




|

|










|












|

|







337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
by specifying a validation subtype:

[example {    option -number -type {snit::integer -min 1 -max 10}
}]

If a validation type or subtype is defined for an option, then
it will be used to validate the option's value whenever it is
changed by the object's [method configure] or
[method configurelist] methods.  In addition, all such options
will have their values validated automatically immediately
after the constructor executes.

[para]

Snit defines a family of validation types and subtypes, and it's
quite simple to define new ones.  See
[sectref "Validation Types"] for the complete list, and
[sectref "Defining Validation Types"] for an explanation of how
to define your own.

[def "[const -cgetmethod] [arg methodName]"]

Every locally-defined option may define a [const -cgetmethod];
it is called when the option's value is retrieved using the
[method cget] method.  Whatever the method's [arg body] returns will
be the return value of the call to [method cget].

[para]

The named method must take one argument, the option name.
For example, this code is equivalent to (though slower than)
Snit's default handling of [cmd cget]:

[example {    option -font -cgetmethod GetOption
    method GetOption {option} {
        return $options($option)
    }
}]

Note that it's possible for any number of options to share a
[const -cgetmethod].

[def "[const -configuremethod] [arg methodName]"]

Every locally-defined option may define a [const -configuremethod];
it is called when the option's value is set using the
[method configure] or [method configurelist] methods.  It is the
named method's responsibility to save the option's value; in other
words, the value will not be saved to the [var options()] array unless
the method saves it there.

[para]

The named method must take two arguments, the option name and
its new value.  For example, this code is equivalent to
(though slower than) Snit's default handling of [cmd configure]:

[example {    option -font -configuremethod SetOption
    method SetOption {option value} {
        set options($option) $value
    }
}]

Note that it's possible for any number of options to share a
single [const -configuremethod].

[def "[const -validatemethod] [arg methodName]"]

Every locally-defined option may define a [const -validatemethod];
it is called when the option's value is set using the
[method configure] or [method configurelist] methods, just before
the [const -configuremethod] (if any).  It is the
named method's responsibility to validate the option's new value,
and to throw an error if the value is invalid.

[para]

The named method must take two arguments, the option name and
its new value.  For example, this code verifies that
[const -flag]'s value is a valid Boolean value:

[example {    option -font -validatemethod CheckBoolean
    method CheckBoolean {option value} {
        if {![string is boolean -strict $value]} {
            error "option $option must have a boolean value."
        }
    }
}]

Note that it's possible for any number of options to share a
single [const -validatemethod].

[list_end]

[call [cmd constructor] [arg arglist] [arg body]]

The constructor definition specifies a [arg body] of code to be
executed when a new instance is created.  The [arg arglist] is a
normal Tcl argument list and may contain default arguments and
the [var args] argument.

[para]

As with methods, the arguments [var type], [var self], [var selfns],
and [var win] are defined implicitly, and all type and instance
variables are automatically visible in its [arg body].

[para]

If the [arg definition] doesn't explicitly define the constructor,
Snit defines one implicitly.  If the type declares at least one option
(whether locally or by delegation), the default constructor will
be defined as follows:

[example {    constructor {args} {
        $self configurelist $args
    }
}]

For standard Tk widget behavior, the argument list should be
the single name [const args], as shown.

[para]

If the [arg definition] defines neither a constructor nor
any options, the default constructor is defined as follows:

[example {    constructor {} {}
}]

As with methods, the constructor can call commands from the namespace
in which the type is
defined without importing them, e.g., if the type name is
[cmd ::parentns::typename], then the constructor can call
[cmd ::parentns::someproc] just as [cmd someproc].
[emph {Snit 1.x Incompatibility:}] This does not work in Snit 1.x, as
it depends on [cmd "namespace path"], a new command in Tcl 8.5.

[call [cmd destructor] [arg body]]

The destructor is used to code any actions that must take place when
an instance of the type is destroyed: typically, the destruction of
anything created in the constructor.

[para]

The destructor takes no explicit arguments; as with methods, the
arguments [var type], [var self], [var selfns], and [var win], are
defined implicitly, and all type and instance
variables are automatically visible in its [arg body].

As with methods, the destructor can call commands from the namespace
in which the type is
defined without importing them, e.g., if the type name is
[cmd ::parentns::typename], then the destructor can call
[cmd ::parentns::someproc] just as [cmd someproc].
[emph {Snit 1.x Incompatibility:}] This does not work in Snit 1.x, as
it depends on [cmd "namespace path"], a new command in Tcl 8.5.

[call [cmd proc] [arg name] [arg args] [arg body]]

Defines a new Tcl procedure in the type's namespace.

[para]

The defined proc differs from a normal Tcl proc in that all type
variables are automatically visible.  The proc can access
instance variables as well, provided that it is passed
[var selfns] (with precisely that name) as one of its arguments.

[para]

Although they are not implicitly defined for procs, the argument names
[const type], [const self], and [const win] should be avoided.

[para]

As with methods and typemethods, procs can call commands from the namespace
in which the type is
defined without importing them, e.g., if the type name is
[cmd ::parentns::typename], then the proc can call
[cmd ::parentns::someproc] just as [cmd someproc].
[emph {Snit 1.x Incompatibility:}] This does not work in Snit 1.x, as
it depends on [cmd "namespace path"], a new command in Tcl 8.5.

[call [cmd delegate] [const method] [arg name] [const to] [arg comp] [opt "[const as] [arg target]"]]

Delegates method [arg name] to component [arg comp].  That is, when
method [arg name] is called on an instance of this type, the method
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565

[const Note:] All forms of [cmd "delegate method"] can delegate to
both instance components and type components.

[call [cmd delegate] [const method] [arg name] [opt "[const to] [arg comp]"] [const using] [arg pattern]]

In this form of the [cmd delegate] statement, the [const using] clause
is used to specify the precise form of the command to which method 
[arg name] name is delegated.  In this form, the [const "to"] clause is
optional, since the chosen command might not involve any particular
component.

[para]

The value of the [const using] clause is a list that may contain 
any or all of the following substitution codes; these codes are
substituted with the described value to build the delegated command
prefix.  Note that the following two statements are equivalent:

[example {    delegate method wag to tail
    delegate method wag to tail using "%c %m"
}]







|






|







556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577

[const Note:] All forms of [cmd "delegate method"] can delegate to
both instance components and type components.

[call [cmd delegate] [const method] [arg name] [opt "[const to] [arg comp]"] [const using] [arg pattern]]

In this form of the [cmd delegate] statement, the [const using] clause
is used to specify the precise form of the command to which method
[arg name] name is delegated.  In this form, the [const "to"] clause is
optional, since the chosen command might not involve any particular
component.

[para]

The value of the [const using] clause is a list that may contain
any or all of the following substitution codes; these codes are
substituted with the described value to build the delegated command
prefix.  Note that the following two statements are equivalent:

[example {    delegate method wag to tail
    delegate method wag to tail using "%c %m"
}]
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
TBD: Continue from here.

[call [cmd component] [arg comp] \
     [opt "[const -public] [arg method]"] \
     [opt "[const -inherit] [arg flag]"]]

Explicitly declares a component called [arg comp], and automatically
defines the component's instance variable.  

[para]

If the [const -public] option is specified, then the option is made
public by defining a [arg method] whose subcommands are delegated
to the component e.g., specifying [const "-public mycomp"] is
equivalent to the following:







|







697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
TBD: Continue from here.

[call [cmd component] [arg comp] \
     [opt "[const -public] [arg method]"] \
     [opt "[const -inherit] [arg flag]"]]

Explicitly declares a component called [arg comp], and automatically
defines the component's instance variable.

[para]

If the [const -public] option is specified, then the option is made
public by defining a [arg method] whose subcommands are delegated
to the component e.g., specifying [const "-public mycomp"] is
equivalent to the following:
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
[para]

A type method cannot be both locally defined and delegated.

[call [cmd delegate] [const typemethod] [arg name] [opt "[const to] [arg comp]"] [const using] [arg pattern]]

In this form of the [cmd delegate] statement, the [const using] clause
is used to specify the precise form of the command to which type method 
[arg name] name is delegated.  In this form, the [const "to"] clause is
optional, since the chosen command might not involve any particular
type component.

[para]

The value of the [const using] clause is a list that may contain 
any or all of the following substitution codes; these codes are
substituted with the described value to build the delegated command
prefix.  Note that the following two statements are equivalent:

[example {    delegate typemethod lostdogs to pound
    delegate typemethod lostdogs to pound using "%c %m"
}]







|






|







758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
[para]

A type method cannot be both locally defined and delegated.

[call [cmd delegate] [const typemethod] [arg name] [opt "[const to] [arg comp]"] [const using] [arg pattern]]

In this form of the [cmd delegate] statement, the [const using] clause
is used to specify the precise form of the command to which type method
[arg name] name is delegated.  In this form, the [const "to"] clause is
optional, since the chosen command might not involve any particular
type component.

[para]

The value of the [const using] clause is a list that may contain
any or all of the following substitution codes; these codes are
substituted with the described value to build the delegated command
prefix.  Note that the following two statements are equivalent:

[example {    delegate typemethod lostdogs to pound
    delegate typemethod lostdogs to pound using "%c %m"
}]
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
[const using] clause, or both.

[para]

[const Note:] By default, Snit interprets [cmd "\$type foo"], where
[const "foo"] is
not a defined type method, as equivalent to [cmd "\$type create foo"], where
[const "foo"] is the name of a new instance of the type.  If you 
use [const "delegate typemethod *"], then the [method "create"] type
method must always be used explicitly.

[para]

The "*" can be a list of two or more tokens whose last
element is "*", as in the following example:







|







827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
[const using] clause, or both.

[para]

[const Note:] By default, Snit interprets [cmd "\$type foo"], where
[const "foo"] is
not a defined type method, as equivalent to [cmd "\$type create foo"], where
[const "foo"] is the name of a new instance of the type.  If you
use [const "delegate typemethod *"], then the [method "create"] type
method must always be used explicitly.

[para]

The "*" can be a list of two or more tokens whose last
element is "*", as in the following example:
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
command to which type methods and instance methods can be delegated;
the command's name is stored in a type variable.

[para]

If the [const -public] option is specified, then the type component is made
public by defining a [arg typemethod] whose subcommands are delegated to
the type component, e.g., specifying [const "-public mytypemethod"] 
is equivalent to the following:

[example {    typecomponent mycomp
    delegate typemethod {mytypemethod *} to mycomp
}]

If the [const -inherit] option is specified, then [arg flag] must be a







|







855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
command to which type methods and instance methods can be delegated;
the command's name is stored in a type variable.

[para]

If the [const -public] option is specified, then the type component is made
public by defining a [arg typemethod] whose subcommands are delegated to
the type component, e.g., specifying [const "-public mytypemethod"]
is equivalent to the following:

[example {    typecomponent mycomp
    delegate typemethod {mytypemethod *} to mycomp
}]

If the [const -inherit] option is specified, then [arg flag] must be a
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
    delegate typemethod * to mycomp
}]

[call [cmd pragma] [opt [arg options...]]]

The [cmd pragma] statement provides control over how Snit generates a
type.  It takes the following options; in each case, [arg flag] must
be a Boolean value recognized by Tcl, e.g., [const 0], [const 1], 
[const "yes"], [const "no"], and so
on.

[para]

By setting the [const -hastypeinfo], [const -hastypedestroy], and
[const -hasinstances] pragmas to false and defining appropriate







|







877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
    delegate typemethod * to mycomp
}]

[call [cmd pragma] [opt [arg options...]]]

The [cmd pragma] statement provides control over how Snit generates a
type.  It takes the following options; in each case, [arg flag] must
be a Boolean value recognized by Tcl, e.g., [const 0], [const 1],
[const "yes"], [const "no"], and so
on.

[para]

By setting the [const -hastypeinfo], [const -hastypedestroy], and
[const -hasinstances] pragmas to false and defining appropriate
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
If true (the default), the generated type will have a type method
called [cmd destroy] that is used to destroy the type and all of its
instances.  The [cmd destroy] type method is documented below.  If
false, it will not.

[def "[const -hastypemethods] [arg flag]"]

If true (the default), the generated type's type command will have 
subcommands (type methods) as usual.  If false, the type command
will serve only to create instances of the type; the first argument
is the instance name.

[para]

This pragma and [const -hasinstances] cannot both be set false.

[def "[const -hasinstances] [arg flag]"]

If true (the default), the generated type will have a type method 
called [cmd create] that is used to create instances of the type,
along with a variety of instance-related features.  If false, it will
not. 

[para]

This pragma and [const -hastypemethods] cannot both be set false.

[def "[const -hasinfo] [arg flag]"]

If true (the default), instances of the generated type will have 
an instance method called [method info] that is used for 
instance introspection; the [method info]
method is documented below.  If false, it will not.

[def "[const -simpledispatch] [arg flag]"]

This pragma is intended to make simple, heavily-used abstract
data types (e.g., stacks and queues) more efficient.

[para]

If false (the default), instance methods are dispatched normally.  If
true, a faster dispatching scheme is used instead.
The speed comes at a price; with [const "-simpledispatch yes"] you 
get the following limitations:

[list_begin itemized]

[item] Methods cannot be delegated.
[item] [cmd uplevel] and [cmd upvar] do not work as expected: the
caller's scope is two levels up rather than one.
[item] The option-handling methods 
([cmd cget], [cmd configure], and [cmd configurelist]) are very
slightly slower.
[list_end]

[list_end]

[call [cmd expose] [arg comp]]
[call [cmd expose] [arg comp] [const as] [arg method]]

[comment {
    The word "Deprecated" really needs to be boldface, and
    there's no good way to do it, so I'm using "const".
}]

[const Deprecated.]  To expose component [arg comp] publicly, use
[cmd component]'s [const -public] option.

[call [cmd onconfigure] [arg name] [arg arglist] [arg body]]

[const Deprecated.]  Define [cmd option]'s [const -configuremethod] 
option instead.

[para]

As of version 0.95, the following definitions,

[example {    option -myoption







|










|


|







|
|












|







|



















|







911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
If true (the default), the generated type will have a type method
called [cmd destroy] that is used to destroy the type and all of its
instances.  The [cmd destroy] type method is documented below.  If
false, it will not.

[def "[const -hastypemethods] [arg flag]"]

If true (the default), the generated type's type command will have
subcommands (type methods) as usual.  If false, the type command
will serve only to create instances of the type; the first argument
is the instance name.

[para]

This pragma and [const -hasinstances] cannot both be set false.

[def "[const -hasinstances] [arg flag]"]

If true (the default), the generated type will have a type method
called [cmd create] that is used to create instances of the type,
along with a variety of instance-related features.  If false, it will
not.

[para]

This pragma and [const -hastypemethods] cannot both be set false.

[def "[const -hasinfo] [arg flag]"]

If true (the default), instances of the generated type will have
an instance method called [method info] that is used for
instance introspection; the [method info]
method is documented below.  If false, it will not.

[def "[const -simpledispatch] [arg flag]"]

This pragma is intended to make simple, heavily-used abstract
data types (e.g., stacks and queues) more efficient.

[para]

If false (the default), instance methods are dispatched normally.  If
true, a faster dispatching scheme is used instead.
The speed comes at a price; with [const "-simpledispatch yes"] you
get the following limitations:

[list_begin itemized]

[item] Methods cannot be delegated.
[item] [cmd uplevel] and [cmd upvar] do not work as expected: the
caller's scope is two levels up rather than one.
[item] The option-handling methods
([cmd cget], [cmd configure], and [cmd configurelist]) are very
slightly slower.
[list_end]

[list_end]

[call [cmd expose] [arg comp]]
[call [cmd expose] [arg comp] [const as] [arg method]]

[comment {
    The word "Deprecated" really needs to be boldface, and
    there's no good way to do it, so I'm using "const".
}]

[const Deprecated.]  To expose component [arg comp] publicly, use
[cmd component]'s [const -public] option.

[call [cmd onconfigure] [arg name] [arg arglist] [arg body]]

[const Deprecated.]  Define [cmd option]'s [const -configuremethod]
option instead.

[para]

As of version 0.95, the following definitions,

[example {    option -myoption
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
    method _configure-myoption {_option value} {
        # Code to save the option's value
    }
}]

[call [cmd oncget] [arg name] [arg body]]

[const Deprecated.]  Define [cmd option]'s [const -cgetmethod] 
option instead.

[para]

As of version 0.95, the following definitions,

[example {    option -myoption







|







998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
    method _configure-myoption {_option value} {
        # Code to save the option's value
    }
}]

[call [cmd oncget] [arg name] [arg body]]

[const Deprecated.]  Define [cmd option]'s [const -cgetmethod]
option instead.

[para]

As of version 0.95, the following definitions,

[example {    option -myoption
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
[example {    option -myoption -cgetmethod _cget-myoption
    method _cget-myoption {_option} {
        # Code to return the option's value
    }
}]

[list_end]


[call [cmd snit::widget] [arg name] [arg definition]]

This command defines a Snit megawidget type with the specified
[arg name].  The [arg definition] is defined as for [cmd snit::type].
 A [cmd snit::widget] differs from a [cmd snit::type]
in these ways:







<







1020
1021
1022
1023
1024
1025
1026

1027
1028
1029
1030
1031
1032
1033
[example {    option -myoption -cgetmethod _cget-myoption
    method _cget-myoption {_option} {
        # Code to return the option's value
    }
}]

[list_end]


[call [cmd snit::widget] [arg name] [arg definition]]

This command defines a Snit megawidget type with the specified
[arg name].  The [arg definition] is defined as for [cmd snit::type].
 A [cmd snit::widget] differs from a [cmd snit::type]
in these ways:
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
the default.  See [sectref {The Tk Option Database}] for more
information.

[call [cmd hulltype] [arg type]]

Determines the kind of widget used as the [cmd snit::widget]'s hull.
The [arg type] may be [const frame] (the default), [const toplevel],
[const labelframe]; the qualified equivalents of these, 
[const tk::frame], [const tk::toplevel], and [const tk::labelframe];
or, if available, the equivalent Tile widgets:
[const ttk::frame], [const ttk::toplevel], and 
[const ttk::labelframe].  In practice, any widget that supports the
[const -class] option can be used as a hull widget by 
[cmd lappend]'ing its name to the variable [var snit::hulltypes].

[list_end]
       
[call [cmd snit::widgetadaptor] [arg name] [arg definition]]

This command defines a Snit megawidget type with the specified name.
It differs from [cmd snit::widget] in that the instance's [var hull]
component is not created automatically, but is created in the
constructor and installed using the [cmd installhull] command.  Once
the hull is installed, its instance command is renamed and replaced as







|


|

|



|







1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
the default.  See [sectref {The Tk Option Database}] for more
information.

[call [cmd hulltype] [arg type]]

Determines the kind of widget used as the [cmd snit::widget]'s hull.
The [arg type] may be [const frame] (the default), [const toplevel],
[const labelframe]; the qualified equivalents of these,
[const tk::frame], [const tk::toplevel], and [const tk::labelframe];
or, if available, the equivalent Tile widgets:
[const ttk::frame], [const ttk::toplevel], and
[const ttk::labelframe].  In practice, any widget that supports the
[const -class] option can be used as a hull widget by
[cmd lappend]'ing its name to the variable [var snit::hulltypes].

[list_end]

[call [cmd snit::widgetadaptor] [arg name] [arg definition]]

This command defines a Snit megawidget type with the specified name.
It differs from [cmd snit::widget] in that the instance's [var hull]
component is not created automatically, but is created in the
constructor and installed using the [cmd installhull] command.  Once
the hull is installed, its instance command is renamed and replaced as
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
[arg body].  Macros are used to define new type and widget
definition statements in terms of the statements defined in this man
page.

[para]

A macro is simply a Tcl proc that is defined in the slave interpreter
used to compile type and widget definitions.  Thus, macros have 
access to all of the type and widget definition statements.  See 
[sectref "Macros and Meta-programming"] for more details.

[para]

The macro [arg name] cannot be the same as any standard Tcl command, 
or any Snit type or widget definition statement, e.g., you can't
redefine the [cmd method] or [cmd delegate] statements, or the 
standard [cmd set], [cmd list], or [cmd string] commands.

[call [cmd snit::compile] [arg which] [arg type] [arg body]]

Snit defines a type, widget, or widgetadaptor by "compiling" the
definition into a Tcl script; this script is then evaluated in the
Tcl interpreter, which actually defines the new type.

[para]

This command exposes the "compiler".  Given a definition [arg body]
for the named [arg type], where [arg which] is [const type], 
[const widget], or [const widgetadaptor], [cmd snit::compile] returns a list
of two elements.  The first element is the fully qualified type name;
the second element is the definition script.

[para]

[cmd snit::compile] is useful when additional processing







|
|




|

|











|







1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
[arg body].  Macros are used to define new type and widget
definition statements in terms of the statements defined in this man
page.

[para]

A macro is simply a Tcl proc that is defined in the slave interpreter
used to compile type and widget definitions.  Thus, macros have
access to all of the type and widget definition statements.  See
[sectref "Macros and Meta-programming"] for more details.

[para]

The macro [arg name] cannot be the same as any standard Tcl command,
or any Snit type or widget definition statement, e.g., you can't
redefine the [cmd method] or [cmd delegate] statements, or the
standard [cmd set], [cmd list], or [cmd string] commands.

[call [cmd snit::compile] [arg which] [arg type] [arg body]]

Snit defines a type, widget, or widgetadaptor by "compiling" the
definition into a Tcl script; this script is then evaluated in the
Tcl interpreter, which actually defines the new type.

[para]

This command exposes the "compiler".  Given a definition [arg body]
for the named [arg type], where [arg which] is [const type],
[const widget], or [const widgetadaptor], [cmd snit::compile] returns a list
of two elements.  The first element is the fully qualified type name;
the second element is the definition script.

[para]

[cmd snit::compile] is useful when additional processing
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
A type or widget definition creates a type command, which is used to
create instances of the type.  The type command has this form:

[para]
[list_begin definitions]
[call [cmd {$type}] [arg typemethod] [arg args]...]

The [arg typemethod] can be any of the 
[sectref "Standard Type Methods"] (e.g., [method create]), 
or any type method defined in the type
definition.

The subsequent [arg args] depend on the specific [arg typemethod]
chosen.

[para]

The type command is most often used to create new instances of the 
type; hence, the [method create] method is assumed if the first
argument to the type command doesn't name a valid type method, unless
the type definition includes [cmd "delegate typemethod *"] or the 
[const -hasinstances] pragma is set to false.

[para]

Furthermore, if the [const -hastypemethods] pragma is false, then
Snit type commands can be called with no arguments at
all; in this case, the type command creates an instance with an
automatically generated name.  In other words, provided that the 
[const -hastypemethods] pragma is false and the type
has instances, the following commands are equivalent:

[example {snit::type dog { ... }

set mydog [dog create %AUTO%]
set mydog [dog %AUTO%]







|
|








|


|







|







1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
A type or widget definition creates a type command, which is used to
create instances of the type.  The type command has this form:

[para]
[list_begin definitions]
[call [cmd {$type}] [arg typemethod] [arg args]...]

The [arg typemethod] can be any of the
[sectref "Standard Type Methods"] (e.g., [method create]),
or any type method defined in the type
definition.

The subsequent [arg args] depend on the specific [arg typemethod]
chosen.

[para]

The type command is most often used to create new instances of the
type; hence, the [method create] method is assumed if the first
argument to the type command doesn't name a valid type method, unless
the type definition includes [cmd "delegate typemethod *"] or the
[const -hasinstances] pragma is set to false.

[para]

Furthermore, if the [const -hastypemethods] pragma is false, then
Snit type commands can be called with no arguments at
all; in this case, the type command creates an instance with an
automatically generated name.  In other words, provided that the
[const -hastypemethods] pragma is false and the type
has instances, the following commands are equivalent:

[example {snit::type dog { ... }

set mydog [dog create %AUTO%]
set mydog [dog %AUTO%]
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
For [cmd snit::widget]s and [cmd snit::widgetadaptor]s, [arg name]
must be a valid widget name; the method returns the widget name.

[para]

So long as [arg name] does not conflict with any defined type method
name the [method create] keyword may be omitted, unless
the type definition includes [cmd "delegate typemethod *"] or the 
[const -hasinstances] pragma is set to false.

[para]

If the [arg name] includes the string [const %AUTO%], it will be
replaced with the string [const {$type$counter}] where [const {$type}] is
the type name and [const {$counter}] is a counter that increments each







|







1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
For [cmd snit::widget]s and [cmd snit::widgetadaptor]s, [arg name]
must be a valid widget name; the method returns the widget name.

[para]

So long as [arg name] does not conflict with any defined type method
name the [method create] keyword may be omitted, unless
the type definition includes [cmd "delegate typemethod *"] or the
[const -hasinstances] pragma is set to false.

[para]

If the [arg name] includes the string [const %AUTO%], it will be
replaced with the string [const {$type$counter}] where [const {$type}] is
the type name and [const {$counter}] is a counter that increments each
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
[para]

As of Snit V0.95, [method create] will throw an error if the [arg name]
is the same as any existing command--note that this was always true
for [cmd snit::widget]s and [cmd snit::widgetadaptor]s.  You can
restore the previous behavior using the [const -canreplace] pragma.


[call [cmd {$type}] [method {info typevars}] [opt [arg pattern]]]

Returns a list of the type's type variables (excluding Snit internal
variables); all variable names are fully-qualified.

[para]

If [arg pattern] is given, it's used as a [cmd {string match}]
pattern; only names that match the pattern are returned.


[call [cmd {$type}] [method {info typemethods}] [opt [arg pattern]]]

Returns a list of the names of the  type's type methods.  
If the type has hierarchical 
type methods, whether locally-defined or delegated, only the first
word of each will be included in the list.

[para]

If the type
definition includes [cmd "delegate typemethod *"], the list will
include only the names of those implicitly delegated type methods 
that have been called at least once and are still in the type method cache.

[para]

If [arg pattern] is given, it's used as a [cmd {string match}]
pattern; only names that match the pattern are returned.


[call [cmd {$type}] [method {info args}] [arg method]]

Returns a list containing the names of the arguments to the type's
[arg method], in order. This method cannot be applied to delegated
type methods.


[call [cmd {$type}] [method {info body}] [arg method]]

Returns the body of typemethod [arg method]. This method cannot be
applied to delegated type methods.


[call [cmd {$type}] [method {info default}] [arg method] [arg aname] [arg varname]]

Returns a boolean value indicating whether the argument [arg aname] of
the type's [arg method] has a default value ([const true]) or not
([const false]). If the argument has a default its value is placed into
the variable [arg varname].


[call [cmd {$type}] [method {info instances}] [opt [arg pattern]]]

Returns a list of the type's instances.  For [cmd snit::type]s, it
will be a list of fully-qualified instance names;
for [cmd snit::widget]s, it will be a list of Tk widget names.








<










<


|
|







|







<






<




<







<







1258
1259
1260
1261
1262
1263
1264

1265
1266
1267
1268
1269
1270
1271
1272
1273
1274

1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293

1294
1295
1296
1297
1298
1299

1300
1301
1302
1303

1304
1305
1306
1307
1308
1309
1310

1311
1312
1313
1314
1315
1316
1317
[para]

As of Snit V0.95, [method create] will throw an error if the [arg name]
is the same as any existing command--note that this was always true
for [cmd snit::widget]s and [cmd snit::widgetadaptor]s.  You can
restore the previous behavior using the [const -canreplace] pragma.


[call [cmd {$type}] [method {info typevars}] [opt [arg pattern]]]

Returns a list of the type's type variables (excluding Snit internal
variables); all variable names are fully-qualified.

[para]

If [arg pattern] is given, it's used as a [cmd {string match}]
pattern; only names that match the pattern are returned.


[call [cmd {$type}] [method {info typemethods}] [opt [arg pattern]]]

Returns a list of the names of the  type's type methods.
If the type has hierarchical
type methods, whether locally-defined or delegated, only the first
word of each will be included in the list.

[para]

If the type
definition includes [cmd "delegate typemethod *"], the list will
include only the names of those implicitly delegated type methods
that have been called at least once and are still in the type method cache.

[para]

If [arg pattern] is given, it's used as a [cmd {string match}]
pattern; only names that match the pattern are returned.


[call [cmd {$type}] [method {info args}] [arg method]]

Returns a list containing the names of the arguments to the type's
[arg method], in order. This method cannot be applied to delegated
type methods.


[call [cmd {$type}] [method {info body}] [arg method]]

Returns the body of typemethod [arg method]. This method cannot be
applied to delegated type methods.


[call [cmd {$type}] [method {info default}] [arg method] [arg aname] [arg varname]]

Returns a boolean value indicating whether the argument [arg aname] of
the type's [arg method] has a default value ([const true]) or not
([const false]). If the argument has a default its value is placed into
the variable [arg varname].


[call [cmd {$type}] [method {info instances}] [opt [arg pattern]]]

Returns a list of the type's instances.  For [cmd snit::type]s, it
will be a list of fully-qualified instance names;
for [cmd snit::widget]s, it will be a list of Tk widget names.

1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
this form:

[para]

[list_begin definitions]
[call [cmd {$object}] [arg method] [arg args...]]

The [arg method] can be any of the 
[sectref "Standard Instance Methods"], or any instance method 
defined in the type definition.

The subsequent [arg args] depend on the specific [arg method] chosen.

[list_end]

[subsection {Standard Instance Methods}]







|
|







1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
this form:

[para]

[list_begin definitions]
[call [cmd {$object}] [arg method] [arg args...]]

The [arg method] can be any of the
[sectref "Standard Instance Methods"], or any instance method
defined in the type definition.

The subsequent [arg args] depend on the specific [arg method] chosen.

[list_end]

[subsection {Standard Instance Methods}]
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
[emph Note:]

The [method destroy] method isn't defined for [cmd snit::widget] or
[cmd snit::widgetadaptor] objects; instances of these are destroyed by
calling [package Tk]'s [cmd destroy] command, just as normal
widgets are.


[call [cmd {$object}] [method {info type}]]

Returns the instance's type.


[call [cmd {$object}] [method {info vars}] [opt [arg pattern]]]

Returns a list of the object's instance variables (excluding Snit
internal variables).  The names are fully qualified.

[para]

If [arg pattern] is given, it's used as a [cmd {string match}]
pattern; only names that match the pattern are returned.


[call [cmd {$object}] [method {info typevars}] [opt [arg pattern]]]

Returns a list of the object's type's type variables (excluding Snit
internal variables).  The names are fully qualified.

[para]

If [arg pattern] is given, it's used as a [cmd {string match}]
pattern; only names that match the pattern are returned.


[call [cmd {$object}] [method {info typemethods}] [opt [arg pattern]]]

Returns a list of the names of the  type's type methods.  
If the type has hierarchical 
type methods, whether locally-defined or delegated, only the first
word of each will be included in the list.

[para]

If the type
definition includes [cmd "delegate typemethod *"], the list will
include only the names of those implicitly delegated type methods 
that have been called at least once and are still in the type method cache.

[para]

If [arg pattern] is given, it's used as a [cmd {string match}]
pattern; only names that match the pattern are returned.








<



<










<











<


|
|







|







1409
1410
1411
1412
1413
1414
1415

1416
1417
1418

1419
1420
1421
1422
1423
1424
1425
1426
1427
1428

1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439

1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
[emph Note:]

The [method destroy] method isn't defined for [cmd snit::widget] or
[cmd snit::widgetadaptor] objects; instances of these are destroyed by
calling [package Tk]'s [cmd destroy] command, just as normal
widgets are.


[call [cmd {$object}] [method {info type}]]

Returns the instance's type.


[call [cmd {$object}] [method {info vars}] [opt [arg pattern]]]

Returns a list of the object's instance variables (excluding Snit
internal variables).  The names are fully qualified.

[para]

If [arg pattern] is given, it's used as a [cmd {string match}]
pattern; only names that match the pattern are returned.


[call [cmd {$object}] [method {info typevars}] [opt [arg pattern]]]

Returns a list of the object's type's type variables (excluding Snit
internal variables).  The names are fully qualified.

[para]

If [arg pattern] is given, it's used as a [cmd {string match}]
pattern; only names that match the pattern are returned.


[call [cmd {$object}] [method {info typemethods}] [opt [arg pattern]]]

Returns a list of the names of the  type's type methods.
If the type has hierarchical
type methods, whether locally-defined or delegated, only the first
word of each will be included in the list.

[para]

If the type
definition includes [cmd "delegate typemethod *"], the list will
include only the names of those implicitly delegated type methods
that have been called at least once and are still in the type method cache.

[para]

If [arg pattern] is given, it's used as a [cmd {string match}]
pattern; only names that match the pattern are returned.

1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
Note that the return value might be different for different instances
of the same type, if component object types can vary from one instance
to another.

[call [cmd {$object}] [method {info methods}] [opt [arg pattern]]]

Returns a list of the names of the instance's methods.
If the type has hierarchical methods, whether locally-defined or 
delegated, only the first word of each will be included in the list.

[para]

If the type
definition includes [cmd "delegate method *"], the list will
include only the names of those implicitly delegated methods that have
been called at least once and are still in the method cache.

[para]

If [arg pattern] is given, it's used as a [cmd {string match}]
pattern; only names that match the pattern are returned.

[para]

[emph "Snit 1.x Incompatibility:"]  In Snit 1.x, the full multi-word
names of hierarchical type methods are included in the return value.


[call [cmd {$object}] [method {info args}] [arg method]]

Returns a list containing the names of the arguments to the instance's
[arg method], in order. This method cannot be applied to delegated methods.


[call [cmd {$object}] [method {info body}] [arg method]]

Returns the body of the instance's method [arg method]. This method
cannot be applied to delegated methods.


[call [cmd {$object}] [method {info default}] [arg method] [arg aname] [arg varname]]

Returns a boolean value indicating whether the argument [arg aname] of
the instance's [arg method] has a default value ([const true]) or not
([const false]). If the argument has a default its value is placed into
the variable [arg varname].


[list_end]

[subsection {Commands for use in Object Code}]

Snit defines the following commands for use in your object code:
that is, for use in type methods, instance methods, constructors,
destructors, onconfigure handlers, oncget handlers, and procs.
They do not reside in the ::snit:: namespace; instead, they are
created with the type, and can be used without qualification.


[list_begin definitions]

[call [cmd mymethod] [arg name] [opt [arg args...]]]

The [cmd mymethod] command is used for formatting callback commands to
be passed to other objects.  It returns a command that when called
will invoke method [arg name] with the specified arguments, plus of
course any arguments added by the caller.  In other words, both of the
following commands will cause the object's 
[method dosomething] method to be called when the [cmd {$button}] is pressed:

[example {    $button configure -command [list $self dosomething myargument]
       
    $button configure -command [mymethod dosomething myargument]
}]

The chief distinction between the two is that the latter form will not
break if the object's command is renamed.

[call [cmd mytypemethod] [arg name] [opt [arg args...]]]

The [cmd mytypemethod] command is used for formatting callback commands to
be passed to other objects.  It returns a command that when called
will invoke type method [arg name] with the specified arguments, plus of
course any arguments added by the caller.  In other words, both of the
following commands will cause the object's [method dosomething] type method
to be called when [cmd {$button}] is pressed:

[example {    $button configure -command [list $type dosomething myargument]
       
    $button configure -command [mytypemethod dosomething myargument]
}]

Type commands cannot be renamed, so in practice there's little
difference between the two forms.  [cmd mytypemethod] is provided for
parallelism with [cmd mymethod].

[call [cmd myproc] [arg name] [opt [arg args...]]]

The [cmd myproc] command is used for formatting callback commands to
be passed to other objects.  It returns a command that when called
will invoke the type proc [arg name] with the specified arguments, plus of
course any arguments added by the caller.  In other words, both of the
following commands will cause the object's [method dosomething] proc
to be called when [cmd {$button}] is pressed:

[example {    $button configure -command [list ${type}::dosomething myargument]
       
    $button configure -command [myproc dosomething myargument]
}]

[call [cmd myvar] [arg name]]

Given an instance variable name, returns the fully qualified name.
Use this if you're passing the variable to some other object, e.g., as







|



















<





<




<







<











<








|



|
















|

















|







1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506

1507
1508
1509
1510
1511

1512
1513
1514
1515

1516
1517
1518
1519
1520
1521
1522

1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533

1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
Note that the return value might be different for different instances
of the same type, if component object types can vary from one instance
to another.

[call [cmd {$object}] [method {info methods}] [opt [arg pattern]]]

Returns a list of the names of the instance's methods.
If the type has hierarchical methods, whether locally-defined or
delegated, only the first word of each will be included in the list.

[para]

If the type
definition includes [cmd "delegate method *"], the list will
include only the names of those implicitly delegated methods that have
been called at least once and are still in the method cache.

[para]

If [arg pattern] is given, it's used as a [cmd {string match}]
pattern; only names that match the pattern are returned.

[para]

[emph "Snit 1.x Incompatibility:"]  In Snit 1.x, the full multi-word
names of hierarchical type methods are included in the return value.


[call [cmd {$object}] [method {info args}] [arg method]]

Returns a list containing the names of the arguments to the instance's
[arg method], in order. This method cannot be applied to delegated methods.


[call [cmd {$object}] [method {info body}] [arg method]]

Returns the body of the instance's method [arg method]. This method
cannot be applied to delegated methods.


[call [cmd {$object}] [method {info default}] [arg method] [arg aname] [arg varname]]

Returns a boolean value indicating whether the argument [arg aname] of
the instance's [arg method] has a default value ([const true]) or not
([const false]). If the argument has a default its value is placed into
the variable [arg varname].


[list_end]

[subsection {Commands for use in Object Code}]

Snit defines the following commands for use in your object code:
that is, for use in type methods, instance methods, constructors,
destructors, onconfigure handlers, oncget handlers, and procs.
They do not reside in the ::snit:: namespace; instead, they are
created with the type, and can be used without qualification.


[list_begin definitions]

[call [cmd mymethod] [arg name] [opt [arg args...]]]

The [cmd mymethod] command is used for formatting callback commands to
be passed to other objects.  It returns a command that when called
will invoke method [arg name] with the specified arguments, plus of
course any arguments added by the caller.  In other words, both of the
following commands will cause the object's
[method dosomething] method to be called when the [cmd {$button}] is pressed:

[example {    $button configure -command [list $self dosomething myargument]

    $button configure -command [mymethod dosomething myargument]
}]

The chief distinction between the two is that the latter form will not
break if the object's command is renamed.

[call [cmd mytypemethod] [arg name] [opt [arg args...]]]

The [cmd mytypemethod] command is used for formatting callback commands to
be passed to other objects.  It returns a command that when called
will invoke type method [arg name] with the specified arguments, plus of
course any arguments added by the caller.  In other words, both of the
following commands will cause the object's [method dosomething] type method
to be called when [cmd {$button}] is pressed:

[example {    $button configure -command [list $type dosomething myargument]

    $button configure -command [mytypemethod dosomething myargument]
}]

Type commands cannot be renamed, so in practice there's little
difference between the two forms.  [cmd mytypemethod] is provided for
parallelism with [cmd mymethod].

[call [cmd myproc] [arg name] [opt [arg args...]]]

The [cmd myproc] command is used for formatting callback commands to
be passed to other objects.  It returns a command that when called
will invoke the type proc [arg name] with the specified arguments, plus of
course any arguments added by the caller.  In other words, both of the
following commands will cause the object's [method dosomething] proc
to be called when [cmd {$button}] is pressed:

[example {    $button configure -command [list ${type}::dosomething myargument]

    $button configure -command [myproc dosomething myargument]
}]

[call [cmd myvar] [arg name]]

Given an instance variable name, returns the fully qualified name.
Use this if you're passing the variable to some other object, e.g., as
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
If the option is locally-defined option, and [arg defvalue] is
not specified, then the option's default value as specified in the
type definition will be returned instead.

[call [cmd install] [arg compName] [const using] [arg objType] [arg objName] [arg args...]]

Creates a new object of type [arg objType] called [arg objName]
and installs it as component [arg compName], 
as described in [sectref {Components and Delegation}].  Any additional
[arg args...] are passed along with the name to the [arg objType]
command.

If this is a [cmd snit::type], then the following two commands are
equivalent:








|







1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
If the option is locally-defined option, and [arg defvalue] is
not specified, then the option's default value as specified in the
type definition will be returned instead.

[call [cmd install] [arg compName] [const using] [arg objType] [arg objName] [arg args...]]

Creates a new object of type [arg objType] called [arg objName]
and installs it as component [arg compName],
as described in [sectref {Components and Delegation}].  Any additional
[arg args...] are passed along with the name to the [arg objType]
command.

If this is a [cmd snit::type], then the following two commands are
equivalent:

1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
[para]

It's generally clearest to define all instance variables in the type
definition, and omit declaring them in methods and so forth.

[para]

Note that this is an instance-specific version of the standard Tcl 
[cmd ::variable] command.

[call [cmd typevariable] [arg name]]

Normally, type variables are defined in the type definition, along
with the instance variables; such type variables are automatically
visible in all of the type's code.  However, type methods, instance
methods and so forth can use [cmd typevariable] to declare type 
variables that don't appear in the type definition.

[para]

It's generally clearest to declare all type variables in the type
definition, and omit declaring them in methods, type methods, etc.

[call [cmd varname] [arg name]]

[const Deprecated.]  Use [cmd myvar] instead.

[para]

Given an instance variable name, returns the fully qualified name.
Use this if you're passing the variable to some other object, e.g., as
a [option -textvariable] to a Tk label widget.


[call [cmd typevarname] [arg name]]

[const Deprecated.]  Use [cmd mytypevar] instead.

[para]








|







|
















<







1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724

1725
1726
1727
1728
1729
1730
1731
[para]

It's generally clearest to define all instance variables in the type
definition, and omit declaring them in methods and so forth.

[para]

Note that this is an instance-specific version of the standard Tcl
[cmd ::variable] command.

[call [cmd typevariable] [arg name]]

Normally, type variables are defined in the type definition, along
with the instance variables; such type variables are automatically
visible in all of the type's code.  However, type methods, instance
methods and so forth can use [cmd typevariable] to declare type
variables that don't appear in the type definition.

[para]

It's generally clearest to declare all type variables in the type
definition, and omit declaring them in methods, type methods, etc.

[call [cmd varname] [arg name]]

[const Deprecated.]  Use [cmd myvar] instead.

[para]

Given an instance variable name, returns the fully qualified name.
Use this if you're passing the variable to some other object, e.g., as
a [option -textvariable] to a Tk label widget.


[call [cmd typevarname] [arg name]]

[const Deprecated.]  Use [cmd mytypevar] instead.

[para]

1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781

[subsection {Components and Delegation}]

When an object includes other objects, as when a toolbar contains
buttons or a GUI object contains an object that references a database,
the included object is called a component.  The standard way to handle
component objects owned by a Snit object is to declare them using
[cmd component], which creates a component instance variable.  
In the following example, a [cmd dog] object has a
[cmd tail] object:

[para]
[example {    snit::type dog {
        component mytail
    
        constructor {args} {
            set mytail [tail %AUTO% -partof $self]
            $self configurelist $args
        }
    
        method wag {} {
            $mytail wag
        }
    }
    
    snit::type tail {
        option -length 5
        option -partof
        method wag {} { return "Wag, wag, wag."}
    }
}]
[para]







|






|




|




|







1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776

[subsection {Components and Delegation}]

When an object includes other objects, as when a toolbar contains
buttons or a GUI object contains an object that references a database,
the included object is called a component.  The standard way to handle
component objects owned by a Snit object is to declare them using
[cmd component], which creates a component instance variable.
In the following example, a [cmd dog] object has a
[cmd tail] object:

[para]
[example {    snit::type dog {
        component mytail

        constructor {args} {
            set mytail [tail %AUTO% -partof $self]
            $self configurelist $args
        }

        method wag {} {
            $mytail wag
        }
    }

    snit::type tail {
        option -length 5
        option -partof
        method wag {} { return "Wag, wag, wag."}
    }
}]
[para]
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
simply calls the [cmd tail] component's [method wag] method.  In OO
jargon, this is called delegation.  Snit provides an easier way to do
this:

[para]
[example {    snit::type dog {
        delegate method wag to mytail
    
        constructor {args} {
            install mytail using tail %AUTO% -partof $self
            $self configurelist $args
        }
    }
}]
[para]







|







1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
simply calls the [cmd tail] component's [method wag] method.  In OO
jargon, this is called delegation.  Snit provides an easier way to do
this:

[para]
[example {    snit::type dog {
        delegate method wag to mytail

        constructor {args} {
            install mytail using tail %AUTO% -partof $self
            $self configurelist $args
        }
    }
}]
[para]
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
method; but [method wag] will be passed along to [cmd mytail].  Any
other method, being recognized by neither [cmd dog] nor [cmd tail],
will simply raise an error.

[para]

Option delegation is similar to method delegation, except for the
interactions with the Tk option database; this is described in 
[sectref "The Tk Option Database"].

[subsection {Type Components and Delegation}]

The relationship between type components and instance components is
identical to that between type variables and instance variables, and
that between type methods and instance methods.  Just as an instance
component is an instance variable that holds the name of a command, so
a type component is a type variable that holds the name of a command.
In essence, a type component is a component that's shared by every
instance of the type.

[para]

Just as [cmd "delegate method"] can be used to delegate methods to
instance components, as described in 
[sectref "Components and Delegation"], so [cmd "delegate typemethod"]
can be used to delegate type methods to type components.

[para]

Note also that as of Snit 0.95 [cmd "delegate method"] can delegate
methods to both instance components and type components.







|















|







1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
method; but [method wag] will be passed along to [cmd mytail].  Any
other method, being recognized by neither [cmd dog] nor [cmd tail],
will simply raise an error.

[para]

Option delegation is similar to method delegation, except for the
interactions with the Tk option database; this is described in
[sectref "The Tk Option Database"].

[subsection {Type Components and Delegation}]

The relationship between type components and instance components is
identical to that between type variables and instance variables, and
that between type methods and instance methods.  Just as an instance
component is an instance variable that holds the name of a command, so
a type component is a type variable that holds the name of a command.
In essence, a type component is a component that's shared by every
instance of the type.

[para]

Just as [cmd "delegate method"] can be used to delegate methods to
instance components, as described in
[sectref "Components and Delegation"], so [cmd "delegate typemethod"]
can be used to delegate type methods to type components.

[para]

Note also that as of Snit 0.95 [cmd "delegate method"] can delegate
methods to both instance components and type components.
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
usually just the option name minus the hyphen, but may contain
uppercase letters at word boundaries; the class name is usually just
the resource name with an initial capital, but not always.  For
example, here are the option, resource, and class names for several
[cmd text] widget options:

[para]
[example {    -background         background         Background 
    -borderwidth        borderWidth        BorderWidth 
    -insertborderwidth  insertBorderWidth  BorderWidth 
    -padx               padX               Pad 
}]
[para]

As is easily seen, sometimes the resource and class names can be
inferred from the option name, but not always.

[para]







|
|
|
|







1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
usually just the option name minus the hyphen, but may contain
uppercase letters at word boundaries; the class name is usually just
the resource name with an initial capital, but not always.  For
example, here are the option, resource, and class names for several
[cmd text] widget options:

[para]
[example {    -background         background         Background
    -borderwidth        borderWidth        BorderWidth
    -insertborderwidth  insertBorderWidth  BorderWidth
    -padx               padX               Pad
}]
[para]

As is easily seen, sometimes the resource and class names can be
inferred from the option name, but not always.

[para]
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
}]
[para]

The class name will default to "BorderWidth", as expected.

[para]

Suppose, however, that [cmd mywidget] also delegated 
[option -padx] and
[option -pady] to the hull.  In this case, both the resource name and the
class name must be specified explicitly:

[para]
[example {    snit::widget mywidget {
	option -background







|







2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
}]
[para]

The class name will default to "BorderWidth", as expected.

[para]

Suppose, however, that [cmd mywidget] also delegated
[option -padx] and
[option -pady] to the hull.  In this case, both the resource name and the
class name must be specified explicitly:

[para]
[example {    snit::widget mywidget {
	option -background
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
option database and pick up this value.  Since the [option -relief]
option is implicitly delegated to the hull, Snit takes no action.

[para]

The value of B is "red".  The hull will automatically pick up the
value "green" for its [option -background] option, just as it picked up the
[option -relief] value.  However, Snit knows that 
[option -hullbackground] is mapped to
the hull's [option -background] option; hence, it queries the option database
for [option -hullbackground] and gets "red" and updates the hull 
accordingly.

[para]

The value of C is also "red", because [option -background] is implicitly
delegated to the hull; thus, retrieving it is the same as retrieving
[option -hullbackground].  Note that this case is unusual; in practice,
[option -background] would probably be explicitly delegated to some other
component.

[para]

The value of D is "5", but not for the reason you think.  Note that as
it is defined above, the resource name for [option -borderwidth]
defaults to "borderwidth", whereas the option database entry is 
"borderWidth".  As with [option -relief], the hull picks up its 
own [option -borderwidth] option before Snit does anything.  Because the
option is delegated under its own name, Snit assumes that the correct 
thing has happened, and doesn't worry about it any further.

[para]

For [cmd snit::widgetadaptor]s, the case is somewhat altered.  Widget
adaptors retain the widget class of their hull, and the hull is not
created automatically by Snit.  Instead, the [cmd snit::widgetadaptor]







|


|














|
|

|







2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
option database and pick up this value.  Since the [option -relief]
option is implicitly delegated to the hull, Snit takes no action.

[para]

The value of B is "red".  The hull will automatically pick up the
value "green" for its [option -background] option, just as it picked up the
[option -relief] value.  However, Snit knows that
[option -hullbackground] is mapped to
the hull's [option -background] option; hence, it queries the option database
for [option -hullbackground] and gets "red" and updates the hull
accordingly.

[para]

The value of C is also "red", because [option -background] is implicitly
delegated to the hull; thus, retrieving it is the same as retrieving
[option -hullbackground].  Note that this case is unusual; in practice,
[option -background] would probably be explicitly delegated to some other
component.

[para]

The value of D is "5", but not for the reason you think.  Note that as
it is defined above, the resource name for [option -borderwidth]
defaults to "borderwidth", whereas the option database entry is
"borderWidth".  As with [option -relief], the hull picks up its
own [option -borderwidth] option before Snit does anything.  Because the
option is delegated under its own name, Snit assumes that the correct
thing has happened, and doesn't worry about it any further.

[para]

For [cmd snit::widgetadaptor]s, the case is somewhat altered.  Widget
adaptors retain the widget class of their hull, and the hull is not
created automatically by Snit.  Instead, the [cmd snit::widgetadaptor]
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
        }

        method setmood {newmood} {
            set mood $newmood
        }
    }
}]
 
That's nine lines of text per property.  Or, you could define the
following [cmd snit::macro]:

[example {    snit::macro property {name initValue} {
        variable $name $initValue

        method get$name {} "return $name"







|







2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
        }

        method setmood {newmood} {
            set mood $newmood
        }
    }
}]

That's nine lines of text per property.  Or, you could define the
following [cmd snit::macro]:

[example {    snit::macro property {name initValue} {
        variable $name $initValue

        method get$name {} "return $name"
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
This leaves the global namespace open for application authors.

[para]

[subsection "Validation Types"]

A validation type is an object that can be used to validate
Tcl values of a particular kind.  For example, 
[cmd snit::integer] is used to validate that a Tcl value is
an integer.

[para]

Every validation type has a [method validate] method which is used to
do the validation. This method must take a single argument, the value







|







2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
This leaves the global namespace open for application authors.

[para]

[subsection "Validation Types"]

A validation type is an object that can be used to validate
Tcl values of a particular kind.  For example,
[cmd snit::integer] is used to validate that a Tcl value is
an integer.

[para]

Every validation type has a [method validate] method which is used to
do the validation. This method must take a single argument, the value
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
    snit::type dog {
        # Define subtypes on the fly...
        option -breed -type {
            snit::enum -values {mutt retriever sheepdog}
        }

        # Or use predefined subtypes...
        option -breed -type ::dog::breed 
    }
}]

[para]

Any object that has a [method validate] method with the semantics
described above can be used as a validation type; see 
[sectref "Defining Validation Types"] for information on how to define
new ones.

[para]

Snit defines the following validation types:








|






|







2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
    snit::type dog {
        # Define subtypes on the fly...
        option -breed -type {
            snit::enum -values {mutt retriever sheepdog}
        }

        # Or use predefined subtypes...
        option -breed -type ::dog::breed
    }
}]

[para]

Any object that has a [method validate] method with the semantics
described above can be used as a validation type; see
[sectref "Defining Validation Types"] for information on how to define
new ones.

[para]

Snit defines the following validation types:

2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
following options:

[list_begin definitions]

[def "[const -min] [arg min]"]

Specifies a minimum bound; a value is invalid if it is strictly
less than [arg min].  The bound may be expressed in any of the 
forms accepted by [cmd "winfo fpixels"].

[def "[const -max] [arg max]"]

Specifies a maximum bound; a value is invalid if it is strictly
greater than [arg max].  The bound may be expressed in any of the 
forms accepted by [cmd "winfo fpixels"].

[list_end]

[call [cmd snit::integer] [const validate] [opt [arg value]]]
[call [cmd snit::integer] [arg name] [opt "[arg option] [arg value]..."]]








|





|







2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
following options:

[list_begin definitions]

[def "[const -min] [arg min]"]

Specifies a minimum bound; a value is invalid if it is strictly
less than [arg min].  The bound may be expressed in any of the
forms accepted by [cmd "winfo fpixels"].

[def "[const -max] [arg max]"]

Specifies a maximum bound; a value is invalid if it is strictly
greater than [arg max].  The bound may be expressed in any of the
forms accepted by [cmd "winfo fpixels"].

[list_end]

[call [cmd snit::integer] [const validate] [opt [arg value]]]
[call [cmd snit::integer] [arg name] [opt "[arg option] [arg value]..."]]

2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
[def "[const -minlen] [arg min]"]

Specifies a minimum list length; the value is invalid if it has
fewer than [arg min] elements.  Defaults to 0.

[def "[const -maxlen] [arg max]"]

Specifies a maximum list length; the value is invalid if it 
more than [arg max] elements.

[def "[const -type] [arg type]"]

Specifies the type of the list elements; [arg type] must be
the name of a validation type or subtype.  In the
following example, the value of [const -numbers] must be a list







|







2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
[def "[const -minlen] [arg min]"]

Specifies a minimum list length; the value is invalid if it has
fewer than [arg min] elements.  Defaults to 0.

[def "[const -maxlen] [arg max]"]

Specifies a maximum list length; the value is invalid if it
more than [arg max] elements.

[def "[const -type] [arg type]"]

Specifies the type of the list elements; [arg type] must be
the name of a validation type or subtype.  In the
following example, the value of [const -numbers] must be a list
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
[example {    snit::integer gt4 -min 5

    snit::type mytype {
        option -numbers -type {snit::listtype -type gt4}
    }
}]


[list_end]

[call [cmd snit::pixels] [const validate] [opt [arg value]]]
[call [cmd snit::pixels] [arg name] [opt "[arg option] [arg value]..."]]

[emph "Tk programs only."] Validates screen distances, in any of the
forms accepted by [cmd "winfo pixels"]. Subtypes may be created with the
following options:

[list_begin definitions]

[def "[const -min] [arg min]"]

Specifies a minimum bound; a value is invalid if it is strictly
less than [arg min].  The bound may be expressed in any of the 
forms accepted by [cmd "winfo pixels"].

[def "[const -max] [arg max]"]

Specifies a maximum bound; a value is invalid if it is strictly
greater than [arg max].  The bound may be expressed in any of the 
forms accepted by [cmd "winfo pixels"].

[list_end]


[call [cmd snit::stringtype] [const validate] [opt [arg value]]]
[call [cmd snit::stringtype] [arg name] [opt "[arg option] [arg value]..."]]

Validates Tcl strings. The base type is of little use by itself,
since very Tcl value is also a valid string.  Subtypes may be created with the
following options:







<














|





|



<







2560
2561
2562
2563
2564
2565
2566

2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590

2591
2592
2593
2594
2595
2596
2597
[example {    snit::integer gt4 -min 5

    snit::type mytype {
        option -numbers -type {snit::listtype -type gt4}
    }
}]


[list_end]

[call [cmd snit::pixels] [const validate] [opt [arg value]]]
[call [cmd snit::pixels] [arg name] [opt "[arg option] [arg value]..."]]

[emph "Tk programs only."] Validates screen distances, in any of the
forms accepted by [cmd "winfo pixels"]. Subtypes may be created with the
following options:

[list_begin definitions]

[def "[const -min] [arg min]"]

Specifies a minimum bound; a value is invalid if it is strictly
less than [arg min].  The bound may be expressed in any of the
forms accepted by [cmd "winfo pixels"].

[def "[const -max] [arg max]"]

Specifies a maximum bound; a value is invalid if it is strictly
greater than [arg max].  The bound may be expressed in any of the
forms accepted by [cmd "winfo pixels"].

[list_end]


[call [cmd snit::stringtype] [const validate] [opt [arg value]]]
[call [cmd snit::stringtype] [arg name] [opt "[arg option] [arg value]..."]]

Validates Tcl strings. The base type is of little use by itself,
since very Tcl value is also a valid string.  Subtypes may be created with the
following options:
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677

[call [cmd snit::window] [const validate] [opt [arg value]]]
[call [cmd snit::window] [arg name]]

[emph "Tk programs only."]  Validates Tk window names.  The value must
cause [cmd "winfo exists"] to return true; otherwise, the value is
invalid.  It's possible to define subtypes--that is, instances--of
[cmd snit::window], but as it has no options at present there's no 
reason to do so.

[list_end]

[para]

[subsection "Defining Validation Types"]

There are three ways to define a new validation type: as a subtype of
one of Snit's validation types, as a validation type command, and as
a full-fledged validation type similar to those provided by Snit.
Defining subtypes of Snit's validation types is described above,
under [sectref "Validation Types"].

[para]

The next simplest way to create a new validation type is as a 
validation type command.  A validation type is simply an
object that has a [method validate] method; the [method validate]
method must take one argument, a value, return the value if it is
valid, and throw an error with [cmd -errorcode] INVALID if the
value is invalid.  This can be done with a simple [cmd proc].  For
example, the [cmd snit::boolean] validate type could have been
implemented like this:

[example {    proc ::snit::boolean {"validate" value} {
        if {![string is boolean -strict $value]} {
            return -code error -errorcode INVALID \ 
                "invalid boolean \"$value\", should be one of: 1, 0, ..."
        }

        return $value
    }
}]








|
















|










|







2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670

[call [cmd snit::window] [const validate] [opt [arg value]]]
[call [cmd snit::window] [arg name]]

[emph "Tk programs only."]  Validates Tk window names.  The value must
cause [cmd "winfo exists"] to return true; otherwise, the value is
invalid.  It's possible to define subtypes--that is, instances--of
[cmd snit::window], but as it has no options at present there's no
reason to do so.

[list_end]

[para]

[subsection "Defining Validation Types"]

There are three ways to define a new validation type: as a subtype of
one of Snit's validation types, as a validation type command, and as
a full-fledged validation type similar to those provided by Snit.
Defining subtypes of Snit's validation types is described above,
under [sectref "Validation Types"].

[para]

The next simplest way to create a new validation type is as a
validation type command.  A validation type is simply an
object that has a [method validate] method; the [method validate]
method must take one argument, a value, return the value if it is
valid, and throw an error with [cmd -errorcode] INVALID if the
value is invalid.  This can be done with a simple [cmd proc].  For
example, the [cmd snit::boolean] validate type could have been
implemented like this:

[example {    proc ::snit::boolean {"validate" value} {
        if {![string is boolean -strict $value]} {
            return -code error -errorcode INVALID \
                "invalid boolean \"$value\", should be one of: 1, 0, ..."
        }

        return $value
    }
}]

2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
        # For example:

        option -min -default "" -readonly 1
        option -max -default "" -readonly 1

        # Next, define a "validate" type method which should do the
        # validation in the basic case.  This will allow the
        # type command to be used as a validation type.  

        typemethod validate {value} {
            if {![string is integer -strict $value]} {
                return -code error -errorcode INVALID \ 
                    "invalid value \"$value\", expected integer"
            }

            return $value
        }

        # Next, the constructor should validate the subtype options,







|



|







2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
        # For example:

        option -min -default "" -readonly 1
        option -max -default "" -readonly 1

        # Next, define a "validate" type method which should do the
        # validation in the basic case.  This will allow the
        # type command to be used as a validation type.

        typemethod validate {value} {
            if {![string is integer -strict $value]} {
                return -code error -errorcode INVALID \
                    "invalid value \"$value\", expected integer"
            }

            return $value
        }

        # Next, the constructor should validate the subtype options,
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775

            if {("" != $options(-min) && $value < $options(-min))  ||
                ("" != $options(-max) && $value > $options(-max))} {
                # It's out of range; format a detailed message about
                # the error, and throw it.

                set msg "...."
                
                return -code error -errorcode INVALID $msg
            }

            # Otherwise, if it's valid just return it.
            return $valid
        }
    }
}]

And now you have a type that can be subtyped.

[para]

The file "validate.tcl" in the Snit distribution defines all of Snit's
validation types; you can find the complete implementation for 
[cmd snit::integer] and the other types there, to use as examples for
your own types.

[para]

[section CAVEATS]

If you have problems, find bugs, or new ideas you are hereby cordially
invited to submit a report of your problem, bug, or idea at the
SourceForge trackers for tcllib, which can be found at

[uri http://sourceforge.net/projects/tcllib/].

The relevant category is [emph snit].

[para]

Additionally, you might wish to join the Snit mailing list;
see [uri http://www.wjduquette.com/snit] for details.

[para]







|














|








|
<
|
<
<
<







2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756

2757



2758
2759
2760
2761
2762
2763
2764

            if {("" != $options(-min) && $value < $options(-min))  ||
                ("" != $options(-max) && $value > $options(-max))} {
                # It's out of range; format a detailed message about
                # the error, and throw it.

                set msg "...."

                return -code error -errorcode INVALID $msg
            }

            # Otherwise, if it's valid just return it.
            return $valid
        }
    }
}]

And now you have a type that can be subtyped.

[para]

The file "validate.tcl" in the Snit distribution defines all of Snit's
validation types; you can find the complete implementation for
[cmd snit::integer] and the other types there, to use as examples for
your own types.

[para]

[section CAVEATS]

If you have problems, find bugs, or new ideas you are hereby cordially
invited to submit a report of your problem, bug, or idea as explained

in the section [sectref {Bugs, Ideas, Feedback}] below.




[para]

Additionally, you might wish to join the Snit mailing list;
see [uri http://www.wjduquette.com/snit] for details.

[para]
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804

Error stack traces returned by Snit 1.x are extremely ugly and typically
contain far too much information about Snit internals.  The error
messages are much improved in Snit 2.2.

[item]

Also see the SourceForge Trackers at
[uri http://sourceforge.net/projects/tcllib/], category [emph snit].

[list_end]


[section HISTORY]

During the course of developing Notebook
(See [uri http://www.wjduquette.com/notebook]), my Tcl-based personal
notebook application, I found I was writing it as a collection of
objects.  I wasn't using any particular object-oriented framework; I







|
|


<







2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785

2786
2787
2788
2789
2790
2791
2792

Error stack traces returned by Snit 1.x are extremely ugly and typically
contain far too much information about Snit internals.  The error
messages are much improved in Snit 2.2.

[item]

Also see the Project Trackers as explained in the section
[sectref {Bugs, Ideas, Feedback}] below.

[list_end]


[section HISTORY]

During the course of developing Notebook
(See [uri http://www.wjduquette.com/notebook]), my Tcl-based personal
notebook application, I found I was writing it as a collection of
objects.  I wasn't using any particular object-oriented framework; I
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
If you have any comments or suggestions (or bug reports!) don't
hesitate to send me e-mail at [uri [email protected]].  In addition,
there's a Snit mailing list; you can find out more about it at the
Snit home page (see [uri http://www.wjduquette.com/snit]).

[para]


[section CREDITS]

Snit has been designed and implemented from the very beginning by
William H. Duquette.  However, much credit belongs to the following
people for using Snit and providing me with valuable feedback: Rolf
Ade, Colin McCormack, Jose Nazario, Jeff Godfrey, Maurice Diamanti,
Egon Pasztor, David S. Cargo, Tom Krehbiel, Michael Cleverly, 
Andreas Kupries, Marty Backe, Andy Goth, Jeff Hobbs, Brian
Griffin, Donal Fellows, Miguel Sofer, Kenneth Green, 
and Anton Kovalenko.  
If I've forgotten anyone, my apologies; let me know and I'll add 
your name to the list.

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph snit] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords class {object oriented} object C++]
[keywords Snit type {Incr Tcl} BWidget]
[keywords widget adaptors {widget adaptors} {mega widget}]
[manpage_end]







<






|

|
|
|


<
|
<
<
|
<
<
<
<
<
<
<
<
<
<

2817
2818
2819
2820
2821
2822
2823

2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836

2837


2838










2839
If you have any comments or suggestions (or bug reports!) don't
hesitate to send me e-mail at [uri [email protected]].  In addition,
there's a Snit mailing list; you can find out more about it at the
Snit home page (see [uri http://www.wjduquette.com/snit]).

[para]


[section CREDITS]

Snit has been designed and implemented from the very beginning by
William H. Duquette.  However, much credit belongs to the following
people for using Snit and providing me with valuable feedback: Rolf
Ade, Colin McCormack, Jose Nazario, Jeff Godfrey, Maurice Diamanti,
Egon Pasztor, David S. Cargo, Tom Krehbiel, Michael Cleverly,
Andreas Kupries, Marty Backe, Andy Goth, Jeff Hobbs, Brian
Griffin, Donal Fellows, Miguel Sofer, Kenneth Green,
and Anton Kovalenko.
If I've forgotten anyone, my apologies; let me know and I'll add
your name to the list.


[vset CATEGORY snit]


[include ../doctools2base/include/feedback.inc]










[manpage_end]

Changes to modules/snit/snitfaq.man.

1
2










3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin snitfaq n 2.2]










[copyright {2003-2006, by William H. Duquette}]
[moddesc {Snit's Not Incr Tcl, OO system}]
[titledesc   {Snit Frequently Asked Questions}]
[category  {Programming tools}]
[description]
[para]

[section OVERVIEW]

[subsection {What is this document?}]

This is an atypical FAQ list, in that few of the questions are
frequently asked.  Rather, these are the questions I think a newcomer
to Snit should be asking.  This file is not a complete reference to
Snit, however; that information is in the [cmd snit] man page.

[subsection {What is Snit?}]

Snit is a framework for defining abstract data types and megawidgets
in pure Tcl.  The name "Snit" stands for "Snit's Not Incr Tcl", 
signifying that Snit takes a different approach to defining objects 
than does Incr Tcl, the best known object framework for Tcl.  Had
I realized that Snit would become at all popular, I'd probably have
chosen something else.

[para]

The primary purpose of Snit is to be [term "object glue"]--to help you
compose diverse objects from diverse sources into types and
megawidgets with clean, convenient interfaces so that you can more
easily build your application.

[para]

Snit isn't about theoretical purity or minimalist design; it's about
being able to do powerful things easily and consistently without
having to think about them--so that you can concentrate on building
your application. 

[para]

Snit isn't about implementing thousands of nearly identical
carefully-specified lightweight thingamajigs--not as individual Snit
objects.  Traditional Tcl methods will be much faster, and not much
more complicated.  But Snit [emph is] about implementing a clean interface
to manage a collection of thousands of nearly identical
carefully-specified lightweight thingamajigs (e.g., think of the text
widget and text tags, or the canvas widget and canvas objects).  Snit
lets you hide the details of just how those thingamajigs are
stored--so that you can ignore it, and concentrate on building your
application. 

[para]

Snit isn't a way of life, a silver bullet, or the Fountain of
Youth. It's just a way of managing complexity--and of managing some of
the complexity of managing complexity--so that you can concentrate on
building your application. 

[subsection {What version of Tcl does Snit require?}]

Snit 1.3 requires Tcl 8.3 or later; Snit 2.2 requires Tcl 8.5 or
later.  See [sectref {SNIT VERSIONS}] for the differences between Snit
1.3 and Snit 2.2.



>
>
>
>
>
>
>
>
>
>



















|
|
















|












|






|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin snitfaq n 2.2]
[keywords adaptors]
[keywords BWidget]
[keywords C++]
[keywords class]
[keywords {Incr Tcl}]
[keywords {mega widget}]
[keywords object]
[keywords {object oriented}]
[keywords widget]
[keywords {widget adaptors}]
[copyright {2003-2006, by William H. Duquette}]
[moddesc {Snit's Not Incr Tcl, OO system}]
[titledesc   {Snit Frequently Asked Questions}]
[category  {Programming tools}]
[description]
[para]

[section OVERVIEW]

[subsection {What is this document?}]

This is an atypical FAQ list, in that few of the questions are
frequently asked.  Rather, these are the questions I think a newcomer
to Snit should be asking.  This file is not a complete reference to
Snit, however; that information is in the [cmd snit] man page.

[subsection {What is Snit?}]

Snit is a framework for defining abstract data types and megawidgets
in pure Tcl.  The name "Snit" stands for "Snit's Not Incr Tcl",
signifying that Snit takes a different approach to defining objects
than does Incr Tcl, the best known object framework for Tcl.  Had
I realized that Snit would become at all popular, I'd probably have
chosen something else.

[para]

The primary purpose of Snit is to be [term "object glue"]--to help you
compose diverse objects from diverse sources into types and
megawidgets with clean, convenient interfaces so that you can more
easily build your application.

[para]

Snit isn't about theoretical purity or minimalist design; it's about
being able to do powerful things easily and consistently without
having to think about them--so that you can concentrate on building
your application.

[para]

Snit isn't about implementing thousands of nearly identical
carefully-specified lightweight thingamajigs--not as individual Snit
objects.  Traditional Tcl methods will be much faster, and not much
more complicated.  But Snit [emph is] about implementing a clean interface
to manage a collection of thousands of nearly identical
carefully-specified lightweight thingamajigs (e.g., think of the text
widget and text tags, or the canvas widget and canvas objects).  Snit
lets you hide the details of just how those thingamajigs are
stored--so that you can ignore it, and concentrate on building your
application.

[para]

Snit isn't a way of life, a silver bullet, or the Fountain of
Youth. It's just a way of managing complexity--and of managing some of
the complexity of managing complexity--so that you can concentrate on
building your application.

[subsection {What version of Tcl does Snit require?}]

Snit 1.3 requires Tcl 8.3 or later; Snit 2.2 requires Tcl 8.5 or
later.  See [sectref {SNIT VERSIONS}] for the differences between Snit
1.3 and Snit 2.2.

117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
object was implemented.  I designed Snit to help me build applications
out of the materials at hand; thus, Snit is designed to be able to
incorporate and build on any object, whether it's a hand-coded object,
a Tk widget, an Incr Tcl object, a BWidget or almost anything else.

[para]

Note that you can achieve the effect of inheritance using 
[sectref COMPONENTS] and [sectref "DELEGATION"]--and you can inherit
from anything that looks like a Tcl object.

[subsection {What can I do with Snit?}]

Using Snit, a programmer can:








|







127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
object was implemented.  I designed Snit to help me build applications
out of the materials at hand; thus, Snit is designed to be able to
incorporate and build on any object, whether it's a hand-coded object,
a Tk widget, an Incr Tcl object, a BWidget or almost anything else.

[para]

Note that you can achieve the effect of inheritance using
[sectref COMPONENTS] and [sectref "DELEGATION"]--and you can inherit
from anything that looks like a Tcl object.

[subsection {What can I do with Snit?}]

Using Snit, a programmer can:

203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
the version of Tcl being used.  In this case, be careful to avoid
using any incompatible features.

[subsection {How are Snit 1.3 and Snit 2.2 incompatible?}]

To the extent possible, Snit 2.2 is intended to be a drop-in
replacement for Snit 1.3. Unfortunately, some incompatibilities were
inevitable because Snit 2.2 uses Tcl 8.5's new 
[cmd "namespace ensemble"] mechanism to implement subcommand dispatch.
This approach is much faster than the mechanism used in Snit 1.3, and
also results in much better error messages; however, it also places
new constraints on the implementation.

[para]








|







213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
the version of Tcl being used.  In this case, be careful to avoid
using any incompatible features.

[subsection {How are Snit 1.3 and Snit 2.2 incompatible?}]

To the extent possible, Snit 2.2 is intended to be a drop-in
replacement for Snit 1.3. Unfortunately, some incompatibilities were
inevitable because Snit 2.2 uses Tcl 8.5's new
[cmd "namespace ensemble"] mechanism to implement subcommand dispatch.
This approach is much faster than the mechanism used in Snit 1.3, and
also results in much better error messages; however, it also places
new constraints on the implementation.

[para]

229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
[example {dog spot               ;# Explicit naming
set obj1 [dog %AUTO%]  ;# Automatic naming
set obj2 [dog]         ;# Implicit naming
}]

In Snit 2.2, type commands are defined using the [cmd "namespace ensemble"]
mechanism; and [cmd "namespace ensemble"] doesn't allow an ensemble command
to be called without a subcommand.  In short, using 
[cmd "namespace ensemble"] there's no way to support implicit naming.

[para]

All is not lost, however.  If the type has no type methods, then the
type command is a simple command rather than an ensemble, and 
[cmd "namespace ensemble"] is not used.  In this case, implicit naming
is still possible.

[para]

In short, you can have implicit naming if you're willing to do without
type methods (including the standard type methods, like 
[cmd "\$type info"]).  To do so, use the [const -hastypemethods] pragma:

[example {pragma -hastypemethods 0}]

[item]
Hierarchical methods and type methods are implemented differently in
Snit 2.2.  

[para]

A hierarchical method is an instance method which has
subcommands; these subcommands are themselves methods.  The Tk text
widget's [cmd tag] command and its subcommands are examples of 
hierarchical methods.  You can implement such subcommands in Snit
simply by including multiple words in the method names:

[example {method {tag configure} {tag args} { ... }

method {tag cget} {tag option} {...}
}]







|





|






|






|





|







239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
[example {dog spot               ;# Explicit naming
set obj1 [dog %AUTO%]  ;# Automatic naming
set obj2 [dog]         ;# Implicit naming
}]

In Snit 2.2, type commands are defined using the [cmd "namespace ensemble"]
mechanism; and [cmd "namespace ensemble"] doesn't allow an ensemble command
to be called without a subcommand.  In short, using
[cmd "namespace ensemble"] there's no way to support implicit naming.

[para]

All is not lost, however.  If the type has no type methods, then the
type command is a simple command rather than an ensemble, and
[cmd "namespace ensemble"] is not used.  In this case, implicit naming
is still possible.

[para]

In short, you can have implicit naming if you're willing to do without
type methods (including the standard type methods, like
[cmd "\$type info"]).  To do so, use the [const -hastypemethods] pragma:

[example {pragma -hastypemethods 0}]

[item]
Hierarchical methods and type methods are implemented differently in
Snit 2.2.

[para]

A hierarchical method is an instance method which has
subcommands; these subcommands are themselves methods.  The Tk text
widget's [cmd tag] command and its subcommands are examples of
hierarchical methods.  You can implement such subcommands in Snit
simply by including multiple words in the method names:

[example {method {tag configure} {tag args} { ... }

method {tag cget} {tag option} {...}
}]
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
In Snit 2.2 this is no longer the case, and the "weird" way of calling
hierarchical methods and type methods no longer works.

[item]
The third incompatibility derives from the second.  In Snit 1.3,
hierarchical methods were also simply methods whose name contains
multiple words.  As a result, [cmd "\$obj info methods"] returned the
full names of all hierarchical methods.  In the example above, 
the list returned by [cmd "\$obj info methods"] would include
[cmd "tag configure"] and [cmd "tag cget"] but not [cmd "tag"], since
[cmd "tag"] is defined only implicitly.

[para]

In Snit 2.2, hierarchical methods and type methods are no longer
simply ones whose
name contains multiple words; in the above example, the list returned
by [cmd "\$obj info methods"] would include [cmd "tag"] but not
[cmd "tag configure"] or [cmd "tag cget"].


[item]
The fourth incompatibility is due to a new feature.  Snit 2.2 uses
the new [cmd "namespace path"] command so that a type's code can 
call any command defined in the type's parent namespace without
qualification or importation.  For example, suppose you have a 
package called [cmd "mypackage"] which defines a number of commands
including a type, [cmd "::mypackage::mytype"].  Thanks to 
[cmd "namespace path"], the type's code can call any of the other
commands defined in [cmd "::mypackage::"].

[para]

This is extremely convenient.  However, it also means that commands
defined in the parent namespace, [cmd "::mypackage::"] can block the
type's access to identically named commands in the global namespace.
This can lead to bugs.  For example, Tcllib includes a type called
[cmd "::tie::std::file"].  This type's code calls the standard
[cmd "file"] command.  When run with Snit 2.2, the code broke--
the type's command, [cmd "::tie::std::file"], is itself a command
in the type's parent namespace, and so instead of calling 
the standard [cmd "file"] command, the type found itself calling
itself.

[list_end]

[subsection {Are there other differences between Snit 1.x and Snit 2.2?}]

Yes.

[list_begin itemized]
[item]
Method dispatch is considerably faster.

[item]
Many error messages and stack traces are cleaner.

[item]
The [const -simpledispatch] pragma is obsolete, and ignored if
present. In Snit 1.x, [const -simpledispatch] substitutes a faster
mechanism for method dispatch, at the cost of losing certain features.
Snit 2.2 method dispatch is faster still in all cases, so 
[const -simpledispatch] is no longer needed.

[item]

In Snit 2.2, a type's code (methods, type methods, etc.) can call commands
from the type's parent namespace without qualifying or importing
them, i.e., type [cmd ::parentns::mytype]'s code can call







|












<


|

|

|












|




















|







297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316

317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
In Snit 2.2 this is no longer the case, and the "weird" way of calling
hierarchical methods and type methods no longer works.

[item]
The third incompatibility derives from the second.  In Snit 1.3,
hierarchical methods were also simply methods whose name contains
multiple words.  As a result, [cmd "\$obj info methods"] returned the
full names of all hierarchical methods.  In the example above,
the list returned by [cmd "\$obj info methods"] would include
[cmd "tag configure"] and [cmd "tag cget"] but not [cmd "tag"], since
[cmd "tag"] is defined only implicitly.

[para]

In Snit 2.2, hierarchical methods and type methods are no longer
simply ones whose
name contains multiple words; in the above example, the list returned
by [cmd "\$obj info methods"] would include [cmd "tag"] but not
[cmd "tag configure"] or [cmd "tag cget"].


[item]
The fourth incompatibility is due to a new feature.  Snit 2.2 uses
the new [cmd "namespace path"] command so that a type's code can
call any command defined in the type's parent namespace without
qualification or importation.  For example, suppose you have a
package called [cmd "mypackage"] which defines a number of commands
including a type, [cmd "::mypackage::mytype"].  Thanks to
[cmd "namespace path"], the type's code can call any of the other
commands defined in [cmd "::mypackage::"].

[para]

This is extremely convenient.  However, it also means that commands
defined in the parent namespace, [cmd "::mypackage::"] can block the
type's access to identically named commands in the global namespace.
This can lead to bugs.  For example, Tcllib includes a type called
[cmd "::tie::std::file"].  This type's code calls the standard
[cmd "file"] command.  When run with Snit 2.2, the code broke--
the type's command, [cmd "::tie::std::file"], is itself a command
in the type's parent namespace, and so instead of calling
the standard [cmd "file"] command, the type found itself calling
itself.

[list_end]

[subsection {Are there other differences between Snit 1.x and Snit 2.2?}]

Yes.

[list_begin itemized]
[item]
Method dispatch is considerably faster.

[item]
Many error messages and stack traces are cleaner.

[item]
The [const -simpledispatch] pragma is obsolete, and ignored if
present. In Snit 1.x, [const -simpledispatch] substitutes a faster
mechanism for method dispatch, at the cost of losing certain features.
Snit 2.2 method dispatch is faster still in all cases, so
[const -simpledispatch] is no longer needed.

[item]

In Snit 2.2, a type's code (methods, type methods, etc.) can call commands
from the type's parent namespace without qualifying or importing
them, i.e., type [cmd ::parentns::mytype]'s code can call
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414

in a type constructor.  This is less useful, however, as it picks up
only those commands which have already been exported by the parent
namespace at the time the type is defined.

[list_end]


[section OBJECTS]

[subsection {What is an object?}]

A full description of object-oriented programming is beyond
the scope of this FAQ, obviously.  In simple terms, an object is an instance of
an abstract data type--a coherent bundle of code and data.
There are many ways to represent objects in Tcl/Tk; the best known
examples are the Tk widgets.

[para]

A Tk widget is an object; it is represented by a Tcl command.  
The object's methods are subcommands of the Tcl command.  The object's
properties are options accessed using the [method configure] and 
[method cget] methods.  Snit uses the same conventions as Tk widgets do.

[subsection {What is an abstract data type?}]

In computer science terms, an abstract data type is a complex data
structure along with a set of operations--a stack, a queue, a
binary tree, etc--that is to say, in modern terms, an object.  In systems
that include some form of inheritance the word [term class] is
usually used instead of [term {abstract data type}], but as Snit
doesn't implement inheritance as it's ordinarily understood
the older term seems more appropriate.  Sometimes this is called 
[term {object-based}] programming as opposed to object-oriented
programming.  Note that you can easily create the effect of 
inheritance using [sectref COMPONENTS] and [sectref "DELEGATION"].

[para]

In Snit, as in Tk, a [term type] is a command that creates instances
-- objects -- which belong to the type.  Most types define some number
of [term options] which can be set at creation time, and usually can be







<












|

|










|

|







381
382
383
384
385
386
387

388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422

in a type constructor.  This is less useful, however, as it picks up
only those commands which have already been exported by the parent
namespace at the time the type is defined.

[list_end]


[section OBJECTS]

[subsection {What is an object?}]

A full description of object-oriented programming is beyond
the scope of this FAQ, obviously.  In simple terms, an object is an instance of
an abstract data type--a coherent bundle of code and data.
There are many ways to represent objects in Tcl/Tk; the best known
examples are the Tk widgets.

[para]

A Tk widget is an object; it is represented by a Tcl command.
The object's methods are subcommands of the Tcl command.  The object's
properties are options accessed using the [method configure] and
[method cget] methods.  Snit uses the same conventions as Tk widgets do.

[subsection {What is an abstract data type?}]

In computer science terms, an abstract data type is a complex data
structure along with a set of operations--a stack, a queue, a
binary tree, etc--that is to say, in modern terms, an object.  In systems
that include some form of inheritance the word [term class] is
usually used instead of [term {abstract data type}], but as Snit
doesn't implement inheritance as it's ordinarily understood
the older term seems more appropriate.  Sometimes this is called
[term {object-based}] programming as opposed to object-oriented
programming.  Note that you can easily create the effect of
inheritance using [sectref COMPONENTS] and [sectref "DELEGATION"].

[para]

In Snit, as in Tk, a [term type] is a command that creates instances
-- objects -- which belong to the type.  Most types define some number
of [term options] which can be set at creation time, and usually can be
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
[para]

In this example, [cmd text] is the [term type] command and
[cmd .mytext] is the [term instance] command.

[para]

In Snit, object subcommands are generally called 
[sectref "INSTANCE METHODS"].

[subsection {What kinds of abstract data types does Snit provide?}]

Snit allows you to define three kinds of abstract data type:

[para]

[list_begin itemized]
[item]

[cmd snit::type]
[item]

[cmd snit::widget]
[item]

[cmd snit::widgetadaptor]
[list_end]


[subsection {What is a snit::type?}]

A [cmd snit::type] is a non-GUI abstract data type, e.g., a stack or a
queue.  [cmd snit::type]s are defined using the [cmd snit::type]
command.  For example, if you were designing a kennel management
system for a dog breeder, you'd need a dog type.







|



















<







439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465

466
467
468
469
470
471
472
[para]

In this example, [cmd text] is the [term type] command and
[cmd .mytext] is the [term instance] command.

[para]

In Snit, object subcommands are generally called
[sectref "INSTANCE METHODS"].

[subsection {What kinds of abstract data types does Snit provide?}]

Snit allows you to define three kinds of abstract data type:

[para]

[list_begin itemized]
[item]

[cmd snit::type]
[item]

[cmd snit::widget]
[item]

[cmd snit::widgetadaptor]
[list_end]


[subsection {What is a snit::type?}]

A [cmd snit::type] is a non-GUI abstract data type, e.g., a stack or a
queue.  [cmd snit::type]s are defined using the [cmd snit::type]
command.  For example, if you were designing a kennel management
system for a dog breeder, you'd need a dog type.
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
that can be used to define dog objects.

[para]

An instance of a [cmd snit::type] can have [sectref {INSTANCE METHODS}],
[sectref {INSTANCE VARIABLES}], [sectref OPTIONS], and [sectref COMPONENTS].
The type itself can have [sectref {TYPE METHODS}],
[sectref {TYPE VARIABLES}], [sectref {TYPE COMPONENTS}], and 
[sectref PROCS]. 


[subsection {What is a snit::widget?, the short story}]

A [cmd snit::widget] is a Tk megawidget built using Snit; it is very
similar to a [cmd snit::type].  See [sectref WIDGETS].


[subsection {What is a snit::widgetadaptor?, the short story}]

A [cmd snit::widgetadaptor] uses Snit to wrap an existing widget type
(e.g., a Tk label), modifying its interface to a lesser or greater
extent.  It is very similar to a [cmd snit::widget].
See [sectref {WIDGET ADAPTORS}].


[subsection {How do I create an instance of a snit::type?}]

You create an instance of a [cmd snit::type] by passing the new
instance's name to the type's create method.  In the following
example, we create a [cmd dog] object called [cmd spot].

[para]
[example {% snit::type dog {
    # ....
}
::dog
% dog create spot
::spot
%
}]
[para]

In general, the [method create] method name can be omitted so long as
the instance name doesn't conflict with any defined 
[sectref {TYPE METHODS}]. (See [sectref {TYPE COMPONENTS}] for the
special case in which this doesn't work.)
So the following example is identical to the
previous example:

[para]
[example {% snit::type dog {
    # ....
}
::dog
% dog spot
::spot
%
}]
[para]

This document generally uses the shorter form.

[para]

If the [cmd dog] type defines [sectref OPTIONS], these can usually be 
given defaults at creation time:

[para]
[example {% snit::type dog {
    option -breed mongrel
    option -color brown








|
|
<





<







<



















|




















|







484
485
486
487
488
489
490
491
492

493
494
495
496
497

498
499
500
501
502
503
504

505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
that can be used to define dog objects.

[para]

An instance of a [cmd snit::type] can have [sectref {INSTANCE METHODS}],
[sectref {INSTANCE VARIABLES}], [sectref OPTIONS], and [sectref COMPONENTS].
The type itself can have [sectref {TYPE METHODS}],
[sectref {TYPE VARIABLES}], [sectref {TYPE COMPONENTS}], and
[sectref PROCS].


[subsection {What is a snit::widget?, the short story}]

A [cmd snit::widget] is a Tk megawidget built using Snit; it is very
similar to a [cmd snit::type].  See [sectref WIDGETS].


[subsection {What is a snit::widgetadaptor?, the short story}]

A [cmd snit::widgetadaptor] uses Snit to wrap an existing widget type
(e.g., a Tk label), modifying its interface to a lesser or greater
extent.  It is very similar to a [cmd snit::widget].
See [sectref {WIDGET ADAPTORS}].


[subsection {How do I create an instance of a snit::type?}]

You create an instance of a [cmd snit::type] by passing the new
instance's name to the type's create method.  In the following
example, we create a [cmd dog] object called [cmd spot].

[para]
[example {% snit::type dog {
    # ....
}
::dog
% dog create spot
::spot
%
}]
[para]

In general, the [method create] method name can be omitted so long as
the instance name doesn't conflict with any defined
[sectref {TYPE METHODS}]. (See [sectref {TYPE COMPONENTS}] for the
special case in which this doesn't work.)
So the following example is identical to the
previous example:

[para]
[example {% snit::type dog {
    # ....
}
::dog
% dog spot
::spot
%
}]
[para]

This document generally uses the shorter form.

[para]

If the [cmd dog] type defines [sectref OPTIONS], these can usually be
given defaults at creation time:

[para]
[example {% snit::type dog {
    option -breed mongrel
    option -color brown

614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
::obj_dog4
% $d bark
::obj_dog4 barks.
%
}]
[para]


[subsection {Can types be renamed?}]

Tcl's [cmd rename] command renames other commands.  It's a common
technique in Tcl to modify an existing command by renaming it and
defining a new command with the original name; the new command usually
calls the renamed command.








<







618
619
620
621
622
623
624

625
626
627
628
629
630
631
::obj_dog4
% $d bark
::obj_dog4 barks.
%
}]
[para]


[subsection {Can types be renamed?}]

Tcl's [cmd rename] command renames other commands.  It's a common
technique in Tcl to modify an existing command by renaming it and
defining a new command with the original name; the new command usually
calls the renamed command.

651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
In an instance method, the implicit argument [var self] will always
contain the object's current name, so instance methods can always call
other instance methods using [var \$self].

[item]

If the object is renamed, however, then [var \$self]'s value will change.
Therefore, don't use [var \$self] for anything that will break if 
[var \$self] changes. For example, don't pass a callback command to
another object like this:

[example {
    .btn configure -command [list $self ButtonPress]
}]








|







654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
In an instance method, the implicit argument [var self] will always
contain the object's current name, so instance methods can always call
other instance methods using [var \$self].

[item]

If the object is renamed, however, then [var \$self]'s value will change.
Therefore, don't use [var \$self] for anything that will break if
[var \$self] changes. For example, don't pass a callback command to
another object like this:

[example {
    .btn configure -command [list $self ButtonPress]
}]

679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
arguments to the end of the command as usual.

[item]

Every object has a private namespace; the name of this namespace is
available in method bodies, etc., as the value of the implicit
argument [var selfns].  This value is constant for the life of the
object.  Use [var \$selfns] instead of [var \$self] if you need a 
unique token to identify the object.

[item]

When a [cmd snit::widget]'s instance command is renamed, its Tk window
name remains the same -- and is still extremely
important. Consequently, the Tk window name is available in 
method bodies as the value of the implicit argument [var win].  
This value is constant for the
life of the object.  When creating child windows, it's best to use
[var {$win.child}] rather than [var {$self.child}] as the name of the
child window.

[list_end]








|






|
|







682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
arguments to the end of the command as usual.

[item]

Every object has a private namespace; the name of this namespace is
available in method bodies, etc., as the value of the implicit
argument [var selfns].  This value is constant for the life of the
object.  Use [var \$selfns] instead of [var \$self] if you need a
unique token to identify the object.

[item]

When a [cmd snit::widget]'s instance command is renamed, its Tk window
name remains the same -- and is still extremely
important. Consequently, the Tk window name is available in
method bodies as the value of the implicit argument [var win].
This value is constant for the
life of the object.  When creating child windows, it's best to use
[var {$win.child}] rather than [var {$self.child}] as the name of the
child window.

[list_end]

834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
}]
[para]

[subsection {Are there any limitations on instance method names?}]

Not really, so long as you avoid the standard instance method names:
[method configure], [method configurelist], [method cget],
[method destroy], and [method info].  Also, method names consisting of 
multiple words define hierarchical methods.

[subsection {What is a hierarchical method?}]

An object's methods are subcommands of the object's instance command.
Hierarchical methods allow an object's methods to have subcommands of
their own; and these can in turn have subcommands, and so on.  This
allows the programmer to define a tree-shaped command structure, such
as is used by many of the Tk widgets--the subcommands of the 
Tk [cmd text] widget's [cmd tag] method are hierarchical methods.

[subsection {How do I define a hierarchical method?}]

Define methods whose names consist of multiple words.  These words
define the hierarchy implicitly.  For example, the following code
defines a [cmd tag] method with subcommands [cmd cget] and 
[cmd configure]:

[example {snit::widget mytext {
    method {tag configure} {tag args} { ... }

    method {tag cget} {tag option} {...}
}







|








|






|







837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
}]
[para]

[subsection {Are there any limitations on instance method names?}]

Not really, so long as you avoid the standard instance method names:
[method configure], [method configurelist], [method cget],
[method destroy], and [method info].  Also, method names consisting of
multiple words define hierarchical methods.

[subsection {What is a hierarchical method?}]

An object's methods are subcommands of the object's instance command.
Hierarchical methods allow an object's methods to have subcommands of
their own; and these can in turn have subcommands, and so on.  This
allows the programmer to define a tree-shaped command structure, such
as is used by many of the Tk widgets--the subcommands of the
Tk [cmd text] widget's [cmd tag] method are hierarchical methods.

[subsection {How do I define a hierarchical method?}]

Define methods whose names consist of multiple words.  These words
define the hierarchy implicitly.  For example, the following code
defines a [cmd tag] method with subcommands [cmd cget] and
[cmd configure]:

[example {snit::widget mytext {
    method {tag configure} {tag args} { ... }

    method {tag cget} {tag option} {...}
}
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
The above example reveals how Snit names an instance's private
namespace; however, you should not write code that depends on the
specific naming convention, as it might change in future releases.

[subsection {What is $win?}]

The implicit argument [var win] is defined for all Snit methods,
though it really makes sense only for those of 
[sectref WIDGETS] and [sectref {WIDGET ADAPTORS}].  [var \$win] is simply
the original name of the object, whether it's been renamed or not.
For widgets and widgetadaptors, it is also therefore the name of a Tk
window.

[para]








|







1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
The above example reveals how Snit names an instance's private
namespace; however, you should not write code that depends on the
specific naming convention, as it might change in future releases.

[subsection {What is $win?}]

The implicit argument [var win] is defined for all Snit methods,
though it really makes sense only for those of
[sectref WIDGETS] and [sectref {WIDGET ADAPTORS}].  [var \$win] is simply
the original name of the object, whether it's been renamed or not.
For widgets and widgetadaptors, it is also therefore the name of a Tk
window.

[para]

1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
[subsection {How do I pass an instance method as a callback?}]

It depends on the context.

[para]

Suppose in my application I have a [cmd dog] object named [cmd fido],
and I want [cmd fido] to bark when a Tk button called [cmd .bark] is 
pressed.  In this case, I create the callback command in the usual
way, using [cmd list]:

[para]
[example {    button .bark -text "Bark!" -command [list fido bark]
}]
[para]







|







1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
[subsection {How do I pass an instance method as a callback?}]

It depends on the context.

[para]

Suppose in my application I have a [cmd dog] object named [cmd fido],
and I want [cmd fido] to bark when a Tk button called [cmd .bark] is
pressed.  In this case, I create the callback command in the usual
way, using [cmd list]:

[para]
[example {    button .bark -text "Bark!" -command [list fido bark]
}]
[para]
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
::dog
%
}]
[para]

The command [cmd mymethod] takes any number of arguments, and can be
used like [cmd list] to build up a callback command; the only
difference is that [cmd mymethod] returns a 
form of the command that won't change even if the instance's name
changes.

[para]

On the other hand, you might prefer to allow a widgetadaptor to 
override a method such that your renamed widget will call the
widgetadaptor's method instead of its own.  In this case, 
using [cmd "\[list \$self bark\]"] will do what you want...but
this is a technique which should be used only in carefully controlled
circumstances.

[subsection {How do I delegate instance methods to a component?}]

See [sectref DELEGATION].

[section {INSTANCE VARIABLES}]


[subsection {What is an instance variable?}]

An instance variable is a private variable associated with some
particular Snit object.  Instance variables can be scalars or arrays.


[subsection {How is a scalar instance variable defined?}]

Scalar instance variables are defined in the type definition using the
[cmd variable] statement.  You can simply name it, or you can
initialize it with a value:








|





|

|










<




<







1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133

1134
1135
1136
1137

1138
1139
1140
1141
1142
1143
1144
::dog
%
}]
[para]

The command [cmd mymethod] takes any number of arguments, and can be
used like [cmd list] to build up a callback command; the only
difference is that [cmd mymethod] returns a
form of the command that won't change even if the instance's name
changes.

[para]

On the other hand, you might prefer to allow a widgetadaptor to
override a method such that your renamed widget will call the
widgetadaptor's method instead of its own.  In this case,
using [cmd "\[list \$self bark\]"] will do what you want...but
this is a technique which should be used only in carefully controlled
circumstances.

[subsection {How do I delegate instance methods to a component?}]

See [sectref DELEGATION].

[section {INSTANCE VARIABLES}]


[subsection {What is an instance variable?}]

An instance variable is a private variable associated with some
particular Snit object.  Instance variables can be scalars or arrays.


[subsection {How is a scalar instance variable defined?}]

Scalar instance variables are defined in the type definition using the
[cmd variable] statement.  You can simply name it, or you can
initialize it with a value:

1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
    }
}
}]
[para]

[subsection {What happens if I don't initialize an instance variable?}]

Variables do not really exist until they are given values.  If you 
do not initialize a variable when you define it, then you must be
sure to assign a value to it (in the constructor, say, or in some
method) before you reference it.

[subsection {Are there any limitations on instance variable names?}]

Just a few.







|







1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
    }
}
}]
[para]

[subsection {What happens if I don't initialize an instance variable?}]

Variables do not really exist until they are given values.  If you
do not initialize a variable when you define it, then you must be
sure to assign a value to it (in the constructor, say, or in some
method) before you reference it.

[subsection {Are there any limitations on instance variable names?}]

Just a few.
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
use by Snit internal code.

[para]

Third, instance variable names containing the namespace delimiter
([const ::]) are likely to cause great confusion.


[subsection {Do I need to declare my instance variables in my methods?}]

No. Once you've defined an instance variable in the type definition,
it can be used in any instance code (instance methods, the
constructor, and the destructor) without declaration.  This differs
from normal Tcl practice, in which all non-local variables in a proc
need to be declared.

[para]

There is a speed penalty to having all instance variables implicitly
available in all instance code.  Even though your code need not 
declare the variables explicitly, Snit must still declare them,
and that takes time.  If you have ten instance variables, a method
that uses none of them must still pay the declaration penalty for 
all ten.  In most cases, the additional runtime cost is negligible.
If extreme cases, you might wish to avoid it; there are two methods
for doing so.

[para]

The first is to define a single instance variable, an array, and store







<











|


|







1189
1190
1191
1192
1193
1194
1195

1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
use by Snit internal code.

[para]

Third, instance variable names containing the namespace delimiter
([const ::]) are likely to cause great confusion.


[subsection {Do I need to declare my instance variables in my methods?}]

No. Once you've defined an instance variable in the type definition,
it can be used in any instance code (instance methods, the
constructor, and the destructor) without declaration.  This differs
from normal Tcl practice, in which all non-local variables in a proc
need to be declared.

[para]

There is a speed penalty to having all instance variables implicitly
available in all instance code.  Even though your code need not
declare the variables explicitly, Snit must still declare them,
and that takes time.  If you have ten instance variables, a method
that uses none of them must still pay the declaration penalty for
all ten.  In most cases, the additional runtime cost is negligible.
If extreme cases, you might wish to avoid it; there are two methods
for doing so.

[para]

The first is to define a single instance variable, an array, and store
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278

If you naively pass the instance variable name to the label widget,
you'll be confused by the result; Tk will assume that the name names a
global variable.  Instead, you need to provide a fully-qualified
variable name.  From within an instance method or a constructor, you
can fully qualify the variable's name using the [cmd myvar] command:

[para] 
[example {snit::widget mywidget {
    variable labeltext ""

    constructor {args} {
        # ...

        label $win.label -textvariable [myvar labeltext]







|







1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278

If you naively pass the instance variable name to the label widget,
you'll be confused by the result; Tk will assume that the name names a
global variable.  Instead, you need to provide a fully-qualified
variable name.  From within an instance method or a constructor, you
can fully qualify the variable's name using the [cmd myvar] command:

[para]
[example {snit::widget mywidget {
    variable labeltext ""

    constructor {args} {
        # ...

        label $win.label -textvariable [myvar labeltext]
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
languages would call public member variables or properties: they are
data values which can be retrieved and (usually) set by the clients of
an object.

[para]

Snit's implementation of options follows the Tk model fairly exactly,
except that [cmd snit::type] objects usually don't interact with 
[sectref "THE TK OPTION DATABASE"]; [cmd snit::widget] and 
[cmd snit::widgetadaptor] objects, on the other hand, always do.

[subsection {How do I define an option?}]

Options are defined in the type definition using the [cmd option]
statement.  Consider the following type, to be used in an application
that manages a list of dogs for a pet store:

[para]
[example {snit::type dog {
    option -breed -default mongrel
    option -color -default brown
    option -akc   -default 0
    option -shots -default 0
}
}]
[para]


According to this, a dog has four notable properties: a
breed, a color, a flag that says whether it's pedigreed with the
American Kennel Club, and another flag that says whether it has had
its shots.  The default dog, evidently, is a brown mutt.

[para]

There are a number of options you can specify when defining an option;
if [const -default] is the only one, you can omit the word 
[const -default] as follows:

[para]
[example {snit::type dog {
    option -breed mongrel
    option -color brown
    option -akc   0







|
|


















<








|







1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325

1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
languages would call public member variables or properties: they are
data values which can be retrieved and (usually) set by the clients of
an object.

[para]

Snit's implementation of options follows the Tk model fairly exactly,
except that [cmd snit::type] objects usually don't interact with
[sectref "THE TK OPTION DATABASE"]; [cmd snit::widget] and
[cmd snit::widgetadaptor] objects, on the other hand, always do.

[subsection {How do I define an option?}]

Options are defined in the type definition using the [cmd option]
statement.  Consider the following type, to be used in an application
that manages a list of dogs for a pet store:

[para]
[example {snit::type dog {
    option -breed -default mongrel
    option -color -default brown
    option -akc   -default 0
    option -shots -default 0
}
}]
[para]


According to this, a dog has four notable properties: a
breed, a color, a flag that says whether it's pedigreed with the
American Kennel Club, and another flag that says whether it has had
its shots.  The default dog, evidently, is a brown mutt.

[para]

There are a number of options you can specify when defining an option;
if [const -default] is the only one, you can omit the word
[const -default] as follows:

[para]
[example {snit::type dog {
    option -breed mongrel
    option -color brown
    option -akc   0
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
}]
[para]

[subsection {How can a client set options after object creation?}]

Any number of options may be set at one time using the
[method configure] instance method.  Suppose that closer inspection
shows that ::fido is not a brown mongrel, but rather a rare Arctic Boar 
Hound of a lovely dun color:

[para]
[example {% fido configure -color dun -breed "Arctic Boar Hound"
% fido cget -color
dun
% fido cget -breed







|







1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
}]
[para]

[subsection {How can a client set options after object creation?}]

Any number of options may be set at one time using the
[method configure] instance method.  Suppose that closer inspection
shows that ::fido is not a brown mongrel, but rather a rare Arctic Boar
Hound of a lovely dun color:

[para]
[example {% fido configure -color dun -breed "Arctic Boar Hound"
% fido cget -color
dun
% fido cget -breed
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
dun
% fido cget -breed
Arctic Boar Hound
%
}]
[para]

In Tcl 8.5, the [cmd {*}] keyword can be used with 
[method configure] in this case:

[para]
[example {% set features [list -color dun -breed "Arctic Boar Hound"]
-color dun -breed {Arctic Boar Hound}
% fido configure {*}$features
% fido cget -color







|







1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
dun
% fido cget -breed
Arctic Boar Hound
%
}]
[para]

In Tcl 8.5, the [cmd {*}] keyword can be used with
[method configure] in this case:

[para]
[example {% set features [list -color dun -breed "Arctic Boar Hound"]
-color dun -breed {Arctic Boar Hound}
% fido configure {*}$features
% fido cget -color
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
    method gainWeight {} {
        incr options(-weight)
    }
}]
[para]

As you can see, using the [var options] variable involves considerably
less typing and is the usual way to do it.  But if you use 
[const -configuremethod] or [const -cgetmethod] (described in the following
answers), you might wish to use the [method configure] and 
[method cget] methods anyway, just so that any special processing you've
implemented is sure to get done.  Also, if the option is delegated to
a component then [method configure] and [method cget] are the only way
to access it without accessing the component directly.  See 
[sectref "DELEGATION"] for more information.

[subsection {How can I make an option read-only?}]

Define the option with [const "-readonly yes"].

[para]







|

|



|







1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
    method gainWeight {} {
        incr options(-weight)
    }
}]
[para]

As you can see, using the [var options] variable involves considerably
less typing and is the usual way to do it.  But if you use
[const -configuremethod] or [const -cgetmethod] (described in the following
answers), you might wish to use the [method configure] and
[method cget] methods anyway, just so that any special processing you've
implemented is sure to get done.  Also, if the option is delegated to
a component then [method configure] and [method cget] are the only way
to access it without accessing the component directly.  See
[sectref "DELEGATION"] for more information.

[subsection {How can I make an option read-only?}]

Define the option with [const "-readonly yes"].

[para]
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
[subsection {How can I catch accesses to an option's value?}]

Define a [const -cgetmethod] for the option.

[subsection {What is a -cgetmethod?}]

A [const -cgetmethod] is a method that's called whenever the related
option's value is queried via the 
[method cget] instance method.  The handler can compute the option's
value, retrieve it from a database, or do anything else you'd like it to do.

[para]

Here's what the default behavior would look like if
written using a [const -cgetmethod]:







|







1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
[subsection {How can I catch accesses to an option's value?}]

Define a [const -cgetmethod] for the option.

[subsection {What is a -cgetmethod?}]

A [const -cgetmethod] is a method that's called whenever the related
option's value is queried via the
[method cget] instance method.  The handler can compute the option's
value, retrieve it from a database, or do anything else you'd like it to do.

[para]

Here's what the default behavior would look like if
written using a [const -cgetmethod]:
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567

Define a [const -configuremethod] for the option.

[subsection {What is a -configuremethod?}]

A [const -configuremethod] is a method that's called whenever the
related option is given a new value via the [method configure] or
[method configurelist] instance methods. The method can 
pass the value on to some other object, store it in a database, or do
anything else you'd like it to do.

[para]

Here's what the default configuration behavior would look like if
written using a [const -configuremethod]:







|







1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566

Define a [const -configuremethod] for the option.

[subsection {What is a -configuremethod?}]

A [const -configuremethod] is a method that's called whenever the
related option is given a new value via the [method configure] or
[method configurelist] instance methods. The method can
pass the value on to some other object, store it in a database, or do
anything else you'd like it to do.

[para]

Here's what the default configuration behavior would look like if
written using a [const -configuremethod]:
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
of boolean options.

[para]

Any method can be a [const -validatemethod] provided that it takes
two arguments, the option name and the new option value.


[section {TYPE VARIABLES}]

[subsection {What is a type variable?}]

A type variable is a private variable associated with a Snit type
rather than with a particular instance of the type.  In C++ and Java,
the term [term "static member variable"] is used for the same notion.
Type variables can be scalars or arrays.


[subsection {How is a scalar type variable defined?}]

Scalar type variables are defined in the type definition using the
[cmd typevariable] statement.  You can simply name it, or you can
initialize it with a value:








<








<







1624
1625
1626
1627
1628
1629
1630

1631
1632
1633
1634
1635
1636
1637
1638

1639
1640
1641
1642
1643
1644
1645
of boolean options.

[para]

Any method can be a [const -validatemethod] provided that it takes
two arguments, the option name and the new option value.


[section {TYPE VARIABLES}]

[subsection {What is a type variable?}]

A type variable is a private variable associated with a Snit type
rather than with a particular instance of the type.  In C++ and Java,
the term [term "static member variable"] is used for the same notion.
Type variables can be scalars or arrays.


[subsection {How is a scalar type variable defined?}]

Scalar type variables are defined in the type definition using the
[cmd typevariable] statement.  You can simply name it, or you can
initialize it with a value:

1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726

Every object of type [cmd mytype] now has access to a single variable
called [var greeting].

[subsection {How is an array-valued type variable defined?}]

Array-valued type variables are also defined using the
[cmd typevariable] command; to initialize them, include the 
[const -array] option:

[para]
[example {snit::type mytype {
    # Define typearray variable "greetings"
    typevariable greetings -array {
        formal "Good Evening"
        casual "Howdy!"
    }
}
}]
[para]

[subsection {What happens if I don't initialize a type variable?}]

Variables do not really exist until they are given values.  If you 
do not initialize a variable when you define it, then you must be
sure to assign a value to it (in the type constructor, say)
before you reference it.

[subsection {Are there any limitations on type variable names?}]

Type variable names have the same restrictions as 
the names of [sectref {INSTANCE VARIABLES}] do.

[subsection {Do I need to declare my type variables in my methods?}]

No. Once you've defined a type variable in the type definition, it can
be used in [sectref {INSTANCE METHODS}] or [sectref {TYPE METHODS}] without
declaration.  This differs from normal Tcl practice, in which all
non-local variables in a proc need to be declared.

[para]

Type variables are subject to the same speed/readability tradeoffs
as instance variables; see
[sectref {Do I need to declare my instance variables in my methods?}] 

[subsection {How do I pass a type variable's name to another object?}]

In Tk, it's common to pass a widget a variable name; for example, Tk
label widgets have a [option -textvariable] option which names the
variable which will contain the widget's text.  This allows the
program to update the label's value just by assigning a new value to
the variable.

[para]

If you naively pass a type variable name to the label widget, you'll
be confused by the result; Tk will assume that the name names a global
variable.  Instead, you need to provide a fully-qualified variable
name.  From within an instance method or a constructor, you can fully
qualify the type variable's name using the [cmd mytypevar] command:

[para] 
[example {snit::widget mywidget {
    typevariable labeltext ""

    constructor {args} {
        # ...

        label $win.label -textvariable [mytypevar labeltext]







|















|






|













|

















|







1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723

Every object of type [cmd mytype] now has access to a single variable
called [var greeting].

[subsection {How is an array-valued type variable defined?}]

Array-valued type variables are also defined using the
[cmd typevariable] command; to initialize them, include the
[const -array] option:

[para]
[example {snit::type mytype {
    # Define typearray variable "greetings"
    typevariable greetings -array {
        formal "Good Evening"
        casual "Howdy!"
    }
}
}]
[para]

[subsection {What happens if I don't initialize a type variable?}]

Variables do not really exist until they are given values.  If you
do not initialize a variable when you define it, then you must be
sure to assign a value to it (in the type constructor, say)
before you reference it.

[subsection {Are there any limitations on type variable names?}]

Type variable names have the same restrictions as
the names of [sectref {INSTANCE VARIABLES}] do.

[subsection {Do I need to declare my type variables in my methods?}]

No. Once you've defined a type variable in the type definition, it can
be used in [sectref {INSTANCE METHODS}] or [sectref {TYPE METHODS}] without
declaration.  This differs from normal Tcl practice, in which all
non-local variables in a proc need to be declared.

[para]

Type variables are subject to the same speed/readability tradeoffs
as instance variables; see
[sectref {Do I need to declare my instance variables in my methods?}]

[subsection {How do I pass a type variable's name to another object?}]

In Tk, it's common to pass a widget a variable name; for example, Tk
label widgets have a [option -textvariable] option which names the
variable which will contain the widget's text.  This allows the
program to update the label's value just by assigning a new value to
the variable.

[para]

If you naively pass a type variable name to the label widget, you'll
be confused by the result; Tk will assume that the name names a global
variable.  Instead, you need to provide a fully-qualified variable
name.  From within an instance method or a constructor, you can fully
qualify the type variable's name using the [cmd mytypevar] command:

[para]
[example {snit::widget mywidget {
    typevariable labeltext ""

    constructor {args} {
        # ...

        label $win.label -textvariable [mytypevar labeltext]
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
[para]

[subsection {Are there any limitations on type method names?}]

Not really, so long as you avoid the standard type method names:
[method create], [method destroy], and [method info].


[subsection {How do I make a type method private?}]

It's sometimes useful to define private type methods, that is, type
methods intended to be called only by other type or instance methods
of the same object.

[para]

Snit doesn't implement any access control on type methods; by
convention, the names of public methods begin with a lower-case
letter, and the names of private methods begin with an upper-case
letter.

[para]

Alternatively, a Snit [cmd proc] can be used as a private type method; see
[sectref PROCS].


[subsection {Are there any limitations on type method arguments?}]

Method argument lists are defined just like normal Tcl proc argument
lists; in particular, they can include arguments with default values
and the [var args] argument.








<

















<







1814
1815
1816
1817
1818
1819
1820

1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837

1838
1839
1840
1841
1842
1843
1844
[para]

[subsection {Are there any limitations on type method names?}]

Not really, so long as you avoid the standard type method names:
[method create], [method destroy], and [method info].


[subsection {How do I make a type method private?}]

It's sometimes useful to define private type methods, that is, type
methods intended to be called only by other type or instance methods
of the same object.

[para]

Snit doesn't implement any access control on type methods; by
convention, the names of public methods begin with a lower-case
letter, and the names of private methods begin with an upper-case
letter.

[para]

Alternatively, a Snit [cmd proc] can be used as a private type method; see
[sectref PROCS].


[subsection {Are there any limitations on type method arguments?}]

Method argument lists are defined just like normal Tcl proc argument
lists; in particular, they can include arguments with default values
and the [var args] argument.

1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911

[para]
[example {
button .btn -text "Pedigrees" -command [list dog printPedigrees]
pack .btn
}]

Alternatively, from a method or type method you can use the 
[cmd mytypemethod] command, just as you would use [cmd mymethod]
to define a callback command for [sectref {INSTANCE METHODS}].

[subsection {Can type methods be hierarchical?}]

Yes, you can define hierarchical type methods in just the same way as
you can define hierarchical instance methods.  See
[sectref {INSTANCE METHODS}] for more.

[section PROCS]

[subsection {What is a proc?}]

A Snit [cmd proc] is really just a Tcl proc defined within the type's
namespace.  You can use procs for private code that isn't related to
any particular instance. 

[subsection {How do I define a proc?}]

Procs are defined by including a [cmd proc] statement in the type
definition:

[para]







|















|







1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906

[para]
[example {
button .btn -text "Pedigrees" -command [list dog printPedigrees]
pack .btn
}]

Alternatively, from a method or type method you can use the
[cmd mytypemethod] command, just as you would use [cmd mymethod]
to define a callback command for [sectref {INSTANCE METHODS}].

[subsection {Can type methods be hierarchical?}]

Yes, you can define hierarchical type methods in just the same way as
you can define hierarchical instance methods.  See
[sectref {INSTANCE METHODS}] for more.

[section PROCS]

[subsection {What is a proc?}]

A Snit [cmd proc] is really just a Tcl proc defined within the type's
namespace.  You can use procs for private code that isn't related to
any particular instance.

[subsection {How do I define a proc?}]

Procs are defined by including a [cmd proc] statement in the type
definition:

[para]
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
    }
}
}]
[para]

[subsection {How can I pass a proc to another object as a callback?}]

The [cmd myproc] command returns a callback command for the 
[cmd proc], just as [cmd mymethod] does for a method.

[section {TYPE CONSTRUCTORS}]

[subsection {What is a type constructor?}]

A type constructor is a body of code that initializes the type as a
whole, rather like a C++ static initializer.  The body of a type
constructor is executed once when the type is defined, and never
again.

[para]

A type can have at most one type constructor.


[subsection {How do I define a type constructor?}]

A type constructor is defined by using the [cmd typeconstructor]
statement in the type definition.  For example, suppose the type uses
an array-valued type variable as a look-up table, and the values in
the array have to be computed at start-up.

[para]
[example {% snit::type mytype {
    typevariable lookupTable

    typeconstructor {
        array set lookupTable {key value...}
    }
}
}]
[para]



[section CONSTRUCTORS]

[subsection {What is a constructor?}]

In object-oriented programming, an object's constructor is responsible
for initializing the object completely at creation time. The constructor
receives the list of options passed to the [cmd snit::type] command's
[method create] method and can then do whatever it likes.  That might include
computing instance variable values, reading data from files, creating
other objects, updating type and instance variables, and so forth.

[para]

The constructor's return value is ignored (unless it's an
error, of course).


[subsection {How do I define a constructor?}]

A constructor is defined by using the [cmd constructor] statement in
the type definition.  Suppose that it's desired to keep a list of all
pedigreed dogs.  The list can be maintained in a 
type variable and retrieved by a type method.  Whenever a dog is
created, it can add itself to the list--provided that it's registered
with the American Kennel Club.

[para] 
[example {% snit::type dog {
    option -akc 0

    typevariable akcList {}

    constructor {args} {
        $self configurelist $args







|














<



















<
<
















<




|




|







1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968

1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987


1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003

2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
    }
}
}]
[para]

[subsection {How can I pass a proc to another object as a callback?}]

The [cmd myproc] command returns a callback command for the
[cmd proc], just as [cmd mymethod] does for a method.

[section {TYPE CONSTRUCTORS}]

[subsection {What is a type constructor?}]

A type constructor is a body of code that initializes the type as a
whole, rather like a C++ static initializer.  The body of a type
constructor is executed once when the type is defined, and never
again.

[para]

A type can have at most one type constructor.


[subsection {How do I define a type constructor?}]

A type constructor is defined by using the [cmd typeconstructor]
statement in the type definition.  For example, suppose the type uses
an array-valued type variable as a look-up table, and the values in
the array have to be computed at start-up.

[para]
[example {% snit::type mytype {
    typevariable lookupTable

    typeconstructor {
        array set lookupTable {key value...}
    }
}
}]
[para]



[section CONSTRUCTORS]

[subsection {What is a constructor?}]

In object-oriented programming, an object's constructor is responsible
for initializing the object completely at creation time. The constructor
receives the list of options passed to the [cmd snit::type] command's
[method create] method and can then do whatever it likes.  That might include
computing instance variable values, reading data from files, creating
other objects, updating type and instance variables, and so forth.

[para]

The constructor's return value is ignored (unless it's an
error, of course).


[subsection {How do I define a constructor?}]

A constructor is defined by using the [cmd constructor] statement in
the type definition.  Suppose that it's desired to keep a list of all
pedigreed dogs.  The list can be maintained in a
type variable and retrieved by a type method.  Whenever a dog is
created, it can add itself to the list--provided that it's registered
with the American Kennel Club.

[para]
[example {% snit::type dog {
    option -akc 0

    typevariable akcList {}

    constructor {args} {
        $self configurelist $args
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
% spot breed
dalmatian
}]
[para]

The drawback is that this syntax is non-standard, and may
limit the compatibility of your new type with other people's code.
For example, Snit assumes that it can create 
[sectref COMPONENTS] using the standard creation syntax.

[subsection {Are there any limitations on constructor arguments?}]

Constructor argument lists are subject to the same limitations
as those on instance method argument lists.  It has the
same implicit arguments, and can contain default values and the 
[var args] argument.

[subsection "Is there anything special about writing the constructor?"]

Yes.  Writing the constructor can be tricky if you're delegating
options to components, and there are specific issues relating to
[cmd snit::widget]s and [cmd snit::widgetadaptor]s.  See 
[sectref {DELEGATION}], [sectref {WIDGETS}], 
[sectref {WIDGET ADAPTORS}], and [sectref {THE TK OPTION DATABASE}].

[section DESTRUCTORS]

[subsection {What is a destructor?}]

A destructor is a special kind of method that's called when an object







|






|






|
|







2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
% spot breed
dalmatian
}]
[para]

The drawback is that this syntax is non-standard, and may
limit the compatibility of your new type with other people's code.
For example, Snit assumes that it can create
[sectref COMPONENTS] using the standard creation syntax.

[subsection {Are there any limitations on constructor arguments?}]

Constructor argument lists are subject to the same limitations
as those on instance method argument lists.  It has the
same implicit arguments, and can contain default values and the
[var args] argument.

[subsection "Is there anything special about writing the constructor?"]

Yes.  Writing the constructor can be tricky if you're delegating
options to components, and there are specific issues relating to
[cmd snit::widget]s and [cmd snit::widgetadaptor]s.  See
[sectref {DELEGATION}], [sectref {WIDGETS}],
[sectref {WIDGET ADAPTORS}], and [sectref {THE TK OPTION DATABASE}].

[section DESTRUCTORS]

[subsection {What is a destructor?}]

A destructor is a special kind of method that's called when an object
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210

Yes and no.

[para]

Any Tk widgets created by a [cmd snit::widget] or
[cmd snit::widgetadaptor] will be destroyed automatically by Tk
when the megawidget is destroyed, in keeping with normal Tk behavior 
(destroying a parent widget destroys the whole tree).

[para]

Components of normal [cmd snit::types], on the other hand, 
are never destroyed automatically, nor are non-widget components 
of Snit megawidgets.  If your object creates them in its 
constructor, then it should generally destroy them in its destructor.

[subsection {Is there any special about writing a destructor?}]

Yes.  If an object's constructor throws an error, the object's
destructor will be called to clean up; this means that the object
might not be completely constructed when the destructor is called.
This can cause the destructor to throw its own error; the result
is usually misleading, confusing, and unhelpful.  Consequently, it's
important to write your destructor so that it's fail-safe.  

[para]

For example, a [cmd dog] might create a [cmd tail] component; the
component will need to be destroyed.  But suppose there's an error
while processing the creation options--the destructor will be called,
and there will be no [cmd tail] to destroy.  The simplest solution is







|




|
|
|









|







2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201

Yes and no.

[para]

Any Tk widgets created by a [cmd snit::widget] or
[cmd snit::widgetadaptor] will be destroyed automatically by Tk
when the megawidget is destroyed, in keeping with normal Tk behavior
(destroying a parent widget destroys the whole tree).

[para]

Components of normal [cmd snit::types], on the other hand,
are never destroyed automatically, nor are non-widget components
of Snit megawidgets.  If your object creates them in its
constructor, then it should generally destroy them in its destructor.

[subsection {Is there any special about writing a destructor?}]

Yes.  If an object's constructor throws an error, the object's
destructor will be called to clean up; this means that the object
might not be completely constructed when the destructor is called.
This can cause the destructor to throw its own error; the result
is usually misleading, confusing, and unhelpful.  Consequently, it's
important to write your destructor so that it's fail-safe.

[para]

For example, a [cmd dog] might create a [cmd tail] component; the
component will need to be destroyed.  But suppose there's an error
while processing the creation options--the destructor will be called,
and there will be no [cmd tail] to destroy.  The simplest solution is
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247

    destructor {
        catch {$tail destroy}
    }
}
}]


[section COMPONENTS]

[subsection {What is a component?}]

Often an object will create and manage a number of other objects.  A
Snit megawidget, for example, will often create a number of Tk
widgets.  These objects are part of the main object; it is composed
of them, so they are called components of the object.

[para]

But Snit also has a more precise meaning for 
[sectref COMPONENTS COMPONENT].  The components of a Snit object are those
objects to which methods or options can be delegated.
(See [sectref DELEGATION] for more information about delegation.)

[subsection {How do I declare a component?}]

First, you must decide what role a component plays within your object,







<











|







2212
2213
2214
2215
2216
2217
2218

2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237

    destructor {
        catch {$tail destroy}
    }
}
}]


[section COMPONENTS]

[subsection {What is a component?}]

Often an object will create and manage a number of other objects.  A
Snit megawidget, for example, will often create a number of Tk
widgets.  These objects are part of the main object; it is composed
of them, so they are called components of the object.

[para]

But Snit also has a more precise meaning for
[sectref COMPONENTS COMPONENT].  The components of a Snit object are those
objects to which methods or options can be delegated.
(See [sectref DELEGATION] for more information about delegation.)

[subsection {How do I declare a component?}]

First, you must decide what role a component plays within your object,
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
used to refer to the component within Snit code.  The second name is
the name of the actual component object created by the Snit object's
constructor.  This second name is always a Tcl command name, and is
referred to as the component's object name.

[para]

In the example in the previous question, the component name is 
[const mytail]; the [const mytail] component's object name is chosen
automatically by Snit since [const %AUTO%] was used when the component
object was created.

[subsection {Are there any limitations on component names?}]

Yes.  [cmd snit::widget] and [cmd snit::widgetadaptor] objects have a special







|







2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
used to refer to the component within Snit code.  The second name is
the name of the actual component object created by the Snit object's
constructor.  This second name is always a Tcl command name, and is
referred to as the component's object name.

[para]

In the example in the previous question, the component name is
[const mytail]; the [const mytail] component's object name is chosen
automatically by Snit since [const %AUTO%] was used when the component
object was created.

[subsection {Are there any limitations on component names?}]

Yes.  [cmd snit::widget] and [cmd snit::widgetadaptor] objects have a special
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
        $self configurelist $args
    }
}
}]

In a [cmd snit::type]'s code, the [cmd install]
command shown above is equivalent to the [const {set mytail}] command
that's commented out.  In a [cmd snit::widget]'s or 
[cmd snit::widgetadaptor]'s, code, however, the
[cmd install] command also queries [sectref {THE TK OPTION DATABASE}]
and initializes the new component's options accordingly.  For consistency,
it's a good idea to get in the habit of using [cmd install] for all
owned components.

[subsection {Must owned components be created in the constructor?}]







|







2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
        $self configurelist $args
    }
}
}]

In a [cmd snit::type]'s code, the [cmd install]
command shown above is equivalent to the [const {set mytail}] command
that's commented out.  In a [cmd snit::widget]'s or
[cmd snit::widgetadaptor]'s, code, however, the
[cmd install] command also queries [sectref {THE TK OPTION DATABASE}]
and initializes the new component's options accordingly.  For consistency,
it's a good idea to get in the habit of using [cmd install] for all
owned components.

[subsection {Must owned components be created in the constructor?}]
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
Component objects which are not widgets or megawidgets must have
fully-qualified command names, i.e., names which include the full
namespace of the command.  Note that Snit always creates objects with
fully qualified names.

[para]

Next, the object names of components and owned by your object 
must be unique.  This is no problem for widget components, since
widget names are always unique; but consider the following code:

[para]
[example {snit::type tail { ... }

snit::type dog {







|







2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
Component objects which are not widgets or megawidgets must have
fully-qualified command names, i.e., names which include the full
namespace of the command.  Note that Snit always creates objects with
fully qualified names.

[para]

Next, the object names of components and owned by your object
must be unique.  This is no problem for widget components, since
widget names are always unique; but consider the following code:

[para]
[example {snit::type tail { ... }

snit::type dog {
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519

[para]

However, there are times when it's appropriate, not to mention
simpler, just to make the entire component part of your type's public
interface.


[subsection {How do I expose a component's object command?}]

When you declare the component, specify the [cmd component]
statement's [const -public] option.  The value of this option is the
name of a method which will be delegated to your component's object 
command.

[para]

For example, supposed you've written a combobox megawidget which owns
a listbox widget, and you want to make the listbox's entire interface 
public.  You can do it like this:

[para]
[example {snit::widget combobox {
     component listbox -public listbox

     constructor {args} {







<




|





|







2484
2485
2486
2487
2488
2489
2490

2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508

[para]

However, there are times when it's appropriate, not to mention
simpler, just to make the entire component part of your type's public
interface.


[subsection {How do I expose a component's object command?}]

When you declare the component, specify the [cmd component]
statement's [const -public] option.  The value of this option is the
name of a method which will be delegated to your component's object
command.

[para]

For example, supposed you've written a combobox megawidget which owns
a listbox widget, and you want to make the listbox's entire interface
public.  You can do it like this:

[para]
[example {snit::widget combobox {
     component listbox -public listbox

     constructor {args} {
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
[section {TYPE COMPONENTS}]

[subsection {What is a type component?}]

A type component is a component that belongs to the type itself
instead of to a particular instance of the type.  The relationship
between components and type components is the same as the
relationship between [sectref {INSTANCE VARIABLES}] and 
[sectref {TYPE VARIABLES}].  Both [sectref {INSTANCE METHODS}] and
[sectref {TYPE METHODS}] can be delegated to type components.

[para]

Once you understand [sectref COMPONENTS] and
[sectref {DELEGATION}], type components are just more of the same.







|







2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
[section {TYPE COMPONENTS}]

[subsection {What is a type component?}]

A type component is a component that belongs to the type itself
instead of to a particular instance of the type.  The relationship
between components and type components is the same as the
relationship between [sectref {INSTANCE VARIABLES}] and
[sectref {TYPE VARIABLES}].  Both [sectref {INSTANCE METHODS}] and
[sectref {TYPE METHODS}] can be delegated to type components.

[para]

Once you understand [sectref COMPONENTS] and
[sectref {DELEGATION}], type components are just more of the same.
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
    # ...
}
}]

[subsection {How do I install a type component?}]

Just use the [cmd set] command to assign the component's object
command to the type component.  Because types 
(even [cmd snit::widget] types) are not widgets, and do not have
options anyway, the extra features of the [cmd install] command are
not needed.

[para]

You'll usually install type components in the type constructor, as







|







2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
    # ...
}
}]

[subsection {How do I install a type component?}]

Just use the [cmd set] command to assign the component's object
command to the type component.  Because types
(even [cmd snit::widget] types) are not widgets, and do not have
options anyway, the extra features of the [cmd install] command are
not needed.

[para]

You'll usually install type components in the type constructor, as
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
        set vet [veterinarian %AUTO%]
    }
}
}]

[subsection {Are there any limitations on type component names?}]

Yes, the same as on [sectref {INSTANCE VARIABLES}], 
[sectref {TYPE VARIABLES}], and normal [sectref COMPONENTS].


[section DELEGATION]

[subsection {What is delegation?}]

Delegation, simply put, is when you pass a task you've been given to
one of your assistants.  (You do have assistants, don't you?)  Snit
objects can do the same thing.  The following example shows one way in
which the [cmd dog] object can delegate its [cmd wag] method and its
[option -taillength] option to its [cmd tail] component.

[para] 
[example {snit::type dog {
    variable mytail

    option -taillength -configuremethod SetTailOption -cgetmethod GetTailOption
    

    method SetTailOption {option value} {
         $mytail configure $option $value
    }

    method GetTailOption {option} {
         $mytail cget $option







|

<











|




<







2583
2584
2585
2586
2587
2588
2589
2590
2591

2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607

2608
2609
2610
2611
2612
2613
2614
        set vet [veterinarian %AUTO%]
    }
}
}]

[subsection {Are there any limitations on type component names?}]

Yes, the same as on [sectref {INSTANCE VARIABLES}],
[sectref {TYPE VARIABLES}], and normal [sectref COMPONENTS].


[section DELEGATION]

[subsection {What is delegation?}]

Delegation, simply put, is when you pass a task you've been given to
one of your assistants.  (You do have assistants, don't you?)  Snit
objects can do the same thing.  The following example shows one way in
which the [cmd dog] object can delegate its [cmd wag] method and its
[option -taillength] option to its [cmd tail] component.

[para]
[example {snit::type dog {
    variable mytail

    option -taillength -configuremethod SetTailOption -cgetmethod GetTailOption


    method SetTailOption {option value} {
         $mytail configure $option $value
    }

    method GetTailOption {option} {
         $mytail cget $option
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
[cmd after] it creates its [cmd tail]; otherwise,
if [option -taillength] appeared in the list of [var args] we'd get an
error.

[subsection {How can I delegate a method to a component object?}]

Delegation occurs frequently enough that Snit makes it easy. Any
method can be delegated to any component or type component 
by placing a single [cmd delegate] statement in the type definition.

(See [sectref COMPONENTS] and [sectref {TYPE COMPONENTS}]
for more information about component names.)

[para]








|







2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
[cmd after] it creates its [cmd tail]; otherwise,
if [option -taillength] appeared in the list of [var args] we'd get an
error.

[subsection {How can I delegate a method to a component object?}]

Delegation occurs frequently enough that Snit makes it easy. Any
method can be delegated to any component or type component
by placing a single [cmd delegate] statement in the type definition.

(See [sectref COMPONENTS] and [sectref {TYPE COMPONENTS}]
for more information about component names.)

[para]

2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
        install mytail using tail %AUTO% -partof $self
        $self configurelist $args
    }
}
}]
[para]


[subsection {Can I delegate to a method with additional arguments?}]

Suppose the [cmd tail]'s [method wag] method takes as an argument the
number of times the tail should be wagged.  You want to delegate the
[cmd dog]'s [method wagtail] method to the [cmd tail]'s [method wag]
method, specifying that the tail should be wagged exactly three times.
This is easily done, too:







<







2702
2703
2704
2705
2706
2707
2708

2709
2710
2711
2712
2713
2714
2715
        install mytail using tail %AUTO% -partof $self
        $self configurelist $args
    }
}
}]
[para]


[subsection {Can I delegate to a method with additional arguments?}]

Suppose the [cmd tail]'s [method wag] method takes as an argument the
number of times the tail should be wagged.  You want to delegate the
[cmd dog]'s [method wagtail] method to the [cmd tail]'s [method wag]
method, specifying that the tail should be wagged exactly three times.
This is easily done, too:
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
}
}]
[para]

[subsection {Can I delegate a method to something other than an object?}]

Normal method delegation assumes that you're delegating a method (a
subcommand of an object command) to a method of another object (a 
subcommand of a different object command).  But not all Tcl objects
follow Tk conventions, and not everything you'd to which you'd like
to delegate a method is necessary an object.  Consequently, Snit makes
it easy to delegate a method to pretty much anything you like using
the [cmd delegate] statement's [const using] clause.

[para]

Suppose your dog simulation stores dogs in a database, each dog as a
single record.  The database API you're using provides a number of
commands to manage records; each takes the record ID (a string you
choose) as its first argument.  For example, [cmd saverec]
saves a record.  If you let the record ID be the name of the dog
object, you can delegate the dog's [method save] method to the 
[cmd saverec] command as follows:

[example {snit::type dog {
    delegate method save using {saverec %s}
}
}]

The [const %s] is replaced with the instance name when the 
[method save] method is called; any additional arguments are the
appended to the resulting command.

[para]

The [const using] clause understands a number of other %-conversions;
in addition to the instance name, you can substitute in the method 
name ([const %m]), the type name ([const %t]), the instance 
namespace ([const %n]), the Tk window name ([const %w]), and,
if a component or typecomponent name was given in the 
[cmd delegate] statement, the component's object command 
([const %c]).

[subsection {How can I delegate a method to a type component object?}]

Just exactly as you would to a component object.  The 
[cmd {delegate method}] statement accepts both component and type
component names in its [const to] clause.

[subsection {How can I delegate a type method to a type component object?}]

Use the [cmd {delegate typemethod}] statement.  It works like
[cmd {delegate method}], with these differences: first, it defines
a type method instead of an instance method; second, the 
[const using] clause ignores the [const {%s}], [const {%n}], 
and [const {%w}] %-conversions.

[para]

Naturally, you can't delegate a type method to an instance
component...Snit wouldn't know which instance should receive it.








|













|







|






|
|

|
|




|







|
|







2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
}
}]
[para]

[subsection {Can I delegate a method to something other than an object?}]

Normal method delegation assumes that you're delegating a method (a
subcommand of an object command) to a method of another object (a
subcommand of a different object command).  But not all Tcl objects
follow Tk conventions, and not everything you'd to which you'd like
to delegate a method is necessary an object.  Consequently, Snit makes
it easy to delegate a method to pretty much anything you like using
the [cmd delegate] statement's [const using] clause.

[para]

Suppose your dog simulation stores dogs in a database, each dog as a
single record.  The database API you're using provides a number of
commands to manage records; each takes the record ID (a string you
choose) as its first argument.  For example, [cmd saverec]
saves a record.  If you let the record ID be the name of the dog
object, you can delegate the dog's [method save] method to the
[cmd saverec] command as follows:

[example {snit::type dog {
    delegate method save using {saverec %s}
}
}]

The [const %s] is replaced with the instance name when the
[method save] method is called; any additional arguments are the
appended to the resulting command.

[para]

The [const using] clause understands a number of other %-conversions;
in addition to the instance name, you can substitute in the method
name ([const %m]), the type name ([const %t]), the instance
namespace ([const %n]), the Tk window name ([const %w]), and,
if a component or typecomponent name was given in the
[cmd delegate] statement, the component's object command
([const %c]).

[subsection {How can I delegate a method to a type component object?}]

Just exactly as you would to a component object.  The
[cmd {delegate method}] statement accepts both component and type
component names in its [const to] clause.

[subsection {How can I delegate a type method to a type component object?}]

Use the [cmd {delegate typemethod}] statement.  It works like
[cmd {delegate method}], with these differences: first, it defines
a type method instead of an instance method; second, the
[const using] clause ignores the [const {%s}], [const {%n}],
and [const {%w}] %-conversions.

[para]

Naturally, you can't delegate a type method to an instance
component...Snit wouldn't know which instance should receive it.

2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
    # ...
}
}]
[para]

Dogs have four legs, so we specify that explicitly when we create the
[var animal] component, and explicitly exclude [option -numlegs] from the
set of delegated options.  Similarly, dogs can neither 
[method fly] nor [method climb],
so we exclude those [cmd animal] methods as shown.

[subsection {Can a hierarchical method be delegated?}]

Yes; just specify multiple words in the delegated method's name:

[para]
[example {snit::type tail {
    method wag {} {return "Wag, wag"}
    method droop {} {return "Droop, droop"}
}


snit::type dog {
    delegate method {tail wag} to mytail
    delegate method {tail droop} to mytail

    # ...








|












<







2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947

2948
2949
2950
2951
2952
2953
2954
    # ...
}
}]
[para]

Dogs have four legs, so we specify that explicitly when we create the
[var animal] component, and explicitly exclude [option -numlegs] from the
set of delegated options.  Similarly, dogs can neither
[method fly] nor [method climb],
so we exclude those [cmd animal] methods as shown.

[subsection {Can a hierarchical method be delegated?}]

Yes; just specify multiple words in the delegated method's name:

[para]
[example {snit::type tail {
    method wag {} {return "Wag, wag"}
    method droop {} {return "Droop, droop"}
}


snit::type dog {
    delegate method {tail wag} to mytail
    delegate method {tail droop} to mytail

    # ...

2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
    delegate method {tail *} to mytail

    # ...
}
}]
[para]




[section WIDGETS]

[subsection {What is a snit::widget?}]

A [cmd snit::widget] is the Snit version of what Tcl programmers
usually call a [term megawidget]: a widget-like object usually
consisting of one or more Tk widgets all contained within a Tk frame.

[para]

A [cmd snit::widget] is also a special kind of [cmd snit::type].  Just
about everything in this FAQ list that relates to [cmd snit::types]
also applies to [cmd snit::widgets].


[subsection {How do I define a snit::widget?}]

[cmd snit::widgets] are defined using the [cmd snit::widget] command,
just as [cmd snit::types] are defined by the [cmd snit::type] command.

[para]

The body of the definition can contain all of the same kinds of
statements, plus a couple of others which will be mentioned below.


[subsection {How do snit::widgets differ from snit::types?}]

[list_begin itemized]
[item]

The name of an instance of a [cmd snit::type] can be any valid Tcl
command name, in any namespace.

The name of an instance of a [cmd snit::widget] must be a valid Tk
widget name, and its parent widget must already exist.


[item]

An instance of a [cmd snit::type] can be destroyed by calling

its [cmd destroy] method.  Instances of a [cmd snit::widget] have no
destroy method; use the Tk [cmd destroy] command instead.


[item]

Every instance of a [cmd snit::widget] has one predefined component
called its [var hull] component.

The hull is usually a Tk [cmd frame] or [cmd toplevel] widget; any other







<
<
<














<









<












<






<







2971
2972
2973
2974
2975
2976
2977



2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991

2992
2993
2994
2995
2996
2997
2998
2999
3000

3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012

3013
3014
3015
3016
3017
3018

3019
3020
3021
3022
3023
3024
3025
    delegate method {tail *} to mytail

    # ...
}
}]
[para]




[section WIDGETS]

[subsection {What is a snit::widget?}]

A [cmd snit::widget] is the Snit version of what Tcl programmers
usually call a [term megawidget]: a widget-like object usually
consisting of one or more Tk widgets all contained within a Tk frame.

[para]

A [cmd snit::widget] is also a special kind of [cmd snit::type].  Just
about everything in this FAQ list that relates to [cmd snit::types]
also applies to [cmd snit::widgets].


[subsection {How do I define a snit::widget?}]

[cmd snit::widgets] are defined using the [cmd snit::widget] command,
just as [cmd snit::types] are defined by the [cmd snit::type] command.

[para]

The body of the definition can contain all of the same kinds of
statements, plus a couple of others which will be mentioned below.


[subsection {How do snit::widgets differ from snit::types?}]

[list_begin itemized]
[item]

The name of an instance of a [cmd snit::type] can be any valid Tcl
command name, in any namespace.

The name of an instance of a [cmd snit::widget] must be a valid Tk
widget name, and its parent widget must already exist.


[item]

An instance of a [cmd snit::type] can be destroyed by calling

its [cmd destroy] method.  Instances of a [cmd snit::widget] have no
destroy method; use the Tk [cmd destroy] command instead.


[item]

Every instance of a [cmd snit::widget] has one predefined component
called its [var hull] component.

The hull is usually a Tk [cmd frame] or [cmd toplevel] widget; any other
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
[cmd snit::widgetadaptor]s differ from [cmd snit::widget]s chiefly in
that any kind of widget can be used as the hull component; see
[sectref {WIDGET ADAPTORS}].

[subsection {How can I set the hull type for a snit::widget?}]

A [cmd snit::widget]'s hull component will usually be a Tk [cmd frame]
widget; however, it may be any Tk widget that defines the 
[const -class] option.  You can
explicitly choose the hull type you prefer by including the [cmd hulltype]
command in the widget definition:

[para]
[example {snit::widget mytoplevel {
    hulltype toplevel







|







3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
[cmd snit::widgetadaptor]s differ from [cmd snit::widget]s chiefly in
that any kind of widget can be used as the hull component; see
[sectref {WIDGET ADAPTORS}].

[subsection {How can I set the hull type for a snit::widget?}]

A [cmd snit::widget]'s hull component will usually be a Tk [cmd frame]
widget; however, it may be any Tk widget that defines the
[const -class] option.  You can
explicitly choose the hull type you prefer by including the [cmd hulltype]
command in the widget definition:

[para]
[example {snit::widget mytoplevel {
    hulltype toplevel
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
snit::widget mywidget {
    hulltype prettyframe

    # ...
}
}]
[para]



[subsection {How should I name widgets which are components of a snit::widget?}]

Every widget, whether a genuine Tk widget or a Snit megawidget, has to
have a valid Tk window name.  When a [cmd snit::widget] is first
created, its instance name, [var self], is a Tk window name;








<
<







3090
3091
3092
3093
3094
3095
3096


3097
3098
3099
3100
3101
3102
3103
snit::widget mywidget {
    hulltype prettyframe

    # ...
}
}]
[para]



[subsection {How should I name widgets which are components of a snit::widget?}]

Every widget, whether a genuine Tk widget or a Snit megawidget, has to
have a valid Tk window name.  When a [cmd snit::widget] is first
created, its instance name, [var self], is a Tk window name;

3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
defined using some other package.

[para]

It's called a [term {widget adaptor}] because it allows you to take an
existing widget and customize its behavior.


[subsection {How do I define a snit::widgetadaptor?}]

Use the [cmd snit::widgetadaptor] command.  The definition for a
[cmd snit::widgetadaptor] looks just like that for a [cmd snit::type]
or [cmd snit::widget], except that the constructor must create and
install the hull component.








<







3145
3146
3147
3148
3149
3150
3151

3152
3153
3154
3155
3156
3157
3158
defined using some other package.

[para]

It's called a [term {widget adaptor}] because it allows you to take an
existing widget and customize its behavior.


[subsection {How do I define a snit::widgetadaptor?}]

Use the [cmd snit::widgetadaptor] command.  The definition for a
[cmd snit::widgetadaptor] looks just like that for a [cmd snit::type]
or [cmd snit::widget], except that the constructor must create and
install the hull component.

3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
    method insert {args} {}
    method delete {args} {}

    # Enable ins and del as synonyms, so the program can insert and
    # delete.
    delegate method ins to hull as insert
    delegate method del to hull as delete
    
    # Pass all other methods and options to the real text widget, so
    # that the remaining behavior is as expected.
    delegate method * to hull
    delegate option * to hull
}
}]
[para]







|







3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
    method insert {args} {}
    method delete {args} {}

    # Enable ins and del as synonyms, so the program can insert and
    # delete.
    delegate method ins to hull as insert
    delegate method del to hull as delete

    # Pass all other methods and options to the real text widget, so
    # that the remaining behavior is as expected.
    delegate method * to hull
    delegate option * to hull
}
}]
[para]
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
}]

[subsection {Can I adapt another megawidget?}]

Maybe. If the other megawidget is a [cmd snit::widget] or
[cmd snit::widgetadaptor], then yes.  If it isn't then, again, maybe.
You'll have to try it and see.  You're most likely to have trouble
with widget destruction--you have to make sure that your 
megawidget code receives the [const <Destroy>] event before the
megawidget you're adapting does.

[section {THE TK OPTION DATABASE}]

[subsection {What is the Tk option database?}]








|







3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
}]

[subsection {Can I adapt another megawidget?}]

Maybe. If the other megawidget is a [cmd snit::widget] or
[cmd snit::widgetadaptor], then yes.  If it isn't then, again, maybe.
You'll have to try it and see.  You're most likely to have trouble
with widget destruction--you have to make sure that your
megawidget code receives the [const <Destroy>] event before the
megawidget you're adapting does.

[section {THE TK OPTION DATABASE}]

[subsection {What is the Tk option database?}]

3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
[item]

Use the [cmd install] command to create and install all
components which are widgets.

[item]

Use the [cmd install] command to create and install 
components which aren't widgets if you'd like them to 
receive option values from the option database.

[list_end]
[para]

The interaction of Tk widgets with the option database is a complex
thing; the interaction of Snit with the option database is even more
so, and repays attention to detail.


[subsection {Do snit::types use the Tk option database?}]

No, they don't; querying the option database requires a Tk window
name, and [cmd snit::type]s don't have one.

[para]







|
|








<







3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315

3316
3317
3318
3319
3320
3321
3322
[item]

Use the [cmd install] command to create and install all
components which are widgets.

[item]

Use the [cmd install] command to create and install
components which aren't widgets if you'd like them to
receive option values from the option database.

[list_end]
[para]

The interaction of Tk widgets with the option database is a complex
thing; the interaction of Snit with the option database is even more
so, and repays attention to detail.


[subsection {Do snit::types use the Tk option database?}]

No, they don't; querying the option database requires a Tk window
name, and [cmd snit::type]s don't have one.

[para]
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
want, so take care.

[subsection {What is my snit::widget's widget class?}]

Every Tk widget has a "widget class": a name that is used when adding
option settings to the database.  For Tk widgets, the widget class is
the same as the widget command name with an initial capital.  For
example, the widget class of the Tk [cmd button] widget is 
[const Button].

[para]

Similarly, the widget class of a [cmd snit::widget] defaults to the
unqualified type name with the first letter capitalized.  For example,
the widget class of







|







3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
want, so take care.

[subsection {What is my snit::widget's widget class?}]

Every Tk widget has a "widget class": a name that is used when adding
option settings to the database.  For Tk widgets, the widget class is
the same as the widget command name with an initial capital.  For
example, the widget class of the Tk [cmd button] widget is
[const Button].

[para]

Similarly, the widget class of a [cmd snit::widget] defaults to the
unqualified type name with the first letter capitalized.  For example,
the widget class of
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422

[para]

Try to use [cmd snit::widgetadaptor]s only to make small modifications
to another widget's behavior.  Then, it will usually not make sense to
change the widget's widget class anyway.


[subsection {What are option resource and class names?}]

Every Tk widget option has three names: the option name, the resource
name, and the class name.

The option name begins with a hyphen and is all lowercase; it's used
when creating widgets, and with the [cmd configure] and [cmd cget]







<







3382
3383
3384
3385
3386
3387
3388

3389
3390
3391
3392
3393
3394
3395

[para]

Try to use [cmd snit::widgetadaptor]s only to make small modifications
to another widget's behavior.  Then, it will usually not make sense to
change the widget's widget class anyway.


[subsection {What are option resource and class names?}]

Every Tk widget option has three names: the option name, the resource
name, and the class name.

The option name begins with a hyphen and is all lowercase; it's used
when creating widgets, and with the [cmd configure] and [cmd cget]
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
name minus the hyphen, but may contain uppercase letters at word
boundaries; the class name is usually just the resource
name with an initial capital, but not always.  For example, here are
the option, resource, and class names for several Tk [cmd text]
widget options:

[para]
[example {    -background         background         Background 
    -borderwidth        borderWidth        BorderWidth 
    -insertborderwidth  insertBorderWidth  BorderWidth 
    -padx               padX               Pad 
}]
[para]

As is easily seen, sometimes the resource and class names can be
inferred from the option name, but not always.


[subsection {What are the resource and class names for my megawidget's options?}]

For options implicitly delegated to a component using
[cmd {delegate option *}], the resource and class names will be
exactly those defined by the component.  The [cmd configure] method
returns these names, along with the option's default and current







|
|
|
|





<







3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418

3419
3420
3421
3422
3423
3424
3425
name minus the hyphen, but may contain uppercase letters at word
boundaries; the class name is usually just the resource
name with an initial capital, but not always.  For example, here are
the option, resource, and class names for several Tk [cmd text]
widget options:

[para]
[example {    -background         background         Background
    -borderwidth        borderWidth        BorderWidth
    -insertborderwidth  insertBorderWidth  BorderWidth
    -padx               padX               Pad
}]
[para]

As is easily seen, sometimes the resource and class names can be
inferred from the option name, but not always.


[subsection {What are the resource and class names for my megawidget's options?}]

For options implicitly delegated to a component using
[cmd {delegate option *}], the resource and class names will be
exactly those defined by the component.  The [cmd configure] method
returns these names, along with the option's default and current
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
% mytext .text
.text
% .text configure -padx
-padx padX Pad 1 1
%
}]


[subsection {How does Snit initialize my megawidget's locally-defined options?}]

The option database is queried for each of the megawidget's
locally-defined options, using the option's resource and class name.
If the result isn't "", then it replaces the default value given in
widget definition.  In either case, the default can be overridden by
the caller.  For example,







<







3495
3496
3497
3498
3499
3500
3501

3502
3503
3504
3505
3506
3507
3508
% mytext .text
.text
% .text configure -padx
-padx padX Pad 1 1
%
}]


[subsection {How does Snit initialize my megawidget's locally-defined options?}]

The option database is queried for each of the megawidget's
locally-defined options, using the option's resource and class name.
If the result isn't "", then it replaces the default value given in
widget definition.  In either case, the default can be overridden by
the caller.  For example,
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
However, the caller has explicitly overridden the default, and so the
new widget will be "greasy".

[subsection {How does Snit initialize delegated options?}]

That depends on whether the options are delegated to the hull, or to
some other component.


[subsection {How does Snit initialize options delegated to the hull?}]

A [cmd snit::widget]'s hull is a widget, and given that its class has
been set it is expected to query the option database for itself.  The
only exception concerns options that are delegated to it with a
different name.  Consider the following code:







<







3524
3525
3526
3527
3528
3529
3530

3531
3532
3533
3534
3535
3536
3537
However, the caller has explicitly overridden the default, and so the
new widget will be "greasy".

[subsection {How does Snit initialize delegated options?}]

That depends on whether the options are delegated to the hull, or to
some other component.


[subsection {How does Snit initialize options delegated to the hull?}]

A [cmd snit::widget]'s hull is a widget, and given that its class has
been set it is expected to query the option database for itself.  The
only exception concerns options that are delegated to it with a
different name.  Consider the following code:
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
implicitly delegated to the hull, Snit takes no action.

[para]

The value of B is "red".  The hull will automatically pick up the
value "green" for its [const -background] option, just as it picked up the
[const -relief] value.  However, Snit knows that [const -hullbackground]
is mapped to the hull's [const -background] option; hence, it queries 
the option database for [const -hullbackground] and gets "red" and 
updates the hull accordingly.

[para]

The value of C is also "red", because [const -background] is implicitly
delegated to the hull; thus, retrieving it is the same as retrieving
[const -hullbackground].  Note that this case is unusual; the 
[const -background] option should probably have been excluded using the delegate
statement's [const except] clause, or (more likely) delegated to some other
component.

[para]

The value of D is "5", but not for the reason you think.  Note that as
it is defined above, the resource name for [const -borderwidth] defaults to
[const borderwidth], whereas the option database entry is 
[const borderWidth], in
accordance with the standard Tk naming for this option.  As with
[const -relief], the hull picks up its own [const -borderwidth]
option before Snit
does anything.  Because the option is delegated under its own name,
Snit assumes that the correct thing has happened, and doesn't worry
about it any further.  To avoid confusion, the 
[const -borderwidth] option
should have been delegated like this:

[para]
[example {    delegate option {-borderwidth borderWidth BorderWidth} to hull
}]
[para]







|
|






|








|






|







3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
implicitly delegated to the hull, Snit takes no action.

[para]

The value of B is "red".  The hull will automatically pick up the
value "green" for its [const -background] option, just as it picked up the
[const -relief] value.  However, Snit knows that [const -hullbackground]
is mapped to the hull's [const -background] option; hence, it queries
the option database for [const -hullbackground] and gets "red" and
updates the hull accordingly.

[para]

The value of C is also "red", because [const -background] is implicitly
delegated to the hull; thus, retrieving it is the same as retrieving
[const -hullbackground].  Note that this case is unusual; the
[const -background] option should probably have been excluded using the delegate
statement's [const except] clause, or (more likely) delegated to some other
component.

[para]

The value of D is "5", but not for the reason you think.  Note that as
it is defined above, the resource name for [const -borderwidth] defaults to
[const borderwidth], whereas the option database entry is
[const borderWidth], in
accordance with the standard Tk naming for this option.  As with
[const -relief], the hull picks up its own [const -borderwidth]
option before Snit
does anything.  Because the option is delegated under its own name,
Snit assumes that the correct thing has happened, and doesn't worry
about it any further.  To avoid confusion, the
[const -borderwidth] option
should have been delegated like this:

[para]
[example {    delegate option {-borderwidth borderWidth BorderWidth} to hull
}]
[para]
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
Queries the option database for all options delegated explicitly to
the named component.

[item]

Creates the component using the specified command, after inserting
into it a list of options and values read from the option database.
Thus, the explicitly included options (like [const -foreground]) will 
override anything read from the option database.

[item]

If the widget definition implicitly delegated options to the component
using [cmd {delegate option *}], then Snit calls the newly created
component's [cmd configure] method to receive a list of all of the







|







3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
Queries the option database for all options delegated explicitly to
the named component.

[item]

Creates the component using the specified command, after inserting
into it a list of options and values read from the option database.
Thus, the explicitly included options (like [const -foreground]) will
override anything read from the option database.

[item]

If the widget definition implicitly delegated options to the component
using [cmd {delegate option *}], then Snit calls the newly created
component's [cmd configure] method to receive a list of all of the
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799

[section {ENSEMBLE COMMANDS}]

[subsection {What is an ensemble command?}]

An ensemble command is a command with subcommands.  Snit objects are
all ensemble commands; however, the term more usually refers to
commands like the standard Tcl commands [cmd string], [cmd file], 
and [cmd clock].  In a sense, these are singleton objects--there's
only one instance of them.

[subsection {How can I create an ensemble command using Snit?}]

There are two ways--as a [cmd snit::type], or as an instance of
a [cmd snit::type].







|







3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769

[section {ENSEMBLE COMMANDS}]

[subsection {What is an ensemble command?}]

An ensemble command is a command with subcommands.  Snit objects are
all ensemble commands; however, the term more usually refers to
commands like the standard Tcl commands [cmd string], [cmd file],
and [cmd clock].  In a sense, these are singleton objects--there's
only one instance of them.

[subsection {How can I create an ensemble command using Snit?}]

There are two ways--as a [cmd snit::type], or as an instance of
a [cmd snit::type].
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
}
}]

Now the type command itself is your ensemble command.

[para]

This method has only one drawback, and though it's major, it's 
also surmountable.  Your new ensemble command will have
[method create], [method info] and [method destroy] subcommands
you don't want.  And worse yet, since the [method create] method
can be implicit, users of your command will accidentally be creating
instances of your [cmd mystring] type if they should mispell one
of the subcommands.  The command will succeed--the first time--but
won't do what's wanted.  This is very bad.

[para]

The work around is to set some [sectref {PRAGMAS}], as shown here:

[example {snit::type mystring {
    pragma -hastypeinfo    no 
    pragma -hastypedestroy no 
    pragma -hasinstances   no

    delegate typemethod * to stringhandler

    typeconstructor {
        set stringhandler string
    }
}
}]

Here we've used the [cmd pragma] statement to tell Snit that we don't
want the [method info] typemethod or the [method destroy] typemethod,
and that our type has no instances; this eliminates the 
[method create] typemethod and all related code.  As
a result, our ensemble command will be well-behaved, with no
unexpected subcommands.

[section {PRAGMAS}]

[subsection {What is a pragma?}]







|













|
|












|







3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
}
}]

Now the type command itself is your ensemble command.

[para]

This method has only one drawback, and though it's major, it's
also surmountable.  Your new ensemble command will have
[method create], [method info] and [method destroy] subcommands
you don't want.  And worse yet, since the [method create] method
can be implicit, users of your command will accidentally be creating
instances of your [cmd mystring] type if they should mispell one
of the subcommands.  The command will succeed--the first time--but
won't do what's wanted.  This is very bad.

[para]

The work around is to set some [sectref {PRAGMAS}], as shown here:

[example {snit::type mystring {
    pragma -hastypeinfo    no
    pragma -hastypedestroy no
    pragma -hasinstances   no

    delegate typemethod * to stringhandler

    typeconstructor {
        set stringhandler string
    }
}
}]

Here we've used the [cmd pragma] statement to tell Snit that we don't
want the [method info] typemethod or the [method destroy] typemethod,
and that our type has no instances; this eliminates the
[method create] typemethod and all related code.  As
a result, our ensemble command will be well-behaved, with no
unexpected subcommands.

[section {PRAGMAS}]

[subsection {What is a pragma?}]
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
[para]

Pragmas [const -hastypemethods] and [const -hasinstances] cannot
both be false (or there'd be nothing left).

[subsection {How can I get rid of type methods altogether?}]

Normal Tk widget type commands don't have subcommands; all they do is 
create widgets--in Snit terms, the type command calls the 
[method create] type method directly.  To get the same behavior from 
Snit, set the [const -hastypemethods] pragma to [const no]:

[example {snit::type dog {
    pragma -hastypemethods no
    #...
}

# Creates ::spot
dog spot

# Tries to create an instance called ::create
dog create spot
}]

Pragmas [const -hastypemethods] and [const -hasinstances] cannot
both be false (or there'd be nothing left).

[subsection {Why can't I create an object that replaces an old object with the same name?}]

Up until Snit 0.95, you could use any name for an instance of a 
[cmd snit::type], even if the name was already in use by some other
object or command.  You could do the following, for example:

[example {snit::type dog { ... }

dog proc
}]







|
|
|



















|







3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
[para]

Pragmas [const -hastypemethods] and [const -hasinstances] cannot
both be false (or there'd be nothing left).

[subsection {How can I get rid of type methods altogether?}]

Normal Tk widget type commands don't have subcommands; all they do is
create widgets--in Snit terms, the type command calls the
[method create] type method directly.  To get the same behavior from
Snit, set the [const -hastypemethods] pragma to [const no]:

[example {snit::type dog {
    pragma -hastypemethods no
    #...
}

# Creates ::spot
dog spot

# Tries to create an instance called ::create
dog create spot
}]

Pragmas [const -hastypemethods] and [const -hasinstances] cannot
both be false (or there'd be nothing left).

[subsection {Why can't I create an object that replaces an old object with the same name?}]

Up until Snit 0.95, you could use any name for an instance of a
[cmd snit::type], even if the name was already in use by some other
object or command.  You could do the following, for example:

[example {snit::type dog { ... }

dog proc
}]
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
[subsection {How can I make my simple type run faster?}]

In Snit 1.x, you can set the [const -simpledispatch] pragma to [const yes].

[para]

Snit 1.x method dispatch is both flexible and fast, but the flexibility
comes with a price.  If your type doesn't require the flexibility, the 
[const -simpledispatch] pragma allows you to substitute a simpler
dispatch mechanism that runs quite a bit faster.  The limitations
are these:

[list_begin itemized]

[item] Methods cannot be delegated.
[item] [cmd uplevel] and [cmd upvar] do not work as expected: the
caller's scope is two levels up rather than one.
[item] The option-handling methods 
([cmd cget], [cmd configure], and [cmd configurelist]) are very
slightly slower.
[list_end]

In Snit 2.2, the [const -simpledispatch] macro is obsolete, and
ignored; all Snit 2.2 method dispatch is faster than Snit 1.x's 
[const -simpledispatch].

[section {MACROS}]

[subsection {What is a macro?}]

A Snit macro is nothing more than a Tcl proc that's defined in the 
Tcl interpreter used to compile Snit type definitions.

[subsection {What are macros good for?}]

You can use Snit macros to define new type definition syntax, and to
support conditional compilation.








|









|





|






|







3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
[subsection {How can I make my simple type run faster?}]

In Snit 1.x, you can set the [const -simpledispatch] pragma to [const yes].

[para]

Snit 1.x method dispatch is both flexible and fast, but the flexibility
comes with a price.  If your type doesn't require the flexibility, the
[const -simpledispatch] pragma allows you to substitute a simpler
dispatch mechanism that runs quite a bit faster.  The limitations
are these:

[list_begin itemized]

[item] Methods cannot be delegated.
[item] [cmd uplevel] and [cmd upvar] do not work as expected: the
caller's scope is two levels up rather than one.
[item] The option-handling methods
([cmd cget], [cmd configure], and [cmd configurelist]) are very
slightly slower.
[list_end]

In Snit 2.2, the [const -simpledispatch] macro is obsolete, and
ignored; all Snit 2.2 method dispatch is faster than Snit 1.x's
[const -simpledispatch].

[section {MACROS}]

[subsection {What is a macro?}]

A Snit macro is nothing more than a Tcl proc that's defined in the
Tcl interpreter used to compile Snit type definitions.

[subsection {What are macros good for?}]

You can use Snit macros to define new type definition syntax, and to
support conditional compilation.

4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
        method wagtail {} {...}
    }
}
}]

[subsection {How do I define new type definition syntax?}]

Use a macro.  For example, your [cmd snit::widget]'s 
[const -background] option should be propagated to a number
of component widgets.  You could implement that like this:

[example {snit::widget mywidget {
    option -background -default white -configuremethod PropagateBackground

    method PropagateBackground {option value} {







|







4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
        method wagtail {} {...}
    }
}
}]

[subsection {How do I define new type definition syntax?}]

Use a macro.  For example, your [cmd snit::widget]'s
[const -background] option should be propagated to a number
of component widgets.  You could implement that like this:

[example {snit::widget mywidget {
    option -background -default white -configuremethod PropagateBackground

    method PropagateBackground {option value} {
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
them in the global namespace, as shown above.  But if you're using
them to define types or widgets for use by others, you should define
your macros in the same namespace as your types or widgets.  That way,
they won't conflict with other people's macros.

[para]

If my fancy [cmd snit::widget] is called [cmd ::mylib::mywidget], 
for example, then I should define my [cmd propagate] macro as
[cmd ::mylib::propagate]:


[example {snit::macro mylib::propagate {option "to" components} { ... }

snit::widget ::mylib::mywidget {
    option -background default -white
    option -foreground default -black

    mylib::propagate -background to {comp1 comp2 comp3}
    mylib::propagate -foreground to {comp1 comp2 comp3}
}
}]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph snit] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords class {object oriented} object C++]
[keywords {Incr Tcl} BWidget]
[keywords widget adaptors {widget adaptors} {mega widget}]
[manpage_end]







|


<












|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<

4090
4091
4092
4093
4094
4095
4096
4097
4098
4099

4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112

4113













4114
them in the global namespace, as shown above.  But if you're using
them to define types or widgets for use by others, you should define
your macros in the same namespace as your types or widgets.  That way,
they won't conflict with other people's macros.

[para]

If my fancy [cmd snit::widget] is called [cmd ::mylib::mywidget],
for example, then I should define my [cmd propagate] macro as
[cmd ::mylib::propagate]:


[example {snit::macro mylib::propagate {option "to" components} { ... }

snit::widget ::mylib::mywidget {
    option -background default -white
    option -foreground default -black

    mylib::propagate -background to {comp1 comp2 comp3}
    mylib::propagate -foreground to {comp1 comp2 comp3}
}
}]

[vset CATEGORY snit]

[include ../doctools2base/include/feedback.inc]













[manpage_end]

Changes to modules/soundex/soundex.man.

1
2




3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin soundex n 1.0]




[copyright {????, Algorithm: Donald E. Knuth}]
[copyright {2003, Documentation: Andreas Kupries <[email protected]>}]
[copyright {1998, Tcl port: Evan Rempel <[email protected]>}]
[moddesc   {Soundex}]
[titledesc {Soundex}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]


>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin soundex n 1.0]
[keywords knuth]
[keywords soundex]
[keywords {text comparison}]
[keywords {text likeness}]
[copyright {????, Algorithm: Donald E. Knuth}]
[copyright {2003, Documentation: Andreas Kupries <[email protected]>}]
[copyright {1998, Tcl port: Evan Rempel <[email protected]>}]
[moddesc   {Soundex}]
[titledesc {Soundex}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

Computes the soundex code of the input [arg string] using
Knuth's algorithm and returns it as the result of the
command.

[list_end]


[section EXAMPLES]

[example {
    % ::soundex::knuth Knuth
    K530
}]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph soundex] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords soundex knuth {text comparison} {text likeness}]
[manpage_end]







<







<
|
<
<
|
<
<
<
<
<
<
<
<

29
30
31
32
33
34
35

36
37
38
39
40
41
42

43


44








45

Computes the soundex code of the input [arg string] using
Knuth's algorithm and returns it as the result of the
command.

[list_end]


[section EXAMPLES]

[example {
    % ::soundex::knuth Knuth
    K530
}]


[vset CATEGORY soundex]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/stooop/stooop.man.

1
2




3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin stooop n 4.4.1]




[moddesc   {Simple Tcl Only Object Oriented Programming}]
[titledesc {Object oriented extension.}]
[category  {Programming tools}]
[require Tcl 8.3]
[require stooop [opt 4.4.1]]
[description]
[para]


>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin stooop n 4.4.1]
[keywords C++]
[keywords class]
[keywords object]
[keywords {object oriented}]
[moddesc   {Simple Tcl Only Object Oriented Programming}]
[titledesc {Object oriented extension.}]
[category  {Programming tools}]
[require Tcl 8.3]
[require stooop [opt 4.4.1]]
[description]
[para]
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[para]

This manual is very succinct and is to be used as a quick reminder for
the programmer, who should have read the thorough [uri stooop_man.html]
HTML documentation at this point.

[list_begin definitions]


[call [cmd ::stooop::class] [arg {name body}]]

This command creates a class. The body, similar in contents to a Tcl
namespace (which a class actually also is), contains member procedure
definitions. Member procedures can also be defined outside the class
body, by prefixing their name with [const class::], as you would







<







22
23
24
25
26
27
28

29
30
31
32
33
34
35
[para]

This manual is very succinct and is to be used as a quick reminder for
the programmer, who should have read the thorough [uri stooop_man.html]
HTML documentation at this point.

[list_begin definitions]


[call [cmd ::stooop::class] [arg {name body}]]

This command creates a class. The body, similar in contents to a Tcl
namespace (which a class actually also is), contains member procedure
definitions. Member procedures can also be defined outside the class
body, by prefixing their name with [const class::], as you would
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
This is the optional copy procedure for the class. It must have the
same name as the class and exactly 2 arguments named [const this] and
[const copy]. It is invoked following a [cmd new] invocation on an
existing object of the class.

[list_end]


[call [cmd ::stooop::new] [arg class] [opt [arg {arg arg ...}]]]

This command is used to create an object. The first argument is the
class name and is followed by the arguments needed by the
corresponding class constructor. A unique identifier for the object
just created is returned.








<







78
79
80
81
82
83
84

85
86
87
88
89
90
91
This is the optional copy procedure for the class. It must have the
same name as the class and exactly 2 arguments named [const this] and
[const copy]. It is invoked following a [cmd new] invocation on an
existing object of the class.

[list_end]


[call [cmd ::stooop::new] [arg class] [opt [arg {arg arg ...}]]]

This command is used to create an object. The first argument is the
class name and is followed by the arguments needed by the
corresponding class constructor. A unique identifier for the object
just created is returned.

117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
[list_end]

[section DEBUGGING]

[list_begin definitions]

[def {Environment variables}]


[list_begin definitions]

[def [var STOOOPCHECKDATA]]

Setting this variable to any true value will cause stooop to check for
invalid member or class data access.







<







119
120
121
122
123
124
125

126
127
128
129
130
131
132
[list_end]

[section DEBUGGING]

[list_begin definitions]

[def {Environment variables}]


[list_begin definitions]

[def [var STOOOPCHECKDATA]]

Setting this variable to any true value will cause stooop to check for
invalid member or class data access.
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200

[const stderr] or a file name, activates data tracing. The stooop
library will then output to the specified channel 1 line of
informational text for each member data access.

[def [var STOOOPTRACEDATAFORMAT]]

Defines the trace data output format. Defaults to 
[const {"class: %C, procedure: %p, array: %A, object: %O, member: %m, operation: %o, value: %v"}].

[def [var STOOOPTRACEDATAOPERATIONS]]

When tracing data output, by default, all read, write and unsetting
accesses are reported, but the user can set this variable to any
combination of the letters [const r], [const w], and [const u] for
more specific tracing (please refer to the [cmd trace] Tcl manual page
for more information).

[def [var STOOOPTRACEALL]]

Setting this environment variable to either [const stdout],

[const stderr] or a file name, enables both procedure and data
tracing.

[list_end]


[call [cmd ::stooop::printObjects] [opt [arg pattern]]]

Prints an ordered list of existing objects, in creation order, oldest
first. Each output line contains the class name, object identifier and
the procedure within which the creation occurred. The optional pattern
argument (as in the Tcl [cmd {string match}] command) can be used to







|


















<







168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193

194
195
196
197
198
199
200

[const stderr] or a file name, activates data tracing. The stooop
library will then output to the specified channel 1 line of
informational text for each member data access.

[def [var STOOOPTRACEDATAFORMAT]]

Defines the trace data output format. Defaults to
[const {"class: %C, procedure: %p, array: %A, object: %O, member: %m, operation: %o, value: %v"}].

[def [var STOOOPTRACEDATAOPERATIONS]]

When tracing data output, by default, all read, write and unsetting
accesses are reported, but the user can set this variable to any
combination of the letters [const r], [const w], and [const u] for
more specific tracing (please refer to the [cmd trace] Tcl manual page
for more information).

[def [var STOOOPTRACEALL]]

Setting this environment variable to either [const stdout],

[const stderr] or a file name, enables both procedure and data
tracing.

[list_end]


[call [cmd ::stooop::printObjects] [opt [arg pattern]]]

Prints an ordered list of existing objects, in creation order, oldest
first. Each output line contains the class name, object identifier and
the procedure within which the creation occurred. The optional pattern
argument (as in the Tcl [cmd {string match}] command) can be used to
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234

[list_end]

[section EXAMPLES]

Please see the full HTML documentation in [uri stooop_man.html].

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph stooop] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords class {object oriented} object C++]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<

214
215
216
217
218
219
220

221


222








223

[list_end]

[section EXAMPLES]

Please see the full HTML documentation in [uri stooop_man.html].


[vset CATEGORY stooop]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/string/token.man.

1




2
3
4
5
6
7
8
9
10
11
12
[manpage_begin string::token n 1]




[moddesc   {Text and string utilities}]
[titledesc {Regex based iterative lexing}]
[category  {Text processing}]
[keywords string tokenization lexing regex]
[require Tcl 8.5]
[require string::token [opt 1]]
[require fileutil]
[description]

This package provides commands for regular expression based lexing
(tokenization) of strings.

>
>
>
>



<







1
2
3
4
5
6
7
8

9
10
11
12
13
14
15
[manpage_begin string::token n 1]
[keywords lexing]
[keywords regex]
[keywords string]
[keywords tokenization]
[moddesc   {Text and string utilities}]
[titledesc {Regex based iterative lexing}]
[category  {Text processing}]

[require Tcl 8.5]
[require string::token [opt 1]]
[require fileutil]
[description]

This package provides commands for regular expression based lexing
(tokenization) of strings.
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103

[para] Further note that all regex patterns are implicitly prefixed
with the constraint escape [const \A] to ensure that a match starts
exactly at the character index found in [arg startvar].

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph textutil] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]







<
|
<
<
|
<
<
<
<
<
<

88
89
90
91
92
93
94

95


96






97

[para] Further note that all regex patterns are implicitly prefixed
with the constraint escape [const \A] to ensure that a match starts
exactly at the character index found in [arg startvar].

[list_end]


[vset CATEGORY textutil]


[include ../doctools2base/include/feedback.inc]






[manpage_end]

Changes to modules/string/token_shell.man.

1






2
3
4
5
6
7
8
9
10
11
12
[manpage_begin string::token::shell n 1.1]






[moddesc   {Text and string utilities}]
[titledesc {Parsing of shell command line}]
[category  {Text processing}]
[keywords string shell bash tokenization parsing lexing]
[require Tcl 8.5]
[require string::token::shell [opt 1.1]]
[require string::token [opt 1]]
[require fileutil]
[description]

This package provides a command which parses a line of text using

>
>
>
>
>
>



<







1
2
3
4
5
6
7
8
9
10

11
12
13
14
15
16
17
[manpage_begin string::token::shell n 1.1]
[keywords bash]
[keywords lexing]
[keywords parsing]
[keywords shell]
[keywords string]
[keywords tokenization]
[moddesc   {Text and string utilities}]
[titledesc {Parsing of shell command line}]
[category  {Text processing}]

[require Tcl 8.5]
[require string::token::shell [opt 1.1]]
[require string::token [opt 1]]
[require fileutil]
[description]

This package provides a command which parses a line of text using
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
expression \\s.

[para] Whitespace may occur before the first word, or after the last word. Whitespace must occur between adjacent words.

[list_end]
[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph textutil] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]







<
|
<
<
|
<
<
<
<
<
<

125
126
127
128
129
130
131

132


133






134
expression \\s.

[para] Whitespace may occur before the first word, or after the last word. Whitespace must occur between adjacent words.

[list_end]
[list_end]


[vset CATEGORY textutil]


[include ../doctools2base/include/feedback.inc]






[manpage_end]

Changes to modules/stringprep/stringprep.man.

1
2



3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin stringprep n 1.0.1]



[copyright {2007-2009, Sergei Golovan <[email protected]>}]
[moddesc {Preparation of Internationalized Strings}]
[titledesc {Implementation of stringprep}]
[require Tcl 8.3]
[require stringprep 1.0.1]
[description]
[para]


>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin stringprep n 1.0.1]
[see_also unicode(n)]
[keywords stringprep]
[keywords unicode]
[copyright {2007-2009, Sergei Golovan <[email protected]>}]
[moddesc {Preparation of Internationalized Strings}]
[titledesc {Implementation of stringprep}]
[require Tcl 8.3]
[require stringprep 1.0.1]
[description]
[para]
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162

[enum]
    "Extensible Messaging and Presence Protocol (XMPP): Core",
    ([uri http://www.ietf.org/rfc/rfc3920.txt])

[list_end]

[see_also unicode(n) ]

[section "AUTHORS"]
Sergei Golovan


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph stringprep] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords stringprep unicode]
[manpage_end]







<
<



|
<
|
<
<
<
<
<
<
<
<
<
<
<

139
140
141
142
143
144
145


146
147
148
149

150











151

[enum]
    "Extensible Messaging and Presence Protocol (XMPP): Core",
    ([uri http://www.ietf.org/rfc/rfc3920.txt])

[list_end]



[section "AUTHORS"]
Sergei Golovan

[vset CATEGORY stringprep]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/stringprep/stringprep_data.man.

1
2


3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin stringprep::data n 1.0.1]


[copyright {2007-2009, Sergei Golovan <[email protected]>}]
[moddesc {Preparation of Internationalized Strings}]
[titledesc {stringprep data tables, generated, internal}]
[require Tcl 8.3]
[require stringprep::data 1.0.1]
[description]
[para]

The [package stringprep::data] package is a helper for
[package stringprep], providing it with the data tables needed to
perform its functions. It is an [emph internal] package which should
not be accessed on its own. Because of that it has no publicly
documented API either. Its implementation is generated by a script.

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph stringprep] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords stringprep unicode]
[manpage_end]


>
>














<
|
<
<
|
<
<
<
<
<
<
<
<

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

19


20








21
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin stringprep::data n 1.0.1]
[keywords stringprep]
[keywords unicode]
[copyright {2007-2009, Sergei Golovan <[email protected]>}]
[moddesc {Preparation of Internationalized Strings}]
[titledesc {stringprep data tables, generated, internal}]
[require Tcl 8.3]
[require stringprep::data 1.0.1]
[description]
[para]

The [package stringprep::data] package is a helper for
[package stringprep], providing it with the data tables needed to
perform its functions. It is an [emph internal] package which should
not be accessed on its own. Because of that it has no publicly
documented API either. Its implementation is generated by a script.


[vset CATEGORY stringprep]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/stringprep/unicode.man.

1
2



3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin unicode n 1.0.0]



[copyright {2007, Sergei Golovan <[email protected]>}]
[moddesc {Unicode normalization}]
[titledesc {Implementation of Unicode normalization}]
[require Tcl 8.3]
[require unicode 1.0]
[description]
[para]


>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin unicode n 1.0.0]
[see_also stringprep(n)]
[keywords normalization]
[keywords unicode]
[copyright {2007, Sergei Golovan <[email protected]>}]
[moddesc {Unicode normalization}]
[titledesc {Implementation of Unicode normalization}]
[require Tcl 8.3]
[require unicode 1.0]
[description]
[para]
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94

[enum]
    "Unicode Standard Annex #15: Unicode Normalization Forms",
    ([uri http://unicode.org/reports/tr15/])

[list_end]

[see_also stringprep(n) ]

[section "AUTHORS"]
Sergei Golovan


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph stringprep] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords unicode normalization]
[manpage_end]







<
<



|
<
|
<
<
<
<
<
<
<
<
<
<
<

71
72
73
74
75
76
77


78
79
80
81

82











83

[enum]
    "Unicode Standard Annex #15: Unicode Normalization Forms",
    ([uri http://unicode.org/reports/tr15/])

[list_end]



[section "AUTHORS"]
Sergei Golovan

[vset CATEGORY stringprep]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/stringprep/unicode_data.man.

1
2


3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin unicode::data n 1.0.0]


[copyright {2007, Sergei Golovan <[email protected]>}]
[moddesc {Preparation of Internationalized Strings}]
[titledesc {unicode data tables, generated, internal}]
[require Tcl 8.3]
[require unicode::data 1.0.0]
[description]
[para]

The [package unicode::data] package is a helper for
[package unicode], providing it with the data tables needed to
perform its functions. It is an [emph internal] package which should
not be accessed on its own. Because of that it has no publicly
documented API either. Its implementation is generated by a script.


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph stringprep] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords stringprep unicode]
[manpage_end]


>
>














|
<
|
<
<
<
<
<
<
<
<
<
<
<

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

20











21
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin unicode::data n 1.0.0]
[keywords stringprep]
[keywords unicode]
[copyright {2007, Sergei Golovan <[email protected]>}]
[moddesc {Preparation of Internationalized Strings}]
[titledesc {unicode data tables, generated, internal}]
[require Tcl 8.3]
[require unicode::data 1.0.0]
[description]
[para]

The [package unicode::data] package is a helper for
[package unicode], providing it with the data tables needed to
perform its functions. It is an [emph internal] package which should
not be accessed on its own. Because of that it has no publicly
documented API either. Its implementation is generated by a script.

[vset CATEGORY stringprep]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/struct/disjointset.man.

1







2
3
4
5
6
7
8
[manpage_begin struct::disjointset n 1.0]







[moddesc   {Tcl Data Structures}]
[titledesc {Disjoint set data structure}]
[category  {Data structures}]
[require Tcl 8.4]
[require struct::disjointset [opt 1.0]]
[description]
[para]

>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[manpage_begin struct::disjointset n 1.0]
[keywords {disjoint set}]
[keywords {equivalence class}]
[keywords find]
[keywords {merge find}]
[keywords partition]
[keywords {partitioned set}]
[keywords union]
[moddesc   {Tcl Data Structures}]
[titledesc {Disjoint set data structure}]
[category  {Data structures}]
[require Tcl 8.4]
[require struct::disjointset [opt 1.0]]
[description]
[para]
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172

The [cmd option] and the [arg arg]s determine the exact behavior of
the command. The following commands are possible for disjointset
objects:

[list_end]


[call [arg disjointsetName] [method add-partition] [arg elements]]

Creates a new partition in specified disjoint set, and fills it with
the values found in the set of [arg elements]. The command maintains
the integrity of the disjoint set, i.e. it verifies that none of the
[arg elements] are already part of the disjoint set and throws an
error otherwise.

[para]

The result of the command is the empty string.


[call [arg disjointsetName] [method partitions]]

Returns the set of partitions the named disjoint set currently
consists of.


[call [arg disjointsetName] [method num-partitions]]

Returns the number of partitions the named disjoint set currently
consists of.


[call [arg disjointsetName] [method equal] [arg a] [arg b]]

Determines if the two elements [arg a] and [arg b] of the disjoint set
belong to the same partition. The result of the method is a boolean
value, [const True] if the two elements are contained in the same
partition, and [const False] otherwise.

[para]

An error will be thrown if either [arg a] or [arg b] are not elements
of the disjoint set.


[call [arg disjointsetName] [method merge] [arg a] [arg b]]

Determines the partitions the elements [arg a] and [arg b] are
contained in and merges them into a single partition.  If the two
elements were already contained in the same partition nothing will
change.

[para]

The result of the method is the empty string.


[call [arg disjointsetName] [method find] [arg e]]

Returns the partition of the disjoint set which contains the element
[arg e].


[call [arg disjointsetName] [method destroy]]

Destroys the disjoint set object and all associated memory.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]


This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {struct :: disjointset}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[keywords {disjoint set}]
[keywords {merge find} union find partition {partitioned set} {equivalence class}]
[manpage_end]







<












<





<




<













<











<




<







<
<
<
<
<
<
|
<
|
<
<
<
<
<

95
96
97
98
99
100
101

102
103
104
105
106
107
108
109
110
111
112
113

114
115
116
117
118

119
120
121
122

123
124
125
126
127
128
129
130
131
132
133
134
135

136
137
138
139
140
141
142
143
144
145
146

147
148
149
150

151
152
153
154
155
156
157






158

159





160

The [cmd option] and the [arg arg]s determine the exact behavior of
the command. The following commands are possible for disjointset
objects:

[list_end]


[call [arg disjointsetName] [method add-partition] [arg elements]]

Creates a new partition in specified disjoint set, and fills it with
the values found in the set of [arg elements]. The command maintains
the integrity of the disjoint set, i.e. it verifies that none of the
[arg elements] are already part of the disjoint set and throws an
error otherwise.

[para]

The result of the command is the empty string.


[call [arg disjointsetName] [method partitions]]

Returns the set of partitions the named disjoint set currently
consists of.


[call [arg disjointsetName] [method num-partitions]]

Returns the number of partitions the named disjoint set currently
consists of.


[call [arg disjointsetName] [method equal] [arg a] [arg b]]

Determines if the two elements [arg a] and [arg b] of the disjoint set
belong to the same partition. The result of the method is a boolean
value, [const True] if the two elements are contained in the same
partition, and [const False] otherwise.

[para]

An error will be thrown if either [arg a] or [arg b] are not elements
of the disjoint set.


[call [arg disjointsetName] [method merge] [arg a] [arg b]]

Determines the partitions the elements [arg a] and [arg b] are
contained in and merges them into a single partition.  If the two
elements were already contained in the same partition nothing will
change.

[para]

The result of the method is the empty string.


[call [arg disjointsetName] [method find] [arg e]]

Returns the partition of the disjoint set which contains the element
[arg e].


[call [arg disjointsetName] [method destroy]]

Destroys the disjoint set object and all associated memory.

[list_end]







[vset CATEGORY {struct :: disjointset}]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/struct/graph.man.

1
2












3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[comment {-*- tcl -*-}]
[manpage_begin struct::graph n 2.4]












[copyright {2002-2009 Andreas Kupries <[email protected]>}]
[moddesc   {Tcl Data Structures}]
[titledesc {Create and manipulate directed graph objects}]
[category  {Data structures}]
[require Tcl 8.4]
[require struct::graph [opt 2.4]]
[require struct::list  [opt 1.5]]
[require struct::set   [opt 2.2.3]]
[description]
[para]


A directed graph is a structure containing two collections of
elements, called [term nodes] and [term arcs] respectively, together
with a relation ("connectivity") that places a general structure upon
the nodes and arcs.

[para]


>
>
>
>
>
>
>
>
>
>
>
>










<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

25
26
27
28
29
30
31
[comment {-*- tcl -*-}]
[manpage_begin struct::graph n 2.4]
[keywords adjacent]
[keywords arc]
[keywords cgraph]
[keywords degree]
[keywords edge]
[keywords graph]
[keywords loop]
[keywords neighbour]
[keywords node]
[keywords serialization]
[keywords subgraph]
[keywords vertex]
[copyright {2002-2009 Andreas Kupries <[email protected]>}]
[moddesc   {Tcl Data Structures}]
[titledesc {Create and manipulate directed graph objects}]
[category  {Data structures}]
[require Tcl 8.4]
[require struct::graph [opt 2.4]]
[require struct::list  [opt 1.5]]
[require struct::set   [opt 2.2.3]]
[description]
[para]


A directed graph is a structure containing two collections of
elements, called [term nodes] and [term arcs] respectively, together
with a relation ("connectivity") that places a general structure upon
the nodes and arcs.

[para]
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
is equivalent to
[para]
[example {
    ::struct::graph mygraph
    mygraph = b
}]
[para]
and 
[para]
[example {
    ::struct::graph mygraph deserialize $b
}]
[para]
is equivalent to
[para]







|







121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
is equivalent to
[para]
[example {
    ::struct::graph mygraph
    mygraph = b
}]
[para]
and
[para]
[example {
    ::struct::graph mygraph deserialize $b
}]
[para]
is equivalent to
[para]
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166

[para]

The operation assumes that the [arg sourcegraph] provides the method
[method serialize] and that this method returns a valid graph
serialization.


[call [arg graphName] [method -->] [arg destgraph]]

This is the [term {reverse assignment}] operator for graph objects. It
copies the graph contained in the graph object [arg graphName] over
the graph data in the object [arg destgraph].

The old contents of [arg destgraph] are deleted by this operation.







<







163
164
165
166
167
168
169

170
171
172
173
174
175
176

[para]

The operation assumes that the [arg sourcegraph] provides the method
[method serialize] and that this method returns a valid graph
serialization.


[call [arg graphName] [method -->] [arg destgraph]]

This is the [term {reverse assignment}] operator for graph objects. It
copies the graph contained in the graph object [arg graphName] over
the graph data in the object [arg destgraph].

The old contents of [arg destgraph] are deleted by this operation.
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
[example_end]

[para]

The operation assumes that the [arg destgraph] provides the method
[method deserialize] and that this method takes a graph serialization.


[call [arg graphName] [method append] [arg key] [arg value]]

Appends a [arg value] to one of the keyed values associated with the graph.
Returns the new value given to the attribute [arg key].


[call [arg graphName] [method deserialize] [arg serialization]]

This is the complement to [method serialize]. It replaces the graph
data in [arg graphName] with the graph described by the
[arg serialization] value. The old contents of [arg graphName] are
deleted by this operation.


[call [arg graphName] [method destroy]]

Destroys the graph, including its storage space and associated command.


[call [arg graphName] [method {arc append}] [arg arc] [arg key] [arg value]]

Appends a [arg value] to one of the keyed values associated with an
[arg arc]. Returns the new value given to the attribute [arg key].


[call [arg graphName] [method {arc attr}] [arg key]]
[call [arg graphName] [method {arc attr}] [arg key] [option -arcs] [arg list]]
[call [arg graphName] [method {arc attr}] [arg key] [option -glob] [arg globpattern]]
[call [arg graphName] [method {arc attr}] [arg key] [option -regexp] [arg repattern]]

This method retrieves the value of the attribute named [arg key], for







<




<








<



<





<







184
185
186
187
188
189
190

191
192
193
194

195
196
197
198
199
200
201
202

203
204
205

206
207
208
209
210

211
212
213
214
215
216
217
[example_end]

[para]

The operation assumes that the [arg destgraph] provides the method
[method deserialize] and that this method takes a graph serialization.


[call [arg graphName] [method append] [arg key] [arg value]]

Appends a [arg value] to one of the keyed values associated with the graph.
Returns the new value given to the attribute [arg key].


[call [arg graphName] [method deserialize] [arg serialization]]

This is the complement to [method serialize]. It replaces the graph
data in [arg graphName] with the graph described by the
[arg serialization] value. The old contents of [arg graphName] are
deleted by this operation.


[call [arg graphName] [method destroy]]

Destroys the graph, including its storage space and associated command.


[call [arg graphName] [method {arc append}] [arg arc] [arg key] [arg value]]

Appends a [arg value] to one of the keyed values associated with an
[arg arc]. Returns the new value given to the attribute [arg key].


[call [arg graphName] [method {arc attr}] [arg key]]
[call [arg graphName] [method {arc attr}] [arg key] [option -arcs] [arg list]]
[call [arg graphName] [method {arc attr}] [arg key] [option -glob] [arg globpattern]]
[call [arg graphName] [method {arc attr}] [arg key] [option -regexp] [arg repattern]]

This method retrieves the value of the attribute named [arg key], for
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413

The value is a regular expression. Only the arcs in the graph whose
names match this pattern are searched for the attribute.

[list_end]
[para]


[call [arg graphName] [method {arc delete}] [arg arc] [opt "[arg arc] ..."]]

Remove the specified arcs from the graph.


[call [arg graphName] [method {arc exists}] [arg arc]]

Return true if the specified [arg arc] exists in the graph.


[call [arg graphName] [method {arc flip}] [arg arc]]

Reverses the direction of the named [arg arc], i.e. the source and
target nodes of the arc are exchanged with each other.


[call [arg graphName] [method {arc get}] [arg arc] [arg key]]

Returns the value associated with the key [arg key] for the [arg arc].


[call [arg graphName] [method {arc getall}] [arg arc] [opt [arg pattern]]]

Returns a dictionary (suitable for use with [lb][cmd {array set}][rb])
for the [arg arc].

If the [arg pattern] is specified only the attributes whose names
match the pattern will be part of the returned dictionary. The pattern
is a [cmd glob] pattern.


[call [arg graphName] [method {arc getunweighted}]]

Returns a list containing the names of all arcs in the graph which
have no weight associated with them.


[call [arg graphName] [method {arc getweight}] [arg arc]]

Returns the weight associated with the [arg arc]. Throws an error if
the arc has no weight associated with it.


[call [arg graphName] [method {arc keys}] [arg arc] [opt [arg pattern]]]

Returns a list of keys for the [arg arc].

If the [arg pattern] is specified only the attributes whose names
match the pattern will be part of the returned list. The pattern is a
[cmd glob] pattern.


[call [arg graphName] [method {arc keyexists}] [arg arc] [arg key]]

Return true if the specified [arg key] exists for the [arg arc].


[call [arg graphName] [method {arc insert}] [arg start] [arg end] [opt [arg child]]]

Insert an arc named [arg child] into the graph beginning at the node
[arg start] and ending at the node [arg end]. If the name of the new
arc is not specified the system will generate a unique name of the
form [emph arc][arg x].


[call [arg graphName] [method {arc lappend}] [arg arc] [arg key] [arg value]]

Appends a [arg value] (as a list) to one of the keyed values
associated with an [arg arc]. Returns the new value given to the
attribute [arg key].


[call [arg graphName] [method {arc rename}] [arg arc] [arg newname]]

Renames the arc [arg arc] to [arg newname]. An error is thrown if
either the arc does not exist, or a arc with name [arg newname] does
exist. The result of the command is the new name of the arc.


[call [arg graphName] [method {arc set}] [arg arc] [arg key] [opt [arg value]]]

Set or get one of the keyed values associated with an arc. 

An arc may have any number of keyed values associated with it.  
If [arg value] is not specified, this command returns the current value assigned to the key; 
if [arg value] is specified, this command assigns that value to the key, and returns
that value.


[call [arg graphName] [method {arc setunweighted}] [opt [arg weight]]]

Sets the weight of all arcs without a weight to [arg weight]. Returns
the empty string as its result. If not present [arg weight] defaults
to [const 0].


[call [arg graphName] [method {arc setweight}] [arg arc] [arg weight]]

Sets the weight of the [arg arc] to [arg weight]. Returns [arg weight].


[call [arg graphName] [method {arc unsetweight}] [arg arc]]

Removes the weight of the [arg arc], if present. Does nothing
otherwise. Returns the empty string.


[call [arg graphName] [method {arc hasweight}] [arg arc]]

Determines if the [arg arc] has a weight associated with it.  The
result is a boolean value, [const True] if a weight is defined, and
[const False] otherwise.


[call [arg graphName] [method {arc source}] [arg arc]]

Return the node the given [arg arc] begins at.


[call [arg graphName] [method {arc target}] [arg arc]]

Return the node the given [arg arc] ends at.


[call [arg graphName] [method {arc nodes}] [arg arc]]

Return the nodes the given [arg arc] begins and ends at,
as a two-element list.


[call [arg graphName] [method {arc move-source}] [arg arc] [arg newsource]]

Changes the source node of the arc to [arg newsource]. It can be said
that the arc rotates around its target node.


[call [arg graphName] [method {arc move-target}] [arg arc] [arg newtarget]]

Changes the target node of the arc to [arg newtarget]. It can be said
that the arc rotates around its source node.


[call [arg graphName] [method {arc move}] [arg arc] [arg newsource] [arg newtarget]]

Changes both source and target nodes of the arc to [arg newsource],
and [arg newtarget] resp.


[call [arg graphName] [method {arc unset}] [arg arc] [arg key]]

Remove a keyed value from the arc [arg arc]. The method will do
nothing if the [arg key] does not exist.


[call [arg graphName] [method {arc weights}]]

Returns a dictionary whose keys are the names of all arcs which have a
weight associated with them, and the values are these weights.


[call [arg graphName] [method arcs] [opt "-key [arg key]"] [opt "-value [arg value]"] [opt "-filter [arg cmdprefix]"] [opt "-in|-out|-adj|-inner|-embedding [arg {node node...}]"]]

Returns a list of arcs in the graph. If no restriction is specified a
list containing all arcs is returned. Restrictions can limit the list
of returned arcs based on the nodes that are connected by the arc, on
the keyed values associated with the arc, or both. A general filter







<




<



<






<



<










<





<




<









<



<








<





<







<


|

|
|


<







<



<





<







<




<



<






<




<






<




<






<




<







245
246
247
248
249
250
251

252
253
254
255

256
257
258

259
260
261
262
263
264

265
266
267

268
269
270
271
272
273
274
275
276
277

278
279
280
281
282

283
284
285
286

287
288
289
290
291
292
293
294
295

296
297
298

299
300
301
302
303
304
305
306

307
308
309
310
311

312
313
314
315
316
317
318

319
320
321
322
323
324
325
326

327
328
329
330
331
332
333

334
335
336

337
338
339
340
341

342
343
344
345
346
347
348

349
350
351
352

353
354
355

356
357
358
359
360
361

362
363
364
365

366
367
368
369
370
371

372
373
374
375

376
377
378
379
380
381

382
383
384
385

386
387
388
389
390
391
392

The value is a regular expression. Only the arcs in the graph whose
names match this pattern are searched for the attribute.

[list_end]
[para]


[call [arg graphName] [method {arc delete}] [arg arc] [opt "[arg arc] ..."]]

Remove the specified arcs from the graph.


[call [arg graphName] [method {arc exists}] [arg arc]]

Return true if the specified [arg arc] exists in the graph.


[call [arg graphName] [method {arc flip}] [arg arc]]

Reverses the direction of the named [arg arc], i.e. the source and
target nodes of the arc are exchanged with each other.


[call [arg graphName] [method {arc get}] [arg arc] [arg key]]

Returns the value associated with the key [arg key] for the [arg arc].


[call [arg graphName] [method {arc getall}] [arg arc] [opt [arg pattern]]]

Returns a dictionary (suitable for use with [lb][cmd {array set}][rb])
for the [arg arc].

If the [arg pattern] is specified only the attributes whose names
match the pattern will be part of the returned dictionary. The pattern
is a [cmd glob] pattern.


[call [arg graphName] [method {arc getunweighted}]]

Returns a list containing the names of all arcs in the graph which
have no weight associated with them.


[call [arg graphName] [method {arc getweight}] [arg arc]]

Returns the weight associated with the [arg arc]. Throws an error if
the arc has no weight associated with it.


[call [arg graphName] [method {arc keys}] [arg arc] [opt [arg pattern]]]

Returns a list of keys for the [arg arc].

If the [arg pattern] is specified only the attributes whose names
match the pattern will be part of the returned list. The pattern is a
[cmd glob] pattern.


[call [arg graphName] [method {arc keyexists}] [arg arc] [arg key]]

Return true if the specified [arg key] exists for the [arg arc].


[call [arg graphName] [method {arc insert}] [arg start] [arg end] [opt [arg child]]]

Insert an arc named [arg child] into the graph beginning at the node
[arg start] and ending at the node [arg end]. If the name of the new
arc is not specified the system will generate a unique name of the
form [emph arc][arg x].


[call [arg graphName] [method {arc lappend}] [arg arc] [arg key] [arg value]]

Appends a [arg value] (as a list) to one of the keyed values
associated with an [arg arc]. Returns the new value given to the
attribute [arg key].


[call [arg graphName] [method {arc rename}] [arg arc] [arg newname]]

Renames the arc [arg arc] to [arg newname]. An error is thrown if
either the arc does not exist, or a arc with name [arg newname] does
exist. The result of the command is the new name of the arc.


[call [arg graphName] [method {arc set}] [arg arc] [arg key] [opt [arg value]]]

Set or get one of the keyed values associated with an arc.

An arc may have any number of keyed values associated with it.
If [arg value] is not specified, this command returns the current value assigned to the key;
if [arg value] is specified, this command assigns that value to the key, and returns
that value.


[call [arg graphName] [method {arc setunweighted}] [opt [arg weight]]]

Sets the weight of all arcs without a weight to [arg weight]. Returns
the empty string as its result. If not present [arg weight] defaults
to [const 0].


[call [arg graphName] [method {arc setweight}] [arg arc] [arg weight]]

Sets the weight of the [arg arc] to [arg weight]. Returns [arg weight].


[call [arg graphName] [method {arc unsetweight}] [arg arc]]

Removes the weight of the [arg arc], if present. Does nothing
otherwise. Returns the empty string.


[call [arg graphName] [method {arc hasweight}] [arg arc]]

Determines if the [arg arc] has a weight associated with it.  The
result is a boolean value, [const True] if a weight is defined, and
[const False] otherwise.


[call [arg graphName] [method {arc source}] [arg arc]]

Return the node the given [arg arc] begins at.


[call [arg graphName] [method {arc target}] [arg arc]]

Return the node the given [arg arc] ends at.


[call [arg graphName] [method {arc nodes}] [arg arc]]

Return the nodes the given [arg arc] begins and ends at,
as a two-element list.


[call [arg graphName] [method {arc move-source}] [arg arc] [arg newsource]]

Changes the source node of the arc to [arg newsource]. It can be said
that the arc rotates around its target node.


[call [arg graphName] [method {arc move-target}] [arg arc] [arg newtarget]]

Changes the target node of the arc to [arg newtarget]. It can be said
that the arc rotates around its source node.


[call [arg graphName] [method {arc move}] [arg arc] [arg newsource] [arg newtarget]]

Changes both source and target nodes of the arc to [arg newsource],
and [arg newtarget] resp.


[call [arg graphName] [method {arc unset}] [arg arc] [arg key]]

Remove a keyed value from the arc [arg arc]. The method will do
nothing if the [arg key] does not exist.


[call [arg graphName] [method {arc weights}]]

Returns a dictionary whose keys are the names of all arcs which have a
weight associated with them, and the values are these weights.


[call [arg graphName] [method arcs] [opt "-key [arg key]"] [opt "-value [arg value]"] [opt "-filter [arg cmdprefix]"] [opt "-in|-out|-adj|-inner|-embedding [arg {node node...}]"]]

Returns a list of arcs in the graph. If no restriction is specified a
list containing all arcs is returned. Restrictions can limit the list
of returned arcs based on the nodes that are connected by the arc, on
the keyed values associated with the arc, or both. A general filter
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
[def "[option -value] [arg value]"]

This restriction can only be used in combination with

[option -key]. It limits the list of arcs that are returned to those
arcs whose associated key [arg key] has the value [arg value].


[def "[option -filter] [arg cmdrefix]"]

Limit the list of arcs that are returned to those arcs that pass the
test. The command in [arg cmdprefix] is called with two arguments, the
name of the graph object, and the name of the arc in question. It is
executed in the context of the caller and has to return a boolean
value. Arcs for which the command returns [const false] are removed
from the result list before it is returned to the caller.

[list_end]


[call [arg graphName] [method lappend] [arg key] [arg value]]

Appends a [arg value] (as a list) to one of the keyed values
associated with the graph. Returns the new value given to the
attribute [arg key].


[call [arg graphName] [method {node append}] [arg node] [arg key] [arg value]]

Appends a [arg value] to one of the keyed values associated with an
[arg node]. Returns the new value given to the attribute [arg key].


[call [arg graphName] [method {node attr}] [arg key]]
[call [arg graphName] [method {node attr}] [arg key] [option -nodes] [arg list]]
[call [arg graphName] [method {node attr}] [arg key] [option -glob] [arg globpattern]]
[call [arg graphName] [method {node attr}] [arg key] [option -regexp] [arg repattern]]

This method retrieves the value of the attribute named [arg key], for







<











<






<




<







456
457
458
459
460
461
462

463
464
465
466
467
468
469
470
471
472
473

474
475
476
477
478
479

480
481
482
483

484
485
486
487
488
489
490
[def "[option -value] [arg value]"]

This restriction can only be used in combination with

[option -key]. It limits the list of arcs that are returned to those
arcs whose associated key [arg key] has the value [arg value].


[def "[option -filter] [arg cmdrefix]"]

Limit the list of arcs that are returned to those arcs that pass the
test. The command in [arg cmdprefix] is called with two arguments, the
name of the graph object, and the name of the arc in question. It is
executed in the context of the caller and has to return a boolean
value. Arcs for which the command returns [const false] are removed
from the result list before it is returned to the caller.

[list_end]


[call [arg graphName] [method lappend] [arg key] [arg value]]

Appends a [arg value] (as a list) to one of the keyed values
associated with the graph. Returns the new value given to the
attribute [arg key].


[call [arg graphName] [method {node append}] [arg node] [arg key] [arg value]]

Appends a [arg value] to one of the keyed values associated with an
[arg node]. Returns the new value given to the attribute [arg key].


[call [arg graphName] [method {node attr}] [arg key]]
[call [arg graphName] [method {node attr}] [arg key] [option -nodes] [arg list]]
[call [arg graphName] [method {node attr}] [arg key] [option -glob] [arg globpattern]]
[call [arg graphName] [method {node attr}] [arg key] [option -regexp] [arg repattern]]

This method retrieves the value of the attribute named [arg key], for
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646

The value is a regular expression. Only the nodes in the graph whose
names match this pattern are searched for the attribute.

[list_end]
[para]


[call [arg graphName] [method {node degree}] [opt -in|-out] [arg node]]

Return the number of arcs adjacent to the specified [arg node]. If one
of the restrictions [option -in] or [option -out] is given only the
incoming resp. outgoing arcs are counted.


[call [arg graphName] [method {node delete}] [arg node] [opt "[arg node]..."]]

Remove the specified nodes from the graph.  All of the nodes' arcs
will be removed as well to prevent unconnected arcs.


[call [arg graphName] [method {node exists}] [arg node]]

Return true if the specified [arg node] exists in the graph.


[call [arg graphName] [method {node get}] [arg node] [arg key]]

Return the value associated with the key [arg key] for the [arg node].


[call [arg graphName] [method {node getall}] [arg node] [opt [arg pattern]]]

Returns a dictionary (suitable for use with [lb][cmd {array set}][rb])
for the [arg node].

If the [arg pattern] is specified only the attributes whose names
match the pattern will be part of the returned dictionary. The pattern
is a [cmd glob] pattern.


[call [arg graphName] [method {node keys}] [arg node] [opt [arg pattern]]]

Returns a list of keys for the [arg node].

If the [arg pattern] is specified only the attributes whose names
match the pattern will be part of the returned list. The pattern is a
[cmd glob] pattern.


[call [arg graphName] [method {node keyexists}] [arg node] [arg key]]

Return true if the specified [arg key] exists for the [arg node].


[call [arg graphName] [method {node insert}] [opt [arg node]...]]

Insert one or more nodes into the graph. The new nodes have no arcs
connected to them. If no node is specified one node will be inserted,
and the system will generate a unique name of the form
[emph node][arg x] for it.


[call [arg graphName] [method {node lappend}] [arg node] [arg key] [arg value]]

Appends a [arg value] (as a list) to one of the keyed values
associated with an [arg node]. Returns the new value given to the
attribute [arg key].


[call [arg graphName] [method {node opposite}] [arg node] [arg arc]]

Return the node at the other end of the specified [arg arc], which has
to be adjacent to the given [arg node].


[call [arg graphName] [method {node rename}] [arg node] [arg newname]]

Renames the node [arg node] to [arg newname]. An error is thrown if
either the node does not exist, or a node with name [arg newname] does
exist. The result of the command is the new name of the node.


[call [arg graphName] [method {node set}] [arg node] [arg key] [opt [arg value]]]

Set or get one of the keyed values associated with a node. A node may have any
number of keyed values associated with it.  If [arg value] is not
specified, this command returns the current value assigned to the key;
if [arg value] is specified, this command assigns that value to the
key.


[call [arg graphName] [method {node unset}] [arg node] [arg key]]

Remove a keyed value from the node [arg node]. The method will do
nothing if the [arg key] does not exist.


[call [arg graphName] [method nodes] [opt "-key [arg key]"] [opt "-value [arg value]"] [opt "-filter [arg cmdprefix]"] [opt "-in|-out|-adj|-inner|-embedding [arg node] [arg node]..."]]

Return a list of nodes in the graph. Restrictions can limit the list
of returned nodes based on neighboring nodes, or based on the keyed
values associated with the node. The restrictions that involve
neighboring nodes have a list of nodes as argument, specified after







<





<






<




<



<










<








<



<








<





<






<





<









<




<







518
519
520
521
522
523
524

525
526
527
528
529

530
531
532
533
534
535

536
537
538
539

540
541
542

543
544
545
546
547
548
549
550
551
552

553
554
555
556
557
558
559
560

561
562
563

564
565
566
567
568
569
570
571

572
573
574
575
576

577
578
579
580
581
582

583
584
585
586
587

588
589
590
591
592
593
594
595
596

597
598
599
600

601
602
603
604
605
606
607

The value is a regular expression. Only the nodes in the graph whose
names match this pattern are searched for the attribute.

[list_end]
[para]


[call [arg graphName] [method {node degree}] [opt -in|-out] [arg node]]

Return the number of arcs adjacent to the specified [arg node]. If one
of the restrictions [option -in] or [option -out] is given only the
incoming resp. outgoing arcs are counted.


[call [arg graphName] [method {node delete}] [arg node] [opt "[arg node]..."]]

Remove the specified nodes from the graph.  All of the nodes' arcs
will be removed as well to prevent unconnected arcs.


[call [arg graphName] [method {node exists}] [arg node]]

Return true if the specified [arg node] exists in the graph.


[call [arg graphName] [method {node get}] [arg node] [arg key]]

Return the value associated with the key [arg key] for the [arg node].


[call [arg graphName] [method {node getall}] [arg node] [opt [arg pattern]]]

Returns a dictionary (suitable for use with [lb][cmd {array set}][rb])
for the [arg node].

If the [arg pattern] is specified only the attributes whose names
match the pattern will be part of the returned dictionary. The pattern
is a [cmd glob] pattern.


[call [arg graphName] [method {node keys}] [arg node] [opt [arg pattern]]]

Returns a list of keys for the [arg node].

If the [arg pattern] is specified only the attributes whose names
match the pattern will be part of the returned list. The pattern is a
[cmd glob] pattern.


[call [arg graphName] [method {node keyexists}] [arg node] [arg key]]

Return true if the specified [arg key] exists for the [arg node].


[call [arg graphName] [method {node insert}] [opt [arg node]...]]

Insert one or more nodes into the graph. The new nodes have no arcs
connected to them. If no node is specified one node will be inserted,
and the system will generate a unique name of the form
[emph node][arg x] for it.


[call [arg graphName] [method {node lappend}] [arg node] [arg key] [arg value]]

Appends a [arg value] (as a list) to one of the keyed values
associated with an [arg node]. Returns the new value given to the
attribute [arg key].


[call [arg graphName] [method {node opposite}] [arg node] [arg arc]]

Return the node at the other end of the specified [arg arc], which has
to be adjacent to the given [arg node].


[call [arg graphName] [method {node rename}] [arg node] [arg newname]]

Renames the node [arg node] to [arg newname]. An error is thrown if
either the node does not exist, or a node with name [arg newname] does
exist. The result of the command is the new name of the node.


[call [arg graphName] [method {node set}] [arg node] [arg key] [opt [arg value]]]

Set or get one of the keyed values associated with a node. A node may have any
number of keyed values associated with it.  If [arg value] is not
specified, this command returns the current value assigned to the key;
if [arg value] is specified, this command assigns that value to the
key.


[call [arg graphName] [method {node unset}] [arg node] [arg key]]

Remove a keyed value from the node [arg node]. The method will do
nothing if the [arg key] does not exist.


[call [arg graphName] [method nodes] [opt "-key [arg key]"] [opt "-value [arg value]"] [opt "-filter [arg cmdprefix]"] [opt "-in|-out|-adj|-inner|-embedding [arg node] [arg node]..."]]

Return a list of nodes in the graph. Restrictions can limit the list
of returned nodes based on neighboring nodes, or based on the keyed
values associated with the node. The restrictions that involve
neighboring nodes have a list of nodes as argument, specified after
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
name of the graph object, and the name of the node in question. It is
executed in the context of the caller and has to return a boolean
value. Nodes for which the command returns [const false] are removed
from the result list before it is returned to the caller.

[list_end]


[call [arg graphName] [method get] [arg key]]

Return the value associated with the key [arg key] for the graph.


[call [arg graphName] [method getall] [opt [arg pattern]]]

Returns a dictionary (suitable for use with [lb][cmd {array set}][rb])
for the whole graph.

If the [arg pattern] is specified only the attributes whose names
match the pattern will be part of the returned dictionary. The pattern
is a [cmd glob] pattern.


[call [arg graphName] [method keys] [opt [arg pattern]]]

Returns a list of keys for the whole graph.

If the [arg pattern] is specified only the attributes whose names
match the pattern will be part of the returned list. The pattern is a
[cmd glob] pattern.


[call [arg graphName] [method keyexists] [arg key]]

Return true if the specified [arg key] exists for the whole graph.


[call [arg graphName] [method serialize] [opt [arg node]...]]

This method serializes the sub-graph spanned up by the [arg node]s. In
other words it returns a tcl value completely describing that
graph. If no nodes are specified the whole graph will be serialized.








<



<










<








<



<







663
664
665
666
667
668
669

670
671
672

673
674
675
676
677
678
679
680
681
682

683
684
685
686
687
688
689
690

691
692
693

694
695
696
697
698
699
700
name of the graph object, and the name of the node in question. It is
executed in the context of the caller and has to return a boolean
value. Nodes for which the command returns [const false] are removed
from the result list before it is returned to the caller.

[list_end]


[call [arg graphName] [method get] [arg key]]

Return the value associated with the key [arg key] for the graph.


[call [arg graphName] [method getall] [opt [arg pattern]]]

Returns a dictionary (suitable for use with [lb][cmd {array set}][rb])
for the whole graph.

If the [arg pattern] is specified only the attributes whose names
match the pattern will be part of the returned dictionary. The pattern
is a [cmd glob] pattern.


[call [arg graphName] [method keys] [opt [arg pattern]]]

Returns a list of keys for the whole graph.

If the [arg pattern] is specified only the attributes whose names
match the pattern will be part of the returned list. The pattern is a
[cmd glob] pattern.


[call [arg graphName] [method keyexists] [arg key]]

Return true if the specified [arg key] exists for the whole graph.


[call [arg graphName] [method serialize] [opt [arg node]...]]

This method serializes the sub-graph spanned up by the [arg node]s. In
other words it returns a tcl value completely describing that
graph. If no nodes are specified the whole graph will be serialized.

844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
    #
    # %3 {} {{f 6 {}}} %0 {} {{a 6 {}} {b 9 {}} {c 0 {}}} %1 {} {{d 9 {}}} %2 {} {{e 0 {}}} {}
    #
    # This assumes that the graph has neither attribute data nor weighted arcs.
}]
[para]


[call [arg graphName] [method set] [arg key] [opt [arg value]]]

Set or get one of the keyed values associated with a graph. A graph
may have any number of keyed values associated with it. If [arg value]
is not specified, this command returns the current value assigned to
the key; if [arg value] is specified, this command assigns that value
to the key.


[call [arg graphName] [method swap] [arg node1] [arg node2]]

Swap the position of [arg node1] and [arg node2] in the graph.


[call [arg graphName] [method unset] [arg key]]

Remove a keyed value from the graph. The method will do nothing if the
[arg key] does not exist.


[call [arg graphName] [method walk] [arg node] \
	[opt "-order [arg order]"] \
	[opt "-type [arg type]"] \
	[opt "-dir [arg direction]"] \
	-command [arg cmd]]








<








<



<





<







800
801
802
803
804
805
806

807
808
809
810
811
812
813
814

815
816
817

818
819
820
821
822

823
824
825
826
827
828
829
    #
    # %3 {} {{f 6 {}}} %0 {} {{a 6 {}} {b 9 {}} {c 0 {}}} %1 {} {{d 9 {}}} %2 {} {{e 0 {}}} {}
    #
    # This assumes that the graph has neither attribute data nor weighted arcs.
}]
[para]


[call [arg graphName] [method set] [arg key] [opt [arg value]]]

Set or get one of the keyed values associated with a graph. A graph
may have any number of keyed values associated with it. If [arg value]
is not specified, this command returns the current value assigned to
the key; if [arg value] is specified, this command assigns that value
to the key.


[call [arg graphName] [method swap] [arg node1] [arg node2]]

Swap the position of [arg node1] and [arg node2] in the graph.


[call [arg graphName] [method unset] [arg key]]

Remove a keyed value from the graph. The method will do nothing if the
[arg key] does not exist.


[call [arg graphName] [method walk] [arg node] \
	[opt "-order [arg order]"] \
	[opt "-type [arg type]"] \
	[opt "-dir [arg direction]"] \
	-command [arg cmd]]

911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
each node, with the mode of the call ([const enter] or
[const leave]) and values [arg graphName] and the name of the current
node appended. For a pre-order walk, all nodes are [const enter]ed, for a
post-order all nodes are left. In a both-order walk the first visit of
a node [const enter]s it, the second visit [const leave]s it.

[list_end]


[section {Changes for 2.0}]
The following noteworthy changes have occurred:

[list_begin enumerated]
[enum]








<







863
864
865
866
867
868
869

870
871
872
873
874
875
876
each node, with the mode of the call ([const enter] or
[const leave]) and values [arg graphName] and the name of the current
node appended. For a pre-order walk, all nodes are [const enter]ed, for a
post-order all nodes are left. In a both-order walk the first visit of
a node [const enter]s it, the second visit [const leave]s it.

[list_end]


[section {Changes for 2.0}]
The following noteworthy changes have occurred:

[list_begin enumerated]
[enum]

968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007

[para]

Beyond the copying of whole graph objects these new API's also enable
the transfer of graph objects over arbitrary channels and for easy
persistence.


[enum]

A new method, [method attr], was added to both [method arc] and
[method node] allowing the query and retrieval of attribute data
without regard to arc and node relationships.

[enum]

Both methods [method arcs] and [method nodes] have been extended with
the ability to select arcs and nodes based on an arbitrary filtering
criterium.


[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {struct :: graph}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords graph cgraph serialization]
[keywords edge arc node vertex subgraph neighbour]
[keywords adjacent loop degree]
[manpage_end]







<












<


<
<
<
<
<
<
|
<
|
<
<
<
<
<
<
<

919
920
921
922
923
924
925

926
927
928
929
930
931
932
933
934
935
936
937

938
939






940

941







942

[para]

Beyond the copying of whole graph objects these new API's also enable
the transfer of graph objects over arbitrary channels and for easy
persistence.


[enum]

A new method, [method attr], was added to both [method arc] and
[method node] allowing the query and retrieval of attribute data
without regard to arc and node relationships.

[enum]

Both methods [method arcs] and [method nodes] have been extended with
the ability to select arcs and nodes based on an arbitrary filtering
criterium.


[list_end]







[vset CATEGORY {struct :: graph}]

[include ../doctools2base/include/feedback.inc]







[manpage_end]

Changes to modules/struct/graph1.man.

1
2


3
4
5
6
7
8
9
[comment {-*- tcl -*-}]
[manpage_begin {struct::graph_v1} n 1.2.1]


[copyright {2002 Andreas Kupries <[email protected]>}]
[moddesc   {Tcl Data Structures}]
[titledesc {Create and manipulate directed graph objects}]
[category  {Data structures}]
[require Tcl 8.2]
[require struct::graph [opt 1.2.1]]
[description]


>
>







1
2
3
4
5
6
7
8
9
10
11
[comment {-*- tcl -*-}]
[manpage_begin {struct::graph_v1} n 1.2.1]
[keywords cgraph]
[keywords graph]
[copyright {2002 Andreas Kupries <[email protected]>}]
[moddesc   {Tcl Data Structures}]
[titledesc {Create and manipulate directed graph objects}]
[category  {Data structures}]
[require Tcl 8.2]
[require struct::graph [opt 1.2.1]]
[description]
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154

[call [arg graphName] [method {arc append}] [arg arc] [opt "-key [arg key]"] [arg value]]

Appends a [arg value] to one of the keyed values associated with an
[arg arc]. If no [arg key] is specified, the key [const data] is
assumed.


[call [arg graphName] [method {arc delete}] [arg arc] [opt "[arg arc] ..."]]

Remove the specified arcs from the graph.


[call [arg graphName] [method {arc exists}] [arg arc]]

Return true if the specified [arg arc] exists in the graph.


[call [arg graphName] [method {arc get}] [arg arc] [opt "-key [arg key]"]]

Return the value associated with the key [arg key] for the [arg arc].
If no key is specified, the key [const data] is assumed.

[call [arg graphName] [method {arc getall}] [arg arc]]

Returns a serialized list of key/value pairs (suitable for use with
[lb][cmd {array set}][rb]) for the [arg arc].


[call [arg graphName] [method {arc keys}] [arg arc]]

Returns a list of keys for the [arg arc].


[call [arg graphName] [method {arc keyexists}] [arg arc] [opt "-key [arg key]"]]

Return true if the specified [arg key] exists for the [arg arc]. If no
[arg key] is specified, the key [const data] is assumed.


[call [arg graphName] [method {arc insert}] [arg start] [arg end] [opt [arg child]]]

Insert an arc named [arg child] into the graph beginning at the node
[arg start] and ending at the node [arg end]. If the name of the new
arc is not specified the system will generate a unique name of the
form [emph arc][arg x].


[call [arg graphName] [method {arc lappend}] [arg arc] [opt "-key [arg key]"] [arg value]]

Appends a [arg value] (as a list) to one of the keyed values
associated with an [arg arc].  If no [arg key] is specified, the key
[const data] is assumed.


[call [arg graphName] [method {arc set}] [arg arc] [opt "-key [arg key]"] [opt [arg value]]]

Set or get one of the keyed values associated with an arc.  If no key
is specified, the key [const data] is assumed.  Each arc that is
added to a graph has the empty string assigned to the key

[const data] automatically.  An arc may have any number of keyed
values associated with it.  If [arg value] is not specified, this
command returns the current value assigned to the key; if [arg value]
is specified, this command assigns that value to the key.


[call [arg graphName] [method {arc source}] [arg arc]]

Return the node the given [arg arc] begins at.


[call [arg graphName] [method {arc target}] [arg arc]]

Return the node the given [arg arc] ends at.


[call [arg graphName] [method {arc unset}] [arg arc] [opt "-key [arg key]"]]

Remove a keyed value from the arc [arg arc].  If no key is specified,
the key [const data] is assumed.


[call [arg graphName] [method arcs] [opt "-key [arg key]"] [opt "-value [arg value]"] [opt "-in|-out|-adj|-inner|-embedding [arg nodelist]"]]

Return a list of arcs in the graph. If no restriction is specified a
list containing all arcs is returned. Restrictions can limit the list
of returned arcs based on the nodes that are connected by the arc, on
the keyed values associated with the arc, or both. The restrictions







<




<



<











<



<





<








<





<












<



<





<




<







68
69
70
71
72
73
74

75
76
77
78

79
80
81

82
83
84
85
86
87
88
89
90
91
92

93
94
95

96
97
98
99
100

101
102
103
104
105
106
107
108

109
110
111
112
113

114
115
116
117
118
119
120
121
122
123
124
125

126
127
128

129
130
131
132
133

134
135
136
137

138
139
140
141
142
143
144

[call [arg graphName] [method {arc append}] [arg arc] [opt "-key [arg key]"] [arg value]]

Appends a [arg value] to one of the keyed values associated with an
[arg arc]. If no [arg key] is specified, the key [const data] is
assumed.


[call [arg graphName] [method {arc delete}] [arg arc] [opt "[arg arc] ..."]]

Remove the specified arcs from the graph.


[call [arg graphName] [method {arc exists}] [arg arc]]

Return true if the specified [arg arc] exists in the graph.


[call [arg graphName] [method {arc get}] [arg arc] [opt "-key [arg key]"]]

Return the value associated with the key [arg key] for the [arg arc].
If no key is specified, the key [const data] is assumed.

[call [arg graphName] [method {arc getall}] [arg arc]]

Returns a serialized list of key/value pairs (suitable for use with
[lb][cmd {array set}][rb]) for the [arg arc].


[call [arg graphName] [method {arc keys}] [arg arc]]

Returns a list of keys for the [arg arc].


[call [arg graphName] [method {arc keyexists}] [arg arc] [opt "-key [arg key]"]]

Return true if the specified [arg key] exists for the [arg arc]. If no
[arg key] is specified, the key [const data] is assumed.


[call [arg graphName] [method {arc insert}] [arg start] [arg end] [opt [arg child]]]

Insert an arc named [arg child] into the graph beginning at the node
[arg start] and ending at the node [arg end]. If the name of the new
arc is not specified the system will generate a unique name of the
form [emph arc][arg x].


[call [arg graphName] [method {arc lappend}] [arg arc] [opt "-key [arg key]"] [arg value]]

Appends a [arg value] (as a list) to one of the keyed values
associated with an [arg arc].  If no [arg key] is specified, the key
[const data] is assumed.


[call [arg graphName] [method {arc set}] [arg arc] [opt "-key [arg key]"] [opt [arg value]]]

Set or get one of the keyed values associated with an arc.  If no key
is specified, the key [const data] is assumed.  Each arc that is
added to a graph has the empty string assigned to the key

[const data] automatically.  An arc may have any number of keyed
values associated with it.  If [arg value] is not specified, this
command returns the current value assigned to the key; if [arg value]
is specified, this command assigns that value to the key.


[call [arg graphName] [method {arc source}] [arg arc]]

Return the node the given [arg arc] begins at.


[call [arg graphName] [method {arc target}] [arg arc]]

Return the node the given [arg arc] ends at.


[call [arg graphName] [method {arc unset}] [arg arc] [opt "-key [arg key]"]]

Remove a keyed value from the arc [arg arc].  If no key is specified,
the key [const data] is assumed.


[call [arg graphName] [method arcs] [opt "-key [arg key]"] [opt "-value [arg value]"] [opt "-in|-out|-adj|-inner|-embedding [arg nodelist]"]]

Return a list of arcs in the graph. If no restriction is specified a
list containing all arcs is returned. Restrictions can limit the list
of returned arcs based on the nodes that are connected by the arc, on
the keyed values associated with the arc, or both. The restrictions
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
first. Specifying more than one of them is illegal.

At last the restrictions set via [option -key] (and [option -value])
are applied.
Specifying more than one [option -key] (and [option -value]) is
illegal.


[call [arg graphName] [method {node append}] [arg node] [opt "-key [arg key]"] [arg value]]

Appends a [arg value] to one of the keyed values associated with an
[arg node]. If no [arg key] is specified, the key [const data] is
assumed.


[call [arg graphName] [method {node degree}] [opt -in|-out] [arg node]]

Return the number of arcs adjacent to the specified [arg node]. If one
of the restrictions [option -in] or [option -out] is given only the
incoming resp. outgoing arcs are counted.


[call [arg graphName] [method {node delete}] [arg node] [opt "[arg node] ..."]]

Remove the specified nodes from the graph.  All of the nodes' arcs
will be removed as well to prevent unconnected arcs.


[call [arg graphName] [method {node exists}] [arg node]]

Return true if the specified [arg node] exists in the graph.


[call [arg graphName] [method {node get}] [arg node] [opt "-key [arg key]"]]

Return the value associated with the key [arg key] for the [arg node].
If no key is specified, the key [const data] is assumed.

[call [arg graphName] [method {node getall}] [arg node]]

Returns a serialized list of key/value pairs (suitable for use with
[lb][cmd {array set}][rb]) for the [arg node].


[call [arg graphName] [method {node keys}] [arg node]]

Returns a list of keys for the [arg node].


[call [arg graphName] [method {node keyexists}] [arg node] [opt "-key [arg key]"]]

Return true if the specified [arg key] exists for the [arg node]. If
no [arg key] is specified, the key [const data] is assumed.


[call [arg graphName] [method {node insert}] [opt [arg child]]]

Insert a node named [arg child] into the graph. The nodes has no arcs
connected to it. If the name of the new child is not specified the
system will generate a unique name of the form [emph node][arg x].

[call [arg graphName] [method {node lappend}] [arg node] [opt "-key [arg key]"] [arg value]]

Appends a [arg value] (as a list) to one of the keyed values
associated with an [arg node]. If no [arg key] is specified, the key
[const data] is assumed.


[call [arg graphName] [method {node opposite}] [arg node] [arg arc]]

Return the node at the other end of the specified [arg arc], which has
to be adjacent to the given [arg node].


[call [arg graphName] [method {node set}] [arg node] [opt "-key [arg key]"] [opt [arg value]]]

Set or get one of the keyed values associated with a node.  If no key
is specified, the key [const data] is assumed.  Each node that is
added to a graph has the empty string assigned to the key

[const data] automatically.  A node may have any number of keyed
values associated with it.  If [arg value] is not specified, this
command returns the current value assigned to the key; if [arg value]
is specified, this command assigns that value to the key.


[call [arg graphName] [method {node unset}] [arg node] [opt "-key [arg key]"]]

Remove a keyed value from the node [arg node].  If no key is
specified, the key [method data] is assumed.

[call [arg graphName] [method nodes] [opt "-key [arg key]"] [opt "-value [arg value]"] [opt "-in|-out|-adj|-inner|-embedding [arg nodelist]"]]







<





<







<





<



<











<



<





<













<




<











<







196
197
198
199
200
201
202

203
204
205
206
207

208
209
210
211
212
213
214

215
216
217
218
219

220
221
222

223
224
225
226
227
228
229
230
231
232
233

234
235
236

237
238
239
240
241

242
243
244
245
246
247
248
249
250
251
252
253
254

255
256
257
258

259
260
261
262
263
264
265
266
267
268
269

270
271
272
273
274
275
276
first. Specifying more than one of them is illegal.

At last the restrictions set via [option -key] (and [option -value])
are applied.
Specifying more than one [option -key] (and [option -value]) is
illegal.


[call [arg graphName] [method {node append}] [arg node] [opt "-key [arg key]"] [arg value]]

Appends a [arg value] to one of the keyed values associated with an
[arg node]. If no [arg key] is specified, the key [const data] is
assumed.


[call [arg graphName] [method {node degree}] [opt -in|-out] [arg node]]

Return the number of arcs adjacent to the specified [arg node]. If one
of the restrictions [option -in] or [option -out] is given only the
incoming resp. outgoing arcs are counted.


[call [arg graphName] [method {node delete}] [arg node] [opt "[arg node] ..."]]

Remove the specified nodes from the graph.  All of the nodes' arcs
will be removed as well to prevent unconnected arcs.


[call [arg graphName] [method {node exists}] [arg node]]

Return true if the specified [arg node] exists in the graph.


[call [arg graphName] [method {node get}] [arg node] [opt "-key [arg key]"]]

Return the value associated with the key [arg key] for the [arg node].
If no key is specified, the key [const data] is assumed.

[call [arg graphName] [method {node getall}] [arg node]]

Returns a serialized list of key/value pairs (suitable for use with
[lb][cmd {array set}][rb]) for the [arg node].


[call [arg graphName] [method {node keys}] [arg node]]

Returns a list of keys for the [arg node].


[call [arg graphName] [method {node keyexists}] [arg node] [opt "-key [arg key]"]]

Return true if the specified [arg key] exists for the [arg node]. If
no [arg key] is specified, the key [const data] is assumed.


[call [arg graphName] [method {node insert}] [opt [arg child]]]

Insert a node named [arg child] into the graph. The nodes has no arcs
connected to it. If the name of the new child is not specified the
system will generate a unique name of the form [emph node][arg x].

[call [arg graphName] [method {node lappend}] [arg node] [opt "-key [arg key]"] [arg value]]

Appends a [arg value] (as a list) to one of the keyed values
associated with an [arg node]. If no [arg key] is specified, the key
[const data] is assumed.


[call [arg graphName] [method {node opposite}] [arg node] [arg arc]]

Return the node at the other end of the specified [arg arc], which has
to be adjacent to the given [arg node].


[call [arg graphName] [method {node set}] [arg node] [opt "-key [arg key]"] [opt [arg value]]]

Set or get one of the keyed values associated with a node.  If no key
is specified, the key [const data] is assumed.  Each node that is
added to a graph has the empty string assigned to the key

[const data] automatically.  A node may have any number of keyed
values associated with it.  If [arg value] is not specified, this
command returns the current value assigned to the key; if [arg value]
is specified, this command assigns that value to the key.


[call [arg graphName] [method {node unset}] [arg node] [opt "-key [arg key]"]]

Remove a keyed value from the node [arg node].  If no key is
specified, the key [method data] is assumed.

[call [arg graphName] [method nodes] [opt "-key [arg key]"] [opt "-value [arg value]"] [opt "-in|-out|-adj|-inner|-embedding [arg nodelist]"]]
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358

The possible restrictions are the same as for method

[method arcs]. The set of nodes to return is computed as the union of
all source and target nodes for all the arcs satisfying the
restriction as defined for [method arcs].


[call [arg graphName] [method get] [opt "-key [arg key]"]]

Return the value associated with the key [arg key] for the graph. If
no key is specified, the key [const data] is assumed.


[call [arg graphName] [method getall]]

Returns a serialized list of key/value pairs (suitable for use with
[lb][cmd {array set}][rb]) for the whole graph.


[call [arg graphName] [method keys]]

Returns a list of keys for the whole graph.


[call [arg graphName] [method keyexists] [opt "-key [arg key]"]]

Return true if the specified [arg key] exists for the whole graph. If no
[arg key] is specified, the key [const data] is assumed.


[call [arg graphName] [method set] [opt "-key [arg key]"] [opt [arg value]]]

Set or get one of the keyed values associated with a graph. If no key
is specified, the key [const data] is assumed. Each graph has the
empty string assigned to the key [const data] automatically. A graph
may have any number of keyed values associated with it. If [arg value]
is not specified, this command returns the current value assigned to
the key; if [arg value] is specified, this command assigns that value
to the key.


[call [arg graphName] [method swap] [arg node1] [arg node2]]

Swap the position of [arg node1] and [arg node2] in the graph.


[call [arg graphName] [method unset] [opt "-key [arg key]"]]

Remove a keyed value from the graph. If no key is specified, the key
[const data] is assumed.

[call [arg graphName] [method walk] [arg node] [opt "-order [arg order]"] [opt "-type [arg type]"] [opt "-dir [arg direction]"] -command [arg cmd]]







<




<






<



<





<











<



<







285
286
287
288
289
290
291

292
293
294
295

296
297
298
299
300
301

302
303
304

305
306
307
308
309

310
311
312
313
314
315
316
317
318
319
320

321
322
323

324
325
326
327
328
329
330

The possible restrictions are the same as for method

[method arcs]. The set of nodes to return is computed as the union of
all source and target nodes for all the arcs satisfying the
restriction as defined for [method arcs].


[call [arg graphName] [method get] [opt "-key [arg key]"]]

Return the value associated with the key [arg key] for the graph. If
no key is specified, the key [const data] is assumed.


[call [arg graphName] [method getall]]

Returns a serialized list of key/value pairs (suitable for use with
[lb][cmd {array set}][rb]) for the whole graph.


[call [arg graphName] [method keys]]

Returns a list of keys for the whole graph.


[call [arg graphName] [method keyexists] [opt "-key [arg key]"]]

Return true if the specified [arg key] exists for the whole graph. If no
[arg key] is specified, the key [const data] is assumed.


[call [arg graphName] [method set] [opt "-key [arg key]"] [opt [arg value]]]

Set or get one of the keyed values associated with a graph. If no key
is specified, the key [const data] is assumed. Each graph has the
empty string assigned to the key [const data] automatically. A graph
may have any number of keyed values associated with it. If [arg value]
is not specified, this command returns the current value assigned to
the key; if [arg value] is specified, this command assigns that value
to the key.


[call [arg graphName] [method swap] [arg node1] [arg node2]]

Swap the position of [arg node1] and [arg node2] in the graph.


[call [arg graphName] [method unset] [opt "-key [arg key]"]]

Remove a keyed value from the graph. If no key is specified, the key
[const data] is assumed.

[call [arg graphName] [method walk] [arg node] [opt "-order [arg order]"] [opt "-type [arg type]"] [opt "-dir [arg direction]"] -command [arg cmd]]
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
[const leave]) and values [arg graphName] and the name of the current
node appended. For a pre-order walk, all nodes are [const enter]ed, for a
post-order all nodes are left. In a both-order walk the first visit of
a node [const enter]s it, the second visit [const leave]s it.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {struct :: graph}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords graph cgraph]
[manpage_end]







<
<
<
<
<
|
<
|
<
<
<
<
<

366
367
368
369
370
371
372





373

374





375
[const leave]) and values [arg graphName] and the name of the current
node appended. For a pre-order walk, all nodes are [const enter]ed, for a
post-order all nodes are left. In a both-order walk the first visit of
a node [const enter]s it, the second visit [const leave]s it.

[list_end]






[vset CATEGORY {struct :: graph}]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/struct/graphops.man.

1
2

















































3
4
5
6
7
8
9
[comment {-*- tcl -*-}]
[manpage_begin struct::graph::op n 0.11.3]

















































[copyright {2008 Alejandro Paz <[email protected]>}]
[copyright {2008 (docs) Andreas Kupries <[email protected]>}]
[copyright {2009 Michal Antoniewski <[email protected]>}]
[moddesc   {Tcl Data Structures}]
[titledesc {Operation for (un)directed graph objects}]
[category  {Data structures}]
[require Tcl 8.4]


>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
[comment {-*- tcl -*-}]
[manpage_begin struct::graph::op n 0.11.3]
[keywords {adjacency list}]
[keywords {adjacency matrix}]
[keywords adjacent]
[keywords {approximation algorithm}]
[keywords arc]
[keywords {articulation point}]
[keywords {augmenting network}]
[keywords {augmenting path}]
[keywords bfs]
[keywords bipartite]
[keywords {blocking flow}]
[keywords bridge]
[keywords {complete graph}]
[keywords {connected component}]
[keywords {cut edge}]
[keywords {cut vertex}]
[keywords degree]
[keywords {degree constrained spanning tree}]
[keywords diameter]
[keywords dijkstra]
[keywords distance]
[keywords eccentricity]
[keywords edge]
[keywords {flow network}]
[keywords graph]
[keywords heuristic]
[keywords {independent set}]
[keywords isthmus]
[keywords {level graph}]
[keywords {local searching}]
[keywords loop]
[keywords matching]
[keywords {max cut}]
[keywords {maximum flow}]
[keywords {minimal spanning tree}]
[keywords {minimum cost flow}]
[keywords {minimum degree spanning tree}]
[keywords {minimum diameter spanning tree}]
[keywords neighbour]
[keywords node]
[keywords radius]
[keywords {residual graph}]
[keywords {shortest path}]
[keywords {squared graph}]
[keywords {strongly connected component}]
[keywords subgraph]
[keywords {travelling salesman}]
[keywords vertex]
[keywords {vertex cover}]
[copyright {2008 Alejandro Paz <[email protected]>}]
[copyright {2008 (docs) Andreas Kupries <[email protected]>}]
[copyright {2009 Michal Antoniewski <[email protected]>}]
[moddesc   {Tcl Data Structures}]
[titledesc {Operation for (un)directed graph objects}]
[category  {Data structures}]
[require Tcl 8.4]
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69

[para]

Note that the matrix is symmetric. It does not represent the
directionality of arcs, only their presence between nodes. It is also
unable to represent parallel arcs in [arg g].



[call [cmd struct::graph::op::toAdjacencyList] [arg G] [opt [arg options]...]]

Procedure creates for input graph [arg G], it's representation as [term "Adjacency List"].
It handles both directed and undirected graphs (default is undirected).
It returns dictionary that for each node (key) returns list of nodes adjacent
to it. When considering weighted version, for each adjacent node there is also
weight of the edge included. 

[para]
[list_begin definitions]
[def Arguments:]

[list_begin arguments]
[arg_def {Graph object} G input]







<
<






|







96
97
98
99
100
101
102


103
104
105
106
107
108
109
110
111
112
113
114
115
116

[para]

Note that the matrix is symmetric. It does not represent the
directionality of arcs, only their presence between nodes. It is also
unable to represent parallel arcs in [arg g].



[call [cmd struct::graph::op::toAdjacencyList] [arg G] [opt [arg options]...]]

Procedure creates for input graph [arg G], it's representation as [term "Adjacency List"].
It handles both directed and undirected graphs (default is undirected).
It returns dictionary that for each node (key) returns list of nodes adjacent
to it. When considering weighted version, for each adjacent node there is also
weight of the edge included.

[para]
[list_begin definitions]
[def Arguments:]

[list_begin arguments]
[arg_def {Graph object} G input]
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
Using this option tells the command to put weight information into the result.
In that case it is expected that all arcs have a proper weight, and an error
is thrown if that is not the case.

[list_end][comment {-- options --}]
[list_end][comment {-- definitions --}]



[call [cmd struct::graph::op::kruskal] [arg g]]

This command takes the graph [arg g] and returns a list containing the
names of the arcs in [arg g] which span up a minimum weight spanning tree
(MST), or, in the case of an un-connected graph, a minimum weight spanning
forest (except for the 1-vertex components). Kruskal's algorithm is used
to compute the tree or forest.







<
<







131
132
133
134
135
136
137


138
139
140
141
142
143
144
Using this option tells the command to put weight information into the result.
In that case it is expected that all arcs have a proper weight, and an error
is thrown if that is not the case.

[list_end][comment {-- options --}]
[list_end][comment {-- definitions --}]



[call [cmd struct::graph::op::kruskal] [arg g]]

This command takes the graph [arg g] and returns a list containing the
names of the arcs in [arg g] which span up a minimum weight spanning tree
(MST), or, in the case of an un-connected graph, a minimum weight spanning
forest (except for the 1-vertex components). Kruskal's algorithm is used
to compute the tree or forest.
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
weight associated with them.

[para]

A note regarding the result, the command refrains from explicitly
listing the nodes of the MST as this information is implicitly
provided in the arcs already.



[call [cmd struct::graph::op::prim] [arg g]]

This command takes the graph [arg g] and returns a list containing the
names of the arcs in [arg g] which span up a minimum weight spanning tree
(MST), or, in the case of an un-connected graph, a minimum weight spanning
forest (except for the 1-vertex components). Prim's algorithm is used to







<
<







153
154
155
156
157
158
159


160
161
162
163
164
165
166
weight associated with them.

[para]

A note regarding the result, the command refrains from explicitly
listing the nodes of the MST as this information is implicitly
provided in the arcs already.



[call [cmd struct::graph::op::prim] [arg g]]

This command takes the graph [arg g] and returns a list containing the
names of the arcs in [arg g] which span up a minimum weight spanning tree
(MST), or, in the case of an un-connected graph, a minimum weight spanning
forest (except for the 1-vertex components). Prim's algorithm is used to
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264

[para]

A note regarding the result, the command refrains from explicitly
listing the nodes of the MST as this information is implicitly
provided in the arcs already.



[call [cmd struct::graph::op::isBipartite?] [arg g] [opt [arg bipartvar]]]

This command takes the graph [arg g] and returns a boolean value
indicating whether it is bipartite ([const true]) or not
([const false]). If the variable [arg bipartvar] is specified the two
partitions of the graph are there as a list, if, and only if the graph
is bipartit. If it is not the variable, if specified, is not touched.



[call [cmd struct::graph::op::tarjan] [arg g]]

This command computes the set of [emph {strongly connected}]
components (SCCs) of the graph [arg g]. The result of the command is a
list of sets, each of which contains the nodes for one of the SCCs of
[arg g]. The union of all SCCs covers the whole graph, and no two SCCs
intersect with each other.

[para]

The graph [arg g] is [term acyclic] if all SCCs in the result contain
only a single node. The graph [arg g] is [term {strongly connected}]
if the result contains only a single SCC containing all nodes of
[arg g].



[call [cmd struct::graph::op::connectedComponents] [arg g]]

This command computes the set of [emph connected] components (CCs) of
the graph [arg g]. The result of the command is a list of sets, each
of which contains the nodes for one of the CCs of [arg g]. The union
of all CCs covers the whole graph, and no two CCs intersect with each
other.

[para]

The graph [arg g] is [term connected] if the result contains only a
single SCC containing all nodes of [arg g].


[call [cmd struct::graph::op::connectedComponentOf] [arg g] [arg n]]

This command computes the [emph connected] component (CC) of the graph
[arg g] containing the node [arg n]. The result of the command is a
sets which contains the nodes for the CC of [arg n] in [arg g].

[para]

The command will throw an error if [arg n] is not a node of the graph
[arg g].



[call [cmd struct::graph::op::isConnected?] [arg g]]

This is a convenience command determining whether the graph [arg g] is
[term connected] or not.  The result is a boolean value, [const true]
if the graph is connected, and [const false] otherwise.



[call [cmd struct::graph::op::isCutVertex?] [arg g] [arg n]]

This command determines whether the node [arg n] in the graph [arg g]
is a [term {cut vertex}] (aka [term {articulation point}]). The result
is a boolean value, [const true] if the node is a cut vertex, and
[const false] otherwise.

[para]

The command will throw an error if [arg n] is not a node of the graph
[arg g].


[call [cmd struct::graph::op::isBridge?] [arg g] [arg a]]

This command determines whether the arc [arg a] in the graph [arg g]
is a [term bridge] (aka [term {cut edge}], or [term isthmus]). The
result is a boolean value, [const true] if the arc is a bridge, and
[const false] otherwise.

[para]

The command will throw an error if [arg a] is not an arc of the graph
[arg g].


[call [cmd struct::graph::op::isEulerian?] [arg g] [opt [arg tourvar]]]

This command determines whether the graph [arg g] is [term eulerian]
or not.  The result is a boolean value, [const true] if the graph is
eulerian, and [const false] otherwise.

[para]

If the graph is eulerian and [arg tourvar] is specified then an euler
tour is computed as well and stored in the named variable. The tour is
represented by the list of arcs traversed, in the order of traversal.


[call [cmd struct::graph::op::isSemiEulerian?] [arg g] [opt [arg pathvar]]]

This command determines whether the graph [arg g] is
[term semi-eulerian] or not.  The result is a boolean value, [const true]
if the graph is semi-eulerian, and [const false] otherwise.

[para]

If the graph is semi-eulerian and [arg pathvar] is specified then an
euler path is computed as well and stored in the named variable. The
path is represented by the list of arcs traversed, in the order of
traversal.


[call [cmd struct::graph::op::dijkstra] [arg g] [arg start] [opt [arg options]...]]

This command determines distances in the weighted [arg g] from the
node [arg start] to all other nodes in the graph. The options specify
how to traverse graphs, and the format of the result.








<
<







<
<
















<
<













<











<
<





<
<













<











<













<












<







178
179
180
181
182
183
184


185
186
187
188
189
190
191


192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207


208
209
210
211
212
213
214
215
216
217
218
219
220

221
222
223
224
225
226
227
228
229
230
231


232
233
234
235
236


237
238
239
240
241
242
243
244
245
246
247
248
249

250
251
252
253
254
255
256
257
258
259
260

261
262
263
264
265
266
267
268
269
270
271
272
273

274
275
276
277
278
279
280
281
282
283
284
285

286
287
288
289
290
291
292

[para]

A note regarding the result, the command refrains from explicitly
listing the nodes of the MST as this information is implicitly
provided in the arcs already.



[call [cmd struct::graph::op::isBipartite?] [arg g] [opt [arg bipartvar]]]

This command takes the graph [arg g] and returns a boolean value
indicating whether it is bipartite ([const true]) or not
([const false]). If the variable [arg bipartvar] is specified the two
partitions of the graph are there as a list, if, and only if the graph
is bipartit. If it is not the variable, if specified, is not touched.



[call [cmd struct::graph::op::tarjan] [arg g]]

This command computes the set of [emph {strongly connected}]
components (SCCs) of the graph [arg g]. The result of the command is a
list of sets, each of which contains the nodes for one of the SCCs of
[arg g]. The union of all SCCs covers the whole graph, and no two SCCs
intersect with each other.

[para]

The graph [arg g] is [term acyclic] if all SCCs in the result contain
only a single node. The graph [arg g] is [term {strongly connected}]
if the result contains only a single SCC containing all nodes of
[arg g].



[call [cmd struct::graph::op::connectedComponents] [arg g]]

This command computes the set of [emph connected] components (CCs) of
the graph [arg g]. The result of the command is a list of sets, each
of which contains the nodes for one of the CCs of [arg g]. The union
of all CCs covers the whole graph, and no two CCs intersect with each
other.

[para]

The graph [arg g] is [term connected] if the result contains only a
single SCC containing all nodes of [arg g].


[call [cmd struct::graph::op::connectedComponentOf] [arg g] [arg n]]

This command computes the [emph connected] component (CC) of the graph
[arg g] containing the node [arg n]. The result of the command is a
sets which contains the nodes for the CC of [arg n] in [arg g].

[para]

The command will throw an error if [arg n] is not a node of the graph
[arg g].



[call [cmd struct::graph::op::isConnected?] [arg g]]

This is a convenience command determining whether the graph [arg g] is
[term connected] or not.  The result is a boolean value, [const true]
if the graph is connected, and [const false] otherwise.



[call [cmd struct::graph::op::isCutVertex?] [arg g] [arg n]]

This command determines whether the node [arg n] in the graph [arg g]
is a [term {cut vertex}] (aka [term {articulation point}]). The result
is a boolean value, [const true] if the node is a cut vertex, and
[const false] otherwise.

[para]

The command will throw an error if [arg n] is not a node of the graph
[arg g].


[call [cmd struct::graph::op::isBridge?] [arg g] [arg a]]

This command determines whether the arc [arg a] in the graph [arg g]
is a [term bridge] (aka [term {cut edge}], or [term isthmus]). The
result is a boolean value, [const true] if the arc is a bridge, and
[const false] otherwise.

[para]

The command will throw an error if [arg a] is not an arc of the graph
[arg g].


[call [cmd struct::graph::op::isEulerian?] [arg g] [opt [arg tourvar]]]

This command determines whether the graph [arg g] is [term eulerian]
or not.  The result is a boolean value, [const true] if the graph is
eulerian, and [const false] otherwise.

[para]

If the graph is eulerian and [arg tourvar] is specified then an euler
tour is computed as well and stored in the named variable. The tour is
represented by the list of arcs traversed, in the order of traversal.


[call [cmd struct::graph::op::isSemiEulerian?] [arg g] [opt [arg pathvar]]]

This command determines whether the graph [arg g] is
[term semi-eulerian] or not.  The result is a boolean value, [const true]
if the graph is semi-eulerian, and [const false] otherwise.

[para]

If the graph is semi-eulerian and [arg pathvar] is specified then an
euler path is computed as well and stored in the named variable. The
path is represented by the list of arcs traversed, in the order of
traversal.


[call [cmd struct::graph::op::dijkstra] [arg g] [arg start] [opt [arg options]...]]

This command determines distances in the weighted [arg g] from the
node [arg start] to all other nodes in the graph. The options specify
how to traverse graphs, and the format of the result.

281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
in the graph. For [const distances] the value is the distance of the
node to [arg start], whereas for [const tree] the value is the path
from the node to [arg start], excluding the node itself, but including
[arg start]. Tree format is the default.

[list_end]


[call [cmd struct::graph::op::distance] [arg g] [arg origin] [arg destination] [opt [arg options]...]]

This command determines the (un)directed distance between the two
nodes [arg origin] and [arg destination] in the graph [arg g]. It
accepts the option [option -arcmode] of [cmd struct::graph::op::dijkstra].


[call [cmd struct::graph::op::eccentricity] [arg g] [arg n] [opt [arg options]...]]

This command determines the (un)directed [term eccentricity] of the
node [arg n] in the graph [arg g]. It accepts the option
[option -arcmode] of [cmd struct::graph::op::dijkstra].

[para]

The (un)directed [term eccentricity] of a node is the maximal
(un)directed distance between the node and any other node in the
graph.


[call [cmd struct::graph::op::radius] [arg g] [opt [arg options]...]]

This command determines the (un)directed [term radius] of the graph
[arg g]. It accepts the option [option -arcmode] of [cmd struct::graph::op::dijkstra].

[para]

The (un)directed [term radius] of a graph is the minimal (un)directed
[term eccentricity] of all nodes in the graph.


[call [cmd struct::graph::op::diameter] [arg g] [opt [arg options]...]]

This command determines the (un)directed [term diameter] of the graph
[arg g]. It accepts the option [option -arcmode] of [cmd struct::graph::op::dijkstra].

[para]

The (un)directed [term diameter] of a graph is the maximal (un)directed
[term eccentricity] of all nodes in the graph.



[call [cmd struct::graph::op::BellmanFord] [arg G] [arg startnode]]

Searching for [sectref {Shortest Path Problem} "shortests paths"] between chosen node and all other nodes in graph [arg G]. Based
on relaxation method. In comparison to [cmd struct::graph::op::dijkstra] it doesn't need assumption that all weights
on edges in input graph [arg G] have to be positive.








<





<













<










<









<
<







309
310
311
312
313
314
315

316
317
318
319
320

321
322
323
324
325
326
327
328
329
330
331
332
333

334
335
336
337
338
339
340
341
342
343

344
345
346
347
348
349
350
351
352


353
354
355
356
357
358
359
in the graph. For [const distances] the value is the distance of the
node to [arg start], whereas for [const tree] the value is the path
from the node to [arg start], excluding the node itself, but including
[arg start]. Tree format is the default.

[list_end]


[call [cmd struct::graph::op::distance] [arg g] [arg origin] [arg destination] [opt [arg options]...]]

This command determines the (un)directed distance between the two
nodes [arg origin] and [arg destination] in the graph [arg g]. It
accepts the option [option -arcmode] of [cmd struct::graph::op::dijkstra].


[call [cmd struct::graph::op::eccentricity] [arg g] [arg n] [opt [arg options]...]]

This command determines the (un)directed [term eccentricity] of the
node [arg n] in the graph [arg g]. It accepts the option
[option -arcmode] of [cmd struct::graph::op::dijkstra].

[para]

The (un)directed [term eccentricity] of a node is the maximal
(un)directed distance between the node and any other node in the
graph.


[call [cmd struct::graph::op::radius] [arg g] [opt [arg options]...]]

This command determines the (un)directed [term radius] of the graph
[arg g]. It accepts the option [option -arcmode] of [cmd struct::graph::op::dijkstra].

[para]

The (un)directed [term radius] of a graph is the minimal (un)directed
[term eccentricity] of all nodes in the graph.


[call [cmd struct::graph::op::diameter] [arg g] [opt [arg options]...]]

This command determines the (un)directed [term diameter] of the graph
[arg g]. It accepts the option [option -arcmode] of [cmd struct::graph::op::dijkstra].

[para]

The (un)directed [term diameter] of a graph is the maximal (un)directed
[term eccentricity] of all nodes in the graph.



[call [cmd struct::graph::op::BellmanFord] [arg G] [arg startnode]]

Searching for [sectref {Shortest Path Problem} "shortests paths"] between chosen node and all other nodes in graph [arg G]. Based
on relaxation method. In comparison to [cmd struct::graph::op::dijkstra] it doesn't need assumption that all weights
on edges in input graph [arg G] have to be positive.

358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
Dictionary containing for each node (key) distances to each other node in graph [arg G].
[list_end][comment {-- definitions --}]

[para]

[emph Note:] If algorithm finds a negative cycle, it will return error message.



[call [cmd struct::graph::op::Johnsons] [arg G] [opt [arg options]...]]

Searching for [sectref {Shortest Path Problem} "shortest paths"] between all pairs of vertices in graph. For sparse graphs
asymptotically quicker than [cmd struct::graph::op::FloydWarshall] algorithm. Johnson's algorithm
uses [cmd struct::graph::op::BellmanFord] and [cmd struct::graph::op::dijkstra] as subprocedures.

[para]







<
<







380
381
382
383
384
385
386


387
388
389
390
391
392
393
Dictionary containing for each node (key) distances to each other node in graph [arg G].
[list_end][comment {-- definitions --}]

[para]

[emph Note:] If algorithm finds a negative cycle, it will return error message.



[call [cmd struct::graph::op::Johnsons] [arg G] [opt [arg options]...]]

Searching for [sectref {Shortest Path Problem} "shortest paths"] between all pairs of vertices in graph. For sparse graphs
asymptotically quicker than [cmd struct::graph::op::FloydWarshall] algorithm. Johnson's algorithm
uses [cmd struct::graph::op::BellmanFord] and [cmd struct::graph::op::dijkstra] as subprocedures.

[para]
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416

[list_end][comment {-- arguments --}]

[def Options:]
[list_begin options]
[opt_def -filter]

Returns only existing distances, cuts all [term Inf] values for 
non-existing connections between pairs of nodes.

[list_end][comment {-- options --}]

[def Result:]

Dictionary containing distances between all pairs of vertices.

[list_end][comment {-- definitions --}]


 
[call [cmd struct::graph::op::FloydWarshall] [arg G]]

Searching for [sectref {Shortest Path Problem} "shortest paths"] between all pairs of edges in weighted graphs.[para]
Time complexity: [term O(V^3)] - where [term V] is number of vertices.[para]
Memory complexity: [term O(V^2)].

[para]







|










<
<







410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427


428
429
430
431
432
433
434

[list_end][comment {-- arguments --}]

[def Options:]
[list_begin options]
[opt_def -filter]

Returns only existing distances, cuts all [term Inf] values for
non-existing connections between pairs of nodes.

[list_end][comment {-- options --}]

[def Result:]

Dictionary containing distances between all pairs of vertices.

[list_end][comment {-- definitions --}]



[call [cmd struct::graph::op::FloydWarshall] [arg G]]

Searching for [sectref {Shortest Path Problem} "shortest paths"] between all pairs of edges in weighted graphs.[para]
Time complexity: [term O(V^3)] - where [term V] is number of vertices.[para]
Memory complexity: [term O(V^2)].

[para]
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448

[def Result:]
Dictionary containing shortest distances to each node from each node.
[list_end][comment {-- definitions --}]

[emph Note:] Algorithm finds solutions dynamically. It compares all possible paths through the graph
between each pair of vertices. Graph shouldn't possess any cycle with negative
sum of weights (the presence of such cycles means there is no shortest path, 
since the total weight becomes lower each time the cycle is traversed).
[para]
On the other hand algorithm can be used to find those cycles - if any shortest distance 
found by algorithm for any nodes [term v] and [term u] (when [term v] is the same node as [term u]) is negative,
that node surely belong to at least one negative cycle.



[call [cmd struct::graph::op::MetricTravellingSalesman] [arg G]]

Algorithm for solving a metric variation of [sectref {Travelling Salesman Problem} "Travelling salesman problem"].
[term "TSP problem"] is [term NP-Complete], so there is no efficient algorithm to solve it. Greedy methods
are getting extremely slow, with the increase in the set of nodes.








|


|


<
<







445
446
447
448
449
450
451
452
453
454
455
456
457


458
459
460
461
462
463
464

[def Result:]
Dictionary containing shortest distances to each node from each node.
[list_end][comment {-- definitions --}]

[emph Note:] Algorithm finds solutions dynamically. It compares all possible paths through the graph
between each pair of vertices. Graph shouldn't possess any cycle with negative
sum of weights (the presence of such cycles means there is no shortest path,
since the total weight becomes lower each time the cycle is traversed).
[para]
On the other hand algorithm can be used to find those cycles - if any shortest distance
found by algorithm for any nodes [term v] and [term u] (when [term v] is the same node as [term u]) is negative,
that node surely belong to at least one negative cycle.



[call [cmd struct::graph::op::MetricTravellingSalesman] [arg G]]

Algorithm for solving a metric variation of [sectref {Travelling Salesman Problem} "Travelling salesman problem"].
[term "TSP problem"] is [term NP-Complete], so there is no efficient algorithm to solve it. Greedy methods
are getting extremely slow, with the increase in the set of nodes.

459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
[def Result:]
Approximated solution of minimum [term "Hamilton Cycle"] - closed path visiting all nodes,
each exactly one time.

[list_end][comment {-- definitions --}]

[emph Note:] [sectref {Approximation algorithm} "It's 2-approximation algorithm."]



[call [cmd struct::graph::op::Christofides] [arg G]]

Another algorithm for solving [sectref {Travelling Salesman Problem} "metric [term "TSP problem"]"].
Christofides implementation uses [term "Max Matching"] for reaching better approximation factor.

[para]







<
<







475
476
477
478
479
480
481


482
483
484
485
486
487
488
[def Result:]
Approximated solution of minimum [term "Hamilton Cycle"] - closed path visiting all nodes,
each exactly one time.

[list_end][comment {-- definitions --}]

[emph Note:] [sectref {Approximation algorithm} "It's 2-approximation algorithm."]



[call [cmd struct::graph::op::Christofides] [arg G]]

Another algorithm for solving [sectref {Travelling Salesman Problem} "metric [term "TSP problem"]"].
Christofides implementation uses [term "Max Matching"] for reaching better approximation factor.

[para]
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504

[list_end][comment {-- definitions --}]

[para]

[emph Note:] [sectref {Approximation algorithm} "It's is a 3/2 approximation algorithm. "]



[call [cmd struct::graph::op::GreedyMaxMatching] [arg G]]

[term "Greedy Max Matching"] procedure, which finds [sectref {Matching Problem} "maximal matching"] (not maximum)
for given graph [arg G]. It adds edges to solution, beginning from edges with the
lowest cost.

[para]







<
<







503
504
505
506
507
508
509


510
511
512
513
514
515
516

[list_end][comment {-- definitions --}]

[para]

[emph Note:] [sectref {Approximation algorithm} "It's is a 3/2 approximation algorithm. "]



[call [cmd struct::graph::op::GreedyMaxMatching] [arg G]]

[term "Greedy Max Matching"] procedure, which finds [sectref {Matching Problem} "maximal matching"] (not maximum)
for given graph [arg G]. It adds edges to solution, beginning from edges with the
lowest cost.

[para]
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527

[list_end][comment {-- arguments --}]

[def Result:]
Set of edges - the max matching for graph [arg G].

[list_end][comment {-- definitions --}]



[call [cmd struct::graph::op::MaxCut] [arg G] [arg U] [arg V]]

Algorithm solving a [sectref {Cut Problems} "Maximum Cut Problem"].

[para]
[list_begin definitions]







<
<







524
525
526
527
528
529
530


531
532
533
534
535
536
537

[list_end][comment {-- arguments --}]

[def Result:]
Set of edges - the max matching for graph [arg G].

[list_end][comment {-- definitions --}]



[call [cmd struct::graph::op::MaxCut] [arg G] [arg U] [arg V]]

Algorithm solving a [sectref {Cut Problems} "Maximum Cut Problem"].

[para]
[list_begin definitions]
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
[def Result:]
Algorithm returns number of edges between found two sets of nodes.

[list_end][comment {-- definitions --}]

[emph Note:] [term MaxCut] is a [sectref {Approximation algorithm} "2-approximation algorithm."]



[call [cmd struct::graph::op::UnweightedKCenter] [arg G] [arg k]]

Approximation algorithm that solves a [sectref {K-Center Problem} "k-center problem"].


[para]
[list_begin definitions]

[def Arguments:]
[list_begin arguments]
[arg_def {Graph Object} G input]
Undirected complete graph [arg G], which satisfies triangle inequality.[para]
[arg_def {Integer} k input]
Positive integer that sets the number of nodes that will be included in [term "k-center"].

[list_end][comment {-- arguments --}]

[def Result:]
Set of nodes - [arg k] center for graph [arg G].

[list_end][comment {-- definitions --}]

[emph Note:] [term UnweightedKCenter] is a [sectref {Approximation algorithm} "2-approximation algorithm."]



[call [cmd struct::graph::op::WeightedKCenter] [arg G] [arg nodeWeights] [arg W]]

Approximation algorithm that solves a weighted version of [sectref {K-Center Problem} "k-center problem"].

[para]
[list_begin definitions]







<
<



<



















<
<







555
556
557
558
559
560
561


562
563
564

565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583


584
585
586
587
588
589
590
[def Result:]
Algorithm returns number of edges between found two sets of nodes.

[list_end][comment {-- definitions --}]

[emph Note:] [term MaxCut] is a [sectref {Approximation algorithm} "2-approximation algorithm."]



[call [cmd struct::graph::op::UnweightedKCenter] [arg G] [arg k]]

Approximation algorithm that solves a [sectref {K-Center Problem} "k-center problem"].


[para]
[list_begin definitions]

[def Arguments:]
[list_begin arguments]
[arg_def {Graph Object} G input]
Undirected complete graph [arg G], which satisfies triangle inequality.[para]
[arg_def {Integer} k input]
Positive integer that sets the number of nodes that will be included in [term "k-center"].

[list_end][comment {-- arguments --}]

[def Result:]
Set of nodes - [arg k] center for graph [arg G].

[list_end][comment {-- definitions --}]

[emph Note:] [term UnweightedKCenter] is a [sectref {Approximation algorithm} "2-approximation algorithm."]



[call [cmd struct::graph::op::WeightedKCenter] [arg G] [arg nodeWeights] [arg W]]

Approximation algorithm that solves a weighted version of [sectref {K-Center Problem} "k-center problem"].

[para]
[list_begin definitions]
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646

[def Result:]
Set of nodes, which is solution found by algorithm.
[list_end][comment {-- definitions --}]

[emph Note:][term WeightedKCenter] is a [sectref {Approximation algorithm} "3-approximation algorithm."]



[call [cmd struct::graph::op::GreedyMaxIndependentSet] [arg G]]

A [term "maximal independent set"] is an [term "independent set"] such that adding any other node
to the set forces the set to contain an edge.

[para]

Algorithm for input graph [arg G] returns set of nodes (list), which are contained in Max Independent
Set found by algorithm.



[call [cmd struct::graph::op::GreedyWeightedMaxIndependentSet] [arg G] [arg nodeWeights]]

Weighted variation of [term "Maximal Independent Set"]. It takes as an input argument
not only graph [arg G] but also set of weights for all vertices in graph [arg G].

[para]
[emph Note:]
Read also [term "Maximal Independent Set"] description for more info.



[call [cmd struct::graph::op::VerticesCover] [arg G]]

[term "Vertices cover"] is a set of vertices such that each edge of the graph is incident to
at least one vertex of the set. This 2-approximation algorithm searches for minimum
[term "vertices cover"], which is a classical optimization problem in computer science and 
is a typical example of an [term "NP-hard"] optimization problem that has an approximation
algorithm.

For input graph [arg G] algorithm returns the set of edges (list), which is Vertex Cover found by algorithm.



[call [cmd struct::graph::op::EdmondsKarp] [arg G] [arg s] [arg t]]

Improved Ford-Fulkerson's algorithm, computing the [sectref {Flow Problems} "maximum flow"] in given flow network [arg G].

[para]
[list_begin definitions]







<
<









<
<










<
<




|




<
<







602
603
604
605
606
607
608


609
610
611
612
613
614
615
616
617


618
619
620
621
622
623
624
625
626
627


628
629
630
631
632
633
634
635
636


637
638
639
640
641
642
643

[def Result:]
Set of nodes, which is solution found by algorithm.
[list_end][comment {-- definitions --}]

[emph Note:][term WeightedKCenter] is a [sectref {Approximation algorithm} "3-approximation algorithm."]



[call [cmd struct::graph::op::GreedyMaxIndependentSet] [arg G]]

A [term "maximal independent set"] is an [term "independent set"] such that adding any other node
to the set forces the set to contain an edge.

[para]

Algorithm for input graph [arg G] returns set of nodes (list), which are contained in Max Independent
Set found by algorithm.



[call [cmd struct::graph::op::GreedyWeightedMaxIndependentSet] [arg G] [arg nodeWeights]]

Weighted variation of [term "Maximal Independent Set"]. It takes as an input argument
not only graph [arg G] but also set of weights for all vertices in graph [arg G].

[para]
[emph Note:]
Read also [term "Maximal Independent Set"] description for more info.



[call [cmd struct::graph::op::VerticesCover] [arg G]]

[term "Vertices cover"] is a set of vertices such that each edge of the graph is incident to
at least one vertex of the set. This 2-approximation algorithm searches for minimum
[term "vertices cover"], which is a classical optimization problem in computer science and
is a typical example of an [term "NP-hard"] optimization problem that has an approximation
algorithm.

For input graph [arg G] algorithm returns the set of edges (list), which is Vertex Cover found by algorithm.



[call [cmd struct::graph::op::EdmondsKarp] [arg G] [arg s] [arg t]]

Improved Ford-Fulkerson's algorithm, computing the [sectref {Flow Problems} "maximum flow"] in given flow network [arg G].

[para]
[list_begin definitions]
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
are equal to 0 are not returned ( it is like there was no link in the flow network
between nodes connected by such edge).

[list_end][comment {-- definitions --}]

[para]

The general idea of algorithm is finding the shortest augumenting paths in graph [arg G], as long 
as they exist, and for each path updating the edge's weights along that path,
with maximum possible throughput. The final (maximum) flow is found
when there is no other augumenting path from source to sink.

[para]

[emph Note:] Algorithm complexity : [term O(V*E)], where [term V] is the number of nodes and [term E] is the number
of edges in graph [term G].



[call [cmd struct::graph::op::BusackerGowen] [arg G] [arg desiredFlow] [arg s] [arg t]]

Algorithm finds solution for a [sectref {Flow Problems} "minimum cost flow problem"]. So, the goal is to find a flow,
whose max value can be [arg desiredFlow], from source node [arg s] to sink node [arg t] in given flow network [arg G]. 
That network except throughputs at edges has also defined a non-negative cost on each edge - cost of using that edge when
directing flow with that edge ( it can illustrate e.g. fuel usage, time or any other measure dependent on usages ).

[para]
[list_begin definitions]

[def Arguments:]







|









<
<



|







660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676


677
678
679
680
681
682
683
684
685
686
687
are equal to 0 are not returned ( it is like there was no link in the flow network
between nodes connected by such edge).

[list_end][comment {-- definitions --}]

[para]

The general idea of algorithm is finding the shortest augumenting paths in graph [arg G], as long
as they exist, and for each path updating the edge's weights along that path,
with maximum possible throughput. The final (maximum) flow is found
when there is no other augumenting path from source to sink.

[para]

[emph Note:] Algorithm complexity : [term O(V*E)], where [term V] is the number of nodes and [term E] is the number
of edges in graph [term G].



[call [cmd struct::graph::op::BusackerGowen] [arg G] [arg desiredFlow] [arg s] [arg t]]

Algorithm finds solution for a [sectref {Flow Problems} "minimum cost flow problem"]. So, the goal is to find a flow,
whose max value can be [arg desiredFlow], from source node [arg s] to sink node [arg t] in given flow network [arg G].
That network except throughputs at edges has also defined a non-negative cost on each edge - cost of using that edge when
directing flow with that edge ( it can illustrate e.g. fuel usage, time or any other measure dependent on usages ).

[para]
[list_begin definitions]

[def Arguments:]
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
Dictionary containing values of used throughputs for each edge ( key ).
found by algorithm.

[list_end][comment {-- definitions --}]

[emph Note:] Algorithm complexity : [term O(V**2*desiredFlow)], where [term V] is the number of nodes in graph [arg G].



[call [cmd struct::graph::op::ShortestsPathsByBFS] [arg G] [arg s] [arg outputFormat]]

Shortest pathfinding algorithm using BFS method. In comparison to [cmd struct::graph::op::dijkstra] it can
work with negative weights on edges. Of course negative cycles are not allowed. Algorithm is better than dijkstra
for sparse graphs, but also there exist some pathological cases (those cases generally don't appear in practise) that 
make time complexity increase exponentially with the growth of the number of nodes.

[para]
[list_begin definitions]

[def Arguments:]
[list_begin arguments]







<
<




|







701
702
703
704
705
706
707


708
709
710
711
712
713
714
715
716
717
718
719
Dictionary containing values of used throughputs for each edge ( key ).
found by algorithm.

[list_end][comment {-- definitions --}]

[emph Note:] Algorithm complexity : [term O(V**2*desiredFlow)], where [term V] is the number of nodes in graph [arg G].



[call [cmd struct::graph::op::ShortestsPathsByBFS] [arg G] [arg s] [arg outputFormat]]

Shortest pathfinding algorithm using BFS method. In comparison to [cmd struct::graph::op::dijkstra] it can
work with negative weights on edges. Of course negative cycles are not allowed. Algorithm is better than dijkstra
for sparse graphs, but also there exist some pathological cases (those cases generally don't appear in practise) that
make time complexity increase exponentially with the growth of the number of nodes.

[para]
[list_begin definitions]

[def Arguments:]
[list_begin arguments]
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
[opt_def paths]

When selected [arg outputFormat] is [const paths] - procedure returns dictionary containing
for each node [term v], a list of nodes, which is a path between source node [arg s] and node [term v].

[list_end][comment {-- options --}]



[list_end][comment {-- definitions --}]



[call [cmd struct::graph::op::BFS] [arg G] [arg s] [opt [arg outputFormat]...]]

Breadth-First Search - algorithm creates the BFS Tree.
Memory and time complexity: [term "O(V + E)"], where [term V] is the number of nodes and [term E]
is number of edges.








<
<

<
<







733
734
735
736
737
738
739


740


741
742
743
744
745
746
747
[opt_def paths]

When selected [arg outputFormat] is [const paths] - procedure returns dictionary containing
for each node [term v], a list of nodes, which is a path between source node [arg s] and node [term v].

[list_end][comment {-- options --}]



[list_end][comment {-- definitions --}]



[call [cmd struct::graph::op::BFS] [arg G] [arg s] [opt [arg outputFormat]...]]

Breadth-First Search - algorithm creates the BFS Tree.
Memory and time complexity: [term "O(V + E)"], where [term V] is the number of nodes and [term E]
is number of edges.

780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
When selected [option outputFormat] is [option tree] - procedure returns a tree structure ([cmd struct::tree]),
which is equivalent to BFS tree found by algorithm.

[list_end][comment {-- options --}]

[list_end][comment {-- definitions --}]



[call [cmd struct::graph::op::MinimumDiameterSpanningTree] [arg G]]

The goal is to find for input graph [arg G], the [term "spanning tree"] that
has the minimum [term "diameter"] value.

[para]








<
<







769
770
771
772
773
774
775


776
777
778
779
780
781
782
When selected [option outputFormat] is [option tree] - procedure returns a tree structure ([cmd struct::tree]),
which is equivalent to BFS tree found by algorithm.

[list_end][comment {-- options --}]

[list_end][comment {-- definitions --}]



[call [cmd struct::graph::op::MinimumDiameterSpanningTree] [arg G]]

The goal is to find for input graph [arg G], the [term "spanning tree"] that
has the minimum [term "diameter"] value.

[para]

809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
a better solution.

[para]

For input graph [arg G] algorithm returns the graph structure ([cmd struct::graph]) that is
a spanning tree with minimum diameter found by algorithm.



[call [cmd struct::graph::op::MinimumDegreeSpanningTree] [arg G]]

Algorithm finds for input graph [arg G], a spanning tree [term T] with the minimum possible
degree. That problem is [term NP-hard], so algorithm is an approximation algorithm.

[para]

Let [term V] be the set of nodes for graph [arg G] and let [term W] be any subset of [term V]. Lets
assume also that [term OPT] is optimal solution and [term ALG] is solution found by algorithm for input 
graph [arg G]. [para]
It can be proven that solution found with the algorithm must fulfil inequality: [para]  [term "((|W| + k - 1) / |W|) <= ALG <= 2*OPT + log2(n) + 1"].

[para]
[list_begin definitions]

[def Arguments:]
[list_begin arguments]
[arg_def {Graph Object} G input]
Undirected simple graph.

[list_end][comment {-- arguments --}]

[def Result:]
Algorithm returns graph structure, which is equivalent to spanning tree [term T] found by algorithm.

[list_end][comment {-- definitions --}]



[call [cmd struct::graph::op::MaximumFlowByDinic] [arg G] [arg s] [arg t] [arg blockingFlowAlg]]

Algorithm finds [sectref {Flow Problems} "maximum flow"] for the flow network represented by graph [arg G]. It is based on
the blocking-flow finding methods, which give us different complexities what makes a better fit for
different graphs.

[para]
[list_begin definitions]

[def Arguments:]
[list_begin arguments]
[arg_def {Graph Object} G input]
Directed graph [arg G] representing the flow network. Each edge should have attribute 
[term throughput] set with integer value.

[arg_def {Node} s input]
The source node for the flow network [arg G].

[arg_def {Node} t input]
The sink node for the flow network [arg G].







<
<








|


















<
<












|







796
797
798
799
800
801
802


803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829


830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
a better solution.

[para]

For input graph [arg G] algorithm returns the graph structure ([cmd struct::graph]) that is
a spanning tree with minimum diameter found by algorithm.



[call [cmd struct::graph::op::MinimumDegreeSpanningTree] [arg G]]

Algorithm finds for input graph [arg G], a spanning tree [term T] with the minimum possible
degree. That problem is [term NP-hard], so algorithm is an approximation algorithm.

[para]

Let [term V] be the set of nodes for graph [arg G] and let [term W] be any subset of [term V]. Lets
assume also that [term OPT] is optimal solution and [term ALG] is solution found by algorithm for input
graph [arg G]. [para]
It can be proven that solution found with the algorithm must fulfil inequality: [para]  [term "((|W| + k - 1) / |W|) <= ALG <= 2*OPT + log2(n) + 1"].

[para]
[list_begin definitions]

[def Arguments:]
[list_begin arguments]
[arg_def {Graph Object} G input]
Undirected simple graph.

[list_end][comment {-- arguments --}]

[def Result:]
Algorithm returns graph structure, which is equivalent to spanning tree [term T] found by algorithm.

[list_end][comment {-- definitions --}]



[call [cmd struct::graph::op::MaximumFlowByDinic] [arg G] [arg s] [arg t] [arg blockingFlowAlg]]

Algorithm finds [sectref {Flow Problems} "maximum flow"] for the flow network represented by graph [arg G]. It is based on
the blocking-flow finding methods, which give us different complexities what makes a better fit for
different graphs.

[para]
[list_begin definitions]

[def Arguments:]
[list_begin arguments]
[arg_def {Graph Object} G input]
Directed graph [arg G] representing the flow network. Each edge should have attribute
[term throughput] set with integer value.

[arg_def {Node} s input]
The source node for the flow network [arg G].

[arg_def {Node} t input]
The sink node for the flow network [arg G].
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959

[para]

[emph Note:] [cmd struct::graph::op::BlockingFlowByDinic] gives [term O(m*n^2)] complexity and
[cmd struct::graph::op::BlockingFlowByMKM] gives [term O(n^3)] complexity, where [term n] is the number of nodes
and [term m] is the number of edges in flow network [arg G].



[call [cmd struct::graph::op::BlockingFlowByDinic] [arg G] [arg s] [arg t]]

Algorithm for given network [arg G] with source [arg s] and sink [arg t], finds a [sectref {Flow Problems} "blocking
flow"], which can be used to obtain a [term "maximum flow"] for that network [arg G].

[para]
[list_begin definitions]

[def Arguments:]
[list_begin arguments]
[arg_def {Graph Object} G input]
Directed graph [arg G] representing the flow network. Each edge should have attribute 
[term throughput] set with integer value.
[arg_def {Node} s input]
The source node for the flow network [arg G].
[arg_def {Node} t input]
The sink node for the flow network [arg G].
[list_end][comment {-- arguments --}]

[def Result:]
Algorithm returns dictionary containing it's blocking flow value for each edge (key) in network [arg G].

[list_end][comment {-- definitions --}]

[emph Note:] Algorithm's complexity is [term O(n*m)], where [term n] is the number of nodes
and [term m] is the number of edges in flow network [arg G].



[call [cmd struct::graph::op::BlockingFlowByMKM] [arg G] [arg s] [arg t]]

Algorithm for given network [arg G] with source [arg s] and sink [arg t], finds a [sectref {Flow Problems} "blocking
flow"], which can be used to obtain a [term "maximum flow"] for that [term network] [arg G].

[para]
[list_begin definitions]

[def Arguments:]
[list_begin arguments]
[arg_def {Graph Object} G input]
Directed graph [arg G] representing the flow network. Each edge should have attribute 
[term throughput] set with integer value.
[arg_def {Node} s input]
The source node for the flow network [arg G].
[arg_def {Node} t input]
The sink node for the flow network [arg G].

[list_end][comment {-- arguments --}]

[def Result:]
Algorithm returns dictionary containing it's blocking flow value for each edge (key) in network [arg G].

[list_end][comment {-- definitions --}]

[emph Note:] Algorithm's complexity is [term O(n^2)], where [term n] is the number of nodes in flow network [arg G].



[call [cmd struct::graph::op::createResidualGraph] [arg G] [arg f]]


Procedure creates a [term "residual graph"] (or [sectref {Flow Problems} "residual network"] ) for network [arg G] and given
flow [arg f].

[para]
[list_begin definitions]








<
<











|















<
<











|















<
<

<







867
868
869
870
871
872
873


874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900


901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927


928

929
930
931
932
933
934
935

[para]

[emph Note:] [cmd struct::graph::op::BlockingFlowByDinic] gives [term O(m*n^2)] complexity and
[cmd struct::graph::op::BlockingFlowByMKM] gives [term O(n^3)] complexity, where [term n] is the number of nodes
and [term m] is the number of edges in flow network [arg G].



[call [cmd struct::graph::op::BlockingFlowByDinic] [arg G] [arg s] [arg t]]

Algorithm for given network [arg G] with source [arg s] and sink [arg t], finds a [sectref {Flow Problems} "blocking
flow"], which can be used to obtain a [term "maximum flow"] for that network [arg G].

[para]
[list_begin definitions]

[def Arguments:]
[list_begin arguments]
[arg_def {Graph Object} G input]
Directed graph [arg G] representing the flow network. Each edge should have attribute
[term throughput] set with integer value.
[arg_def {Node} s input]
The source node for the flow network [arg G].
[arg_def {Node} t input]
The sink node for the flow network [arg G].
[list_end][comment {-- arguments --}]

[def Result:]
Algorithm returns dictionary containing it's blocking flow value for each edge (key) in network [arg G].

[list_end][comment {-- definitions --}]

[emph Note:] Algorithm's complexity is [term O(n*m)], where [term n] is the number of nodes
and [term m] is the number of edges in flow network [arg G].



[call [cmd struct::graph::op::BlockingFlowByMKM] [arg G] [arg s] [arg t]]

Algorithm for given network [arg G] with source [arg s] and sink [arg t], finds a [sectref {Flow Problems} "blocking
flow"], which can be used to obtain a [term "maximum flow"] for that [term network] [arg G].

[para]
[list_begin definitions]

[def Arguments:]
[list_begin arguments]
[arg_def {Graph Object} G input]
Directed graph [arg G] representing the flow network. Each edge should have attribute
[term throughput] set with integer value.
[arg_def {Node} s input]
The source node for the flow network [arg G].
[arg_def {Node} t input]
The sink node for the flow network [arg G].

[list_end][comment {-- arguments --}]

[def Result:]
Algorithm returns dictionary containing it's blocking flow value for each edge (key) in network [arg G].

[list_end][comment {-- definitions --}]

[emph Note:] Algorithm's complexity is [term O(n^2)], where [term n] is the number of nodes in flow network [arg G].



[call [cmd struct::graph::op::createResidualGraph] [arg G] [arg f]]


Procedure creates a [term "residual graph"] (or [sectref {Flow Problems} "residual network"] ) for network [arg G] and given
flow [arg f].

[para]
[list_begin definitions]

968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
[list_end][comment {-- arguments --}]

[def Result:]
Procedure returns graph structure that is a [term "residual graph"] created from input flow
network [arg G].
[list_end][comment {-- definitions --}]



[call [cmd struct::graph::op::createAugmentingNetwork] [arg G] [arg f] [arg path]]

Procedure creates an [sectref {Flow Problems} "augmenting network"] for a given residual network [arg G] 
, flow [arg f] and augmenting path [arg path].

[para]
[list_begin definitions]

[def Arguments:]
[list_begin arguments]







<
<


|







944
945
946
947
948
949
950


951
952
953
954
955
956
957
958
959
960
[list_end][comment {-- arguments --}]

[def Result:]
Procedure returns graph structure that is a [term "residual graph"] created from input flow
network [arg G].
[list_end][comment {-- definitions --}]



[call [cmd struct::graph::op::createAugmentingNetwork] [arg G] [arg f] [arg path]]

Procedure creates an [sectref {Flow Problems} "augmenting network"] for a given residual network [arg G]
, flow [arg f] and augmenting path [arg path].

[para]
[list_begin definitions]

[def Arguments:]
[list_begin arguments]
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
[list_end][comment {-- arguments --}]

[def Result:]
Algorithm returns graph structure containing the modified augmenting network.

[list_end][comment {-- definitions --}]



[call [cmd struct::graph::op::createLevelGraph] [arg Gf] [arg s]]

For given residual graph [arg Gf] procedure finds the [sectref {Flow Problems} "level graph"].

[para]
[list_begin definitions]

[def Arguments:]
[list_begin arguments]
[arg_def {Graph Object} Gf input]
Residual network, where each edge has it's attribute [term throughput] set with certain value.
[arg_def {Node} s input]
The source node for the residual network [arg Gf].
[list_end][comment {-- arguments --}]

[def Result:]
Procedure returns a [term "level graph"] created from input [term "residual network"].
[list_end][comment {-- definitions --}]



[call [cmd struct::graph::op::TSPLocalSearching] [arg G] [arg C]]

Algorithm is a [term "heuristic of local searching"] for [term "Travelling Salesman Problem"]. For some
solution of [term "TSP problem"], it checks if it's possible to find a better solution. As [term "TSP"]
is well known NP-Complete problem, so algorithm is a approximation algorithm (with 2 approximation factor).

[para]
[list_begin definitions]

[def Arguments:]
[list_begin arguments]
[arg_def {Graph Object} G input]
Undirected and complete graph with attributes "weight" set on each single edge.
[arg_def {List} C input]
A list of edges being [term "Hamiltonian cycle"], which is solution of [term "TSP Problem"] for graph [arg G]. 
[list_end][comment {-- arguments --}]

[def Result:]
Algorithm returns the best solution for [term "TSP problem"], it was able to find.
[list_end][comment {-- definitions --}]

[emph Note:] The solution depends on the choosing of the beginning cycle [arg C]. It's not true that better cycle
assures that better solution will be found, but practise shows that we should give starting cycle with as small
sum of weights as possible.



[call [cmd struct::graph::op::TSPLocalSearching3Approx] [arg G] [arg C]]

Algorithm is a [term "heuristic of local searching"] for [term "Travelling Salesman Problem"]. For some
solution of [term "TSP problem"], it checks if it's possible to find a better solution. As [term "TSP"]
is well known NP-Complete problem, so algorithm is a approximation algorithm (with 3 approximation factor).

[para]

[list_begin definitions]

[def Arguments:]
[list_begin arguments]
[arg_def {Graph Object} G input]
Undirected and complete graph with attributes "weight" set on each single edge.
[arg_def {List} C input]
A list of edges being [term "Hamiltonian cycle"], which is solution of [term "TSP Problem"] for graph [arg G]. 
[list_end][comment {-- arguments --}]

[def Result:]
Algorithm returns the best solution for [term "TSP problem"], it was able to find.

[list_end][comment {-- definitions --}]

[emph Note:] In practise 3-approximation algorithm turns out to be far more effective than 2-approximation, but it gives
worser approximation factor. Further heuristics of local searching (e.g. 4-approximation) doesn't give enough boost to 
square the increase of approximation factor, so 2 and 3 approximations are mainly used.



[call [cmd struct::graph::op::createSquaredGraph] [arg G]]

X-Squared graph is a graph with the same set of nodes as input graph [arg G], but a different set of edges. X-Squared graph
has edge [term (u,v)], if and only if, the distance between [term u] and [term v] nodes is not greater than X and [term "u != v"].
[para]
Procedure for input graph [arg G], returns its two-squared graph.

[para]

[emph Note:] Distances used in choosing new set of edges are considering the number of edges, not the sum of weights at edges.



[call [cmd struct::graph::op::createCompleteGraph] [arg G] [arg originalEdges]]

For input graph [arg G] procedure adds missing arcs to make it a [term "complete graph"]. It also holds in
variable [arg originalEdges] the set of arcs that graph [arg G] possessed before that operation.

[list_end]



[section "Background theory and terms"]



[subsection "Shortest Path Problem"]

[list_begin definitions]

[def "Definition ([term "single-pair shortest path problem"]):"]
Formally, given a weighted graph (let [term V] be the set of vertices, and [term E] a set of edges),
and one vertice [term v] of [term V], find a path [term P] from [term v] to a [term "v'"] of V so that
the sum of weights on edges along the path is minimal among all paths connecting v to v'.

[def "Generalizations:"]

[list_begin itemized]
[item][term "The single-source shortest path problem"], in which we have to find shortest paths from a source vertex v to all other vertices in the graph. 
[item][term "The single-destination shortest path problem"], in which we have to find shortest paths from all vertices in the graph to a single destination vertex v. This can be reduced to the single-source shortest path problem by reversing the edges in the graph. 
[item][term "The all-pairs shortest path problem"], in which we have to find shortest paths between every pair of vertices v, v' in the graph.
[list_end][comment {-- itemized --}]

[emph "Note:"]
The result of [term "Shortest Path problem"] can be [term "Shortest Path tree"], which is a subgraph of a given (possibly weighted) graph constructed so that the
distance between a selected root node and all other nodes is minimal. It is a tree because if there are two paths between the root node and some
vertex v (i.e. a cycle), we can delete the last edge of the longer path without increasing the distance from the root node to any node in the subgraph.

[list_end][comment {-- definitions --}]


[subsection "Travelling Salesman Problem"]

[list_begin definitions]

[def "Definition:"]
For given edge-weighted (weights on edges should be positive) graph the goal is to find the cycle that visits each node in graph 
exactly once ([term "Hamiltonian cycle"]).

[def "Generalizations:"]

[list_begin itemized]
[item][term "Metric TSP"] - A very natural restriction of the [term TSP] is to require that the distances between cities form a [term metric], i.e.,
they satisfy [term "the triangle inequality"]. That is, for any 3 cities [term A], [term B] and [term C], the distance between [term A] and [term C]
must be at most the distance from [term A] to [term B] plus the distance from [term B] to [term C]. Most natural instances of [term TSP] 
satisfy this constraint.

[item][term "Euclidean TSP"] - Euclidean TSP, or [term "planar TSP"], is the [term TSP] with the distance being the ordinary [term "Euclidean distance"]. 
[term "Euclidean TSP"] is a particular case of [term TSP] with [term "triangle inequality"], since distances in plane obey triangle inequality. However,
it seems to be easier than general [term TSP] with [term "triangle inequality"]. For example, [term "the minimum spanning tree"] of the graph associated 
with an instance of [term "Euclidean TSP"] is a [term "Euclidean minimum spanning tree"], and so can be computed in expected [term "O(n log n)"] time for 
[term n] points (considerably less than the number of edges). This enables the simple [term "2-approximation algorithm"] for TSP with triangle 
inequality above to operate more quickly.

[item][term "Asymmetric TSP"] - In most cases, the distance between two nodes in the [term TSP] network is the same in both directions.
The case where the distance from [term A] to [term B] is not equal to the distance from [term B] to [term A] is called [term "asymmetric TSP"].
A practical application of an [term "asymmetric TSP"] is route optimisation using street-level routing (asymmetric due to one-way streets, 
slip-roads and motorways).

[list_end][comment {-- itemized --}]
[list_end][comment {-- definitions --}]

[subsection "Matching Problem"]

[list_begin definitions]

[def "Definition:"]
Given a graph [term "G = (V,E)"], a matching or [term "edge-independent set"] [term M] in [term G] is a set of pairwise non-adjacent edges,
that is, no two edges share a common vertex. A vertex is [term matched] if it is incident to an edge in the [term "matching M"].
Otherwise the vertex is [term unmatched].


[def "Generalizations:"]

[list_begin itemized]
[item][term "Maximal matching"] - a matching [term M] of a graph G with the property that if any edge not in [term M] is added to [term M],
it is no longer a [term matching], that is, [term M] is maximal if it is not a proper subset of any other [term matching] in graph G. 
In other words, a [term "matching M"] of a graph G is maximal if every edge in G has a non-empty intersection with at least one edge in [term M].

[item][term "Maximum matching"] - a matching that contains the largest possible number of edges. There may be many [term "maximum matchings"].
The [term "matching number"] of a graph G is the size of a [term "maximum matching"]. Note that every [term "maximum matching"] is [term maximal],
but not every [term "maximal matching"] is a [term "maximum matching"].

[item][term "Perfect matching"] - a matching which matches all vertices of the graph. That is, every vertex of the graph is incident to exactly one
edge of the matching. Every [term "perfect matching"] is [term maximum] and hence [term maximal]. In some literature, the term [term "complete matching"]
is used. A [term "perfect matching"] is also a [term "minimum-size edge cover"]. Moreover, the size of a [term "maximum matching"] is no larger than the 
size of a [term "minimum edge cover"].

[item][term "Near-perfect matching"] - a matching in which exactly one vertex is unmatched. This can only occur when the graph has an odd number of vertices,
and such a [term matching] must be [term maximum]. If, for every vertex in a graph, there is a near-perfect matching that omits only that vertex, the graph
is also called [term factor-critical].

[list_end][comment {-- itemized --}]

[def "Related terms:"]

[list_begin itemized]
[item][term "Alternating path"] - given a matching [term M], an [term "alternating path"] is a path in which the edges belong alternatively
to the matching and not to the matching.

[item][term "Augmenting path"] - given a matching [term M], an [term "augmenting path"] is an [term "alternating path"] that starts from 
and ends on free (unmatched) vertices.

[list_end][comment {-- itemized --}]

[list_end][comment {-- definitons --}]



[subsection "Cut Problems"]

[list_begin definitions]

[def "Definition:"]
A [term cut] is a partition of the vertices of a graph into two [term "disjoint subsets"]. The [term cut-set] of the [term cut] is the 
set of edges whose end points are in different subsets of the partition. Edges are said to be crossing the cut if they are in its [term cut-set].
[para]
Formally:
[list_begin itemized]
[item] a [term cut] [term "C = (S,T)"] is a partition of [term V] of a graph [term "G = (V, E)"].

[item] an [term "s-t cut"] [term "C = (S,T)"] of a [term "flow network"] [term "N = (V, E)"] is a cut of [term N] such that [term s] is included in [term S]
and [term t] is included in [term T], where [term s] and [term t] are the [term source] and the [term sink] of [term N] respectively. 

[item] The [term cut-set] of a [term "cut C = (S,T)"] is such set of edges from graph [term "G = (V, E)"] that each edge [term "(u, v)"] satisfies
condition that [term u] is included in [term S] and [term v] is included in [term T].

[list_end][comment {-- itemized --}]
[para] 
In an [term "unweighted undirected"] graph, the size or weight of a cut is the number of edges crossing the cut. In a [term "weighted graph"],
the same term is defined by the sum of the weights of the edges crossing the cut.
[para]
In a [term "flow network"], an [term "s-t cut"] is a cut that requires the [term source] and the [term sink] to be in different subsets,
and its [term cut-set] only consists of edges going from the [term source's] side to the [term sink's] side. The capacity of an [term "s-t cut"]
is defined by the sum of capacity of each edge in the [term cut-set].
[para]
The [term cut] of a graph can sometimes refer to its [term cut-set] instead of the partition.


[def "Generalizations:"]
[list_begin itemized]
[item][term "Minimum cut"] - A cut is minimum if the size of the cut is not larger than the size of any other cut.
[item][term "Maximum cut"] - A cut is maximum if the size of the cut is not smaller than the size of any other cut.
[item][term "Sparsest cut"] - The [term "Sparsest cut problem"] is to bipartition the vertices so as to minimize the ratio of the number
of edges across the cut divided by the number of vertices in the smaller half of the partition.
[list_end][comment {-- itemized --}]

[list_end][comment {-- definitons --}]


[subsection "K-Center Problem"]

[list_begin definitions]

[def "Definitions:"]
[list_begin definitions]







<
<



















<
<














|









<
<
















|








|

<
<












<
<







<
<

<
<













|
|










<





|







|


|

|
|
|




|














<




|








|














|






<
<





|







|





|








<










<







968
969
970
971
972
973
974


975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993


994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017


1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044


1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056


1057
1058
1059
1060
1061
1062
1063


1064


1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089

1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129

1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164


1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192

1193
1194
1195
1196
1197
1198
1199
1200
1201
1202

1203
1204
1205
1206
1207
1208
1209
[list_end][comment {-- arguments --}]

[def Result:]
Algorithm returns graph structure containing the modified augmenting network.

[list_end][comment {-- definitions --}]



[call [cmd struct::graph::op::createLevelGraph] [arg Gf] [arg s]]

For given residual graph [arg Gf] procedure finds the [sectref {Flow Problems} "level graph"].

[para]
[list_begin definitions]

[def Arguments:]
[list_begin arguments]
[arg_def {Graph Object} Gf input]
Residual network, where each edge has it's attribute [term throughput] set with certain value.
[arg_def {Node} s input]
The source node for the residual network [arg Gf].
[list_end][comment {-- arguments --}]

[def Result:]
Procedure returns a [term "level graph"] created from input [term "residual network"].
[list_end][comment {-- definitions --}]



[call [cmd struct::graph::op::TSPLocalSearching] [arg G] [arg C]]

Algorithm is a [term "heuristic of local searching"] for [term "Travelling Salesman Problem"]. For some
solution of [term "TSP problem"], it checks if it's possible to find a better solution. As [term "TSP"]
is well known NP-Complete problem, so algorithm is a approximation algorithm (with 2 approximation factor).

[para]
[list_begin definitions]

[def Arguments:]
[list_begin arguments]
[arg_def {Graph Object} G input]
Undirected and complete graph with attributes "weight" set on each single edge.
[arg_def {List} C input]
A list of edges being [term "Hamiltonian cycle"], which is solution of [term "TSP Problem"] for graph [arg G].
[list_end][comment {-- arguments --}]

[def Result:]
Algorithm returns the best solution for [term "TSP problem"], it was able to find.
[list_end][comment {-- definitions --}]

[emph Note:] The solution depends on the choosing of the beginning cycle [arg C]. It's not true that better cycle
assures that better solution will be found, but practise shows that we should give starting cycle with as small
sum of weights as possible.



[call [cmd struct::graph::op::TSPLocalSearching3Approx] [arg G] [arg C]]

Algorithm is a [term "heuristic of local searching"] for [term "Travelling Salesman Problem"]. For some
solution of [term "TSP problem"], it checks if it's possible to find a better solution. As [term "TSP"]
is well known NP-Complete problem, so algorithm is a approximation algorithm (with 3 approximation factor).

[para]

[list_begin definitions]

[def Arguments:]
[list_begin arguments]
[arg_def {Graph Object} G input]
Undirected and complete graph with attributes "weight" set on each single edge.
[arg_def {List} C input]
A list of edges being [term "Hamiltonian cycle"], which is solution of [term "TSP Problem"] for graph [arg G].
[list_end][comment {-- arguments --}]

[def Result:]
Algorithm returns the best solution for [term "TSP problem"], it was able to find.

[list_end][comment {-- definitions --}]

[emph Note:] In practise 3-approximation algorithm turns out to be far more effective than 2-approximation, but it gives
worser approximation factor. Further heuristics of local searching (e.g. 4-approximation) doesn't give enough boost to
square the increase of approximation factor, so 2 and 3 approximations are mainly used.



[call [cmd struct::graph::op::createSquaredGraph] [arg G]]

X-Squared graph is a graph with the same set of nodes as input graph [arg G], but a different set of edges. X-Squared graph
has edge [term (u,v)], if and only if, the distance between [term u] and [term v] nodes is not greater than X and [term "u != v"].
[para]
Procedure for input graph [arg G], returns its two-squared graph.

[para]

[emph Note:] Distances used in choosing new set of edges are considering the number of edges, not the sum of weights at edges.



[call [cmd struct::graph::op::createCompleteGraph] [arg G] [arg originalEdges]]

For input graph [arg G] procedure adds missing arcs to make it a [term "complete graph"]. It also holds in
variable [arg originalEdges] the set of arcs that graph [arg G] possessed before that operation.

[list_end]



[section "Background theory and terms"]



[subsection "Shortest Path Problem"]

[list_begin definitions]

[def "Definition ([term "single-pair shortest path problem"]):"]
Formally, given a weighted graph (let [term V] be the set of vertices, and [term E] a set of edges),
and one vertice [term v] of [term V], find a path [term P] from [term v] to a [term "v'"] of V so that
the sum of weights on edges along the path is minimal among all paths connecting v to v'.

[def "Generalizations:"]

[list_begin itemized]
[item][term "The single-source shortest path problem"], in which we have to find shortest paths from a source vertex v to all other vertices in the graph.
[item][term "The single-destination shortest path problem"], in which we have to find shortest paths from all vertices in the graph to a single destination vertex v. This can be reduced to the single-source shortest path problem by reversing the edges in the graph.
[item][term "The all-pairs shortest path problem"], in which we have to find shortest paths between every pair of vertices v, v' in the graph.
[list_end][comment {-- itemized --}]

[emph "Note:"]
The result of [term "Shortest Path problem"] can be [term "Shortest Path tree"], which is a subgraph of a given (possibly weighted) graph constructed so that the
distance between a selected root node and all other nodes is minimal. It is a tree because if there are two paths between the root node and some
vertex v (i.e. a cycle), we can delete the last edge of the longer path without increasing the distance from the root node to any node in the subgraph.

[list_end][comment {-- definitions --}]


[subsection "Travelling Salesman Problem"]

[list_begin definitions]

[def "Definition:"]
For given edge-weighted (weights on edges should be positive) graph the goal is to find the cycle that visits each node in graph
exactly once ([term "Hamiltonian cycle"]).

[def "Generalizations:"]

[list_begin itemized]
[item][term "Metric TSP"] - A very natural restriction of the [term TSP] is to require that the distances between cities form a [term metric], i.e.,
they satisfy [term "the triangle inequality"]. That is, for any 3 cities [term A], [term B] and [term C], the distance between [term A] and [term C]
must be at most the distance from [term A] to [term B] plus the distance from [term B] to [term C]. Most natural instances of [term TSP]
satisfy this constraint.

[item][term "Euclidean TSP"] - Euclidean TSP, or [term "planar TSP"], is the [term TSP] with the distance being the ordinary [term "Euclidean distance"].
[term "Euclidean TSP"] is a particular case of [term TSP] with [term "triangle inequality"], since distances in plane obey triangle inequality. However,
it seems to be easier than general [term TSP] with [term "triangle inequality"]. For example, [term "the minimum spanning tree"] of the graph associated
with an instance of [term "Euclidean TSP"] is a [term "Euclidean minimum spanning tree"], and so can be computed in expected [term "O(n log n)"] time for
[term n] points (considerably less than the number of edges). This enables the simple [term "2-approximation algorithm"] for TSP with triangle
inequality above to operate more quickly.

[item][term "Asymmetric TSP"] - In most cases, the distance between two nodes in the [term TSP] network is the same in both directions.
The case where the distance from [term A] to [term B] is not equal to the distance from [term B] to [term A] is called [term "asymmetric TSP"].
A practical application of an [term "asymmetric TSP"] is route optimisation using street-level routing (asymmetric due to one-way streets,
slip-roads and motorways).

[list_end][comment {-- itemized --}]
[list_end][comment {-- definitions --}]

[subsection "Matching Problem"]

[list_begin definitions]

[def "Definition:"]
Given a graph [term "G = (V,E)"], a matching or [term "edge-independent set"] [term M] in [term G] is a set of pairwise non-adjacent edges,
that is, no two edges share a common vertex. A vertex is [term matched] if it is incident to an edge in the [term "matching M"].
Otherwise the vertex is [term unmatched].


[def "Generalizations:"]

[list_begin itemized]
[item][term "Maximal matching"] - a matching [term M] of a graph G with the property that if any edge not in [term M] is added to [term M],
it is no longer a [term matching], that is, [term M] is maximal if it is not a proper subset of any other [term matching] in graph G.
In other words, a [term "matching M"] of a graph G is maximal if every edge in G has a non-empty intersection with at least one edge in [term M].

[item][term "Maximum matching"] - a matching that contains the largest possible number of edges. There may be many [term "maximum matchings"].
The [term "matching number"] of a graph G is the size of a [term "maximum matching"]. Note that every [term "maximum matching"] is [term maximal],
but not every [term "maximal matching"] is a [term "maximum matching"].

[item][term "Perfect matching"] - a matching which matches all vertices of the graph. That is, every vertex of the graph is incident to exactly one
edge of the matching. Every [term "perfect matching"] is [term maximum] and hence [term maximal]. In some literature, the term [term "complete matching"]
is used. A [term "perfect matching"] is also a [term "minimum-size edge cover"]. Moreover, the size of a [term "maximum matching"] is no larger than the
size of a [term "minimum edge cover"].

[item][term "Near-perfect matching"] - a matching in which exactly one vertex is unmatched. This can only occur when the graph has an odd number of vertices,
and such a [term matching] must be [term maximum]. If, for every vertex in a graph, there is a near-perfect matching that omits only that vertex, the graph
is also called [term factor-critical].

[list_end][comment {-- itemized --}]

[def "Related terms:"]

[list_begin itemized]
[item][term "Alternating path"] - given a matching [term M], an [term "alternating path"] is a path in which the edges belong alternatively
to the matching and not to the matching.

[item][term "Augmenting path"] - given a matching [term M], an [term "augmenting path"] is an [term "alternating path"] that starts from
and ends on free (unmatched) vertices.

[list_end][comment {-- itemized --}]

[list_end][comment {-- definitons --}]



[subsection "Cut Problems"]

[list_begin definitions]

[def "Definition:"]
A [term cut] is a partition of the vertices of a graph into two [term "disjoint subsets"]. The [term cut-set] of the [term cut] is the
set of edges whose end points are in different subsets of the partition. Edges are said to be crossing the cut if they are in its [term cut-set].
[para]
Formally:
[list_begin itemized]
[item] a [term cut] [term "C = (S,T)"] is a partition of [term V] of a graph [term "G = (V, E)"].

[item] an [term "s-t cut"] [term "C = (S,T)"] of a [term "flow network"] [term "N = (V, E)"] is a cut of [term N] such that [term s] is included in [term S]
and [term t] is included in [term T], where [term s] and [term t] are the [term source] and the [term sink] of [term N] respectively.

[item] The [term cut-set] of a [term "cut C = (S,T)"] is such set of edges from graph [term "G = (V, E)"] that each edge [term "(u, v)"] satisfies
condition that [term u] is included in [term S] and [term v] is included in [term T].

[list_end][comment {-- itemized --}]
[para]
In an [term "unweighted undirected"] graph, the size or weight of a cut is the number of edges crossing the cut. In a [term "weighted graph"],
the same term is defined by the sum of the weights of the edges crossing the cut.
[para]
In a [term "flow network"], an [term "s-t cut"] is a cut that requires the [term source] and the [term sink] to be in different subsets,
and its [term cut-set] only consists of edges going from the [term source's] side to the [term sink's] side. The capacity of an [term "s-t cut"]
is defined by the sum of capacity of each edge in the [term cut-set].
[para]
The [term cut] of a graph can sometimes refer to its [term cut-set] instead of the partition.


[def "Generalizations:"]
[list_begin itemized]
[item][term "Minimum cut"] - A cut is minimum if the size of the cut is not larger than the size of any other cut.
[item][term "Maximum cut"] - A cut is maximum if the size of the cut is not smaller than the size of any other cut.
[item][term "Sparsest cut"] - The [term "Sparsest cut problem"] is to bipartition the vertices so as to minimize the ratio of the number
of edges across the cut divided by the number of vertices in the smaller half of the partition.
[list_end][comment {-- itemized --}]

[list_end][comment {-- definitons --}]


[subsection "K-Center Problem"]

[list_begin definitions]

[def "Definitions:"]
[list_begin definitions]
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
[arg W]. The goal is to choose such set of nodes [term S] ( which is a subset of [term V] ), that it's
total weight is not greater than [arg W] and also function: [term "max_v { min_u { cost(u,v) }}"]
has the smallest possible worth ( [term v] is a node in [term V] and [term u] is a node in [term S] ).

[list_end][comment {-- definitions --}]
[list_end][comment {-- definitions --}]



[subsection "Flow Problems"]

[list_begin definitions]

[def "Definitions:"]
[list_begin itemized]
[item][term "the maximum flow problem"] - the goal is to find a feasible flow through a single-source, single-sink flow network that is maximum.
The [term "maximum flow problem"] can be seen as a special case of more complex network flow problems, such as the [term "circulation problem"].
The maximum value of an [term "s-t flow"] is equal to the minimum capacity of an [term "s-t cut"] in the network, as stated in the
[term "max-flow min-cut theorem"]. 
[para]
More formally for flow network [term "G = (V,E)"], where for each edge [term "(u, v)"] we have its throuhgput [term "c(u,v)"] defined. As [term flow]
[term F] we define set of non-negative integer attributes [term f(u,v)] assigned to edges, satisfying such conditions:
[list_begin enumerated]
[enum]for each edge [term "(u, v)"] in [term G] such condition should be satisfied:      0 <= f(u,v) <= c(u,v)
[enum]Network [term G] has source node [term s] such that the flow [term F] is equal to the sum of outcoming flow decreased by the sum of incoming flow from that source node [term s].
[enum]Network [term G] has sink node [term t] such that the the [term -F] value is equal to the sum of the incoming flow decreased by the sum of outcoming flow from that sink node [term t]. 
[enum]For each node that is not a [term source] or [term sink] the sum of incoming flow and sum of outcoming flow should be equal.
[list_end][comment {-- enumerated --}]

[item][term "the minimum cost flow problem"] - the goal is finding the cheapest possible way of sending a certain amount of flow through a [term "flow network"].

[item][term "blocking flow"] - a [term "blocking flow"] for a [term "residual network"] [term Gf] we name such flow [term b] in [term Gf] that:
[list_begin enumerated]







<
<









|






|







1222
1223
1224
1225
1226
1227
1228


1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
[arg W]. The goal is to choose such set of nodes [term S] ( which is a subset of [term V] ), that it's
total weight is not greater than [arg W] and also function: [term "max_v { min_u { cost(u,v) }}"]
has the smallest possible worth ( [term v] is a node in [term V] and [term u] is a node in [term S] ).

[list_end][comment {-- definitions --}]
[list_end][comment {-- definitions --}]



[subsection "Flow Problems"]

[list_begin definitions]

[def "Definitions:"]
[list_begin itemized]
[item][term "the maximum flow problem"] - the goal is to find a feasible flow through a single-source, single-sink flow network that is maximum.
The [term "maximum flow problem"] can be seen as a special case of more complex network flow problems, such as the [term "circulation problem"].
The maximum value of an [term "s-t flow"] is equal to the minimum capacity of an [term "s-t cut"] in the network, as stated in the
[term "max-flow min-cut theorem"].
[para]
More formally for flow network [term "G = (V,E)"], where for each edge [term "(u, v)"] we have its throuhgput [term "c(u,v)"] defined. As [term flow]
[term F] we define set of non-negative integer attributes [term f(u,v)] assigned to edges, satisfying such conditions:
[list_begin enumerated]
[enum]for each edge [term "(u, v)"] in [term G] such condition should be satisfied:      0 <= f(u,v) <= c(u,v)
[enum]Network [term G] has source node [term s] such that the flow [term F] is equal to the sum of outcoming flow decreased by the sum of incoming flow from that source node [term s].
[enum]Network [term G] has sink node [term t] such that the the [term -F] value is equal to the sum of the incoming flow decreased by the sum of outcoming flow from that sink node [term t].
[enum]For each node that is not a [term source] or [term sink] the sum of incoming flow and sum of outcoming flow should be equal.
[list_end][comment {-- enumerated --}]

[item][term "the minimum cost flow problem"] - the goal is finding the cheapest possible way of sending a certain amount of flow through a [term "flow network"].

[item][term "blocking flow"] - a [term "blocking flow"] for a [term "residual network"] [term Gf] we name such flow [term b] in [term Gf] that:
[list_begin enumerated]
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
[item][term "augmenting network"] - it is a modification of [term "residual network"] considering the new
flow values. Structure stays unchanged but values of throughputs and costs at edges
are different.

[list_end][comment {-- itemized --}]
[list_end][comment {-- definitions --}]




[subsection "Approximation algorithm"]

[list_begin definitions]

[def "k-approximation algorithm:"]
Algorithm is a k-approximation, when for [term ALG] (solution returned by algorithm) and
[term OPT] (optimal solution), such inequality is true: 

[list_begin itemized]
[item] for minimalization problems: [term "ALG/OPT <= k" ]
[item] for maximalization problems: [term "OPT/ALG <= k" ]
[list_end][comment {-- itemized --}]


[list_end][comment {-- definitions --}]


[section References]

[list_begin enum]
[enum] [uri http://en.wikipedia.org/wiki/Adjacency_matrix      {Adjacency matrix}]
[enum] [uri http://en.wikipedia.org/wiki/Adjacency_list		   {Adjacency list}]
[enum] [uri http://en.wikipedia.org/wiki/Kruskal%27s_algorithm {Kruskal's algorithm}]







<
<
<






|






<

<







1263
1264
1265
1266
1267
1268
1269



1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282

1283

1284
1285
1286
1287
1288
1289
1290
[item][term "augmenting network"] - it is a modification of [term "residual network"] considering the new
flow values. Structure stays unchanged but values of throughputs and costs at edges
are different.

[list_end][comment {-- itemized --}]
[list_end][comment {-- definitions --}]




[subsection "Approximation algorithm"]

[list_begin definitions]

[def "k-approximation algorithm:"]
Algorithm is a k-approximation, when for [term ALG] (solution returned by algorithm) and
[term OPT] (optimal solution), such inequality is true:

[list_begin itemized]
[item] for minimalization problems: [term "ALG/OPT <= k" ]
[item] for maximalization problems: [term "OPT/ALG <= k" ]
[list_end][comment {-- itemized --}]


[list_end][comment {-- definitions --}]


[section References]

[list_begin enum]
[enum] [uri http://en.wikipedia.org/wiki/Adjacency_matrix      {Adjacency matrix}]
[enum] [uri http://en.wikipedia.org/wiki/Adjacency_list		   {Adjacency list}]
[enum] [uri http://en.wikipedia.org/wiki/Kruskal%27s_algorithm {Kruskal's algorithm}]
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
[enum] [uri http://en.wikipedia.org/wiki/Dinic's_algorithm {Dinic's algorithm}]
[enum] [uri http://www.csc.kth.se/~viggo/wwwcompendium/node128.html {K-Center problem}]
[enum] [uri http://en.wikipedia.org/wiki/Breadth-first_search {BFS}]
[enum] [uri http://en.wikipedia.org/wiki/Degree-constrained_spanning_tree {Minimum Degree Spanning Tree}]
[enum] [uri http://en.wikipedia.org/wiki/Approximation_algorithm {Approximation algorithm}]
[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {struct :: graph}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords graph dijkstra distance radius diameter eccentricity]
[keywords edge arc node vertex subgraph neighbour]
[keywords adjacent loop degree]
[keywords {cut vertex} {articulation point} {connected component}]
[keywords {strongly connected component} {adjacency matrix} {adjacency list}]
[keywords {minimal spanning tree} bipartite bridge {cut edge} isthmus]
[keywords {shortest path} {travelling salesman} {max cut} matching {independent set}]
[keywords {vertex cover} {maximum flow} {minimum cost flow} {blocking flow}]
[keywords {augmenting path} {residual graph} {level graph} {flow network} {augmenting network}]
[keywords {complete graph} {squared graph} {local searching} {heuristic} {bfs} {approximation algorithm}]
[keywords {minimum diameter spanning tree} {minimum degree spanning tree} {degree constrained spanning tree}]
[manpage_end]







<
<
<
<
<
<
|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<

1309
1310
1311
1312
1313
1314
1315






1316

1317















1318
[enum] [uri http://en.wikipedia.org/wiki/Dinic's_algorithm {Dinic's algorithm}]
[enum] [uri http://www.csc.kth.se/~viggo/wwwcompendium/node128.html {K-Center problem}]
[enum] [uri http://en.wikipedia.org/wiki/Breadth-first_search {BFS}]
[enum] [uri http://en.wikipedia.org/wiki/Degree-constrained_spanning_tree {Minimum Degree Spanning Tree}]
[enum] [uri http://en.wikipedia.org/wiki/Approximation_algorithm {Approximation algorithm}]
[list_end]







[vset CATEGORY {struct :: graph}]

[include ../doctools2base/include/feedback.inc]















[manpage_end]

Changes to modules/struct/matrix.man.

1
2

3
4
5
6
7
8
9
[comment {-*- tcl -*-}]
[manpage_begin struct::matrix n 2.0.1]

[copyright {2002 Andreas Kupries <[email protected]>}]
[moddesc   {Tcl Data Structures}]
[titledesc {Create and manipulate matrix objects}]
[category  {Data structures}]
[require Tcl 8.2]
[require struct::matrix [opt 2.0.1]]
[description]


>







1
2
3
4
5
6
7
8
9
10
[comment {-*- tcl -*-}]
[manpage_begin struct::matrix n 2.0.1]
[keywords matrix]
[copyright {2002 Andreas Kupries <[email protected]>}]
[moddesc   {Tcl Data Structures}]
[titledesc {Create and manipulate matrix objects}]
[category  {Data structures}]
[require Tcl 8.2]
[require struct::matrix [opt 2.0.1]]
[description]
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
The matrices here are created empty, i.e. they have neither rows nor
columns. The user then has to add rows and columns as needed by his
application. A specialty of this structure is the ability to export an
array-view onto its contents. Such can be used by tkTable, for
example, to link the matrix into the display.

[para]


The main command of the package is:

[list_begin definitions]

[call [cmd ::struct::matrix] [opt [arg matrixName]] [opt "[const =]|[const :=]|[const as]|[const deserialize] [arg source]"]]








<







28
29
30
31
32
33
34

35
36
37
38
39
40
41
The matrices here are created empty, i.e. they have neither rows nor
columns. The user then has to add rows and columns as needed by his
application. A specialty of this structure is the ability to export an
array-view onto its contents. Such can be used by tkTable, for
example, to link the matrix into the display.

[para]


The main command of the package is:

[list_begin definitions]

[call [cmd ::struct::matrix] [opt [arg matrixName]] [opt "[const =]|[const :=]|[const as]|[const deserialize] [arg source]"]]

72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
is equivalent to
[para]
[example {
    ::struct::matrix mymatrix
    mymatrix = b
}]
[para]
and 
[para]
[example {
    ::struct::matrix mymatrix deserialize $b
}]
[para]
is equivalent to
[para]
[example {
    ::struct::matrix mymatrix
    mymatrix deserialize $b
}]


[list_end]

[para]

The following commands are possible for matrix objects:








|











<







72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90

91
92
93
94
95
96
97
is equivalent to
[para]
[example {
    ::struct::matrix mymatrix
    mymatrix = b
}]
[para]
and
[para]
[example {
    ::struct::matrix mymatrix deserialize $b
}]
[para]
is equivalent to
[para]
[example {
    ::struct::matrix mymatrix
    mymatrix deserialize $b
}]


[list_end]

[para]

The following commands are possible for matrix objects:

109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139

This operation is in effect equivalent to
[para]
[example_begin]
    [arg matrixName] [method deserialize] [lb][arg sourcematrix] [method serialize][rb]
[example_end]


[call [arg matrixName] [method -->] [arg destmatrix]]

This is the reverse assignment operator for matrix objects. It copies
the matrix contained in the matrix object [arg matrixName] over the matrix
data in the object [arg destmatrix].

The old contents of [arg destmatrix] are deleted by this operation.

[para]

This operation is in effect equivalent to
[para]
[example_begin]
    [arg destmatrix] [method deserialize] [lb][arg matrixName] [method serialize][rb]
[example_end]


[call [arg matrixName] [method {add column}] [opt [arg values]]]

Extends the matrix by one column and then acts like [method {set column}]
(see below) on this new column if there were [arg values]
supplied. Without [arg values] the new cells will be set to the empty
string. The new column is appended immediately behind the last







<















<







108
109
110
111
112
113
114

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129

130
131
132
133
134
135
136

This operation is in effect equivalent to
[para]
[example_begin]
    [arg matrixName] [method deserialize] [lb][arg sourcematrix] [method serialize][rb]
[example_end]


[call [arg matrixName] [method -->] [arg destmatrix]]

This is the reverse assignment operator for matrix objects. It copies
the matrix contained in the matrix object [arg matrixName] over the matrix
data in the object [arg destmatrix].

The old contents of [arg destmatrix] are deleted by this operation.

[para]

This operation is in effect equivalent to
[para]
[example_begin]
    [arg destmatrix] [method deserialize] [lb][arg matrixName] [method serialize][rb]
[example_end]


[call [arg matrixName] [method {add column}] [opt [arg values]]]

Extends the matrix by one column and then acts like [method {set column}]
(see below) on this new column if there were [arg values]
supplied. Without [arg values] the new cells will be set to the empty
string. The new column is appended immediately behind the last
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
computation.

[call [arg matrixName] [method {delete column}] [arg column]]

Deletes the specified column from the matrix and shifts all columns
with higher indices one index down.


[call [arg matrixName] [method {delete columns}] [arg n]]

Deletes [arg n] columns from the right of the matrix. The value of
[arg n] has to satisfy the constraint

"0 < [arg n] < [lb][cmd matrixName] [method columns][rb]"


[call [arg matrixName] [method {delete row}] [arg row]]

Deletes the specified row from the matrix and shifts all row with
higher indices one index down.


[call [arg matrixName] [method {delete rows}] [arg n]]

Deletes [arg n] rows from the bottom of the matrix. The value of
[arg n] has to satisfy the constraint

"0 < [arg n] < [lb][cmd matrixName] [method rows][rb]"


[call [arg matrixName] [method deserialize] [arg serialization]]

This is the complement to [method serialize]. It replaces matrix data
in [arg matrixName] with the matrix described by the [arg serialization]
value. The old contents of [arg matrixName] are deleted by this
operation.


[call [arg matrixName] [method destroy]]

Destroys the matrix, including its storage space and associated
command.

[call [arg matrixName] [method {format 2string}] [opt [arg report]]]







<







<




<








<






<







180
181
182
183
184
185
186

187
188
189
190
191
192
193

194
195
196
197

198
199
200
201
202
203
204
205

206
207
208
209
210
211

212
213
214
215
216
217
218
computation.

[call [arg matrixName] [method {delete column}] [arg column]]

Deletes the specified column from the matrix and shifts all columns
with higher indices one index down.


[call [arg matrixName] [method {delete columns}] [arg n]]

Deletes [arg n] columns from the right of the matrix. The value of
[arg n] has to satisfy the constraint

"0 < [arg n] < [lb][cmd matrixName] [method columns][rb]"


[call [arg matrixName] [method {delete row}] [arg row]]

Deletes the specified row from the matrix and shifts all row with
higher indices one index down.


[call [arg matrixName] [method {delete rows}] [arg n]]

Deletes [arg n] rows from the bottom of the matrix. The value of
[arg n] has to satisfy the constraint

"0 < [arg n] < [lb][cmd matrixName] [method rows][rb]"


[call [arg matrixName] [method deserialize] [arg serialization]]

This is the complement to [method serialize]. It replaces matrix data
in [arg matrixName] with the matrix described by the [arg serialization]
value. The old contents of [arg matrixName] are deleted by this
operation.


[call [arg matrixName] [method destroy]]

Destroys the matrix, including its storage space and associated
command.

[call [arg matrixName] [method {format 2string}] [opt [arg report]]]
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
cell [arg (column,row)] is stored in the array using the key

[arg column,row]. If the option [option -transpose] is specified the
key [arg row,column] will be used instead. It is possible to link the
matrix to more than one array. Note that the link is bidirectional,
i.e. changes to the array are mirrored in the matrix too.


[call [arg matrixName] [method links]]

Returns a list containing the names of all array variables the matrix
was linked to through a call to method [method link].


[call [arg matrixName] [method rowheight] [arg row]]

Returns the height of the specified row in lines. This is the highest
number of lines spanned by a cell over all cells in the row.

[call [arg matrixName] [method rows]]







<




<







300
301
302
303
304
305
306

307
308
309
310

311
312
313
314
315
316
317
cell [arg (column,row)] is stored in the array using the key

[arg column,row]. If the option [option -transpose] is specified the
key [arg row,column] will be used instead. It is possible to link the
matrix to more than one array. Note that the link is bidirectional,
i.e. changes to the array are mirrored in the matrix too.


[call [arg matrixName] [method links]]

Returns a list containing the names of all array variables the matrix
was linked to through a call to method [method link].


[call [arg matrixName] [method rowheight] [arg row]]

Returns the height of the specified row in lines. This is the highest
number of lines spanned by a cell over all cells in the row.

[call [arg matrixName] [method rows]]
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
Like [method {search all}], but the search is restricted to the
specified row.

[call [arg matrixName] [method search] [opt -nocase] [opt -exact|-glob|-regexp] [method rect] [arg {column_tl row_tl column_br row_br pattern}]]

Like [method {search all}], but the search is restricted to the
specified rectangular area of the matrix.


[call [arg matrixName] [method serialize] [opt [arg {column_tl row_tl column_br row_br}]]]

This method serializes the sub-matrix spanned up by the rectangle
specification. In other words it returns a tcl [emph value] completely
describing that matrix. If no rectangle is specified the whole matrix
will be serialized.







<







349
350
351
352
353
354
355

356
357
358
359
360
361
362
Like [method {search all}], but the search is restricted to the
specified row.

[call [arg matrixName] [method search] [opt -nocase] [opt -exact|-glob|-regexp] [method rect] [arg {column_tl row_tl column_br row_br pattern}]]

Like [method {search all}], but the search is restricted to the
specified rectangular area of the matrix.


[call [arg matrixName] [method serialize] [opt [arg {column_tl row_tl column_br row_br}]]]

This method serializes the sub-matrix spanned up by the rectangle
specification. In other words it returns a tcl [emph value] completely
describing that matrix. If no rectangle is specified the whole matrix
will be serialized.
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
    # | f       |
    #
    # is
    #
    # 3 4 {{a b d g} {c e} {f}}
}]
[para]


[call [arg matrixName] [method {set cell}] [arg {column row value}]]

Sets the value in the cell identified by row and column index to the
data in the third argument.

[call [arg matrixName] [method {set column}] [arg {column values}]]







<







401
402
403
404
405
406
407

408
409
410
411
412
413
414
    # | f       |
    #
    # is
    #
    # 3 4 {{a b d g} {c e} {f}}
}]
[para]


[call [arg matrixName] [method {set cell}] [arg {column row value}]]

Sets the value in the cell identified by row and column index to the
data in the third argument.

[call [arg matrixName] [method {set column}] [arg {column values}]]
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494

Swaps the contents of the two specified columns.

[call [arg matrixName] [method {swap rows}] [arg {row_a row_b}]]

Swaps the contents of the two specified rows.


[call [arg matrixName] [method transpose]]

Transposes the contents of the matrix, i.e. swaps rows for columns and
vice versa.


[call [arg matrixName] [method unlink] [arg arrayvar]]

Removes the link between the matrix and the specified arrayvariable,
if there is one.

[list_end]







<




<







463
464
465
466
467
468
469

470
471
472
473

474
475
476
477
478
479
480

Swaps the contents of the two specified columns.

[call [arg matrixName] [method {swap rows}] [arg {row_a row_b}]]

Swaps the contents of the two specified rows.


[call [arg matrixName] [method transpose]]

Transposes the contents of the matrix, i.e. swaps rows for columns and
vice versa.


[call [arg matrixName] [method unlink] [arg arrayvar]]

Removes the link between the matrix and the specified arrayvariable,
if there is one.

[list_end]
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
    |   |true numeric       |       |       |        |
    +---+-------------------+-------+-------+--------+
    %
    % # alternate way of doing the above
    % r printmatrix m
}]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {struct :: matrix}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords matrix]
[manpage_end]







<
<
<
<
<
|
<
|
<
<
<
<
<

526
527
528
529
530
531
532





533

534





535
    |   |true numeric       |       |       |        |
    +---+-------------------+-------+-------+--------+
    %
    % # alternate way of doing the above
    % r printmatrix m
}]






[vset CATEGORY {struct :: matrix}]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/struct/matrix1.man.

1
2

3
4
5
6
7
8
9
[comment {-*- tcl -*-}]
[manpage_begin {struct::matrix_v1} n 1.2.1]

[copyright {2002 Andreas Kupries <[email protected]>}]
[moddesc   {Tcl Data Structures}]
[titledesc {Create and manipulate matrix objects}]
[category  {Data structures}]
[require Tcl 8.2]
[require struct::matrix [opt 1.2.1]]
[description]


>







1
2
3
4
5
6
7
8
9
10
[comment {-*- tcl -*-}]
[manpage_begin {struct::matrix_v1} n 1.2.1]
[keywords matrix]
[copyright {2002 Andreas Kupries <[email protected]>}]
[moddesc   {Tcl Data Structures}]
[titledesc {Create and manipulate matrix objects}]
[category  {Data structures}]
[require Tcl 8.2]
[require struct::matrix [opt 1.2.1]]
[description]
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
cell [arg (column,row)] is stored in the array using the key

[arg column,row]. If the option [option -transpose] is specified the
key [arg row,column] will be used instead. It is possible to link the
matrix to more than one array. Note that the link is bidirectional,
i.e. changes to the array are mirrored in the matrix too.


[call [arg matrixName] [method links]]

Returns a list containing the names of all array variables the matrix
was linked to through a call to method [method link].


[call [arg matrixName] [method rowheight] [arg row]]

Returns the height of the specified row in lines. This is the highest
number of lines spanned by a cell over all cells in the row.

[call [arg matrixName] [method rows]]







<




<







203
204
205
206
207
208
209

210
211
212
213

214
215
216
217
218
219
220
cell [arg (column,row)] is stored in the array using the key

[arg column,row]. If the option [option -transpose] is specified the
key [arg row,column] will be used instead. It is possible to link the
matrix to more than one array. Note that the link is bidirectional,
i.e. changes to the array are mirrored in the matrix too.


[call [arg matrixName] [method links]]

Returns a list containing the names of all array variables the matrix
was linked to through a call to method [method link].


[call [arg matrixName] [method rowheight] [arg row]]

Returns the height of the specified row in lines. This is the highest
number of lines spanned by a cell over all cells in the row.

[call [arg matrixName] [method rows]]
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
    |   |true numeric       |       |       |        |
    +---+-------------------+-------+-------+--------+
    %
    % # alternate way of doing the above
    % r printmatrix m
}]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {struct :: matrix}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords matrix]
[manpage_end]







<
<
<
<
<
|
<
|
<
<
<
<
<

372
373
374
375
376
377
378





379

380





381
    |   |true numeric       |       |       |        |
    +---+-------------------+-------+-------+--------+
    %
    % # alternate way of doing the above
    % r printmatrix m
}]






[vset CATEGORY {struct :: matrix}]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/struct/pool.man.

1
2




3
4
5
6
7
8
9
[comment {-*- tcl -*-}]
[manpage_begin struct::pool n 1.2.1]




[copyright {2002, Erik Leunissen <[email protected]>}]
[moddesc   {Tcl Data Structures}]
[titledesc {Create and manipulate pool objects (of discrete items)}]
[category  {Data structures}]
[require Tcl 8.2]
[require struct::pool [opt 1.2.1]]
[description]


>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
[comment {-*- tcl -*-}]
[manpage_begin struct::pool n 1.2.1]
[keywords {discrete items}]
[keywords finite]
[keywords pool]
[keywords struct]
[copyright {2002, Erik Leunissen <[email protected]>}]
[moddesc   {Tcl Data Structures}]
[titledesc {Create and manipulate pool objects (of discrete items)}]
[category  {Data structures}]
[require Tcl 8.2]
[require struct::pool [opt 1.2.1]]
[description]
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56

Creates a new pool object. If no [arg poolName] is supplied, then the
new pool will be named pool[var X], where X is a positive integer.
The optional second argument [arg maxsize] has to be a positive
integer indicating the maximum size of the pool; this is the maximum
number of items the pool may hold. The default for this value is
[const 10].
     
[para]

The pool object has an associated global Tcl command whose name is
[arg poolName]. This command may be used to invoke various
configuration operations on the report. It has the following general
form:

[list_begin definitions]
[call [cmd poolName] [arg option] [opt [arg "arg arg ..."]]]

[arg Option] and the [arg arg]s determine the exact behavior of the
command. See section [sectref {POOL OBJECT COMMAND}] for a detailed
list of options and their behaviour.

[list_end]
[list_end]

[para]
      
[section {POOLS AND ALLOCATION}]
 
The purpose of the pool command and the pool object command that it
generates, is to manage pools of discrete items.
      
Examples of a pool of discrete items are:

[list_begin itemized]

[item]
the seats in a cinema, theatre, train etc.. for which visitors/travelers can  make a reservation;
[item]







|


















|

|


|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60

Creates a new pool object. If no [arg poolName] is supplied, then the
new pool will be named pool[var X], where X is a positive integer.
The optional second argument [arg maxsize] has to be a positive
integer indicating the maximum size of the pool; this is the maximum
number of items the pool may hold. The default for this value is
[const 10].

[para]

The pool object has an associated global Tcl command whose name is
[arg poolName]. This command may be used to invoke various
configuration operations on the report. It has the following general
form:

[list_begin definitions]
[call [cmd poolName] [arg option] [opt [arg "arg arg ..."]]]

[arg Option] and the [arg arg]s determine the exact behavior of the
command. See section [sectref {POOL OBJECT COMMAND}] for a detailed
list of options and their behaviour.

[list_end]
[list_end]

[para]

[section {POOLS AND ALLOCATION}]

The purpose of the pool command and the pool object command that it
generates, is to manage pools of discrete items.

Examples of a pool of discrete items are:

[list_begin itemized]

[item]
the seats in a cinema, theatre, train etc.. for which visitors/travelers can  make a reservation;
[item]
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
supposed to be allocated on a more or less regular basis. An item can
be allocated only once at a time. An item that is allocated, must be
released before it can be re-allocated.  While several items in a pool
are being allocated and released continuously, the total number of
items in the pool remains constant.

[para]
      
Keeping track of which items are allocated, and by whom, is the
purpose of the pool command and its subordinates.

[para]      

[emph {Pool parlance}]: If we say that an item is

[term allocated], it means that the item is [term busy],

[term owned] or [term occupied]; it is not available anymore. If
an item is [term free], it is [term available]. Deallocating an
item is equivalent to setting free or releasing an item. The person or
entity to which the item has been allotted is said to own the item.
      
      
[section ITEMS]
      
[emph {Discrete items}]
[para]

The [cmd pool] command is designed for

[emph {discrete items only}]. Note that there are pools where
allocation occurs on a non-discrete basis, for example computer







|



|









|
<

|







78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99

100
101
102
103
104
105
106
107
108
supposed to be allocated on a more or less regular basis. An item can
be allocated only once at a time. An item that is allocated, must be
released before it can be re-allocated.  While several items in a pool
are being allocated and released continuously, the total number of
items in the pool remains constant.

[para]

Keeping track of which items are allocated, and by whom, is the
purpose of the pool command and its subordinates.

[para]

[emph {Pool parlance}]: If we say that an item is

[term allocated], it means that the item is [term busy],

[term owned] or [term occupied]; it is not available anymore. If
an item is [term free], it is [term available]. Deallocating an
item is equivalent to setting free or releasing an item. The person or
entity to which the item has been allotted is said to own the item.


[section ITEMS]

[emph {Discrete items}]
[para]

The [cmd pool] command is designed for

[emph {discrete items only}]. Note that there are pools where
allocation occurs on a non-discrete basis, for example computer
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250

From the point of view of the manager of a pool, items are
equivalent. The manager of a pool is indifferent about which
entity/person occupies a given item. However, clients may have
preferences for a particular item, based on some item property they
know.

[para] 
[emph Preferences]
[para]

A future owner may have a preference for a particular item. Preference
based allocation is supported (see the [option -prefer] option to the
request subcommand). A preference for a particular item is most likely
to result from variability among features associated with the
items. Note that the pool commands themselves are not designed to
manage such item properties. If item properties play a role in an
application, they should be managed separately.
 
 
[section {POOL OBJECT COMMAND}]
 
The following subcommands and corresponding arguments are available to
any pool object command.

[list_begin definitions]
 
[call [arg poolName] [method add] [arg itemName1] [opt [arg {itemName2 itemName3 ...}]]]

This command adds the items on the command line to the pool. If
duplicate item names occur on the command line, an error is raised. If
one or more of the items already exist in the pool, this also is
considered an error.

              
[call [arg poolName] [method clear] [opt [option -force]]]

Removes all items from the pool. If there are any allocated items at
the time when the command is invoked, an error is raised. This
behaviour may be modified through the [option -force] argument. If it
is supplied on the command line, the pool will be cleared regardless
the allocation state of its items.
     
[call [arg poolName] [method destroy] [opt [option -force]]]

Destroys the pool data structure, all associated variables and the
associated pool object command. By default, the command checks whether
any items are still allocated and raises an error if such is the
case. This behaviour may be modified through the argument

[option -force]. If it is supplied on the command line, the pool data
structure will be destroyed regardless allocation state of its items.
 

[call [arg poolName] [method info] [arg type] [opt [arg arg]]]

Returns various information about the pool for further programmatic
use. The [arg type] argument indicates the type of information
requested. Only the type [const allocID] uses an additional argument.

[list_begin definitions]
     
[def "[const allocID] [arg itemName]"]

returns the allocID of the item whose name is [arg itemName]. Free
items have an allocation id of [const -1].

[def [const allitems]]

returns a list of all items in the pool.
 
[def [const allocstate]]

Returns a list of key-value pairs, where the keys are the items and
the values are the corresponding allocation id's. Free items have an
allocation id of [const -1].
      
[def [const cursize]]

returns the current pool size, i.e. the number of items in the pool.
      
[def [const freeitems]]

returns a list of items that currently are not allocated.
      
[def [const maxsize]]

returns the maximum size of the pool.

[list_end]
[para]          

[call [arg poolName] [method maxsize] [opt [arg maxsize]]]

Sets or queries the maximum size of the pool, depending on whether the
[arg maxsize] argument is supplied or not. If [arg maxsize] is
supplied, the maximum size of the pool will be set to that value. If
no argument is supplied, the current maximum size of the pool is
returned. In this variant, the command is an alias for:

[para]
[cmd {poolName info maxsize}].
[para]

The [arg maxsize] argument has to be a positive integer.
     
     
[call [arg poolName] [method release] [arg itemName]]

Releases the item whose name is [arg itemName] that was allocated
previously. An error is raised if the item was not allocated at the
time when the command was issued.

     
[call [arg poolName] [method remove] [arg itemName] [opt [option -force]]]

Removes the item whose name is [arg itemName] from the pool. If the
item was allocated at the time when the command was invoked, an error
is raised. This behaviour may be modified through the optional
argument [option -force]. If it is supplied on the command line, the
item will be removed regardless its allocation state.
     

[call [arg poolName] [method request] itemVar [opt options]]

Handles a request for an item, taking into account a possible
preference for a particular item. There are two possible outcomes
depending on the availability of items:








|










|
<

|




|







<







|









<








|








|





|



|



|





|














|
<






<







<







125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143

144
145
146
147
148
149
150
151
152
153
154
155
156
157

158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174

175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227

228
229
230
231
232
233

234
235
236
237
238
239
240

241
242
243
244
245
246
247

From the point of view of the manager of a pool, items are
equivalent. The manager of a pool is indifferent about which
entity/person occupies a given item. However, clients may have
preferences for a particular item, based on some item property they
know.

[para]
[emph Preferences]
[para]

A future owner may have a preference for a particular item. Preference
based allocation is supported (see the [option -prefer] option to the
request subcommand). A preference for a particular item is most likely
to result from variability among features associated with the
items. Note that the pool commands themselves are not designed to
manage such item properties. If item properties play a role in an
application, they should be managed separately.


[section {POOL OBJECT COMMAND}]

The following subcommands and corresponding arguments are available to
any pool object command.

[list_begin definitions]

[call [arg poolName] [method add] [arg itemName1] [opt [arg {itemName2 itemName3 ...}]]]

This command adds the items on the command line to the pool. If
duplicate item names occur on the command line, an error is raised. If
one or more of the items already exist in the pool, this also is
considered an error.


[call [arg poolName] [method clear] [opt [option -force]]]

Removes all items from the pool. If there are any allocated items at
the time when the command is invoked, an error is raised. This
behaviour may be modified through the [option -force] argument. If it
is supplied on the command line, the pool will be cleared regardless
the allocation state of its items.

[call [arg poolName] [method destroy] [opt [option -force]]]

Destroys the pool data structure, all associated variables and the
associated pool object command. By default, the command checks whether
any items are still allocated and raises an error if such is the
case. This behaviour may be modified through the argument

[option -force]. If it is supplied on the command line, the pool data
structure will be destroyed regardless allocation state of its items.


[call [arg poolName] [method info] [arg type] [opt [arg arg]]]

Returns various information about the pool for further programmatic
use. The [arg type] argument indicates the type of information
requested. Only the type [const allocID] uses an additional argument.

[list_begin definitions]

[def "[const allocID] [arg itemName]"]

returns the allocID of the item whose name is [arg itemName]. Free
items have an allocation id of [const -1].

[def [const allitems]]

returns a list of all items in the pool.

[def [const allocstate]]

Returns a list of key-value pairs, where the keys are the items and
the values are the corresponding allocation id's. Free items have an
allocation id of [const -1].

[def [const cursize]]

returns the current pool size, i.e. the number of items in the pool.

[def [const freeitems]]

returns a list of items that currently are not allocated.

[def [const maxsize]]

returns the maximum size of the pool.

[list_end]
[para]

[call [arg poolName] [method maxsize] [opt [arg maxsize]]]

Sets or queries the maximum size of the pool, depending on whether the
[arg maxsize] argument is supplied or not. If [arg maxsize] is
supplied, the maximum size of the pool will be set to that value. If
no argument is supplied, the current maximum size of the pool is
returned. In this variant, the command is an alias for:

[para]
[cmd {poolName info maxsize}].
[para]

The [arg maxsize] argument has to be a positive integer.


[call [arg poolName] [method release] [arg itemName]]

Releases the item whose name is [arg itemName] that was allocated
previously. An error is raised if the item was not allocated at the
time when the command was issued.


[call [arg poolName] [method remove] [arg itemName] [opt [option -force]]]

Removes the item whose name is [arg itemName] from the pool. If the
item was allocated at the time when the command was invoked, an error
is raised. This behaviour may be modified through the optional
argument [option -force]. If it is supplied on the command line, the
item will be removed regardless its allocation state.


[call [arg poolName] [method request] itemVar [opt options]]

Handles a request for an item, taking into account a possible
preference for a particular item. There are two possible outcomes
depending on the availability of items:

272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
item is supplied through the option [option -prefer] (see below), then
all requests are honoured as long as items are available.

[para]
The following options are supported:

[list_begin definitions]
 
[def "[option -allocID] [arg allocID]"]

If the request is honoured, an item will be allocated to the entity
identified by allocID. If the allocation state of an item is queried,
it is this allocation ID that will be returned. If the option

[option -allocID] is not supplied, the item will be given to and owned
by [const dummyID]. Allocation id's may be anything except the value
-1, which is reserved for free items.

     
[def "[option -prefer] [arg preferredItem]"]

This option modifies the allocation strategy as follows: If the item
whose name is [arg preferredItem] is not allocated at the time when
the command is invoked, the request is honoured (return value is
1). If the item was allocated at the time when the command was
invoked, the request is denied (return value is 0).

[list_end]               
[list_end]               
 
[section EXAMPLES]
 
Two examples are provided. The first one mimics a step by step
interactive tclsh session, where each step is explained. The second
example shows the usage in a server application that talks to a
back-end application.

[para]      
[emph {Example 1}]
[para]

This example presents an interactive tclsh session which considers the
case of a Car rental's collection of cars. Ten steps explain its usage
in chronological order, from the creation of the pool, via the most
important stages in the usage of a pool, to the final destruction.

[para]
[emph {Note aside:}]
[para]

In this example, brand names are used to label the various
items. However, a brand name could be regarded as a property of an
item. Because the pool command is not designed to manage properties of
items, they need to be managed separately. In the latter case the
items should be labeled with more neutral names such as: car1, car2,
car3 , etc ... and a separate database or array should hold the brand
names associated with the car labels.

[para]      
[example {      
     1. Load the package into an interpreter
     % package require pool
     0.1
      
     2. Create a pool object called `CarPool' with a maximum size of 55 items (cars):
     % pool CarPool 55
     CarPool
      
     4. Add items to the pool:
     % CarPool add Toyota Trabant Chrysler1 Chrysler2 Volkswagen
                   
     5. Somebody crashed the Toyota. Remove it from the pool as follows:
     % CarPool remove Toyota
      
     6. Acquired a new car for the pool. Add it as follows:
     % CarPool add Nissan
      
     7. Check whether the pool was adjusted correctly:
     % CarPool info allitems
     Trabant Chrysler1 Chrysler2 Volkswagen Nissan
}]

[para]

Suspend the interactive session temporarily, and show the programmatic
use of the request subcommand:

[para]      
[example {     
     # Mrs. Swift needs a car. She doesn't have a preference for a
     # particular car. We'll issue a request on her behalf as follows:
     if { [CarPool request car -allocID "Mrs. Swift"] }  {
         # request was honoured, process the variable `car'
         puts "$car has been allocated to [CarPool info allocID $car]."
     } else {
         # request was denied
          puts "No car available."
     }
}]
[para]

Note how the [cmd if] command uses the value returned by the
[method request] subcommand.

[para]
[example {      
     # Suppose Mr. Wiggly has a preference for the Trabant:
     if { [CarPool request car -allocID "Mr. Wiggly" -prefer Trabant] }  {
         # request was honoured, process the variable `car'
         puts "$car has been allocated to [CarPool info allocID $car]."
     } else {
         # request was denied
          puts "The Trabant was not available."
     }
}]
[para]

Resume the interactive session:

[para]
[example {
     8. When the car is returned then you can render it available by:
     % CarPool release Trabant
      
     9. When done, you delete the pool.
     % CarPool destroy
     Couldn't destroy `CarPool' because some items are still allocated.
      
     Oops, forgot that Mrs. Swift still occupies a car.
      
     10. We force the destruction of the pool as follows: 
     % CarPool destroy -force
}]

[para]
[emph {Example 2}]
[para]

This example describes the case from which the author's need for pool
management originated. It is an example of a server application that
receives requests from client applications. The client requests are
dispatched onto a back-end application before being returned to the
client application. In many cases there are a few equivalent instances
of back-end applications to which a client request may be passed
along. The file descriptors that identify the channels to these
back-end instances make up a pool of connections. A particular
connection may be allocated to just one client request at a time.

[para]
[example { 
     # Create the pool of connections (pipes)
     set maxpipes 10
     pool Pipes $maxpipes
     for {set i 0} {$i < $maxpipes} {incr i} {
         set fd [open "|backendApplication" w+]
         Pipes add $fd
     }
      
     # A client request comes in. The request is identified as `clientX'.
     # Dispatch it onto an instance of a back-end application
     if { [Pipes request fd -allocID clientX] } {
         # a connection was allocated
         # communicate to the back-end application via the variable `fd'
         puts $fd "someInstruction"
         # ...... etc.
     } else {
         # all connections are currently occupied
         # store the client request in a queue for later processing,
         # or return a 'Server busy' message to the client.
     }
}]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {struct :: pool}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords struct pool finite {discrete items}]
[manpage_end]







|










<








|
|
|

|





|




















|
|



|



|


|


|


|










|
|
















|

















|



|

|
|


















|







|














<
<
<
<
<
|
<
|
<
<
<
<
<

269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286

287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439





440

441





442
item is supplied through the option [option -prefer] (see below), then
all requests are honoured as long as items are available.

[para]
The following options are supported:

[list_begin definitions]

[def "[option -allocID] [arg allocID]"]

If the request is honoured, an item will be allocated to the entity
identified by allocID. If the allocation state of an item is queried,
it is this allocation ID that will be returned. If the option

[option -allocID] is not supplied, the item will be given to and owned
by [const dummyID]. Allocation id's may be anything except the value
-1, which is reserved for free items.


[def "[option -prefer] [arg preferredItem]"]

This option modifies the allocation strategy as follows: If the item
whose name is [arg preferredItem] is not allocated at the time when
the command is invoked, the request is honoured (return value is
1). If the item was allocated at the time when the command was
invoked, the request is denied (return value is 0).

[list_end]
[list_end]

[section EXAMPLES]

Two examples are provided. The first one mimics a step by step
interactive tclsh session, where each step is explained. The second
example shows the usage in a server application that talks to a
back-end application.

[para]
[emph {Example 1}]
[para]

This example presents an interactive tclsh session which considers the
case of a Car rental's collection of cars. Ten steps explain its usage
in chronological order, from the creation of the pool, via the most
important stages in the usage of a pool, to the final destruction.

[para]
[emph {Note aside:}]
[para]

In this example, brand names are used to label the various
items. However, a brand name could be regarded as a property of an
item. Because the pool command is not designed to manage properties of
items, they need to be managed separately. In the latter case the
items should be labeled with more neutral names such as: car1, car2,
car3 , etc ... and a separate database or array should hold the brand
names associated with the car labels.

[para]
[example {
     1. Load the package into an interpreter
     % package require pool
     0.1

     2. Create a pool object called `CarPool' with a maximum size of 55 items (cars):
     % pool CarPool 55
     CarPool

     4. Add items to the pool:
     % CarPool add Toyota Trabant Chrysler1 Chrysler2 Volkswagen

     5. Somebody crashed the Toyota. Remove it from the pool as follows:
     % CarPool remove Toyota

     6. Acquired a new car for the pool. Add it as follows:
     % CarPool add Nissan

     7. Check whether the pool was adjusted correctly:
     % CarPool info allitems
     Trabant Chrysler1 Chrysler2 Volkswagen Nissan
}]

[para]

Suspend the interactive session temporarily, and show the programmatic
use of the request subcommand:

[para]
[example {
     # Mrs. Swift needs a car. She doesn't have a preference for a
     # particular car. We'll issue a request on her behalf as follows:
     if { [CarPool request car -allocID "Mrs. Swift"] }  {
         # request was honoured, process the variable `car'
         puts "$car has been allocated to [CarPool info allocID $car]."
     } else {
         # request was denied
          puts "No car available."
     }
}]
[para]

Note how the [cmd if] command uses the value returned by the
[method request] subcommand.

[para]
[example {
     # Suppose Mr. Wiggly has a preference for the Trabant:
     if { [CarPool request car -allocID "Mr. Wiggly" -prefer Trabant] }  {
         # request was honoured, process the variable `car'
         puts "$car has been allocated to [CarPool info allocID $car]."
     } else {
         # request was denied
          puts "The Trabant was not available."
     }
}]
[para]

Resume the interactive session:

[para]
[example {
     8. When the car is returned then you can render it available by:
     % CarPool release Trabant

     9. When done, you delete the pool.
     % CarPool destroy
     Couldn't destroy `CarPool' because some items are still allocated.

     Oops, forgot that Mrs. Swift still occupies a car.

     10. We force the destruction of the pool as follows:
     % CarPool destroy -force
}]

[para]
[emph {Example 2}]
[para]

This example describes the case from which the author's need for pool
management originated. It is an example of a server application that
receives requests from client applications. The client requests are
dispatched onto a back-end application before being returned to the
client application. In many cases there are a few equivalent instances
of back-end applications to which a client request may be passed
along. The file descriptors that identify the channels to these
back-end instances make up a pool of connections. A particular
connection may be allocated to just one client request at a time.

[para]
[example {
     # Create the pool of connections (pipes)
     set maxpipes 10
     pool Pipes $maxpipes
     for {set i 0} {$i < $maxpipes} {incr i} {
         set fd [open "|backendApplication" w+]
         Pipes add $fd
     }

     # A client request comes in. The request is identified as `clientX'.
     # Dispatch it onto an instance of a back-end application
     if { [Pipes request fd -allocID clientX] } {
         # a connection was allocated
         # communicate to the back-end application via the variable `fd'
         puts $fd "someInstruction"
         # ...... etc.
     } else {
         # all connections are currently occupied
         # store the client request in a queue for later processing,
         # or return a 'Server busy' message to the client.
     }
}]






[vset CATEGORY {struct :: pool}]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/struct/prioqueue.man.

1



2
3
4
5
6
7
8
[manpage_begin struct::prioqueue n 1.4]



[moddesc   {Tcl Data Structures}]
[copyright {2003 Michael Schlenker <[email protected]>}]
[titledesc {Create and manipulate prioqueue objects}]
[category  {Data structures}]
[require Tcl 8.2]
[require struct::prioqueue [opt 1.4]]
[description]

>
>
>







1
2
3
4
5
6
7
8
9
10
11
[manpage_begin struct::prioqueue n 1.4]
[keywords {ordered list}]
[keywords prioqueue]
[keywords {priority queue}]
[moddesc   {Tcl Data Structures}]
[copyright {2003 Michael Schlenker <[email protected]>}]
[titledesc {Create and manipulate prioqueue objects}]
[category  {Data structures}]
[require Tcl 8.2]
[require struct::prioqueue [opt 1.4]]
[description]
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
[cmd lsort] [arg -decreasing]).

[para]

Prioqueue names are unrestricted, but may be recognized as options if
no priority type is given.


[list_begin definitions]

[call [cmd ::struct::prioqueue] [opt [option {-ascii|-dictionary|-integer|-real}]] [opt [arg prioqueueName]] ]

The [cmd ::struct::prioqueue] command creates a new prioqueue object
with an associated global Tcl command whose name is

[emph prioqueueName]. This command may be used to invoke various
operations on the prioqueue.  It has the following general form:


[call [arg prioqueueName] [cmd option] [opt [arg {arg arg ...}]]]

[cmd option] and the [arg arg]s determine the exact behavior of the
command.  The following commands are possible for prioqueue objects:


[call [arg prioqueueName] [cmd clear]]

Remove all items from the prioqueue.


[call [arg prioqueueName] [cmd remove] [arg item]]

Remove the selected item from this priority queue.


[call [arg prioqueueName] [cmd destroy]]

Destroy the prioqueue, including its storage space and associated
command.


[call [arg prioqueueName] [cmd get] [opt [arg count]]]

Return the front [arg count] items of the prioqueue (but not their
priorities) and remove them from the prioqueue. 

If [arg count] is not specified, it defaults to 1.  If [arg count] is
1, the result is a simple string; otherwise, it is a list.  If
specified, [arg count] must be greater than or equal to 1.  If there
are no or too few items in the prioqueue, this command will throw an
error.


[call [arg prioqueueName] [cmd peek] [opt [arg count]]]

Return the front [arg count] items of the prioqueue (but not their
priorities), without removing them from the prioqueue.

If [arg count] is not specified, it defaults to 1.  If [arg count] is







<










<




<





<



<






<



|






<







27
28
29
30
31
32
33

34
35
36
37
38
39
40
41
42
43

44
45
46
47

48
49
50
51
52

53
54
55

56
57
58
59
60
61

62
63
64
65
66
67
68
69
70
71

72
73
74
75
76
77
78
[cmd lsort] [arg -decreasing]).

[para]

Prioqueue names are unrestricted, but may be recognized as options if
no priority type is given.


[list_begin definitions]

[call [cmd ::struct::prioqueue] [opt [option {-ascii|-dictionary|-integer|-real}]] [opt [arg prioqueueName]] ]

The [cmd ::struct::prioqueue] command creates a new prioqueue object
with an associated global Tcl command whose name is

[emph prioqueueName]. This command may be used to invoke various
operations on the prioqueue.  It has the following general form:


[call [arg prioqueueName] [cmd option] [opt [arg {arg arg ...}]]]

[cmd option] and the [arg arg]s determine the exact behavior of the
command.  The following commands are possible for prioqueue objects:


[call [arg prioqueueName] [cmd clear]]

Remove all items from the prioqueue.


[call [arg prioqueueName] [cmd remove] [arg item]]

Remove the selected item from this priority queue.


[call [arg prioqueueName] [cmd destroy]]

Destroy the prioqueue, including its storage space and associated
command.


[call [arg prioqueueName] [cmd get] [opt [arg count]]]

Return the front [arg count] items of the prioqueue (but not their
priorities) and remove them from the prioqueue.

If [arg count] is not specified, it defaults to 1.  If [arg count] is
1, the result is a simple string; otherwise, it is a list.  If
specified, [arg count] must be greater than or equal to 1.  If there
are no or too few items in the prioqueue, this command will throw an
error.


[call [arg prioqueueName] [cmd peek] [opt [arg count]]]

Return the front [arg count] items of the prioqueue (but not their
priorities), without removing them from the prioqueue.

If [arg count] is not specified, it defaults to 1.  If [arg count] is
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129

Put the [arg item] or items specified into the prioqueue. [arg prio]
must be a valid priority key for this type of prioqueue, otherwise an
error is thrown and no item is added.  Items are inserted at their
priority ranking. Items with equal priority are added in the order
they were added.


[call [arg prioqueueName] [cmd size]]

Return the number of items in the prioqueue.


[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {struct :: prioqueue}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords {ordered list} prioqueue {priority queue}]
[manpage_end]







<




<


<
<
<
<
<
<
|
<
|
<
<
<
<
<

96
97
98
99
100
101
102

103
104
105
106

107
108






109

110





111

Put the [arg item] or items specified into the prioqueue. [arg prio]
must be a valid priority key for this type of prioqueue, otherwise an
error is thrown and no item is added.  Items are inserted at their
priority ranking. Items with equal priority are added in the order
they were added.


[call [arg prioqueueName] [cmd size]]

Return the number of items in the prioqueue.


[list_end]







[vset CATEGORY {struct :: prioqueue}]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/struct/queue.man.

1
2










3
4
5
6
7
8
9
[comment {-*- tcl -*-}]
[manpage_begin struct::queue n 1.4.5]










[moddesc   {Tcl Data Structures}]
[titledesc {Create and manipulate queue objects}]
[category  {Data structures}]
[require Tcl 8.4]
[require struct::queue [opt 1.4.5]]
[description]



>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[comment {-*- tcl -*-}]
[manpage_begin struct::queue n 1.4.5]
[keywords graph]
[keywords list]
[keywords matrix]
[keywords pool]
[keywords prioqueue]
[keywords record]
[keywords set]
[keywords skiplist]
[keywords stack]
[keywords tree]
[moddesc   {Tcl Data Structures}]
[titledesc {Create and manipulate queue objects}]
[category  {Data structures}]
[require Tcl 8.4]
[require struct::queue [opt 1.4.5]]
[description]

31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
[list_begin definitions]

[call [arg queueName] [cmd option] [opt [arg "arg arg ..."]]]

[arg Option] and the [arg arg]s determine the exact behavior of the
command.  The following commands are possible for queue objects:


[call [arg queueName] [cmd clear]]

Remove all items from the queue.


[call [arg queueName] [cmd destroy]]

Destroy the queue, including its storage space and associated command.


[call [arg queueName] [cmd get] [opt "[arg count]"]]

Return the front [arg count] items of the queue and remove them from
the queue.  If [arg count] is not specified, it defaults to 1.  If
[arg count] is 1, the result is a simple string; otherwise, it is a
list.  If specified, [arg count] must be greater than or equal to 1.

If there are not enough items in the queue to fulfull the request,
this command will throw an error.


[call [arg queueName] [cmd peek] [opt "[arg count]"]]

Return the front [arg count] items of the queue, without removing them
from the queue.  If [arg count] is not specified, it defaults to 1.
If [arg count] is 1, the result is a simple string; otherwise, it is a
list.  If specified, [arg count] must be greater than or equal to 1.

If there are not enough items in the queue to fulfull the request,
this command will throw an error.


[call [arg queueName] [cmd put] [arg item] [opt "[arg "item ..."]"]]

Put the [arg item] or items specified into the queue.  If more than
one [arg item] is given, they will be added in the order they are
listed.


[call [arg queueName] [cmd unget] [arg item]]

Put the [arg item] into the queue, at the front, i.e. before any other
items already in the queue. This makes this operation the complement
to the method [method get].


[call [arg queueName] [cmd size]]

Return the number of items in the queue.


[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {struct :: queue}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords stack matrix tree graph set list prioqueue record skiplist]
[keywords pool]
[manpage_end]







<




<



<










<











<





<







<




<


<
<
<
<
<
|
<
|
<
<
<
<
<
<

41
42
43
44
45
46
47

48
49
50
51

52
53
54

55
56
57
58
59
60
61
62
63
64

65
66
67
68
69
70
71
72
73
74
75

76
77
78
79
80

81
82
83
84
85
86
87

88
89
90
91

92
93





94

95






96
[list_begin definitions]

[call [arg queueName] [cmd option] [opt [arg "arg arg ..."]]]

[arg Option] and the [arg arg]s determine the exact behavior of the
command.  The following commands are possible for queue objects:


[call [arg queueName] [cmd clear]]

Remove all items from the queue.


[call [arg queueName] [cmd destroy]]

Destroy the queue, including its storage space and associated command.


[call [arg queueName] [cmd get] [opt "[arg count]"]]

Return the front [arg count] items of the queue and remove them from
the queue.  If [arg count] is not specified, it defaults to 1.  If
[arg count] is 1, the result is a simple string; otherwise, it is a
list.  If specified, [arg count] must be greater than or equal to 1.

If there are not enough items in the queue to fulfull the request,
this command will throw an error.


[call [arg queueName] [cmd peek] [opt "[arg count]"]]

Return the front [arg count] items of the queue, without removing them
from the queue.  If [arg count] is not specified, it defaults to 1.
If [arg count] is 1, the result is a simple string; otherwise, it is a
list.  If specified, [arg count] must be greater than or equal to 1.

If there are not enough items in the queue to fulfull the request,
this command will throw an error.


[call [arg queueName] [cmd put] [arg item] [opt "[arg "item ..."]"]]

Put the [arg item] or items specified into the queue.  If more than
one [arg item] is given, they will be added in the order they are
listed.


[call [arg queueName] [cmd unget] [arg item]]

Put the [arg item] into the queue, at the front, i.e. before any other
items already in the queue. This makes this operation the complement
to the method [method get].


[call [arg queueName] [cmd size]]

Return the number of items in the queue.


[list_end]






[vset CATEGORY {struct :: queue}]

[include ../doctools2base/include/feedback.inc]






[manpage_end]

Changes to modules/struct/record.man.

1
2



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[comment {-*- tcl -*-}]
[manpage_begin struct::record n 1.2.1]



[copyright {2002, Brett Schwarz <[email protected]>}]
[moddesc   {Tcl Data Structures}]
[titledesc {Define and create records (similar to 'C' structures)}]
[category  {Data structures}]
[require Tcl 8.2]
[require struct::record [opt 1.2.1]]
[description]

The [cmd ::struct::record] package provides a mechanism to group variables together
as one data structure, similar to a 'C' structure. The members of a 
record can be variables or other records. However, a record can not contain circular
record, i.e. records that contain the same record as a
member.

[para]
This package was structured so that it is very similar to how Tk objects work. Each record
definition creates a record object that encompasses that definition. Subsequently, that


>
>
>









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[comment {-*- tcl -*-}]
[manpage_begin struct::record n 1.2.1]
[keywords {data structures}]
[keywords record]
[keywords struct]
[copyright {2002, Brett Schwarz <[email protected]>}]
[moddesc   {Tcl Data Structures}]
[titledesc {Define and create records (similar to 'C' structures)}]
[category  {Data structures}]
[require Tcl 8.2]
[require struct::record [opt 1.2.1]]
[description]

The [cmd ::struct::record] package provides a mechanism to group variables together
as one data structure, similar to a 'C' structure. The members of a
record can be variables or other records. However, a record can not contain circular
record, i.e. records that contain the same record as a
member.

[para]
This package was structured so that it is very similar to how Tk objects work. Each record
definition creates a record object that encompasses that definition. Subsequently, that
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
record [arg recordName]. It returns the same format as how the
records were defined.

[call [cmd {record show}] [arg values] [arg instanceName]]

Returns a list of values that are set for the instance
[arg instanceName]. The output is a list of key/value pairs. If there
are nested records, then the values of the nested records will 
itself be a list.

[call [cmd {record exists}] [arg record] [arg recordName]]

Tests for the existence of a [arg record] with the
name [arg recordName].








|







52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
record [arg recordName]. It returns the same format as how the
records were defined.

[call [cmd {record show}] [arg values] [arg instanceName]]

Returns a list of values that are set for the instance
[arg instanceName]. The output is a list of key/value pairs. If there
are nested records, then the values of the nested records will
itself be a list.

[call [cmd {record exists}] [arg record] [arg recordName]]

Tests for the existence of a [arg record] with the
name [arg recordName].

74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
[call [cmd {record delete}] [arg instance] [arg instanceName]]

Deletes [arg instance] with the name of [arg instanceName]. It
will return an error if the instance does not exist.

[list_end]
[para]
      
[section {RECORD MEMBERS}]

Record members can either be variables, or other records, However, the
same record can not be nested witin itself (circular). To define a
nested record, you need to specify the [const record] keyword, along
the with name of the record, and the name of the instance of that
nested record. For example, it would look like this:







|







77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
[call [cmd {record delete}] [arg instance] [arg instanceName]]

Deletes [arg instance] with the name of [arg instanceName]. It
will return an error if the instance does not exist.

[list_end]
[para]

[section {RECORD MEMBERS}]

Record members can either be variables, or other records, However, the
same record can not be nested witin itself (circular). To define a
nested record, you need to specify the [const record] keyword, along
the with name of the record, and the name of the instance of that
nested record. For example, it would look like this:
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
All instances created from this record definition, will initially have 5 as
the value for [arg mem2]. If no default is given, then the value will be the empty string.

[para]
[emph {Getting Values}]
[para]

To get a value of a member, there are several ways to do this. 

[list_begin enumerated]

[enum]
To get a member value, then use the instance built-in [method cget] method:
[para]
    [arg instanceName] [method cget] -mem1







|







123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
All instances created from this record definition, will initially have 5 as
the value for [arg mem2]. If no default is given, then the value will be the empty string.

[para]
[emph {Getting Values}]
[para]

To get a value of a member, there are several ways to do this.

[list_begin enumerated]

[enum]
To get a member value, then use the instance built-in [method cget] method:
[para]
    [arg instanceName] [method cget] -mem1
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168

[list_end]

[para]
[emph {Setting Values}]
[para]

To set a value of a member, there are several ways to do this. 

[list_begin enumerated]

[enum]
To set a member value, then use the instance built-in [method configure] method:
[para]
    [arg instanceName] [method configure] -mem1 val1







|







157
158
159
160
161
162
163
164
165
166
167
168
169
170
171

[list_end]

[para]
[emph {Setting Values}]
[para]

To set a value of a member, there are several ways to do this.

[list_begin enumerated]

[enum]
To set a member value, then use the instance built-in [method configure] method:
[para]
    [arg instanceName] [method configure] -mem1 val1
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322

[list_end]

[para]
[emph {Alias access}]
[para]

In the original implementation, access was done by using dot notation similar to how 'C' structures are accessed. However, 
there was a concensus to make the interface more Tcl like, which made sense. However, the original alias access still
exists. It might prove to be helpful to some.

[para]
Basically, for every member of every instance, an alias is created. This alias is used to get and set values for that
member. An example will illustrate the point, using the above defined records:

[para]
[example_begin]
# Create an instance first
% myrecord inst1
::inst1
% # To get a member of an instance, just use the 
% # alias (it behaves like a Tcl command):
% inst1.mem1
%
% # To set a member via the alias, just include 
% # a value (optionally the equal sign - syntactic sugar)
% inst1.mem1 = 5
5
% inst1.mem1
5
% # For nested records, just continue with the 
% # dot notation (note no equal sign)
% inst1.mem3.nest1 10
10
% inst1.mem3.nest1
10
% # just the instance by itself gives all 
% # member/values pairs for that instance
% inst1
-mem1 5 -mem2 {} -mem3 {-nest1 10 -nest2 {}}
% # and to get all members within the nested record
% inst1.mem3
-nest1 10 -nest2 {}
%

[example_end]

[section {RECORD COMMAND}]

The following subcommands and corresponding arguments are available to any
record command:

[list_begin definitions]

[call [arg recordName] [method [arg instanceName|#auto]] [opt [arg "-member1 value1 -member2 value2 ..."]]]

Using the [arg recordName] object command that was created from the record definition, 
instances of the record definition can be created. Once a instance is
created, then it inherits the members of the record definition, very
similar to how objects work. During instance generation, an object command for the instance
is created as well, using [arg instanceName]. This object command is used
to access the data members of the instance. During the instantiation, values for
that instance can be given, [emph but] all values must be given, and be given
in key/value pairs. Nested records, need to be in list format.

[para]
Optionally, [arg #auto] can be used in place of [arg instanceName]. When #auto is used,
then a instance name will automatically be generated, of the form recordName<integer>, where
<integer> is a unique integer (starting at 0) that is generated.

[list_end]
[para]

[section {INSTANCE COMMAND}]
 
The following subcommands and corresponding arguments are available to
any record instance command:

[list_begin definitions]
 
[call [arg instanceName] [method cget] [opt [arg "-member1 -member2 ..."]]]

Each instance has the sub command [method cget] associated with it. This
is very similar to how Tk widget's cget command works. It queries
the values of the member for that particular instance. If
no arguments are given, then a key/value list is returned.

[call [arg instanceName] [method configure] [opt [arg "-member1 value1 -member2 value2 ..."]]]

Each instance has the sub command [method configure] associated with it. This
is very similar to how Tk widget's configure command works. It sets
the values of the particular member for that particular instance. If
no arguments are given, then a key/value list is returned.

[list_end]

[section EXAMPLES]
 
Two examples are provided to give an good illustration on how to use
this package.

[para]      
[emph {Example 1}]
[para]

Probably the most obvious example would be to hold contact information,
such as addresses, phone numbers, comments, etc. Since a person can have
multiple phone numbers, multiple email addresses, etc, we will use nested
records to define these. So, the first thing we do is define the nested
records:

[para]
[example {

##
##  This is an interactive example, to see what is 
##  returned by each command as well.
##

% namespace import ::struct::record::*

% # define a nested record. Notice that country has default 'USA'.
% record define locations {
    street
    street2
    city
    state
    zipcode
    {country USA}
    phone
}
::locations
% # Define the main record. Notice that it uses the location record twice.
% record define contacts {
    first 
    middle 
    last 
    {record locations home}
    {record locations work}
}
::contacts
% # Create an instance for the contacts record.
% contacts cont1
::cont1







|












|



|





|





|



















|

















|




|

















|



|













|


















|
|
|







182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325

[list_end]

[para]
[emph {Alias access}]
[para]

In the original implementation, access was done by using dot notation similar to how 'C' structures are accessed. However,
there was a concensus to make the interface more Tcl like, which made sense. However, the original alias access still
exists. It might prove to be helpful to some.

[para]
Basically, for every member of every instance, an alias is created. This alias is used to get and set values for that
member. An example will illustrate the point, using the above defined records:

[para]
[example_begin]
# Create an instance first
% myrecord inst1
::inst1
% # To get a member of an instance, just use the
% # alias (it behaves like a Tcl command):
% inst1.mem1
%
% # To set a member via the alias, just include
% # a value (optionally the equal sign - syntactic sugar)
% inst1.mem1 = 5
5
% inst1.mem1
5
% # For nested records, just continue with the
% # dot notation (note no equal sign)
% inst1.mem3.nest1 10
10
% inst1.mem3.nest1
10
% # just the instance by itself gives all
% # member/values pairs for that instance
% inst1
-mem1 5 -mem2 {} -mem3 {-nest1 10 -nest2 {}}
% # and to get all members within the nested record
% inst1.mem3
-nest1 10 -nest2 {}
%

[example_end]

[section {RECORD COMMAND}]

The following subcommands and corresponding arguments are available to any
record command:

[list_begin definitions]

[call [arg recordName] [method [arg instanceName|#auto]] [opt [arg "-member1 value1 -member2 value2 ..."]]]

Using the [arg recordName] object command that was created from the record definition,
instances of the record definition can be created. Once a instance is
created, then it inherits the members of the record definition, very
similar to how objects work. During instance generation, an object command for the instance
is created as well, using [arg instanceName]. This object command is used
to access the data members of the instance. During the instantiation, values for
that instance can be given, [emph but] all values must be given, and be given
in key/value pairs. Nested records, need to be in list format.

[para]
Optionally, [arg #auto] can be used in place of [arg instanceName]. When #auto is used,
then a instance name will automatically be generated, of the form recordName<integer>, where
<integer> is a unique integer (starting at 0) that is generated.

[list_end]
[para]

[section {INSTANCE COMMAND}]

The following subcommands and corresponding arguments are available to
any record instance command:

[list_begin definitions]

[call [arg instanceName] [method cget] [opt [arg "-member1 -member2 ..."]]]

Each instance has the sub command [method cget] associated with it. This
is very similar to how Tk widget's cget command works. It queries
the values of the member for that particular instance. If
no arguments are given, then a key/value list is returned.

[call [arg instanceName] [method configure] [opt [arg "-member1 value1 -member2 value2 ..."]]]

Each instance has the sub command [method configure] associated with it. This
is very similar to how Tk widget's configure command works. It sets
the values of the particular member for that particular instance. If
no arguments are given, then a key/value list is returned.

[list_end]

[section EXAMPLES]

Two examples are provided to give an good illustration on how to use
this package.

[para]
[emph {Example 1}]
[para]

Probably the most obvious example would be to hold contact information,
such as addresses, phone numbers, comments, etc. Since a person can have
multiple phone numbers, multiple email addresses, etc, we will use nested
records to define these. So, the first thing we do is define the nested
records:

[para]
[example {

##
##  This is an interactive example, to see what is
##  returned by each command as well.
##

% namespace import ::struct::record::*

% # define a nested record. Notice that country has default 'USA'.
% record define locations {
    street
    street2
    city
    state
    zipcode
    {country USA}
    phone
}
::locations
% # Define the main record. Notice that it uses the location record twice.
% record define contacts {
    first
    middle
    last
    {record locations home}
    {record locations work}
}
::contacts
% # Create an instance for the contacts record.
% contacts cont1
::cont1
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
% record show members contacts2
first middle last {record locations home} {record locations work}
% record show members contacts
first middle last {record locations home} {record locations work}
%
}]

[para]      
[emph {Example 1}]
[para]

This next example just illustrates a simple linked list
[para]
[example {








|







344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
% record show members contacts2
first middle last {record locations home} {record locations work}
% record show members contacts
first middle last {record locations home} {record locations work}
%
}]

[para]
[emph {Example 1}]
[para]

This next example just illustrates a simple linked list
[para]
[example {

381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
% record show instances llist
%

}]

[para]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {struct :: record}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords struct record {data structures}]
[manpage_end]







<
<
<
<
<
|
<
|
<
<
<
<
<

384
385
386
387
388
389
390





391

392





393
% record show instances llist
%

}]

[para]






[vset CATEGORY {struct :: record}]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/struct/skiplist.man.

1
2

3
4
5
6
7
8
9
[comment {-*- tcl -*-}]
[manpage_begin struct::skiplist n 1.3]

[copyright {2000 Keith Vetter}]
[comment {
    This software is licensed under a BSD license as described in tcl/tk
    license.txt file but with the copyright held by Keith Vetter.
}]
[moddesc   {Tcl Data Structures}]
[titledesc {Create and manipulate skiplists}]


>







1
2
3
4
5
6
7
8
9
10
[comment {-*- tcl -*-}]
[manpage_begin struct::skiplist n 1.3]
[keywords skiplist]
[copyright {2000 Keith Vetter}]
[comment {
    This software is licensed under a BSD license as described in tcl/tk
    license.txt file but with the copyright held by Keith Vetter.
}]
[moddesc   {Tcl Data Structures}]
[titledesc {Create and manipulate skiplists}]
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
The following commands are possible for skiplist objects:

[list_begin definitions]
[call [arg skiplistName] [method delete] [arg node] [opt [arg node]...]]

Remove the specified nodes from the skiplist.


[call [arg skiplistName] [method destroy]]

Destroy the skiplist, including its storage space and associated command.


[call [arg skiplistName] [method insert] [arg {key value}]]

Insert a node with the given [arg key] and [arg value] into the
skiplist. If a node with that key already exists, then the that node's
value is updated and its node level is returned. Otherwise a new node
is created and 0 is returned.


[call [arg skiplistName] [method search] [arg node] [opt "[const -key] [arg key]"]]

Search for a given key in a skiplist. If not found then 0 is returned.
If found, then a two element list of 1 followed by the node's value is retuned.


[call [arg skiplistName] [method size]]

Return a count of the number of nodes in the skiplist.

[call [arg skiplistName] [method walk] [arg cmd]]

Walk the skiplist from the first node to the last. At each node, the
command [arg cmd] will be evaluated with the key and value of the
current node appended.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {struct :: skiplist}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords skiplist]
[manpage_end]







<



<








<




<













<
<
<
<
<
|
<
|
<
<
<
<
<

49
50
51
52
53
54
55

56
57
58

59
60
61
62
63
64
65
66

67
68
69
70

71
72
73
74
75
76
77
78
79
80
81
82
83





84

85





86
The following commands are possible for skiplist objects:

[list_begin definitions]
[call [arg skiplistName] [method delete] [arg node] [opt [arg node]...]]

Remove the specified nodes from the skiplist.


[call [arg skiplistName] [method destroy]]

Destroy the skiplist, including its storage space and associated command.


[call [arg skiplistName] [method insert] [arg {key value}]]

Insert a node with the given [arg key] and [arg value] into the
skiplist. If a node with that key already exists, then the that node's
value is updated and its node level is returned. Otherwise a new node
is created and 0 is returned.


[call [arg skiplistName] [method search] [arg node] [opt "[const -key] [arg key]"]]

Search for a given key in a skiplist. If not found then 0 is returned.
If found, then a two element list of 1 followed by the node's value is retuned.


[call [arg skiplistName] [method size]]

Return a count of the number of nodes in the skiplist.

[call [arg skiplistName] [method walk] [arg cmd]]

Walk the skiplist from the first node to the last. At each node, the
command [arg cmd] will be evaluated with the key and value of the
current node appended.

[list_end]






[vset CATEGORY {struct :: skiplist}]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/struct/stack.man.

1




2
3
4
5
6
7
8
[manpage_begin struct::stack n 1.5.3]




[moddesc   {Tcl Data Structures}]
[titledesc {Create and manipulate stack objects}]
[category  {Data structures}]
[require Tcl 8.4]
[require struct::stack [opt 1.5.3]]
[description]


>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
[manpage_begin struct::stack n 1.5.3]
[keywords graph]
[keywords matrix]
[keywords queue]
[keywords tree]
[moddesc   {Tcl Data Structures}]
[titledesc {Create and manipulate stack objects}]
[category  {Data structures}]
[require Tcl 8.4]
[require struct::stack [opt 1.5.3]]
[description]

30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
[list_begin definitions]

[call [arg stackName] [cmd option] [opt [arg "arg arg ..."]]]

[arg Option] and the [arg arg]s determine the exact behavior of the
command.  The following commands are possible for stack objects:


[call [arg stackName] [method clear]]

Remove all items from the stack.


[call [arg stackName] [method destroy]]

Destroy the stack, including its storage space and associated command.


[call [arg stackName] [method get]]

Returns the whole contents of the stack as a list, without removing
them from the stack.

[call [arg stackName] [method getr]]







<




<



<







34
35
36
37
38
39
40

41
42
43
44

45
46
47

48
49
50
51
52
53
54
[list_begin definitions]

[call [arg stackName] [cmd option] [opt [arg "arg arg ..."]]]

[arg Option] and the [arg arg]s determine the exact behavior of the
command.  The following commands are possible for stack objects:


[call [arg stackName] [method clear]]

Remove all items from the stack.


[call [arg stackName] [method destroy]]

Destroy the stack, including its storage space and associated command.


[call [arg stackName] [method get]]

Returns the whole contents of the stack as a list, without removing
them from the stack.

[call [arg stackName] [method getr]]
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
from the stack.  If [arg count] is not specified, it defaults to 1.
If [arg count] is 1, the result is a simple string; otherwise, it is a
list.  If specified, [arg count] must be greater than or equal to 1.

If there are not enoughs items on the stack to fulfull the request,
this command will throw an error.


[call [arg stackName] [method push] [arg item] [opt [arg item...]]]

Push the [arg item] or items specified onto the stack.  If more than
one [arg item] is given, they will be pushed in the order they are
listed.


[call [arg stackName] [method size]]

Return the number of items on the stack.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {struct :: stack}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords queue matrix tree graph]
[manpage_end]







<





<







<
<
<
<
<
|
<
|
<
<
<
<
<

87
88
89
90
91
92
93

94
95
96
97
98

99
100
101
102
103
104
105





106

107





108
from the stack.  If [arg count] is not specified, it defaults to 1.
If [arg count] is 1, the result is a simple string; otherwise, it is a
list.  If specified, [arg count] must be greater than or equal to 1.

If there are not enoughs items on the stack to fulfull the request,
this command will throw an error.


[call [arg stackName] [method push] [arg item] [opt [arg item...]]]

Push the [arg item] or items specified onto the stack.  If more than
one [arg item] is given, they will be pushed in the order they are
listed.


[call [arg stackName] [method size]]

Return the number of items on the stack.

[list_end]






[vset CATEGORY {struct :: stack}]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/struct/struct_list.man.

1
2
3
































4
5
6
7
8
9
10
[comment {-*- tcl -*- doctools manpage}]
[comment {$Id: struct_list.man,v 1.24 2010/10/05 21:47:25 andreas_kupries Exp $}]
[manpage_begin struct::list n 1.8.2]
































[copyright {2003-2005 by Kevin B. Kenny. All rights reserved}]
[copyright {2003-2012 Andreas Kupries <[email protected]>}]
[moddesc {Tcl Data Structures}]
[titledesc {Procedures for manipulating lists}]
[category  {Data structures}]
[require Tcl 8.4]
[require struct::list [opt 1.8.2]]



>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
[comment {-*- tcl -*- doctools manpage}]
[comment {$Id: struct_list.man,v 1.24 2010/10/05 21:47:25 andreas_kupries Exp $}]
[manpage_begin struct::list n 1.8.2]
[keywords assign]
[keywords common]
[keywords comparison]
[keywords diff]
[keywords differential]
[keywords equal]
[keywords equality]
[keywords filter]
[keywords {first permutation}]
[keywords Fisher-Yates]
[keywords flatten]
[keywords folding]
[keywords {full outer join}]
[keywords {generate permutations}]
[keywords {inner join}]
[keywords join]
[keywords {left outer join}]
[keywords list]
[keywords {longest common subsequence}]
[keywords map]
[keywords {next permutation}]
[keywords {outer join}]
[keywords permutation]
[keywords reduce]
[keywords repeating]
[keywords repetition]
[keywords reshuffle]
[keywords reverse]
[keywords {right outer join}]
[keywords shuffle]
[keywords subsequence]
[keywords swapping]
[copyright {2003-2005 by Kevin B. Kenny. All rights reserved}]
[copyright {2003-2012 Andreas Kupries <[email protected]>}]
[moddesc {Tcl Data Structures}]
[titledesc {Procedures for manipulating lists}]
[category  {Data structures}]
[require Tcl 8.4]
[require struct::list [opt 1.8.2]]
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
As with [method longestCommonSubsequence], the return value is a list
of two lists of equal length.  The first sublist is of indices into
[arg sequence1], and the second sublist is of indices into

[arg sequence2].  Each corresponding pair of indices corresponds to
equal elements in the sequences.  The sequence approximates the
longest common subsequence.


[call [cmd ::struct::list] [method lcsInvert] [arg lcsData] [arg len1] [arg len2]]

This command takes a description of a longest common subsequence

([arg lcsData]), inverts it, and returns the result. Inversion means
here that as the input describes which parts of the two sequences are







<







94
95
96
97
98
99
100

101
102
103
104
105
106
107
As with [method longestCommonSubsequence], the return value is a list
of two lists of equal length.  The first sublist is of indices into
[arg sequence1], and the second sublist is of indices into

[arg sequence2].  Each corresponding pair of indices corresponds to
equal elements in the sequences.  The sequence approximates the
longest common subsequence.


[call [cmd ::struct::list] [method lcsInvert] [arg lcsData] [arg len1] [arg len2]]

This command takes a description of a longest common subsequence

([arg lcsData]), inverts it, and returns the result. Inversion means
here that as the input describes which parts of the two sequences are
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179

[item]
Also an index equal to the length of the first sequence in an
[term added] chunk refers to just behind the end of the sequence.

[list_end]


[call [cmd ::struct::list] [method lcsInvert2] [arg lcs1] [arg lcs2] [arg len1] [arg len2]]

Similar to [method lcsInvert]. Instead of directly taking the result
of a call to [method longestCommonSubsequence] this subcommand expects
the indices for the two sequences in two separate lists.


[call [cmd ::struct::list] [method lcsInvertMerge] [arg lcsData] [arg len1] [arg len2]]

Similar to [method lcsInvert]. It returns essentially the same
structure as that command, except that it may contain chunks of type
[const unchanged] too.








<





<







190
191
192
193
194
195
196

197
198
199
200
201

202
203
204
205
206
207
208

[item]
Also an index equal to the length of the first sequence in an
[term added] chunk refers to just behind the end of the sequence.

[list_end]


[call [cmd ::struct::list] [method lcsInvert2] [arg lcs1] [arg lcs2] [arg len1] [arg len2]]

Similar to [method lcsInvert]. Instead of directly taking the result
of a call to [method longestCommonSubsequence] this subcommand expects
the indices for the two sequences in two separate lists.


[call [cmd ::struct::list] [method lcsInvertMerge] [arg lcsData] [arg len1] [arg len2]]

Similar to [method lcsInvert]. It returns essentially the same
structure as that command, except that it may contain chunks of type
[const unchanged] too.

196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
                        {changed   {3  3}  {2 2}}
                        {unchanged {4  5}  {3 4}}
                        {deleted   {6  7}  {4 5}}
                        {unchanged {8 10}  {5 7}}
                        {added    {10 11}  {8 8}}}
}]


[call [cmd ::struct::list] [method lcsInvertMerge2] [arg lcs1] [arg lcs2] [arg len1] [arg len2]]

Similar to [method lcsInvertMerge]. Instead of directly taking the
result of a call to [method longestCommonSubsequence] this subcommand
expects the indices for the two sequences in two separate lists.



[call [cmd ::struct::list] [method reverse] [arg sequence]]

The subcommand takes a single [arg sequence] as argument and returns a new
sequence containing the elements of the input sequence in reverse
order.


[call [cmd ::struct::list] [method shuffle] [arg list]]
[keywords shuffle reshuffle Fisher-Yates]

The subcommand takes a [arg list] and returns a copy of that list
with the elements it contains in random order. Every possible
ordering of elements is equally likely to be generated. The
Fisher-Yates shuffling algorithm is used internally. 


[call [cmd ::struct::list] [method assign] [arg sequence] [arg varname] [opt [arg varname]]...]

The subcommand assigns the first [var n] elements of the input

[arg sequence] to the one or more variables whose names were listed
after the sequence, where [var n] is the number of specified







<





<
<







<

<




|
<







225
226
227
228
229
230
231

232
233
234
235
236


237
238
239
240
241
242
243

244

245
246
247
248
249

250
251
252
253
254
255
256
                        {changed   {3  3}  {2 2}}
                        {unchanged {4  5}  {3 4}}
                        {deleted   {6  7}  {4 5}}
                        {unchanged {8 10}  {5 7}}
                        {added    {10 11}  {8 8}}}
}]


[call [cmd ::struct::list] [method lcsInvertMerge2] [arg lcs1] [arg lcs2] [arg len1] [arg len2]]

Similar to [method lcsInvertMerge]. Instead of directly taking the
result of a call to [method longestCommonSubsequence] this subcommand
expects the indices for the two sequences in two separate lists.



[call [cmd ::struct::list] [method reverse] [arg sequence]]

The subcommand takes a single [arg sequence] as argument and returns a new
sequence containing the elements of the input sequence in reverse
order.


[call [cmd ::struct::list] [method shuffle] [arg list]]


The subcommand takes a [arg list] and returns a copy of that list
with the elements it contains in random order. Every possible
ordering of elements is equally likely to be generated. The
Fisher-Yates shuffling algorithm is used internally.


[call [cmd ::struct::list] [method assign] [arg sequence] [arg varname] [opt [arg varname]]...]

The subcommand assigns the first [var n] elements of the input

[arg sequence] to the one or more variables whose names were listed
after the sequence, where [var n] is the number of specified
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
    c d e
    tclsh> set foo
    a
    tclsh> set bar
    b
}]


[call [cmd ::struct::list] [method flatten] [opt [option -full]] [opt [option --]] [arg sequence]]

The subcommand takes a single [arg sequence] and returns a new
sequence where one level of nesting was removed from the input
sequence. In other words, the sublists in the input sequence are
replaced by their elements.

[para]

The subcommand will remove any nesting it finds if the option
[option -full] is specified.

[example {
    tclsh> ::struct::list flatten {1 2 3 {4 5} {6 7} {{8 9}} 10}
    1 2 3 4 5 6 7 {8 9} 10
    tclsh> ::struct::list flatten -full {1 2 3 {4 5} {6 7} {{8 9}} 10}
    1 2 3 4 5 6 7 8 9 10
}]


[call [cmd ::struct::list] [method map] [arg sequence] [arg cmdprefix]]

The subcommand takes a [arg sequence] to operate on and a command
prefix ([arg cmdprefix]) specifying an operation, applies the command
prefix to each element of the sequence and returns a sequence
consisting of the results of that application.







<


















<







273
274
275
276
277
278
279

280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297

298
299
300
301
302
303
304
    c d e
    tclsh> set foo
    a
    tclsh> set bar
    b
}]


[call [cmd ::struct::list] [method flatten] [opt [option -full]] [opt [option --]] [arg sequence]]

The subcommand takes a single [arg sequence] and returns a new
sequence where one level of nesting was removed from the input
sequence. In other words, the sublists in the input sequence are
replaced by their elements.

[para]

The subcommand will remove any nesting it finds if the option
[option -full] is specified.

[example {
    tclsh> ::struct::list flatten {1 2 3 {4 5} {6 7} {{8 9}} 10}
    1 2 3 4 5 6 7 {8 9} 10
    tclsh> ::struct::list flatten -full {1 2 3 {4 5} {6 7} {{8 9}} 10}
    1 2 3 4 5 6 7 8 9 10
}]


[call [cmd ::struct::list] [method map] [arg sequence] [arg cmdprefix]]

The subcommand takes a [arg sequence] to operate on and a command
prefix ([arg cmdprefix]) specifying an operation, applies the command
prefix to each element of the sequence and returns a sequence
consisting of the results of that application.
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
    tclsh> # given as list of lists.

    tclsh> proc projection {n list} {::lindex $list $n}
    tclsh> ::struct::list map {{a b c} {1 2 3} {d f g}} {projection 1}
    b 2 f
}]


[call [cmd ::struct::list] [method mapfor] [arg var] [arg sequence] [arg script]]

The subcommand takes a [arg sequence] to operate on and a tcl [arg script],
applies the script to each element of the sequence and returns a sequence
consisting of the results of that application.

[para]







<







322
323
324
325
326
327
328

329
330
331
332
333
334
335
    tclsh> # given as list of lists.

    tclsh> proc projection {n list} {::lindex $list $n}
    tclsh> ::struct::list map {{a b c} {1 2 3} {d f g}} {projection 1}
    b 2 f
}]


[call [cmd ::struct::list] [method mapfor] [arg var] [arg sequence] [arg script]]

The subcommand takes a [arg sequence] to operate on and a tcl [arg script],
applies the script to each element of the sequence and returns a sequence
consisting of the results of that application.

[para]
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
    tclsh> # given as list of lists.

    tclsh> ::struct::list mapfor x {{a b c} {1 2 3} {d f g}} {
	lindex $x 1
    }
    b 2 f
}]


[call [cmd ::struct::list] [method filter] [arg sequence] [arg cmdprefix]]

The subcommand takes a [arg sequence] to operate on and a command
prefix ([arg cmdprefix]) specifying an operation, applies the command
prefix to each element of the sequence and returns a sequence
consisting of all elements of the [arg sequence] for which the command







<







352
353
354
355
356
357
358

359
360
361
362
363
364
365
    tclsh> # given as list of lists.

    tclsh> ::struct::list mapfor x {{a b c} {1 2 3} {d f g}} {
	lindex $x 1
    }
    b 2 f
}]


[call [cmd ::struct::list] [method filter] [arg sequence] [arg cmdprefix]]

The subcommand takes a [arg sequence] to operate on and a command
prefix ([arg cmdprefix]) specifying an operation, applies the command
prefix to each element of the sequence and returns a sequence
consisting of all elements of the [arg sequence] for which the command
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382

[para]

[emph Note:] The [method filter] is a specialized application of
[method fold] where the result is extended with the current item or
not, depending o nthe result of the test.


[call [cmd ::struct::list] [method filterfor] [arg var] [arg sequence] [arg expr]]

The subcommand takes a [arg sequence] to operate on and a tcl expression
([arg expr]) specifying a condition, applies the conditionto each element
of the sequence and returns a sequence consisting of all elements of the
[arg sequence] for which the expression returned [const true].








<







387
388
389
390
391
392
393

394
395
396
397
398
399
400

[para]

[emph Note:] The [method filter] is a specialized application of
[method fold] where the result is extended with the current item or
not, depending o nthe result of the test.


[call [cmd ::struct::list] [method filterfor] [arg var] [arg sequence] [arg expr]]

The subcommand takes a [arg sequence] to operate on and a tcl expression
([arg expr]) specifying a condition, applies the conditionto each element
of the sequence and returns a sequence consisting of all elements of the
[arg sequence] for which the expression returned [const true].

395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
[example {
    tclsh> # removing all odd numbers from the input

    tclsh> ::struct::list filterfor x {1 2 3 4 5} {($x % 2) == 0}
    2 4
}]


[call [cmd ::struct::list] [method split] [arg sequence] [arg cmdprefix] [opt "[arg passVar] [arg failVar]"]]

This is a variant of method [method filter], see above. Instead of
returning just the elements passing the test we get lists of both
passing and failing elements.

[para]

If no variable names are specified then the result of the command will
be a list containing the list of passing elements, and the list of
failing elements, in this order. Otherwise the lists of passing and
failing elements are stored into the two specified variables, and the
result will be a list containing two numbers, the number of elements
passing the test, and the number of elements failing, in this order.

[para]

The interface to the test is the same as used by [method filter].


[call [cmd ::struct::list] [method fold] [arg sequence] [arg initialvalue] [arg cmdprefix]]

The subcommand takes a [arg sequence] to operate on, an arbitrary
string [arg {initial value}] and a command prefix ([arg cmdprefix])
specifying an operation.








<


















<







413
414
415
416
417
418
419

420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437

438
439
440
441
442
443
444
[example {
    tclsh> # removing all odd numbers from the input

    tclsh> ::struct::list filterfor x {1 2 3 4 5} {($x % 2) == 0}
    2 4
}]


[call [cmd ::struct::list] [method split] [arg sequence] [arg cmdprefix] [opt "[arg passVar] [arg failVar]"]]

This is a variant of method [method filter], see above. Instead of
returning just the elements passing the test we get lists of both
passing and failing elements.

[para]

If no variable names are specified then the result of the command will
be a list containing the list of passing elements, and the list of
failing elements, in this order. Otherwise the lists of passing and
failing elements are stored into the two specified variables, and the
result will be a list containing two numbers, the number of elements
passing the test, and the number of elements failing, in this order.

[para]

The interface to the test is the same as used by [method filter].


[call [cmd ::struct::list] [method fold] [arg sequence] [arg initialvalue] [arg cmdprefix]]

The subcommand takes a [arg sequence] to operate on, an arbitrary
string [arg {initial value}] and a command prefix ([arg cmdprefix])
specifying an operation.

468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
[example {
    tclsh> # summing the elements in a list.
    tclsh> proc + {a b} {expr {$a + $b}}
    tclsh> ::struct::list fold {1 2 3 4 5} 0 +
    15
}]


[call [cmd ::struct::list] [method shift] [arg listvar]]

The subcommand takes the list contained in the variable named by

[arg listvar] and shifts it down one element.

After the call [arg listvar] will contain a list containing the second
to last elements of the input list. The first element of the ist is
returned as the result of the command. Shifting the empty list does
nothing.


[call [cmd ::struct::list] [method iota] [arg n]]

The subcommand returns a list containing the integer numbers
in the range [const {[0,n)}]. The element at index [var i]
of the list contain the number [const i].

[para]

For "[arg n] == [const 0]" an empty list will be returned.


[call [cmd ::struct::list] [method equal] [arg a] [arg b]]

The subcommand compares the two lists [arg a] and [arg b] for
equality. In other words, they have to be of the same length and have
to contain the same elements in the same order. If an element is a
list the same definition of equality applies recursively.

[para]

A boolean value will be returned as the result of the command.
This value will be [const true] if the two lists are equal, and
[const false] else.


[call [cmd ::struct::list] [method repeat] [arg size] [arg element1] [opt "[arg element2] [arg element3]..."]]

The subcommand creates a list of length

"[arg size] * [emph {number of elements}]" by repeating [arg size]
times the sequence of elements







<











<









<













<







484
485
486
487
488
489
490

491
492
493
494
495
496
497
498
499
500
501

502
503
504
505
506
507
508
509
510

511
512
513
514
515
516
517
518
519
520
521
522
523

524
525
526
527
528
529
530
[example {
    tclsh> # summing the elements in a list.
    tclsh> proc + {a b} {expr {$a + $b}}
    tclsh> ::struct::list fold {1 2 3 4 5} 0 +
    15
}]


[call [cmd ::struct::list] [method shift] [arg listvar]]

The subcommand takes the list contained in the variable named by

[arg listvar] and shifts it down one element.

After the call [arg listvar] will contain a list containing the second
to last elements of the input list. The first element of the ist is
returned as the result of the command. Shifting the empty list does
nothing.


[call [cmd ::struct::list] [method iota] [arg n]]

The subcommand returns a list containing the integer numbers
in the range [const {[0,n)}]. The element at index [var i]
of the list contain the number [const i].

[para]

For "[arg n] == [const 0]" an empty list will be returned.


[call [cmd ::struct::list] [method equal] [arg a] [arg b]]

The subcommand compares the two lists [arg a] and [arg b] for
equality. In other words, they have to be of the same length and have
to contain the same elements in the same order. If an element is a
list the same definition of equality applies recursively.

[para]

A boolean value will be returned as the result of the command.
This value will be [const true] if the two lists are equal, and
[const false] else.


[call [cmd ::struct::list] [method repeat] [arg size] [arg element1] [opt "[arg element2] [arg element3]..."]]

The subcommand creates a list of length

"[arg size] * [emph {number of elements}]" by repeating [arg size]
times the sequence of elements
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
    {0 0 0} {0 0 0} {0 0 0} {0 0 0}
    tclsh> ::struct::list repeatn  0 {3 4}
    {0 0 0} {0 0 0} {0 0 0} {0 0 0}
    tclsh> ::struct::list repeatn  0 {3 4 5}
    {{0 0 0} {0 0 0} {0 0 0} {0 0 0}} {{0 0 0} {0 0 0} {0 0 0} {0 0 0}} {{0 0 0} {0 0 0} {0 0 0} {0 0 0}} {{0 0 0} {0 0 0} {0 0 0} {0 0 0}} {{0 0 0} {0 0 0} {0 0 0} {0 0 0}}
}]


[call [cmd ::struct::list] [method dbJoin] [opt [option -inner]|[option -left]|[option -right]|[option -full]] [opt "[option -keys] [arg varname]"] \{[arg keycol] [arg table]\}...]

The method performs a table join according to relational algebra. The
execution of any of the possible outer join operation is triggered by
the presence of either option [option -left], [option -right], or
[option -full]. If none of these options is present a regular inner
join will be performed. This can also be triggered by specifying







<







585
586
587
588
589
590
591

592
593
594
595
596
597
598
    {0 0 0} {0 0 0} {0 0 0} {0 0 0}
    tclsh> ::struct::list repeatn  0 {3 4}
    {0 0 0} {0 0 0} {0 0 0} {0 0 0}
    tclsh> ::struct::list repeatn  0 {3 4 5}
    {{0 0 0} {0 0 0} {0 0 0} {0 0 0}} {{0 0 0} {0 0 0} {0 0 0} {0 0 0}} {{0 0 0} {0 0 0} {0 0 0} {0 0 0}} {{0 0 0} {0 0 0} {0 0 0} {0 0 0}} {{0 0 0} {0 0 0} {0 0 0} {0 0 0}}
}]


[call [cmd ::struct::list] [method dbJoin] [opt [option -inner]|[option -left]|[option -right]|[option -full]] [opt "[option -keys] [arg varname]"] \{[arg keycol] [arg table]\}...]

The method performs a table join according to relational algebra. The
execution of any of the possible outer join operation is triggered by
the presence of either option [option -left], [option -right], or
[option -full]. If none of these options is present a regular inner
join will be performed. This can also be triggered by specifying
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679

[para]

The table resulting from the join operation is returned as the result
of the command. We use the same representation as described above for
the input [arg table]s.



[call [cmd ::struct::list] [method dbJoinKeyed] [opt [option -inner]|[option -left]|[option -right]|[option -full]] [opt "[option -keys] [arg varname]"] [arg table]...]

The operations performed by this method are the same as described
above for [method dbJoin]. The only difference is in the specification
of the keys to use. Instead of using column indices separate from the
table here the keys are provided within the table itself. The row
elements in each [arg table] are not the lists of column values, but a
two-element list where the second element is the regular list of
column values and the first element is the key to use.

[call [cmd ::struct::list] [method swap] [arg listvar] [arg i] [arg j]]

The subcommand exchanges the elements at the indices [arg i] and
[arg j] in the list stored in the variable named by [arg listvar]. The
list is modified in place, and also returned as the result of the
subcommand.


[call [cmd ::struct::list] [method firstperm] [arg list]]

This subcommand returns the lexicographically first permutation of the
input [arg list].


[call [cmd ::struct::list] [method nextperm] [arg perm]]

This subcommand accepts a permutation of a set of elements (provided
by [arg perm]) and returns the next permutatation in lexicographic
sequence.

[para]
The algorithm used here is by Donal E. Knuth, see section
[sectref REFERENCES] for details.


[call [cmd ::struct::list] [method permutations] [arg list]]

This subcommand returns a list containing all permutations of the
input [arg list] in lexicographic order.


[call [cmd ::struct::list] [method foreachperm] [arg var] [arg list] [arg body]]

This subcommand executes the script [arg body] once for each
permutation of the specified [arg list]. The permutations are visited
in lexicographic order, and the variable [arg var] is set to the
permutation for which [arg body] is currently executed. The result of







<
<

















<




<











<




<







635
636
637
638
639
640
641


642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658

659
660
661
662

663
664
665
666
667
668
669
670
671
672
673

674
675
676
677

678
679
680
681
682
683
684

[para]

The table resulting from the join operation is returned as the result
of the command. We use the same representation as described above for
the input [arg table]s.



[call [cmd ::struct::list] [method dbJoinKeyed] [opt [option -inner]|[option -left]|[option -right]|[option -full]] [opt "[option -keys] [arg varname]"] [arg table]...]

The operations performed by this method are the same as described
above for [method dbJoin]. The only difference is in the specification
of the keys to use. Instead of using column indices separate from the
table here the keys are provided within the table itself. The row
elements in each [arg table] are not the lists of column values, but a
two-element list where the second element is the regular list of
column values and the first element is the key to use.

[call [cmd ::struct::list] [method swap] [arg listvar] [arg i] [arg j]]

The subcommand exchanges the elements at the indices [arg i] and
[arg j] in the list stored in the variable named by [arg listvar]. The
list is modified in place, and also returned as the result of the
subcommand.


[call [cmd ::struct::list] [method firstperm] [arg list]]

This subcommand returns the lexicographically first permutation of the
input [arg list].


[call [cmd ::struct::list] [method nextperm] [arg perm]]

This subcommand accepts a permutation of a set of elements (provided
by [arg perm]) and returns the next permutatation in lexicographic
sequence.

[para]
The algorithm used here is by Donal E. Knuth, see section
[sectref REFERENCES] for details.


[call [cmd ::struct::list] [method permutations] [arg list]]

This subcommand returns a list containing all permutations of the
input [arg list] in lexicographic order.


[call [cmd ::struct::list] [method foreachperm] [arg var] [arg list] [arg body]]

This subcommand executes the script [arg body] once for each
permutation of the specified [arg list]. The permutations are visited
in lexicographic order, and the variable [arg var] is set to the
permutation for which [arg body] is currently executed. The result of
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
two files, a quarter of whose lines are blank.  This drawback is
intrinsic to the algorithm used (see the Reference for details).

[para]

One approach to dealing with the performance problem that is sometimes
effective in practice is arbitrarily to exclude elements that appear
more than a certain number of times. 

This number is provided as the [arg maxOccurs] parameter.  If frequent
lines are excluded in this manner, they will not appear in the common
subsequence that is computed; the result will be the longest common
subsequence of infrequent elements.

The procedure [method longestCommonSubsequence2] implements this
heuristic.

It functions as a wrapper around [method longestCommonSubsequence]; it
computes the longest common subsequence of infrequent elements, and
then subdivides the subsequences that lie between the matches to
approximate the true longest common subsequence.


[section {TABLE JOIN}]

This is an operation from relational algebra for relational databases.

[para]








|













<







700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720

721
722
723
724
725
726
727
two files, a quarter of whose lines are blank.  This drawback is
intrinsic to the algorithm used (see the Reference for details).

[para]

One approach to dealing with the performance problem that is sometimes
effective in practice is arbitrarily to exclude elements that appear
more than a certain number of times.

This number is provided as the [arg maxOccurs] parameter.  If frequent
lines are excluded in this manner, they will not appear in the common
subsequence that is computed; the result will be the longest common
subsequence of infrequent elements.

The procedure [method longestCommonSubsequence2] implements this
heuristic.

It functions as a wrapper around [method longestCommonSubsequence]; it
computes the longest common subsequence of infrequent elements, and
then subdivides the subsequences that lie between the matches to
approximate the true longest common subsequence.


[section {TABLE JOIN}]

This is an operation from relational algebra for relational databases.

[para]

750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
an empty row of the right table to fit them into the result.

[enum]

For the right outer join the additional rows are all rows from the right
table for which there is no key in the left table. They are joined to
an empty row of the left table to fit them into the result.


[enum]

The full outer join combines both left and right outer join. In other
words, the additional rows are as defined for left outer join, and
right outer join, combined.








<







754
755
756
757
758
759
760

761
762
763
764
765
766
767
an empty row of the right table to fit them into the result.

[enum]

For the right outer join the additional rows are all rows from the right
table for which there is no key in the left table. They are joined to
an empty row of the left table to fit them into the result.


[enum]

The full outer join combines both left and right outer join. In other
words, the additional rows are as defined for left outer join, and
right outer join, combined.

800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849

    {0 foo}                   {0 bagel}    {0 foo   0 bagel}
    {1 snarf} full outer join {1 snatz}  = {1 snarf 1 snatz}
    {2 blue}                  {3 driver}   {2 blue  {} {}}
                                           {{} {}   3 driver}
}]




[section REFERENCES]

[list_begin enumerated]

[enum]
J. W. Hunt and M. D. McIlroy, "An algorithm for differential 
file comparison," Comp. Sci. Tech. Rep. #41, Bell Telephone 
Laboratories (1976). Available on the Web at the second
author's personal site: [uri http://www.cs.dartmouth.edu/~doug/]

[enum]
Donald E. Knuth, "Fascicle 2b of 'The Art of Computer Programming'
volume 4". Available on the Web at the author's personal site:
[uri http://www-cs-faculty.stanford.edu/~knuth/fasc2b.ps.gz].

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {struct :: list}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords list diff differential comparison common subsequence]
[keywords {longest common subsequence}]
[keywords reverse]
[keywords assign]
[keywords flatten]
[keywords map filter]
[keywords folding reduce]
[keywords equality equal repetition repeating]
[keywords {inner join} {left outer join} {right outer join} {full outer join} {outer join} join]
[keywords swapping permutation {first permutation} {next permutation} {generate permutations}]
[manpage_end]







<
<
<





|
|










<
<
<
<
<
|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<

803
804
805
806
807
808
809



810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826





827

828














829

    {0 foo}                   {0 bagel}    {0 foo   0 bagel}
    {1 snarf} full outer join {1 snatz}  = {1 snarf 1 snatz}
    {2 blue}                  {3 driver}   {2 blue  {} {}}
                                           {{} {}   3 driver}
}]




[section REFERENCES]

[list_begin enumerated]

[enum]
J. W. Hunt and M. D. McIlroy, "An algorithm for differential
file comparison," Comp. Sci. Tech. Rep. #41, Bell Telephone
Laboratories (1976). Available on the Web at the second
author's personal site: [uri http://www.cs.dartmouth.edu/~doug/]

[enum]
Donald E. Knuth, "Fascicle 2b of 'The Art of Computer Programming'
volume 4". Available on the Web at the author's personal site:
[uri http://www-cs-faculty.stanford.edu/~knuth/fasc2b.ps.gz].

[list_end]






[vset CATEGORY {struct :: list}]

[include ../doctools2base/include/feedback.inc]














[manpage_end]

Changes to modules/struct/struct_set.man.

1
2
3










4
5
6
7
8
9
10
[comment {-*- tcl -*- doctools manpage}]
[comment {$Id: struct_set.man,v 1.12 2009/01/29 06:16:20 andreas_kupries Exp $}]
[manpage_begin struct::set n 2.2.3]










[copyright {2004-2008 Andreas Kupries <[email protected]>}]
[moddesc {Tcl Data Structures}]
[titledesc {Procedures for manipulating sets}]
[category  {Data structures}]
[require Tcl 8.0]
[require struct::set [opt 2.2.3]]
[description]



>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[comment {-*- tcl -*- doctools manpage}]
[comment {$Id: struct_set.man,v 1.12 2009/01/29 06:16:20 andreas_kupries Exp $}]
[manpage_begin struct::set n 2.2.3]
[keywords cardinality]
[keywords difference]
[keywords emptiness]
[keywords exclusion]
[keywords inclusion]
[keywords intersection]
[keywords membership]
[keywords set]
[keywords {symmetric difference}]
[keywords union]
[copyright {2004-2008 Andreas Kupries <[email protected]>}]
[moddesc {Tcl Data Structures}]
[titledesc {Procedures for manipulating sets}]
[category  {Data structures}]
[require Tcl 8.0]
[require struct::set [opt 2.2.3]]
[description]
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
[list_begin definitions]

[call [cmd ::struct::set] [method empty] [arg set]]

Returns a boolean value indicating if the [arg set] is
empty ([const true]), or not ([const false]).


[call [cmd ::struct::set] [method size] [arg set]]

Returns an integer number greater than or equal to zero. This is the
number of elements in the [arg set]. In other words, its cardinality.


[call [cmd ::struct::set] [method contains] [arg set] [arg item]]

Returns a boolean value indicating if the [arg set] contains the
element [arg item] ([const true]), or not ([const false]).


[call [cmd ::struct::set] [method union] [opt [arg set1]...]]

Computes the set containing the union of [arg set1], [arg set2],
etc., i.e. "[arg set1] + [arg set2] + ...", and returns this set
as the result of the command.


[call [cmd ::struct::set] [method intersect] [opt [arg set1]...]]

Computes the set containing the intersection of [arg set1],
[arg set2], etc., i.e. "[arg set1] * [arg set2] * ...", and
returns this set as the result of the command.


[call [cmd ::struct::set] [method difference] [arg set1] [arg set2]]

Computes the set containing the difference of [arg set1] and
[arg set2], i.e. ("[arg set1] - [arg set2]") and returns this
set as the result of the command.


[call [cmd ::struct::set] [method symdiff] [arg set1] [arg set2]]

Computes the set containing the symmetric difference of [arg set1] and
[arg set2], i.e. ("([arg set1] - [arg set2]) + ([arg set2] - [arg set1])")
and returns this set as the result of the command.


[call [cmd ::struct::set] [method intersect3] [arg set1] [arg set2]]

This command is a combination of the methods [method intersect] and
[method difference].

It returns a three-element list containing "[arg set1]*[arg set2]",
"[arg set1]-[arg set2]", and "[arg set2]-[arg set1]", in this
order. In other words, the intersection of the two parameter sets, and
their differences.


[call [cmd ::struct::set] [method equal] [arg set1] [arg set2]]

Returns a boolean value indicating if the two sets are equal
([const true]) or not ([const false]).


[call [cmd ::struct::set] [method include] [arg svar] [arg item]]

The element [arg item] is added to the set specified by the variable
name in [arg svar]. The return value of the command is empty. This is
the equivalent of [cmd lappend] for sets. If the variable named by
[arg svar] does not exist it will be created.


[call [cmd ::struct::set] [method exclude] [arg svar] [arg item]]

The element [arg item] is removed from the set specified by the
variable name in [arg svar]. The return value of the command is
empty. This is a near-equivalent of [cmd lreplace] for sets.


[call [cmd ::struct::set] [method add] [arg svar] [arg set]]

All the element of [arg set] are added to the set specified by the
variable name in [arg svar]. The return value of the command is
empty. This is like the method [method include], but for the addition
of a whole set. If the variable named by [arg svar] does not exist it
will be created.


[call [cmd ::struct::set] [method subtract] [arg svar] [arg set]]

All the element of [arg set] are removed from the set specified by the
variable name in [arg svar]. The return value of the command is
empty. This is like the method [method exclude], but for the removal
of a whole set.


[call [cmd ::struct::set] [method subsetof] [arg A] [arg B]]

Returns a boolean value indicating if the set [arg A] is a true
subset of or equal to the set [arg B] ([const true]), or not
([const false]).

[list_end]


[section REFERENCES]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {struct :: set}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords set union intersection difference {symmetric difference}]
[keywords emptiness membership cardinality]
[keywords inclusion exclusion]
[manpage_end]







<




<






<





<







<






<





<











<




<








<





<









<






<









<


<
<
<
<
<
|
<
|
<
<
<
<
<
<
<

40
41
42
43
44
45
46

47
48
49
50

51
52
53
54
55
56

57
58
59
60
61

62
63
64
65
66
67
68

69
70
71
72
73
74

75
76
77
78
79

80
81
82
83
84
85
86
87
88
89
90

91
92
93
94

95
96
97
98
99
100
101
102

103
104
105
106
107

108
109
110
111
112
113
114
115
116

117
118
119
120
121
122

123
124
125
126
127
128
129
130
131

132
133





134

135







136
[list_begin definitions]

[call [cmd ::struct::set] [method empty] [arg set]]

Returns a boolean value indicating if the [arg set] is
empty ([const true]), or not ([const false]).


[call [cmd ::struct::set] [method size] [arg set]]

Returns an integer number greater than or equal to zero. This is the
number of elements in the [arg set]. In other words, its cardinality.


[call [cmd ::struct::set] [method contains] [arg set] [arg item]]

Returns a boolean value indicating if the [arg set] contains the
element [arg item] ([const true]), or not ([const false]).


[call [cmd ::struct::set] [method union] [opt [arg set1]...]]

Computes the set containing the union of [arg set1], [arg set2],
etc., i.e. "[arg set1] + [arg set2] + ...", and returns this set
as the result of the command.


[call [cmd ::struct::set] [method intersect] [opt [arg set1]...]]

Computes the set containing the intersection of [arg set1],
[arg set2], etc., i.e. "[arg set1] * [arg set2] * ...", and
returns this set as the result of the command.


[call [cmd ::struct::set] [method difference] [arg set1] [arg set2]]

Computes the set containing the difference of [arg set1] and
[arg set2], i.e. ("[arg set1] - [arg set2]") and returns this
set as the result of the command.


[call [cmd ::struct::set] [method symdiff] [arg set1] [arg set2]]

Computes the set containing the symmetric difference of [arg set1] and
[arg set2], i.e. ("([arg set1] - [arg set2]) + ([arg set2] - [arg set1])")
and returns this set as the result of the command.


[call [cmd ::struct::set] [method intersect3] [arg set1] [arg set2]]

This command is a combination of the methods [method intersect] and
[method difference].

It returns a three-element list containing "[arg set1]*[arg set2]",
"[arg set1]-[arg set2]", and "[arg set2]-[arg set1]", in this
order. In other words, the intersection of the two parameter sets, and
their differences.


[call [cmd ::struct::set] [method equal] [arg set1] [arg set2]]

Returns a boolean value indicating if the two sets are equal
([const true]) or not ([const false]).


[call [cmd ::struct::set] [method include] [arg svar] [arg item]]

The element [arg item] is added to the set specified by the variable
name in [arg svar]. The return value of the command is empty. This is
the equivalent of [cmd lappend] for sets. If the variable named by
[arg svar] does not exist it will be created.


[call [cmd ::struct::set] [method exclude] [arg svar] [arg item]]

The element [arg item] is removed from the set specified by the
variable name in [arg svar]. The return value of the command is
empty. This is a near-equivalent of [cmd lreplace] for sets.


[call [cmd ::struct::set] [method add] [arg svar] [arg set]]

All the element of [arg set] are added to the set specified by the
variable name in [arg svar]. The return value of the command is
empty. This is like the method [method include], but for the addition
of a whole set. If the variable named by [arg svar] does not exist it
will be created.


[call [cmd ::struct::set] [method subtract] [arg svar] [arg set]]

All the element of [arg set] are removed from the set specified by the
variable name in [arg svar]. The return value of the command is
empty. This is like the method [method exclude], but for the removal
of a whole set.


[call [cmd ::struct::set] [method subsetof] [arg A] [arg B]]

Returns a boolean value indicating if the set [arg A] is a true
subset of or equal to the set [arg B] ([const true]), or not
([const false]).

[list_end]


[section REFERENCES]






[vset CATEGORY {struct :: set}]

[include ../doctools2base/include/feedback.inc]







[manpage_end]

Changes to modules/struct/struct_tree.man.

1
2








3
4
5
6
7
8
9
[comment {-*- tcl -*-}]
[manpage_begin struct::tree n 2.1.1]








[copyright {2002-2004,2012 Andreas Kupries <[email protected]>}]
[moddesc   {Tcl Data Structures}]
[titledesc {Create and manipulate tree objects}]
[category  {Data structures}]
[require Tcl 8.2]
[require struct::tree [opt 2.1.1]]
[require struct::list [opt 1.5]]


>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*-}]
[manpage_begin struct::tree n 2.1.1]
[keywords breadth-first]
[keywords depth-first]
[keywords in-order]
[keywords node]
[keywords post-order]
[keywords pre-order]
[keywords serialization]
[keywords tree]
[copyright {2002-2004,2012 Andreas Kupries <[email protected]>}]
[moddesc   {Tcl Data Structures}]
[titledesc {Create and manipulate tree objects}]
[category  {Data structures}]
[require Tcl 8.2]
[require struct::tree [opt 2.1.1]]
[require struct::list [opt 1.5]]
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
is equivalent to
[para]
[example {
    ::struct::tree mytree
    mytree = b
}]
[para]
and 
[para]
[example {
    ::struct::tree mytree deserialize $b
}]
[para]
is equivalent to
[para]
[example {
    ::struct::tree mytree
    mytree deserialize $b
}]


[call [cmd ::struct::tree::prune]]

This command is provided outside of the tree methods, as it is not a
tree method per se. It however interacts tightly with the method
[method walk]. When used in the walk script it causes the traversal to
ignore the children of the node we are currently at.







|











<







102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120

121
122
123
124
125
126
127
is equivalent to
[para]
[example {
    ::struct::tree mytree
    mytree = b
}]
[para]
and
[para]
[example {
    ::struct::tree mytree deserialize $b
}]
[para]
is equivalent to
[para]
[example {
    ::struct::tree mytree
    mytree deserialize $b
}]


[call [cmd ::struct::tree::prune]]

This command is provided outside of the tree methods, as it is not a
tree method per se. It however interacts tightly with the method
[method walk]. When used in the walk script it causes the traversal to
ignore the children of the node we are currently at.
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209

This operation is in effect equivalent to
[para]
[example_begin]
    [arg treeName] [method deserialize] [lb][arg sourcetree] [method serialize][rb]
[example_end]


[call [arg treeName] [method -->] [arg desttree]]

This is the reverse assignment operator for tree objects. It copies the tree
contained in the tree object [arg treeName] over the tree data in the object
[arg desttree]. The old contents of [arg desttree] are deleted by this
operation.

[para]

This operation is in effect equivalent to
[para]
[example_begin]
    [arg desttree] [method deserialize] [lb][arg treeName] [method serialize][rb]
[example_end]


[call [arg treeName] [method ancestors] [arg node]]

This method extends the method [method parent] and returns a list
containing all ancestor nodes to the specified [arg node]. The
immediate ancestor, in other words, parent node, is the first element
in that list, its parent the second element, and so on until the root
node is reached, making it the last element of the returned list.


[call [arg treeName] [method append] [arg node] [arg key] [arg value]]

Appends a [arg value] to one of the keyed values associated with an
node. Returns the new value given to the attribute [arg key].


[call [arg treeName] [method attr] [arg key]]
[call [arg treeName] [method attr] [arg key] [option -nodes] [arg list]]
[call [arg treeName] [method attr] [arg key] [option -glob] [arg globpattern]]
[call [arg treeName] [method attr] [arg key] [option -regexp] [arg repattern]]

This method retrieves the value of the attribute named [arg key], for







<















<








<




<







172
173
174
175
176
177
178

179
180
181
182
183
184
185
186
187
188
189
190
191
192
193

194
195
196
197
198
199
200
201

202
203
204
205

206
207
208
209
210
211
212

This operation is in effect equivalent to
[para]
[example_begin]
    [arg treeName] [method deserialize] [lb][arg sourcetree] [method serialize][rb]
[example_end]


[call [arg treeName] [method -->] [arg desttree]]

This is the reverse assignment operator for tree objects. It copies the tree
contained in the tree object [arg treeName] over the tree data in the object
[arg desttree]. The old contents of [arg desttree] are deleted by this
operation.

[para]

This operation is in effect equivalent to
[para]
[example_begin]
    [arg desttree] [method deserialize] [lb][arg treeName] [method serialize][rb]
[example_end]


[call [arg treeName] [method ancestors] [arg node]]

This method extends the method [method parent] and returns a list
containing all ancestor nodes to the specified [arg node]. The
immediate ancestor, in other words, parent node, is the first element
in that list, its parent the second element, and so on until the root
node is reached, making it the last element of the returned list.


[call [arg treeName] [method append] [arg node] [arg key] [arg value]]

Appends a [arg value] to one of the keyed values associated with an
node. Returns the new value given to the attribute [arg key].


[call [arg treeName] [method attr] [arg key]]
[call [arg treeName] [method attr] [arg key] [option -nodes] [arg list]]
[call [arg treeName] [method attr] [arg key] [option -glob] [arg globpattern]]
[call [arg treeName] [method attr] [arg key] [option -regexp] [arg repattern]]

This method retrieves the value of the attribute named [arg key], for
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
    tclsh> lsort [mytree children root filter vol]
    0

    tclsh> puts ([lsort [mytree children root filter vgt40]])
    ()
}]


[call [arg treeName] [method cut] [arg node]]

Removes the node specified by [arg node] from the tree, but not its
children.  The children of [arg node] are made children of the parent
of the [arg node], at the index at which [arg node] was located.


[call [arg treeName] [method delete] [arg node] [opt "[arg node] ..."]]

Removes the specified nodes from the tree.  All of the nodes' children
will be removed as well to prevent orphaned nodes.


[call [arg treeName] [method depth] [arg node]]

Return the number of steps from node [arg node] to the root node.


[call [arg treeName] [method descendants] [arg node] [opt "[const filter] [arg cmdprefix]"]]

This method extends the method [method children] and returns a list
containing all nodes descending from [arg node], and passing the
filter, if such was specified.

[para]

This is actually the same as
"[arg treeName] [method children] [option -all]".
[method descendants] should be prefered, and "children -all"
will be deprecated sometime in the future.


[call [arg treeName] [method deserialize] [arg serialization]]

This is the complement to [method serialize]. It replaces tree data in
[arg treeName] with the tree described by the [arg serialization]
value. The old contents of [arg treeName] are deleted by this
operation.


[call [arg treeName] [method destroy]]

Destroy the tree, including its storage space and associated command.


[call [arg treeName] [method exists] [arg node]]

Returns true if the specified node exists in the tree.


[call [arg treeName] [method get] [arg node] [arg key]]

Returns the value associated with the key [arg key] for the node
[arg node].


[call [arg treeName] [method getall] [arg node] [opt [arg pattern]]]

Returns a dictionary (suitable for use with [lb][cmd {array set}][rb])
containing the attribute data for the [arg node].

If the glob [arg pattern] is specified only the attributes whose names
match the pattern will be part of the dictionary.


[call [arg treeName] [method keys] [arg node] [opt [arg pattern]]]

Returns a list of keys for the [arg node].

If the [arg pattern] is specified only the attributes whose names
match the pattern will be part of the returned list. The pattern is a
[cmd glob] pattern.


[call [arg treeName] [method keyexists] [arg node] [arg key]]

Return true if the specified [arg key] exists for the [arg node].


[call [arg treeName] [method index] [arg node]]

Returns the index of [arg node] in its parent's list of children.  For
example, if a node has [term nodeFoo], [term nodeBar], and

[term nodeBaz] as children, in that order, the index of

[term nodeBar] is 1.


[call [arg treeName] [method insert] [arg parent] [arg index] [opt "[arg child] [opt "[arg child] ..."]"]]

Insert one or more nodes into the tree as children of the node

[arg parent]. The nodes will be added in the order they are given. If
[arg parent] is [const root], it refers to the root of the tree. The







<





<






<



<














<







<



<





<




<









<








<



<









<







288
289
290
291
292
293
294

295
296
297
298
299

300
301
302
303
304
305

306
307
308

309
310
311
312
313
314
315
316
317
318
319
320
321
322

323
324
325
326
327
328
329

330
331
332

333
334
335
336
337

338
339
340
341

342
343
344
345
346
347
348
349
350

351
352
353
354
355
356
357
358

359
360
361

362
363
364
365
366
367
368
369
370

371
372
373
374
375
376
377
    tclsh> lsort [mytree children root filter vol]
    0

    tclsh> puts ([lsort [mytree children root filter vgt40]])
    ()
}]


[call [arg treeName] [method cut] [arg node]]

Removes the node specified by [arg node] from the tree, but not its
children.  The children of [arg node] are made children of the parent
of the [arg node], at the index at which [arg node] was located.


[call [arg treeName] [method delete] [arg node] [opt "[arg node] ..."]]

Removes the specified nodes from the tree.  All of the nodes' children
will be removed as well to prevent orphaned nodes.


[call [arg treeName] [method depth] [arg node]]

Return the number of steps from node [arg node] to the root node.


[call [arg treeName] [method descendants] [arg node] [opt "[const filter] [arg cmdprefix]"]]

This method extends the method [method children] and returns a list
containing all nodes descending from [arg node], and passing the
filter, if such was specified.

[para]

This is actually the same as
"[arg treeName] [method children] [option -all]".
[method descendants] should be prefered, and "children -all"
will be deprecated sometime in the future.


[call [arg treeName] [method deserialize] [arg serialization]]

This is the complement to [method serialize]. It replaces tree data in
[arg treeName] with the tree described by the [arg serialization]
value. The old contents of [arg treeName] are deleted by this
operation.


[call [arg treeName] [method destroy]]

Destroy the tree, including its storage space and associated command.


[call [arg treeName] [method exists] [arg node]]

Returns true if the specified node exists in the tree.


[call [arg treeName] [method get] [arg node] [arg key]]

Returns the value associated with the key [arg key] for the node
[arg node].


[call [arg treeName] [method getall] [arg node] [opt [arg pattern]]]

Returns a dictionary (suitable for use with [lb][cmd {array set}][rb])
containing the attribute data for the [arg node].

If the glob [arg pattern] is specified only the attributes whose names
match the pattern will be part of the dictionary.


[call [arg treeName] [method keys] [arg node] [opt [arg pattern]]]

Returns a list of keys for the [arg node].

If the [arg pattern] is specified only the attributes whose names
match the pattern will be part of the returned list. The pattern is a
[cmd glob] pattern.


[call [arg treeName] [method keyexists] [arg node] [arg key]]

Return true if the specified [arg key] exists for the [arg node].


[call [arg treeName] [method index] [arg node]]

Returns the index of [arg node] in its parent's list of children.  For
example, if a node has [term nodeFoo], [term nodeBar], and

[term nodeBaz] as children, in that order, the index of

[term nodeBar] is 1.


[call [arg treeName] [method insert] [arg parent] [arg index] [opt "[arg child] [opt "[arg child] ..."]"]]

Insert one or more nodes into the tree as children of the node

[arg parent]. The nodes will be added in the order they are given. If
[arg parent] is [const root], it refers to the root of the tree. The
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
form [emph node][var x], where [var x] is a number. If names are
specified they must neither contain whitespace nor colons (":").

[para]

The return result from this command is a list of nodes added.


[call [arg treeName] [method isleaf] [arg node]]

Returns true if [arg node] is a leaf of the tree (if [arg node] has no
children), false otherwise.


[call [arg treeName] [method lappend] [arg node] [arg key] [arg value]]

Appends a [arg value] (as a list) to one of the keyed values
associated with an [arg node]. Returns the new value given to the
attribute [arg key].


[call [arg treeName] [method leaves]]

Return a list containing all leaf nodes known to the tree.


[call [arg treeName] [method move] [arg parent] [arg index] [arg node] [opt "[arg node] ..."]]

Make the specified nodes children of [arg parent], inserting them into
the parent's child list at the index given by [arg index]. Note that
the command will take all nodes out of the tree before inserting them
under the new parent, and that it determines the position to place
them into after the removal, before the re-insertion. This behaviour
is important when it comes to moving one or more nodes to a different
index without changing their parent node.


[call [arg treeName] [method next] [arg node] ]

Return the right sibling of [arg node], or the empty string if

[arg node] was the last child of its parent.


[call [arg treeName] [method numchildren] [arg node]]

Return the number of immediate children of [arg node].


[call [arg treeName] [method nodes]]

Return a list containing all nodes known to the tree.


[call [arg treeName] [method parent] [arg node]]

Return the parent of [arg node].


[call [arg treeName] [method previous] [arg node] ]

Return the left sibling of [arg node], or the empty string if

[arg node] was the first child of its parent.


[call [arg treeName] [method rename] [arg node] [arg newname]]

Renames the node [arg node] to [arg newname]. An error is thrown if
either the node does not exist, or a node with name [arg newname] does
exist. The result of the command is the new name of the node.


[call [arg treeName] [method rootname]]

Returns the name of the root node of the tree.


[call [arg treeName] [method serialize] [opt [arg node]]]

This method serializes the sub-tree starting at [arg node]. In other
words it returns a tcl [emph value] completely describing the tree
starting at [arg node].








<




<







<



<











<






<



<





<



<







<






<



<







393
394
395
396
397
398
399

400
401
402
403

404
405
406
407
408
409
410

411
412
413

414
415
416
417
418
419
420
421
422
423
424

425
426
427
428
429
430

431
432
433

434
435
436
437
438

439
440
441

442
443
444
445
446
447
448

449
450
451
452
453
454

455
456
457

458
459
460
461
462
463
464
form [emph node][var x], where [var x] is a number. If names are
specified they must neither contain whitespace nor colons (":").

[para]

The return result from this command is a list of nodes added.


[call [arg treeName] [method isleaf] [arg node]]

Returns true if [arg node] is a leaf of the tree (if [arg node] has no
children), false otherwise.


[call [arg treeName] [method lappend] [arg node] [arg key] [arg value]]

Appends a [arg value] (as a list) to one of the keyed values
associated with an [arg node]. Returns the new value given to the
attribute [arg key].


[call [arg treeName] [method leaves]]

Return a list containing all leaf nodes known to the tree.


[call [arg treeName] [method move] [arg parent] [arg index] [arg node] [opt "[arg node] ..."]]

Make the specified nodes children of [arg parent], inserting them into
the parent's child list at the index given by [arg index]. Note that
the command will take all nodes out of the tree before inserting them
under the new parent, and that it determines the position to place
them into after the removal, before the re-insertion. This behaviour
is important when it comes to moving one or more nodes to a different
index without changing their parent node.


[call [arg treeName] [method next] [arg node] ]

Return the right sibling of [arg node], or the empty string if

[arg node] was the last child of its parent.


[call [arg treeName] [method numchildren] [arg node]]

Return the number of immediate children of [arg node].


[call [arg treeName] [method nodes]]

Return a list containing all nodes known to the tree.


[call [arg treeName] [method parent] [arg node]]

Return the parent of [arg node].


[call [arg treeName] [method previous] [arg node] ]

Return the left sibling of [arg node], or the empty string if

[arg node] was the first child of its parent.


[call [arg treeName] [method rename] [arg node] [arg newname]]

Renames the node [arg node] to [arg newname]. An error is thrown if
either the node does not exist, or a node with name [arg newname] does
exist. The result of the command is the new name of the node.


[call [arg treeName] [method rootname]]

Returns the name of the root node of the tree.


[call [arg treeName] [method serialize] [opt [arg node]]]

This method serializes the sub-tree starting at [arg node]. In other
words it returns a tcl [emph value] completely describing the tree
starting at [arg node].

547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
 is

 {root {} {} a 0 {} d 3 {} e 3 {} b 0 {} c 0 {}}

 The above assumes that none of the nodes have attributes.
}]



[call [arg treeName] [method set] [arg node] [arg key] [opt [arg value]]]

Set or get one of the keyed values associated with a node. A node may
have any number of keyed values associated with it.  If [arg value] is
not specified, this command returns the current value assigned to the
key; if [arg value] is specified, this command assigns that value to
the key, and returns it.


[call [arg treeName] [method size] [opt [arg node]]]


Return a count of the number of descendants of the node [arg node]; if
no node is specified, [const root] is assumed.


[call [arg treeName] [method splice] [arg parent] [arg from] [opt [arg to]] [opt [arg child]]]

Insert a node named [arg child] into the tree as a child of the node
[arg parent]. If [arg parent] is [const root], it refers to the root
of the tree. The new node will be added to the parent node's child
list at the index given by [arg from].  The children of [arg parent]
which are in the range of the indices [arg from] and [arg to] are made
children of [arg child].  If the value of [arg to] is not specified it
defaults to [const end].  If no name is given for [arg child], a name
will be generated for the new node.  The generated name is of the form
[emph node][var x], where [var x] is a number.  The return result
from this command is the name of the new node.

[para]

The arguments [arg from] and [arg to] are regular list indices, i.e.
the form "end-[var n]" is accepted as well.


[call [arg treeName] [method swap] [arg node1] [arg node2]]

Swap the position of [arg node1] and [arg node2] in the tree.


[call [arg treeName] [method unset] [arg node] [arg key]]

Removes a keyed value from the node [arg node]. The method will do
nothing if the [arg key] does not exist.


[call [arg treeName] [method walk] [arg node] [opt "[option -order] [arg order]"] [opt "[option -type] [arg type]"] [arg loopvar] [arg script]]

Perform a breadth-first or depth-first walk of the tree starting at
the node [arg node].  The type of walk, breadth-first or depth-first,
is determined by the value of [arg type]; [const bfs] indicates
breadth-first, [const dfs] indicates depth-first.  Depth-first is the







<
<








<

<



<



















<



<





<







525
526
527
528
529
530
531


532
533
534
535
536
537
538
539

540

541
542
543

544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562

563
564
565

566
567
568
569
570

571
572
573
574
575
576
577
 is

 {root {} {} a 0 {} d 3 {} e 3 {} b 0 {} c 0 {}}

 The above assumes that none of the nodes have attributes.
}]



[call [arg treeName] [method set] [arg node] [arg key] [opt [arg value]]]

Set or get one of the keyed values associated with a node. A node may
have any number of keyed values associated with it.  If [arg value] is
not specified, this command returns the current value assigned to the
key; if [arg value] is specified, this command assigns that value to
the key, and returns it.


[call [arg treeName] [method size] [opt [arg node]]]


Return a count of the number of descendants of the node [arg node]; if
no node is specified, [const root] is assumed.


[call [arg treeName] [method splice] [arg parent] [arg from] [opt [arg to]] [opt [arg child]]]

Insert a node named [arg child] into the tree as a child of the node
[arg parent]. If [arg parent] is [const root], it refers to the root
of the tree. The new node will be added to the parent node's child
list at the index given by [arg from].  The children of [arg parent]
which are in the range of the indices [arg from] and [arg to] are made
children of [arg child].  If the value of [arg to] is not specified it
defaults to [const end].  If no name is given for [arg child], a name
will be generated for the new node.  The generated name is of the form
[emph node][var x], where [var x] is a number.  The return result
from this command is the name of the new node.

[para]

The arguments [arg from] and [arg to] are regular list indices, i.e.
the form "end-[var n]" is accepted as well.


[call [arg treeName] [method swap] [arg node1] [arg node2]]

Swap the position of [arg node1] and [arg node2] in the tree.


[call [arg treeName] [method unset] [arg node] [arg key]]

Removes a keyed value from the node [arg node]. The method will do
nothing if the [arg key] does not exist.


[call [arg treeName] [method walk] [arg node] [opt "[option -order] [arg order]"] [opt "[option -type] [arg type]"] [arg loopvar] [arg script]]

Perform a breadth-first or depth-first walk of the tree starting at
the node [arg node].  The type of walk, breadth-first or depth-first,
is determined by the value of [arg type]; [const bfs] indicates
breadth-first, [const dfs] indicates depth-first.  Depth-first is the
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710

Note the command [cmd ::struct::tree::prune]. This command can be used
in the walk script to force the command to ignore the children of the
node we are currently at. It will throw an error if the order of
traversal is either [const post] or [const in] as these modes visit
the children before their parent, making pruning non-sensical.


[call [arg treeName] [method walkproc] [arg node] [opt "[option -order] [arg order]"] [opt "[option -type] [arg type]"] [arg cmdprefix]]

This method is like method [method walk] in all essentials, except the
interface to the user code. This method invokes a command prefix with
three additional arguments (tree, node, and action), instead of
evaluating a script and passing the node via a loop variable.


[list_end]

[subsection {Changes for 2.0}]

The following noteworthy changes have occurred:








<






<







659
660
661
662
663
664
665

666
667
668
669
670
671

672
673
674
675
676
677
678

Note the command [cmd ::struct::tree::prune]. This command can be used
in the walk script to force the command to ignore the children of the
node we are currently at. It will throw an error if the order of
traversal is either [const post] or [const in] as these modes visit
the children before their parent, making pruning non-sensical.


[call [arg treeName] [method walkproc] [arg node] [opt "[option -order] [arg order]"] [opt "[option -type] [arg type]"] [arg cmdprefix]]

This method is like method [method walk] in all essentials, except the
interface to the user code. This method invokes a command prefix with
three additional arguments (tree, node, and action), instead of
evaluating a script and passing the node via a loop variable.


[list_end]

[subsection {Changes for 2.0}]

The following noteworthy changes have occurred:

755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
documentation on the construction of tree objects.

[para]

Beyond the copying of whole tree objects these new API's also enable
the transfer of tree objects over arbitrary channels and for easy
persistence.


[enum]

The walker API has been streamlined and made more similar to the
command [cmd foreach]. In detail:

[list_begin itemized]







<







723
724
725
726
727
728
729

730
731
732
733
734
735
736
documentation on the construction of tree objects.

[para]

Beyond the copying of whole tree objects these new API's also enable
the transfer of tree objects over arbitrary channels and for easy
persistence.


[enum]

The walker API has been streamlined and made more similar to the
command [cmd foreach]. In detail:

[list_begin itemized]
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
    mytree insert root end 1 2 ; # Ditto nodes 1 & 2
    mytree insert 0    end 3   ; # Now create node 3 as child of node 0
    mytree insert 0    end     ; # Create another child of 0, with a
    #                              generated name. The name is returned
    #                              as the result of the command.
}]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {struct :: tree}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords tree serialization node pre-order post-order in-order depth-first breadth-first]
[manpage_end]







<
<
<
<
<
|
<
|
<
<
<
<
<

783
784
785
786
787
788
789





790

791





792
    mytree insert root end 1 2 ; # Ditto nodes 1 & 2
    mytree insert 0    end 3   ; # Now create node 3 as child of node 0
    mytree insert 0    end     ; # Create another child of 0, with a
    #                              generated name. The name is returned
    #                              as the result of the command.
}]






[vset CATEGORY {struct :: tree}]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/struct/struct_tree1.man.

1
2

3
4
5
6
7
8
9
[comment {-*- tcl -*-}]
[manpage_begin {struct::tree_v1} n 1.2.2]

[copyright {2002 Andreas Kupries <[email protected]>}]
[moddesc   {Tcl Data Structures}]
[titledesc {Create and manipulate tree objects}]
[category  {Data structures}]
[require Tcl 8.2]
[require struct::tree [opt 1.2.2]]
[description]


>







1
2
3
4
5
6
7
8
9
10
[comment {-*- tcl -*-}]
[manpage_begin {struct::tree_v1} n 1.2.2]
[keywords tree]
[copyright {2002 Andreas Kupries <[email protected]>}]
[moddesc   {Tcl Data Structures}]
[titledesc {Create and manipulate tree objects}]
[category  {Data structures}]
[require Tcl 8.2]
[require struct::tree [opt 1.2.2]]
[description]
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
[enum] Each node of a tree has a separate collection of attributes and
values. This is like an array where every value is a dictionary.

[list_end]

[para]


The following commands are possible for tree objects:

[list_begin definitions]

[call [arg treeName] [method append] [arg node] [opt "-key [arg key]"] [arg value]]

Appends a [arg value] to one of the keyed values associated with an
node. If no [arg key] is specified, the key [const data] is assumed.


[call [arg treeName] [method children] [arg node]]

Return a list of the children of [arg node].


[call [arg treeName] [method cut] [arg node]]

Removes the node specified by [arg node] from the tree, but not its
children.  The children of [arg node] are made children of the parent
of the [arg node], at the index at which [arg node] was located.


[call [arg treeName] [method delete] [arg node] [opt "[arg node] ..."]]

Removes the specified nodes from the tree.  All of the nodes' children
will be removed as well to prevent orphaned nodes.


[call [arg treeName] [method depth] [arg node]]

Return the number of steps from node [arg node] to the root node.


[call [arg treeName] [method destroy]]

Destroy the tree, including its storage space and associated command.


[call [arg treeName] [method exists] [arg node]]

Returns true if the specified node exists in the tree.


[call [arg treeName] [method get] [arg node] [opt "[option -key] [arg key]"]]

Return the value associated with the key [arg key] for the node

[arg node]. If no key is specified, the key [const data] is assumed.

[call [arg treeName] [method getall] [arg node]]

Returns a serialized list of key/value pairs (suitable for use with
[lb][cmd {array set}][rb]) for the [arg node].


[call [arg treeName] [method keys] [arg node]]

Returns a list of keys for the [arg node].


[call [arg treeName] [method keyexists] [arg node] [opt "-key [arg key]"]]

Return true if the specified [arg key] exists for the [arg node]. If
no [arg key] is specified, the key [const data] is assumed.


[call [arg treeName] [method index] [arg node]]

Returns the index of [arg node] in its parent's list of children.  For
example, if a node has [term nodeFoo], [term nodeBar], and

[term nodeBaz] as children, in that order, the index of

[term nodeBar] is 1.


[call [arg treeName] [method insert] [arg parent] [arg index] [opt "[arg child] [opt "[arg child] ..."]"]]

Insert one or more nodes into the tree as children of the node

[arg parent]. The nodes will be added in the order they are given. If
[arg parent] is [const root], it refers to the root of the tree. The







<









<



<







<




<





<




<



<












<



<





<









<







52
53
54
55
56
57
58

59
60
61
62
63
64
65
66
67

68
69
70

71
72
73
74
75
76
77

78
79
80
81

82
83
84
85
86

87
88
89
90

91
92
93

94
95
96
97
98
99
100
101
102
103
104
105

106
107
108

109
110
111
112
113

114
115
116
117
118
119
120
121
122

123
124
125
126
127
128
129
[enum] Each node of a tree has a separate collection of attributes and
values. This is like an array where every value is a dictionary.

[list_end]

[para]


The following commands are possible for tree objects:

[list_begin definitions]

[call [arg treeName] [method append] [arg node] [opt "-key [arg key]"] [arg value]]

Appends a [arg value] to one of the keyed values associated with an
node. If no [arg key] is specified, the key [const data] is assumed.


[call [arg treeName] [method children] [arg node]]

Return a list of the children of [arg node].


[call [arg treeName] [method cut] [arg node]]

Removes the node specified by [arg node] from the tree, but not its
children.  The children of [arg node] are made children of the parent
of the [arg node], at the index at which [arg node] was located.


[call [arg treeName] [method delete] [arg node] [opt "[arg node] ..."]]

Removes the specified nodes from the tree.  All of the nodes' children
will be removed as well to prevent orphaned nodes.


[call [arg treeName] [method depth] [arg node]]

Return the number of steps from node [arg node] to the root node.


[call [arg treeName] [method destroy]]

Destroy the tree, including its storage space and associated command.


[call [arg treeName] [method exists] [arg node]]

Returns true if the specified node exists in the tree.


[call [arg treeName] [method get] [arg node] [opt "[option -key] [arg key]"]]

Return the value associated with the key [arg key] for the node

[arg node]. If no key is specified, the key [const data] is assumed.

[call [arg treeName] [method getall] [arg node]]

Returns a serialized list of key/value pairs (suitable for use with
[lb][cmd {array set}][rb]) for the [arg node].


[call [arg treeName] [method keys] [arg node]]

Returns a list of keys for the [arg node].


[call [arg treeName] [method keyexists] [arg node] [opt "-key [arg key]"]]

Return true if the specified [arg key] exists for the [arg node]. If
no [arg key] is specified, the key [const data] is assumed.


[call [arg treeName] [method index] [arg node]]

Returns the index of [arg node] in its parent's list of children.  For
example, if a node has [term nodeFoo], [term nodeBar], and

[term nodeBaz] as children, in that order, the index of

[term nodeBar] is 1.


[call [arg treeName] [method insert] [arg parent] [arg index] [opt "[arg child] [opt "[arg child] ..."]"]]

Insert one or more nodes into the tree as children of the node

[arg parent]. The nodes will be added in the order they are given. If
[arg parent] is [const root], it refers to the root of the tree. The
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
form [emph node][var x], where [var x] is a number. If names are
specified they must neither contain whitespace nor colons (":").

[para]

The return result from this command is a list of nodes added.


[call [arg treeName] [method isleaf] [arg node]]

Returns true if [arg node] is a leaf of the tree (if [arg node] has no
children), false otherwise.


[call [arg treeName] [method lappend] [arg node] [opt "-key [arg key]"] [arg value]]

Appends a [arg value] (as a list) to one of the keyed values
associated with an [arg node]. If no [arg key] is specified, the key
[const data] is assumed.


[call [arg treeName] [method move] [arg parent] [arg index] [arg node] [opt "[arg node] ..."]]

Make the specified nodes children of [arg parent], inserting them into
the parent's child list at the index given by [arg index]. Note that
the command will take all nodes out of the tree before inserting them
under the new parent, and that it determines the position to place
them into after the removal, before the re-insertion. This behaviour
is important when it comes to moving one or more nodes to a different
index without changing their parent node.

[call [arg treeName] [method next] [arg node] ]

Return the right sibling of [arg node], or the empty string if

[arg node] was the last child of its parent.


[call [arg treeName] [method numchildren] [arg node]]

Return the number of immediate children of [arg node].


[call [arg treeName] [method parent] [arg node]]

Return the parent of [arg node].


[call [arg treeName] [method previous] [arg node] ]

Return the left sibling of [arg node], or the empty string if

[arg node] was the first child of its parent.


[call [arg treeName] [method set] [arg node] [opt "[option -key] [arg key]"] [opt [arg value]]]

Set or get one of the keyed values associated with a node. If no key
is specified, the key [const data] is assumed.  Each node that is
added to a tree has the value "" assigned to the key [const data]
automatically.  A node may have any number of keyed values associated
with it.  If [arg value] is not specified, this command returns the
current value assigned to the key; if [arg value] is specified, this
command assigns that value to the key.


[call [arg treeName] [method size] [opt [arg node]]]


Return a count of the number of descendants of the node [arg node]; if
no node is specified, [const root] is assumed.


[call [arg treeName] [method splice] [arg parent] [arg from] [opt [arg to]] [opt [arg child]]]

Insert a node named [arg child] into the tree as a child of the node
[arg parent]. If [arg parent] is [const root], it refers to the root
of the tree. The new node will be added to the parent node's child
list at the index given by [arg from].  The children of [arg parent]
which are in the range of the indices [arg from] and [arg to] are made
children of [arg child].  If the value of [arg to] is not specified it
defaults to [const end].  If no name is given for [arg child], a name
will be generated for the new node.  The generated name is of the form
[emph node][var x], where [var x] is a number.  The return result
from this command is the name of the new node.


[call [arg treeName] [method swap] [arg node1] [arg node2]]

Swap the position of [arg node1] and [arg node2] in the tree.


[call [arg treeName] [method unset] [arg node] [opt "[option -key] [arg key]"]]

Removes a keyed value from the node [arg node].  If no key is
specified, the key [const data] is assumed.


[call [arg treeName] [method walk] [arg node] [opt "[option -order] [arg order]"] [opt "[option -type] [arg type]"] [option -command] [arg cmd]]

Perform a breadth-first or depth-first walk of the tree starting at
the node [arg node].  The type of walk, breadth-first or depth-first,
is determined by the value of [arg type]; [const bfs] indicates
breadth-first, [const dfs] indicates depth-first.  Depth-first is the







<




<






<

















<




<



<






<











<

<



<














<



<





<







144
145
146
147
148
149
150

151
152
153
154

155
156
157
158
159
160

161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177

178
179
180
181

182
183
184

185
186
187
188
189
190

191
192
193
194
195
196
197
198
199
200
201

202

203
204
205

206
207
208
209
210
211
212
213
214
215
216
217
218
219

220
221
222

223
224
225
226
227

228
229
230
231
232
233
234
form [emph node][var x], where [var x] is a number. If names are
specified they must neither contain whitespace nor colons (":").

[para]

The return result from this command is a list of nodes added.


[call [arg treeName] [method isleaf] [arg node]]

Returns true if [arg node] is a leaf of the tree (if [arg node] has no
children), false otherwise.


[call [arg treeName] [method lappend] [arg node] [opt "-key [arg key]"] [arg value]]

Appends a [arg value] (as a list) to one of the keyed values
associated with an [arg node]. If no [arg key] is specified, the key
[const data] is assumed.


[call [arg treeName] [method move] [arg parent] [arg index] [arg node] [opt "[arg node] ..."]]

Make the specified nodes children of [arg parent], inserting them into
the parent's child list at the index given by [arg index]. Note that
the command will take all nodes out of the tree before inserting them
under the new parent, and that it determines the position to place
them into after the removal, before the re-insertion. This behaviour
is important when it comes to moving one or more nodes to a different
index without changing their parent node.

[call [arg treeName] [method next] [arg node] ]

Return the right sibling of [arg node], or the empty string if

[arg node] was the last child of its parent.


[call [arg treeName] [method numchildren] [arg node]]

Return the number of immediate children of [arg node].


[call [arg treeName] [method parent] [arg node]]

Return the parent of [arg node].


[call [arg treeName] [method previous] [arg node] ]

Return the left sibling of [arg node], or the empty string if

[arg node] was the first child of its parent.


[call [arg treeName] [method set] [arg node] [opt "[option -key] [arg key]"] [opt [arg value]]]

Set or get one of the keyed values associated with a node. If no key
is specified, the key [const data] is assumed.  Each node that is
added to a tree has the value "" assigned to the key [const data]
automatically.  A node may have any number of keyed values associated
with it.  If [arg value] is not specified, this command returns the
current value assigned to the key; if [arg value] is specified, this
command assigns that value to the key.


[call [arg treeName] [method size] [opt [arg node]]]


Return a count of the number of descendants of the node [arg node]; if
no node is specified, [const root] is assumed.


[call [arg treeName] [method splice] [arg parent] [arg from] [opt [arg to]] [opt [arg child]]]

Insert a node named [arg child] into the tree as a child of the node
[arg parent]. If [arg parent] is [const root], it refers to the root
of the tree. The new node will be added to the parent node's child
list at the index given by [arg from].  The children of [arg parent]
which are in the range of the indices [arg from] and [arg to] are made
children of [arg child].  If the value of [arg to] is not specified it
defaults to [const end].  If no name is given for [arg child], a name
will be generated for the new node.  The generated name is of the form
[emph node][var x], where [var x] is a number.  The return result
from this command is the name of the new node.


[call [arg treeName] [method swap] [arg node1] [arg node2]]

Swap the position of [arg node1] and [arg node2] in the tree.


[call [arg treeName] [method unset] [arg node] [opt "[option -key] [arg key]"]]

Removes a keyed value from the node [arg node].  If no key is
specified, the key [const data] is assumed.


[call [arg treeName] [method walk] [arg node] [opt "[option -order] [arg order]"] [opt "[option -type] [arg type]"] [option -command] [arg cmd]]

Perform a breadth-first or depth-first walk of the tree starting at
the node [arg node].  The type of walk, breadth-first or depth-first,
is determined by the value of [arg type]; [const bfs] indicates
breadth-first, [const dfs] indicates depth-first.  Depth-first is the
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
walk, the command will be evaluated twice for each node; the action is
[const enter] for the first evaluation, and [const leave] for the
second.

[list_end]
[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {struct :: tree}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords tree]
[manpage_end]







<
<
<
<
<
|
<
|
<
<
<
<
<

283
284
285
286
287
288
289





290

291





292
walk, the command will be evaluated twice for each node; the action is
[const enter] for the first evaluation, and [const leave] for the
second.

[list_end]
[list_end]






[vset CATEGORY {struct :: tree}]

[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/tar/tar.man.

1
2



3
4
5
6
7
8
9
10
11
12
13
14
15
16
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tar n 0.7]



[moddesc   {Tar file handling}]
[titledesc {Tar file creation, extraction & manipulation}]
[category  {File formats}]
[require Tcl 8.4]
[require tar [opt 0.7]]
[description]


[para]

[list_begin definitions]

[call [cmd ::tar::contents] [arg tarball] [opt [option -chan]]]



>
>
>






<







1
2
3
4
5
6
7
8
9
10
11

12
13
14
15
16
17
18
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tar n 0.7]
[keywords archive]
[keywords {tape archive}]
[keywords tar]
[moddesc   {Tar file handling}]
[titledesc {Tar file creation, extraction & manipulation}]
[category  {File formats}]
[require Tcl 8.4]
[require tar [opt 0.7]]
[description]


[para]

[list_begin definitions]

[call [cmd ::tar::contents] [arg tarball] [opt [option -chan]]]

34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
foo.jpg {mode 0644 uid 1000 gid 0 size 7580 mtime 811903867 type file linkname {} uname user gname wheel devmajor 0 devminor 0}
}]

[para]
If the option [option -chan] is present [arg tarball] is interpreted as an open channel.
It is assumed that the channel was opened for reading, and configured for binary input.
The command will [emph not] close the channel.


[call [cmd ::tar::untar] [arg tarball] [arg args]]

Extracts [arg tarball]. [arg -file] and [arg -glob] limit the extraction
to files which exactly match or pattern match the given argument. No error is
thrown if no files match. Returns a list of filenames extracted and the file
size. The size will be null for non regular files. Leading path seperators are







<







36
37
38
39
40
41
42

43
44
45
46
47
48
49
foo.jpg {mode 0644 uid 1000 gid 0 size 7580 mtime 811903867 type file linkname {} uname user gname wheel devmajor 0 devminor 0}
}]

[para]
If the option [option -chan] is present [arg tarball] is interpreted as an open channel.
It is assumed that the channel was opened for reading, and configured for binary input.
The command will [emph not] close the channel.


[call [cmd ::tar::untar] [arg tarball] [arg args]]

Extracts [arg tarball]. [arg -file] and [arg -glob] limit the extraction
to files which exactly match or pattern match the given argument. No error is
thrown if no files match. Returns a list of filenames extracted and the file
size. The size will be null for non regular files. Leading path seperators are
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
}]

[para]
If the option [option -chan] is present [arg tarball] is interpreted as an open channel.
It is assumed that the channel was opened for reading, and configured for binary input.
The command will [emph not] close the channel.


[call [cmd ::tar::create] [arg tarball] [arg files] [arg args]]

Creates a new tar file containing the [arg files]. [arg files] must be specified
as a single argument which is a proper list of filenames.

[list_begin options]
[opt_def -dereference]







<







91
92
93
94
95
96
97

98
99
100
101
102
103
104
}]

[para]
If the option [option -chan] is present [arg tarball] is interpreted as an open channel.
It is assumed that the channel was opened for reading, and configured for binary input.
The command will [emph not] close the channel.


[call [cmd ::tar::create] [arg tarball] [arg files] [arg args]]

Creates a new tar file containing the [arg files]. [arg files] must be specified
as a single argument which is a proper list of filenames.

[list_begin options]
[opt_def -dereference]
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174

[list_begin options]
[opt_def -dereference]
Normally [cmd add] will store links as an actual link pointing at a file that may
or may not exist in the archive. Specifying this option will cause the actual file point to
 by the link to be stored instead.
[opt_def -prefix string]
Normally [cmd add] will store files under exactly the name specified as 
argument. Specifying a [opt -prefix] causes the [arg string] to be 
prepended to every name.
[opt_def -quick]
The only sure way to find the position in the [arg tarball] where new 
files can be added is to read it from start, but if [arg tarball] was 
written with a "blocksize" of 1 (as this package does) then one can 
alternatively find this position by seeking from the end. The 
[opt -quick] option tells [cmd add] to do the latter.
[list_end]
[para]

[call [cmd ::tar::remove] [arg tarball] [arg files]]

Removes [arg files] from the [arg tarball]. No error will result if the file does not exist in the
tarball. Directory write permission and free disk space equivalent to at least the size of the tarball
will be needed.

[example {
% ::tar::remove new.tar {file2 file3}
% ::tar::contents new.tar
file3
}]

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph tar] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords tar {tape archive} archive]
[manpage_end]







|
|


|
|
|
|


















|
<
|
<
<
<
<
<
<
<
<
<
<
<

127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160

161











162

[list_begin options]
[opt_def -dereference]
Normally [cmd add] will store links as an actual link pointing at a file that may
or may not exist in the archive. Specifying this option will cause the actual file point to
 by the link to be stored instead.
[opt_def -prefix string]
Normally [cmd add] will store files under exactly the name specified as
argument. Specifying a [opt -prefix] causes the [arg string] to be
prepended to every name.
[opt_def -quick]
The only sure way to find the position in the [arg tarball] where new
files can be added is to read it from start, but if [arg tarball] was
written with a "blocksize" of 1 (as this package does) then one can
alternatively find this position by seeking from the end. The
[opt -quick] option tells [cmd add] to do the latter.
[list_end]
[para]

[call [cmd ::tar::remove] [arg tarball] [arg files]]

Removes [arg files] from the [arg tarball]. No error will result if the file does not exist in the
tarball. Directory write permission and free disk space equivalent to at least the size of the tarball
will be needed.

[example {
% ::tar::remove new.tar {file2 file3}
% ::tar::contents new.tar
file3
}]

[list_end]

[vset CATEGORY tar]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/tepam/tepam_argument_dialogbox.man.

1




2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[manpage_begin tepam::argument_dialogbox n 0.4.1]




[copyright {2009/2010, Andreas Drollinger}]
[moddesc   {Tcl's Enhanced Procedure and Argument Manager}]
[titledesc {TEPAM argument_dialogbox, reference manual}]
[category  {Argument entry form, mega widget}]
[require Tcl 8.3]
[require Tk 8.3]
[require tepam [opt 0.4]]

[description]


[section "ARGUMENT DIALOGBOX CALL"]

TEPAM's [cmd argument_dialogbox] is a flexible and easily usable data entry form generator. Each data entry element of a form is defined via a [emph {data entry item}] that can be provided to [cmd argument_dialogbox] in two formats:

[list_begin definitions]
[call [cmd tepam::argument_dialogbox] [arg "item_name item_attributes [opt {item_name item_attributes}] [opt {...}]"]]

>
>
>
>









<







1
2
3
4
5
6
7
8
9
10
11
12
13
14

15
16
17
18
19
20
21
[manpage_begin tepam::argument_dialogbox n 0.4.1]
[see_also tepam(n)]
[see_also tepam::procedure(n)]
[keywords {data entry form}]
[keywords {parameter entry form}]
[copyright {2009/2010, Andreas Drollinger}]
[moddesc   {Tcl's Enhanced Procedure and Argument Manager}]
[titledesc {TEPAM argument_dialogbox, reference manual}]
[category  {Argument entry form, mega widget}]
[require Tcl 8.3]
[require Tk 8.3]
[require tepam [opt 0.4]]

[description]


[section "ARGUMENT DIALOGBOX CALL"]

TEPAM's [cmd argument_dialogbox] is a flexible and easily usable data entry form generator. Each data entry element of a form is defined via a [emph {data entry item}] that can be provided to [cmd argument_dialogbox] in two formats:

[list_begin definitions]
[call [cmd tepam::argument_dialogbox] [arg "item_name item_attributes [opt {item_name item_attributes}] [opt {...}]"]]
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
   ...
   [cmd -checkbutton] {[arg {-label "Don't use highways" -variable no_highway}]} [cmd \}][rb][example_end]

[list_end]

The commands [cmd argument_dialogbox] as well as [cmd procedure] are exported from the namespace [namespace tepam]. To use these commands without the [namespace tepam::] namespace prefix, it is sufficient to import them into the main namespace:
[example_begin][cmd {namespace import tepam::*}]
 
set DialogResult [lb][cmd argument_dialogbox] \
   -title "Itinerary selection"
   ...[example_end]

The following subsections explain the different argument item types that are accepted by the [cmd argument_dialogbox], classified into three groups. The first data entry item definition format will be used in the remaining document, knowing that this format can always be transformed into the second format by putting all arguments into a single list that is then provided to [cmd argument_dialogbox].

[subsection "Context Definition Items"]







|







54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
   ...
   [cmd -checkbutton] {[arg {-label "Don't use highways" -variable no_highway}]} [cmd \}][rb][example_end]

[list_end]

The commands [cmd argument_dialogbox] as well as [cmd procedure] are exported from the namespace [namespace tepam]. To use these commands without the [namespace tepam::] namespace prefix, it is sufficient to import them into the main namespace:
[example_begin][cmd {namespace import tepam::*}]

set DialogResult [lb][cmd argument_dialogbox] \
   -title "Itinerary selection"
   ...[example_end]

The following subsections explain the different argument item types that are accepted by the [cmd argument_dialogbox], classified into three groups. The first data entry item definition format will be used in the remaining document, knowing that this format can always be transformed into the second format by putting all arguments into a single list that is then provided to [cmd argument_dialogbox].

[subsection "Context Definition Items"]
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256

[def "-listbox [arg list]"]
In contrast to the combo box, the list box is always displayed by the [arg listbox] entry widget. Only one element is selectable unless the [arg -multiple_selection] attribute is set. The list box height can be selected with the [arg -height] attribute. If the height is not explicitly defined, the list box height is automatically adapted to the argument dialog box' size.
The first example uses a variable to define the available choices:

[example_begin]set set AvailableSizes
for {set k 0} {$k<16} {incr k} {lappend AvailableSizes [lb]expr 1<<$k[rb]}
 
tepam::argument_dialogbox \
   [cmd -listbox] {-label "Distance" -variable Distance \
             -choicevariable AvailableSizes -default 6 -height 5}[example_end]

Here is a multi-element selection example. Please note that also the default selection can contain multiple elements:

[example_begin]tepam::argument_dialogbox \







|







245
246
247
248
249
250
251
252
253
254
255
256
257
258
259

[def "-listbox [arg list]"]
In contrast to the combo box, the list box is always displayed by the [arg listbox] entry widget. Only one element is selectable unless the [arg -multiple_selection] attribute is set. The list box height can be selected with the [arg -height] attribute. If the height is not explicitly defined, the list box height is automatically adapted to the argument dialog box' size.
The first example uses a variable to define the available choices:

[example_begin]set set AvailableSizes
for {set k 0} {$k<16} {incr k} {lappend AvailableSizes [lb]expr 1<<$k[rb]}

tepam::argument_dialogbox \
   [cmd -listbox] {-label "Distance" -variable Distance \
             -choicevariable AvailableSizes -default 6 -height 5}[example_end]

Here is a multi-element selection example. Please note that also the default selection can contain multiple elements:

[example_begin]tepam::argument_dialogbox \
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
   -entry {-label "Street number" -variable start_street_nbr -type integer [cmd {-optional 1}]} \[example_end]

[def "-type [arg string]"]
If the data type is defined with the [arg -type] attribute the argument dialog box will automatically perform a data type check after acknowledging the entered values and before the dialog box is closed. If a type incompatible value is found an error message box appears and the user can correct the value.
[para]
The argument dialog box accepts all types that have been specified by the TEPAM package and that are also used by [cmd tepam::procedure] (see the [emph {tepam::procedure reference manual}]).
[para]
Some entry widgets like the file and directory widgets, as well as the color and font widgets are specifying automatically the default data type if no type has been specified explicitly with the [arg -type] attribute. 
[example_begin]tepam::argument_dialogbox \
   [cmd -entry] {-label "Street number" -variable start_street_nbr [cmd {-type integer}]} \[example_end]

[def "-range [arg string]"]
Values can be constrained with the [arg -range] attribute. The valid range is defined with a list containing the minimum valid value and a maximum valid value.
[para]
The [arg -range] attribute has to be used only for numerical arguments, like integers and doubles.







|







365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
   -entry {-label "Street number" -variable start_street_nbr -type integer [cmd {-optional 1}]} \[example_end]

[def "-type [arg string]"]
If the data type is defined with the [arg -type] attribute the argument dialog box will automatically perform a data type check after acknowledging the entered values and before the dialog box is closed. If a type incompatible value is found an error message box appears and the user can correct the value.
[para]
The argument dialog box accepts all types that have been specified by the TEPAM package and that are also used by [cmd tepam::procedure] (see the [emph {tepam::procedure reference manual}]).
[para]
Some entry widgets like the file and directory widgets, as well as the color and font widgets are specifying automatically the default data type if no type has been specified explicitly with the [arg -type] attribute.
[example_begin]tepam::argument_dialogbox \
   [cmd -entry] {-label "Street number" -variable start_street_nbr [cmd {-type integer}]} \[example_end]

[def "-range [arg string]"]
Values can be constrained with the [arg -range] attribute. The valid range is defined with a list containing the minimum valid value and a maximum valid value.
[para]
The [arg -range] attribute has to be used only for numerical arguments, like integers and doubles.
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
All widgets containing a selection list ([cmd -listbox], [cmd -disjointlistbox], [cmd -font]) as well as the multi line [cmd -text] widget are accepting the [arg -height] attribute that defines the number of displayed rows of the selection lists.
[example_begin]tepam::argument_dialogbox \
   -listbox {-label "Text size" -variable Size \
             -choices {8 9 10 12 15 18} -default 12 [cmd {-height 3}]}[example_end]
If the no height has been explicitly specified the height of the widget will be dynamically adapted to the argument dialog box' size.
[list_end]


[section "APPLICATION SPECIFIC ENTRY WIDGETS"]

An application specific entry widget can be made available to the argument dialog box by adding a dedicated procedure to the [namespace tepam] namespace. This procedure has three arguments; the first one is the widget path, the second one a subcommand and the third argument has various purposes:

[example_begin][arg proc] tepam::ad_form(<WidgetName>) {W Command {Par ""}} {
   [arg {upvar Option Option; # if required}]
   [arg {variable argument_dialogbox; # if required}]







<







451
452
453
454
455
456
457

458
459
460
461
462
463
464
All widgets containing a selection list ([cmd -listbox], [cmd -disjointlistbox], [cmd -font]) as well as the multi line [cmd -text] widget are accepting the [arg -height] attribute that defines the number of displayed rows of the selection lists.
[example_begin]tepam::argument_dialogbox \
   -listbox {-label "Text size" -variable Size \
             -choices {8 9 10 12 15 18} -default 12 [cmd {-height 3}]}[example_end]
If the no height has been explicitly specified the height of the widget will be dynamically adapted to the argument dialog box' size.
[list_end]


[section "APPLICATION SPECIFIC ENTRY WIDGETS"]

An application specific entry widget can be made available to the argument dialog box by adding a dedicated procedure to the [namespace tepam] namespace. This procedure has three arguments; the first one is the widget path, the second one a subcommand and the third argument has various purposes:

[example_begin][arg proc] tepam::ad_form(<WidgetName>) {W Command {Par ""}} {
   [arg {upvar Option Option; # if required}]
   [arg {variable argument_dialogbox; # if required}]
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
[cmd Argument_dialogbox] takes care about the [arg -label] and [arg -text] attributes for all entry widgets. For any data entry widget it creates a frame into which the data entry widget components can be placed. The path to this frame is provided via the [arg W] argument.
[para]
The entry widget procedure has to support 3 mandatory and an optional command that are selected via the argument [arg Command]:

[list_begin definitions]

[def [arg create]]
The entry widget is called a first time with the command [arg create] to build the data entry widget. 
[para]
The frames that are made available by [cmd argument_dialogbox] for the entry widgets are by default only extendable in the X direction. To make them also extendable in the Y direction, for example for extendable list boxes, the command [cmd {ad_form(make_expandable) $W}] has to be executed when an entry widget is built.
[def [arg set_choice]]
The entry widget procedure is only called with the [arg set_choice] command if the [arg -choices] or [arg -choicevariable] has been specified. The command is therefore only relevant for list and combo boxes.
[para]
The available selection list that is either specified with the [arg -choices] or [arg -choicevariable] attribute is provided via the [arg Par] argument to the entry widget procedure. This list can be used to initialize an available choice list.








|







473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
[cmd Argument_dialogbox] takes care about the [arg -label] and [arg -text] attributes for all entry widgets. For any data entry widget it creates a frame into which the data entry widget components can be placed. The path to this frame is provided via the [arg W] argument.
[para]
The entry widget procedure has to support 3 mandatory and an optional command that are selected via the argument [arg Command]:

[list_begin definitions]

[def [arg create]]
The entry widget is called a first time with the command [arg create] to build the data entry widget.
[para]
The frames that are made available by [cmd argument_dialogbox] for the entry widgets are by default only extendable in the X direction. To make them also extendable in the Y direction, for example for extendable list boxes, the command [cmd {ad_form(make_expandable) $W}] has to be executed when an entry widget is built.
[def [arg set_choice]]
The entry widget procedure is only called with the [arg set_choice] command if the [arg -choices] or [arg -choicevariable] has been specified. The command is therefore only relevant for list and combo boxes.
[para]
The available selection list that is either specified with the [arg -choices] or [arg -choicevariable] attribute is provided via the [arg Par] argument to the entry widget procedure. This list can be used to initialize an available choice list.

528
529
530
531
532
533
534
535
536
537
538

[def "[var last_parameters]"]
This array variable is only used by an argument dialog box if its context has been specified via the [arg -context] attribute. The argument dialog box' position and size as well as its entered data are stored inside this variable if the data are acknowledged and the form is closed. This allows the form to restore its previous state once it is called another time.
[para]
To reuse the saved parameters not just in the actual application session but also in another one, it is sufficient to store the [var last_parameter] array variable contents in a configuration file which is loaded the next time an application is launched.

[list_end]

[see_also tepam(n) tepam::procedure(n)]
[keywords {data entry form} {parameter entry form}]
[manpage_end]







<
<
<

530
531
532
533
534
535
536



537

[def "[var last_parameters]"]
This array variable is only used by an argument dialog box if its context has been specified via the [arg -context] attribute. The argument dialog box' position and size as well as its entered data are stored inside this variable if the data are acknowledged and the form is closed. This allows the form to restore its previous state once it is called another time.
[para]
To reuse the saved parameters not just in the actual application session but also in another one, it is sufficient to store the [var last_parameter] array variable contents in a configuration file which is loaded the next time an application is launched.

[list_end]



[manpage_end]

Changes to modules/tepam/tepam_introduction.man.

1









2
3
4
5
6
7
8
[manpage_begin tepam n 0.4.1]









[copyright {2009/2010, Andreas Drollinger}]
[moddesc {Tcl's Enhanced Procedure and Argument Manager}]
[titledesc {An introduction into TEPAM, Tcl's Enhanced Procedure and Argument Manager}]
[category {Procedures, arguments, parameters, options}]

[description]
[para]

>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[manpage_begin tepam n 0.4.1]
[see_also tepam::argument_dialogbox(n)]
[see_also tepam::procedure(n)]
[keywords {argument integrity}]
[keywords {argument validation}]
[keywords arguments]
[keywords {entry mask}]
[keywords {parameter entry form}]
[keywords procedure]
[keywords subcommand]
[copyright {2009/2010, Andreas Drollinger}]
[moddesc {Tcl's Enhanced Procedure and Argument Manager}]
[titledesc {An introduction into TEPAM, Tcl's Enhanced Procedure and Argument Manager}]
[category {Procedures, arguments, parameters, options}]

[description]
[para]
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
   foreach var {mtype font level fg bg no_border log_file text} {
      if {[info exists $var]} {
         puts  "  $var=[set $var]"
      }
   }
}]}[example_end]

A call of procedure that has been declared in this way will first invoke the TEPAM argument manager, before the procedure body is executed. The argument manager parses the provided arguments, validates them, completes them eventually with some default values, and makes them finally available to the procedure body as local variables. In case an argument is missing or has a wrong type, the argument manager generates an error message that explains the reason for the error. 
[para]
As the example above shows, the TEPAM command [cmd procedure] accepts subcommand definitions as procedure name and allows defining much more information than just the argument list inside the procedure header. The procedure body on the other hand is identical between a command declared with [cmd proc] and a command declared with [cmd procedure].
[para]
The procedure header allows defining in addition to the arguments some procedure attributes, like a description, information concerning the return value, etc. This information is basically used for the automatic generation of comprehensive help and usage texts.
[para]
A list of argument definition statements assigned to the [arg -args] argument is defining the procedure arguments. Each argument definition statement starts with the argument name, optionally followed by some argument attributes.
[para]







|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
   foreach var {mtype font level fg bg no_border log_file text} {
      if {[info exists $var]} {
         puts  "  $var=[set $var]"
      }
   }
}]}[example_end]

A call of procedure that has been declared in this way will first invoke the TEPAM argument manager, before the procedure body is executed. The argument manager parses the provided arguments, validates them, completes them eventually with some default values, and makes them finally available to the procedure body as local variables. In case an argument is missing or has a wrong type, the argument manager generates an error message that explains the reason for the error.
[para]
As the example above shows, the TEPAM command [cmd procedure] accepts subcommand definitions as procedure name and allows defining much more information than just the argument list inside the procedure header. The procedure body on the other hand is identical between a command declared with [cmd proc] and a command declared with [cmd procedure].
[para]
The procedure header allows defining in addition to the arguments some procedure attributes, like a description, information concerning the return value, etc. This information is basically used for the automatic generation of comprehensive help and usage texts.
[para]
A list of argument definition statements assigned to the [arg -args] argument is defining the procedure arguments. Each argument definition statement starts with the argument name, optionally followed by some argument attributes.
[para]
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
[example_begin][cmd {display message}] "The document hasn't yet been saved!"
[emph {-> display message:
     mtype=Warning
     font=Arial 10 italic
     fg=black
     no_border=0
     text={The document hasn't yet been saved!}}]
 
[cmd {display message}] -fg red -bg black "Please save first the document"
[emph {-> display message:
     mtype=Warning
     font=Arial 10 italic
     fg=red
     bg=black
     no_border=0
     text={Please save first the document}}]
 
[cmd {display message}] -mtype Error -no_border "Why is here no border?"
[emph {-> display message:
     mtype=Error
     font=Arial 10 italic
     fg=black
     no_border=1
     text={Why is here no border?}}]
 
[cmd {display message}] -font {Courier 12} -level 10 \
   "Is there enough space?" "Reduce otherwise the font size!"
[emph {-> display message:
     mtype=Warning
     font=Courier 12
     level=10
     fg=black
     no_border=0
     text={Is there enough space?} {Reduce otherwise the font size!}}][example_end]
 
The next lines show how wrong arguments are recognized. The [arg text] argument that is mandatory is missing in the first procedure call:

[example_begin][cmd {display message}] -font {Courier 12}
[emph {  -> display message: Required argument is missing: text}][example_end]

Only known arguments are accepted:

[example_begin][cmd {display message}] -category warning Hello
[emph {  -> display message: Argument '-category' not known}][example_end]

Argument types are automatically checked and an error message is generated in case the argument value has not the expected type:

[example_begin][cmd {display message}] -fg MyColor "Hello"
[emph {  -> display message: Argument 'fg' requires type 'color'. \ 
            Provided value: 'MyColor'}][example_end]

Selection choices have to be respected ...

[example_begin][cmd {display message}] -mtype Fatal Hello
[emph {  -> display message: Argument (mtype) has to be one of the \ 
            following elements: Info, Warning, Error}][example_end]

... as well as valid value ranges:

[example_begin][cmd {display message}] -level 12 Hello
[emph {  -> display message: Argument (level) has to be between 1 and 10}][example_end]

[section "INTERACTIVE PROCEDURE CALLS"]

The most intuitive way to call the procedure is using an form that allows specifying all arguments interactively. This form will automatically be generated if the declared procedure is called with the [arg -interactive] flag.

[example_begin][cmd {display message}] -interactive[example_end]

The generated form contains for each argument a data entry widget that is adapted to the argument type. Check buttons are used to specify flags, radio boxes for tiny choice lists, disjoint list boxes for larger choice lists and files, directories, fonts and colors can be selected with dedicated browsers. 
[para]
After acknowledging the specified argument data via an OK button, the entered data are first validated, before the provided arguments are transformed into local variables and the procedure body is executed. In case the entered data are invalid, a message appears and the user can correct them until they are valid.
[para]
The procedure calls can optionally be logged in a variable. This is for example useful to get the command call lines of interactively called procedures.

[section "FLEXIBLE ARGUMENT DIALOG BOX"]








|








|







|









|













|





|













|







149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
[example_begin][cmd {display message}] "The document hasn't yet been saved!"
[emph {-> display message:
     mtype=Warning
     font=Arial 10 italic
     fg=black
     no_border=0
     text={The document hasn't yet been saved!}}]

[cmd {display message}] -fg red -bg black "Please save first the document"
[emph {-> display message:
     mtype=Warning
     font=Arial 10 italic
     fg=red
     bg=black
     no_border=0
     text={Please save first the document}}]

[cmd {display message}] -mtype Error -no_border "Why is here no border?"
[emph {-> display message:
     mtype=Error
     font=Arial 10 italic
     fg=black
     no_border=1
     text={Why is here no border?}}]

[cmd {display message}] -font {Courier 12} -level 10 \
   "Is there enough space?" "Reduce otherwise the font size!"
[emph {-> display message:
     mtype=Warning
     font=Courier 12
     level=10
     fg=black
     no_border=0
     text={Is there enough space?} {Reduce otherwise the font size!}}][example_end]

The next lines show how wrong arguments are recognized. The [arg text] argument that is mandatory is missing in the first procedure call:

[example_begin][cmd {display message}] -font {Courier 12}
[emph {  -> display message: Required argument is missing: text}][example_end]

Only known arguments are accepted:

[example_begin][cmd {display message}] -category warning Hello
[emph {  -> display message: Argument '-category' not known}][example_end]

Argument types are automatically checked and an error message is generated in case the argument value has not the expected type:

[example_begin][cmd {display message}] -fg MyColor "Hello"
[emph {  -> display message: Argument 'fg' requires type 'color'. \
            Provided value: 'MyColor'}][example_end]

Selection choices have to be respected ...

[example_begin][cmd {display message}] -mtype Fatal Hello
[emph {  -> display message: Argument (mtype) has to be one of the \
            following elements: Info, Warning, Error}][example_end]

... as well as valid value ranges:

[example_begin][cmd {display message}] -level 12 Hello
[emph {  -> display message: Argument (level) has to be between 1 and 10}][example_end]

[section "INTERACTIVE PROCEDURE CALLS"]

The most intuitive way to call the procedure is using an form that allows specifying all arguments interactively. This form will automatically be generated if the declared procedure is called with the [arg -interactive] flag.

[example_begin][cmd {display message}] -interactive[example_end]

The generated form contains for each argument a data entry widget that is adapted to the argument type. Check buttons are used to specify flags, radio boxes for tiny choice lists, disjoint list boxes for larger choice lists and files, directories, fonts and colors can be selected with dedicated browsers.
[para]
After acknowledging the specified argument data via an OK button, the entered data are first validated, before the provided arguments are transformed into local variables and the procedure body is executed. In case the entered data are invalid, a message appears and the user can correct them until they are valid.
[para]
The procedure calls can optionally be logged in a variable. This is for example useful to get the command call lines of interactively called procedures.

[section "FLEXIBLE ARGUMENT DIALOG BOX"]

228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
[para]
Many entry widget types are available: Beside the simple generic entries, there are different kinds of list and combo boxes available, browsers for existing and new files and directories, check and radio boxes and buttons, as well as color and font pickers. If necessary, additional entry widgets can be defined.
[para]
The attribute list contains pairs of attribute names and attribute data. The primary attribute is [arg -variable] used to specify the variable in the calling context into which the entered data has to be stored. Another often used attribute is [arg -label] that allows adding a label to the data entry widget. Other attributes are available that allow specifying default values, the expected data types, valid data ranges, etc.
[para]
The next example of a more complex argument dialog box provides a good overview about the different available entry widget types and parameter attributes. The example contains also some formatting instructions like [arg -frame] and [arg -sep] which allows organizing the different entry widgets in frames and sections:
[example_begin]set ChoiceList {"Choice 1" "Choice 2" "Choice 3" "Choice 4" "Choice 5" "Choice 6"}
 
set Result [lb][cmd tepam::argument_dialogbox] \
   [cmd -title] "System configuration" \
   [cmd -context] test_1 \
   [cmd -frame] {-label "Entries"} \
      [cmd -entry] {-label Entry1 -variable Entry1} \
      [cmd -entry] {-label Entry2 -variable Entry2 -default "my default"} \
   [cmd -frame] {-label "Listbox & combobox"} \
      [cmd -listbox] {-label "Listbox, single selection" -variable Listbox1 \
                -choices {1 2 3 4 5 6 7 8} -default 1 -height 3} \
      [cmd -listbox] {-label "Listbox, multiple selection" -variable Listbox2 
                -choicevariable ChoiceList -default {"Choice 2" "Choice 3"} 
                -multiple_selection 1 -height 3} \
      [cmd -disjointlistbox] {-label "Disjoined listbox" -variable DisJntListbox 
                        -choicevariable ChoiceList \
                        -default {"Choice 3" "Choice 5"} -height 3} \
      [cmd -combobox] {-label "Combobox" -variable Combobox \
                 -choices {1 2 3 4 5 6 7 8} -default 3} \
   [cmd -frame] {-label "Checkbox, radiobox and checkbutton"} \
      [cmd -checkbox] {-label Checkbox -variable Checkbox 
                 -choices {bold italic underline} -choicelabels {Bold Italic Underline} \
                 -default italic} \
      [cmd -radiobox] {-label Radiobox -variable Radiobox 
                 -choices {bold italic underline} -choicelabels {Bold Italic Underline} \
                 -default underline} \
      [cmd -checkbutton] {-label CheckButton -variable Checkbutton -default 1} \
   [cmd -frame] {-label "Files & directories"} \
      [cmd -existingfile] {-label "Input file" -variable InputFile} \
      [cmd -file] {-label "Output file" -variable OutputFile} \
      [cmd -sep] {} \







|









|
|

|





|


|







237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
[para]
Many entry widget types are available: Beside the simple generic entries, there are different kinds of list and combo boxes available, browsers for existing and new files and directories, check and radio boxes and buttons, as well as color and font pickers. If necessary, additional entry widgets can be defined.
[para]
The attribute list contains pairs of attribute names and attribute data. The primary attribute is [arg -variable] used to specify the variable in the calling context into which the entered data has to be stored. Another often used attribute is [arg -label] that allows adding a label to the data entry widget. Other attributes are available that allow specifying default values, the expected data types, valid data ranges, etc.
[para]
The next example of a more complex argument dialog box provides a good overview about the different available entry widget types and parameter attributes. The example contains also some formatting instructions like [arg -frame] and [arg -sep] which allows organizing the different entry widgets in frames and sections:
[example_begin]set ChoiceList {"Choice 1" "Choice 2" "Choice 3" "Choice 4" "Choice 5" "Choice 6"}

set Result [lb][cmd tepam::argument_dialogbox] \
   [cmd -title] "System configuration" \
   [cmd -context] test_1 \
   [cmd -frame] {-label "Entries"} \
      [cmd -entry] {-label Entry1 -variable Entry1} \
      [cmd -entry] {-label Entry2 -variable Entry2 -default "my default"} \
   [cmd -frame] {-label "Listbox & combobox"} \
      [cmd -listbox] {-label "Listbox, single selection" -variable Listbox1 \
                -choices {1 2 3 4 5 6 7 8} -default 1 -height 3} \
      [cmd -listbox] {-label "Listbox, multiple selection" -variable Listbox2
                -choicevariable ChoiceList -default {"Choice 2" "Choice 3"}
                -multiple_selection 1 -height 3} \
      [cmd -disjointlistbox] {-label "Disjoined listbox" -variable DisJntListbox
                        -choicevariable ChoiceList \
                        -default {"Choice 3" "Choice 5"} -height 3} \
      [cmd -combobox] {-label "Combobox" -variable Combobox \
                 -choices {1 2 3 4 5 6 7 8} -default 3} \
   [cmd -frame] {-label "Checkbox, radiobox and checkbutton"} \
      [cmd -checkbox] {-label Checkbox -variable Checkbox
                 -choices {bold italic underline} -choicelabels {Bold Italic Underline} \
                 -default italic} \
      [cmd -radiobox] {-label Radiobox -variable Radiobox
                 -choices {bold italic underline} -choicelabels {Bold Italic Underline} \
                 -default underline} \
      [cmd -checkbutton] {-label CheckButton -variable Checkbutton -default 1} \
   [cmd -frame] {-label "Files & directories"} \
      [cmd -existingfile] {-label "Input file" -variable InputFile} \
      [cmd -file] {-label "Output file" -variable OutputFile} \
      [cmd -sep] {} \
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287

[example_begin]if {$Result=="cancel"} {
   puts "Canceled"
} else { # $Result=="ok"
   puts "Arguments: "
   foreach Var {
      Entry1 Entry2
      Listbox1 Listbox2 DisJntListbox 
      Combobox Checkbox Radiobox Checkbutton
      InputFile OutputFile InputDirectory OutputDirectory
      Color Font
   } {
      puts "  $Var: '[lb]set $Var[rb]'"
   }
}







|







282
283
284
285
286
287
288
289
290
291
292
293
294
295
296

[example_begin]if {$Result=="cancel"} {
   puts "Canceled"
} else { # $Result=="ok"
   puts "Arguments: "
   foreach Var {
      Entry1 Entry2
      Listbox1 Listbox2 DisJntListbox
      Combobox Checkbox Radiobox Checkbutton
      InputFile OutputFile InputDirectory OutputDirectory
      Color Font
   } {
      puts "  $Var: '[lb]set $Var[rb]'"
   }
}
297
298
299
300
301
302
303
304
305
306
307
308
   Checkbutton: '1'
   InputFile: 'c:\tepam\in.txt'
   OutputFile: 'c:\tepam\out.txt'
   InputDirectory: 'c:\tepam\input'
   OutputDirectory: 'c:\tepam\output'
   Color: 'red'
   Font: 'Courier 12 italic'}][example_end]

[see_also tepam::argument_dialogbox(n) tepam::procedure(n)]

[keywords procedure arguments {argument validation} {argument integrity} subcommand {entry mask} {parameter entry form}]
[manpage_end]







<
<
<
<

306
307
308
309
310
311
312




313
   Checkbutton: '1'
   InputFile: 'c:\tepam\in.txt'
   OutputFile: 'c:\tepam\out.txt'
   InputDirectory: 'c:\tepam\input'
   OutputDirectory: 'c:\tepam\output'
   Color: 'red'
   Font: 'Courier 12 italic'}][example_end]




[manpage_end]

Changes to modules/tepam/tepam_procedure.man.

1







2
3
4
5
6
7
8
[manpage_begin tepam::procedure n 0.4.1]







[copyright {2009/2010, Andreas Drollinger}]
[moddesc {Tcl's Enhanced Procedure and Argument Manager}]
[titledesc {TEPAM procedure, reference manual}]
[category {Procedures, arguments, parameters, options}]
[require Tcl 8.3]
[require tepam [opt 0.4]]


>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[manpage_begin tepam::procedure n 0.4.1]
[see_also tepam(n)]
[see_also tepam::argument_dialogbox(n)]
[keywords {argument integrity}]
[keywords {argument validation}]
[keywords arguments]
[keywords procedure]
[keywords subcommand]
[copyright {2009/2010, Andreas Drollinger}]
[moddesc {Tcl's Enhanced Procedure and Argument Manager}]
[titledesc {TEPAM procedure, reference manual}]
[category {Procedures, arguments, parameters, options}]
[require Tcl 8.3]
[require tepam [opt 0.4]]

95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
[list_begin definitions]
[call [cmd "tepam::procedure"] \
        [arg name] \
        [arg attributes] \
        [arg body]]
[list_end]

The TEPAM procedure declaration syntax is demonstrated by the following example: 

[example_begin][fun tepam::procedure] {display message} {
   -short_description
      "Displays a simple message box"
   -description
      "This procedure allows displaying a configurable\
       message box. The default message type that is\







|







102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
[list_begin definitions]
[call [cmd "tepam::procedure"] \
        [arg name] \
        [arg attributes] \
        [arg body]]
[list_end]

The TEPAM procedure declaration syntax is demonstrated by the following example:

[example_begin][fun tepam::procedure] {display message} {
   -short_description
      "Displays a simple message box"
   -description
      "This procedure allows displaying a configurable\
       message box. The default message type that is\
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
   puts "Message: [var {$text}]"
}[example_end]

[list_end]

The commands [cmd procedure] as well as [cmd argument_dialogbox] are exported from the namespace [namespace tepam]. To use these commands without the [namespace tepam::] namespace prefix, it is sufficient to import them into the main namespace:
[example_begin][cmd {namespace import tepam::*}]
 
[cmd procedure] {display_message} {
   -args {
      ...[example_end]

[subsection "Procedure Attributes"]

The first group of procedure attributes is not affecting the behavior of the declared procedure. These attributes are just used for the purpose of documentation and help text generation:







|







175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
   puts "Message: [var {$text}]"
}[example_end]

[list_end]

The commands [cmd procedure] as well as [cmd argument_dialogbox] are exported from the namespace [namespace tepam]. To use these commands without the [namespace tepam::] namespace prefix, it is sufficient to import them into the main namespace:
[example_begin][cmd {namespace import tepam::*}]

[cmd procedure] {display_message} {
   -args {
      ...[example_end]

[subsection "Procedure Attributes"]

The first group of procedure attributes is not affecting the behavior of the declared procedure. These attributes are just used for the purpose of documentation and help text generation:
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
The [emph -return] attribute allows defining the expected return value of a procedure (used for documentation purposes).

[def "-example [arg string]"]
A help text or manual page of a procedure can be enriched with eventual examples, using the [emph -example] attribute.
[list_end]

The following attributes are not relevant for the documentation and help text generation, but they affect the behavior of the declared procedure:
 
[list_begin definitions]
[def "-named_arguments_first [const 0]|[const 1]"]
This attribute defines the calling style of a procedure. TEPAM uses by default the [emph "named arguments first, unnamed arguments later"] style (Tcl). This default behavior can globally be changed by setting the variable [var tepam::named_arguments_first] to [const 0]. This global calling style can be changed individually for a procedure with the procedure's [arg -named_arguments_first] attribute.

[def "-auto_argument_name_completion [const 0]|[const 1]"]
The declared procedures will by default automatically try to match eventually abbreviated argument names to the defined arguments names. This default behavior can globally be changed by setting the variable [var tepam::auto_argument_name_completion] to [const 0]. This global setting of the automatic argument name completion can be changed individually for a procedure with the [arg -auto_argument_name_completion] procedure attribute.

[def "-interactive_display_format [const extended]|[const short]"]
A procedure declared with the TEPAM [fun procedure] command can always be called with the [var -interactive] option. By doing so, a graphical form will be generated that allows specifying all procedure argument values. There are two display modes for these interactive forms. While the [emph extended] mode is more adapted for small procedure argument sets, the [const short] form is more adequate for huge procedure argument sets.
[para]
The choice to use short or extended forms can be globally configured via the variable [var tepam::interactive_display_format]. This global setting can then be changed individually for a procedure with the [arg -interactive_display_format] procedure attribute.

[def "-args [arg list]"]
The procedure's arguments are declared via the [arg -args] attribute. An argument is defined via a list having as first element the argument name, followed by eventual argument attributes. All these argument definition lists are packaged themselves into a global list that is assigned to the procedure's [arg -args] attribute.
[para]
The argument definition syntax will be described more in detail in the following sub section.

[list_end]

The following attribute allows controlling the logging settings for an individual procedure:
 
[list_begin definitions]

[def "-command_log [const 0]|[const 1]|[const \"interactive\"]"]
This argument configures the logging of the procedure calls into the list variable [var tepam::ProcedureCallLogList]. The default configuration defined by the variable [var tepam::command_log] will be used if this argument is not defined in a procedure declaration.
[para]
Setting this argument to [const 0] will disable any procedure call loggings, setting it to [const 1] will log any procedure calls and setting it to [const "interactive"] will log just the procedures that are called interactively (procedures called with the [const -interactive] flag).








|




















|







203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
The [emph -return] attribute allows defining the expected return value of a procedure (used for documentation purposes).

[def "-example [arg string]"]
A help text or manual page of a procedure can be enriched with eventual examples, using the [emph -example] attribute.
[list_end]

The following attributes are not relevant for the documentation and help text generation, but they affect the behavior of the declared procedure:

[list_begin definitions]
[def "-named_arguments_first [const 0]|[const 1]"]
This attribute defines the calling style of a procedure. TEPAM uses by default the [emph "named arguments first, unnamed arguments later"] style (Tcl). This default behavior can globally be changed by setting the variable [var tepam::named_arguments_first] to [const 0]. This global calling style can be changed individually for a procedure with the procedure's [arg -named_arguments_first] attribute.

[def "-auto_argument_name_completion [const 0]|[const 1]"]
The declared procedures will by default automatically try to match eventually abbreviated argument names to the defined arguments names. This default behavior can globally be changed by setting the variable [var tepam::auto_argument_name_completion] to [const 0]. This global setting of the automatic argument name completion can be changed individually for a procedure with the [arg -auto_argument_name_completion] procedure attribute.

[def "-interactive_display_format [const extended]|[const short]"]
A procedure declared with the TEPAM [fun procedure] command can always be called with the [var -interactive] option. By doing so, a graphical form will be generated that allows specifying all procedure argument values. There are two display modes for these interactive forms. While the [emph extended] mode is more adapted for small procedure argument sets, the [const short] form is more adequate for huge procedure argument sets.
[para]
The choice to use short or extended forms can be globally configured via the variable [var tepam::interactive_display_format]. This global setting can then be changed individually for a procedure with the [arg -interactive_display_format] procedure attribute.

[def "-args [arg list]"]
The procedure's arguments are declared via the [arg -args] attribute. An argument is defined via a list having as first element the argument name, followed by eventual argument attributes. All these argument definition lists are packaged themselves into a global list that is assigned to the procedure's [arg -args] attribute.
[para]
The argument definition syntax will be described more in detail in the following sub section.

[list_end]

The following attribute allows controlling the logging settings for an individual procedure:

[list_begin definitions]

[def "-command_log [const 0]|[const 1]|[const \"interactive\"]"]
This argument configures the logging of the procedure calls into the list variable [var tepam::ProcedureCallLogList]. The default configuration defined by the variable [var tepam::command_log] will be used if this argument is not defined in a procedure declaration.
[para]
Setting this argument to [const 0] will disable any procedure call loggings, setting it to [const 1] will log any procedure calls and setting it to [const "interactive"] will log just the procedures that are called interactively (procedures called with the [const -interactive] flag).

246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
} {
}[example_end]

Each of the procedure arguments is declared with a list that has as first element the argument name, followed by eventual attributes. The argument definition syntax can be formalized in the following way:

[example_begin]tepam::procedure <name> {
   -args [cmd {{
      {<argument_name_1> <arg_attr_name_1a> <arg_attr_value_1a> \ 
                         <arg_attr_name_1b> <arg_attr_value_1b> ...}
      {<argument_name_2> <arg_attr_name_2a> <arg_attr_value_2a> \ 
                         <arg_attr_name_2b> <arg_attr_value_2b> ...}
      ...
   }}]
} <body>[example_end]

The argument names and attributes have to be used in the following way:








|

|







253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
} {
}[example_end]

Each of the procedure arguments is declared with a list that has as first element the argument name, followed by eventual attributes. The argument definition syntax can be formalized in the following way:

[example_begin]tepam::procedure <name> {
   -args [cmd {{
      {<argument_name_1> <arg_attr_name_1a> <arg_attr_value_1a> \
                         <arg_attr_name_1b> <arg_attr_value_1b> ...}
      {<argument_name_2> <arg_attr_name_2a> <arg_attr_value_2a> \
                         <arg_attr_name_2b> <arg_attr_value_2b> ...}
      ...
   }}]
} <body>[example_end]

The argument names and attributes have to be used in the following way:

302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
[def "[arg \"-\"] or [arg \"\"]"]
A blank argument name (either '-' or [emph '']) starts a comment for the following arguments.
[example_begin]tepam::procedure {print_time} {
   -interactive_display_format short
   -args {
      {hours -type integer -description "Hour"}
      {minutes -type integer -description "Minute"}
 
      [cmd {{- The following arguments are optional:}}]
      {seconds -type integer -default 0 -description "Seconds"}
      {milliseconds -type integer -default 0 -description "Milliseconds"}
   }
} {
   puts "${hour}h${minutes}:[lb]expr $seconds+0.001*$milliseconds[rb]"
}[example_end]
Argument comments are basically used in the graphical argument definition forms that are created if a procedure is called interactively.

[def [arg "\"#*\""]]
An argument definition list that starts with '#' is considered as a section comment. The argument definition list will be trimmed from the '#' characters and the remaining string will be used as section comment.
[para]
Section comments can be used to structure visually the argument definition code. Section comments are also used to structure the generated help texts and the interactive argument definition forms.

[example_begin]tepam::procedure {complex_multiply} {
   -description "This function perform a complex multiplication"
   -args {
      [cmd {{#### First complex number ####}}]
      {-r0 -type double -description "First number's real part"}
      {-i0 -type double -description "First number's imaginary part"}
      
      [cmd {{#### Second complex number ####}}]
      {-r1 -type double -description "Second number's real part"}
      {-i1 -type double -description "Second number's imaginary part"}
   }
} {
   return [lb]expr $r0*$r1 - $i0*$i1[rb]
}[example_end]

[list_end]

[def "Argument attributes ([emph {<arg_attr_name_<mn>> <arg_attr_value_<mn>>}])"]
The following argument attributes are supported:

[list_begin definitions]

[def "-description [arg string]"]
The description argument attribute is used for documentation purpose. Interactive argument definition forms use this attribute to provide explanations for an argument. 

[def "-type [arg type]"]
The type argument attribute allows assigning the argument either to a predefined data type, or to an application specific data type. The argument values that are provided during a procedure call are automatically checked with respect to the defined argument type.
[para]
The section [sectref {ARGUMENT TYPES}] provides a list of predefined data types and explains how application specific types can be specified.
[para]
The argument type [emph none] has a special meaning. An argument that has the type [emph none] is handled as a [arg flag]. A flag is always optional and its related variable contains the logical value [const 1] if the flag has been defined during the procedure call, or otherwise [const 0].







|




















|
















|







309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
[def "[arg \"-\"] or [arg \"\"]"]
A blank argument name (either '-' or [emph '']) starts a comment for the following arguments.
[example_begin]tepam::procedure {print_time} {
   -interactive_display_format short
   -args {
      {hours -type integer -description "Hour"}
      {minutes -type integer -description "Minute"}

      [cmd {{- The following arguments are optional:}}]
      {seconds -type integer -default 0 -description "Seconds"}
      {milliseconds -type integer -default 0 -description "Milliseconds"}
   }
} {
   puts "${hour}h${minutes}:[lb]expr $seconds+0.001*$milliseconds[rb]"
}[example_end]
Argument comments are basically used in the graphical argument definition forms that are created if a procedure is called interactively.

[def [arg "\"#*\""]]
An argument definition list that starts with '#' is considered as a section comment. The argument definition list will be trimmed from the '#' characters and the remaining string will be used as section comment.
[para]
Section comments can be used to structure visually the argument definition code. Section comments are also used to structure the generated help texts and the interactive argument definition forms.

[example_begin]tepam::procedure {complex_multiply} {
   -description "This function perform a complex multiplication"
   -args {
      [cmd {{#### First complex number ####}}]
      {-r0 -type double -description "First number's real part"}
      {-i0 -type double -description "First number's imaginary part"}

      [cmd {{#### Second complex number ####}}]
      {-r1 -type double -description "Second number's real part"}
      {-i1 -type double -description "Second number's imaginary part"}
   }
} {
   return [lb]expr $r0*$r1 - $i0*$i1[rb]
}[example_end]

[list_end]

[def "Argument attributes ([emph {<arg_attr_name_<mn>> <arg_attr_value_<mn>>}])"]
The following argument attributes are supported:

[list_begin definitions]

[def "-description [arg string]"]
The description argument attribute is used for documentation purpose. Interactive argument definition forms use this attribute to provide explanations for an argument.

[def "-type [arg type]"]
The type argument attribute allows assigning the argument either to a predefined data type, or to an application specific data type. The argument values that are provided during a procedure call are automatically checked with respect to the defined argument type.
[para]
The section [sectref {ARGUMENT TYPES}] provides a list of predefined data types and explains how application specific types can be specified.
[para]
The argument type [emph none] has a special meaning. An argument that has the type [emph none] is handled as a [arg flag]. A flag is always optional and its related variable contains the logical value [const 1] if the flag has been defined during the procedure call, or otherwise [const 0].
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
Another argument constraint can be defined with the [arg -range] attribute. The valid range is defined with a list containing the minimum valid value and a maximum valid value. The [arg -range] attribute has to be used only for numerical arguments, like integers and doubles.

[def "-validatecommand [arg script]"]
Eventual more complex argument value validations can be performed via specific validation commands that are assigned to the [arg -validatecommand] attribute. The provided validation command can be a complete script in which the pattern [emph %P] is replaced by the argument value that has to be validated.
An example of a validation command declaration is:
[example_begin]tepam::procedure {display_message} {
   -args {
      {text -type string -description "Message text" \ 
            [cmd {-validatecommand "IllegalWordDetector %P"}]}
} {
}[example_end]

[def "-widget [arg string]"]
The widgets that allow defining the different arguments in case of an interactive procedure call are normally selected automatically in function of the argument type. The [arg -widget] attribute allows specifying explicitly a certain widget type for an argument.
[para]

[def "-auxargs [arg list]"]
In case a procedure is called interactively, additional argument attributes can be provided to the interactive argument definition form via the [emph -auxargs] attribute that is itself a list of attribute name/attribute value pairs:
[example_begin]-auxargs {-<arg_attr_name_1a> <arg_attr_value_1a> \ 
          -<arg_attr_name_1b> <arg_attr_value_1b>
          ...
}[example_end]
For example, if a procedure takes as argument a file name it may be beneficial to specify the required file type for the interactive argument definition form. This information can be provided via the [emph -auxargs] attribute to the argument definition form:
[example_begin]tepam::procedure LoadPicture {
   -args {
      {FileName -type existingfile -description "Picture file" \ 
                 [cmd {-auxargs {-filetypes {{"GIF" {*.gif}} {"JPG" {*.jpg}} }}}]}
   }
} {
}[example_end]

[def "-auxargs_commands [arg script]"]
If the auxiliary argument attributes are not static but have to be dynamically adaptable, the [emph -auxargs_commands] allows defining them via commands that are executed during a procedure call. A list of pairs of auxiliary attribute names and commands has to be provided to the [emph -auxargs_commands] attribute. The provided commands are executed in the context of the calling procedure.
[example_begin]-auxargs_commands {-<arg_attr_name_1a> <arg_attr_command_1a> \ 
                   -<arg_attr_name_1b> <arg_attr_command_1b>
                   ...
}[example_end]

[list_end]

[list_end]







|










|






|







|







387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
Another argument constraint can be defined with the [arg -range] attribute. The valid range is defined with a list containing the minimum valid value and a maximum valid value. The [arg -range] attribute has to be used only for numerical arguments, like integers and doubles.

[def "-validatecommand [arg script]"]
Eventual more complex argument value validations can be performed via specific validation commands that are assigned to the [arg -validatecommand] attribute. The provided validation command can be a complete script in which the pattern [emph %P] is replaced by the argument value that has to be validated.
An example of a validation command declaration is:
[example_begin]tepam::procedure {display_message} {
   -args {
      {text -type string -description "Message text" \
            [cmd {-validatecommand "IllegalWordDetector %P"}]}
} {
}[example_end]

[def "-widget [arg string]"]
The widgets that allow defining the different arguments in case of an interactive procedure call are normally selected automatically in function of the argument type. The [arg -widget] attribute allows specifying explicitly a certain widget type for an argument.
[para]

[def "-auxargs [arg list]"]
In case a procedure is called interactively, additional argument attributes can be provided to the interactive argument definition form via the [emph -auxargs] attribute that is itself a list of attribute name/attribute value pairs:
[example_begin]-auxargs {-<arg_attr_name_1a> <arg_attr_value_1a> \
          -<arg_attr_name_1b> <arg_attr_value_1b>
          ...
}[example_end]
For example, if a procedure takes as argument a file name it may be beneficial to specify the required file type for the interactive argument definition form. This information can be provided via the [emph -auxargs] attribute to the argument definition form:
[example_begin]tepam::procedure LoadPicture {
   -args {
      {FileName -type existingfile -description "Picture file" \
                 [cmd {-auxargs {-filetypes {{"GIF" {*.gif}} {"JPG" {*.jpg}} }}}]}
   }
} {
}[example_end]

[def "-auxargs_commands [arg script]"]
If the auxiliary argument attributes are not static but have to be dynamically adaptable, the [emph -auxargs_commands] allows defining them via commands that are executed during a procedure call. A list of pairs of auxiliary attribute names and commands has to be provided to the [emph -auxargs_commands] attribute. The provided commands are executed in the context of the calling procedure.
[example_begin]-auxargs_commands {-<arg_attr_name_1a> <arg_attr_command_1a> \
                   -<arg_attr_name_1b> <arg_attr_command_1b>
                   ...
}[example_end]

[list_end]

[list_end]
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
[example_begin]tepam::procedure flag_test {
   -args {
      [cmd {{-flag -type none -description "This is a flag"}}]
   }
} {
   puts [cmd {$flag}]
}
 
flag_test
[emph {-> 0}]
 
flag_test -flag
[emph {-> 1}][example_end]
[para]
Since no argument value has to be provided to a flag, also no data check is performed for this argument type.

[item] [type string][para]
[type String] is a generic argument data type. Any data string can be provided to a string type argument and no data type checks are therefore performed. The string type allows defining single line strings during the interactive procedure calls.







|


|







499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
[example_begin]tepam::procedure flag_test {
   -args {
      [cmd {{-flag -type none -description "This is a flag"}}]
   }
} {
   puts [cmd {$flag}]
}

flag_test
[emph {-> 0}]

flag_test -flag
[emph {-> 1}][example_end]
[para]
Since no argument value has to be provided to a flag, also no data check is performed for this argument type.

[item] [type string][para]
[type String] is a generic argument data type. Any data string can be provided to a string type argument and no data type checks are therefore performed. The string type allows defining single line strings during the interactive procedure calls.
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
   puts "$mtype: [lb]join $text[rb]"
}[example_end]

... can for example be called in the following ways:

[example_begin][cmd {display_message Info "It is PM 7:00."}]
[emph {-> Info: It is PM 7:00.}]
 
[cmd {display_message Info "It is PM 7:00." "You should go home."}]
[emph {-> Info: It is PM 7:00. You should go home.}][example_end]

The nice thing is that unnamed arguments can also be called as named arguments, which can be handy, for example if the exact specified argument order is not known to a user:

[example_begin][cmd {display_message -mtype Info -text "It is PM 7:00."}]
[emph {-> Info: It is PM 7:00.}]
 
[cmd {display_message -text "It is PM 7:00." -mtype Info}]
[emph {-> Info: It is PM 7:00.}]
 
[cmd {display_message -mtype Info -text "It is PM 7:00." -text "You should go home."}]
[emph {-> Info: It is PM 7:00. You should go home.}]
 
[cmd {display_message -text "It is PM 7:00." -text "You should go home." -mtype Info}]
[emph {-> Info: It is PM 7:00. You should go home.}][example_end]


[subsection "Named Arguments"]

Named arguments have to be provided to a procedure in form of a parameter pairs composed by the argument names and the argument values. The order how they are provided during a procedure call is irrelevant and has not to match with the argument specification order.
[para]
The following declared procedure ...

[example_begin]tepam::procedure {display_message} {
   -args {
      {-mtype -choices {Info Warning Error}}
      {-text -type string -multiple}
   }
} {
   puts "$mtype: [lb]join $text[rb]"
}[example_end]

... can be called in the following ways:

[example_begin][cmd {display_message -mtype Info -text "It is PM 7:00."}]
[emph {-> Info: It is PM 7:00.}]
 
[cmd {display_message -text "It is PM 7:00." -mtype Info}]
[emph {-> Info: It is PM 7:00.}]
 
[cmd {display_message -mtype Info -text "It is PM 7:00." -text "You should go home."}]
[emph {-> Info: It is PM 7:00. You should go home.}]
 
[cmd {display_message -text "It is PM 7:00." -text "You should go home." -mtype Info}]
[emph {-> Info: It is PM 7:00. You should go home.}][example_end]

Also named arguments that have not the [emph -multiple] attribute can be provided multiple times. Only the last provided argument will be retained in such a case:

[example_begin][cmd {display_message -mtype Info -text "It is PM 7:00." -mtype Warning}]
[emph {-> Warning: It is PM 7:00.}][example_end]







|







|


|


|


<




















|


|


|







653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676

677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
   puts "$mtype: [lb]join $text[rb]"
}[example_end]

... can for example be called in the following ways:

[example_begin][cmd {display_message Info "It is PM 7:00."}]
[emph {-> Info: It is PM 7:00.}]

[cmd {display_message Info "It is PM 7:00." "You should go home."}]
[emph {-> Info: It is PM 7:00. You should go home.}][example_end]

The nice thing is that unnamed arguments can also be called as named arguments, which can be handy, for example if the exact specified argument order is not known to a user:

[example_begin][cmd {display_message -mtype Info -text "It is PM 7:00."}]
[emph {-> Info: It is PM 7:00.}]

[cmd {display_message -text "It is PM 7:00." -mtype Info}]
[emph {-> Info: It is PM 7:00.}]

[cmd {display_message -mtype Info -text "It is PM 7:00." -text "You should go home."}]
[emph {-> Info: It is PM 7:00. You should go home.}]

[cmd {display_message -text "It is PM 7:00." -text "You should go home." -mtype Info}]
[emph {-> Info: It is PM 7:00. You should go home.}][example_end]


[subsection "Named Arguments"]

Named arguments have to be provided to a procedure in form of a parameter pairs composed by the argument names and the argument values. The order how they are provided during a procedure call is irrelevant and has not to match with the argument specification order.
[para]
The following declared procedure ...

[example_begin]tepam::procedure {display_message} {
   -args {
      {-mtype -choices {Info Warning Error}}
      {-text -type string -multiple}
   }
} {
   puts "$mtype: [lb]join $text[rb]"
}[example_end]

... can be called in the following ways:

[example_begin][cmd {display_message -mtype Info -text "It is PM 7:00."}]
[emph {-> Info: It is PM 7:00.}]

[cmd {display_message -text "It is PM 7:00." -mtype Info}]
[emph {-> Info: It is PM 7:00.}]

[cmd {display_message -mtype Info -text "It is PM 7:00." -text "You should go home."}]
[emph {-> Info: It is PM 7:00. You should go home.}]

[cmd {display_message -text "It is PM 7:00." -text "You should go home." -mtype Info}]
[emph {-> Info: It is PM 7:00. You should go home.}][example_end]

Also named arguments that have not the [emph -multiple] attribute can be provided multiple times. Only the last provided argument will be retained in such a case:

[example_begin][cmd {display_message -mtype Info -text "It is PM 7:00." -mtype Warning}]
[emph {-> Warning: It is PM 7:00.}][example_end]
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
[example_begin]my_proc [cmd {-n1 N1 -n2 N2 -n1 M1 U1 U2}]
[emph {-> n1:'M1', n2:'N2', u1:'U1', u2:'U2'}][example_end]

The name of the first unnamed argument has therefore not to start with the '-' character. The unnamed argument is otherwise considered as name of another named argument. This is especially important if the first unnamed argument is given by a variable that can contain any character strings:

[example_begin]my_proc [cmd {-n1 N1 -n2 N2 "->" "<-"}]
[emph {-> my_proc: Argument '->' not known}]
 
set U1 "->"
my_proc -n1 N1 -n2 N2 $U1 U2}]
my_proc: Argument '->' not known[example_end]

The '--' flag allows separating unambiguously the unnamed arguments from the named arguments. All data after the '--' flag will be considered as unnamed argument:

[example_begin]my_proc [cmd {-n1 N1 -n2 N2 -- "->" "<-"}]
[emph {-> n1:'N1', n2:'N2', u1:'->', u2:'<-'}]
 
set U1 "->"
my_proc [cmd {-n1 N1 -n2 N2 -- $U1 U2}]
[emph {-> n1:'N1', n2:'N2', u1:'->', u2:'<-'}][example_end]

[subsection "Named Arguments First, Unnamed Arguments Later (Tcl Style)"]

The Tk calling style will be chosen if a procedure is defined while the variable [var tepam::named_arguments_first] is set to 0, or if the procedure attribute [arg -named_arguments_first] has been set to 0. The following procedure will be used in this section to illustrate this calling style:







|








|







740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
[example_begin]my_proc [cmd {-n1 N1 -n2 N2 -n1 M1 U1 U2}]
[emph {-> n1:'M1', n2:'N2', u1:'U1', u2:'U2'}][example_end]

The name of the first unnamed argument has therefore not to start with the '-' character. The unnamed argument is otherwise considered as name of another named argument. This is especially important if the first unnamed argument is given by a variable that can contain any character strings:

[example_begin]my_proc [cmd {-n1 N1 -n2 N2 "->" "<-"}]
[emph {-> my_proc: Argument '->' not known}]

set U1 "->"
my_proc -n1 N1 -n2 N2 $U1 U2}]
my_proc: Argument '->' not known[example_end]

The '--' flag allows separating unambiguously the unnamed arguments from the named arguments. All data after the '--' flag will be considered as unnamed argument:

[example_begin]my_proc [cmd {-n1 N1 -n2 N2 -- "->" "<-"}]
[emph {-> n1:'N1', n2:'N2', u1:'->', u2:'<-'}]

set U1 "->"
my_proc [cmd {-n1 N1 -n2 N2 -- $U1 U2}]
[emph {-> n1:'N1', n2:'N2', u1:'->', u2:'<-'}][example_end]

[subsection "Named Arguments First, Unnamed Arguments Later (Tcl Style)"]

The Tk calling style will be chosen if a procedure is defined while the variable [var tepam::named_arguments_first] is set to 0, or if the procedure attribute [arg -named_arguments_first] has been set to 0. The following procedure will be used in this section to illustrate this calling style:
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
[example_begin]my_proc [cmd {U1 U2 -n1 N1 -n2 N2}]
[emph {-> n1:'N1', n1:'N1', u1:'U1', u2:'U2'}][example_end]

The argument parser will assign to each defined unnamed argument a value before it switches to read the named arguments. This default behavior changes a bit if there are unnamed arguments that are optional or that can take multiple values.
[para]
An argument value will only be assigned to an unnamed argument that is optional (that has either the [arg -optional] attribute or that has a default value), if the value is not beginning with the '-' character or if no named arguments are defined. The value that starts with '-' is otherwise considered as the name of a named argument.
[para]
Argument values are assigned to an argument that has the [arg -multiple] attribute as long as the parameter value doesn't starts with the '-' character. 
[para]
Values that start with the '-' character can therefore not be assigned to optional unnamed arguments, which restricts the usage of the Tcl procedure calling style. The Tk style may be preferable in some cases, since it allows separating unambiguously the named arguments from the unnamed ones with the '--' flag.
[para]
Let's explore in a bit less theoretically the ways how the previously defined procedure can be called: The first example calls the procedure without any parameters, which leads to an error since [arg u1] is a mandatory argument:

[example_begin]my_proc
[emph {-> my_proc: Required argument is missing: u1}][example_end]







|







779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
[example_begin]my_proc [cmd {U1 U2 -n1 N1 -n2 N2}]
[emph {-> n1:'N1', n1:'N1', u1:'U1', u2:'U2'}][example_end]

The argument parser will assign to each defined unnamed argument a value before it switches to read the named arguments. This default behavior changes a bit if there are unnamed arguments that are optional or that can take multiple values.
[para]
An argument value will only be assigned to an unnamed argument that is optional (that has either the [arg -optional] attribute or that has a default value), if the value is not beginning with the '-' character or if no named arguments are defined. The value that starts with '-' is otherwise considered as the name of a named argument.
[para]
Argument values are assigned to an argument that has the [arg -multiple] attribute as long as the parameter value doesn't starts with the '-' character.
[para]
Values that start with the '-' character can therefore not be assigned to optional unnamed arguments, which restricts the usage of the Tcl procedure calling style. The Tk style may be preferable in some cases, since it allows separating unambiguously the named arguments from the unnamed ones with the '--' flag.
[para]
Let's explore in a bit less theoretically the ways how the previously defined procedure can be called: The first example calls the procedure without any parameters, which leads to an error since [arg u1] is a mandatory argument:

[example_begin]my_proc
[emph {-> my_proc: Required argument is missing: u1}][example_end]
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
[example_begin]my_proc [cmd {-- -n1 N1}]
[emph {-> n1:'N1', n2:'', u1:'--', u2:''}][example_end]

But the '--' flag is simply ignored if the argument parser has started to handle the named arguments:

[example_begin]my_proc [cmd {U1 -- -n1 N1}]
[emph {-> n1:'N1', n2:'', u1:'U1', u2:''}]
 
my_proc [cmd {U1 -n1 N1 -- -n2 N2}]
[emph {-> n1:'N1', n2:'N2', u1:'U1', u2:''}][example_end]

[subsection "Raw Argument List"]

It may be necessary sometimes that the procedure body is able to access the entire list of arguments provided during a procedure call. This can happen via the [var args] variable that contains always the unprocessed argument list:

[example_begin]tepam::procedure {display_message} {
   -args {
      {-mtype -choices {Warning Error} -default Warning}
      {text -type string -multiple}

   }
} {
   puts "args: [cmd {$args}]"
}
display_message -mtype Warning "It is 7:00"
[emph {-> args: -mtype Warning {It is 7:00}}][example_end]

[see_also tepam(n) tepam::argument_dialogbox(n)]
[keywords procedure arguments {argument validation} {argument integrity} subcommand]
[manpage_end]







|


















<
<
<

827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852



853
[example_begin]my_proc [cmd {-- -n1 N1}]
[emph {-> n1:'N1', n2:'', u1:'--', u2:''}][example_end]

But the '--' flag is simply ignored if the argument parser has started to handle the named arguments:

[example_begin]my_proc [cmd {U1 -- -n1 N1}]
[emph {-> n1:'N1', n2:'', u1:'U1', u2:''}]

my_proc [cmd {U1 -n1 N1 -- -n2 N2}]
[emph {-> n1:'N1', n2:'N2', u1:'U1', u2:''}][example_end]

[subsection "Raw Argument List"]

It may be necessary sometimes that the procedure body is able to access the entire list of arguments provided during a procedure call. This can happen via the [var args] variable that contains always the unprocessed argument list:

[example_begin]tepam::procedure {display_message} {
   -args {
      {-mtype -choices {Warning Error} -default Warning}
      {text -type string -multiple}

   }
} {
   puts "args: [cmd {$args}]"
}
display_message -mtype Warning "It is 7:00"
[emph {-> args: -mtype Warning {It is 7:00}}][example_end]



[manpage_end]

Changes to modules/term/ansi_cattr.man.

1
2





3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin term::ansi::code::attr n 0.1]





[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Terminal control}]
[titledesc {ANSI attribute sequences}]
[category  {Terminal control}]
[require Tcl 8.4]
[require term::ansi::code       [opt 0.1]]
[require term::ansi::code::attr [opt 0.1]]


>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin term::ansi::code::attr n 0.1]
[keywords ansi]
[keywords {attribute control}]
[keywords {color control}]
[keywords control]
[keywords terminal]
[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Terminal control}]
[titledesc {ANSI attribute sequences}]
[category  {Terminal control}]
[require Tcl 8.4]
[require term::ansi::code       [opt 0.1]]
[require term::ansi::code::attr [opt 0.1]]
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
[call [cmd ::term::ansi::code::attr::nounderline]] Underscore off.
[call [cmd ::term::ansi::code::attr::noblink]]     Blink off.
[call [cmd ::term::ansi::code::attr::norevers]]    Reverse off.
[call [cmd ::term::ansi::code::attr::nohidden]]    Hidden off.
[call [cmd ::term::ansi::code::attr::nostrike]]    Strike-through off.
[call [cmd ::term::ansi::code::attr::reset]]       Reset all attributes to their default values.
[list_end]
[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph term] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords ansi terminal control {attribute control} {color control}]
[manpage_end]







<

<
<
|
<
<
|
<
<
<
<
<

73
74
75
76
77
78
79

80


81


82





83
[call [cmd ::term::ansi::code::attr::nounderline]] Underscore off.
[call [cmd ::term::ansi::code::attr::noblink]]     Blink off.
[call [cmd ::term::ansi::code::attr::norevers]]    Reverse off.
[call [cmd ::term::ansi::code::attr::nohidden]]    Hidden off.
[call [cmd ::term::ansi::code::attr::nostrike]]    Strike-through off.
[call [cmd ::term::ansi::code::attr::reset]]       Reset all attributes to their default values.
[list_end]




[vset CATEGORY term]


[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/term/ansi_cctrl.man.

1
2





3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin term::ansi::code::ctrl n 0.1]





[copyright {2006-2008 Andreas Kupries <[email protected]>}]
[moddesc   {Terminal control}]
[titledesc {ANSI control sequences}]
[category  {Terminal control}]
[require Tcl 8.4]
[require term::ansi::code       [opt 0.1]]
[require term::ansi::code::ctrl [opt 0.1.1]]


>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin term::ansi::code::ctrl n 0.1]
[keywords ansi]
[keywords {attribute control}]
[keywords {color control}]
[keywords control]
[keywords terminal]
[copyright {2006-2008 Andreas Kupries <[email protected]>}]
[moddesc   {Terminal control}]
[titledesc {ANSI control sequences}]
[category  {Terminal control}]
[require Tcl 8.4]
[require term::ansi::code       [opt 0.1]]
[require term::ansi::code::ctrl [opt 0.1.1]]
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
[list_begin definitions]
[def A] United Kingdom Set
[def B] ASCII Set
[def 0] Special Graphics
[def 1] Alternate Character ROM Standard Character Set
[def 2] Alternate Character ROM Special Graphics
[list_end]


[call [cmd ::term::ansi::code::ctrl::sda] [arg arg]...]

Set Display Attributes. The arguments are the code sequences for the possible
attributes, as provided by the package [package term::ansi::code::attr]. For
convenience this package also provides additional commands each setting a single
specific attribute.







<







83
84
85
86
87
88
89

90
91
92
93
94
95
96
[list_begin definitions]
[def A] United Kingdom Set
[def B] ASCII Set
[def 0] Special Graphics
[def 1] Alternate Character ROM Standard Character Set
[def 2] Alternate Character ROM Special Graphics
[list_end]


[call [cmd ::term::ansi::code::ctrl::sda] [arg arg]...]

Set Display Attributes. The arguments are the code sequences for the possible
attributes, as provided by the package [package term::ansi::code::attr]. For
convenience this package also provides additional commands each setting a single
specific attribute.
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
Initialize default and alternate fonts to ASCII and box graphics.

[call [cmd ::term::ansi::code::ctrl::showat] [arg row] [arg col] [arg text]]

Format the block of text for display at the specified location.

[list_end]
[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph term] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords ansi terminal control {attribute control} {color control}]
[manpage_end]







<

<
<
|
<
<
|
<
<
<
<
<

189
190
191
192
193
194
195

196


197


198





199
Initialize default and alternate fonts to ASCII and box graphics.

[call [cmd ::term::ansi::code::ctrl::showat] [arg row] [arg col] [arg text]]

Format the block of text for display at the specified location.

[list_end]




[vset CATEGORY term]


[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/term/ansi_cmacros.man.

1
2





3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin term::ansi::code::macros n 0.1]





[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Terminal control}]
[titledesc {Macro sequences}]
[category  {Terminal control}]
[require Tcl 8.4]
[require textutil::repeat]
[require textutil::tabify]


>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin term::ansi::code::macros n 0.1]
[keywords ansi]
[keywords control]
[keywords frame]
[keywords menu]
[keywords terminal]
[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Terminal control}]
[titledesc {Macro sequences}]
[category  {Terminal control}]
[require Tcl 8.4]
[require textutil::repeat]
[require textutil::tabify]
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
red text.  The result is returned as the result of the command.

[para]

The description, [arg menu], is a dictionary mapping from menu label
to command character.


[call [cmd ::term::ansi::code::macros::frame] [arg string]]

The paragraph of text contained in the string is padded with spaces at
the right margin, after normalizing internal tabs, and then put into a
frame made of box-graphics. The result is returned as the result of
the command.

[list_end]
[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph term] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords ansi terminal control menu frame]
[manpage_end]







<








<

<
<
|
<
<
|
<
<
<
<
<

48
49
50
51
52
53
54

55
56
57
58
59
60
61
62

63


64


65





66
red text.  The result is returned as the result of the command.

[para]

The description, [arg menu], is a dictionary mapping from menu label
to command character.


[call [cmd ::term::ansi::code::macros::frame] [arg string]]

The paragraph of text contained in the string is padded with spaces at
the right margin, after normalizing internal tabs, and then put into a
frame made of box-graphics. The result is returned as the result of
the command.

[list_end]




[vset CATEGORY term]


[include ../doctools2base/include/feedback.inc]





[manpage_end]

Changes to modules/term/ansi_code.man.

1
2




3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin term::ansi::code n 0.1]




[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Terminal control}]
[titledesc {Helper for control sequences}]
[category  {Terminal control}]
[require Tcl 8.4]
[require term::ansi::code [opt 0.1]]
[description]


>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin term::ansi::code n 0.1]
[keywords control]
[keywords declare]
[keywords define]
[keywords terminal]
[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Terminal control}]
[titledesc {Helper for control sequences}]
[category  {Terminal control}]
[require Tcl 8.4]
[require term::ansi::code [opt 0.1]]
[description]
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
[call [cmd ::term::ansi::code::const] [arg name] [arg code]]

This command defines a procedure [arg name] which returns the control
sequence [arg code].

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph term] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords terminal control declare define]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<

37
38
39
40
41
42
43

44


45








46
[call [cmd ::term::ansi::code::const] [arg name] [arg code]]

This command defines a procedure [arg name] which returns the control
sequence [arg code].

[list_end]


[vset CATEGORY term]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/term/ansi_ctrlu.man.

1
2









3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin term::ansi::ctrl::unix n 0.1.1]









[copyright {2006-2011 Andreas Kupries <[email protected]>}]
[moddesc   {Terminal control}]
[titledesc {Control operations and queries}]
[category  {Terminal control}]
[require Tcl 8.4]
[require term::ansi::ctrl::unix [opt 0.1.1]]
[description]


>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin term::ansi::ctrl::unix n 0.1.1]
[keywords ansi]
[keywords columns]
[keywords control]
[keywords cooked]
[keywords {input mode}]
[keywords lines]
[keywords raw]
[keywords rows]
[keywords terminal]
[copyright {2006-2011 Andreas Kupries <[email protected]>}]
[moddesc   {Terminal control}]
[titledesc {Control operations and queries}]
[category  {Terminal control}]
[require Tcl 8.4]
[require term::ansi::ctrl::unix [opt 0.1.1]]
[description]
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81

[call [cmd ::term::ansi::ctrl::unix::rows]]

This command queries the terminal connected to the standard input for
the number of rows (aka lines) available for display.

[list_end]
[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph term] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords ansi terminal control raw cooked]
[keywords {input mode} lines rows columns]
[manpage_end]







<

<
<
|
<
<
|
<
<
<
<
<
<

69
70
71
72
73
74
75

76


77


78






79

[call [cmd ::term::ansi::ctrl::unix::rows]]

This command queries the terminal connected to the standard input for
the number of rows (aka lines) available for display.

[list_end]




[vset CATEGORY term]


[include ../doctools2base/include/feedback.inc]






[manpage_end]

Changes to modules/term/ansi_send.man.

1
2



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin term::ansi::send n 0.1]



[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Terminal control}]
[titledesc {Output of ANSI control sequences to terminals}]
[category  {Terminal control}]
[require Tcl 8.4]
[require term::ansi::send [opt 0.1]]
[description]

This package provides commands to send ANSI terminal control sequences to a
terminal. All commands come in two variants, one for sending to any channel,
the other for sending to [emph stdout].

[para]

The commands are defined using the control sequences provided by the package
[package term::ansi::code::ctrl]. They have the same arguments as the commands
they are based on, with the exception of the variant for sending to any channel.
Their first argument is always a channel handle, then followed by the original
arguments. Below we will list only the variant sending to [emph stdout].


[list_begin definitions]
[call [cmd ::term::ansi::send::import] [opt [arg ns]] [arg ...]]

Imports the commands of this package into the namespace [arg ns]. If not specified
it defaults to [emph send]. Note that this default is a relative namespace name,
i.e. the actual namespace will be created under the current namespace.


>
>
>



















<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

25
26
27
28
29
30
31
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin term::ansi::send n 0.1]
[keywords {character output}]
[keywords control]
[keywords terminal]
[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Terminal control}]
[titledesc {Output of ANSI control sequences to terminals}]
[category  {Terminal control}]
[require Tcl 8.4]
[require term::ansi::send [opt 0.1]]
[description]

This package provides commands to send ANSI terminal control sequences to a
terminal. All commands come in two variants, one for sending to any channel,
the other for sending to [emph stdout].

[para]

The commands are defined using the control sequences provided by the package
[package term::ansi::code::ctrl]. They have the same arguments as the commands
they are based on, with the exception of the variant for sending to any channel.
Their first argument is always a channel handle, then followed by the original
arguments. Below we will list only the variant sending to [emph stdout].


[list_begin definitions]
[call [cmd ::term::ansi::send::import] [opt [arg ns]] [arg ...]]

Imports the commands of this package into the namespace [arg ns]. If not specified
it defaults to [emph send]. Note that this default is a relative namespace name,
i.e. the actual namespace will be created under the current namespace.
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141

Enter Graphics Mode.

[call [cmd ::term::ansi::send::lg]]

Exit Graphics Mode.


[call [cmd ::term::ansi::send::scs0] [arg tag]]
[call [cmd ::term::ansi::send::scs1] [arg tag]]

Select Character Set.
[para]

Choose which character set is used for default (scs0) and alternate font (scs1).







<







129
130
131
132
133
134
135

136
137
138
139
140
141
142

Enter Graphics Mode.

[call [cmd ::term::ansi::send::lg]]

Exit Graphics Mode.


[call [cmd ::term::ansi::send::scs0] [arg tag]]
[call [cmd ::term::ansi::send::scs1] [arg tag]]

Select Character Set.
[para]

Choose which character set is used for default (scs0) and alternate font (scs1).
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
[list_begin definitions]
[def A] United Kingdom Set
[def B] ASCII Set
[def 0] Special Graphics
[def 1] Alternate Character ROM Standard Character Set
[def 2] Alternate Character ROM Special Graphics
[list_end]


[call [cmd ::term::ansi::send::sda] [arg arg]...]

Set Display Attributes. The arguments are the code sequences for the possible
attributes, as provided by the package [package term::ansi::code::attr]. For
convenience this package also provides additional commands each setting a single
specific attribute.







<







150
151
152
153
154
155
156

157
158
159
160
161
162
163
[list_begin definitions]
[def A] United Kingdom Set
[def B] ASCII Set
[def 0] Special Graphics
[def 1] Alternate Character ROM Standard Character Set
[def 2] Alternate Character ROM Special Graphics
[list_end]


[call [cmd ::term::ansi::send::sda] [arg arg]...]

Set Display Attributes. The arguments are the code sequences for the possible
attributes, as provided by the package [package term::ansi::code::attr]. For
convenience this package also provides additional commands each setting a single
specific attribute.
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277

[call [cmd ::term::ansi::send::showat] [arg row] [arg col] [arg text]]

Show the block of text at the specified location.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph term] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords terminal control {character output}]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<

257
258
259
260
261
262
263

264


265








266

[call [cmd ::term::ansi::send::showat] [arg row] [arg col] [arg text]]

Show the block of text at the specified location.

[list_end]


[vset CATEGORY term]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/term/imenu.man.

1
2




3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin term::interact::menu n 0.1]




[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Terminal control}]
[titledesc {Terminal widget, menu}]
[category  {Terminal control}]
[require Tcl 8.4]
[require term::interact::menu [opt 0.1]]
[description]


>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin term::interact::menu n 0.1]
[keywords control]
[keywords menu]
[keywords terminal]
[keywords {text display}]
[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Terminal control}]
[titledesc {Terminal widget, menu}]
[category  {Terminal control}]
[require Tcl 8.4]
[require term::interact::menu [opt 0.1]]
[description]
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
completed. See section [sectref Interaction] for a description of the
possible interaction.

[para]

The method returns the symbolic action of the menu item selected by
the user at the end of the interaction.


[call [arg object] [method done]]

This method can be used by user supplied actions to terminate the
interaction with the object.

[call [arg object] [method clear]]







<







51
52
53
54
55
56
57

58
59
60
61
62
63
64
completed. See section [sectref Interaction] for a description of the
possible interaction.

[para]

The method returns the symbolic action of the menu item selected by
the user at the end of the interaction.


[call [arg object] [method done]]

This method can be used by user supplied actions to terminate the
interaction with the object.

[call [arg object] [method clear]]
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164

[def Enter/Return]

The interaction with the object is terminated.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph term] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords terminal control menu {text display}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<

146
147
148
149
150
151
152
153

154











155

[def Enter/Return]

The interaction with the object is terminated.

[list_end]

[vset CATEGORY term]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/term/ipager.man.

1
2




3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin term::interact::pager n 0.1]




[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Terminal control}]
[titledesc {Terminal widget, paging}]
[category  {Terminal control}]
[require Tcl 8.4]
[require term::interact::pager [opt 0.1]]
[description]


>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin term::interact::pager n 0.1]
[keywords control]
[keywords pager]
[keywords terminal]
[keywords {text display}]
[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Terminal control}]
[titledesc {Terminal widget, paging}]
[category  {Terminal control}]
[require Tcl 8.4]
[require term::interact::pager [opt 0.1]]
[description]
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
from the terminal.

[call [arg object] [method text] [arg text]]

This method can be used to change the text shown by the pager.
The pager will reset the dispay to show the first line of the
text at the top.


[call [arg object] [method configure]]
[call [arg object] [method configure] [arg option]]
[call [arg object] [method configure] [arg option] [arg value]...]
[call [arg object] [method cget] [arg option]]

Standard methods to retrieve and configure the options of the pager.







<







61
62
63
64
65
66
67

68
69
70
71
72
73
74
from the terminal.

[call [arg object] [method text] [arg text]]

This method can be used to change the text shown by the pager.
The pager will reset the dispay to show the first line of the
text at the top.


[call [arg object] [method configure]]
[call [arg object] [method configure] [arg option]]
[call [arg object] [method configure] [arg option] [arg value]...]
[call [arg object] [method cget] [arg option]]

Standard methods to retrieve and configure the options of the pager.
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163

[def Enter/Return]

The interaction with the object is terminated.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph term] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords terminal control pager {text display}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<

145
146
147
148
149
150
151
152

153











154

[def Enter/Return]

The interaction with the object is terminated.

[list_end]

[vset CATEGORY term]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/term/receive.man.

1
2






3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin term::receive n 0.1]






[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Terminal control}]
[titledesc {General input from terminals}]
[category  {Terminal control}]
[require Tcl 8.4]
[require term::receive [opt 0.1]]
[description]


>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin term::receive n 0.1]
[keywords {character input}]
[keywords control]
[keywords {get character}]
[keywords listener]
[keywords receiver]
[keywords terminal]
[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Terminal control}]
[titledesc {General input from terminals}]
[category  {Terminal control}]
[require Tcl 8.4]
[require term::receive [opt 0.1]]
[description]
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
If not specified [arg chan] defaults to [const stdin].

[para]

It is the responsibility of the caller to make sure that the channel
can provide single characters. On unix this can be done, for example,
by using the command of package [package term::ansi::ctrl::unix].


[call [cmd ::term::receive::listen] [arg cmd] [opt [arg chan]]]

This command sets up a filevent listener for the channel with handle
[arg chan] and invokes the command prefix [arg cmd] whenever
characters have been received, or EOF was reached.








<







29
30
31
32
33
34
35

36
37
38
39
40
41
42
If not specified [arg chan] defaults to [const stdin].

[para]

It is the responsibility of the caller to make sure that the channel
can provide single characters. On unix this can be done, for example,
by using the command of package [package term::ansi::ctrl::unix].


[call [cmd ::term::receive::listen] [arg cmd] [opt [arg chan]]]

This command sets up a filevent listener for the channel with handle
[arg chan] and invokes the command prefix [arg cmd] whenever
characters have been received, or EOF was reached.

63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84

[para]

If not specified [arg chan] defaults to [const stdin].

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph term] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords terminal control {character input}]
[keywords listener receiver {get character}]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<
<

68
69
70
71
72
73
74

75


76









77

[para]

If not specified [arg chan] defaults to [const stdin].

[list_end]


[vset CATEGORY term]


[include ../doctools2base/include/feedback.inc]









[manpage_end]

Changes to modules/term/term.man.

1
2


3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin term n 0.1]


[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Terminal control}]
[titledesc {General terminal control}]
[category  {Terminal control}]
[require Tcl 8.4]
[require term [opt 0.1]]
[description]

It is planned to have this package provide highlevel general terminal control
commands, in the vein of ncurses or similar packages. Currently nothing has
been implemented however. I.e. this package is empty. It can be loaded, yet
provides nothing.

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph term] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords terminal control]
[manpage_end]


>
>













<
|
<
<
|
<
<
<
<
<
<
<
<

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

18


19








20
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin term n 0.1]
[keywords control]
[keywords terminal]
[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Terminal control}]
[titledesc {General terminal control}]
[category  {Terminal control}]
[require Tcl 8.4]
[require term [opt 0.1]]
[description]

It is planned to have this package provide highlevel general terminal control
commands, in the vein of ncurses or similar packages. Currently nothing has
been implemented however. I.e. this package is empty. It can be loaded, yet
provides nothing.


[vset CATEGORY term]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/term/term_bind.man.

1
2






3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin term::receive::bind n 0.1]






[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Terminal control}]
[titledesc {Keyboard dispatch from terminals}]
[category  {Terminal control}]
[require Tcl 8.4]
[require term::receive::bind [opt 0.1]]
[description]


>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin term::receive::bind n 0.1]
[keywords {character input}]
[keywords control]
[keywords dispatcher]
[keywords listener]
[keywords receiver]
[keywords terminal]
[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Terminal control}]
[titledesc {Keyboard dispatch from terminals}]
[category  {Terminal control}]
[require Tcl 8.4]
[require term::receive::bind [opt 0.1]]
[description]
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
This method adds an additional mapping from the string [arg str] to
the action [arg cmd]. The mapping will take effect immediately
should the processor be in a prefix of [arg str], or at the next
reset operation. The action is a command prefix and will be invoked
with one argument appended to it, the character sequence causing
the invokation. It is executed in the global namespace.


[call [arg object] [method default] [arg cmd]]

This method defines a default action [arg cmd] which will be invoked
whenever an unknown character sequence is encountered. The command
prefix is handled in the same as the regular action defined via
method [method map].


[call [arg object] [method listen] [opt [arg chan]]]

This methods sets up a filevent listener for the channel with handle
[arg chan] and invokes the dispatcher object whenever characters have
been received, or EOF was reached.

[para]

If not specified [arg chan] defaults to [const stdin].


[call [arg object] [method unlisten] [opt [arg chan]]]

This methods removes the filevent listener for the channel with handle
[arg chan].

[para]

If not specified [arg chan] defaults to [const stdin].


[call [arg object] [method reset]]

This method resets the character processor
to the beginning of the tree.


[call [arg object] [method next] [arg char]]

This method causes the character processor to process the character
[arg c]. This may simply advance the internal state, or invoke an
associated action for a recognized sequence.


[call [arg object] [method process] [arg str]]

This method causes the character processor to process the character
sequence [arg str], advancing the internal state and invoking action
as necessary. This is a callback for [method listen].


[call [arg object] [method eof]]

This method causes the character processor to handle EOF on the
input. This is currently no-op.

This is a callback for [method listen].







<






<











<









<




<







<





<







52
53
54
55
56
57
58

59
60
61
62
63
64

65
66
67
68
69
70
71
72
73
74
75

76
77
78
79
80
81
82
83
84

85
86
87
88

89
90
91
92
93
94
95

96
97
98
99
100

101
102
103
104
105
106
107
This method adds an additional mapping from the string [arg str] to
the action [arg cmd]. The mapping will take effect immediately
should the processor be in a prefix of [arg str], or at the next
reset operation. The action is a command prefix and will be invoked
with one argument appended to it, the character sequence causing
the invokation. It is executed in the global namespace.


[call [arg object] [method default] [arg cmd]]

This method defines a default action [arg cmd] which will be invoked
whenever an unknown character sequence is encountered. The command
prefix is handled in the same as the regular action defined via
method [method map].


[call [arg object] [method listen] [opt [arg chan]]]

This methods sets up a filevent listener for the channel with handle
[arg chan] and invokes the dispatcher object whenever characters have
been received, or EOF was reached.

[para]

If not specified [arg chan] defaults to [const stdin].


[call [arg object] [method unlisten] [opt [arg chan]]]

This methods removes the filevent listener for the channel with handle
[arg chan].

[para]

If not specified [arg chan] defaults to [const stdin].


[call [arg object] [method reset]]

This method resets the character processor
to the beginning of the tree.


[call [arg object] [method next] [arg char]]

This method causes the character processor to process the character
[arg c]. This may simply advance the internal state, or invoke an
associated action for a recognized sequence.


[call [arg object] [method process] [arg str]]

This method causes the character processor to process the character
sequence [arg str], advancing the internal state and invoking action
as necessary. This is a callback for [method listen].


[call [arg object] [method eof]]

This method causes the character processor to handle EOF on the
input. This is currently no-op.

This is a callback for [method listen].
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
its prefix.

[para]

In other words, the set of recognized strings has to form a
[term {prefix code}].

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph term] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords terminal control {character input}]
[keywords listener receiver dispatcher]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<
<

115
116
117
118
119
120
121

122


123









124
its prefix.

[para]

In other words, the set of recognized strings has to form a
[term {prefix code}].


[vset CATEGORY term]


[include ../doctools2base/include/feedback.inc]









[manpage_end]

Changes to modules/term/term_send.man.

1
2



3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin term::send n 0.1]



[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Terminal control}]
[titledesc {General output to terminals}]
[category  {Terminal control}]
[require Tcl 8.4]
[require term::send [opt 0.1]]
[description]


>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin term::send n 0.1]
[keywords {character output}]
[keywords control]
[keywords terminal]
[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Terminal control}]
[titledesc {General output to terminals}]
[category  {Terminal control}]
[require Tcl 8.4]
[require term::send [opt 0.1]]
[description]
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
[call [cmd ::term::send::wr] [arg str]]

This convenience command is like [cmd ::term::send::wrch], except that the
destination channel is fixed to [emph stdout].

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph term] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords terminal control {character output}]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<

27
28
29
30
31
32
33

34


35








36
[call [cmd ::term::send::wr] [arg str]]

This convenience command is like [cmd ::term::send::wrch], except that the
destination channel is fixed to [emph stdout].

[list_end]


[vset CATEGORY term]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/textutil/adjust.man.

1












2
3
4
5
6
7
8
[manpage_begin textutil::adjust n 0.7.1]












[moddesc   {Text and string utilities, macro processing}]
[titledesc {Procedures to adjust, indent, and undent paragraphs}]
[category  {Text processing}]
[require Tcl 8.2]
[require textutil::adjust [opt 0.7.1]]
[description]


>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[manpage_begin textutil::adjust n 0.7.1]
[see_also regexp(n)]
[see_also split(n)]
[see_also string(n)]
[keywords adjusting]
[keywords formatting]
[keywords hyphenation]
[keywords indenting]
[keywords justification]
[keywords paragraph]
[keywords string]
[keywords TeX]
[keywords undenting]
[moddesc   {Text and string utilities, macro processing}]
[titledesc {Procedures to adjust, indent, and undent paragraphs}]
[category  {Text processing}]
[require Tcl 8.2]
[require textutil::adjust [opt 0.7.1]]
[description]

48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77

[para]

The following options may be used after the [arg string] parameter,
and change the way the command places a [emph real] line in a
[emph logical] line.


[list_begin options]

[opt_def -full [arg boolean]]

If set to [const false] (default), trailing space characters are
deleted before returning the string. If set to [const true], any
trailing space characters are left in the string.

[opt_def -hyphenate [arg boolean]]

If set to [const false] (default), no hyphenation will be done. If set
to [const true], the command will try to hyphenate the last word of a
line. [emph Note]: Hyphenation patterns must be loaded prior, using
the command [cmd ::textutil::adjust::readPatterns].


[opt_def -justify [const center|left|plain|right]]

Sets the justification of the returned string to either [const left]
(default), [const center], [const plain] or [const right]. The
justification means that any line in the returned string but the last
one is build according to the value.







<














<







60
61
62
63
64
65
66

67
68
69
70
71
72
73
74
75
76
77
78
79
80

81
82
83
84
85
86
87

[para]

The following options may be used after the [arg string] parameter,
and change the way the command places a [emph real] line in a
[emph logical] line.


[list_begin options]

[opt_def -full [arg boolean]]

If set to [const false] (default), trailing space characters are
deleted before returning the string. If set to [const true], any
trailing space characters are left in the string.

[opt_def -hyphenate [arg boolean]]

If set to [const false] (default), no hyphenation will be done. If set
to [const true], the command will try to hyphenate the last word of a
line. [emph Note]: Hyphenation patterns must be loaded prior, using
the command [cmd ::textutil::adjust::readPatterns].


[opt_def -justify [const center|left|plain|right]]

Sets the justification of the returned string to either [const left]
(default), [const center], [const plain] or [const right]. The
justification means that any line in the returned string but the last
one is build according to the value.
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137

[opt_def  -length [arg integer]]

Set the length of the [emph logical] line in the string to
[arg integer].  [arg integer] must be a positive integer
value. Defaults to [const 72].


[opt_def -strictlength] [arg boolean]]

If set to [const false] (default), a line can exceed the specified
[option -length] if a single word is longer than [option -length]. If
set to [const true], words that are longer than [option -length] are
split so that no line exceeds the specified [option -length].

[list_end]


[call [cmd ::textutil::adjust::readPatterns] [arg filename]]

Loads the internal storage for hyphenation patterns with the contents
of the file [arg filename]. This has to be done prior to calling
command [cmd ::textutil::adjust::adjust] with "[option -hyphenate]
[const true]", or the hyphenation process will not work correctly.







<








<







124
125
126
127
128
129
130

131
132
133
134
135
136
137
138

139
140
141
142
143
144
145

[opt_def  -length [arg integer]]

Set the length of the [emph logical] line in the string to
[arg integer].  [arg integer] must be a positive integer
value. Defaults to [const 72].


[opt_def -strictlength] [arg boolean]]

If set to [const false] (default), a line can exceed the specified
[option -length] if a single word is longer than [option -length]. If
set to [const true], words that are longer than [option -length] are
split so that no line exceeds the specified [option -length].

[list_end]


[call [cmd ::textutil::adjust::readPatterns] [arg filename]]

Loads the internal storage for hyphenation patterns with the contents
of the file [arg filename]. This has to be done prior to calling
command [cmd ::textutil::adjust::adjust] with "[option -hyphenate]
[const true]", or the hyphenation process will not work correctly.
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
Use this command to query the package for the full path name of the
hyphenation file [arg filename] coming with the package. Only the
filenames found in the list returned by

[cmd ::textutil::adjust::listPredefined] are legal arguments for this
command.


[call [cmd ::textutil::adjust::indent] [arg string] [arg prefix] [opt [arg skip]]]

Each line in the [arg string] is indented by adding the string
[arg prefix] at its beginning. The modified string is returned
as the result of the command.

[para]

If [arg skip] is specified the first [arg skip] lines are left
untouched. The default for [arg skip] is [const 0], causing the
modification of all lines. Negative values for [arg skip] are treated
like [const 0]. In other words, [arg skip] > [const 0] creates a
hanging indentation.

[para]

Together with [cmd ::textutil::adjust::adjust] it is possible to
create properly wrapped paragraphs with arbitrary indentations.


[call [cmd ::textutil::adjust::undent] [arg string]]

The command computes the common prefix for all lines in [arg string]
consisting solely out of whitespace, removes this from each line and
returns the modified string.

[para]

Lines containing only whitespace are always reduced to completely
empty lines. They and empty lines are also ignored when computing the
prefix to remove.

[para]

Together with [cmd ::textutil::adjust::adjust] it is possible to
create properly wrapped paragraphs with arbitrary indentations.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph textutil] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also regexp(n) split(n) string(n)]
[keywords string justification formatting TeX hyphenation]
[keywords indenting undenting paragraph adjusting]
[manpage_end]







<


















<




















|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<

160
161
162
163
164
165
166

167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184

185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205

206













207
Use this command to query the package for the full path name of the
hyphenation file [arg filename] coming with the package. Only the
filenames found in the list returned by

[cmd ::textutil::adjust::listPredefined] are legal arguments for this
command.


[call [cmd ::textutil::adjust::indent] [arg string] [arg prefix] [opt [arg skip]]]

Each line in the [arg string] is indented by adding the string
[arg prefix] at its beginning. The modified string is returned
as the result of the command.

[para]

If [arg skip] is specified the first [arg skip] lines are left
untouched. The default for [arg skip] is [const 0], causing the
modification of all lines. Negative values for [arg skip] are treated
like [const 0]. In other words, [arg skip] > [const 0] creates a
hanging indentation.

[para]

Together with [cmd ::textutil::adjust::adjust] it is possible to
create properly wrapped paragraphs with arbitrary indentations.


[call [cmd ::textutil::adjust::undent] [arg string]]

The command computes the common prefix for all lines in [arg string]
consisting solely out of whitespace, removes this from each line and
returns the modified string.

[para]

Lines containing only whitespace are always reduced to completely
empty lines. They and empty lines are also ignored when computing the
prefix to remove.

[para]

Together with [cmd ::textutil::adjust::adjust] it is possible to
create properly wrapped paragraphs with arbitrary indentations.

[list_end]

[vset CATEGORY textutil]

[include ../doctools2base/include/feedback.inc]













[manpage_end]

Changes to modules/textutil/expander.man.

1
2








3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin textutil::expander n 1.3.1]








[copyright {William H. Duquette, http://www.wjduquette.com/expand}]
[moddesc   {Text and string utilities, macro processing}]
[titledesc {Procedures to process templates and expand text.}]
[category  {Documentation tools}]
[require Tcl 8.2]
[require textutil::expander [opt 1.3.1]]
[description]


[para]

The Tcl [cmd subst] command is often used to support a kind of
template processing. Given a string with embedded variables or
function calls, [cmd subst] will interpolate the variable and function
values, returning the new string:


>
>
>
>
>
>
>
>







<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

18
19
20
21
22
23
24
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin textutil::expander n 1.3.1]
[see_also {[uri}]
[see_also http://www.wjduquette.com/expand]
[see_also regexp]
[see_also split]
[see_also string]
[keywords string]
[keywords {template processing}]
[keywords {text expansion}]
[copyright {William H. Duquette, http://www.wjduquette.com/expand}]
[moddesc   {Text and string utilities, macro processing}]
[titledesc {Procedures to process templates and expand text.}]
[category  {Documentation tools}]
[require Tcl 8.2]
[require textutil::expander [opt 1.3.1]]
[description]


[para]

The Tcl [cmd subst] command is often used to support a kind of
template processing. Given a string with embedded variables or
function calls, [cmd subst] will interpolate the variable and function
values, returning the new string:
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169

[para]

The following commands are possible for expander objects:

[list_begin definitions]


[call [arg expanderName] [method cappend] [arg text]]

Appends a string to the output in the current context.  This command
should rarely be used by macros or application code.


[call [arg expanderName] [method cget] [arg varname]]

Retrieves the value of variable [arg varname], defined in the current
context.


[call [arg expanderName] [method cis] [arg cname]]

Determines whether or not the name of the current context is

[arg cname].


[call [arg expanderName] [method cname]]

Returns the name of the current context.


[call [arg expanderName] [method cpop] [arg cname]]

Pops a context from the context stack, returning all accumulated
output in that context.  The context must be named [arg cname], or an
error results.


[call [arg expanderName] [method ctopandclear]]

Returns the output currently captured in the topmost context and
clears that buffer. This is similar to a combination of [method cpop]
followed by [method cpush], except that internal state (brackets) is
preserved here.

[call [arg expanderName] [method cpush] [arg cname]]

Pushes a context named [arg cname] onto the context stack.  The
context must be popped by [method cpop] before expansion ends or an
error results.


[call [arg expanderName] [method cset] [arg varname] [arg value]]

Sets variable [arg varname] to [arg value] in the current context.


[call [arg expanderName] [method cvar] [arg varname]]

Retrieves the internal variable name of context variable

[arg varname]; this allows the variable to be passed to commands like
[cmd lappend].


[call [arg expanderName] [method errmode] [arg newErrmode]]

Sets the macro expansion error mode to one of [const nothing],
[const macro], [const error], or [const fail]; the default value is
[const fail].  The value determines what the expander does if an
error is detected during expansion of a macro.







<





<




<







<



<






<














<



<







<







105
106
107
108
109
110
111

112
113
114
115
116

117
118
119
120

121
122
123
124
125
126
127

128
129
130

131
132
133
134
135
136

137
138
139
140
141
142
143
144
145
146
147
148
149
150

151
152
153

154
155
156
157
158
159
160

161
162
163
164
165
166
167

[para]

The following commands are possible for expander objects:

[list_begin definitions]


[call [arg expanderName] [method cappend] [arg text]]

Appends a string to the output in the current context.  This command
should rarely be used by macros or application code.


[call [arg expanderName] [method cget] [arg varname]]

Retrieves the value of variable [arg varname], defined in the current
context.


[call [arg expanderName] [method cis] [arg cname]]

Determines whether or not the name of the current context is

[arg cname].


[call [arg expanderName] [method cname]]

Returns the name of the current context.


[call [arg expanderName] [method cpop] [arg cname]]

Pops a context from the context stack, returning all accumulated
output in that context.  The context must be named [arg cname], or an
error results.


[call [arg expanderName] [method ctopandclear]]

Returns the output currently captured in the topmost context and
clears that buffer. This is similar to a combination of [method cpop]
followed by [method cpush], except that internal state (brackets) is
preserved here.

[call [arg expanderName] [method cpush] [arg cname]]

Pushes a context named [arg cname] onto the context stack.  The
context must be popped by [method cpop] before expansion ends or an
error results.


[call [arg expanderName] [method cset] [arg varname] [arg value]]

Sets variable [arg varname] to [arg value] in the current context.


[call [arg expanderName] [method cvar] [arg varname]]

Retrieves the internal variable name of context variable

[arg varname]; this allows the variable to be passed to commands like
[cmd lappend].


[call [arg expanderName] [method errmode] [arg newErrmode]]

Sets the macro expansion error mode to one of [const nothing],
[const macro], [const error], or [const fail]; the default value is
[const fail].  The value determines what the expander does if an
error is detected during expansion of a macro.
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275

Returns the current evaluation command, which defaults to

[cmd {uplevel #0}].  If specified, [arg newEvalCmd] will be saved for
future use and then returned; it must be a Tcl command expecting one
additional argument: the macro to evaluate.


[call [arg expanderName] [method expand] [arg string] [opt [arg brackets]]]

Expands the input string, replacing embedded macros with their
expanded values, and returns the expanded string.

[para]

If [arg brackets] is given, it must be a list of two strings; the
items will be used as the left and right macro expansion bracket
sequences for this expansion only.


[call [arg expanderName] [method lb] [opt [arg newbracket]]]

Returns the current value of the left macro expansion bracket; this is
for use as or within a macro, when the bracket needs to be included in
the output text.  If [arg newbracket] is specified, it becomes the new
bracket, and is returned.


[call [arg expanderName] [method rb] [opt [arg newbracket]]]

Returns the current value of the right macro expansion bracket; this
is for use as or within a macro, when the bracket needs to be included
in the output text.  If [arg newbracket] is specified, it becomes the
new bracket, and is returned.


[call [arg expanderName] [method reset]]

Resets all expander settings to their initial values.  Unusual results
are likely if this command is called from within a call to

[method expand].


[call [arg expanderName] [method setbrackets] [arg {lbrack rbrack}]]

Sets the left and right macro expansion brackets.  This command is for
use as or within a macro, or to permanently change the bracket
definitions.  By default, the brackets are [const [lb]] and

[const [rb]], but any non-empty string can be used; for example,
[const <] and [const >] or [const (*] and [const *)] or even
[const Hello,] and [const World!].


[call [arg expanderName] [method textcmd] [opt [arg newTextCmd]]]

Returns the current command for processing plain text, which defaults
to the empty string, meaning [emph identity]. If specified,

[arg newTextCmd] will be saved for future use and then returned; it
must be a Tcl command expecting one additional argument: the text to
process. The expander object will this command for all plain text it
encounters, giving the user of the object the ability to process all
plain text in some standard way before writing it to the output. The
object expects that the command returns the processed plain text.

[para]

[emph Note] that the combination of "[cmd textcmd] [arg plaintext]"
is run through the [arg evalcmd] for the actual evaluation. In other
words, the [arg textcmd] is treated as a special macro implicitly
surrounding all plain text in the template.


[call [arg expanderName] [method where]]

Returns a three-element list containing the current character
position, line, and column the expander is at in the processing of the
current input string.








<











<






<








<






<










<



















<







193
194
195
196
197
198
199

200
201
202
203
204
205
206
207
208
209
210

211
212
213
214
215
216

217
218
219
220
221
222
223
224

225
226
227
228
229
230

231
232
233
234
235
236
237
238
239
240

241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259

260
261
262
263
264
265
266

Returns the current evaluation command, which defaults to

[cmd {uplevel #0}].  If specified, [arg newEvalCmd] will be saved for
future use and then returned; it must be a Tcl command expecting one
additional argument: the macro to evaluate.


[call [arg expanderName] [method expand] [arg string] [opt [arg brackets]]]

Expands the input string, replacing embedded macros with their
expanded values, and returns the expanded string.

[para]

If [arg brackets] is given, it must be a list of two strings; the
items will be used as the left and right macro expansion bracket
sequences for this expansion only.


[call [arg expanderName] [method lb] [opt [arg newbracket]]]

Returns the current value of the left macro expansion bracket; this is
for use as or within a macro, when the bracket needs to be included in
the output text.  If [arg newbracket] is specified, it becomes the new
bracket, and is returned.


[call [arg expanderName] [method rb] [opt [arg newbracket]]]

Returns the current value of the right macro expansion bracket; this
is for use as or within a macro, when the bracket needs to be included
in the output text.  If [arg newbracket] is specified, it becomes the
new bracket, and is returned.


[call [arg expanderName] [method reset]]

Resets all expander settings to their initial values.  Unusual results
are likely if this command is called from within a call to

[method expand].


[call [arg expanderName] [method setbrackets] [arg {lbrack rbrack}]]

Sets the left and right macro expansion brackets.  This command is for
use as or within a macro, or to permanently change the bracket
definitions.  By default, the brackets are [const [lb]] and

[const [rb]], but any non-empty string can be used; for example,
[const <] and [const >] or [const (*] and [const *)] or even
[const Hello,] and [const World!].


[call [arg expanderName] [method textcmd] [opt [arg newTextCmd]]]

Returns the current command for processing plain text, which defaults
to the empty string, meaning [emph identity]. If specified,

[arg newTextCmd] will be saved for future use and then returned; it
must be a Tcl command expecting one additional argument: the text to
process. The expander object will this command for all plain text it
encounters, giving the user of the object the ability to process all
plain text in some standard way before writing it to the output. The
object expects that the command returns the processed plain text.

[para]

[emph Note] that the combination of "[cmd textcmd] [arg plaintext]"
is run through the [arg evalcmd] for the actual evaluation. In other
words, the [arg textcmd] is treated as a special macro implicitly
surrounding all plain text in the template.


[call [arg expanderName] [method where]]

Returns a three-element list containing the current character
position, line, and column the expander is at in the processing of the
current input string.

302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
    Howdy
    % proc place {} {return "World"}
    % ::myexp expand {[set greeting], [place]!}
    Howdy, World!
    %
}]


[subsection {Embedding Macros}]

An expander macro is simply a Tcl script embedded within a text
string.  Expander evaluates the script in the global context, and
replaces it with its result string.  For example,

[para]







<







293
294
295
296
297
298
299

300
301
302
303
304
305
306
    Howdy
    % proc place {} {return "World"}
    % ::myexp expand {[set greeting], [place]!}
    Howdy, World!
    %
}]


[subsection {Embedding Macros}]

An expander macro is simply a Tcl script embedded within a text
string.  Expander evaluates the script in the global context, and
replaces it with its result string.  For example,

[para]
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
    Hi, World!
    What's up, World!

    And that's just a small sample!
    %
}]


[subsection {Writing Macro Commands}]

More typically, [emph {macro commands}] are used to create a markup
language.  A macro command is just a Tcl command that returns an
output string.  For example, expand can be used to implement a generic
document markup language that can be retargeted to HTML or any other
output format:







<







319
320
321
322
323
324
325

326
327
328
329
330
331
332
    Hi, World!
    What's up, World!

    And that's just a small sample!
    %
}]


[subsection {Writing Macro Commands}]

More typically, [emph {macro commands}] are used to create a markup
language.  A macro command is just a Tcl command that returns an
output string.  For example, expand can be used to implement a generic
document markup language that can be retargeted to HTML or any other
output format:
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
    %
}]
[para]

The above definitions of [cmd bold] and [cmd /bold] returns HTML, but
such commands can be as complicated as needed; they could, for
example, decide what to return based on the desired output format.


[subsection {Changing the Expansion Brackets}]

By default, embedded macros are enclosed in square brackets,

[const [lb]] and [const [rb]].  If square brackets need to be
included in the output, the input can contain the [cmd lb] and







<







340
341
342
343
344
345
346

347
348
349
350
351
352
353
    %
}]
[para]

The above definitions of [cmd bold] and [cmd /bold] returns HTML, but
such commands can be as complicated as needed; they could, for
example, decide what to return based on the desired output format.


[subsection {Changing the Expansion Brackets}]

By default, embedded macros are enclosed in square brackets,

[const [lb]] and [const [rb]].  If square brackets need to be
included in the output, the input can contain the [cmd lb] and
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
[example {
    % ::myexp setbrackets "\\[" "\\]"
    % ::myexp expand {<bold>This is boldface</bold>} {< >}
    <b>This is boldface</b>
    %
}]


[subsection {Customized Macro Expansion}]

By default, macros are evaluated using the Tcl [cmd {uplevel #0}]
command, so that the embedded code executes in the global context.
The application can provide a different evaluation command using
[method evalcmd]; this allows the application to use a safe
interpreter, for example, or even to evaluated something other than
Tcl code.  There is one caveat: to be recognized as valid, a macro
must return 1 when passed to Tcl's "info complete" command.

[para]

For example, the following code "evaluates" each macro by returning
the macro text itself.

[para]
[example {
    proc identity {macro} {return $macro}
    ::myexp evalcmd identity
}]


[subsection {Using the Context Stack}]

Often it's desirable to define a pair of macros which operate in some
way on the plain text between them.  Consider a set of macros for
adding footnotes to a web page: one could have implement something
like this:







<




















<







377
378
379
380
381
382
383

384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403

404
405
406
407
408
409
410
[example {
    % ::myexp setbrackets "\\[" "\\]"
    % ::myexp expand {<bold>This is boldface</bold>} {< >}
    <b>This is boldface</b>
    %
}]


[subsection {Customized Macro Expansion}]

By default, macros are evaluated using the Tcl [cmd {uplevel #0}]
command, so that the embedded code executes in the global context.
The application can provide a different evaluation command using
[method evalcmd]; this allows the application to use a safe
interpreter, for example, or even to evaluated something other than
Tcl code.  There is one caveat: to be recognized as valid, a macro
must return 1 when passed to Tcl's "info complete" command.

[para]

For example, the following code "evaluates" each macro by returning
the macro text itself.

[para]
[example {
    proc identity {macro} {return $macro}
    ::myexp evalcmd identity
}]


[subsection {Using the Context Stack}]

Often it's desirable to define a pair of macros which operate in some
way on the plain text between them.  Consider a set of macros for
adding footnotes to a web page: one could have implement something
like this:
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
or [method cname].

[section HISTORY]

[cmd expander] was written by William H. Duquette; it is a repackaging
of the central algorithm of the expand macro processing tool.

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph {textutil :: expander}] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also regexp split string [uri http://www.wjduquette.com/expand]]
[keywords string {template processing} {text expansion}]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<
<

499
500
501
502
503
504
505

506


507









508
or [method cname].

[section HISTORY]

[cmd expander] was written by William H. Duquette; it is a repackaging
of the central algorithm of the expand macro processing tool.


[vset CATEGORY textutil]


[include ../doctools2base/include/feedback.inc]









[manpage_end]

Changes to modules/textutil/repeat.man.

1






2
3
4
5
6
7
8
[manpage_begin textutil::repeat n 0.7.1]






[moddesc   {Text and string utilities, macro processing}]
[titledesc {Procedures to repeat strings.}]
[category  {Text processing}]
[require Tcl 8.2]
[require textutil::repeat [opt 0.7]]
[description]


>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
[manpage_begin textutil::repeat n 0.7.1]
[see_also regexp(n)]
[see_also split(n)]
[see_also string(n)]
[keywords blanks]
[keywords repetition]
[keywords string]
[moddesc   {Text and string utilities, macro processing}]
[titledesc {Procedures to repeat strings.}]
[category  {Text processing}]
[require Tcl 8.2]
[require textutil::repeat [opt 0.7]]
[description]

31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

[call [cmd ::textutil::repeat::blank] [arg num]]

A convenience command. Returns a string of [arg num] spaces.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph textutil] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also regexp(n) split(n) string(n)]
[keywords string repetition blanks]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<

37
38
39
40
41
42
43
44

45












46

[call [cmd ::textutil::repeat::blank] [arg num]]

A convenience command. Returns a string of [arg num] spaces.

[list_end]

[vset CATEGORY textutil]

[include ../doctools2base/include/feedback.inc]












[manpage_end]

Changes to modules/textutil/tabify.man.

1






2
3
4
5
6
7
8
[manpage_begin textutil::tabify n 0.7]






[moddesc   {Text and string utilities, macro processing}]
[titledesc {Procedures to (un)tabify strings}]
[category  {Text processing}]
[require Tcl 8.2]
[require textutil::tabify [opt 0.7]]
[description]


>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
[manpage_begin textutil::tabify n 0.7]
[see_also regexp(n)]
[see_also split(n)]
[see_also string(n)]
[keywords formatting]
[keywords string]
[keywords tabstops]
[moddesc   {Text and string utilities, macro processing}]
[titledesc {Procedures to (un)tabify strings}]
[category  {Text processing}]
[require Tcl 8.2]
[require textutil::tabify [opt 0.7]]
[description]

17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82

[call [cmd ::textutil::tabify::tabify] [arg string] [opt [arg num]]]

Tabify the [arg string] by replacing any substring of [arg num] space
chars by a tabulation and return the result as a new string. [arg num]
defaults to 8.


[call [cmd ::textutil::tabify::tabify2] [arg string] [opt [arg num]]]

Similar to [cmd ::textutil::tabify] this command tabifies the

[arg string] and returns the result as a new string. A different
algorithm is used however. Instead of replacing any substring of
[arg num] spaces this command works more like an editor. [arg num]
defaults to 8.

[para]

Each line of the text in [arg string] is treated as if there are
tabstops every [arg num] columns. Only sequences of space characters
containing more than one space character and found immediately before
a tabstop are replaced with tabs.


[call [cmd ::textutil::tabify::untabify] [arg string] [opt [arg num]]]

Untabify the [arg string] by replacing any tabulation char by a
substring of [arg num] space chars and return the result as a new
string. [arg num] defaults to 8.


[call [cmd ::textutil::tabify::untabify2] [arg string] [opt [arg num]]]

Untabify the [arg string] by replacing any tabulation char by a
substring of at most [arg num] space chars and return the result as a
new string. Unlike [cmd textutil::tabify::untabify] each tab is not
replaced by a fixed number of space characters.  The command overlays
each line in the [arg string] with tabstops every [arg num] columns
instead and replaces tabs with just enough space characters to reach
the next tabstop. This is the complement of the actions taken by
[cmd ::textutil::tabify::tabify2]. [arg num] defaults to 8.

[para]

There is one asymmetry though: A tab can be replaced with a single
space, but not the other way around.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph textutil] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also regexp(n) split(n) string(n)]
[keywords string formatting tabstops]
[manpage_end]







<
















<





<



















|
<
|
<
<
<
<
<
<
<
<
<
<
<
<

23
24
25
26
27
28
29

30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

46
47
48
49
50

51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70

71












72

[call [cmd ::textutil::tabify::tabify] [arg string] [opt [arg num]]]

Tabify the [arg string] by replacing any substring of [arg num] space
chars by a tabulation and return the result as a new string. [arg num]
defaults to 8.


[call [cmd ::textutil::tabify::tabify2] [arg string] [opt [arg num]]]

Similar to [cmd ::textutil::tabify] this command tabifies the

[arg string] and returns the result as a new string. A different
algorithm is used however. Instead of replacing any substring of
[arg num] spaces this command works more like an editor. [arg num]
defaults to 8.

[para]

Each line of the text in [arg string] is treated as if there are
tabstops every [arg num] columns. Only sequences of space characters
containing more than one space character and found immediately before
a tabstop are replaced with tabs.


[call [cmd ::textutil::tabify::untabify] [arg string] [opt [arg num]]]

Untabify the [arg string] by replacing any tabulation char by a
substring of [arg num] space chars and return the result as a new
string. [arg num] defaults to 8.


[call [cmd ::textutil::tabify::untabify2] [arg string] [opt [arg num]]]

Untabify the [arg string] by replacing any tabulation char by a
substring of at most [arg num] space chars and return the result as a
new string. Unlike [cmd textutil::tabify::untabify] each tab is not
replaced by a fixed number of space characters.  The command overlays
each line in the [arg string] with tabstops every [arg num] columns
instead and replaces tabs with just enough space characters to reach
the next tabstop. This is the complement of the actions taken by
[cmd ::textutil::tabify::tabify2]. [arg num] defaults to 8.

[para]

There is one asymmetry though: A tab can be replaced with a single
space, but not the other way around.

[list_end]

[vset CATEGORY textutil]

[include ../doctools2base/include/feedback.inc]












[manpage_end]

Changes to modules/textutil/textutil.man.

1











2
3
4
5
6
7
8
[manpage_begin textutil n 0.7.1]











[moddesc   {Text and string utilities, macro processing}]
[titledesc {Procedures to manipulate texts and strings.}]
[category  {Text processing}]
[require Tcl 8.2]
[require textutil [opt 0.7.1]]
[description]


>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[manpage_begin textutil n 0.7.1]
[see_also regexp(n)]
[see_also split(n)]
[see_also string(n)]
[keywords formatting]
[keywords hyphenation]
[keywords indenting]
[keywords paragraph]
[keywords {regular expression}]
[keywords string]
[keywords TeX]
[keywords trimming]
[moddesc   {Text and string utilities, macro processing}]
[titledesc {Procedures to manipulate texts and strings.}]
[category  {Text processing}]
[require Tcl 8.2]
[require textutil [opt 0.7.1]]
[description]

63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
trailing spaces are ignored before returning the string (see

[option -full] option below). The following options may be used after the
[arg string] parameter, and change the way the command place a

[emph real] line in a [emph logical] line.


[list_begin definitions]

[def "-full [arg boolean]"]

If set to [const false], any trailing space chars are deleted before
returning the string. If set to [const true], any trailing space
chars are left in the string. Default to [const false].

[def "[option -hyphenate] [arg boolean]"]

if set to [const false], no hyphenation will be done. If set to
[const true], the last word of a line is tried to be hyphenated.
Defaults to [const false]. Note: hyphenation patterns must be loaded
prior, using the command [cmd ::textutil::adjust::readPatterns].


[def "[option -justify] [const center|left|plain|right]"]

Set the justification of the returned string to [const center],

[const left], [const plain] or [const right]. By default, it is set to
[const left].  The justification means that any line in the returned







<














<







74
75
76
77
78
79
80

81
82
83
84
85
86
87
88
89
90
91
92
93
94

95
96
97
98
99
100
101
trailing spaces are ignored before returning the string (see

[option -full] option below). The following options may be used after the
[arg string] parameter, and change the way the command place a

[emph real] line in a [emph logical] line.


[list_begin definitions]

[def "-full [arg boolean]"]

If set to [const false], any trailing space chars are deleted before
returning the string. If set to [const true], any trailing space
chars are left in the string. Default to [const false].

[def "[option -hyphenate] [arg boolean]"]

if set to [const false], no hyphenation will be done. If set to
[const true], the last word of a line is tried to be hyphenated.
Defaults to [const false]. Note: hyphenation patterns must be loaded
prior, using the command [cmd ::textutil::adjust::readPatterns].


[def "[option -justify] [const center|left|plain|right]"]

Set the justification of the returned string to [const center],

[const left], [const plain] or [const right]. By default, it is set to
[const left].  The justification means that any line in the returned
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154

[def "[option -length] [arg integer]"]

Set the length of the [emph logical] line in the string to
[arg integer].  [arg integer] must be a positive integer
value. Defaults to [const 72].


[def "[option -strictlength] [arg boolean]"]

If set to [const false], a line can exceed the specified

[option -length] if a single word is longer than [option -length]. If
set to [const true], words that are longer than [option -length] are
split so that no line exceeds the specified [option -length]. Defaults
to [const false].

[list_end]


[call [cmd ::textutil::adjust::readPatterns] [arg filename]]

Loads the internal storage for hyphenation patterns with the contents
of the file [arg filename]. This has to be done prior to calling
command [cmd ::textutil::adjust] with








<










<







138
139
140
141
142
143
144

145
146
147
148
149
150
151
152
153
154

155
156
157
158
159
160
161

[def "[option -length] [arg integer]"]

Set the length of the [emph logical] line in the string to
[arg integer].  [arg integer] must be a positive integer
value. Defaults to [const 72].


[def "[option -strictlength] [arg boolean]"]

If set to [const false], a line can exceed the specified

[option -length] if a single word is longer than [option -length]. If
set to [const true], words that are longer than [option -length] are
split so that no line exceeds the specified [option -length]. Defaults
to [const false].

[list_end]


[call [cmd ::textutil::adjust::readPatterns] [arg filename]]

Loads the internal storage for hyphenation patterns with the contents
of the file [arg filename]. This has to be done prior to calling
command [cmd ::textutil::adjust] with

171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
Use this command to query the package for the full path name of the
hyphenation file [arg filename] coming with the package. Only the
filenames found in the list returned by

[cmd ::textutil::adjust::listPredefined] are legal arguments for this
command.


[call [cmd ::textutil::indent] [arg string] [arg prefix] [opt [arg skip]]]

Each line in the [arg string] indented by adding the string
[arg prefix] at its beginning. The modified string is returned
as the result of the command.

[para]

If [arg skip] is specified the first [arg skip] lines are left
untouched. The default for [arg skip] is [const 0], causing the
modification of all lines. Negative values for [arg skip] are treated
like [const 0]. In other words, [arg skip] > [const 0] creates a
hanging indentation.

[para]

Together with [cmd ::textutil::adjust] it is possible to create
properly wrapped paragraphs with arbitrary indentations.


[call [cmd ::textutil::undent] [arg string]]

The command computes the common prefix for all
lines in [arg string] consisting solely out of whitespace,
removes this from each line and returns the modified string.

[para]

Lines containing only whitespace are always reduced to completely
empty lines. They and empty lines are also ignored when computing the
prefix to remove.

[para]

Together with [cmd ::textutil::adjust] it is possible to create
properly wrapped paragraphs with arbitrary indentations.


[call [cmd ::textutil::splitn] [arg string] [opt [arg len]]]

This command splits the given [arg string] into chunks of [arg len]
characters and returns a list containing these chunks. The argument
[arg len] defaults to [const 1] if none is specified. A negative
length is not allowed and will cause the command to throw an







<



















<
















<







178
179
180
181
182
183
184

185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203

204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219

220
221
222
223
224
225
226
Use this command to query the package for the full path name of the
hyphenation file [arg filename] coming with the package. Only the
filenames found in the list returned by

[cmd ::textutil::adjust::listPredefined] are legal arguments for this
command.


[call [cmd ::textutil::indent] [arg string] [arg prefix] [opt [arg skip]]]

Each line in the [arg string] indented by adding the string
[arg prefix] at its beginning. The modified string is returned
as the result of the command.

[para]

If [arg skip] is specified the first [arg skip] lines are left
untouched. The default for [arg skip] is [const 0], causing the
modification of all lines. Negative values for [arg skip] are treated
like [const 0]. In other words, [arg skip] > [const 0] creates a
hanging indentation.

[para]

Together with [cmd ::textutil::adjust] it is possible to create
properly wrapped paragraphs with arbitrary indentations.


[call [cmd ::textutil::undent] [arg string]]

The command computes the common prefix for all
lines in [arg string] consisting solely out of whitespace,
removes this from each line and returns the modified string.

[para]

Lines containing only whitespace are always reduced to completely
empty lines. They and empty lines are also ignored when computing the
prefix to remove.

[para]

Together with [cmd ::textutil::adjust] it is possible to create
properly wrapped paragraphs with arbitrary indentations.


[call [cmd ::textutil::splitn] [arg string] [opt [arg len]]]

This command splits the given [arg string] into chunks of [arg len]
characters and returns a list containing these chunks. The argument
[arg len] defaults to [const 1] if none is specified. A negative
length is not allowed and will cause the command to throw an
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
additional element. If the [arg string] is empty the result is the
empty list, like for [cmd split]. If [arg regexp] is empty the

[arg string] is split at every character, like [cmd split] does.

The regular expression [arg regexp] defaults to "[lb]\\t \\r\\n[rb]+".


[call [cmd ::textutil::tabify] [arg string] [opt [arg num]]]

Tabify the [arg string] by replacing any substring of [arg num] space
chars by a tabulation and return the result as a new string. [arg num]
defaults to 8.


[call [cmd ::textutil::tabify2] [arg string] [opt [arg num]]]

Similar to [cmd ::textutil::tabify] this command tabifies the

[arg string] and returns the result as a new string. A different
algorithm is used however. Instead of replacing any substring of

[arg num] spaces this command works more like an editor. [arg num]
defaults to 8.

[para]

Each line of the text in [arg string] is treated as if there are
tabstops every [arg num] columns. Only sequences of space characters
containing more than one space character and found immediately before
a tabstop are replaced with tabs.


[call [cmd ::textutil::trim] [arg string] [opt [arg regexp]]]

Remove in [arg string] any leading and trailing substring according to
the regular expression [arg regexp] and return the result as a new
string.  This apply on any [emph line] in the string, that is any
substring between 2 newline chars, or between the beginning of the
string and a newline, or between a newline and the end of the string,
or, if the string contain no newline, between the beginning and the
end of the string.

The regular expression [arg regexp] defaults to "[lb] \\t[rb]+".


[call [cmd ::textutil::trimleft] [arg string] [opt [arg regexp]]]

Remove in [arg string] any leading substring according to the regular
expression [arg regexp] and return the result as a new string. This
apply on any [emph line] in the string, that is any substring between
2 newline chars, or between the beginning of the string and a newline,







<





<


















<











<







238
239
240
241
242
243
244

245
246
247
248
249

250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267

268
269
270
271
272
273
274
275
276
277
278

279
280
281
282
283
284
285
additional element. If the [arg string] is empty the result is the
empty list, like for [cmd split]. If [arg regexp] is empty the

[arg string] is split at every character, like [cmd split] does.

The regular expression [arg regexp] defaults to "[lb]\\t \\r\\n[rb]+".


[call [cmd ::textutil::tabify] [arg string] [opt [arg num]]]

Tabify the [arg string] by replacing any substring of [arg num] space
chars by a tabulation and return the result as a new string. [arg num]
defaults to 8.


[call [cmd ::textutil::tabify2] [arg string] [opt [arg num]]]

Similar to [cmd ::textutil::tabify] this command tabifies the

[arg string] and returns the result as a new string. A different
algorithm is used however. Instead of replacing any substring of

[arg num] spaces this command works more like an editor. [arg num]
defaults to 8.

[para]

Each line of the text in [arg string] is treated as if there are
tabstops every [arg num] columns. Only sequences of space characters
containing more than one space character and found immediately before
a tabstop are replaced with tabs.


[call [cmd ::textutil::trim] [arg string] [opt [arg regexp]]]

Remove in [arg string] any leading and trailing substring according to
the regular expression [arg regexp] and return the result as a new
string.  This apply on any [emph line] in the string, that is any
substring between 2 newline chars, or between the beginning of the
string and a newline, or between a newline and the end of the string,
or, if the string contain no newline, between the beginning and the
end of the string.

The regular expression [arg regexp] defaults to "[lb] \\t[rb]+".


[call [cmd ::textutil::trimleft] [arg string] [opt [arg regexp]]]

Remove in [arg string] any leading substring according to the regular
expression [arg regexp] and return the result as a new string. This
apply on any [emph line] in the string, that is any substring between
2 newline chars, or between the beginning of the string and a newline,
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
apply on any [emph line] in the string, that is any substring between
2 newline chars, or between the beginning of the string and a newline,
or between a newline and the end of the string, or, if the string
contain no newline, between the beginning and the end of the string.

The regular expression [arg regexp] defaults to "[lb] \\t[rb]+".


[call [cmd ::textutil::trimPrefix] [arg string] [arg prefix]]

Removes the [arg prefix] from the beginning of [arg string] and
returns the result. The [arg string] is left unchanged if it doesn't
have [arg prefix] at its beginning.


[call [cmd ::textutil::trimEmptyHeading] [arg string]]

Looks for empty lines (including lines consisting of only whitespace)
at the beginning of the [arg string] and removes it. The modified
string is returned as the result of the command.


[call [cmd ::textutil::untabify] [arg string] [opt [arg num]]]

Untabify the [arg string] by replacing any tabulation char by a
substring of [arg num] space chars and return the result as a new
string. [arg num] defaults to 8.


[call [cmd ::textutil::untabify2] [arg string] [opt [arg num]]]

Untabify the [arg string] by replacing any tabulation char by a
substring of at most [arg num] space chars and return the result as a
new string. Unlike [cmd textutil::untabify] each tab is not replaced
by a fixed number of space characters.  The command overlays each line
in the [arg string] with tabstops every [arg num] columns instead and
replaces tabs with just enough space characters to reach the next
tabstop. This is the complement of the actions taken by

[cmd ::textutil::tabify2]. [arg num] defaults to 8.

[para]

There is one asymmetry though: A tab can be replaced with a single
space, but not the other way around.


[call [cmd ::textutil::strRepeat] [arg "text num"]]

The implementation depends on the core executing the package. Used
[cmd "string repeat"] if it is present, or a fast tcl implementation
if it is not. Returns a string containing the [arg text] repeated

[arg num] times. The repetitions are joined without characters between
them. A value of [arg num] <= 0 causes the command to return an empty
string.


[call [cmd ::textutil::blank] [arg num]]

A convenience command. Returns a string of [arg num] spaces.

[call [cmd ::textutil::chop] [arg string]]








<





<







<





<


















<









<







295
296
297
298
299
300
301

302
303
304
305
306

307
308
309
310
311
312
313

314
315
316
317
318

319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336

337
338
339
340
341
342
343
344
345

346
347
348
349
350
351
352
apply on any [emph line] in the string, that is any substring between
2 newline chars, or between the beginning of the string and a newline,
or between a newline and the end of the string, or, if the string
contain no newline, between the beginning and the end of the string.

The regular expression [arg regexp] defaults to "[lb] \\t[rb]+".


[call [cmd ::textutil::trimPrefix] [arg string] [arg prefix]]

Removes the [arg prefix] from the beginning of [arg string] and
returns the result. The [arg string] is left unchanged if it doesn't
have [arg prefix] at its beginning.


[call [cmd ::textutil::trimEmptyHeading] [arg string]]

Looks for empty lines (including lines consisting of only whitespace)
at the beginning of the [arg string] and removes it. The modified
string is returned as the result of the command.


[call [cmd ::textutil::untabify] [arg string] [opt [arg num]]]

Untabify the [arg string] by replacing any tabulation char by a
substring of [arg num] space chars and return the result as a new
string. [arg num] defaults to 8.


[call [cmd ::textutil::untabify2] [arg string] [opt [arg num]]]

Untabify the [arg string] by replacing any tabulation char by a
substring of at most [arg num] space chars and return the result as a
new string. Unlike [cmd textutil::untabify] each tab is not replaced
by a fixed number of space characters.  The command overlays each line
in the [arg string] with tabstops every [arg num] columns instead and
replaces tabs with just enough space characters to reach the next
tabstop. This is the complement of the actions taken by

[cmd ::textutil::tabify2]. [arg num] defaults to 8.

[para]

There is one asymmetry though: A tab can be replaced with a single
space, but not the other way around.


[call [cmd ::textutil::strRepeat] [arg "text num"]]

The implementation depends on the core executing the package. Used
[cmd "string repeat"] if it is present, or a fast tcl implementation
if it is not. Returns a string containing the [arg text] repeated

[arg num] times. The repetitions are joined without characters between
them. A value of [arg num] <= 0 causes the command to return an empty
string.


[call [cmd ::textutil::blank] [arg num]]

A convenience command. Returns a string of [arg num] spaces.

[call [cmd ::textutil::chop] [arg string]]

370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409

[call [cmd ::textutil::uncap] [arg string]]

The complementary operation to [cmd ::textutil::cap]. Forces the first
character of [arg string] to lower case and returns the modified
string.


[call [cmd ::textutil::longestCommonPrefixList] [arg list]]
[call [cmd ::textutil::longestCommonPrefix] [opt [arg string]...]]

Computes the longest common prefix for either the [arg string]s given
to the command, or the strings specified in the single [arg list], and
returns it as the result of the command.

[para]

If no strings were specified the result is the empty string.  If only
one string was specified, the string itself is returned, as it is its
own longest common prefix.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph textutil] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also regexp(n) split(n) string(n)]
[keywords string {regular expression} formatting TeX hyphenation]
[keywords indenting trimming paragraph]
[manpage_end]







<















|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<

364
365
366
367
368
369
370

371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386

387













388

[call [cmd ::textutil::uncap] [arg string]]

The complementary operation to [cmd ::textutil::cap]. Forces the first
character of [arg string] to lower case and returns the modified
string.


[call [cmd ::textutil::longestCommonPrefixList] [arg list]]
[call [cmd ::textutil::longestCommonPrefix] [opt [arg string]...]]

Computes the longest common prefix for either the [arg string]s given
to the command, or the strings specified in the single [arg list], and
returns it as the result of the command.

[para]

If no strings were specified the result is the empty string.  If only
one string was specified, the string itself is returned, as it is its
own longest common prefix.

[list_end]

[vset CATEGORY textutil]

[include ../doctools2base/include/feedback.inc]













[manpage_end]

Changes to modules/textutil/textutil_split.man.

1






2
3
4
5
6
7
8
[manpage_begin textutil::split n 0.7]






[moddesc   {Text and string utilities, macro processing}]
[titledesc {Procedures to split texts}]
[category  {Text processing}]
[require Tcl 8.2]
[require textutil::split [opt 0.7]]
[description]


>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
[manpage_begin textutil::split n 0.7]
[see_also regexp(n)]
[see_also split(n)]
[see_also string(n)]
[keywords {regular expression}]
[keywords split]
[keywords string]
[moddesc   {Text and string utilities, macro processing}]
[titledesc {Procedures to split texts}]
[category  {Text processing}]
[require Tcl 8.2]
[require textutil::split [opt 0.7]]
[description]

38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
empty list, like for [cmd split]. If [arg regexp] is empty the
[arg string] is split at every character, like [cmd split] does.

The regular expression [arg regexp] defaults to "[lb]\\t \\r\\n[rb]+".

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph textutil] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also regexp(n) split(n) string(n)]
[keywords string {regular expression} split]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<

44
45
46
47
48
49
50
51

52












53
empty list, like for [cmd split]. If [arg regexp] is empty the
[arg string] is split at every character, like [cmd split] does.

The regular expression [arg regexp] defaults to "[lb]\\t \\r\\n[rb]+".

[list_end]

[vset CATEGORY textutil]

[include ../doctools2base/include/feedback.inc]












[manpage_end]

Changes to modules/textutil/textutil_string.man.

1










2
3
4
5
6
7
8
[manpage_begin textutil::string n 0.7]










[moddesc   {Text and string utilities, macro processing}]
[titledesc {Procedures to manipulate texts and strings.}]
[category  {Text processing}]
[require Tcl 8.2]
[require textutil::string [opt 0.7]]
[description]


>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[manpage_begin textutil::string n 0.7]
[see_also regexp(n)]
[see_also split(n)]
[see_also string(n)]
[keywords capitalize]
[keywords chop]
[keywords {common prefix}]
[keywords formatting]
[keywords prefix]
[keywords string]
[keywords uncapitalize]
[moddesc   {Text and string utilities, macro processing}]
[titledesc {Procedures to manipulate texts and strings.}]
[category  {Text processing}]
[require Tcl 8.2]
[require textutil::string [opt 0.7]]
[description]

32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71

[call [cmd ::textutil::string::uncap] [arg string]]

The complementary operation to [cmd ::textutil::string::cap]. Forces
the first character of [arg string] to lower case and returns the
modified string.


[call [cmd ::textutil::string::longestCommonPrefixList] [arg list]]
[call [cmd ::textutil::string::longestCommonPrefix] [opt [arg string]...]]

Computes the longest common prefix for either the [arg string]s given
to the command, or the strings specified in the single [arg list], and
returns it as the result of the command.

[para]

If no strings were specified the result is the empty string.  If only
one string was specified, the string itself is returned, as it is its
own longest common prefix.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph textutil] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also regexp(n) split(n) string(n)]
[keywords string capitalize formatting prefix uncapitalize]
[keywords chop {common prefix}]
[manpage_end]







<















|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<

42
43
44
45
46
47
48

49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64

65













66

[call [cmd ::textutil::string::uncap] [arg string]]

The complementary operation to [cmd ::textutil::string::cap]. Forces
the first character of [arg string] to lower case and returns the
modified string.


[call [cmd ::textutil::string::longestCommonPrefixList] [arg list]]
[call [cmd ::textutil::string::longestCommonPrefix] [opt [arg string]...]]

Computes the longest common prefix for either the [arg string]s given
to the command, or the strings specified in the single [arg list], and
returns it as the result of the command.

[para]

If no strings were specified the result is the empty string.  If only
one string was specified, the string itself is returned, as it is its
own longest common prefix.

[list_end]

[vset CATEGORY textutil]

[include ../doctools2base/include/feedback.inc]













[manpage_end]

Changes to modules/textutil/trim.man.

1







2
3
4
5
6
7
8
[manpage_begin textutil::trim n 0.7]







[moddesc   {Text and string utilities, macro processing}]
[titledesc {Procedures to trim strings}]
[category  {Text processing}]
[require Tcl 8.2]
[require textutil::trim [opt 0.7]]
[description]


>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[manpage_begin textutil::trim n 0.7]
[see_also regexp(n)]
[see_also split(n)]
[see_also string(n)]
[keywords prefix]
[keywords {regular expression}]
[keywords string]
[keywords trimming]
[moddesc   {Text and string utilities, macro processing}]
[titledesc {Procedures to trim strings}]
[category  {Text processing}]
[require Tcl 8.2]
[require textutil::trim [opt 0.7]]
[description]

23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
substring between 2 newline chars, or between the beginning of the
string and a newline, or between a newline and the end of the string,
or, if the string contain no newline, between the beginning and the
end of the string.

The regular expression [arg regexp] defaults to "[lb] \\t[rb]+".


[call [cmd ::textutil::trim::trimleft] [arg string] [opt [arg regexp]]]

Remove in [arg string] any leading substring according to the regular
expression [arg regexp] and return the result as a new string. This
apply on any [emph line] in the string, that is any substring between
2 newline chars, or between the beginning of the string and a newline,
or between a newline and the end of the string, or, if the string







<







30
31
32
33
34
35
36

37
38
39
40
41
42
43
substring between 2 newline chars, or between the beginning of the
string and a newline, or between a newline and the end of the string,
or, if the string contain no newline, between the beginning and the
end of the string.

The regular expression [arg regexp] defaults to "[lb] \\t[rb]+".


[call [cmd ::textutil::trim::trimleft] [arg string] [opt [arg regexp]]]

Remove in [arg string] any leading substring according to the regular
expression [arg regexp] and return the result as a new string. This
apply on any [emph line] in the string, that is any substring between
2 newline chars, or between the beginning of the string and a newline,
or between a newline and the end of the string, or, if the string
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
apply on any [emph line] in the string, that is any substring between
2 newline chars, or between the beginning of the string and a newline,
or between a newline and the end of the string, or, if the string
contain no newline, between the beginning and the end of the string.

The regular expression [arg regexp] defaults to "[lb] \\t[rb]+".


[call [cmd ::textutil::trim::trimPrefix] [arg string] [arg prefix]]

Removes the [arg prefix] from the beginning of [arg string] and
returns the result. The [arg string] is left unchanged if it doesn't
have [arg prefix] at its beginning.


[call [cmd ::textutil::trim::trimEmptyHeading] [arg string]]

Looks for empty lines (including lines consisting of only whitespace)
at the beginning of the [arg string] and removes it. The modified
string is returned as the result of the command.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph textutil] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[see_also regexp(n) split(n) string(n)]
[keywords string {regular expression} trimming prefix]
[manpage_end]







<





<









|
<
|
<
<
<
<
<
<
<
<
<
<
<
<

52
53
54
55
56
57
58

59
60
61
62
63

64
65
66
67
68
69
70
71
72
73

74












75
apply on any [emph line] in the string, that is any substring between
2 newline chars, or between the beginning of the string and a newline,
or between a newline and the end of the string, or, if the string
contain no newline, between the beginning and the end of the string.

The regular expression [arg regexp] defaults to "[lb] \\t[rb]+".


[call [cmd ::textutil::trim::trimPrefix] [arg string] [arg prefix]]

Removes the [arg prefix] from the beginning of [arg string] and
returns the result. The [arg string] is left unchanged if it doesn't
have [arg prefix] at its beginning.


[call [cmd ::textutil::trim::trimEmptyHeading] [arg string]]

Looks for empty lines (including lines consisting of only whitespace)
at the beginning of the [arg string] and removes it. The modified
string is returned as the result of the command.

[list_end]

[vset CATEGORY textutil]

[include ../doctools2base/include/feedback.inc]












[manpage_end]

Changes to modules/tie/tie.man.

1







2
3
4
5
6
7
8
[manpage_begin tie n 1.1]







[copyright {2004-2008 Andreas Kupries <[email protected]>}]
[moddesc   {Tcl Data Structures}]
[titledesc {Array persistence}]
[category  {Programming tools}]
[require Tcl 8.4]
[require tie [opt 1.1]]
[description]

>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[manpage_begin tie n 1.1]
[keywords array]
[keywords database]
[keywords file]
[keywords metakit]
[keywords persistence]
[keywords tie]
[keywords untie]
[copyright {2004-2008 Andreas Kupries <[email protected]>}]
[moddesc   {Tcl Data Structures}]
[titledesc {Array persistence}]
[category  {Programming tools}]
[require Tcl 8.4]
[require tie [opt 1.1]]
[description]
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

[subsection {TIE API}]

This section describes the basic API used to establish and remove ties
between Tcl array variables and data sources. This interface is the
only one a casual user has to be concerned about. The following
sections about the various internal interfaces can be safely skipped.


[list_begin definitions]
[call [cmd ::tie::tie] [arg arrayvarname] [arg options]... [arg dstype] [arg dsname]...]

This command establishes a tie between the Tcl array whose name is
provided by the argument [arg arrayvarname] and the








<







39
40
41
42
43
44
45

46
47
48
49
50
51
52

[subsection {TIE API}]

This section describes the basic API used to establish and remove ties
between Tcl array variables and data sources. This interface is the
only one a casual user has to be concerned about. The following
sections about the various internal interfaces can be safely skipped.


[list_begin definitions]
[call [cmd ::tie::tie] [arg arrayvarname] [arg options]... [arg dstype] [arg dsname]...]

This command establishes a tie between the Tcl array whose name is
provided by the argument [arg arrayvarname] and the

99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125

[para]

This option and the option [option -save] exclude each other. If
neither this nor option [option -save] are specified then this option
is assumed as default.


[opt_def -save]

The Tcl array for the new tie is [term saved] to the
[term {data source}], and the previously existing contents of the
[term {data source}] are erased.

[para]

This option and the option [option -open] exclude each other. If
neither this nor option [option -open] are specified then option
[option -open] is assumed as default.


[opt_def -merge]

Using this option prevents the erasure of any previously existing
content and merges the data instead. It can be specified in
conjunction with either [option -open] or [option -save]. They
determine how data existing in both Tcl array and







<











<







105
106
107
108
109
110
111

112
113
114
115
116
117
118
119
120
121
122

123
124
125
126
127
128
129

[para]

This option and the option [option -save] exclude each other. If
neither this nor option [option -save] are specified then this option
is assumed as default.


[opt_def -save]

The Tcl array for the new tie is [term saved] to the
[term {data source}], and the previously existing contents of the
[term {data source}] are erased.

[para]

This option and the option [option -open] exclude each other. If
neither this nor option [option -open] are specified then option
[option -open] is assumed as default.


[opt_def -merge]

Using this option prevents the erasure of any previously existing
content and merges the data instead. It can be specified in
conjunction with either [option -open] or [option -save]. They
determine how data existing in both Tcl array and
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
When used with [option -save] data in the Tcl array has precedence. In
other words, for duplicates the data in the Tcl array is saved into
the [term {data source}].

[list_end]
[para]


[call [cmd ::tie::untie] [arg arrayvarname] [opt [arg token]]]

This command dissolves one or more ties associated with the Tcl array
named by [arg arrayvarname]. If no [arg token] is specified then all
ties to that Tcl array are dissolved. Otherwise only the tie the token
stands for is removed, if it is actually connected to the
array. Trying to remove a specific tie not belonging to the provided







<







142
143
144
145
146
147
148

149
150
151
152
153
154
155
When used with [option -save] data in the Tcl array has precedence. In
other words, for duplicates the data in the Tcl array is saved into
the [term {data source}].

[list_end]
[para]


[call [cmd ::tie::untie] [arg arrayvarname] [opt [arg token]]]

This command dissolves one or more ties associated with the Tcl array
named by [arg arrayvarname]. If no [arg token] is specified then all
ties to that Tcl array are dissolved. Otherwise only the tie the token
stands for is removed, if it is actually connected to the
array. Trying to remove a specific tie not belonging to the provided
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
After the command returns none of changes made to the array will be
saved to the [term {data source}] anymore.

[para]

The result of the command is an empty string.


[list_begin arguments]
[arg_def varname arrayname in]

The name of a Tcl array variable which may have ties.

[arg_def handle token in]

A handle representing a specific tie. This argument is optional.

[list_end]
[para]


[call [cmd ::tie::info] [method ties] [arg arrayvarname]]

This command returns a list of ties associated with the Tcl array
variable named by [arg arrayvarname]. The result list will be empty if
the variable has no ties associated with it.

[call [cmd ::tie::info] [method types]]

This command returns a dictionary of registered types, and the class
commands they are associated with.

[call [cmd ::tie::info] [method type] [arg dstype]]

This command returns the fully resolved class command for a type
name. This means that the command will follow a chain of type
definitions ot its end.

[list_end]


[subsection {STANDARD DATA SOURCE TYPES}]

This package provides the six following types as examples and standard
data sources.


[list_begin definitions]

[def [const log]]

This [term {data source}] does not maintain any actual data, nor
persistence. It does not accept any identifying arguments. All changes
are simply logged to [const stdout].


[def [const array]]

This [term {data source}] uses a regular Tcl array as the origin of
the persistent data. It accepts a single identifying argument, the
name of this Tcl array. All changes are mirrored to that array.


[def [const remotearray]]

This [term {data source}] is similar to [const array]. The difference
is that the Tcl array to which we are mirroring is not directly
accessible, but through a [cmd send]-like command.








<











<




















<




<









<





<







166
167
168
169
170
171
172

173
174
175
176
177
178
179
180
181
182
183

184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203

204
205
206
207

208
209
210
211
212
213
214
215
216

217
218
219
220
221

222
223
224
225
226
227
228
After the command returns none of changes made to the array will be
saved to the [term {data source}] anymore.

[para]

The result of the command is an empty string.


[list_begin arguments]
[arg_def varname arrayname in]

The name of a Tcl array variable which may have ties.

[arg_def handle token in]

A handle representing a specific tie. This argument is optional.

[list_end]
[para]


[call [cmd ::tie::info] [method ties] [arg arrayvarname]]

This command returns a list of ties associated with the Tcl array
variable named by [arg arrayvarname]. The result list will be empty if
the variable has no ties associated with it.

[call [cmd ::tie::info] [method types]]

This command returns a dictionary of registered types, and the class
commands they are associated with.

[call [cmd ::tie::info] [method type] [arg dstype]]

This command returns the fully resolved class command for a type
name. This means that the command will follow a chain of type
definitions ot its end.

[list_end]


[subsection {STANDARD DATA SOURCE TYPES}]

This package provides the six following types as examples and standard
data sources.


[list_begin definitions]

[def [const log]]

This [term {data source}] does not maintain any actual data, nor
persistence. It does not accept any identifying arguments. All changes
are simply logged to [const stdout].


[def [const array]]

This [term {data source}] uses a regular Tcl array as the origin of
the persistent data. It accepts a single identifying argument, the
name of this Tcl array. All changes are mirrored to that array.


[def [const remotearray]]

This [term {data source}] is similar to [const array]. The difference
is that the Tcl array to which we are mirroring is not directly
accessible, but through a [cmd send]-like command.

275
276
277
278
279
280
281
282
283
284
285
286
287
288
289

The Tcl array is in a remote interpreter in a different thread of this
process.

[list_end]
[para]


[def [const file]]

This [term {data source}] uses a single file as origin of the
persistent data. It accepts a single identifying argument, the path to
this file. The file has to be both readable and writable. It may not
exist, the [term {data source}] will create it in that case. This (and
only this) situation will require that the directory for the file







<







272
273
274
275
276
277
278

279
280
281
282
283
284
285

The Tcl array is in a remote interpreter in a different thread of this
process.

[list_end]
[para]


[def [const file]]

This [term {data source}] uses a single file as origin of the
persistent data. It accepts a single identifying argument, the path to
this file. The file has to be both readable and writable. It may not
exist, the [term {data source}] will create it in that case. This (and
only this) situation will require that the directory for the file
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357

If the file exists when the tie using it is set up, then it will be
compacted, i.e. superfluous operations are removed, if the operations
log stored in it contains either at least one operation clearing the
whole array, or at least 1.5 times more operations than entries in the
loaded array.


[def [const growfile]]

This [term {data source}] is like [const file] in terms of the storage
medium for the array data, and how it is configured. In constrast to
the former it however assumes and ensures that the tied array will
never shrink. I.e. the creation of new array entries, and the
modification of existing entries is allowed, but the deletion of
entries is not, and causes the data source to throw errors.

[para]

This restriction allows us to simplify both file format and access to
the file radically. For one, the file is read only once and the
internal cache cannot be invalidated. Second, writing data is reduced
to a simple append, and no compaction step is necessary. The format of
the contents is the string representation of a dictionary which can be
incrementally extended forever at the end.


[def [const dsource]]

This [term {data source}] uses an explicitly specified
[term {data source object}] as the source for the persistent
data. It accepts a single identifying argument, the command prefix,
i.e. object command.

[para]

To use this type it is necessary to know how the framework manages
ties and what [sectref dso {data source objects}] are.

[para]

All changes are delegated to the specified object.

[list_end]


[section {CREATING NEW DATA SOURCES}]

This section is of no interest to the casual user of ties. Only
developers wishing to create new data sources have to know the
information provided herein.


[subsection {DATA SOURCE OBJECTS} dso]

All ties are represented internally by an in-memory object which
mediates between the tie framework and the specific
[term {data source}], like an array, file, etc.
This is the [term {data source object}].







<

















<



















<





<







295
296
297
298
299
300
301

302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318

319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337

338
339
340
341
342

343
344
345
346
347
348
349

If the file exists when the tie using it is set up, then it will be
compacted, i.e. superfluous operations are removed, if the operations
log stored in it contains either at least one operation clearing the
whole array, or at least 1.5 times more operations than entries in the
loaded array.


[def [const growfile]]

This [term {data source}] is like [const file] in terms of the storage
medium for the array data, and how it is configured. In constrast to
the former it however assumes and ensures that the tied array will
never shrink. I.e. the creation of new array entries, and the
modification of existing entries is allowed, but the deletion of
entries is not, and causes the data source to throw errors.

[para]

This restriction allows us to simplify both file format and access to
the file radically. For one, the file is read only once and the
internal cache cannot be invalidated. Second, writing data is reduced
to a simple append, and no compaction step is necessary. The format of
the contents is the string representation of a dictionary which can be
incrementally extended forever at the end.


[def [const dsource]]

This [term {data source}] uses an explicitly specified
[term {data source object}] as the source for the persistent
data. It accepts a single identifying argument, the command prefix,
i.e. object command.

[para]

To use this type it is necessary to know how the framework manages
ties and what [sectref dso {data source objects}] are.

[para]

All changes are delegated to the specified object.

[list_end]


[section {CREATING NEW DATA SOURCES}]

This section is of no interest to the casual user of ties. Only
developers wishing to create new data sources have to know the
information provided herein.


[subsection {DATA SOURCE OBJECTS} dso]

All ties are represented internally by an in-memory object which
mediates between the tie framework and the specific
[term {data source}], like an array, file, etc.
This is the [term {data source object}].
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
[term {data source object}] itself, and this object is outside of the
scope of the tie framework and not managed by it.

In other words, this type allows the creation of ties which talk to
pre-existing [term {data source object}]s, and these objects will
survive the removal of the ties using them as well.


[subsection {REGISTERING A NEW DATA SOURCE CLASS}]

After a [sectref dsc {data source class}] has been written it is necessary
to register it as a new type with the framework.

[list_begin definitions]
[call [cmd ::tie::register] [arg dsclasscmd] [const as] [arg dstype]]

Using this command causes the tie framework to remember the class
command [arg dsclasscmd] of a [sectref dsc {data source class}] under the
type name [arg dstype].

[para]

After the call the argument [arg dstype] of the basic user command
[cmd ::tie::tie] will accept [arg dstype] as a type name and translate
it internally to the appropriate class command for the creation of
[sectref dso {data source objects}] for the new [term {data source}].

[list_end]


[subsection {DATA SOURCE CLASS} dsc]

Each data source class is represented by a single command, also called
the [term {class command}], or [term {object creation command}]. Its
syntax is








<




















<







371
372
373
374
375
376
377

378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397

398
399
400
401
402
403
404
[term {data source object}] itself, and this object is outside of the
scope of the tie framework and not managed by it.

In other words, this type allows the creation of ties which talk to
pre-existing [term {data source object}]s, and these objects will
survive the removal of the ties using them as well.


[subsection {REGISTERING A NEW DATA SOURCE CLASS}]

After a [sectref dsc {data source class}] has been written it is necessary
to register it as a new type with the framework.

[list_begin definitions]
[call [cmd ::tie::register] [arg dsclasscmd] [const as] [arg dstype]]

Using this command causes the tie framework to remember the class
command [arg dsclasscmd] of a [sectref dsc {data source class}] under the
type name [arg dstype].

[para]

After the call the argument [arg dstype] of the basic user command
[cmd ::tie::tie] will accept [arg dstype] as a type name and translate
it internally to the appropriate class command for the creation of
[sectref dso {data source objects}] for the new [term {data source}].

[list_end]


[subsection {DATA SOURCE CLASS} dsc]

Each data source class is represented by a single command, also called
the [term {class command}], or [term {object creation command}]. Its
syntax is

464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529

[call [cmd ds] [method names]]

This command has to return a list containing the names of all keys
found in the [term {data source}] the object talks to. This is
equivalent to [cmd {array names}].


[call [cmd ds] [method size]]

This command has to return an integer number specifying the number of
keys found in the [term {data source}] the object talks to. This is
equivalent to [cmd {array size}].


[call [cmd ds] [method get]]

This command has to return a dictionary containing the data found in
the [term {data source}] the object talks to. This is equivalent to
[cmd {array get}].


[call [cmd ds] [method set] [arg dict]]

This command takes a dictionary and adds its contents to the data
source the object talks to. This is equivalent to [cmd {array set}].


[call [cmd ds] [method unset] [opt [arg pattern]]]

This command takes a pattern and removes all elements whose keys
matching it from the [term {data source}]. If no pattern is specified
it defaults to [const *], causing the removal of all elements. This
is nearly equivalent to [cmd {array unset}].


[call [cmd ds] [method setv] [arg index] [arg value]]

This command has to save the [arg value] in the [term {data source}]
the object talks to, under the key [arg index].

[para]

The result of the command is ignored. If an error is thrown then this
error will show up as error of the set operation which caused the
method call.


[call [cmd ds] [method unsetv] [arg index]]

This command has to remove the value under the key [arg index] from
the [term {data source}] the object talks to.

[para]

The result of the command is ignored. If an error is thrown then this
error will show up as error of the unset operation which caused the
method call.


[call [cmd ds] [method getv] [arg index]]

This command has to return the value for the key [arg index] in the
[term {data source}] the object talks to.

[list_end]







<





<







<




<







<












<










<







454
455
456
457
458
459
460

461
462
463
464
465

466
467
468
469
470
471
472

473
474
475
476

477
478
479
480
481
482
483

484
485
486
487
488
489
490
491
492
493
494
495

496
497
498
499
500
501
502
503
504
505

506
507
508
509
510
511
512

[call [cmd ds] [method names]]

This command has to return a list containing the names of all keys
found in the [term {data source}] the object talks to. This is
equivalent to [cmd {array names}].


[call [cmd ds] [method size]]

This command has to return an integer number specifying the number of
keys found in the [term {data source}] the object talks to. This is
equivalent to [cmd {array size}].


[call [cmd ds] [method get]]

This command has to return a dictionary containing the data found in
the [term {data source}] the object talks to. This is equivalent to
[cmd {array get}].


[call [cmd ds] [method set] [arg dict]]

This command takes a dictionary and adds its contents to the data
source the object talks to. This is equivalent to [cmd {array set}].


[call [cmd ds] [method unset] [opt [arg pattern]]]

This command takes a pattern and removes all elements whose keys
matching it from the [term {data source}]. If no pattern is specified
it defaults to [const *], causing the removal of all elements. This
is nearly equivalent to [cmd {array unset}].


[call [cmd ds] [method setv] [arg index] [arg value]]

This command has to save the [arg value] in the [term {data source}]
the object talks to, under the key [arg index].

[para]

The result of the command is ignored. If an error is thrown then this
error will show up as error of the set operation which caused the
method call.


[call [cmd ds] [method unsetv] [arg index]]

This command has to remove the value under the key [arg index] from
the [term {data source}] the object talks to.

[para]

The result of the command is ignored. If an error is thrown then this
error will show up as error of the unset operation which caused the
method call.


[call [cmd ds] [method getv] [arg index]]

This command has to return the value for the key [arg index] in the
[term {data source}] the object talks to.

[list_end]
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
        -----------             -----------
        set a($idx) $val        ds setv   idx val
        unset a($idx)           ds unsetv idx
        $a($idx)                ds getv   idx
        -----------             -----------
}]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph tie] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords array tie untie persistence file database metakit]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<

526
527
528
529
530
531
532

533


534








535
        -----------             -----------
        set a($idx) $val        ds setv   idx val
        unset a($idx)           ds unsetv idx
        $a($idx)                ds getv   idx
        -----------             -----------
}]


[vset CATEGORY tie]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/tie/tie_std.man.

1







2
3
4
5
6
7
8
[manpage_begin tie n 1.1]







[copyright {2008 Andreas Kupries <[email protected]>}]
[moddesc   {Tcl Data Structures}]
[titledesc {Array persistence, standard data sources}]
[category  {Programming tools}]
[require Tcl 8.4]
[require tie::std::log [opt 1.1]]
[require tie::std::array [opt 1.1]]

>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[manpage_begin tie n 1.1]
[keywords array]
[keywords database]
[keywords file]
[keywords metakit]
[keywords persistence]
[keywords tie]
[keywords untie]
[copyright {2008 Andreas Kupries <[email protected]>}]
[moddesc   {Tcl Data Structures}]
[titledesc {Array persistence, standard data sources}]
[category  {Programming tools}]
[require Tcl 8.4]
[require tie::std::log [opt 1.1]]
[require tie::std::array [opt 1.1]]
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

[para]

They are automatically loaded and registered by [package tie] when it
itself is requested, and as such there is no need to request them on
their own, although it is possible to do so.

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the packages it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph tie] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords array tie untie persistence file database metakit]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<

26
27
28
29
30
31
32

33


34








35

[para]

They are automatically loaded and registered by [package tie] when it
itself is requested, and as such there is no need to request them on
their own, although it is possible to do so.


[vset CATEGORY tie]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/tiff/tiff.man.

1



2
3
4
5
6
7
8
[manpage_begin tiff n 0.2.1]



[copyright {2005-2006, Aaron Faupell <[email protected]>}]
[moddesc   {TIFF image manipulation}]
[titledesc {TIFF reading, writing, and querying and manipulation of meta data}]
[category  {File formats}]
[require Tcl 8.2]
[require tiff [opt 0.2.1]]
[description]

>
>
>







1
2
3
4
5
6
7
8
9
10
11
[manpage_begin tiff n 0.2.1]
[keywords image]
[keywords tif]
[keywords tiff]
[copyright {2005-2006, Aaron Faupell <[email protected]>}]
[moddesc   {TIFF image manipulation}]
[titledesc {TIFF reading, writing, and querying and manipulation of meta data}]
[category  {File formats}]
[require Tcl 8.2]
[require tiff [opt 0.2.1]]
[description]
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182

[list_begin enumerated]
[enum] Cannot write exif ifd
[enum] Reading limited to uncompressed 8 bit rgb and 8 bit palletized images
[enum] Writing limited to uncompressed 8 bit rgb
[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph tiff] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords tiff tif image]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<

165
166
167
168
169
170
171

172


173








174

[list_begin enumerated]
[enum] Cannot write exif ifd
[enum] Reading limited to uncompressed 8 bit rgb and 8 bit palletized images
[enum] Writing limited to uncompressed 8 bit rgb
[list_end]


[vset CATEGORY tiff]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/transfer/connect.man.

1
2








3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin transfer::connect n 0.2]








[copyright {2006-2009 Andreas Kupries <[email protected]>}]
[moddesc   {Data transfer facilities}]
[titledesc {Connection setup}]
[category  {Transfer module}]
[require Tcl               8.4]
[require snit              [opt 1.0]]
[require transfer::connect [opt 0.2]]
[description]
[keywords transfer channel connection passive active ssl tls secure]
[para]

This package provides objects holding enough information to enable
them to either actively connect to a counterpart, or to passively wait
for a connection from said counterpart.

I.e. any object created by this packages is always in one of two


>
>
>
>
>
>
>
>








<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

19
20
21
22
23
24
25
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin transfer::connect n 0.2]
[keywords active]
[keywords channel]
[keywords connection]
[keywords passive]
[keywords secure]
[keywords ssl]
[keywords tls]
[keywords transfer]
[copyright {2006-2009 Andreas Kupries <[email protected]>}]
[moddesc   {Data transfer facilities}]
[titledesc {Connection setup}]
[category  {Transfer module}]
[require Tcl               8.4]
[require snit              [opt 1.0]]
[require transfer::connect [opt 0.2]]
[description]

[para]

This package provides objects holding enough information to enable
them to either actively connect to a counterpart, or to passively wait
for a connection from said counterpart.

I.e. any object created by this packages is always in one of two
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
namespace otherwise.

The fully qualified name of the object command is returned as the
result of the command.

[list_end]


[subsection {Object command}]

All objects created by the [cmd ::transfer::connect] command have the
following general form:

[list_begin definitions]

[call [arg objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the
exact behavior of the command.

See section [sectref {Object methods}] for the detailed
specifications.

[list_end]


[subsection {Object methods}]

[list_begin definitions][comment ----methods]

[call [arg objectName] [method destroy]]

This method destroys the object. 

This is safe to do for an [term active] object when a connection has
been started, as the completion callback is synchronous.

For a [term passive] object currently waiting for its partner to
establish the connection however this is not safe and will cause
errors later on, when the connection setup completes and tries to
access the now missing data structures of the destroyed object.


[call [arg objectName] [method connect] [arg command]]

This method starts the connection setup per the configuration of the
object. When the connection is established the callback [arg command]
will be invoked with one additional argument, the channel handle of
the socket over which data can be transfered.







<

















<






|








<







64
65
66
67
68
69
70

71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87

88
89
90
91
92
93
94
95
96
97
98
99
100
101
102

103
104
105
106
107
108
109
namespace otherwise.

The fully qualified name of the object command is returned as the
result of the command.

[list_end]


[subsection {Object command}]

All objects created by the [cmd ::transfer::connect] command have the
following general form:

[list_begin definitions]

[call [arg objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the
exact behavior of the command.

See section [sectref {Object methods}] for the detailed
specifications.

[list_end]


[subsection {Object methods}]

[list_begin definitions][comment ----methods]

[call [arg objectName] [method destroy]]

This method destroys the object.

This is safe to do for an [term active] object when a connection has
been started, as the completion callback is synchronous.

For a [term passive] object currently waiting for its partner to
establish the connection however this is not safe and will cause
errors later on, when the connection setup completes and tries to
access the now missing data structures of the destroyed object.


[call [arg objectName] [method connect] [arg command]]

This method starts the connection setup per the configuration of the
object. When the connection is established the callback [arg command]
will be invoked with one additional argument, the channel handle of
the socket over which data can be transfered.
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
One possibility for this is the use of SSL/TLS.
See the option [option -socketcmd] and section
[sectref {Secure connections}] for information on how to do this.

[list_end][comment ----mode-behaviour]
[list_end][comment ----methods]


[subsection Options]

Connection objects support the set of options listed below.

[list_begin options]
[include include/connect_options.inc]
[list_end]


[vset OBJCREATE {transfer::connect C}]
[include include/secure.inc]

[vset CATEGORY transfer]
[include ../doctools2base/include/feedback.inc]
[manpage_end]







<







<







148
149
150
151
152
153
154

155
156
157
158
159
160
161

162
163
164
165
166
167
168
One possibility for this is the use of SSL/TLS.
See the option [option -socketcmd] and section
[sectref {Secure connections}] for information on how to do this.

[list_end][comment ----mode-behaviour]
[list_end][comment ----methods]


[subsection Options]

Connection objects support the set of options listed below.

[list_begin options]
[include include/connect_options.inc]
[list_end]


[vset OBJCREATE {transfer::connect C}]
[include include/secure.inc]

[vset CATEGORY transfer]
[include ../doctools2base/include/feedback.inc]
[manpage_end]

Changes to modules/transfer/copyops.man.

1
2



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin transfer::copy n 0.2]



[copyright {2006-2009 Andreas Kupries <[email protected]>}]
[moddesc   {Data transfer facilities}]
[titledesc {Data transfer foundation}]
[category  {Transfer module}]
[require Tcl 8.4]
[require transfer::copy [opt 0.2]]
[description]
[keywords transfer copy channel]
[para]

This package provides a number of commands for the asynchronous of
information contained in either a string or channel. The main point of
this package is that the commands here provide a nicer callback API
than the builtin command [cmd fcopy], making the use of these
facilities simpler than the builtin.


>
>
>







<







1
2
3
4
5
6
7
8
9
10
11
12

13
14
15
16
17
18
19
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin transfer::copy n 0.2]
[keywords channel]
[keywords copy]
[keywords transfer]
[copyright {2006-2009 Andreas Kupries <[email protected]>}]
[moddesc   {Data transfer facilities}]
[titledesc {Data transfer foundation}]
[category  {Transfer module}]
[require Tcl 8.4]
[require transfer::copy [opt 0.2]]
[description]

[para]

This package provides a number of commands for the asynchronous of
information contained in either a string or channel. The main point of
this package is that the commands here provide a nicer callback API
than the builtin command [cmd fcopy], making the use of these
facilities simpler than the builtin.
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
[def [const string]]

The argument [arg data] contains a string and this is the information
to be transfered.

[list_end]


[call [cmd transfer::copy::chan] [arg channel] [arg outchannel] \
	[opt [arg options]...]]

This command is a shorter and more direct form for the command
[cmd {transfer::copy::do chan}].


[call [cmd transfer::copy::string] [arg string] [arg outchannel] \
	[opt [arg options]...]]

This command is a shorter and more direct form for the command
[cmd {transfer::copy::do string}].


[call [cmd transfer::copy::doChan] [arg channel] [arg outchannel] \
	[arg optvar]]

This command is an alternate form of [cmd transfer::copy::chan] which
reads its options out of the array variable named by [arg optvar]
instead of from a variable length argument list.


[call [cmd transfer::copy::doString] [arg string] [arg outchannel] \
	[arg optvar]]

This command is an alternate form of [cmd transfer::copy::string] which
reads its options out of the array variable named by [arg optvar]
instead of from a variable length argument list.


[call [cmd transfer::copy::options] [arg outchannel] [arg optionlist] \
	[arg optvar]]

This command is the option processor used by all the commands above
which read their options from a variable length argument list. It
first reads default settings from the channel handle [arg outchannel],







<






<





<








<






<







43
44
45
46
47
48
49

50
51
52
53
54
55

56
57
58
59
60

61
62
63
64
65
66
67
68

69
70
71
72
73
74

75
76
77
78
79
80
81
[def [const string]]

The argument [arg data] contains a string and this is the information
to be transfered.

[list_end]


[call [cmd transfer::copy::chan] [arg channel] [arg outchannel] \
	[opt [arg options]...]]

This command is a shorter and more direct form for the command
[cmd {transfer::copy::do chan}].


[call [cmd transfer::copy::string] [arg string] [arg outchannel] \
	[opt [arg options]...]]

This command is a shorter and more direct form for the command
[cmd {transfer::copy::do string}].


[call [cmd transfer::copy::doChan] [arg channel] [arg outchannel] \
	[arg optvar]]

This command is an alternate form of [cmd transfer::copy::chan] which
reads its options out of the array variable named by [arg optvar]
instead of from a variable length argument list.


[call [cmd transfer::copy::doString] [arg string] [arg outchannel] \
	[arg optvar]]

This command is an alternate form of [cmd transfer::copy::string] which
reads its options out of the array variable named by [arg optvar]
instead of from a variable length argument list.


[call [cmd transfer::copy::options] [arg outchannel] [arg optionlist] \
	[arg optvar]]

This command is the option processor used by all the commands above
which read their options from a variable length argument list. It
first reads default settings from the channel handle [arg outchannel],
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111

This option specifies the size of the chunks to transfer in one
operation. It is optional and defaults to the value of
[option -buffersize] as configured for the output channel.

[para]
If specified its value has to be an integer number greater than zero.


[opt_def -command [arg commandprefix]]

This option specifies the completion callback of the operation. This
option has to be specified. An error will be thrown if it is not, or
if the empty list was specified as argument to it.








<







94
95
96
97
98
99
100

101
102
103
104
105
106
107

This option specifies the size of the chunks to transfer in one
operation. It is optional and defaults to the value of
[option -buffersize] as configured for the output channel.

[para]
If specified its value has to be an integer number greater than zero.


[opt_def -command [arg commandprefix]]

This option specifies the completion callback of the operation. This
option has to be specified. An error will be thrown if it is not, or
if the empty list was specified as argument to it.

126
127
128
129
130
131
132
133
134
135
136
137
138
139
140

[para]

Its value has to be a command prefix, see above, [option -command] for
a more detailed explanation. When the callback is invoked a single
additional arguments is appended to the prefix. This argument is the
number of bytes which were transfered so far.


[opt_def -size [arg int]]

This option specifies the number of bytes to read from the input data
and transfer. It is optional and defaults to "Transfer everything".
Its value has to be an integer number and any value less than zero has
the same meaning, i.e. to transfer all available data. Any other value







<







122
123
124
125
126
127
128

129
130
131
132
133
134
135

[para]

Its value has to be a command prefix, see above, [option -command] for
a more detailed explanation. When the callback is invoked a single
additional arguments is appended to the prefix. This argument is the
number of bytes which were transfered so far.


[opt_def -size [arg int]]

This option specifies the number of bytes to read from the input data
and transfer. It is optional and defaults to "Transfer everything".
Its value has to be an integer number and any value less than zero has
the same meaning, i.e. to transfer all available data. Any other value
158
159
160
161
162
163
164
165
166
167
168
169
of the output channel before the transfer are saved, and restored at
the end of a transfer, regardless of its success or failure. None of
these options are required, and they default to the settings of the
output channel if not specified.

[list_end][comment options]
[list_end][comment definitions/api]


[vset CATEGORY transfer]
[include ../doctools2base/include/feedback.inc]
[manpage_end]







<




153
154
155
156
157
158
159

160
161
162
163
of the output channel before the transfer are saved, and restored at
the end of a transfer, regardless of its success or failure. None of
these options are required, and they default to the settings of the
output channel if not specified.

[list_end][comment options]
[list_end][comment definitions/api]


[vset CATEGORY transfer]
[include ../doctools2base/include/feedback.inc]
[manpage_end]

Changes to modules/transfer/ddest.man.

1
2




3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin transfer::data::destination n 0.2]




[copyright {2006-2009 Andreas Kupries <[email protected]>}]
[moddesc   {Data transfer facilities}]
[titledesc {Data destination}]
[category  {Transfer module}]
[require Tcl                         8.4]
[require snit                        [opt 1.0]]
[require transfer::data::destination [opt 0.2]]
[description]
[keywords transfer copy channel {data destination}]
[para]

This package provides objects mainly describing the destination of a
data transfer. They are also able to initiate the reception of
information from a channel into the described destination.


[section API]

[list_begin definitions]

[call [cmd transfer::data::destination] \
	[arg objectName] \


>
>
>
>








<





<







1
2
3
4
5
6
7
8
9
10
11
12
13
14

15
16
17
18
19

20
21
22
23
24
25
26
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin transfer::data::destination n 0.2]
[keywords channel]
[keywords copy]
[keywords {data destination}]
[keywords transfer]
[copyright {2006-2009 Andreas Kupries <[email protected]>}]
[moddesc   {Data transfer facilities}]
[titledesc {Data destination}]
[category  {Transfer module}]
[require Tcl                         8.4]
[require snit                        [opt 1.0]]
[require transfer::data::destination [opt 0.2]]
[description]

[para]

This package provides objects mainly describing the destination of a
data transfer. They are also able to initiate the reception of
information from a channel into the described destination.


[section API]

[list_begin definitions]

[call [cmd transfer::data::destination] \
	[arg objectName] \
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
namespace otherwise.

The fully qualified name of the object command is returned as the
result of the command.

[list_end]


[subsection {Object command}]

All objects created by the [cmd ::transfer::data::destination] command
have the following general form:

[list_begin definitions]

[call [arg objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the
exact behavior of the command.

See section [sectref {Object methods}] for the detailed
specifications.

[list_end]


[subsection {Object methods}]

[list_begin definitions]

[call [arg objectName] [method destroy]]

This method destroys the object. Doing so while the object is busy
with the reception of information from a channel will cause errors
later on, when the reception completes and tries to access the now
missing data structures of the destroyed object.


[call [arg objectName] [method put] [arg chunk]]

The main receptor method. Saves the received [arg chunk] of data into
the configured destination. It has to be called for each piece of data
received.


[call [arg objectName] [method done]]

The secondary receptor method. Finalizes the receiver. It has to be
called when the receiving channel signals EOF. Afterward neither
itself nor method [method put] can be called anymore.


[call [arg objectName] [method valid] [arg msgvar]]

This method checks the configuration of the object for validity. It
returns a boolean flag as result, whose value is [const True] if the
object is valid, and [const False] otherwise. In the latter case the
variable whose name is stored in [arg msgvar] is set to an error







<

















<











<






<





<







40
41
42
43
44
45
46

47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

64
65
66
67
68
69
70
71
72
73
74

75
76
77
78
79
80

81
82
83
84
85

86
87
88
89
90
91
92
namespace otherwise.

The fully qualified name of the object command is returned as the
result of the command.

[list_end]


[subsection {Object command}]

All objects created by the [cmd ::transfer::data::destination] command
have the following general form:

[list_begin definitions]

[call [arg objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the
exact behavior of the command.

See section [sectref {Object methods}] for the detailed
specifications.

[list_end]


[subsection {Object methods}]

[list_begin definitions]

[call [arg objectName] [method destroy]]

This method destroys the object. Doing so while the object is busy
with the reception of information from a channel will cause errors
later on, when the reception completes and tries to access the now
missing data structures of the destroyed object.


[call [arg objectName] [method put] [arg chunk]]

The main receptor method. Saves the received [arg chunk] of data into
the configured destination. It has to be called for each piece of data
received.


[call [arg objectName] [method done]]

The secondary receptor method. Finalizes the receiver. It has to be
called when the receiving channel signals EOF. Afterward neither
itself nor method [method put] can be called anymore.


[call [arg objectName] [method valid] [arg msgvar]]

This method checks the configuration of the object for validity. It
returns a boolean flag as result, whose value is [const True] if the
object is valid, and [const False] otherwise. In the latter case the
variable whose name is stored in [arg msgvar] is set to an error
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127

When the reception completes the command prefix [arg done] is invoked,
with the number of received characters appended to it as the sole
additional argument.

[list_end]


[subsection Options]

All data destinations support the options listed below. It should be
noted that all are semi-exclusive, each specifying a different type of
destination and associated information. If these options are specified
more than once then the last option specified is used to actually
configure the object.

[list_begin options]
[include include/ddest_options.inc]
[list_end]


[vset CATEGORY transfer]
[include ../doctools2base/include/feedback.inc]
[manpage_end]







<











<




101
102
103
104
105
106
107

108
109
110
111
112
113
114
115
116
117
118

119
120
121
122

When the reception completes the command prefix [arg done] is invoked,
with the number of received characters appended to it as the sole
additional argument.

[list_end]


[subsection Options]

All data destinations support the options listed below. It should be
noted that all are semi-exclusive, each specifying a different type of
destination and associated information. If these options are specified
more than once then the last option specified is used to actually
configure the object.

[list_begin options]
[include include/ddest_options.inc]
[list_end]


[vset CATEGORY transfer]
[include ../doctools2base/include/feedback.inc]
[manpage_end]

Changes to modules/transfer/dsource.man.

1
2




3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin transfer::data::source n 0.2]




[copyright {2006-2009 Andreas Kupries <[email protected]>}]
[moddesc   {Data transfer facilities}]
[titledesc {Data source}]
[category  {Transfer module}]
[require Tcl                    8.4]
[require snit                   [opt 1.0]]
[require transfer::copy         [opt 0.2]]
[require transfer::data::source [opt 0.2]]
[description]
[keywords transfer copy channel {data source}]
[para]

This package provides objects mainly describing the origin of some
data to transfer. They are also able to initiate transfers of the
described information to a channel using the foundation package
[package transfer::copy].


[section API]
[subsection {Package commands}]

[list_begin definitions]

[call [cmd transfer::data::source] \


>
>
>
>









<






<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

16
17
18
19
20
21

22
23
24
25
26
27
28
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin transfer::data::source n 0.2]
[keywords channel]
[keywords copy]
[keywords {data source}]
[keywords transfer]
[copyright {2006-2009 Andreas Kupries <[email protected]>}]
[moddesc   {Data transfer facilities}]
[titledesc {Data source}]
[category  {Transfer module}]
[require Tcl                    8.4]
[require snit                   [opt 1.0]]
[require transfer::copy         [opt 0.2]]
[require transfer::data::source [opt 0.2]]
[description]

[para]

This package provides objects mainly describing the origin of some
data to transfer. They are also able to initiate transfers of the
described information to a channel using the foundation package
[package transfer::copy].


[section API]
[subsection {Package commands}]

[list_begin definitions]

[call [cmd transfer::data::source] \
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
namespace otherwise.

The fully qualified name of the object command is returned as the
result of the command.

[list_end]


[subsection {Object command}]

All objects created by the [cmd ::transfer::data::source] command have
the following general form:

[list_begin definitions]

[call [arg objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the
exact behavior of the command.

See section [sectref {Object methods}] for the detailed
specifications.

[list_end]


[subsection {Object methods}]

[list_begin definitions]

[call [arg objectName] [method destroy]]

This method destroys the object. Doing so while a transfer initiated
by the object is active is safe as all data required for the transfer
itself was copied, and the completion of the transfer will not try to
access the initiating object anymore. i.e. the transfer is completely
separate from the source object itself.


[call [arg objectName] [method type]]

This method returns a string describing the type of the data the
object is refering to. The possible values and their meanings are:

[list_begin definitions]







<

















<











<







43
44
45
46
47
48
49

50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66

67
68
69
70
71
72
73
74
75
76
77

78
79
80
81
82
83
84
namespace otherwise.

The fully qualified name of the object command is returned as the
result of the command.

[list_end]


[subsection {Object command}]

All objects created by the [cmd ::transfer::data::source] command have
the following general form:

[list_begin definitions]

[call [arg objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the
exact behavior of the command.

See section [sectref {Object methods}] for the detailed
specifications.

[list_end]


[subsection {Object methods}]

[list_begin definitions]

[call [arg objectName] [method destroy]]

This method destroys the object. Doing so while a transfer initiated
by the object is active is safe as all data required for the transfer
itself was copied, and the completion of the transfer will not try to
access the initiating object anymore. i.e. the transfer is completely
separate from the source object itself.


[call [arg objectName] [method type]]

This method returns a string describing the type of the data the
object is refering to. The possible values and their meanings are:

[list_begin definitions]
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
object refers to, through which the data can be accessed.

The method throws an error if the type is [const undefined]. For type
[const string] the returned result is the data itself, whereas for
type [const channel] the returned result is the handle of the channel
containing the data.


[call [arg objectName] [method size]]

This method returns a value depending on the type of the data the
object refers to, the size of the data.

The method throws an error if the type is [const undefined]. Return of
a negative value signals that the object is unable to determine an
absolute size upfront (like for data in a channel).


[call [arg objectName] [method valid] [arg msgvar]]

This method checks the configuration of the object for validity. It
returns a boolean flag as result, whose value is [const True] if the
object is valid, and [const False] otherwise. In the latter case the
variable whose name is stored in [arg msgvar] is set to an error







<








<







100
101
102
103
104
105
106

107
108
109
110
111
112
113
114

115
116
117
118
119
120
121
object refers to, through which the data can be accessed.

The method throws an error if the type is [const undefined]. For type
[const string] the returned result is the data itself, whereas for
type [const channel] the returned result is the handle of the channel
containing the data.


[call [arg objectName] [method size]]

This method returns a value depending on the type of the data the
object refers to, the size of the data.

The method throws an error if the type is [const undefined]. Return of
a negative value signals that the object is unable to determine an
absolute size upfront (like for data in a channel).


[call [arg objectName] [method valid] [arg msgvar]]

This method checks the configuration of the object for validity. It
returns a boolean flag as result, whose value is [const True] if the
object is valid, and [const False] otherwise. In the latter case the
variable whose name is stored in [arg msgvar] is set to an error
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160

The [arg blocksize] specifies the size of the chunks to transfer in
one go. See the option [option -blocksize] of command
[cmd transfer::copy::do] in the package [package transfer::copy].

[list_end]



[subsection Options]

All data sources support the options listed below. It should be noted
that the first four options are semi-exclusive, each specifying a
different type of data source and associated content. If these options
are specified more than once then the last option specified is used to
actually configure the object.

[list_begin options]
[include include/dsource_options.inc]
[list_end]


[vset CATEGORY transfer]
[include ../doctools2base/include/feedback.inc]
[manpage_end]







<
<











<




133
134
135
136
137
138
139


140
141
142
143
144
145
146
147
148
149
150

151
152
153
154

The [arg blocksize] specifies the size of the chunks to transfer in
one go. See the option [option -blocksize] of command
[cmd transfer::copy::do] in the package [package transfer::copy].

[list_end]



[subsection Options]

All data sources support the options listed below. It should be noted
that the first four options are semi-exclusive, each specifying a
different type of data source and associated content. If these options
are specified more than once then the last option specified is used to
actually configure the object.

[list_begin options]
[include include/dsource_options.inc]
[list_end]


[vset CATEGORY transfer]
[include ../doctools2base/include/feedback.inc]
[manpage_end]

Changes to modules/transfer/receiver.man.

1
2








3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin transfer::receiver n 0.2]








[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Data transfer facilities}]
[titledesc {Data source}]
[category  {Transfer module}]
[require Tcl                         8.4]
[require snit                        [opt 1.0]]
[require transfer::data::destination [opt 0.2]]
[require transfer::connect           [opt 0.2]]
[require transfer::receiver          [opt 0.2]]
[description]
[keywords transfer copy channel {data destination} receiver ssl tls secure]
[para]

This package pulls data destinations and connection setup together
into a combined object for the reception of information coming in over
a socket.

These objects understand all the options from objects created by the
packages [package transfer::data::destination] and
[package transfer::connect].


[section API]
[subsection {Package commands}]

[list_begin definitions]

[call [cmd transfer::receiver] \


>
>
>
>
>
>
>
>










<









<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

21
22
23
24
25
26
27
28
29

30
31
32
33
34
35
36
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin transfer::receiver n 0.2]
[keywords channel]
[keywords copy]
[keywords {data destination}]
[keywords receiver]
[keywords secure]
[keywords ssl]
[keywords tls]
[keywords transfer]
[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Data transfer facilities}]
[titledesc {Data source}]
[category  {Transfer module}]
[require Tcl                         8.4]
[require snit                        [opt 1.0]]
[require transfer::data::destination [opt 0.2]]
[require transfer::connect           [opt 0.2]]
[require transfer::receiver          [opt 0.2]]
[description]

[para]

This package pulls data destinations and connection setup together
into a combined object for the reception of information coming in over
a socket.

These objects understand all the options from objects created by the
packages [package transfer::data::destination] and
[package transfer::connect].


[section API]
[subsection {Package commands}]

[list_begin definitions]

[call [cmd transfer::receiver] \
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128

[para]
[vset RETURNER command]
[vset OBJECT {if it was set}]
[vset QUALIFIER {internal receiver}]
[include include/connect_result_ref.inc]


[call [cmd transfer::receiver] [method {stream file}] \
     [arg path] [arg host] [arg port] [opt [arg arg]...]]

This method is like [method {stream channel}], except that the
received data is written to the file [arg path], replacing any prior
content.




[list_end]


[subsection {Object command}]

All objects created by the [cmd ::transfer::receiver] command have the
following general form:

[list_begin definitions]

[call [arg objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the
exact behavior of the command.

See section [sectref {Object methods}] for the detailed
specifications.

[list_end]


[subsection {Object methods}]

[list_begin definitions]

[call [arg objectName] [method destroy]]








<







<
<
<

<

















<







90
91
92
93
94
95
96

97
98
99
100
101
102
103



104

105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121

122
123
124
125
126
127
128

[para]
[vset RETURNER command]
[vset OBJECT {if it was set}]
[vset QUALIFIER {internal receiver}]
[include include/connect_result_ref.inc]


[call [cmd transfer::receiver] [method {stream file}] \
     [arg path] [arg host] [arg port] [opt [arg arg]...]]

This method is like [method {stream channel}], except that the
received data is written to the file [arg path], replacing any prior
content.




[list_end]


[subsection {Object command}]

All objects created by the [cmd ::transfer::receiver] command have the
following general form:

[list_begin definitions]

[call [arg objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the
exact behavior of the command.

See section [sectref {Object methods}] for the detailed
specifications.

[list_end]


[subsection {Object methods}]

[list_begin definitions]

[call [arg objectName] [method destroy]]

147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
destination is invalid, or if no completion callback was specified.

[para]
[vset RETURNER method]
[vset OBJECT {for an object configured}]
[vset QUALIFIER {}]
[include include/connect_result_ref.inc]


[call [arg objectName] [method busy]]

This method returns a boolean value telling us whether a reception
is in progress ([const True]), or not ([const False]).

[list_end]







<







147
148
149
150
151
152
153

154
155
156
157
158
159
160
destination is invalid, or if no completion callback was specified.

[para]
[vset RETURNER method]
[vset OBJECT {for an object configured}]
[vset QUALIFIER {}]
[include include/connect_result_ref.inc]


[call [arg objectName] [method busy]]

This method returns a boolean value telling us whether a reception
is in progress ([const True]), or not ([const False]).

[list_end]

Changes to modules/transfer/tqueue.man.

1
2




3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin transfer::copy::queue n 0.1]




[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Data transfer facilities}]
[titledesc {Queued transfers}]
[category  {Transfer module}]
[require Tcl                   8.4]
[require snit                  [opt 1.0]]
[require struct::queue         [opt 1.4]]
[require transfer::copy        [opt 0.2]]
[require transfer::copy::queue [opt 0.1]]
[description]
[keywords transfer copy channel queue]
[para]

This package provides objects which serialize transfer requests for a
single channel by means of a fifo queue. Accumulated requests are
executed in order of entrance, with the first request reaching an idle
object starting the execution in general. New requests can be added
while the object is active and are defered until all requests entered


>
>
>
>










<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

17
18
19
20
21
22
23
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin transfer::copy::queue n 0.1]
[keywords channel]
[keywords copy]
[keywords queue]
[keywords transfer]
[copyright {2006 Andreas Kupries <[email protected]>}]
[moddesc   {Data transfer facilities}]
[titledesc {Queued transfers}]
[category  {Transfer module}]
[require Tcl                   8.4]
[require snit                  [opt 1.0]]
[require struct::queue         [opt 1.4]]
[require transfer::copy        [opt 0.2]]
[require transfer::copy::queue [opt 0.1]]
[description]

[para]

This package provides objects which serialize transfer requests for a
single channel by means of a fifo queue. Accumulated requests are
executed in order of entrance, with the first request reaching an idle
object starting the execution in general. New requests can be added
while the object is active and are defered until all requests entered
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
[package transfer::copy].

Note how just prepending the request with [cmd transfer::copy::do] and
inserting a channel handle in between [arg data] and [arg options]
easily transforms it from a pure data structure into a command whose
evaluation will perform the request.


[section API]
[subsection {Package commands}]

[list_begin definitions]

[call [cmd transfer::copy::queue] \
	[arg objectName] \







<







62
63
64
65
66
67
68

69
70
71
72
73
74
75
[package transfer::copy].

Note how just prepending the request with [cmd transfer::copy::do] and
inserting a channel handle in between [arg data] and [arg options]
easily transforms it from a pure data structure into a command whose
evaluation will perform the request.


[section API]
[subsection {Package commands}]

[list_begin definitions]

[call [cmd transfer::copy::queue] \
	[arg objectName] \
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
The object command will be created under the current namespace if the
[arg objectName] is not fully qualified, and in the specified
namespace otherwise.

The fully qualified name of the object command is returned as the
result of the command.


[list_end]


[subsection {Object command}]

All objects created by the [cmd ::transfer::copy::queue] command have
the following general form:

[list_begin definitions]

[call [arg objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the
exact behavior of the command.

See section [sectref {Object methods}] for the detailed
specifications.

[list_end]


[subsection {Object methods}]

[list_begin definitions]

[call [arg objectName] [method destroy]]

This method destroys the object. Doing so while the object is busy
will cause errors later on, when the currently executed request
completes and tries to access the now missing data structures of the
destroyed object.


[call [arg objectName] [method busy]]

This method returns a boolean value telling us if the object is
currently serving a request (i.e. [term busy], value [const True]), or
not (i.e. [term idle], value [const False]).


[call [arg objectName] [method pending]]

This method returns the number of requests currently waiting in the
queue for their execution. A request currently served is not counted
as waiting.


[call [arg objectName] [method put] [arg request]]

This method enters the transfer [arg request] into the object's queue
of waiting requests.

If the object is [term idle] it will become [term busy], immediately
servicing the request. Otherwise servicing the new request will be
defered until all preceding requests have been served.

[list_end]


[section Options]

The only option known is [option -on-status-change]. It is optional
and defaults to the empty list, disabling the reporting of status
changes. Otherwise its argument is a command prefix which is invoked
whenever the internal status of the object changed. The callback is
invoked with two additional arguments, the result of the methods
[method pending] and [method busy], in this order. This allows any
user to easily know, for example, when the object has processed all
outstanding requests.


[section Use]

A possible application of this package and class is within a HTTP 1.1
server, managing the results waiting for transfer to the client.

[para]

It should be noted that in this application the system also needs an
additional data structure which keeps track of outstanding results as
they may come back in a different order than the requests from the
client, and releases them to the actual queue in the proper order.


[vset CATEGORY transfer]
[include ../doctools2base/include/feedback.inc]
[manpage_end]







<

<


















<











<






<





<












<










<












<




89
90
91
92
93
94
95

96

97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114

115
116
117
118
119
120
121
122
123
124
125

126
127
128
129
130
131

132
133
134
135
136

137
138
139
140
141
142
143
144
145
146
147
148

149
150
151
152
153
154
155
156
157
158

159
160
161
162
163
164
165
166
167
168
169
170

171
172
173
174
The object command will be created under the current namespace if the
[arg objectName] is not fully qualified, and in the specified
namespace otherwise.

The fully qualified name of the object command is returned as the
result of the command.


[list_end]


[subsection {Object command}]

All objects created by the [cmd ::transfer::copy::queue] command have
the following general form:

[list_begin definitions]

[call [arg objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the
exact behavior of the command.

See section [sectref {Object methods}] for the detailed
specifications.

[list_end]


[subsection {Object methods}]

[list_begin definitions]

[call [arg objectName] [method destroy]]

This method destroys the object. Doing so while the object is busy
will cause errors later on, when the currently executed request
completes and tries to access the now missing data structures of the
destroyed object.


[call [arg objectName] [method busy]]

This method returns a boolean value telling us if the object is
currently serving a request (i.e. [term busy], value [const True]), or
not (i.e. [term idle], value [const False]).


[call [arg objectName] [method pending]]

This method returns the number of requests currently waiting in the
queue for their execution. A request currently served is not counted
as waiting.


[call [arg objectName] [method put] [arg request]]

This method enters the transfer [arg request] into the object's queue
of waiting requests.

If the object is [term idle] it will become [term busy], immediately
servicing the request. Otherwise servicing the new request will be
defered until all preceding requests have been served.

[list_end]


[section Options]

The only option known is [option -on-status-change]. It is optional
and defaults to the empty list, disabling the reporting of status
changes. Otherwise its argument is a command prefix which is invoked
whenever the internal status of the object changed. The callback is
invoked with two additional arguments, the result of the methods
[method pending] and [method busy], in this order. This allows any
user to easily know, for example, when the object has processed all
outstanding requests.


[section Use]

A possible application of this package and class is within a HTTP 1.1
server, managing the results waiting for transfer to the client.

[para]

It should be noted that in this application the system also needs an
additional data structure which keeps track of outstanding results as
they may come back in a different order than the requests from the
client, and releases them to the actual queue in the proper order.


[vset CATEGORY transfer]
[include ../doctools2base/include/feedback.inc]
[manpage_end]

Changes to modules/transfer/transmitter.man.

1
2








3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin transfer::transmitter n 0.2]








[copyright {2006-2009 Andreas Kupries <[email protected]>}]
[moddesc   {Data transfer facilities}]
[titledesc {Data source}]
[category  {Transfer module}]
[require Tcl                    8.4]
[require snit                   [opt 1.0]]
[require transfer::copy         [opt 0.2]]
[require transfer::data::source [opt 0.2]]
[require transfer::connect      [opt 0.2]]
[require transfer::transmitter  [opt 0.2]]
[description]
[keywords transfer copy channel {data source} transmitter ssl tls secure]
[para]

This package pulls data sources and connection setup together into a
combined object for the transmission of information over a socket.

These objects understand all the options from objects created
by the packages [package transfer::data::source] and
[package transfer::connect].


[section API]
[subsection {Package commands}]

[list_begin definitions]

[call [cmd transfer::transmitter] \


>
>
>
>
>
>
>
>











<








<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

22
23
24
25
26
27
28
29

30
31
32
33
34
35
36
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin transfer::transmitter n 0.2]
[keywords channel]
[keywords copy]
[keywords {data source}]
[keywords secure]
[keywords ssl]
[keywords tls]
[keywords transfer]
[keywords transmitter]
[copyright {2006-2009 Andreas Kupries <[email protected]>}]
[moddesc   {Data transfer facilities}]
[titledesc {Data source}]
[category  {Transfer module}]
[require Tcl                    8.4]
[require snit                   [opt 1.0]]
[require transfer::copy         [opt 0.2]]
[require transfer::data::source [opt 0.2]]
[require transfer::connect      [opt 0.2]]
[require transfer::transmitter  [opt 0.2]]
[description]

[para]

This package pulls data sources and connection setup together into a
combined object for the transmission of information over a socket.

These objects understand all the options from objects created
by the packages [package transfer::data::source] and
[package transfer::connect].


[section API]
[subsection {Package commands}]

[list_begin definitions]

[call [cmd transfer::transmitter] \
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56

The object command will be created under the current namespace if the
[arg objectName] is not fully qualified, and in the specified
namespace otherwise.

The fully qualified name of the object command is returned as the
result of the command.


[call [cmd transfer::transmitter] [method {stream channel}] \
     [arg chan] [arg host] [arg port] [opt [arg arg]...]]

This method creates a fire-and-forget transfer for the data contained
in the channel [arg chan], starting at the current seek location. The
channel is configured to use binary translation and encoding for the







<







48
49
50
51
52
53
54

55
56
57
58
59
60
61

The object command will be created under the current namespace if the
[arg objectName] is not fully qualified, and in the specified
namespace otherwise.

The fully qualified name of the object command is returned as the
result of the command.


[call [cmd transfer::transmitter] [method {stream channel}] \
     [arg chan] [arg host] [arg port] [opt [arg arg]...]]

This method creates a fire-and-forget transfer for the data contained
in the channel [arg chan], starting at the current seek location. The
channel is configured to use binary translation and encoding for the
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135

[para]
[vset RETURNER command]
[vset OBJECT {if it was set}]
[vset QUALIFIER {internal transmitter}]
[include include/connect_result_ref.inc]


[call [cmd transfer::transmitter] [method {stream file}] \
     [arg path] [arg host] [arg port] [opt [arg arg]...]]

This method is like [method {stream channel}], except that the data
contained in the file [arg path] is transfered.

[list_end]


[subsection {Object command}]

All objects created by the [cmd ::transfer::transmitter] command have
the following general form:

[list_begin definitions]

[call [arg objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the
exact behavior of the command.

See section [sectref {Object methods}] for the detailed
specifications.

[list_end]


[subsection {Object methods}]

[list_begin definitions]

[call [arg objectName] [method destroy]]

This method destroys the object. Doing so while a transmission is in
progress will cause errors later on, when the transmission completes
and tries to access the now missing data structures of the destroyed
object.


[call [arg objectName] [method start]]

This method initiates the data transmission, setting up the connection
first and then copying the information.

The method will throw an error if a transmission is already/still in







<







<


















<










<







88
89
90
91
92
93
94

95
96
97
98
99
100
101

102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119

120
121
122
123
124
125
126
127
128
129

130
131
132
133
134
135
136

[para]
[vset RETURNER command]
[vset OBJECT {if it was set}]
[vset QUALIFIER {internal transmitter}]
[include include/connect_result_ref.inc]


[call [cmd transfer::transmitter] [method {stream file}] \
     [arg path] [arg host] [arg port] [opt [arg arg]...]]

This method is like [method {stream channel}], except that the data
contained in the file [arg path] is transfered.

[list_end]


[subsection {Object command}]

All objects created by the [cmd ::transfer::transmitter] command have
the following general form:

[list_begin definitions]

[call [arg objectName] [method method] [opt [arg "arg arg ..."]]]

The method [method method] and its [arg arg]'uments determine the
exact behavior of the command.

See section [sectref {Object methods}] for the detailed
specifications.

[list_end]


[subsection {Object methods}]

[list_begin definitions]

[call [arg objectName] [method destroy]]

This method destroys the object. Doing so while a transmission is in
progress will cause errors later on, when the transmission completes
and tries to access the now missing data structures of the destroyed
object.


[call [arg objectName] [method start]]

This method initiates the data transmission, setting up the connection
first and then copying the information.

The method will throw an error if a transmission is already/still in
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165

[para]
[vset RETURNER method]
[vset OBJECT {for an object configured}]
[vset QUALIFIER {}]
[include include/connect_result_ref.inc]


[call [arg objectName] [method busy]]

This method returns a boolean value telling us whether a transmission
is in progress ([const True]), or not ([const False]).

[list_end]


[subsection Options]

All transmitter objects support the union of the options supported
by their connect and data source components, plus two of their own.

See also the documentation for the packages







<






<







145
146
147
148
149
150
151

152
153
154
155
156
157

158
159
160
161
162
163
164

[para]
[vset RETURNER method]
[vset OBJECT {for an object configured}]
[vset QUALIFIER {}]
[include include/connect_result_ref.inc]


[call [arg objectName] [method busy]]

This method returns a boolean value telling us whether a transmission
is in progress ([const True]), or not ([const False]).

[list_end]


[subsection Options]

All transmitter objects support the union of the options supported
by their connect and data source components, plus two of their own.

See also the documentation for the packages

Changes to modules/treeql/treeql.man.

1
2
3








4
5
6
7
8
9
10
[comment {-*- tcl -*- doctools manpage}]
[comment ===========================================]
[manpage_begin treeql n 1.3.1]








[copyright {2004 Colin McCormack <[email protected]>}]
[copyright {2004 Andreas Kupries <[email protected]>}]
[moddesc   {Tree Query Language}]
[titledesc {Query tree objects}]
[category  {Data structures}]
[require Tcl 8.2]
[require snit]



>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[comment {-*- tcl -*- doctools manpage}]
[comment ===========================================]
[manpage_begin treeql n 1.3.1]
[keywords Cost]
[keywords DOM]
[keywords {structured queries}]
[keywords tree]
[keywords {tree query language}]
[keywords TreeQL]
[keywords XPath]
[keywords XSLT]
[copyright {2004 Colin McCormack <[email protected]>}]
[copyright {2004 Andreas Kupries <[email protected]>}]
[moddesc   {Tree Query Language}]
[titledesc {Query tree objects}]
[category  {Data structures}]
[require Tcl 8.2]
[require snit]
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

[para]

[package treeql], the package, is a fairly thin query facility over
tree-structured data types.  It implements an ordered set of nodes
(really a list) which are generated and filtered through the
application of TreeQL operators to each node in turn.


[comment ===========================================]
[section API]

[subsection {TreeQL CLASS API}]

The command [cmd treeql] is a [package snit]::type which implements







<







34
35
36
37
38
39
40

41
42
43
44
45
46
47

[para]

[package treeql], the package, is a fairly thin query facility over
tree-structured data types.  It implements an ordered set of nodes
(really a list) which are generated and filtered through the
application of TreeQL operators to each node in turn.


[comment ===========================================]
[section API]

[subsection {TreeQL CLASS API}]

The command [cmd treeql] is a [package snit]::type which implements
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
[para]

The operations of the TreeQL available for this are explained in the
section about [sectref {The Tree Query Language}]. This section also
explains the term [term {node set}] used above.

[list_end]


[subsection {TreeQL OBJECT API}]

As [package treeql] has been implemented in [package snit] all the
standard methods of [package snit]-based classes are available to the
user and therefore not listed here. Please read the documentation for
[package snit] for what they are and what functionality they provide







<







90
91
92
93
94
95
96

97
98
99
100
101
102
103
[para]

The operations of the TreeQL available for this are explained in the
section about [sectref {The Tree Query Language}]. This section also
explains the term [term {node set}] used above.

[list_end]


[subsection {TreeQL OBJECT API}]

As [package treeql] has been implemented in [package snit] all the
standard methods of [package snit]-based classes are available to the
user and therefore not listed here. Please read the documentation for
[package snit] for what they are and what functionality they provide
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
}]
[para]

The operators of the TreeQL language available for this are explained
in the section about [sectref {The Tree Query Language}]. This section
also explains the term [term {node set}] used above.


[call [arg qo] [method result]]

This method returns a list containing the current node set.


[call [arg qo] [method discard]]

This method returns the current node set (like method
[method result]), but also destroys the query object ([arg qo]).

This is useful when constructing and using sub-queries (%AUTO% objects
immediately destroyed after use).

[list_end]


[comment ===========================================]
[section {The Tree Query Language}]

This and the following sections specify the Tree Query Language used
by the query objects of this package in detail.








<



<










<







190
191
192
193
194
195
196

197
198
199

200
201
202
203
204
205
206
207
208
209

210
211
212
213
214
215
216
}]
[para]

The operators of the TreeQL language available for this are explained
in the section about [sectref {The Tree Query Language}]. This section
also explains the term [term {node set}] used above.


[call [arg qo] [method result]]

This method returns a list containing the current node set.


[call [arg qo] [method discard]]

This method returns the current node set (like method
[method result]), but also destroys the query object ([arg qo]).

This is useful when constructing and using sub-queries (%AUTO% objects
immediately destroyed after use).

[list_end]


[comment ===========================================]
[section {The Tree Query Language}]

This and the following sections specify the Tree Query Language used
by the query objects of this package in detail.

240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
[enum]
[sectref {Node Set Iterators}]
[enum]
[sectref {Typed node support}]
[list_end]
[para]


[comment ===========================================]
[subsection {TreeQL Concepts}]

The main concept which has to be understood is that of the
[term {node set}].

Each query object maintains exactly one such [term {node set}], and







<







243
244
245
246
247
248
249

250
251
252
253
254
255
256
[enum]
[sectref {Node Set Iterators}]
[enum]
[sectref {Typed node support}]
[list_end]
[para]


[comment ===========================================]
[subsection {TreeQL Concepts}]

The main concept which has to be understood is that of the
[term {node set}].

Each query object maintains exactly one such [term {node set}], and
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
[para]

Regarding the possible multiple occurrence of a node, consider a node
set containing two nodes A and B, both having node P as their
immediate parent. Application of the TreeQL operator "parent" will
then add P to the new node set twice, once per node it was parent
of. I.e. the new node set will then be {P P}.


[comment ===========================================]
[subsection {Structural generators}]

All tree-structural operators locate nodes in the tree based on a
structural relation ship to the nodes currently in the set and then
replace the current node set with the set of nodes found







<







276
277
278
279
280
281
282

283
284
285
286
287
288
289
[para]

Regarding the possible multiple occurrence of a node, consider a node
set containing two nodes A and B, both having node P as their
immediate parent. Application of the TreeQL operator "parent" will
then add P to the new node set twice, once per node it was parent
of. I.e. the new node set will then be {P P}.


[comment ===========================================]
[subsection {Structural generators}]

All tree-structural operators locate nodes in the tree based on a
structural relation ship to the nodes currently in the set and then
replace the current node set with the set of nodes found
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
Replaces the current node set with the ancestors for all nodes [var N]
in the node set, should [var N] have a parent. In other words, nodes
without a parent do not contribute to the new node set. In other
words, uses all nodes on the path from node [var N] to root, in this
order (root last), for all nodes [var N] in the node set. This
includes the root, but not the node itself.


[def [method rootpath]]

Replaces the current node set with the ancestors for all nodes [var N]
in the node set, should [var N] have a parent. In other words, nodes
without a parent do not contribute to the new node set.

In contrast to the operator [method ancestors] the nodes are added in
reverse order however, i.e. the root node first.


[def [method parent]]

Replaces the current node set with the parent of node [var N], for all
nodes [var N] in the node set, should [var N] have a parent. In other
words, nodes without a parent do not contribute to the new node set.


[def [method children]]

Replaces the current node set with the immediate children of node
[var N], for all nodes [var N] in the node set, should [var N] have
children. In other words, nodes without children do not contribute to
the new node set.


[def [method left]]

Replaces the current node set with the previous/left sibling for all
nodes [var N] in the node set, should [var N] have siblings to the
left. In other words, nodes without left siblings do not contribute to
the new node set.


[def [method right]]

Replaces the current node set with the next/right sibling for all
nodes [var N] in the node set, should [var N] have siblings to the
right. In other words, nodes without right siblings do not contribute
to the new node set.


[def [method prev]]

Replaces the current node set with all previous/left siblings of node
[var N], for all nodes [var N] in the node set, should [var N] have
siblings to the left. In other words, nodes without left siblings are
ignored. The left sibling adjacent to the node is added first, and the
leftmost sibling last (reverse tree order).


[def [method esib]]

Replaces the current node set with all previous/left siblings of node
[var N], for all nodes [var N] in the node set, should [var N] have
siblings to the left. In other words, nodes without left siblings are
ignored. The leftmost sibling is added first, and the left sibling
adjacent to the node last (tree order).

[para]

The method name is a shorthand for [term {Earlier SIBling}].


[def [method next]]

Replaces the current node set with all next/right siblings of node
[var N], for all nodes [var N] in the node set, should [var N] have
siblings to the right. In other words, nodes without right siblings do
not contribute to the new node set. The right sibling adjacent to the
node is added first, and the rightmost sibling last (tree order).


[def [method root]]

Replaces the current node set with a node set containing a single
node, the root of the tree.


[def [method tree]]

Replaces the current node set with a node set containing all nodes
found in the tree. The nodes are added in pre-order (parent first,
then children, the latter from left to right, first to last).


[def [method descendants]]

Replaces the current node set with the nodes in all subtrees rooted at
node [var N], for all nodes [var N] in the node set, should [var N]
have children. In other words, nodes without children do not
contribute to the new node set.

[para]

This is like the operator [method children], but covers the children
of children as well, i.e. all the [term {proper descendants}]. "Rooted
at [var N]" means that [var N] itself is not added to the new set,
which is also implied by [term {proper descendants}].


[def [method subtree]]

Like operator [method descendants], but includes the node [var N]. In
other words:

[para]

Replaces the current node set with the nodes of the subtree of node
[var N], for all nodes [var N] in the node set, should [var N] have
children. In other words, nodes without children do not contribute to
the new node set. I.e this is like the operator [method children], but
covers the children of children, etc. as well. "Of [var N]" means that
[var N] itself is added to the new set.


[def [method forward]]

Replaces the current node set with the nodes in the subtrees rooted at
the right siblings of node [var N], for all nodes [var N] in the node
set, should [var N] have right siblings, and they children. In other
words, nodes without right siblings, and them without children are
ignored.

[para]
This is equivalent to the operator sequence

[example {next descendants}]


[def [method later]]

This is an alias for the operator [method forward].


[def [method backward]]

Replaces the current node set with the nodes in the flattened previous
subtrees, in reverse tree order.

[para]
This is nearly equivalent to the operator sequence

[example {prev descendants}]

The only difference is that this uses the nodes in reverse order.


[def [method earlier]]

Replaces the current node set with the nodes in the flattened previous
subtrees, in tree order.

[para]
This is equivalent to the operator sequence

[example {prev subtree}]

[list_end]


[comment ===========================================]
[subsection {Attribute Filters}]

These operators filter the node set by reference to attributes of
nodes and their properties. Filter means that all nodes not fulfilling
the criteria are removed from the node set. In other words, the node
set is replaced by the set of nodes fulfilling the filter criteria.


[list_begin definitions]

[def "[method hasatt] [arg attr]"]

Reduces the node set to nodes which have an attribute named
[arg attr].


[def "[method withatt] [arg attr] [arg value]"]

Reduces the node set to nodes which have an attribute named
[arg attr], and where the value of that attribute is equal to
[arg value] (The "==" operator is [cmd {string equal -nocase}]).


[def "[method withatt!] [arg attr] [arg val]"]

This is the same as [method withatt], but all nodes in the node set
have to have the attribute, and the "==" operator is
[cmd {string equal}], i.e. no [option -nocase].

The operator will fail with an error if they don't have the attribute.


[def "[method attof] [arg attr] [arg vals]"]

Reduces the node set to nodes which which have an attribute named
[arg attr] and where the value of that attribute is contained in the
list [arg vals] of legal values. The contained-in operator used here
does glob matching (using the attribute value as pattern) and ignores
the case of the attribute value, [emph {but not}] for the elements of
[arg vals].


[def "[method attmatch] [arg attr] [arg match]"]

Same as [method withatt], but [cmd {string match}] is used as the "=="
operator, and [arg match] is the pattern checked for.

[para]

[emph Note] that [arg match] is a interpreted as a partial argument
[emph list] for [cmd {string match}]. This means that it is
interpreted as a list containing the pattern, and the pattern element
can be preceded by options understand by [cmd {string match}], like
[option -nocase].

This is especially important should the pattern contain spaces. It has
to be wrapped into a list for correct interpretation by this operator

[list_end]


[comment ===========================================]
[subsection {Attribute Mutators}]

These operators change node attributes within the underlying tree. In
other words, all these operators have [term {side effects}].


[list_begin definitions]

[def "[method set] [arg attr] [arg val]"]

Sets the attribute [arg attr] to the value [arg val], for all nodes
[var N] in the node set.

The operator will fail if a node does not have an attribute named
[arg attr]. The tree will be left in a partially modified state.


[def "[method unset] [arg attr]"]

Unsets the attribute [arg attr], for all nodes [var N] in the node
set.

The operator will fail if a node does not have an attribute named
[arg attr]. The tree will be left in a partially modified state.

[list_end]



[comment ===========================================]
[subsection {Attribute String Accessors}]

These operators retrieve the values of node attributes from the
underlying tree. The collected results are stored in the node set, but
are not actually nodes.







<









<





<







<








<






<








<













<








<




<






<














<















<













<



<












<













<







<








<





<









<








<



















<





<











<









<
<







312
313
314
315
316
317
318

319
320
321
322
323
324
325
326
327

328
329
330
331
332

333
334
335
336
337
338
339

340
341
342
343
344
345
346
347

348
349
350
351
352
353

354
355
356
357
358
359
360
361

362
363
364
365
366
367
368
369
370
371
372
373
374

375
376
377
378
379
380
381
382

383
384
385
386

387
388
389
390
391
392

393
394
395
396
397
398
399
400
401
402
403
404
405
406

407
408
409
410
411
412
413
414
415
416
417
418
419
420
421

422
423
424
425
426
427
428
429
430
431
432
433
434

435
436
437

438
439
440
441
442
443
444
445
446
447
448
449

450
451
452
453
454
455
456
457
458
459
460
461
462

463
464
465
466
467
468
469

470
471
472
473
474
475
476
477

478
479
480
481
482

483
484
485
486
487
488
489
490
491

492
493
494
495
496
497
498
499

500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518

519
520
521
522
523

524
525
526
527
528
529
530
531
532
533
534

535
536
537
538
539
540
541
542
543


544
545
546
547
548
549
550
Replaces the current node set with the ancestors for all nodes [var N]
in the node set, should [var N] have a parent. In other words, nodes
without a parent do not contribute to the new node set. In other
words, uses all nodes on the path from node [var N] to root, in this
order (root last), for all nodes [var N] in the node set. This
includes the root, but not the node itself.


[def [method rootpath]]

Replaces the current node set with the ancestors for all nodes [var N]
in the node set, should [var N] have a parent. In other words, nodes
without a parent do not contribute to the new node set.

In contrast to the operator [method ancestors] the nodes are added in
reverse order however, i.e. the root node first.


[def [method parent]]

Replaces the current node set with the parent of node [var N], for all
nodes [var N] in the node set, should [var N] have a parent. In other
words, nodes without a parent do not contribute to the new node set.


[def [method children]]

Replaces the current node set with the immediate children of node
[var N], for all nodes [var N] in the node set, should [var N] have
children. In other words, nodes without children do not contribute to
the new node set.


[def [method left]]

Replaces the current node set with the previous/left sibling for all
nodes [var N] in the node set, should [var N] have siblings to the
left. In other words, nodes without left siblings do not contribute to
the new node set.


[def [method right]]

Replaces the current node set with the next/right sibling for all
nodes [var N] in the node set, should [var N] have siblings to the
right. In other words, nodes without right siblings do not contribute
to the new node set.


[def [method prev]]

Replaces the current node set with all previous/left siblings of node
[var N], for all nodes [var N] in the node set, should [var N] have
siblings to the left. In other words, nodes without left siblings are
ignored. The left sibling adjacent to the node is added first, and the
leftmost sibling last (reverse tree order).


[def [method esib]]

Replaces the current node set with all previous/left siblings of node
[var N], for all nodes [var N] in the node set, should [var N] have
siblings to the left. In other words, nodes without left siblings are
ignored. The leftmost sibling is added first, and the left sibling
adjacent to the node last (tree order).

[para]

The method name is a shorthand for [term {Earlier SIBling}].


[def [method next]]

Replaces the current node set with all next/right siblings of node
[var N], for all nodes [var N] in the node set, should [var N] have
siblings to the right. In other words, nodes without right siblings do
not contribute to the new node set. The right sibling adjacent to the
node is added first, and the rightmost sibling last (tree order).


[def [method root]]

Replaces the current node set with a node set containing a single
node, the root of the tree.


[def [method tree]]

Replaces the current node set with a node set containing all nodes
found in the tree. The nodes are added in pre-order (parent first,
then children, the latter from left to right, first to last).


[def [method descendants]]

Replaces the current node set with the nodes in all subtrees rooted at
node [var N], for all nodes [var N] in the node set, should [var N]
have children. In other words, nodes without children do not
contribute to the new node set.

[para]

This is like the operator [method children], but covers the children
of children as well, i.e. all the [term {proper descendants}]. "Rooted
at [var N]" means that [var N] itself is not added to the new set,
which is also implied by [term {proper descendants}].


[def [method subtree]]

Like operator [method descendants], but includes the node [var N]. In
other words:

[para]

Replaces the current node set with the nodes of the subtree of node
[var N], for all nodes [var N] in the node set, should [var N] have
children. In other words, nodes without children do not contribute to
the new node set. I.e this is like the operator [method children], but
covers the children of children, etc. as well. "Of [var N]" means that
[var N] itself is added to the new set.


[def [method forward]]

Replaces the current node set with the nodes in the subtrees rooted at
the right siblings of node [var N], for all nodes [var N] in the node
set, should [var N] have right siblings, and they children. In other
words, nodes without right siblings, and them without children are
ignored.

[para]
This is equivalent to the operator sequence

[example {next descendants}]


[def [method later]]

This is an alias for the operator [method forward].


[def [method backward]]

Replaces the current node set with the nodes in the flattened previous
subtrees, in reverse tree order.

[para]
This is nearly equivalent to the operator sequence

[example {prev descendants}]

The only difference is that this uses the nodes in reverse order.


[def [method earlier]]

Replaces the current node set with the nodes in the flattened previous
subtrees, in tree order.

[para]
This is equivalent to the operator sequence

[example {prev subtree}]

[list_end]


[comment ===========================================]
[subsection {Attribute Filters}]

These operators filter the node set by reference to attributes of
nodes and their properties. Filter means that all nodes not fulfilling
the criteria are removed from the node set. In other words, the node
set is replaced by the set of nodes fulfilling the filter criteria.


[list_begin definitions]

[def "[method hasatt] [arg attr]"]

Reduces the node set to nodes which have an attribute named
[arg attr].


[def "[method withatt] [arg attr] [arg value]"]

Reduces the node set to nodes which have an attribute named
[arg attr], and where the value of that attribute is equal to
[arg value] (The "==" operator is [cmd {string equal -nocase}]).


[def "[method withatt!] [arg attr] [arg val]"]

This is the same as [method withatt], but all nodes in the node set
have to have the attribute, and the "==" operator is
[cmd {string equal}], i.e. no [option -nocase].

The operator will fail with an error if they don't have the attribute.


[def "[method attof] [arg attr] [arg vals]"]

Reduces the node set to nodes which which have an attribute named
[arg attr] and where the value of that attribute is contained in the
list [arg vals] of legal values. The contained-in operator used here
does glob matching (using the attribute value as pattern) and ignores
the case of the attribute value, [emph {but not}] for the elements of
[arg vals].


[def "[method attmatch] [arg attr] [arg match]"]

Same as [method withatt], but [cmd {string match}] is used as the "=="
operator, and [arg match] is the pattern checked for.

[para]

[emph Note] that [arg match] is a interpreted as a partial argument
[emph list] for [cmd {string match}]. This means that it is
interpreted as a list containing the pattern, and the pattern element
can be preceded by options understand by [cmd {string match}], like
[option -nocase].

This is especially important should the pattern contain spaces. It has
to be wrapped into a list for correct interpretation by this operator

[list_end]


[comment ===========================================]
[subsection {Attribute Mutators}]

These operators change node attributes within the underlying tree. In
other words, all these operators have [term {side effects}].


[list_begin definitions]

[def "[method set] [arg attr] [arg val]"]

Sets the attribute [arg attr] to the value [arg val], for all nodes
[var N] in the node set.

The operator will fail if a node does not have an attribute named
[arg attr]. The tree will be left in a partially modified state.


[def "[method unset] [arg attr]"]

Unsets the attribute [arg attr], for all nodes [var N] in the node
set.

The operator will fail if a node does not have an attribute named
[arg attr]. The tree will be left in a partially modified state.

[list_end]



[comment ===========================================]
[subsection {Attribute String Accessors}]

These operators retrieve the values of node attributes from the
underlying tree. The collected results are stored in the node set, but
are not actually nodes.
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598

The query interpreter will terminate after it has finished processing
one of these operators, silently discarding any later query elements.
It also means that our talk about maintenance of a node set is not
quite true. It is a node set while the interpreter is processing
commands, but can be left as an attribute value set at the end of
query processing.


[list_begin definitions]

[def "[method string] [arg op] [arg attr]"]

Applies the string operator [arg op] to the attribute named
[arg attr], for all nodes [var N] in the node set, collects the







<







558
559
560
561
562
563
564

565
566
567
568
569
570
571

The query interpreter will terminate after it has finished processing
one of these operators, silently discarding any later query elements.
It also means that our talk about maintenance of a node set is not
quite true. It is a node set while the interpreter is processing
commands, but can be left as an attribute value set at the end of
query processing.


[list_begin definitions]

[def "[method string] [arg op] [arg attr]"]

Applies the string operator [arg op] to the attribute named
[arg attr], for all nodes [var N] in the node set, collects the
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881

The argument [arg op] is interpreted as partial argument list for the
builtin command [cmd string].  Its first word has to be any of the
sub-commands understood by [cmd string].  This has to be followed by
all arguments required for the subcommand, except the last.  that last
argument is supplied by the attribute value.


[def "[method get] [arg pattern]"]

For all nodes [var N] in the node set it determines all their
attributes with names matching the glob [arg pattern], then the values
of these attributes, at last it replaces the node set with the list of
these attribute values.


[def [method attlist]]

This is a convenience definition for the operator
[method {getvals *}]. In other words, it replaces the node set with a
list of the attribute values for all attributes for all nodes [var N]
in the node set.


[def "[method attrs] [arg glob]"]

Replaces the current node set with a list of attribute lists, one
attribute list per for all nodes [var N] in the node set.


[def "[method attval] [arg attname]"]

Reduces the current node set with the operator [method hasatt], and
then replaces it with a list containing the values of the attribute
named [arg attname] for all nodes [var N] in the node set.

[list_end]


[comment ===========================================]
[subsection Sub-queries]

Sub-queries yield node sets which are then used to augment, reduce or
replace the current node set.

[list_begin definitions]

[def "[method andq] [arg query]"]

Replaces the node set with the set-intersection of the node set
generated by the sub-query [arg query] and itself.

[para]

The execution of the sub-query uses the current node set as its own
initial node set.


[def "[method orq] [arg query]"]

Replaces the node set with the set-union of the node set generated by
the sub-query [arg query] and itself. Duplicate nodes are removed.

[para]

The execution of the sub-query uses the current node set as its own
initial node set.


[def "[method notq] [arg query]"]

Replaces the node set with the set of nodes generated by the sub-query
[arg query] which are also not in the current node set. In other word
the set difference of itself and the node set generated by the
sub-query.

[para]

The execution of the sub-query uses the current node set as its own
initial node set.

[list_end]


[comment ===========================================]
[subsection {Node Set Operators}]

These operators change the node set directly, without referring to the
tree.

[comment {
    Should have a 'reverse' as well.
}]

[list_begin definitions]

[def [method unique]]

Removes duplicate nodes from the node set, preserving order. In other
words, the earliest occurrence of a node handle is preserved, every
other occurrence is removed.


[def [method select]]

Replaces the current node set with a node set containing only the
first node from the current node set


[def "[method transform] [arg query] [arg var] [arg body]"]

First it interprets the sub-query [arg query], using the current node
set as its initial node set.

Then it iterates over the result of that query, binding the handle of
each node to the variable named in [arg var], and executing the script
[arg body].

The collected results of these executions is made the new node set,
replacing the current one.

[para]

The script [arg body] is executed in the context of the caller.


[def "[method map] [arg var] [arg body]"]

Iterates over the current node set, binding the handle of each node to
the variable named in [arg var], and executing the script [arg body].

The collected results of these executions is made the new node set,
replacing the current one.

[para]

The script [arg body] is executed in the context of the caller.


[def "[method quote] [arg val]"]

Appends the literal value [arg val] to the current node set.


[def "[method replace] [arg val]"]

Replaces the current node set with the literal list value [arg val].

[list_end]


[comment ===========================================]
[subsection {Node Set Iterators}]

[list_begin definitions]

[def "[method foreach] [arg query] [arg var] [arg body]"]

Interprets the sub-query [arg query], then performs the equivalent of
operator [method over] on the nodes in the node set created by that
query. The current node set is not changed, except through side
effects from the script [arg body].

[para]

The script [arg body] is executed in the context of the caller.


[def "[method with] [arg query] [arg body]"]

Interprets the [arg query], then runs the script [arg body] on the
node set generated by the query. At last it restores the current node
set as it was before the execution of the query.

[para]

The script [arg body] is executed in the context of the caller.


[def "[method over] [arg var] [arg body]"]

Executes the script [arg body] for each node in the node set, with the
variable named by [arg var] bound to the name of the current node.

The script [arg body] is executed in the context of the caller.

[para]

This is like the builtin [cmd foreach], with the node set as the
source of the list to iterate over.

[para]

The results of executing the [arg body] are ignored.


[def [method delete]]

Deletes all the nodes contained in the current node set from the tree.

[list_end]


[comment ===========================================]
[subsection {Typed node support}]

These filters and accessors assume the existence of an attribute
called [const @type], and are short-hand forms useful for cost-like
tree query, html tree editing, and so on.


[list_begin definitions]

[def [method nodetype]]

Returns the node type of nodes.

Attribute string accessor. This is equivalent to

[example {get @type}]


[def "[method oftype] [arg t]"]

Reduces the node set to nodes whose type is equal to [arg t], with
letter case ignored.


[def "[method nottype] [arg t]"]

Reduces the node set to nodes whose type is not equal to [arg t], with
letter case ignored.


[def "[method oftypes] [arg attrs]"]

Reduces set to nodes whose @type is an element in the list [arg attrs]
of types. The value of @type is used as a glob pattern, and letter
case is relevant.

[list_end]


[section Examples]

... TODO ...

[section References]

[list_begin enumerated]
[enum]
[uri http://wiki.tcl.tk/COST COST] on the Tcler's Wiki.

[enum]

[uri http://wiki.tcl.tk/treeql TreeQL] on the Tcler's Wiki. Discuss
this package there.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph treeql] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords {tree query language} {structured queries}]
[keywords tree TreeQL Cost XPath DOM XSLT]
[manpage_end]







<






<








<




<








<



















<









<














<



















<




<

















<












<



<






<

















<









<

















<





<







<











<





<




<








<


















<
|
<
<
|
<
<
<
<
<
<
<
<
<

580
581
582
583
584
585
586

587
588
589
590
591
592

593
594
595
596
597
598
599
600

601
602
603
604

605
606
607
608
609
610
611
612

613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631

632
633
634
635
636
637
638
639
640

641
642
643
644
645
646
647
648
649
650
651
652
653
654

655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673

674
675
676
677

678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694

695
696
697
698
699
700
701
702
703
704
705
706

707
708
709

710
711
712
713
714
715

716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732

733
734
735
736
737
738
739
740
741

742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758

759
760
761
762
763

764
765
766
767
768
769
770

771
772
773
774
775
776
777
778
779
780
781

782
783
784
785
786

787
788
789
790

791
792
793
794
795
796
797
798

799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816

817


818









819

The argument [arg op] is interpreted as partial argument list for the
builtin command [cmd string].  Its first word has to be any of the
sub-commands understood by [cmd string].  This has to be followed by
all arguments required for the subcommand, except the last.  that last
argument is supplied by the attribute value.


[def "[method get] [arg pattern]"]

For all nodes [var N] in the node set it determines all their
attributes with names matching the glob [arg pattern], then the values
of these attributes, at last it replaces the node set with the list of
these attribute values.


[def [method attlist]]

This is a convenience definition for the operator
[method {getvals *}]. In other words, it replaces the node set with a
list of the attribute values for all attributes for all nodes [var N]
in the node set.


[def "[method attrs] [arg glob]"]

Replaces the current node set with a list of attribute lists, one
attribute list per for all nodes [var N] in the node set.


[def "[method attval] [arg attname]"]

Reduces the current node set with the operator [method hasatt], and
then replaces it with a list containing the values of the attribute
named [arg attname] for all nodes [var N] in the node set.

[list_end]


[comment ===========================================]
[subsection Sub-queries]

Sub-queries yield node sets which are then used to augment, reduce or
replace the current node set.

[list_begin definitions]

[def "[method andq] [arg query]"]

Replaces the node set with the set-intersection of the node set
generated by the sub-query [arg query] and itself.

[para]

The execution of the sub-query uses the current node set as its own
initial node set.


[def "[method orq] [arg query]"]

Replaces the node set with the set-union of the node set generated by
the sub-query [arg query] and itself. Duplicate nodes are removed.

[para]

The execution of the sub-query uses the current node set as its own
initial node set.


[def "[method notq] [arg query]"]

Replaces the node set with the set of nodes generated by the sub-query
[arg query] which are also not in the current node set. In other word
the set difference of itself and the node set generated by the
sub-query.

[para]

The execution of the sub-query uses the current node set as its own
initial node set.

[list_end]


[comment ===========================================]
[subsection {Node Set Operators}]

These operators change the node set directly, without referring to the
tree.

[comment {
    Should have a 'reverse' as well.
}]

[list_begin definitions]

[def [method unique]]

Removes duplicate nodes from the node set, preserving order. In other
words, the earliest occurrence of a node handle is preserved, every
other occurrence is removed.


[def [method select]]

Replaces the current node set with a node set containing only the
first node from the current node set


[def "[method transform] [arg query] [arg var] [arg body]"]

First it interprets the sub-query [arg query], using the current node
set as its initial node set.

Then it iterates over the result of that query, binding the handle of
each node to the variable named in [arg var], and executing the script
[arg body].

The collected results of these executions is made the new node set,
replacing the current one.

[para]

The script [arg body] is executed in the context of the caller.


[def "[method map] [arg var] [arg body]"]

Iterates over the current node set, binding the handle of each node to
the variable named in [arg var], and executing the script [arg body].

The collected results of these executions is made the new node set,
replacing the current one.

[para]

The script [arg body] is executed in the context of the caller.


[def "[method quote] [arg val]"]

Appends the literal value [arg val] to the current node set.


[def "[method replace] [arg val]"]

Replaces the current node set with the literal list value [arg val].

[list_end]


[comment ===========================================]
[subsection {Node Set Iterators}]

[list_begin definitions]

[def "[method foreach] [arg query] [arg var] [arg body]"]

Interprets the sub-query [arg query], then performs the equivalent of
operator [method over] on the nodes in the node set created by that
query. The current node set is not changed, except through side
effects from the script [arg body].

[para]

The script [arg body] is executed in the context of the caller.


[def "[method with] [arg query] [arg body]"]

Interprets the [arg query], then runs the script [arg body] on the
node set generated by the query. At last it restores the current node
set as it was before the execution of the query.

[para]

The script [arg body] is executed in the context of the caller.


[def "[method over] [arg var] [arg body]"]

Executes the script [arg body] for each node in the node set, with the
variable named by [arg var] bound to the name of the current node.

The script [arg body] is executed in the context of the caller.

[para]

This is like the builtin [cmd foreach], with the node set as the
source of the list to iterate over.

[para]

The results of executing the [arg body] are ignored.


[def [method delete]]

Deletes all the nodes contained in the current node set from the tree.

[list_end]


[comment ===========================================]
[subsection {Typed node support}]

These filters and accessors assume the existence of an attribute
called [const @type], and are short-hand forms useful for cost-like
tree query, html tree editing, and so on.


[list_begin definitions]

[def [method nodetype]]

Returns the node type of nodes.

Attribute string accessor. This is equivalent to

[example {get @type}]


[def "[method oftype] [arg t]"]

Reduces the node set to nodes whose type is equal to [arg t], with
letter case ignored.


[def "[method nottype] [arg t]"]

Reduces the node set to nodes whose type is not equal to [arg t], with
letter case ignored.


[def "[method oftypes] [arg attrs]"]

Reduces set to nodes whose @type is an element in the list [arg attrs]
of types. The value of @type is used as a glob pattern, and letter
case is relevant.

[list_end]


[section Examples]

... TODO ...

[section References]

[list_begin enumerated]
[enum]
[uri http://wiki.tcl.tk/COST COST] on the Tcler's Wiki.

[enum]

[uri http://wiki.tcl.tk/treeql TreeQL] on the Tcler's Wiki. Discuss
this package there.

[list_end]


[vset CATEGORY treeql]


[include ../doctools2base/include/feedback.inc]









[manpage_end]

Changes to modules/try/tcllib_try.man.

1
2









3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin try n 1]









[copyright {2008 Donal K. Fellows, BSD licensed}]
[moddesc {Forward compatibility implementation of [try]}]
[titledesc {try - Trap and process errors and exceptions}]
[category  Utility]
[require Tcl 8.5]
[require try [opt 1]]
[keywords cleanup error exception final {resource management}]
[see_also catch(n) error(n) return(n) throw(n)]
[description]
[para]

This package provides a forward-compatibility implementation of Tcl
8.6's try/finally command (TIP 329), for Tcl 8.5. The code was
directly pulled from Tcl 8.6 revision ?, when try/finally was
implemented as Tcl procedure instead of in C.


[list_begin definitions]
[comment {- - -- --- ----- -------- ------------- ---------------------}]
[call [cmd ::try] [arg body] [opt [arg handler...]] [opt "[method finally] [arg script]"]]

This command executes the script [arg body] and, depending on what the
outcome of that script is (normal exit, error, or some other


>
>
>
>
>
>
>
>
>






<
<







<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17


18
19
20
21
22
23
24

25
26
27
28
29
30
31
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin try n 1]
[see_also catch(n)]
[see_also error(n)]
[see_also return(n)]
[see_also throw(n)]
[keywords cleanup]
[keywords error]
[keywords exception]
[keywords final]
[keywords {resource management}]
[copyright {2008 Donal K. Fellows, BSD licensed}]
[moddesc {Forward compatibility implementation of [try]}]
[titledesc {try - Trap and process errors and exceptions}]
[category  Utility]
[require Tcl 8.5]
[require try [opt 1]]


[description]
[para]

This package provides a forward-compatibility implementation of Tcl
8.6's try/finally command (TIP 329), for Tcl 8.5. The code was
directly pulled from Tcl 8.6 revision ?, when try/finally was
implemented as Tcl procedure instead of in C.


[list_begin definitions]
[comment {- - -- --- ----- -------- ------------- ---------------------}]
[call [cmd ::try] [arg body] [opt [arg handler...]] [opt "[method finally] [arg script]"]]

This command executes the script [arg body] and, depending on what the
outcome of that script is (normal exit, error, or some other
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
    puts \$f "some message"
    # ...
} [cmd finally] {
    close \$f
}
[example_end]


[para] Handle different reasons for a file to not be openable for reading:
[para][example_begin]
[cmd try] {
    set f [lb]open /some/file/name[rb]
} [method trap] {POSIX EISDIR} {} {
    puts "failed to open /some/file/name: it's a directory"
} [method trap] {POSIX ENOENT} {} {
    puts "failed to open /some/file/name: it doesn't exist"
}
[example_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph try] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]







<











<
|
<
<
|
<
<
<
<
<
<

102
103
104
105
106
107
108

109
110
111
112
113
114
115
116
117
118
119

120


121






122
    puts \$f "some message"
    # ...
} [cmd finally] {
    close \$f
}
[example_end]


[para] Handle different reasons for a file to not be openable for reading:
[para][example_begin]
[cmd try] {
    set f [lb]open /some/file/name[rb]
} [method trap] {POSIX EISDIR} {} {
    puts "failed to open /some/file/name: it's a directory"
} [method trap] {POSIX ENOENT} {} {
    puts "failed to open /some/file/name: it doesn't exist"
}
[example_end]


[vset CATEGORY try]


[include ../doctools2base/include/feedback.inc]






[manpage_end]

Changes to modules/uev/uevent.man.

1






2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[manpage_begin uevent n 0.3.1]






[copyright {2007-2012 Andreas Kupries <[email protected]>}]
[moddesc   {User events}]
[titledesc {User events}]
[category  {Programming tools}]
[require Tcl 8.4]
[require uevent [opt 0.3.1]]
[require logger]
[keywords event bind unbind {generate event} hook]
[see_also hook(n)]
[description]

This package provides a general facility for the handling of user
events. Allows the binding of arbitrary commands to arbitrary events
on arbitrary tags, removal of bindings, and event generation.

[para]

>
>
>
>
>
>







<
<







1
2
3
4
5
6
7
8
9
10
11
12
13
14


15
16
17
18
19
20
21
[manpage_begin uevent n 0.3.1]
[see_also hook(n)]
[keywords bind]
[keywords event]
[keywords {generate event}]
[keywords hook]
[keywords unbind]
[copyright {2007-2012 Andreas Kupries <[email protected]>}]
[moddesc   {User events}]
[titledesc {User events}]
[category  {Programming tools}]
[require Tcl 8.4]
[require uevent [opt 0.3.1]]
[require logger]


[description]

This package provides a general facility for the handling of user
events. Allows the binding of arbitrary commands to arbitrary events
on arbitrary tags, removal of bindings, and event generation.

[para]
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
combinations.

[para] The result of the command is the empty string.

[comment ============================================================]
[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph uevent] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]







<
|
<
<
|
<
<
<
<
<
<

187
188
189
190
191
192
193

194


195






196
combinations.

[para] The result of the command is the empty string.

[comment ============================================================]
[list_end]


[vset CATEGORY uevent]


[include ../doctools2base/include/feedback.inc]






[manpage_end]

Changes to modules/uev/uevent_onidle.man.

1






2
3
4
5
6
7
8
9
10
11
12
13
14
15
[manpage_begin uevent::onidle n 0.1]






[copyright {2008 Andreas Kupries <[email protected]>}]
[moddesc   {User events}]
[titledesc {Request merging and deferal to idle time}]
[require Tcl 8.4]
[require uevent::onidle [opt 0.1]]
[require logger]
[keywords event idle deferal merge on-idle callback]
[description]

This package provides objects which can merge multiple requestes for
an action and execute the action the moment the system (event loop)
becomes idle. The action to be run is configured during object
construction.


>
>
>
>
>
>






<







1
2
3
4
5
6
7
8
9
10
11
12
13

14
15
16
17
18
19
20
[manpage_begin uevent::onidle n 0.1]
[keywords callback]
[keywords deferal]
[keywords event]
[keywords idle]
[keywords merge]
[keywords on-idle]
[copyright {2008 Andreas Kupries <[email protected]>}]
[moddesc   {User events}]
[titledesc {Request merging and deferal to idle time}]
[require Tcl 8.4]
[require uevent::onidle [opt 0.1]]
[require logger]

[description]

This package provides objects which can merge multiple requestes for
an action and execute the action the moment the system (event loop)
becomes idle. The action to be run is configured during object
construction.

50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69

[section Examples]

Examples of this type of deferal are buried in the (C-level)
implementations all the Tk widgets, defering geometry calculations and
window redraw activity in this manner.


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph uevent] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<

55
56
57
58
59
60
61
62

63









64

[section Examples]

Examples of this type of deferal are buried in the (C-level)
implementations all the Tk widgets, defering geometry calculations and
window redraw activity in this manner.

[vset CATEGORY uevent]

[include ../doctools2base/include/feedback.inc]









[manpage_end]

Changes to modules/units/units.man.

1
2






3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin units n 1.2]






[copyright {2000-2005 Mayo Foundation}]
[moddesc   {Convert and manipulate quantities with units}]
[titledesc {unit conversion}]
[require Tcl 8.1]
[require units [opt 2.1]]
[description]
[para]


>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin units n 1.2]
[keywords angle]
[keywords constants]
[keywords conversion]
[keywords distance]
[keywords radians]
[keywords unit]
[copyright {2000-2005 Mayo Foundation}]
[moddesc   {Convert and manipulate quantities with units}]
[titledesc {unit conversion}]
[require Tcl 8.1]
[require units [opt 2.1]]
[description]
[para]
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
671.080887616
% ::units::convert "1.0 m kg/s^2" newton
1.0
% ::units::convert 1.0 millimeter
1000.0
[example_end]


[call [cmd ::units::reduce] [arg unitString]]

Returns a unit string consisting of a scale factor followed by a space
separated list of sorted and reduced primitive units.  The reduced
unit string may include a forward-slash (separated from the
surrounding primitive subunits by spaces) indicating that the
remaining subunits are in the denominator.  Generates an error if the
[arg unitString] is invalid.

[example_begin]
% ::units::reduce pascal
1000.0 gram / meter second second
[example_end]



[call [cmd ::units::new] [arg name] [arg baseUnits]]

Creates a new unit conversion with the specified name.  The new unit
[arg name] must be only alphabetic (upper or lower case) letters.
The [arg baseUnits] string can consist of any valid units conversion
string, including constant factors, numerator and denominator parts,







<













<
<







63
64
65
66
67
68
69

70
71
72
73
74
75
76
77
78
79
80
81
82


83
84
85
86
87
88
89
671.080887616
% ::units::convert "1.0 m kg/s^2" newton
1.0
% ::units::convert 1.0 millimeter
1000.0
[example_end]


[call [cmd ::units::reduce] [arg unitString]]

Returns a unit string consisting of a scale factor followed by a space
separated list of sorted and reduced primitive units.  The reduced
unit string may include a forward-slash (separated from the
surrounding primitive subunits by spaces) indicating that the
remaining subunits are in the denominator.  Generates an error if the
[arg unitString] is invalid.

[example_begin]
% ::units::reduce pascal
1000.0 gram / meter second second
[example_end]



[call [cmd ::units::new] [arg name] [arg baseUnits]]

Creates a new unit conversion with the specified name.  The new unit
[arg name] must be only alphabetic (upper or lower case) letters.
The [arg baseUnits] string can consist of any valid units conversion
string, including constant factors, numerator and denominator parts,
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
% ::units::new fortnight "14 days"
% ::units::convert 100m/s furlongs/fortnight
601288.475303
[example_end]

[list_end]



[section "UNIT STRING FORMAT"]

Value and unit string format is quite flexible.  It is possible to
define virtually any combination of units, prefixes, and powers.
Valid unit strings must conform to these rules.


[list_begin itemized]

[item]
A unit string consists of an optional scale factor followed by zero or
more subunits.  The scale factor must be a valid floating point
number, and may or may not be separated from the subunits.  The scale







<
<





<







99
100
101
102
103
104
105


106
107
108
109
110

111
112
113
114
115
116
117
% ::units::new fortnight "14 days"
% ::units::convert 100m/s furlongs/fortnight
601288.475303
[example_end]

[list_end]



[section "UNIT STRING FORMAT"]

Value and unit string format is quite flexible.  It is possible to
define virtually any combination of units, prefixes, and powers.
Valid unit strings must conform to these rules.


[list_begin itemized]

[item]
A unit string consists of an optional scale factor followed by zero or
more subunits.  The scale factor must be a valid floating point
number, and may or may not be separated from the subunits.  The scale
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
kg-m/s^2                 1000.0 gram meter / second second
30second                 30.0 second
30 second                30.0 second
30 seconds               30.0 second
200*meter/20.5*second    9.75609756098 meter / second
[example_end]





[section "SI UNITS"]

[para]

The standard SI units are predefined according to [emph "NIST Special
Publication 330"].  Standard units for both SI Base Units (Table
1) and SI Derived Units with Special Names (Tables 3a and 3b) are
included here for reference.  Each standard unit name and abbreviation
are included in this package.


[subsection "SI Base Units"]

[example_begin]
Quantity                Unit Name    Abbr.
---------------------------------------------
Length                  meter        m
Mass                    kilogram     kg
Time                    second       s
Current                 ampere       A
Temperature             kelvin       K
Amount                  mole         mol
Luminous Intensity      candela      cd
[example_end]


[subsection "SI Derived Units with Special Names"]

[example_begin]
Quantity                Unit Name    Abbr.   Units     Base Units
--------------------------------------------------------------------
plane angle             radian      rad     m/m       m/m







<
<
<
<









<














<







161
162
163
164
165
166
167




168
169
170
171
172
173
174
175
176

177
178
179
180
181
182
183
184
185
186
187
188
189
190

191
192
193
194
195
196
197
kg-m/s^2                 1000.0 gram meter / second second
30second                 30.0 second
30 second                30.0 second
30 seconds               30.0 second
200*meter/20.5*second    9.75609756098 meter / second
[example_end]





[section "SI UNITS"]

[para]

The standard SI units are predefined according to [emph "NIST Special
Publication 330"].  Standard units for both SI Base Units (Table
1) and SI Derived Units with Special Names (Tables 3a and 3b) are
included here for reference.  Each standard unit name and abbreviation
are included in this package.


[subsection "SI Base Units"]

[example_begin]
Quantity                Unit Name    Abbr.
---------------------------------------------
Length                  meter        m
Mass                    kilogram     kg
Time                    second       s
Current                 ampere       A
Temperature             kelvin       K
Amount                  mole         mol
Luminous Intensity      candela      cd
[example_end]


[subsection "SI Derived Units with Special Names"]

[example_begin]
Quantity                Unit Name    Abbr.   Units     Base Units
--------------------------------------------------------------------
plane angle             radian      rad     m/m       m/m
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
[example_end]

[para]

Note that the SI unit kilograms is actually implemented as grams
because 1e-6 kilogram = 1 milligram, not 1 microkilogram.  The
abbreviation for Electric Resistance (ohms), which is the omega
character, is not supported.  

[para]

Also note that there is no support for Celsius or Farenheit
temperature.  The units conversion routines can only scale values
with multiplication and division, so it is not possible to convert
from thermodynamic temperature (kelvins) to absolute degrees Celsius
or Farenheit.  Conversion of thermodynamic quantities, such as
thermal expansion (per unit temperature), however, are easy to add
to the units library.

[para]

SI Units can have a multiple or sub-multiple prefix.  The prefix or its
abbreviation should appear before the unit, without spaces.  Compound
prefixes are not allowed, and a prefix should never be used alone.
These prefixes are defined in Table 5 of [emph "Special Publication
330"].


[subsection "SI Prefixes"]

[example_begin]
Prefix Name     Abbr.   Factor
---------------------------------------
yotta           Y       1e24







|


















<







218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243

244
245
246
247
248
249
250
[example_end]

[para]

Note that the SI unit kilograms is actually implemented as grams
because 1e-6 kilogram = 1 milligram, not 1 microkilogram.  The
abbreviation for Electric Resistance (ohms), which is the omega
character, is not supported.

[para]

Also note that there is no support for Celsius or Farenheit
temperature.  The units conversion routines can only scale values
with multiplication and division, so it is not possible to convert
from thermodynamic temperature (kelvins) to absolute degrees Celsius
or Farenheit.  Conversion of thermodynamic quantities, such as
thermal expansion (per unit temperature), however, are easy to add
to the units library.

[para]

SI Units can have a multiple or sub-multiple prefix.  The prefix or its
abbreviation should appear before the unit, without spaces.  Compound
prefixes are not allowed, and a prefix should never be used alone.
These prefixes are defined in Table 5 of [emph "Special Publication
330"].


[subsection "SI Prefixes"]

[example_begin]
Prefix Name     Abbr.   Factor
---------------------------------------
yotta           Y       1e24
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
in this package.  In some cases, many different conversion factors
exist for a given unit, depending on the context. (The appendix lists
over 40 conversions for British thermal units!)  Application specific
conversions can always be added using the [cmd new]
command, but some well known and often used conversions are included
in this package.


[subsection "Non-SI Units"]

[example_begin]
Unit Name            Abbr.    Base Units
--------------------------------------------------
angstrom                      1.0E-10 m
astronomicalUnit     AU       1.495979E11 m







<







286
287
288
289
290
291
292

293
294
295
296
297
298
299
in this package.  In some cases, many different conversion factors
exist for a given unit, depending on the context. (The appendix lists
over 40 conversions for British thermal units!)  Application specific
conversions can always be added using the [cmd new]
command, but some well known and often used conversions are included
in this package.


[subsection "Non-SI Units"]

[example_begin]
Unit Name            Abbr.    Base Units
--------------------------------------------------
angstrom                      1.0E-10 m
astronomicalUnit     AU       1.495979E11 m
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
pound                lb       4.535924E-1 kg
revolution                    6.283185 rad
revolutionPerMinute  rpm      1.047198E-1 rad/s
yard                 yd       9.144E-1 m
year                          3.1536E7 s
[example_end]


[subsection "Quantities and Derived Units with Special Names"]

This units conversion package is limited specifically to unit
reduction, comparison, and scaling.  This package does not consider
any of the quantity names for either base or derived units.  A similar
implementation or an extension in a typed or object-oriented language
might introduce user defined types for the quantities.  Quantity type







<







326
327
328
329
330
331
332

333
334
335
336
337
338
339
pound                lb       4.535924E-1 kg
revolution                    6.283185 rad
revolutionPerMinute  rpm      1.047198E-1 rad/s
yard                 yd       9.144E-1 m
year                          3.1536E7 s
[example_end]


[subsection "Quantities and Derived Units with Special Names"]

This units conversion package is limited specifically to unit
reduction, comparison, and scaling.  This package does not consider
any of the quantity names for either base or derived units.  A similar
implementation or an extension in a typed or object-oriented language
might introduce user defined types for the quantities.  Quantity type
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
inclusion of other derived types which are expressed in terms of
special units, as illustrated in Table 2 of [emph "NIST Publication
330"].  The quantity [emph "area"], for example, could be
defined as units properly reducing to [emph "meter^2"], although
the utility of defining a unit named [emph "square meter"] is
arguable.


[section "REFERENCES"]

The unit names, abbreviations, and conversion values are derived from
those published by the United States Department of Commerce Technology
Administration, National Institute of Standards and Technology (NIST)
in [emph "NIST Special Publication 330: The International System of
Units (SI)"] and [emph "NIST Special Publication 811: Guide for
the Use of the International System of Units (SI)"].  Both of
these publications are available (as of December 2000) from
[uri http://physics.nist.gov/cuu/Reference/contents.html]

[para]

The ideas behind implementation of this package is based in part on
code written in 1993 by Adrian Mariano which performed dimensional
analysis of unit strings using fixed size tables of C structs.  After
going missing in the late 1990's, Adrian's code has reappeared in the
GNU Units program at [uri http://www.gnu.org/software/units/]


[section "AUTHORS"]

Robert W. Techentin


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph units] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords unit conversion constants distance radians angle]
[manpage_end]







<



















<




|
<
|
<
<
<
<
<
<
<
<
<
<
<

360
361
362
363
364
365
366

367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385

386
387
388
389
390

391











392
inclusion of other derived types which are expressed in terms of
special units, as illustrated in Table 2 of [emph "NIST Publication
330"].  The quantity [emph "area"], for example, could be
defined as units properly reducing to [emph "meter^2"], although
the utility of defining a unit named [emph "square meter"] is
arguable.


[section "REFERENCES"]

The unit names, abbreviations, and conversion values are derived from
those published by the United States Department of Commerce Technology
Administration, National Institute of Standards and Technology (NIST)
in [emph "NIST Special Publication 330: The International System of
Units (SI)"] and [emph "NIST Special Publication 811: Guide for
the Use of the International System of Units (SI)"].  Both of
these publications are available (as of December 2000) from
[uri http://physics.nist.gov/cuu/Reference/contents.html]

[para]

The ideas behind implementation of this package is based in part on
code written in 1993 by Adrian Mariano which performed dimensional
analysis of unit strings using fixed size tables of C structs.  After
going missing in the late 1990's, Adrian's code has reappeared in the
GNU Units program at [uri http://www.gnu.org/software/units/]


[section "AUTHORS"]

Robert W. Techentin

[vset CATEGORY units]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/uri/uri.man.

1















2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[manpage_begin uri n 1.2.2]















[moddesc   {Tcl Uniform Resource Identifier Management}]
[titledesc {URI utilities}]
[category  Networking]
[require Tcl 8.2]
[require uri [opt 1.2.2]]
[description]

This package contains two parts. First it provides regular expressions
for a number of url/uri schemes. Second it provides a number of
commands for manipulating urls/uris and fetching data specified by
them. For the latter this package analyses the requested url/uri and
then dispatches it to the appropriate package (http, ftp, ...) for
actual fetching.

[para]

The package currently does not conform to
RFC 2396 ([uri http://www.rfc-editor.org/rfc/rfc2396.txt]),
but quite likely should be. Patches and other help are welcome.



[section COMMANDS]

[list_begin definitions]

[call [cmd uri::split] [arg url] [opt [arg defaultscheme]]]


>
>
>
>
>
>
>
>
>
>
>
>
>
>
>



















<
<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35


36
37
38
39
40
41
42
[manpage_begin uri n 1.2.2]
[keywords {fetching information}]
[keywords file]
[keywords ftp]
[keywords gopher]
[keywords http]
[keywords ldap]
[keywords mailto]
[keywords news]
[keywords prospero]
[keywords {rfc 2255}]
[keywords {rfc 2396}]
[keywords uri]
[keywords url]
[keywords wais]
[keywords www]
[moddesc   {Tcl Uniform Resource Identifier Management}]
[titledesc {URI utilities}]
[category  Networking]
[require Tcl 8.2]
[require uri [opt 1.2.2]]
[description]

This package contains two parts. First it provides regular expressions
for a number of url/uri schemes. Second it provides a number of
commands for manipulating urls/uris and fetching data specified by
them. For the latter this package analyses the requested url/uri and
then dispatches it to the appropriate package (http, ftp, ...) for
actual fetching.

[para]

The package currently does not conform to
RFC 2396 ([uri http://www.rfc-editor.org/rfc/rfc2396.txt]),
but quite likely should be. Patches and other help are welcome.



[section COMMANDS]

[list_begin definitions]

[call [cmd uri::split] [arg url] [opt [arg defaultscheme]]]

63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105

[def news]
Either [const message-id] or [const newsgroup-name].

[list_end]
[para]


[call [cmd uri::join] [opt "[arg key] [arg value]"]...]

[cmd uri::join] takes a list of key/value pairs (generated by

[cmd uri::split], for example) and returns the canonical url they
represent. Currently only the schemes [term http], [term ftp],
[term mailto], [term urn], [term news], [term ldap] and [term file]
are supported. See section [sectref EXTENDING] on how to expand that
range.


[call [cmd uri::resolve] [arg base] [arg url]]

[cmd uri::resolve] resolves the specified [arg url] relative to

[arg base]. In other words: A non-relative [arg url] is returned
unchanged, whereas for a relative [arg url] the missing parts are
taken from [arg base] and prepended to it. The result of this
operation is returned. For an empty [arg url] the result is

[arg base].


[call [cmd uri::isrelative] [arg url]]

[cmd uri::isrelative] determines whether the specified [arg url] is
absolute or relative.


[call [cmd uri::geturl] [arg url] [opt "[arg options]..."]]

[cmd uri::geturl] decodes the specified [arg url] and then dispatches
the request to the package appropriate for the scheme found in the
url. The command assumes that the package to handle the given scheme
either has the same name as the scheme itself (including possible







<









<












<




<







76
77
78
79
80
81
82

83
84
85
86
87
88
89
90
91

92
93
94
95
96
97
98
99
100
101
102
103

104
105
106
107

108
109
110
111
112
113
114

[def news]
Either [const message-id] or [const newsgroup-name].

[list_end]
[para]


[call [cmd uri::join] [opt "[arg key] [arg value]"]...]

[cmd uri::join] takes a list of key/value pairs (generated by

[cmd uri::split], for example) and returns the canonical url they
represent. Currently only the schemes [term http], [term ftp],
[term mailto], [term urn], [term news], [term ldap] and [term file]
are supported. See section [sectref EXTENDING] on how to expand that
range.


[call [cmd uri::resolve] [arg base] [arg url]]

[cmd uri::resolve] resolves the specified [arg url] relative to

[arg base]. In other words: A non-relative [arg url] is returned
unchanged, whereas for a relative [arg url] the missing parts are
taken from [arg base] and prepended to it. The result of this
operation is returned. For an empty [arg url] the result is

[arg base].


[call [cmd uri::isrelative] [arg url]]

[cmd uri::isrelative] determines whether the specified [arg url] is
absolute or relative.


[call [cmd uri::geturl] [arg url] [opt "[arg options]..."]]

[cmd uri::geturl] decodes the specified [arg url] and then dispatches
the request to the package appropriate for the scheme found in the
url. The command assumes that the package to handle the given scheme
either has the same name as the scheme itself (including possible
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
described above. They are handled internally.

[para]

It is not possible to specify results of the command. They depend on
the [cmd geturl]-command for the scheme the request was dispatched to.


[call [cmd uri::canonicalize] [arg uri]]

[cmd uri::canonicalize] returns the canonical form of a URI.  The
canonical form of a URI is one where relative path specifications,
ie. . and .., have been resolved.


[call [cmd uri::register] [arg schemeList] [arg script]]

[cmd uri::register] registers the first element of [arg schemeList] as
a new scheme and the remaining elements as aliases for this scheme. It
creates the namespace for the scheme and executes the [arg script] in
the new namespace. The script has to declare variables containing the







<





<







126
127
128
129
130
131
132

133
134
135
136
137

138
139
140
141
142
143
144
described above. They are handled internally.

[para]

It is not possible to specify results of the command. They depend on
the [cmd geturl]-command for the scheme the request was dispatched to.


[call [cmd uri::canonicalize] [arg uri]]

[cmd uri::canonicalize] returns the canonical form of a URI.  The
canonical form of a URI is one where relative path specifications,
ie. . and .., have been resolved.


[call [cmd uri::register] [arg schemeList] [arg script]]

[cmd uri::register] registers the first element of [arg schemeList] as
a new scheme and the remaining elements as aliases for this scheme. It
creates the namespace for the scheme and executes the [arg script] in
the new namespace. The script has to declare variables containing the
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
[section  CREDITS]
[para]

Original code (regular expressions) by Andreas Kupries.
Modularisation by Steve Ball, also the split/join/resolve
functionality.

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph uri] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords uri url {fetching information} www http ftp mailto]
[keywords news gopher wais ldap prospero file]
[keywords {rfc 2396} {rfc 2255}]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<
<
<

187
188
189
190
191
192
193

194


195










196
[section  CREDITS]
[para]

Original code (regular expressions) by Andreas Kupries.
Modularisation by Steve Ball, also the split/join/resolve
functionality.


[vset CATEGORY uri]


[include ../doctools2base/include/feedback.inc]










[manpage_end]

Changes to modules/uri/urn-scheme.man.

1




2
3
4
5
6
7
8
[manpage_begin uri_urn n 1.1.2]




[moddesc   {Tcl Uniform Resource Identifier Management}]
[titledesc {URI utilities, URN scheme}]
[category  Networking]
[require Tcl 8.2]
[require uri::urn [opt 1.1.2]]
[description]


>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
[manpage_begin uri_urn n 1.1.2]
[keywords {rfc 2141}]
[keywords uri]
[keywords url]
[keywords urn]
[moddesc   {Tcl Uniform Resource Identifier Management}]
[titledesc {URI utilities, URN scheme}]
[category  Networking]
[require Tcl 8.2]
[require uri::urn [opt 1.1.2]]
[description]

27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

This commands performs the reverse of [cmd ::uri::urn::quote]. It
takes an [term urn] url, removes the quoting from all disallowed
characters, and returns the modified urls as its result.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph uri] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[keywords uri url urn]
[keywords {rfc 2141}]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<

31
32
33
34
35
36
37

38


39








40

This commands performs the reverse of [cmd ::uri::urn::quote]. It
takes an [term urn] url, removes the quoting from all disallowed
characters, and returns the modified urls as its result.

[list_end]


[vset CATEGORY uri]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/uuid/uuid.man.

1


2
3
4
5
6
7
8
[manpage_begin uuid n 1.0.2]


[moddesc {uuid}]
[copyright {2004, Pat Thoyts <[email protected]>}]
[titledesc {UUID generation and comparison}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require uuid [opt 1.0.2]]
[description]

>
>







1
2
3
4
5
6
7
8
9
10
[manpage_begin uuid n 1.0.2]
[keywords GUID]
[keywords UUID]
[moddesc {uuid}]
[copyright {2004, Pat Thoyts <[email protected]>}]
[titledesc {UUID generation and comparison}]
[category  {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require uuid [opt 1.0.2]]
[description]
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62

[enum]
    Paul J. Leach, "UUIDs and GUIDs", February 1998.
    ([uri http://www.opengroup.org/dce/info/draft-leach-uuids-guids-01.txt])

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph uuid] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords UUID GUID]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<

44
45
46
47
48
49
50

51


52








53

[enum]
    Paul J. Leach, "UUIDs and GUIDs", February 1998.
    ([uri http://www.opengroup.org/dce/info/draft-leach-uuids-guids-01.txt])

[list_end]


[vset CATEGORY uuid]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/valtype/valtype_common.man.

1
2






3
4
5
6
7
8
9
10
11
12
13
14
15
[comment {-*- tcl -*- --- doctools ---}]
[manpage_begin valtype::common n 1]






[copyright {2011 Andreas Kupries <[email protected]>}]
[titledesc "Validation, common code"]
[moddesc {Validation types}]
[category {Validation, Type checking}]
[keywords Validation Checking Testing {Type checking}]
[keywords {Value checking} isA]
[require Tcl 8.5]
[require valtype::common [opt 1]]
[description]

This package implements a number of common commands used by the
validation types in this module. These commands essentially
encapsulate the throwing of validation errors, ensuring that a proper


>
>
>
>
>
>




<
<







1
2
3
4
5
6
7
8
9
10
11
12


13
14
15
16
17
18
19
[comment {-*- tcl -*- --- doctools ---}]
[manpage_begin valtype::common n 1]
[keywords Checking]
[keywords isA]
[keywords Testing]
[keywords {Type checking}]
[keywords Validation]
[keywords {Value checking}]
[copyright {2011 Andreas Kupries <[email protected]>}]
[titledesc "Validation, common code"]
[moddesc {Validation types}]
[category {Validation, Type checking}]


[require Tcl 8.5]
[require valtype::common [opt 1]]
[description]

This package implements a number of common commands used by the
validation types in this module. These commands essentially
encapsulate the throwing of validation errors, ensuring that a proper
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108

[def "INVALID [vset CODE] CHECK-DIGIT"]

The check digit of the input value is wrong. This usually signals a
data-entry error, with digits transposed, forgotten, etc. Of course,
th input may be an outright fake too.


[include include/c_lenpfx.inc]
[list_end]


[vset CATEGORY valtype]
[include ../doctools2base/include/feedback.inc]
[manpage_end]







<


<




98
99
100
101
102
103
104

105
106

107
108
109
110

[def "INVALID [vset CODE] CHECK-DIGIT"]

The check digit of the input value is wrong. This usually signals a
data-entry error, with digits transposed, forgotten, etc. Of course,
th input may be an outright fake too.


[include include/c_lenpfx.inc]
[list_end]


[vset CATEGORY valtype]
[include ../doctools2base/include/feedback.inc]
[manpage_end]

Changes to modules/virtchannel_base/cat.man.

1
2




3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::cat n 1]




[copyright {2011 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Concatenation channel}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::core [opt 1]]


>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::cat n 1]
[keywords {concatenation channel}]
[keywords {reflected channel}]
[keywords {tip 219}]
[keywords {virtual channel}]
[copyright {2011 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Concatenation channel}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::core [opt 1]]
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
[call [cmd ::tcl::chan::cat] [arg chan]...]

This command creates the concatenation channel using all the provided
channels, and returns its handle.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords {virtual channel} {reflected channel} {concatenation channel} {tip 219}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<

38
39
40
41
42
43
44
45

46











47
[call [cmd ::tcl::chan::cat] [arg chan]...]

This command creates the concatenation channel using all the provided
channels, and returns its handle.

[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/virtchannel_base/facade.man.

1
2




3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::facade n 1]




[copyright {2011 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Facade channel}]
[require Tcl 8.5]
[require TclOO]
[require logger]


>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::facade n 1]
[keywords {concatenation channel}]
[keywords {reflected channel}]
[keywords {tip 219}]
[keywords {virtual channel}]
[copyright {2011 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Facade channel}]
[require Tcl 8.5]
[require TclOO]
[require logger]
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
[call [cmd ::tcl::chan::facade] [arg chan]]

This command creates the facade channel around the provided
channel [arg chan], and returns its handle.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords {virtual channel} {reflected channel} {concatenation channel} {tip 219}]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<

64
65
66
67
68
69
70

71


72








73
[call [cmd ::tcl::chan::facade] [arg chan]]

This command creates the facade channel around the provided
channel [arg chan], and returns its handle.

[list_end]


[vset CATEGORY virtchannel]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/virtchannel_base/halfpipe.man.

1
2






3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::halfpipe n 1]






[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {In-memory channel, half of a fifo2}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::events [opt 1]]


>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::halfpipe n 1]
[keywords callbacks]
[keywords fifo]
[keywords {in-memory channel}]
[keywords {reflected channel}]
[keywords {tip 219}]
[keywords {virtual channel}]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {In-memory channel, half of a fifo2}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::events [opt 1]]
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
The result of the command is a list containing two elements, the
handle of the new channel, and the object command of the channel
handler, in this order.

The latter is supplied to the caller to provide her with access to the
[method put] method for adding data to the channel.


[para] Two halfpipes with a bit of glue logic in the callbacks make
for one [package tcl::chan::fifo2].

[call [arg objectCmd] [method put] [arg bytes]]

This method of the channel handler object puts the data [arg bytes]
into the channel so that it can be read from it.







<







40
41
42
43
44
45
46

47
48
49
50
51
52
53
The result of the command is a list containing two elements, the
handle of the new channel, and the object command of the channel
handler, in this order.

The latter is supplied to the caller to provide her with access to the
[method put] method for adding data to the channel.


[para] Two halfpipes with a bit of glue logic in the callbacks make
for one [package tcl::chan::fifo2].

[call [arg objectCmd] [method put] [arg bytes]]

This method of the channel handler object puts the data [arg bytes]
into the channel so that it can be read from it.
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
[opt_def -empty-command cmdprefix]

This callback is invoked when the channel has run out of data to read.
A single argument is supplied, the handle of the channel.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[keywords fifo callbacks]
[keywords {virtual channel} {reflected channel} {in-memory channel} {tip 219}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<

72
73
74
75
76
77
78
79

80











81
[opt_def -empty-command cmdprefix]

This callback is invoked when the channel has run out of data to read.
A single argument is supplied, the handle of the channel.

[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/virtchannel_base/nullzero.man.

1
2







3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::nullzero n 1]







[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Null/Zero channel combination}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::events [opt 1]]


>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::nullzero n 1]
[keywords /dev/null]
[keywords /dev/zero]
[keywords null]
[keywords {reflected channel}]
[keywords {tip 219}]
[keywords {virtual channel}]
[keywords zero]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Null/Zero channel combination}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::events [opt 1]]
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

[call [cmd ::tcl::chan::nullzero]]

This command creates a new nullzero channel and returns its handle.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords {virtual channel} {reflected channel} null /dev/null zero /dev/zero {tip 219}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<

35
36
37
38
39
40
41
42

43











44

[call [cmd ::tcl::chan::nullzero]]

This command creates a new nullzero channel and returns its handle.

[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/virtchannel_base/randseed.man.

1
2







3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::randseed n 1]







[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Utilities for random channels}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::randseed [opt 1]]


>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::randseed n 1]
[keywords /dev/random]
[keywords merge]
[keywords random]
[keywords {reflected channel}]
[keywords seed]
[keywords {tip 219}]
[keywords {virtual channel}]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Utilities for random channels}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::randseed [opt 1]]
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

This command takes to seed lists and combines them into a single list
by XORing them elementwise, modulo 256. If the lists are not of equial
length the shorter of the two is padded with 0s before merging.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[keywords seed merge]
[keywords {virtual channel} {reflected channel} random /dev/random {tip 219}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<

33
34
35
36
37
38
39
40

41











42

This command takes to seed lists and combines them into a single list
by XORing them elementwise, modulo 256. If the lists are not of equial
length the shorter of the two is padded with 0s before merging.

[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/virtchannel_base/std.man.

1
2






3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::std n 1]






[copyright {2011 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Standard I/O, unification of stdin and stdout}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::core [opt 1]]


>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::std n 1]
[keywords {reflected channel}]
[keywords {standard io}]
[keywords stdin]
[keywords stdout]
[keywords {tip 219}]
[keywords {virtual channel}]
[copyright {2011 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Standard I/O, unification of stdin and stdout}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::core [opt 1]]
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
This command creates the std channel and returns its handle.

[para] The channel is created only once, on the first call, and all
future calls simply return this handle.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords {virtual channel} {reflected channel} stdin stdout {standard io} {tip 219}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<

34
35
36
37
38
39
40
41

42











43
This command creates the std channel and returns its handle.

[para] The channel is created only once, on the first call, and all
future calls simply return this handle.

[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/virtchannel_base/tcllib_fifo.man.

1
2





3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::fifo n 1]





[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {In-memory fifo channel}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::events [opt 1]]


>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::fifo n 1]
[keywords fifo]
[keywords {in-memory channel}]
[keywords {reflected channel}]
[keywords {tip 219}]
[keywords {virtual channel}]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {In-memory fifo channel}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::events [opt 1]]
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

[call [cmd ::tcl::chan::fifo]]

This command creates a new fifo channel and returns its handle.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[keywords fifo]
[keywords {virtual channel} {reflected channel} {in-memory channel} {tip 219}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<

34
35
36
37
38
39
40
41

42











43

[call [cmd ::tcl::chan::fifo]]

This command creates a new fifo channel and returns its handle.

[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/virtchannel_base/tcllib_fifo2.man.

1
2







3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::fifo2 n 1]







[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {In-memory interconnected fifo channels}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::events [opt 1]]


>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::fifo2 n 1]
[keywords {connected fifos}]
[keywords fifo]
[keywords {in-memory channel}]
[keywords {inter-thread communication}]
[keywords {reflected channel}]
[keywords {tip 219}]
[keywords {virtual channel}]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {In-memory interconnected fifo channels}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::events [opt 1]]
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
[call [cmd ::tcl::chan::fifo2]]

This command creates a new connected pair of fifo channels and returns
their handles, as a list containing two elements.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[keywords {inter-thread communication} {connected fifos} fifo]
[keywords {virtual channel} {reflected channel} {in-memory channel} {tip 219}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<

41
42
43
44
45
46
47
48

49











50
[call [cmd ::tcl::chan::fifo2]]

This command creates a new connected pair of fifo channels and returns
their handles, as a list containing two elements.

[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/virtchannel_base/tcllib_memchan.man.

1
2




3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::memchan n 1]




[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {In-memory channel}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::events [opt 1]]


>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::memchan n 1]
[keywords {in-memory channel}]
[keywords {reflected channel}]
[keywords {tip 219}]
[keywords {virtual channel}]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {In-memory channel}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::events [opt 1]]
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

[call [cmd ::tcl::chan::memchan]]

This command creates a new memchan channel and returns its handle.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords {virtual channel} {reflected channel} {in-memory channel} {tip 219}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<

35
36
37
38
39
40
41
42

43











44

[call [cmd ::tcl::chan::memchan]]

This command creates a new memchan channel and returns its handle.

[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/virtchannel_base/tcllib_null.man.

1
2





3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::null n 1]





[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Null channel}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::events [opt 1]]


>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::null n 1]
[keywords /dev/null]
[keywords null]
[keywords {reflected channel}]
[keywords {tip 219}]
[keywords {virtual channel}]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Null channel}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::events [opt 1]]
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

[call [cmd ::tcl::chan::null]]

This command creates a new null channel and returns its handle.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords {virtual channel} {reflected channel} null /dev/null {tip 219}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<

36
37
38
39
40
41
42
43

44











45

[call [cmd ::tcl::chan::null]]

This command creates a new null channel and returns its handle.

[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/virtchannel_base/tcllib_random.man.

1
2





3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::random n 1]





[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Random channel}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::events [opt 1]]


>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::random n 1]
[keywords /dev/random]
[keywords random]
[keywords {reflected channel}]
[keywords {tip 219}]
[keywords {virtual channel}]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Random channel}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::events [opt 1]]
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
This command creates a new random channel and returns its handle.

The seed is a list of integer numbers used to initialize the
internal feedback shift register of the generator.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords {virtual channel} {reflected channel} random /dev/random {tip 219}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<

37
38
39
40
41
42
43
44

45











46
This command creates a new random channel and returns its handle.

The seed is a list of integer numbers used to initialize the
internal feedback shift register of the generator.

[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/virtchannel_base/tcllib_string.man.

1
2




3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::string n 1]




[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Read-only in-memory channel}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::events [opt 1]]


>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::string n 1]
[keywords {in-memory channel}]
[keywords {reflected channel}]
[keywords {tip 219}]
[keywords {virtual channel}]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Read-only in-memory channel}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::events [opt 1]]
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
[call [cmd ::tcl::chan::string] [arg content]]

This command creates a new string channel and returns its handle. The
channel provides random read-only access to the [arg content] string.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords {virtual channel} {reflected channel} {in-memory channel} {tip 219}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<

36
37
38
39
40
41
42
43

44











45
[call [cmd ::tcl::chan::string] [arg content]]

This command creates a new string channel and returns its handle. The
channel provides random read-only access to the [arg content] string.

[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/virtchannel_base/tcllib_variable.man.

1
2




3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::variable n 1]




[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {In-memory channel using variable for storage}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::events [opt 1]]


>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::variable n 1]
[keywords {in-memory channel}]
[keywords {reflected channel}]
[keywords {tip 219}]
[keywords {virtual channel}]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {In-memory channel using variable for storage}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::events [opt 1]]
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54

This command creates a new variable channel and returns its handle.
The content of the channel is stored in the associated namespace
variable [arg varname].

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords {virtual channel} {reflected channel} {in-memory channel} {tip 219}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<

37
38
39
40
41
42
43
44

45











46

This command creates a new variable channel and returns its handle.
The content of the channel is stored in the associated namespace
variable [arg varname].

[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/virtchannel_base/tcllib_zero.man.

1
2





3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::zero n 1]





[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Zero channel}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::events [opt 1]]


>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::zero n 1]
[keywords /dev/zero]
[keywords {reflected channel}]
[keywords {tip 219}]
[keywords {virtual channel}]
[keywords zero]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Zero channel}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::events [opt 1]]
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

[call [cmd ::tcl::chan::zero]]

This command creates a new zero channel and returns its handle.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords {virtual channel} {reflected channel} zero /dev/zero {tip 219}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<

36
37
38
39
40
41
42
43

44











45

[call [cmd ::tcl::chan::zero]]

This command creates a new zero channel and returns its handle.

[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/virtchannel_base/textwindow.man.

1
2





3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::textwindow n 1]





[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Textwindow channel}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::events [opt 1]]


>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::textwindow n 1]
[keywords {reflected channel}]
[keywords {text widget}]
[keywords {tip 219}]
[keywords Tk]
[keywords {virtual channel}]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Textwindow channel}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::events [opt 1]]
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
[call [cmd ::tcl::chan::textwindow] [arg widget]]

This command creates a new textwindow channel and returns its handle.
Data written to this channel will appear in the associated [arg widget].

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords {virtual channel} {reflected channel} Tk {text widget} {tip 219}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<

30
31
32
33
34
35
36
37

38











39
[call [cmd ::tcl::chan::textwindow] [arg widget]]

This command creates a new textwindow channel and returns its handle.
Data written to this channel will appear in the associated [arg widget].

[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/virtchannel_core/core.man.

1
2



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::core n 1]



[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Basic reflected/virtual channel support}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::core [opt 1]]
[description]
[para]

The [package tcl::chan::core] package provides a [package TclOO]
class implementing common behaviour needed by virtually every
reflected or virtual channel (initialization, finalization).

[para] This class expects to be used as either superclass of a concrete
channel class, or to be mixed into such a class.


[section {Class API}]

[list_begin definitions]

[call [cmd ::tcl::chan::core] [arg objectName]]

This command creates a new channel core object with an associated
global Tcl command whose name is [emph objectName]. This command may
be used to invoke various operations on the object, as described in
the section for the [sectref {Instance API}].

[list_end]


[section {Instance API}]

The API of channel core instances provides only two methods, both
corresponding to channel handler commands (For reference see
[uri http:/tip.tcl.tk/219 {TIP 219}]). They expect to be called
from whichever object instance the channel core was made a part of.


[list_begin definitions]

[call [arg objectName] [method initialize] [arg thechannel] [arg mode]]

This method implements standard behaviour for the [method initialize]
method of channel handlers. Using introspection it finds the handler
methods supported by the instance and returns a list containing their
names, as expected by the support for reflected channels in the Tcl
core.

[para] It further remembers the channel handle in an instance variable
for access by sub-classes.


[call [arg objectName] [method finalize] [arg thechannel]]

This method implements standard behaviour for the [method finalize]
method of channel handlers. It simply destroys itself.


[call [arg objectName] [method destroy]]

Destroying the channel core instance closes the channel it was
initialized for, see the method [method initialize]. When destroyed
from within a call of [method finalize] this does not happen, under
the assumption that the channel is being destroyed by Tcl.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords {virtual channel} {reflected channel} {tip 219}]
[manpage_end]


>
>
>

















<













<






<














<




<










|
<
|
<
<
<
<
<
<
<
<
<
<
<

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

23
24
25
26
27
28
29
30
31
32
33
34
35

36
37
38
39
40
41

42
43
44
45
46
47
48
49
50
51
52
53
54
55

56
57
58
59

60
61
62
63
64
65
66
67
68
69
70

71











72
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::core n 1]
[keywords {reflected channel}]
[keywords {tip 219}]
[keywords {virtual channel}]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Basic reflected/virtual channel support}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::core [opt 1]]
[description]
[para]

The [package tcl::chan::core] package provides a [package TclOO]
class implementing common behaviour needed by virtually every
reflected or virtual channel (initialization, finalization).

[para] This class expects to be used as either superclass of a concrete
channel class, or to be mixed into such a class.


[section {Class API}]

[list_begin definitions]

[call [cmd ::tcl::chan::core] [arg objectName]]

This command creates a new channel core object with an associated
global Tcl command whose name is [emph objectName]. This command may
be used to invoke various operations on the object, as described in
the section for the [sectref {Instance API}].

[list_end]


[section {Instance API}]

The API of channel core instances provides only two methods, both
corresponding to channel handler commands (For reference see
[uri http:/tip.tcl.tk/219 {TIP 219}]). They expect to be called
from whichever object instance the channel core was made a part of.


[list_begin definitions]

[call [arg objectName] [method initialize] [arg thechannel] [arg mode]]

This method implements standard behaviour for the [method initialize]
method of channel handlers. Using introspection it finds the handler
methods supported by the instance and returns a list containing their
names, as expected by the support for reflected channels in the Tcl
core.

[para] It further remembers the channel handle in an instance variable
for access by sub-classes.


[call [arg objectName] [method finalize] [arg thechannel]]

This method implements standard behaviour for the [method finalize]
method of channel handlers. It simply destroys itself.


[call [arg objectName] [method destroy]]

Destroying the channel core instance closes the channel it was
initialized for, see the method [method initialize]. When destroyed
from within a call of [method finalize] this does not happen, under
the assumption that the channel is being destroyed by Tcl.

[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/virtchannel_core/events.man.

1
2




3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::events n 1]




[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Event support for reflected/virtual channels}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::core [opt 1]]
[require tcl::chan::events [opt 1]]
[description]
[para]

The [package tcl::chan::events] package provides a [package TclOO]
class implementing common behaviour needed by virtually every
reflected or virtual channel supporting event driven IO. It is a
sub-class of [package tcl::chan::core], inheriting all of its behaviour.

[para] This class expects to be used as either superclass of a concrete
channel class, or to be mixed into such a class.


[section {Class API}]

[list_begin definitions]

[call [cmd ::tcl::chan::events] [arg objectName]]

This command creates a new channel event core object with an associated
global Tcl command whose name is [emph objectName]. This command may
be used to invoke various operations on the object, as described in
the section for the [sectref {Instance API}].

[list_end]


[section {Instance API}]

The API of channel event core instances provides only four methods, two
corresponding to channel handler commands (For reference see
[uri http:/tip.tcl.tk/219 {TIP 219}]), and the other two for use by
sub-classes to control event generation. They former expect to be called
from whichever object instance the channel event core was made a part of.


[list_begin definitions]

[call [arg objectName] [method finalize] [arg thechannel]]

This method implements standard behaviour for the [method finalize]
method of channel handlers. It overrides the behaviour inherited from
[package tcl::chan::core] and additionally disables any and all event
generation before destroying itself.


[call [arg objectName] [method watch] [arg thechannel] [arg eventmask]]

This method implements standard behaviour for the [method watch]
method of channel handlers. Called by the IO system whenever the
interest in event changes it updates the instance state to activate
and/or suppress the generation of the events of (non-)interest.


[call [arg objectName] [method allow] [arg eventname]...]
[call [arg objectName] [method disallow] [arg eventname]...]

These two methods are exported to sub-classes, so that their instances
can notify their event core of the events the channel they implement
can (allow) or cannot (disallow) generate.

Together with the information about the events requested by Tcl's IO
system coming in through the [method watch] method the event core is
able to determine which events it should (not) generate and act
accordingly.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords {virtual channel} {reflected channel} {event management} {tip 219}]
[manpage_end]


>
>
>
>



















<













<







<










<






<















|
<
|
<
<
<
<
<
<
<
<
<
<
<

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

26
27
28
29
30
31
32
33
34
35
36
37
38

39
40
41
42
43
44
45

46
47
48
49
50
51
52
53
54
55

56
57
58
59
60
61

62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77

78











79
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::chan::events n 1]
[keywords {event management}]
[keywords {reflected channel}]
[keywords {tip 219}]
[keywords {virtual channel}]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Event support for reflected/virtual channels}]
[require Tcl 8.5]
[require TclOO]
[require tcl::chan::core [opt 1]]
[require tcl::chan::events [opt 1]]
[description]
[para]

The [package tcl::chan::events] package provides a [package TclOO]
class implementing common behaviour needed by virtually every
reflected or virtual channel supporting event driven IO. It is a
sub-class of [package tcl::chan::core], inheriting all of its behaviour.

[para] This class expects to be used as either superclass of a concrete
channel class, or to be mixed into such a class.


[section {Class API}]

[list_begin definitions]

[call [cmd ::tcl::chan::events] [arg objectName]]

This command creates a new channel event core object with an associated
global Tcl command whose name is [emph objectName]. This command may
be used to invoke various operations on the object, as described in
the section for the [sectref {Instance API}].

[list_end]


[section {Instance API}]

The API of channel event core instances provides only four methods, two
corresponding to channel handler commands (For reference see
[uri http:/tip.tcl.tk/219 {TIP 219}]), and the other two for use by
sub-classes to control event generation. They former expect to be called
from whichever object instance the channel event core was made a part of.


[list_begin definitions]

[call [arg objectName] [method finalize] [arg thechannel]]

This method implements standard behaviour for the [method finalize]
method of channel handlers. It overrides the behaviour inherited from
[package tcl::chan::core] and additionally disables any and all event
generation before destroying itself.


[call [arg objectName] [method watch] [arg thechannel] [arg eventmask]]

This method implements standard behaviour for the [method watch]
method of channel handlers. Called by the IO system whenever the
interest in event changes it updates the instance state to activate
and/or suppress the generation of the events of (non-)interest.


[call [arg objectName] [method allow] [arg eventname]...]
[call [arg objectName] [method disallow] [arg eventname]...]

These two methods are exported to sub-classes, so that their instances
can notify their event core of the events the channel they implement
can (allow) or cannot (disallow) generate.

Together with the information about the events requested by Tcl's IO
system coming in through the [method watch] method the event core is
able to determine which events it should (not) generate and act
accordingly.

[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/virtchannel_core/transformcore.man.

1
2



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::transform::core n 1]



[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Basic reflected/virtual channel transform support}]
[require Tcl 8.5]
[require TclOO]
[require tcl::transform::core [opt 1]]
[description]
[para]

The [package tcl::transform::core] package provides a [package TclOO]
class implementing common behaviour needed by virtually every
reflected or virtual channel transformation (initialization, finalization).

[para] This class expects to be used as either superclass of a concrete
channel class, or to be mixed into such a class.


[section {Class API}]

[list_begin definitions]

[call [cmd ::tcl::transform::core] [arg objectName]]

This command creates a new transform core object with an associated
global Tcl command whose name is [emph objectName]. This command may
be used to invoke various operations on the object, as described in
the section for the [sectref {Instance API}].

[list_end]


[section {Instance API}]

The API of transform core instances provides only two methods, both
corresponding to transform handler commands (For reference see
[uri http:/tip.tcl.tk/230 {TIP 230}]). They expect to be called
from whichever object instance the transform core was made a part of.


[list_begin definitions]

[call [arg objectName] [method initialize] [arg thechannel] [arg mode]]

This method implements standard behaviour for the [method initialize]
method of transform handlers. Using introspection it finds the handler
methods supported by the instance and returns a list containing their
names, as expected by the support for reflected transformation in the
Tcl core.

[para] It further remembers the channel handle in an instance variable
for access by sub-classes.


[call [arg objectName] [method finalize] [arg thechannel]]

This method implements standard behaviour for the [method finalize]
method of channel handlers. It simply destroys itself.


[call [arg objectName] [method destroy]]

Destroying the transform core instance closes the channel and transform
it was initialized for, see the method [method initialize]. When destroyed
from within a call of [method finalize] this does not happen, under
the assumption that the channel and transform are being destroyed by Tcl.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords {virtual channel} {reflected channel} {tip 219}]
[manpage_end]


>
>
>

















<













<






<














<




<










|
<
|
<
<
<
<
<
<
<
<
<
<
<

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

23
24
25
26
27
28
29
30
31
32
33
34
35

36
37
38
39
40
41

42
43
44
45
46
47
48
49
50
51
52
53
54
55

56
57
58
59

60
61
62
63
64
65
66
67
68
69
70

71











72
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::transform::core n 1]
[keywords {reflected channel}]
[keywords {tip 219}]
[keywords {virtual channel}]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Basic reflected/virtual channel transform support}]
[require Tcl 8.5]
[require TclOO]
[require tcl::transform::core [opt 1]]
[description]
[para]

The [package tcl::transform::core] package provides a [package TclOO]
class implementing common behaviour needed by virtually every
reflected or virtual channel transformation (initialization, finalization).

[para] This class expects to be used as either superclass of a concrete
channel class, or to be mixed into such a class.


[section {Class API}]

[list_begin definitions]

[call [cmd ::tcl::transform::core] [arg objectName]]

This command creates a new transform core object with an associated
global Tcl command whose name is [emph objectName]. This command may
be used to invoke various operations on the object, as described in
the section for the [sectref {Instance API}].

[list_end]


[section {Instance API}]

The API of transform core instances provides only two methods, both
corresponding to transform handler commands (For reference see
[uri http:/tip.tcl.tk/230 {TIP 230}]). They expect to be called
from whichever object instance the transform core was made a part of.


[list_begin definitions]

[call [arg objectName] [method initialize] [arg thechannel] [arg mode]]

This method implements standard behaviour for the [method initialize]
method of transform handlers. Using introspection it finds the handler
methods supported by the instance and returns a list containing their
names, as expected by the support for reflected transformation in the
Tcl core.

[para] It further remembers the channel handle in an instance variable
for access by sub-classes.


[call [arg objectName] [method finalize] [arg thechannel]]

This method implements standard behaviour for the [method finalize]
method of channel handlers. It simply destroys itself.


[call [arg objectName] [method destroy]]

Destroying the transform core instance closes the channel and transform
it was initialized for, see the method [method initialize]. When destroyed
from within a call of [method finalize] this does not happen, under
the assumption that the channel and transform are being destroyed by Tcl.

[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]











[manpage_end]

Changes to modules/virtchannel_transform/adler32.man.

1
2







3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::transform::adler32 n 1]







[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Adler32 transformation}]
[require Tcl 8.6]
[require tcl::transform::core [opt 1]]
[require tcl::transform::adler32 [opt 1]]


>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::transform::adler32 n 1]
[keywords adler32]
[keywords {channel transformation}]
[keywords checksum]
[keywords {reflected channel}]
[keywords {tip 230}]
[keywords transformation]
[keywords {virtual channel}]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Adler32 transformation}]
[require Tcl 8.6]
[require tcl::transform::core [opt 1]]
[require tcl::transform::adler32 [opt 1]]
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76

[para] If not specified, or the empty string, the checksum of the
write direction is not saved.

[list_end]
[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords adler32 checksum transformation {channel transformation}]
[keywords {virtual channel} {reflected channel} {tip 230}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<

61
62
63
64
65
66
67
68

69












70

[para] If not specified, or the empty string, the checksum of the
write direction is not saved.

[list_end]
[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]












[manpage_end]

Changes to modules/virtchannel_transform/base64.man.

1
2







3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::transform::base64 n 1]







[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Base64 encoding transformation}]
[require Tcl 8.6]
[require tcl::transform::core [opt 1]]
[require tcl::transform::base64 [opt 1]]


>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::transform::base64 n 1]
[keywords base64]
[keywords {channel transformation}]
[keywords {reflected channel}]
[keywords {tip 230}]
[keywords {tip 317}]
[keywords transformation]
[keywords {virtual channel}]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Base64 encoding transformation}]
[require Tcl 8.6]
[require tcl::transform::core [opt 1]]
[require tcl::transform::base64 [opt 1]]
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
[call [cmd ::tcl::transform::base64] [arg chan]]

This command creates a base64 transformation on top of the channel
[arg chan] and returns its handle.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords base64 {tip 317} transformation {channel transformation}]
[keywords {virtual channel} {reflected channel} {tip 230}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<

35
36
37
38
39
40
41
42

43












44
[call [cmd ::tcl::transform::base64] [arg chan]]

This command creates a base64 transformation on top of the channel
[arg chan] and returns its handle.

[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]












[manpage_end]

Changes to modules/virtchannel_transform/counter.man.

1
2






3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::transform::counter n 1]






[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Counter transformation}]
[require Tcl 8.6]
[require tcl::transform::core [opt 1]]
[require tcl::transform::counter [opt 1]]


>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::transform::counter n 1]
[keywords {channel transformation}]
[keywords counter]
[keywords {reflected channel}]
[keywords {tip 230}]
[keywords transformation]
[keywords {virtual channel}]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Counter transformation}]
[require Tcl 8.6]
[require tcl::transform::core [opt 1]]
[require tcl::transform::counter [opt 1]]
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75

[para] If not specified, or the empty string, the counter of the
write direction is not saved.

[list_end]
[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords counter transformation {channel transformation}]
[keywords {virtual channel} {reflected channel} {tip 230}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<

59
60
61
62
63
64
65
66

67












68

[para] If not specified, or the empty string, the counter of the
write direction is not saved.

[list_end]
[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]












[manpage_end]

Changes to modules/virtchannel_transform/crc32.man.

1
2







3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::transform::crc32 n 1]







[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Crc32 transformation}]
[require Tcl 8.6]
[require tcl::transform::core [opt 1]]
[require tcl::transform::crc32 [opt 1]]


>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::transform::crc32 n 1]
[keywords {channel transformation}]
[keywords checksum]
[keywords crc32]
[keywords {reflected channel}]
[keywords {tip 230}]
[keywords transformation]
[keywords {virtual channel}]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Crc32 transformation}]
[require Tcl 8.6]
[require tcl::transform::core [opt 1]]
[require tcl::transform::crc32 [opt 1]]
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76

[para] If not specified, or the empty string, the checksum of the
write direction is not saved.

[list_end]
[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords crc32 checksum transformation {channel transformation}]
[keywords {virtual channel} {reflected channel} {tip 230}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<

61
62
63
64
65
66
67
68

69












70

[para] If not specified, or the empty string, the checksum of the
write direction is not saved.

[list_end]
[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]












[manpage_end]

Changes to modules/virtchannel_transform/hex.man.

1
2






3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::transform::hex n 1]






[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Hexadecimal encoding transformation}]
[require Tcl 8.6]
[require tcl::transform::core [opt 1]]
[require tcl::transform::hex [opt 1]]


>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::transform::hex n 1]
[keywords {channel transformation}]
[keywords hexadecimal]
[keywords {reflected channel}]
[keywords {tip 230}]
[keywords transformation]
[keywords {virtual channel}]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Hexadecimal encoding transformation}]
[require Tcl 8.6]
[require tcl::transform::core [opt 1]]
[require tcl::transform::hex [opt 1]]
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
[call [cmd ::tcl::transform::hex] [arg chan]]

This command creates a hex transformation on top of the channel
[arg chan] and returns its handle.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords hexadecimal transformation {channel transformation}]
[keywords {virtual channel} {reflected channel} {tip 230}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<

34
35
36
37
38
39
40
41

42












43
[call [cmd ::tcl::transform::hex] [arg chan]]

This command creates a hex transformation on top of the channel
[arg chan] and returns its handle.

[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]












[manpage_end]

Changes to modules/virtchannel_transform/identity.man.

1
2






3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::transform::identity n 1]






[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Identity transformation}]
[require Tcl 8.6]
[require tcl::transform::core [opt 1]]
[require tcl::transform::identity [opt 1]]


>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::transform::identity n 1]
[keywords {channel transformation}]
[keywords identity]
[keywords {reflected channel}]
[keywords {tip 230}]
[keywords transformation]
[keywords {virtual channel}]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Identity transformation}]
[require Tcl 8.6]
[require tcl::transform::core [opt 1]]
[require tcl::transform::identity [opt 1]]
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
[call [cmd ::tcl::transform::identity] [arg chan]]

This command creates an identity transformation on top of the channel
[arg chan] and returns its handle.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords identity transformation {channel transformation}]
[keywords {virtual channel} {reflected channel} {tip 230}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<

41
42
43
44
45
46
47
48

49












50
[call [cmd ::tcl::transform::identity] [arg chan]]

This command creates an identity transformation on top of the channel
[arg chan] and returns its handle.

[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]












[manpage_end]

Changes to modules/virtchannel_transform/limitsize.man.

1
2







3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::transform::limitsize n 1]







[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {limiting input}]
[require Tcl 8.6]
[require tcl::transform::core [opt 1]]
[require tcl::transform::limitsize [opt 1]]


>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::transform::limitsize n 1]
[keywords {channel transformation}]
[keywords limitsize]
[keywords {reflected channel}]
[keywords {size limit}]
[keywords {tip 230}]
[keywords transformation]
[keywords {virtual channel}]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {limiting input}]
[require Tcl 8.6]
[require tcl::transform::core [opt 1]]
[require tcl::transform::limitsize [opt 1]]
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

[para] [arg max] is the number of bytes which can be read from the
channel before EOF is signaled by the transformation. Note that
popping the transformation clears the EOF it generated as well.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords {size limit} transformation {channel transformation}]
[keywords limitsize {virtual channel} {reflected channel} {tip 230}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<

37
38
39
40
41
42
43
44

45












46

[para] [arg max] is the number of bytes which can be read from the
channel before EOF is signaled by the transformation. Note that
popping the transformation clears the EOF it generated as well.

[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]












[manpage_end]

Changes to modules/virtchannel_transform/observe.man.

1
2







3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::transform::observe n 1]







[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Observer transformation, stream copy}]
[require Tcl 8.6]
[require tcl::transform::core [opt 1]]
[require tcl::transform::observe [opt 1]]


>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::transform::observe n 1]
[keywords {channel transformation}]
[keywords observer]
[keywords {reflected channel}]
[keywords {stream copy}]
[keywords {tip 230}]
[keywords transformation]
[keywords {virtual channel}]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Observer transformation, stream copy}]
[require Tcl 8.6]
[require tcl::transform::core [opt 1]]
[require tcl::transform::observe [opt 1]]
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56

This command creates an observer transformation on top of the channel
[arg chan] and returns its handle. The channel handles [arg logr] and
[arg logw] are there the data is copied to.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords observer {stream copy} transformation {channel transformation}]
[keywords {virtual channel} {reflected channel} {tip 230}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<

41
42
43
44
45
46
47
48

49












50

This command creates an observer transformation on top of the channel
[arg chan] and returns its handle. The channel handles [arg logr] and
[arg logw] are there the data is copied to.

[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]












[manpage_end]

Changes to modules/virtchannel_transform/otp.man.

1
2











3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::transform::otp n 1]











[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Encryption via one-time pad}]
[require Tcl 8.6]
[require tcl::transform::core [opt 1]]
[require tcl::transform::otp [opt 1]]


>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::transform::otp n 1]
[keywords {channel transformation}]
[keywords cipher]
[keywords decryption]
[keywords encryption]
[keywords {one time pad}]
[keywords otp]
[keywords {reflected channel}]
[keywords {tip 230}]
[keywords transformation]
[keywords {virtual channel}]
[keywords xor]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Encryption via one-time pad}]
[require Tcl 8.6]
[require tcl::transform::core [opt 1]]
[require tcl::transform::otp [opt 1]]
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
[para] The two channels [arg keychanw] and [arg keychanr] contain the
one-time pads for the write and read directions, respectively. Their
contents are reads and xored with the bytes written to and read from
the channel.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords xor otp encryption decryption transformation {channel transformation}]
[keywords {one time pad} cipher {virtual channel} {reflected channel} {tip 230}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<

44
45
46
47
48
49
50
51

52












53
[para] The two channels [arg keychanw] and [arg keychanr] contain the
one-time pads for the write and read directions, respectively. Their
contents are reads and xored with the bytes written to and read from
the channel.

[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]












[manpage_end]

Changes to modules/virtchannel_transform/rot.man.

1
2











3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::transform::rot n 1]











[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {rot-encryption}]
[require Tcl 8.6]
[require tcl::transform::core [opt 1]]
[require tcl::transform::rot [opt 1]]
[description]
[para]

The [package tcl::transform::rot] package provides a command creating
a channel transformation which performs primitive encryption (on
writing) and decryption (on reading) on the alphabetic characters. The
algorithm is the Caesar-cipher, a specific variant of which is rot13.


[para] A related transformations in this module is
[package tcl::transform::otp].

[para] The internal [package TclOO] class implementing the transform
handler is a sub-class of the [package tcl::transform::core]
framework.


>
>
>
>
>
>
>
>
>
>
>














<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

28
29
30
31
32
33
34
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::transform::rot n 1]
[keywords {caesar cipher}]
[keywords {channel transformation}]
[keywords cipher]
[keywords decryption]
[keywords encryption]
[keywords {reflected channel}]
[keywords rot]
[keywords rot13]
[keywords {tip 230}]
[keywords transformation]
[keywords {virtual channel}]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {rot-encryption}]
[require Tcl 8.6]
[require tcl::transform::core [opt 1]]
[require tcl::transform::rot [opt 1]]
[description]
[para]

The [package tcl::transform::rot] package provides a command creating
a channel transformation which performs primitive encryption (on
writing) and decryption (on reading) on the alphabetic characters. The
algorithm is the Caesar-cipher, a specific variant of which is rot13.


[para] A related transformations in this module is
[package tcl::transform::otp].

[para] The internal [package TclOO] class implementing the transform
handler is a sub-class of the [package tcl::transform::core]
framework.
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
[para] Note that this transformation affects only bytes in the ranges
ASCII 65...90, and 97...122, i.e. the upper- and lower-case alphabetic
characters, i.e. "A...Z" and "a...z". All other bytes are passed
through unchanged.

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords rot encryption decryption rot13 transformation {channel transformation}]
[keywords {caesar cipher} cipher {virtual channel} {reflected channel} {tip 230}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<

48
49
50
51
52
53
54
55

56












57
[para] Note that this transformation affects only bytes in the ranges
ASCII 65...90, and 97...122, i.e. the upper- and lower-case alphabetic
characters, i.e. "A...Z" and "a...z". All other bytes are passed
through unchanged.

[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]












[manpage_end]

Changes to modules/virtchannel_transform/spacer.man.

1
2






3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::transform::spacer n 1]






[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Space insertation and removal}]
[require Tcl 8.6]
[require tcl::transform::core [opt 1]]
[require tcl::transform::spacer [opt 1]]


>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::transform::spacer n 1]
[keywords {channel transformation}]
[keywords {reflected channel}]
[keywords spacing]
[keywords {tip 230}]
[keywords transformation]
[keywords {virtual channel}]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {Space insertation and removal}]
[require Tcl 8.6]
[require tcl::transform::core [opt 1]]
[require tcl::transform::spacer [opt 1]]
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
[para] The [arg space] character sequence will be added every [arg n]
bytes of data written, and on the read side the same is done in
reverse, removing the spacing. If [arg space] is not specified it
defaults to a single space character (ASCII 32).

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords spacing transformation {channel transformation}]
[keywords {virtual channel} {reflected channel} {tip 230}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<

36
37
38
39
40
41
42
43

44












45
[para] The [arg space] character sequence will be added every [arg n]
bytes of data written, and on the read side the same is done in
reverse, removing the spacing. If [arg space] is not specified it
defaults to a single space character (ASCII 32).

[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]












[manpage_end]

Changes to modules/virtchannel_transform/tcllib_zlib.man.

1
2









3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::transform::zlib n 1]









[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {zlib (de)compression}]
[require Tcl 8.6]
[require tcl::transform::core [opt 1]]
[require tcl::transform::zlib [opt 1]]


>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin tcl::transform::zlib n 1]
[keywords {channel transformation}]
[keywords compression]
[keywords decompression]
[keywords {reflected channel}]
[keywords {tip 230}]
[keywords {tip 234}]
[keywords transformation]
[keywords {virtual channel}]
[keywords zlib]
[copyright {2009 Andreas Kupries <[email protected]>}]
[moddesc   {Reflected/virtual channel support}]
[category  Channels]
[titledesc {zlib (de)compression}]
[require Tcl 8.6]
[require tcl::transform::core [opt 1]]
[require tcl::transform::zlib [opt 1]]
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
channel [arg chan] and returns its handle.

[para] The [arg level] specifies how much effort is put into the
compression, from [const 0] to [const 9], and defaults to [const 4].

[list_end]


[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph virtchannel] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords compression decompression transformation {channel transformation}]
[keywords zlib {tip 234} {virtual channel} {reflected channel} {tip 230}]
[manpage_end]







|
<
|
<
<
<
<
<
<
<
<
<
<
<
<

37
38
39
40
41
42
43
44

45












46
channel [arg chan] and returns its handle.

[para] The [arg level] specifies how much effort is put into the
compression, from [const 0] to [const 9], and defaults to [const 4].

[list_end]

[vset CATEGORY virtchannel]

[include ../doctools2base/include/feedback.inc]












[manpage_end]

Changes to modules/wip/wip.man.

1
2



3
4
5
6
7
8
9
[comment {-*- text -*-}]
[manpage_begin wip n 2.2]



[copyright {2007-2010 Andreas Kupries <[email protected]>}]
[moddesc   {Word Interpreter}]
[titledesc {Word Interpreter}]
[category  {Programming tools}]
[require Tcl 8.4]
[require wip [opt 2.2]]
[require snit [opt 1.3]]


>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
[comment {-*- text -*-}]
[manpage_begin wip n 2.2]
[keywords interpreter]
[keywords list]
[keywords word]
[copyright {2007-2010 Andreas Kupries <[email protected]>}]
[moddesc   {Word Interpreter}]
[titledesc {Word Interpreter}]
[category  {Programming tools}]
[require Tcl 8.4]
[require wip [opt 2.2]]
[require snit [opt 1.3]]
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
[enum]
At last the basic [method run] methods save and restore an existing
list of words when used, enabling recursive use from within command
implementations.

[list_end]


[section {CLASS API}]

The main command of the package is:

[list_begin definitions]

[call [cmd ::wip] [arg wipName] [arg engine] [arg arg]...]







<







93
94
95
96
97
98
99

100
101
102
103
104
105
106
[enum]
At last the basic [method run] methods save and restore an existing
list of words when used, enabling recursive use from within command
implementations.

[list_end]


[section {CLASS API}]

The main command of the package is:

[list_begin definitions]

[call [cmd ::wip] [arg wipName] [arg engine] [arg arg]...]
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174

It installs a component named [emph wip], and a method
[method wip_setup] for initializing it. This method has to be called
from within the constructor of the type using the word interpreter.

If further installs a series of procedures which make the object API
of the word interpreter directly available to the type's methods,
without having to specify the component. 

[para]

[emph Note] that this does and cannot install the language to
interpret, i.e. the mapping from words to engine methods.

[para]







|







162
163
164
165
166
167
168
169
170
171
172
173
174
175
176

It installs a component named [emph wip], and a method
[method wip_setup] for initializing it. This method has to be called
from within the constructor of the type using the word interpreter.

If further installs a series of procedures which make the object API
of the word interpreter directly available to the type's methods,
without having to specify the component.

[para]

[emph Note] that this does and cannot install the language to
interpret, i.e. the mapping from words to engine methods.

[para]
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241

[call [arg wipName] [method unknown] [arg cmdprefix]]

Sets the handler for unknown words to [arg cmdprefix]. This command
prefix takes one argument, the current word, and either throws some
error, or returns the result of executing the word, as defined by the
handler. The default handler simply throws an error.


[call [arg wipName] [method runl] [arg wordlist]]

Treats the list of words in [arg wordlist] as a program and executes
the contained command one by one. The result of the command executed
last is returned as the result of this command.








<







229
230
231
232
233
234
235

236
237
238
239
240
241
242

[call [arg wipName] [method unknown] [arg cmdprefix]]

Sets the handler for unknown words to [arg cmdprefix]. This command
prefix takes one argument, the current word, and either throws some
error, or returns the result of executing the word, as defined by the
handler. The default handler simply throws an error.


[call [arg wipName] [method runl] [arg wordlist]]

Treats the list of words in [arg wordlist] as a program and executes
the contained command one by one. The result of the command executed
last is returned as the result of this command.

374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394

[list_end]

[section EXAMPLES]

No examples yet.

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph wip] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[keywords word list interpreter]
[manpage_end]







<
|
<
<
|
<
<
<
<
<
<
<
<

375
376
377
378
379
380
381

382


383








384

[list_end]

[section EXAMPLES]

No examples yet.


[vset CATEGORY wip]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/yaml/CHANGES.

14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

changes:

  0.3.6:
    - 2011-08-23
    - fixed for empty block/floating sub node. to see
      - https://sourceforge.net/tracker/?func=detail&atid=112883&aid=3396656&group_id=12883
      - https://sourceforge.net/tracker/?func=detail&atid=112883&aid=3396661&group_id=12883
  0.3.5:
    - 2009-05-24
    - To read uninitialized yaml::data(current), when there is not empty line
      or "---" at the beginning of yaml.
    - Thanks al_chou!
    - https://sourceforge.net/tracker/?func=detail&atid=112883&aid=2795699&group_id=12883
    - supported for YAML termination(...)
  0.3.4:
    - 2008-09-27
    - fixed for some incorrect use of "string first/last"
  0.3.3:
    - 2008-06-05
    - add benchmark







|





|







14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

changes:

  0.3.6:
    - 2011-08-23
    - fixed for empty block/floating sub node. to see
      - https://sourceforge.net/tracker/?func=detail&atid=112883&aid=3396656&group_id=12883
      - https://core.tcl.tk/tcllib/tktview?name=3396661fff
  0.3.5:
    - 2009-05-24
    - To read uninitialized yaml::data(current), when there is not empty line
      or "---" at the beginning of yaml.
    - Thanks al_chou!
    - https://core.tcl.tk/tcllib/tktview?name=2795699fff
    - supported for YAML termination(...)
  0.3.4:
    - 2008-09-27
    - fixed for some incorrect use of "string first/last"
  0.3.3:
    - 2008-06-05
    - add benchmark

Changes to modules/yaml/huddle.man.

1
2








3
4
5
6
7
8
9
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin huddle n 0.1.5]








[copyright {2008 KATO Kanryu <[email protected]>}]
[moddesc   {HUDDLE}]
[titledesc {Create and manipulate huddle object}]
[require Tcl 8.4]
[require huddle [opt 0.1.5]]
[description]
[para]


>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin huddle n 0.1.5]
[see_also yaml]
[keywords {data exchange}]
[keywords {exchange format}]
[keywords huddle]
[keywords json]
[keywords parsing]
[keywords {text processing}]
[keywords yaml]
[copyright {2008 KATO Kanryu <[email protected]>}]
[moddesc   {HUDDLE}]
[titledesc {Create and manipulate huddle object}]
[require Tcl 8.4]
[require huddle [opt 0.1.5]]
[description]
[para]
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
[call [cmd "huddle create"] [arg key] [arg value] [opt [arg "key value ..."]]]

Create a huddle object as a dict. It can contain other huddle objects.

[call [cmd "huddle list"] [opt [arg "value value ..."]]]
Create a huddle object as a list. It can contain other huddle objects.


[call [cmd "huddle get"] [arg object] [arg key]  [opt [arg "key ..."]]]
Almost the same as [cmd "dict get"].
Get a sub-object from the huddle object.
[arg key] can be used to huddle-list's index.


[call [cmd "huddle gets"] [arg object] [arg key]  [opt [arg "key ..."]]]
Get a sub-object from the huddle object, stripped.


[call [cmd "huddle set"] [arg objectVar] [arg key]  [opt [arg "key ..."]] [arg value]]
Almost the same as [cmd "dict set"].
Set a sub-object from the huddle object.
[arg key] can be used to huddle-list's index.


[call [cmd "huddle remove"] [arg object] [arg key]  [opt [arg "key ..."]]]
Almost the same as [cmd "dict remove"].
Remove a sub-object from the huddle object.
[arg key] can be used to huddle-list's index.

[call [cmd "huddle combine"] [arg object1] [arg object2]  [opt [arg "object3 ..."]]]







<





<


<





<







54
55
56
57
58
59
60

61
62
63
64
65

66
67

68
69
70
71
72

73
74
75
76
77
78
79
[call [cmd "huddle create"] [arg key] [arg value] [opt [arg "key value ..."]]]

Create a huddle object as a dict. It can contain other huddle objects.

[call [cmd "huddle list"] [opt [arg "value value ..."]]]
Create a huddle object as a list. It can contain other huddle objects.


[call [cmd "huddle get"] [arg object] [arg key]  [opt [arg "key ..."]]]
Almost the same as [cmd "dict get"].
Get a sub-object from the huddle object.
[arg key] can be used to huddle-list's index.


[call [cmd "huddle gets"] [arg object] [arg key]  [opt [arg "key ..."]]]
Get a sub-object from the huddle object, stripped.


[call [cmd "huddle set"] [arg objectVar] [arg key]  [opt [arg "key ..."]] [arg value]]
Almost the same as [cmd "dict set"].
Set a sub-object from the huddle object.
[arg key] can be used to huddle-list's index.


[call [cmd "huddle remove"] [arg object] [arg key]  [opt [arg "key ..."]]]
Almost the same as [cmd "dict remove"].
Remove a sub-object from the huddle object.
[arg key] can be used to huddle-list's index.

[call [cmd "huddle combine"] [arg object1] [arg object2]  [opt [arg "object3 ..."]]]
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
HUDDLE {D {a {s k} c {s d} l {s m}}}
% set bb [huddle list i j k l]
HUDDLE {L {{s i} {s j} {s k} {s l}}}
% huddle append bb g h i
HUDDLE {L {{s i} {s j} {s k} {s l} {s g} {s h} {s i}}}
}]


[call [cmd "huddle keys"] [arg object]]
The same as [cmd "dict keys"].


[call [cmd "huddle llength"] [arg object]]
The same as [cmd llength].


[call [cmd "huddle type"] [arg object] [opt [arg "key key..."]]]
Return the element type of specified by keys.
if [opt key] is not given, returns the type of root node.
[para]

[list_begin options]







<



<


<







112
113
114
115
116
117
118

119
120
121

122
123

124
125
126
127
128
129
130
HUDDLE {D {a {s k} c {s d} l {s m}}}
% set bb [huddle list i j k l]
HUDDLE {L {{s i} {s j} {s k} {s l}}}
% huddle append bb g h i
HUDDLE {L {{s i} {s j} {s k} {s l} {s g} {s h} {s i}}}
}]


[call [cmd "huddle keys"] [arg object]]
The same as [cmd "dict keys"].


[call [cmd "huddle llength"] [arg object]]
The same as [cmd llength].


[call [cmd "huddle type"] [arg object] [opt [arg "key key..."]]]
Return the element type of specified by keys.
if [opt key] is not given, returns the type of root node.
[para]

[list_begin options]
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
% huddle type {HUDDLE {s str}}
string
% huddle type {HUDDLE {L {{s a} {s b} {s c}}}}
list
% huddle type {HUDDLE {D {aa {s b} cc {s d}}}} cc
string
}]


[call [cmd "huddle strip"] [arg object]]
Stripped all tags. Converted to normal Tcl's list/dict.

[call [cmd "huddle jsondump"] [arg object] [opt [arg offset]] [opt [arg newline]] [opt [arg begin_offset]]]

dump a json-stream from the huddle-object.







<







146
147
148
149
150
151
152

153
154
155
156
157
158
159
% huddle type {HUDDLE {s str}}
string
% huddle type {HUDDLE {L {{s a} {s b} {s c}}}}
list
% huddle type {HUDDLE {D {aa {s b} cc {s d}}}} cc
string
}]


[call [cmd "huddle strip"] [arg object]]
Stripped all tags. Converted to normal Tcl's list/dict.

[call [cmd "huddle jsondump"] [arg object] [opt [arg offset]] [opt [arg newline]] [opt [arg begin_offset]]]

dump a json-stream from the huddle-object.
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
{"dd": {"bb": {"a": "baa","c": "d\na"},"cc": {"g": "h"}},"ee": {"i": "j","k": 1,"j": " m\\a"}}
}]

[call [cmd "huddle compile"] [arg spec] [arg data]]

construct a huddle object from plain old tcl values.


[arg spec] is defined as follows:
[list_begin definitions]
[def [const string]]
data is simply a string

[def [const list]]
data is a tcl list of strings







<







189
190
191
192
193
194
195

196
197
198
199
200
201
202
{"dd": {"bb": {"a": "baa","c": "d\na"},"cc": {"g": "h"}},"ee": {"i": "j","k": 1,"j": " m\\a"}}
}]

[call [cmd "huddle compile"] [arg spec] [arg data]]

construct a huddle object from plain old tcl values.


[arg spec] is defined as follows:
[list_begin definitions]
[def [const string]]
data is simply a string

[def [const list]]
data is a tcl list of strings
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
[list_end]

[example {% huddle compile {dict * list} {a {1 2 3} b {4 5}}
HUDDLE {D {a {L {{s 1} {s 2} {s 3}}} b {L {{s 4} {s 5}}}}}
% huddle compile {dict * {list {dict d list}}} {a {{c 1} {d {2 2 2} e 3}} b {{f 4 g 5}}}
HUDDLE {D {a {L {{D {c {s 1}}} {D {d {L {{s 2} {s 2} {s 2}}} e {s 3}}}}} b {L {{D {f {s 4} g {s 5}}}}}}}
}]


[call [cmd "huddle isHuddle"] [arg object]]
if [arg object] is a huddle, returns 1. the other, returns 0.

[call [cmd "huddle checkHuddle"] [arg object]]
if [arg object] is not a huddle, rises an error.








<







220
221
222
223
224
225
226

227
228
229
230
231
232
233
[list_end]

[example {% huddle compile {dict * list} {a {1 2 3} b {4 5}}
HUDDLE {D {a {L {{s 1} {s 2} {s 3}}} b {L {{s 4} {s 5}}}}}
% huddle compile {dict * {list {dict d list}}} {a {{c 1} {d {2 2 2} e 3}} b {{f 4 g 5}}}
HUDDLE {D {a {L {{D {c {s 1}}} {D {d {L {{s 2} {s 2} {s 2}}} e {s 3}}}}} b {L {{D {f {s 4} g {s 5}}}}}}}
}]


[call [cmd "huddle isHuddle"] [arg object]]
if [arg object] is a huddle, returns 1. the other, returns 0.

[call [cmd "huddle checkHuddle"] [arg object]]
if [arg object] is not a huddle, rises an error.

442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
        default { ; # devolving to default dict-callback
            return [huddle call D $command $args]
        }
    }
}
}]


[section "How to add type"]

[para]
You can add huddle-node types e.g. ::struct::tree.

To do so, first, define a callback-procedure for additional tagged-type.
The proc get argments as [arg command] and [opt [arg args]]. It has some switch-sections.







<







440
441
442
443
444
445
446

447
448
449
450
451
452
453
        default { ; # devolving to default dict-callback
            return [huddle call D $command $args]
        }
    }
}
}]


[section "How to add type"]

[para]
You can add huddle-node types e.g. ::struct::tree.

To do so, first, define a callback-procedure for additional tagged-type.
The proc get argments as [arg command] and [opt [arg args]]. It has some switch-sections.
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
    "q",
    "r"
  ],
  "s"
]
}]


[section LIMITATIONS]

[para]
now printing.

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph huddle] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[see_also yaml]
[keywords huddle yaml json {text processing} parsing {data exchange} {exchange format}]
[manpage_end]







<





<
|
<
<
|
<
<
<
<
<
<
<
<

512
513
514
515
516
517
518

519
520
521
522
523

524


525








526
    "q",
    "r"
  ],
  "s"
]
}]


[section LIMITATIONS]

[para]
now printing.


[vset CATEGORY huddle]


[include ../doctools2base/include/feedback.inc]








[manpage_end]

Changes to modules/yaml/yaml.man.

1
2








3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin yaml n 0.3.6]








[copyright {2008 KATO Kanryu <[email protected]>}]
[moddesc   {YAML processing}]
[titledesc {YAML Format Encoder/Decoder}]
[require Tcl 8.4]
[require yaml [opt 0.3.6]]
[description]
[para]

The [package yaml] package provides a simple Tcl-only library for parsing the
YAML [uri http://www.yaml.org/] data exchange format as specified in 
[uri http://www.yaml.org/spec/1.1/].

[para]
The [package yaml] package returns
data as a Tcl [cmd dict].  Either the [package dict] package or Tcl 8.5 is
required for use.



>
>
>
>
>
>
>
>









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin yaml n 0.3.6]
[see_also base64]
[see_also huddle]
[see_also json]
[keywords {data exchange}]
[keywords huddle]
[keywords parsing]
[keywords {text processing}]
[keywords yaml]
[copyright {2008 KATO Kanryu <[email protected]>}]
[moddesc   {YAML processing}]
[titledesc {YAML Format Encoder/Decoder}]
[require Tcl 8.4]
[require yaml [opt 0.3.6]]
[description]
[para]

The [package yaml] package provides a simple Tcl-only library for parsing the
YAML [uri http://www.yaml.org/] data exchange format as specified in
[uri http://www.yaml.org/spec/1.1/].

[para]
The [package yaml] package returns
data as a Tcl [cmd dict].  Either the [package dict] package or Tcl 8.5 is
required for use.

30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
[opt_def [const -file]]

[arg txt] is a filename of YAML-stream.

[opt_def [const -stream]]

[arg txt] is just a YAML-stream.


[opt_def "[const -types] [arg list]"]

The [arg list] is a type list for the yaml-scalar types.(e.g. !!str !!timestamp !!integer !!true ...)

[example { -types {timestamp integer null true false}}
]







<







38
39
40
41
42
43
44

45
46
47
48
49
50
51
[opt_def [const -file]]

[arg txt] is a filename of YAML-stream.

[opt_def [const -stream]]

[arg txt] is just a YAML-stream.


[opt_def "[const -types] [arg list]"]

The [arg list] is a type list for the yaml-scalar types.(e.g. !!str !!timestamp !!integer !!true ...)

[example { -types {timestamp integer null true false}}
]
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
[list_end]

[call [cmd ::yaml::setOption] [opt [arg options]]]
Change implicit options for the library.
Now, the params are the same as [cmd ::yaml::yaml2dict].
Arguments of[cmd ::yaml::yaml2dict] is more priority than this setting.


[call [cmd ::yaml::dict2yaml] [arg dict] [opt [arg indent]] [opt [arg wordwrap]]]
[call [cmd ::yaml::list2yaml] [arg list] [opt [arg indent]] [opt [arg wordwrap]]]
[call [cmd ::yaml::huddle2yaml] [arg huddle] [opt [arg indent]] [opt [arg wordwrap]]]
Convert a dict/list/huddle object into YAML stream.

[list_begin definitions]
[def indent]
spaces indent of each block node.
currently default is 2.

[def wordwrap]
word wrap for YAML stream.
currently default is 40.
[list_end]


[list_end]
[para]

[section EXAMPLES]
[para]








<














<







84
85
86
87
88
89
90

91
92
93
94
95
96
97
98
99
100
101
102
103
104

105
106
107
108
109
110
111
[list_end]

[call [cmd ::yaml::setOption] [opt [arg options]]]
Change implicit options for the library.
Now, the params are the same as [cmd ::yaml::yaml2dict].
Arguments of[cmd ::yaml::yaml2dict] is more priority than this setting.


[call [cmd ::yaml::dict2yaml] [arg dict] [opt [arg indent]] [opt [arg wordwrap]]]
[call [cmd ::yaml::list2yaml] [arg list] [opt [arg indent]] [opt [arg wordwrap]]]
[call [cmd ::yaml::huddle2yaml] [arg huddle] [opt [arg indent]] [opt [arg wordwrap]]]
Convert a dict/list/huddle object into YAML stream.

[list_begin definitions]
[def indent]
spaces indent of each block node.
currently default is 2.

[def wordwrap]
word wrap for YAML stream.
currently default is 40.
[list_end]


[list_end]
[para]

[section EXAMPLES]
[para]

152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195

[para]
[example {{
---
- [name        , hr, avg  ]
- [Mark McGwire, 65, 0.278]
- [Sammy Sosa  , 63, 0.288]
- 
  Mark McGwire: {hr: 65, avg: 0.278}
  Sammy Sosa: { hr: 63, avg: 0.288}
}
=>
{name hr avg} {{Mark McGwire} 65 0.278} {{Sammy Sosa} 63 0.288} {{Mark McGwire} {hr 65 avg 0.278} {Sammy Sosa} {hr 63 avg 0.288}}
}]


[section LIMITATIONS]

[para]
tag parser not implemented. currentry, tags are merely ignored.

[para]
Only Anchor => Aliases ordering. back alias-referring is not supported.

[para]
Too many braces, or too few braces.

[para]
Not enough character set of line feeds. Please use only "\n" as line breaks.

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph yaml] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[see_also json huddle base64]
[keywords yaml {text processing} parsing {data exchange} huddle]
[manpage_end]







|






<















<
|
<
<
|
<
<
<
<
<
<
<
<

157
158
159
160
161
162
163
164
165
166
167
168
169
170

171
172
173
174
175
176
177
178
179
180
181
182
183
184
185

186


187








188

[para]
[example {{
---
- [name        , hr, avg  ]
- [Mark McGwire, 65, 0.278]
- [Sammy Sosa  , 63, 0.288]
-
  Mark McGwire: {hr: 65, avg: 0.278}
  Sammy Sosa: { hr: 63, avg: 0.288}
}
=>
{name hr avg} {{Mark McGwire} 65 0.278} {{Sammy Sosa} 63 0.288} {{Mark McGwire} {hr 65 avg 0.278} {Sammy Sosa} {hr 63 avg 0.288}}
}]


[section LIMITATIONS]

[para]
tag parser not implemented. currentry, tags are merely ignored.

[para]
Only Anchor => Aliases ordering. back alias-referring is not supported.

[para]
Too many braces, or too few braces.

[para]
Not enough character set of line feeds. Please use only "\n" as line breaks.


[vset CATEGORY yaml]


[include ../doctools2base/include/feedback.inc]








[manpage_end]